qcacld-3.0: ADD MLME INI items of WMM Configuration

Add the following WMM config  ini configs to MLME cfg:

1. CFG_QOS_WMM_MODE_NAME
2. CFG_QOS_WMM_80211E_ENABLED_NAME
3. CFG_QOS_WMM_UAPSD_MASK_NAME
4. CFG_QOS_IMPLICIT_SETUP_ENABLED_NAME

Change-Id: I0c6354960b49d680e3efe304ea3300059c37015c
CRs-Fixed: 2327691
Цей коміт міститься в:
Abhinav Kumar
2018-09-01 18:33:56 +05:30
зафіксовано nshrivas
джерело a4773eb81e
коміт 56b4f86e48
6 змінених файлів з 291 додано та 1 видалено

Переглянути файл

@@ -1308,6 +1308,15 @@ static void mlme_init_wmm_in_cfg(struct wlan_objmgr_psoc *psoc,
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);
wmm_params->wmm_config.wmm_mode =
cfg_get(psoc, CFG_QOS_WMM_MODE);
wmm_params->wmm_config.b80211e_is_enabled =
cfg_get(psoc, CFG_QOS_WMM_80211E_ENABLED);
wmm_params->wmm_config.uapsd_mask =
cfg_get(psoc, CFG_QOS_WMM_UAPSD_MASK);
wmm_params->wmm_config.bimplicit_qos_enabled =
cfg_get(psoc, CFG_QOS_WMM_IMPLICIT_SETUP_ENABLED);
}
static void mlme_init_wps_params_cfg(struct wlan_objmgr_psoc *psoc,

Переглянути файл

@@ -756,6 +756,101 @@
CFG_VALUE_OR_DEFAULT, \
"Infra uapsd bk sus intv")
/* WMM configuration */
/*
* <ini>
* WmmIsEnabled - Enable WMM feature
* @Min: 0
* @Max: 2
* @Default: 0
*
* This ini is used to enable/disable WMM.
*
* Related: None.
*
* Supported Feature: WMM
*
* Usage: Internal/External
*
* </ini>
*/
#define CFG_QOS_WMM_MODE CFG_INI_UINT( \
"WmmIsEnabled", \
0, \
2, \
2, \
CFG_VALUE_OR_DEFAULT, \
"Enable WMM feature")
/*
* <ini>
* 80211eIsEnabled - Enable 802.11e feature
* @Min: 0
* @Max: 1
* @Default: 0
*
* This ini is used to enable/disable 802.11e.
*
* Related: None.
*
* Supported Feature: 802.11e
*
* Usage: Internal/External
*
* </ini>
*/
#define CFG_QOS_WMM_80211E_ENABLED CFG_INI_BOOL( \
"80211eIsEnabled", \
0, \
"Enable 802.11e feature")
/*
* <ini>
* UapsdMask - To setup U-APSD mask for ACs
* @Min: 0x00
* @Max: 0xFF
* @Default: 0x00
*
* This ini is used to setup U-APSD mask for ACs.
*
* Related: None.
*
* Supported Feature: WMM
*
* Usage: Internal/External
*
* </ini>
*/
#define CFG_QOS_WMM_UAPSD_MASK CFG_INI_UINT( \
"UapsdMask", \
0x00, \
0xFF, \
0x00, \
CFG_VALUE_OR_DEFAULT, \
"setup U-APSD mask for ACs")
/*
* <ini>
* ImplicitQosIsEnabled - Enableimplicit QOS
* @Min: 0
* @Max: 1
* @Default: 0
*
* This ini is used to enable/disable implicit QOS.
*
* Related: None.
*
* Supported Feature: WMM
*
* Usage: Internal/External
*
* </ini>
*/
#define CFG_QOS_WMM_IMPLICIT_SETUP_ENABLED CFG_INI_BOOL( \
"ImplicitQosIsEnabled", \
0, \
"Enable implicit QOS")
#define CFG_WMM_PARAMS_ALL \
CFG(CFG_QOS_ENABLED) \
CFG(CFG_WME_ENABLED) \
@@ -789,6 +884,10 @@
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)
CFG(CFG_QOS_WMM_UAPSD_BK_SUS_INTV) \
CFG(CFG_QOS_WMM_MODE) \
CFG(CFG_QOS_WMM_80211E_ENABLED) \
CFG(CFG_QOS_WMM_UAPSD_MASK) \
CFG(CFG_QOS_WMM_IMPLICIT_SETUP_ENABLED)
#endif /* __CFG_MLME_FE_WMM_H */

Переглянути файл

