qcacld-3.0: ADD MLME INI items of WMM AC_BK

Add the following WMM BE VO ini configs to MLME cfg:
1. CFG_QOS_WMM_INFRA_DIR_AC_BK_NAME
2. CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BK_NAME
3. CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BK_NAME
4. CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BK_NAME
5. CFG_QOS_WMM_INFRA_SBA_AC_BK_NAME
6. CFG_QOS_WMM_INFRA_UAPSD_BK_SRV_INTV_NAME
7. CFG_QOS_WMM_INFRA_UAPSD_BK_SUS_INTV_NAME

Introduce the basic infra APIs related to these configs
from mlme.

Change-Id: I1f8e6f0fa1ff15eda36a20ee06772c4a1ddd9ca8
CRs-Fixed: 2327690
This commit is contained in:
Abhinav Kumar
2018-08-19 13:49:52 +05:30
committed by nshrivas
parent e3b782e5cb
commit a4773eb81e
6 changed files with 536 additions and 1 deletions

View File

@@ -1293,6 +1293,21 @@ static void mlme_init_wmm_in_cfg(struct wlan_objmgr_psoc *psoc,
cfg_get(psoc, CFG_QOS_WMM_UAPSD_BE_SRV_INTV); cfg_get(psoc, CFG_QOS_WMM_UAPSD_BE_SRV_INTV);
wmm_params->ac_be.uapsd_be_sus_intv = wmm_params->ac_be.uapsd_be_sus_intv =
cfg_get(psoc, CFG_QOS_WMM_UAPSD_BE_SUS_INTV); cfg_get(psoc, CFG_QOS_WMM_UAPSD_BE_SUS_INTV);
wmm_params->ac_bk.dir_ac_bk =
cfg_get(psoc, CFG_QOS_WMM_DIR_AC_BK);
wmm_params->ac_bk.nom_msdu_size_ac_bk =
cfg_get(psoc, CFG_QOS_WMM_NOM_MSDU_SIZE_AC_BK);
wmm_params->ac_bk.mean_data_rate_ac_bk =
cfg_get(psoc, CFG_QOS_WMM_MEAN_DATA_RATE_AC_BK);
wmm_params->ac_bk.min_phy_rate_ac_bk =
cfg_get(psoc, CFG_QOS_WMM_MIN_PHY_RATE_AC_BK);
wmm_params->ac_bk.sba_ac_bk =
cfg_get(psoc, CFG_QOS_WMM_SBA_AC_BK);
wmm_params->ac_bk.uapsd_bk_srv_intv =
cfg_get(psoc, CFG_QOS_WMM_UAPSD_BK_SRV_INTV);
wmm_params->ac_bk.uapsd_bk_sus_intv =
cfg_get(psoc, CFG_QOS_WMM_UAPSD_BK_SUS_INTV);
} }
static void mlme_init_wps_params_cfg(struct wlan_objmgr_psoc *psoc, static void mlme_init_wps_params_cfg(struct wlan_objmgr_psoc *psoc,

View File

@@ -581,6 +581,181 @@
CFG_VALUE_OR_DEFAULT, \ CFG_VALUE_OR_DEFAULT, \
"Infra uapsd vi sus intv") "Infra uapsd vi sus intv")
/*
* <ini>
* InfraDirAcBk - Set TSPEC direction for BK
* @Min: 0
* @Max: 3
* @Default: 3
*
* This ini is used to set TSPEC direction for BK
*
* Related: None.
*
* Supported Feature: WMM
*
* Usage: Internal/External
*
* </ini>
*/
#define CFG_QOS_WMM_DIR_AC_BK CFG_INI_UINT( \
"InfraDirAcBk", \
0, \
3, \
3, \
CFG_VALUE_OR_DEFAULT, \
"TSPEC direction for BK")
/*
* <ini>
* InfraNomMsduSizeAcBk - Set normal MSDU size for BK
* @Min: 0x0
* @Max: 0xFFFF
* @Default: 0x85DC
*
* This ini is used to set normal MSDU size for BK
*
* Related: None.
*
* Supported Feature: WMM
*
* Usage: Internal/External
*
* </ini>
*/
#define CFG_QOS_WMM_NOM_MSDU_SIZE_AC_BK CFG_INI_UINT( \
"InfraNomMsduSizeAcBk", \
0x0, \
0xFFFF, \
0x85DC, \
CFG_VALUE_OR_DEFAULT, \
"MSDU size for BK")
/*
* <ini>
* InfraMeanDataRateAcBk - Set mean data rate for BK
* @Min: 0x0
* @Max: 0xFFFFFFFF
* @Default: 0x493E0
*
* This ini is used to set mean data rate for BK
*
* Related: None.
*
* Supported Feature: WMM
*
* Usage: Internal/External
*
* </ini>
*/
#define CFG_QOS_WMM_MEAN_DATA_RATE_AC_BK CFG_INI_UINT( \
"InfraMeanDataRateAcBk", \
0x0, \
0xFFFFFFFF, \
0x493E0, \
CFG_VALUE_OR_DEFAULT, \
"data rate for BK")
/*
* <ini>
* InfraMinPhyRateAcBke - Set min PHY rate for BK
* @Min: 0x0
* @Max: 0xFFFFFFFF
* @Default: 0x5B8D80
*
* This ini is used to set min PHY rate for BK
*
* Related: None.
*
* Supported Feature: WMM
*
* Usage: Internal/External
*
* </ini>
*/
#define CFG_QOS_WMM_MIN_PHY_RATE_AC_BK CFG_INI_UINT( \
"InfraMinPhyRateAcBk", \
0x0, \
0xFFFFFFFF, \
0x5B8D80, \
CFG_VALUE_OR_DEFAULT, \
"min PHY rate for BK")
/*
* <ini>
* InfraSbaAcBk - Set surplus bandwidth allowance for BK
* @Min: 0x2001
* @Max: 0xFFFF
* @Default: 0x2001
*
* This ini is used to set surplus bandwidth allowance for BK
*
* Related: None.
*
* Supported Feature: WMM
*
* Usage: Internal/External
*
* </ini>
*/
#define CFG_QOS_WMM_SBA_AC_BK CFG_INI_UINT( \
"InfraSbaAcBk", \
0x2001, \
0xFFFF, \
0x2001, \
CFG_VALUE_OR_DEFAULT, \
"surplus bandwidth allowance for BK")
/*
* <ini>
* InfraUapsdBkSrvIntv - Set Uapsd service interval for BK
* @Min: 0
* @Max: 4294967295UL
* @Default: 300
*
* This ini is used to set Uapsd service interval for BK
*
* Related: None.
*
* Supported Feature: WMM
*
* Usage: Internal/External
*
* </ini>
*/
#define CFG_QOS_WMM_UAPSD_BK_SRV_INTV CFG_INI_UINT( \
"InfraUapsdBkSrvIntv", \
0, \
4294967295UL, \
300, \
CFG_VALUE_OR_DEFAULT, \
"Infra uapsd bk srv intv")
/*
* <ini>
* InfraUapsdBkSuspIntv - Set Uapsd suspension interval for BK
* @Min: 0
* @Max: 4294967295UL
* @Default: 2000
*
* This ini is used to set Uapsd suspension interval for BK
*
* Related: None.
*
* Supported Feature: WMM
*
* Usage: Internal/External
*
* </ini>
*/
#define CFG_QOS_WMM_UAPSD_BK_SUS_INTV CFG_INI_UINT( \
"InfraUapsdBkSuspIntv", \
0, \
4294967295UL, \
2000, \
CFG_VALUE_OR_DEFAULT, \
"Infra uapsd bk sus intv")
#define CFG_WMM_PARAMS_ALL \ #define CFG_WMM_PARAMS_ALL \
CFG(CFG_QOS_ENABLED) \ CFG(CFG_QOS_ENABLED) \
CFG(CFG_WME_ENABLED) \ CFG(CFG_WME_ENABLED) \
@@ -607,6 +782,13 @@
CFG(CFG_QOS_WMM_MIN_PHY_RATE_AC_BE) \ CFG(CFG_QOS_WMM_MIN_PHY_RATE_AC_BE) \
CFG(CFG_QOS_WMM_SBA_AC_BE) \ CFG(CFG_QOS_WMM_SBA_AC_BE) \
CFG(CFG_QOS_WMM_UAPSD_BE_SRV_INTV) \ CFG(CFG_QOS_WMM_UAPSD_BE_SRV_INTV) \
CFG(CFG_QOS_WMM_UAPSD_BE_SUS_INTV) CFG(CFG_QOS_WMM_UAPSD_BE_SUS_INTV) \
CFG(CFG_QOS_WMM_DIR_AC_BK) \
CFG(CFG_QOS_WMM_NOM_MSDU_SIZE_AC_BK) \
CFG(CFG_QOS_WMM_MEAN_DATA_RATE_AC_BK) \
CFG(CFG_QOS_WMM_MIN_PHY_RATE_AC_BK) \
CFG(CFG_QOS_WMM_SBA_AC_BK) \
CFG(CFG_QOS_WMM_UAPSD_BK_SRV_INTV) \
CFG(CFG_QOS_WMM_UAPSD_BK_SUS_INTV)
#endif /* __CFG_MLME_FE_WMM_H */ #endif /* __CFG_MLME_FE_WMM_H */

View File

@@ -801,6 +801,88 @@ QDF_STATUS wlan_mlme_get_wmm_uapsd_be_srv_intv(struct wlan_objmgr_psoc *psoc,
QDF_STATUS wlan_mlme_get_wmm_uapsd_be_sus_intv(struct wlan_objmgr_psoc *psoc, QDF_STATUS wlan_mlme_get_wmm_uapsd_be_sus_intv(struct wlan_objmgr_psoc *psoc,
uint32_t *value); uint32_t *value);
/**
* wlan_mlme_get_wmm_dir_ac_bk() - Get TSPEC direction
* for BK
* @psoc: pointer to psoc object
* @value: Value that needs to be set from the caller
*
* Return: QDF Status
*/
QDF_STATUS
wlan_mlme_get_wmm_dir_ac_bk(struct wlan_objmgr_psoc *psoc, uint8_t *value);
/**
* wlan_mlme_get_wmm_nom_msdu_size_ac_bk() - Get normal
* MSDU size for BK
* @psoc: pointer to psoc object
* @value: Value that needs to be set from the caller
*
* Return: QDF Status
*/
QDF_STATUS
wlan_mlme_get_wmm_nom_msdu_size_ac_bk(struct wlan_objmgr_psoc *psoc,
uint16_t *value);
/**
* wlan_mlme_get_wmm_mean_data_rate_ac_bk() - mean data
* rate for BK
* @psoc: pointer to psoc object
* @value: Value that needs to be set from the caller
*
* Return: QDF Status
*/
QDF_STATUS
wlan_mlme_get_wmm_mean_data_rate_ac_bk(struct wlan_objmgr_psoc *psoc,
uint32_t *value);
/**
* wlan_mlme_get_wmm_min_phy_rate_ac_bk() - min PHY
* rate for BK
* @psoc: pointer to psoc object
* @value: Value that needs to be set from the caller
*
* Return: QDF Status
*/
QDF_STATUS
wlan_mlme_get_wmm_min_phy_rate_ac_bk(struct wlan_objmgr_psoc *psoc,
uint32_t *value);
/**
* wlan_mlme_get_wmm_sba_ac_bk() - surplus bandwidth
* allowance for BE
* @psoc: pointer to psoc object
* @value: Value that needs to be set from the caller
*
* Return: QDF Status
*/
QDF_STATUS
wlan_mlme_get_wmm_sba_ac_bk(struct wlan_objmgr_psoc *psoc, uint16_t *value);
/**
* wlan_mlme_get_wmm_uapsd_bk_srv_intv() - Get Uapsd service
* interval for BK
* @psoc: pointer to psoc object
* @value: pointer to the value which will be filled for the caller
*
* Return: QDF Status
*/
QDF_STATUS
wlan_mlme_get_wmm_uapsd_bk_srv_intv(struct wlan_objmgr_psoc *psoc,
uint32_t *value);
/**
* wlan_mlme_get_wmm_uapsd_bk_sus_intv() - Get Uapsd suspension
* interval for BK
* @psoc: pointer to psoc object
* @value: pointer to the value which will be filled for the caller
*
* Return: QDF Status
*/
QDF_STATUS
wlan_mlme_get_wmm_uapsd_bk_sus_intv(struct wlan_objmgr_psoc *psoc,
uint32_t *value);
/** /**
* wlan_mlme_get_wmm_dir_ac_vo() - Get TSPEC direction * wlan_mlme_get_wmm_dir_ac_vo() - Get TSPEC direction
* for VO * for VO

View File

@@ -1062,6 +1062,27 @@ struct wlan_mlme_wmm_ac_be {
}; };
/**
* struct wlan_mlme_wmm_ac_bk - Default TSPEC parameters
* for AC_BK
* @dir_ac_bk: TSPEC direction for BK
* @nom_msdu_size_ac_bk: normal MSDU size for BK
* @mean_data_rate_ac_bk: mean data rate for BK
* @min_phy_rate_ac_bk: min PHY rate for BK
* @sba_ac_bk: surplus bandwidth allowance for BK
* @uapsd_bk_srv_intv: Uapsd service interval for BK
* @uapsd_bk_sus_intv: Uapsd suspension interval for BK
*/
struct wlan_mlme_wmm_ac_bk {
uint8_t dir_ac_bk;
uint16_t nom_msdu_size_ac_bk;
uint32_t mean_data_rate_ac_bk;
uint32_t min_phy_rate_ac_bk;
uint16_t sba_ac_bk;
uint32_t uapsd_bk_srv_intv;
uint32_t uapsd_bk_sus_intv;
};
/** /**
* struct wlan_mlme_wmm_params - WMM CFG Items * struct wlan_mlme_wmm_params - WMM CFG Items
* @qos_enabled: AP is enabled with 11E * @qos_enabled: AP is enabled with 11E
@@ -1071,6 +1092,7 @@ struct wlan_mlme_wmm_ac_be {
* @ac_vo: Default TSPEC parameters for AC_VO * @ac_vo: Default TSPEC parameters for AC_VO
* @ac_vi: Default TSPEC parameters for AC_VI * @ac_vi: Default TSPEC parameters for AC_VI
* @ac_be: Default TSPEC parameters for AC_BE * @ac_be: Default TSPEC parameters for AC_BE
* @ac_bk: Default TSPEC parameters for AC_BK
*/ */
struct wlan_mlme_wmm_params { struct wlan_mlme_wmm_params {
bool qos_enabled; bool qos_enabled;
@@ -1081,6 +1103,7 @@ struct wlan_mlme_wmm_params {
struct wlan_mlme_wmm_ac_vo ac_vo; struct wlan_mlme_wmm_ac_vo ac_vo;
struct wlan_mlme_wmm_ac_vi ac_vi; struct wlan_mlme_wmm_ac_vi ac_vi;
struct wlan_mlme_wmm_ac_be ac_be; struct wlan_mlme_wmm_ac_be ac_be;
struct wlan_mlme_wmm_ac_bk ac_bk;
}; };
/** /**

View File

@@ -1932,4 +1932,121 @@ ucfg_mlme_get_wmm_uapsd_be_sus_intv(struct wlan_objmgr_psoc *psoc,
return wlan_mlme_get_wmm_uapsd_be_sus_intv(psoc, value); return wlan_mlme_get_wmm_uapsd_be_sus_intv(psoc, value);
} }
/**
* ucfg_mlme_get_wmm_dir_ac_bk() - Get TSPEC direction
* for BK
* @psoc: pointer to psoc object
* @value: Value that needs to be set from the caller
*
* Inline UCFG API to be used by HDD/OSIF callers
*
* Return: QDF Status
*/
static inline QDF_STATUS
ucfg_mlme_get_wmm_dir_ac_bk(struct wlan_objmgr_psoc *psoc, uint8_t *value)
{
return wlan_mlme_get_wmm_dir_ac_bk(psoc, value);
}
/**
* ucfg_mlme_get_wmm_nom_msdu_size_ac_be() - Get normal
* MSDU size for BE
* @psoc: pointer to psoc object
* @value: Value that needs to be set from the caller
*
* Inline UCFG API to be used by HDD/OSIF callers
*
* Return: QDF Status
*/
static inline QDF_STATUS
ucfg_mlme_get_wmm_nom_msdu_size_ac_bk(struct wlan_objmgr_psoc *psoc,
uint16_t *value)
{
return wlan_mlme_get_wmm_nom_msdu_size_ac_bk(psoc, value);
}
/**
* ucfg_mlme_get_wmm_mean_data_rate_ac_bk() - mean data
* rate for BK
* @psoc: pointer to psoc object
* @value: Value that needs to be set from the caller
*
* Inline UCFG API to be used by HDD/OSIF callers
*
* Return: QDF Status
*/
static inline QDF_STATUS
ucfg_mlme_get_wmm_mean_data_rate_ac_bk(struct wlan_objmgr_psoc *psoc,
uint32_t *value)
{
return wlan_mlme_get_wmm_mean_data_rate_ac_bk(psoc, value);
}
/**
* ucfg_mlme_get_wmm_min_phy_rate_ac_bk() - min PHY
* rate for BE
* @psoc: pointer to psoc object
* @value: Value that needs to be set from the caller
*
* Inline UCFG API to be used by HDD/OSIF callers
*
* Return: QDF Status
*/
static inline QDF_STATUS
ucfg_mlme_get_wmm_min_phy_rate_ac_bk(struct wlan_objmgr_psoc *psoc,
uint32_t *value)
{
return wlan_mlme_get_wmm_min_phy_rate_ac_bk(psoc, value);
}
/**
* ucfg_mlme_get_wmm_sba_ac_bk() - surplus bandwidth
* allowance for BE
* @psoc: pointer to psoc object
* @value: Value that needs to be set from the caller
*
* Inline UCFG API to be used by HDD/OSIF callers
*
* Return: QDF Status
*/
static inline QDF_STATUS
ucfg_mlme_get_wmm_sba_ac_bk(struct wlan_objmgr_psoc *psoc, uint16_t *value)
{
return wlan_mlme_get_wmm_sba_ac_bk(psoc, value);
}
/**
* ucfg_mlme_get_wmm_uapsd_bk_srv_intv() - Get Uapsd service
* interval for BK
* @psoc: pointer to psoc object
* @value: pointer to the value which will be filled for the caller
*
* Inline UCFG API to be used by HDD/OSIF callers
*
* Return: QDF Status
*/
static inline QDF_STATUS
ucfg_mlme_get_wmm_uapsd_bk_srv_intv(struct wlan_objmgr_psoc *psoc,
uint32_t *value)
{
return wlan_mlme_get_wmm_uapsd_bk_srv_intv(psoc, value);
}
/**
* ucfg_mlme_get_wmm_uapsd_bk_sus_intv() - Get Uapsd suspension
* interval for BK
* @psoc: pointer to psoc object
* @value: Value that needs to be set from the caller
*
* Inline UCFG API to be used by HDD/OSIF callers
*
* Return: QDF Status
*/
static inline QDF_STATUS
ucfg_mlme_get_wmm_uapsd_bk_sus_intv(struct wlan_objmgr_psoc *psoc,
uint32_t *value)
{
return wlan_mlme_get_wmm_uapsd_bk_sus_intv(psoc, value);
}
#endif /* _WLAN_MLME_UCFG_API_H_ */ #endif /* _WLAN_MLME_UCFG_API_H_ */

View File

@@ -908,6 +908,122 @@ QDF_STATUS wlan_mlme_get_wmm_uapsd_be_sus_intv(struct wlan_objmgr_psoc *psoc,
return QDF_STATUS_SUCCESS; return QDF_STATUS_SUCCESS;
} }
QDF_STATUS
wlan_mlme_get_wmm_dir_ac_bk(struct wlan_objmgr_psoc *psoc, uint8_t *value)
{
struct wlan_mlme_psoc_obj *mlme_obj;
mlme_obj = mlme_get_psoc_obj(psoc);
if (!mlme_obj) {
mlme_err("Failed to get MLME Obj");
return QDF_STATUS_E_FAILURE;
}
*value = mlme_obj->cfg.wmm_params.ac_bk.dir_ac_bk;
return QDF_STATUS_SUCCESS;
}
QDF_STATUS wlan_mlme_get_wmm_nom_msdu_size_ac_bk(struct wlan_objmgr_psoc *psoc,
uint16_t *value)
{
struct wlan_mlme_psoc_obj *mlme_obj;
mlme_obj = mlme_get_psoc_obj(psoc);
if (!mlme_obj) {
mlme_err("Failed to get MLME Obj");
return QDF_STATUS_E_FAILURE;
}
*value = mlme_obj->cfg.wmm_params.ac_bk.nom_msdu_size_ac_bk;
return QDF_STATUS_SUCCESS;
}
QDF_STATUS
wlan_mlme_get_wmm_mean_data_rate_ac_bk(struct wlan_objmgr_psoc *psoc,
uint32_t *value)
{
struct wlan_mlme_psoc_obj *mlme_obj;
mlme_obj = mlme_get_psoc_obj(psoc);
if (!mlme_obj) {
mlme_err("Failed to get MLME Obj");
return QDF_STATUS_E_FAILURE;
}
*value = mlme_obj->cfg.wmm_params.ac_bk.mean_data_rate_ac_bk;
return QDF_STATUS_SUCCESS;
}
QDF_STATUS
wlan_mlme_get_wmm_min_phy_rate_ac_bk(struct wlan_objmgr_psoc *psoc,
uint32_t *value)
{
struct wlan_mlme_psoc_obj *mlme_obj;
mlme_obj = mlme_get_psoc_obj(psoc);
if (!mlme_obj) {
mlme_err("Failed to get MLME Obj");
return QDF_STATUS_E_FAILURE;
}
*value = mlme_obj->cfg.wmm_params.ac_bk.min_phy_rate_ac_bk;
return QDF_STATUS_SUCCESS;
}
QDF_STATUS
wlan_mlme_get_wmm_sba_ac_bk(struct wlan_objmgr_psoc *psoc, uint16_t *value)
{
struct wlan_mlme_psoc_obj *mlme_obj;
mlme_obj = mlme_get_psoc_obj(psoc);
if (!mlme_obj) {
mlme_err("Failed to get MLME Obj");
return QDF_STATUS_E_FAILURE;
}
*value = mlme_obj->cfg.wmm_params.ac_bk.sba_ac_bk;
return QDF_STATUS_SUCCESS;
}
QDF_STATUS
wlan_mlme_get_wmm_uapsd_bk_srv_intv(struct wlan_objmgr_psoc *psoc,
uint32_t *value)
{
struct wlan_mlme_psoc_obj *mlme_obj;
mlme_obj = mlme_get_psoc_obj(psoc);
if (!mlme_obj) {
mlme_err("Failed to get MLME Obj");
return QDF_STATUS_E_FAILURE;
}
*value = mlme_obj->cfg.wmm_params.ac_bk.uapsd_bk_srv_intv;
return QDF_STATUS_SUCCESS;
}
QDF_STATUS
wlan_mlme_get_wmm_uapsd_bk_sus_intv(struct wlan_objmgr_psoc *psoc,
uint32_t *value)
{
struct wlan_mlme_psoc_obj *mlme_obj;
mlme_obj = mlme_get_psoc_obj(psoc);
if (!mlme_obj) {
mlme_err("Failed to get MLME Obj");
return QDF_STATUS_E_FAILURE;
}
*value = mlme_obj->cfg.wmm_params.ac_bk.uapsd_bk_sus_intv;
return QDF_STATUS_SUCCESS;
}
QDF_STATUS wlan_mlme_set_sap_listen_interval(struct wlan_objmgr_psoc *psoc, QDF_STATUS wlan_mlme_set_sap_listen_interval(struct wlan_objmgr_psoc *psoc,
int value) int value)
{ {