@@ -883,6 +883,47 @@ QDF_STATUS
wlan_mlme_get_wmm_uapsd_bk_sus_intv(struct wlan_objmgr_psoc *psoc,
uint32_t *value);
/**
* wlan_mlme_get_wmm_mode() - Enable WMM feature
* @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_mode(struct wlan_objmgr_psoc *psoc, uint8_t *value);
/**
* wlan_mlme_get_80211e_is_enabled() - Enable 802.11e feature
* @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_80211e_is_enabled(struct wlan_objmgr_psoc *psoc, bool *value);
/**
* wlan_mlme_get_wmm_uapsd_mask() - setup U-APSD mask for ACs
* @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_mask(struct wlan_objmgr_psoc *psoc, uint8_t *value);
/**
* wlan_mlme_get_implicit_qos_is_enabled() - Enable implicit QOS
* @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_implicit_qos_is_enabled(struct wlan_objmgr_psoc *psoc,
bool *value);
/**
* wlan_mlme_get_wmm_dir_ac_vo() - Get TSPEC direction
* for VO

Переглянути файл

@@ -997,6 +997,20 @@ struct wlan_mlme_lfr_cfg {
uint32_t roam_preauth_no_ack_timeout;
};
/**
* struct wlan_mlme_wmm_config - WMM configuration
* @wmm_mode: Enable WMM feature
* @b80211e_is_enabled: Enable 802.11e feature
* @uapsd_mask: what ACs to setup U-APSD for at assoc
* @bimplicit_qos_enabled: Enable implicit QOS
*/
struct wlan_mlme_wmm_config {
uint8_t wmm_mode;
bool b80211e_is_enabled;
uint8_t uapsd_mask;
bool bimplicit_qos_enabled;
};
/**
* struct wlan_mlme_wmm_ac_vo - Default TSPEC parameters
* for AC_VO
@@ -1100,6 +1114,7 @@ struct wlan_mlme_wmm_params {
uint8_t max_sp_length;
bool wsm_enabled;
uint32_t edca_profile;
struct wlan_mlme_wmm_config wmm_config;
struct wlan_mlme_wmm_ac_vo ac_vo;
struct wlan_mlme_wmm_ac_vi ac_vi;
struct wlan_mlme_wmm_ac_be ac_be;

Переглянути файл

@@ -2049,4 +2049,65 @@ ucfg_mlme_get_wmm_uapsd_bk_sus_intv(struct wlan_objmgr_psoc *psoc,
return wlan_mlme_get_wmm_uapsd_bk_sus_intv(psoc, value);
}
/**
* ucfg_mlme_get_wmm_mode() - Enable WMM feature
* @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_mode(struct wlan_objmgr_psoc *psoc, uint8_t *value)
{
return wlan_mlme_get_wmm_mode(psoc, value);
}
/**
* ucfg_mlme_get_80211e_is_enabled() - Enable 802.11e feature
* @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_80211e_is_enabled(struct wlan_objmgr_psoc *psoc, bool *value)
{
return wlan_mlme_get_80211e_is_enabled(psoc, value);
}
/**
* ucfg_mlme_get_wmm_uapsd_mask() - setup U-APSD mask for ACs
* @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_mask(struct wlan_objmgr_psoc *psoc, uint8_t *value)
{
return wlan_mlme_get_wmm_uapsd_mask(psoc, value);
}
/**
* ucfg_mlme_get_implicit_qos_is_enabled() - Enable implicit QOS
* @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_implicit_qos_is_enabled(struct wlan_objmgr_psoc *psoc,
bool *value)
{
return wlan_mlme_get_implicit_qos_is_enabled(psoc, value);
}
#endif /* _WLAN_MLME_UCFG_API_H_ */

Переглянути файл

@@ -1024,6 +1024,71 @@ wlan_mlme_get_wmm_uapsd_bk_sus_intv(struct wlan_objmgr_psoc *psoc,
return QDF_STATUS_SUCCESS;
}
QDF_STATUS
wlan_mlme_get_wmm_mode(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.wmm_config.wmm_mode;
return QDF_STATUS_SUCCESS;
}
QDF_STATUS
wlan_mlme_get_80211e_is_enabled(struct wlan_objmgr_psoc *psoc, bool *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.wmm_config.b80211e_is_enabled;
return QDF_STATUS_SUCCESS;
}
QDF_STATUS
wlan_mlme_get_wmm_uapsd_mask(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.wmm_config.uapsd_mask;
return QDF_STATUS_SUCCESS;
}
QDF_STATUS
wlan_mlme_get_implicit_qos_is_enabled(struct wlan_objmgr_psoc *psoc,
bool *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.wmm_config.bimplicit_qos_enabled;
return QDF_STATUS_SUCCESS;
}
QDF_STATUS wlan_mlme_set_sap_listen_interval(struct wlan_objmgr_psoc *psoc,
int value)
{