Parcourir la source

qcacld-3.0: ADD MLME INI items of WMM AC_VO

Add the following WMM AC VO ini configs to MLME cfg:
1. CFG_QOS_WMM_INFRA_DIR_AC_VO_NAME
2. CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_VO_NAME
3. CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_VO_NAME
4. CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_VO_NAME
5. CFG_QOS_WMM_INFRA_SBA_AC_VO_NAME
6. CFG_QOS_WMM_INFRA_UAPSD_VO_SRV_INTV_NAME
7. CFG_QOS_WMM_INFRA_UAPSD_VO_SUS_INTV_NAME

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

Change-Id: I402ff46aad528d7c4bbaa794b6fba498439f8e97
CRs-Fixed: 2327048
Abhinav Kumar il y a 6 ans
Parent
commit
18b45cd8f3

+ 13 - 0
components/mlme/core/src/wlan_mlme_main.c

@@ -1131,6 +1131,19 @@ static void mlme_init_wmm_in_cfg(struct wlan_objmgr_psoc *psoc,
 	wmm_params->max_sp_length = cfg_default(CFG_MAX_SP_LENGTH);
 	wmm_params->wsm_enabled = cfg_default(CFG_WSM_ENABLED);
 	wmm_params->edca_profile = cfg_default(CFG_EDCA_PROFILE);
+
+	wmm_params->ac_vo.dir_ac_vo = cfg_get(psoc, CFG_QOS_WMM_DIR_AC_VO);
+	wmm_params->ac_vo.nom_msdu_size_ac_vo =
+			cfg_get(psoc, CFG_QOS_WMM_NOM_MSDU_SIZE_AC_VO);
+	wmm_params->ac_vo.mean_data_rate_ac_vo =
+			cfg_get(psoc, CFG_QOS_WMM_MEAN_DATA_RATE_AC_VO);
+	wmm_params->ac_vo.min_phy_rate_ac_vo =
+			cfg_get(psoc, CFG_QOS_WMM_MIN_PHY_RATE_AC_VO);
+	wmm_params->ac_vo.sba_ac_vo = cfg_get(psoc, CFG_QOS_WMM_SBA_AC_VO);
+	wmm_params->ac_vo.uapsd_vo_srv_intv =
+			cfg_get(psoc, CFG_QOS_WMM_UAPSD_VO_SRV_INTV);
+	wmm_params->ac_vo.uapsd_vo_sus_intv =
+			cfg_get(psoc, CFG_QOS_WMM_UAPSD_VO_SUS_INTV);
 }
 
 QDF_STATUS mlme_cfg_on_psoc_enable(struct wlan_objmgr_psoc *psoc)

+ 184 - 1
components/mlme/dispatcher/inc/cfg_mlme_fe_wmm.h

@@ -54,11 +54,194 @@
 		CFG_VALUE_OR_DEFAULT, \
 		"Edca Profile")
 
+/* default TSPEC parameters for AC_VO */
+/*
+ * <ini>
+ * InfraDirAcVo - Set TSPEC direction for VO
+ * @Min: 0
+ * @Max: 3
+ * @Default: 3
+ *
+ * This ini is used to set TSPEC direction for VO
+ *
+ * Related: None.
+ *
+ * Supported Feature: WMM
+ *
+ * Usage: Internal/External
+ *
+ * </ini>
+ */
+#define CFG_QOS_WMM_DIR_AC_VO CFG_INI_UINT( \
+		"InfraDirAcVo", \
+		0, \
+		3, \
+		3, \
+		CFG_VALUE_OR_DEFAULT, \
+		"direction for vo")
+
+/*
+ * <ini>
+ * InfraNomMsduSizeAcVo - Set normal MSDU size for VO
+ * @Min: 0x0
+ * @Max: 0xFFFF
+ * @Default: 0x80D0
+ *
+ * This ini is used to set normal MSDU size for VO
+ *
+ * Related: None.
+ *
+ * Supported Feature: WMM
+ *
+ * Usage: Internal/External
+ *
+ * </ini>
+ */
+#define CFG_QOS_WMM_NOM_MSDU_SIZE_AC_VO CFG_INI_UINT( \
+		"InfraNomMsduSizeAcVo", \
+		0x0, \
+		0xFFFF, \
+		0x80D0, \
+		CFG_VALUE_OR_DEFAULT, \
+		"MSDU size for VO")
+
+/*
+ * <ini>
+ * InfraMeanDataRateAcVo - Set mean data rate for VO
+ * @Min: 0x0
+ * @Max: 0xFFFFFFFF
+ * @Default: 0x14500
+ *
+ * This ini is used to set mean data rate for VO
+ *
+ * Related: None.
+ *
+ * Supported Feature: WMM
+ *
+ * Usage: Internal/External
+ *
+ * </ini>
+ */
+#define CFG_QOS_WMM_MEAN_DATA_RATE_AC_VO CFG_INI_UINT( \
+		"InfraMeanDataRateAcVo", \
+		0x0, \
+		0xFFFFFFFF, \
+		0x14500, \
+		CFG_VALUE_OR_DEFAULT, \
+		"mean data rate for VO")
+
+/*
+ * <ini>
+ * InfraMinPhyRateAcVo - Set min PHY rate for VO
+ * @Min: 0x0
+ * @Max: 0xFFFFFFFF
+ * @Default: 0x5B8D80
+ *
+ * This ini is used to set min PHY rate for VO
+ *
+ * Related: None.
+ *
+ * Supported Feature: WMM
+ *
+ * Usage: Internal/External
+ *
+ * </ini>
+ */
+#define CFG_QOS_WMM_MIN_PHY_RATE_AC_VO CFG_INI_UINT( \
+		"InfraMinPhyRateAcVo", \
+		0x0, \
+		0xFFFFFFFF, \
+		0x5B8D80, \
+		CFG_VALUE_OR_DEFAULT, \
+		"min PHY rate for VO")
+
+/*
+ * <ini>
+ * InfraSbaAcVo - Set surplus bandwidth allowance for VO
+ * @Min: 0x2001
+ * @Max: 0xFFFF
+ * @Default: 0x2001
+ *
+ * This ini is used to set surplus bandwidth allowance for VO
+ *
+ * Related: None.
+ *
+ * Supported Feature: WMM
+*
+ * Usage: Internal/External
+ *
+ * </ini>
+ */
+#define CFG_QOS_WMM_SBA_AC_VO CFG_INI_UINT( \
+		"InfraSbaAcVo", \
+		0x2001, \
+		0xFFFF, \
+		0x2001, \
+		CFG_VALUE_OR_DEFAULT, \
+		"surplus bandwidth allowance for VO")
+
+/*
+ * <ini>
+ * InfraUapsdVoSrvIntv - Set Uapsd service interval for voice
+ * @Min: 0
+ * @Max: 4294967295UL
+ * @Default: 20
+ *
+ * This ini is used to set Uapsd service interval for voice.
+ *
+ * Related: None.
+ *
+ * Supported Feature: WMM
+ *
+ * Usage: Internal/External
+ *
+ * </ini>
+ */
+#define CFG_QOS_WMM_UAPSD_VO_SRV_INTV CFG_INI_UINT( \
+		"InfraUapsdVoSrvIntv", \
+		0, \
+		4294967295UL, \
+		20, \
+		CFG_VALUE_OR_DEFAULT, \
+		"Infra uapsd vo srv intv")
+
+/*
+ * <ini>
+ * InfraUapsdVoSuspIntv - Set Uapsd suspension interval for voice
+ * @Min: 0
+ * @Max: 4294967295UL
+ * @Default: 2000
+ *
+ * This ini is used to set Uapsd suspension interval for voice.
+ *
+ * Related: None.
+ *
+ * Supported Feature: WMM
+ *
+ * Usage: Internal/External
+ *
+ * </ini>
+ */
+#define CFG_QOS_WMM_UAPSD_VO_SUS_INTV CFG_INI_UINT( \
+		"InfraUapsdVoSuspIntv", \
+		0, \
+		4294967295UL, \
+		2000, \
+		CFG_VALUE_OR_DEFAULT, \
+		"Infra uapsd vo sus intv")
+
 #define CFG_WMM_PARAMS_ALL \
 	CFG(CFG_QOS_ENABLED) \
 	CFG(CFG_WME_ENABLED) \
 	CFG(CFG_MAX_SP_LENGTH) \
 	CFG(CFG_WSM_ENABLED) \
-	CFG(CFG_EDCA_PROFILE)
+	CFG(CFG_EDCA_PROFILE) \
+	CFG(CFG_QOS_WMM_DIR_AC_VO) \
+	CFG(CFG_QOS_WMM_NOM_MSDU_SIZE_AC_VO) \
+	CFG(CFG_QOS_WMM_MEAN_DATA_RATE_AC_VO) \
+	CFG(CFG_QOS_WMM_MIN_PHY_RATE_AC_VO) \
+	CFG(CFG_QOS_WMM_SBA_AC_VO) \
+	CFG(CFG_QOS_WMM_UAPSD_VO_SRV_INTV) \
+	CFG(CFG_QOS_WMM_UAPSD_VO_SUS_INTV)
 
 #endif /* __CFG_MLME_FE_WMM_H */

+ 80 - 0
components/mlme/dispatcher/inc/wlan_mlme_api.h

@@ -538,6 +538,61 @@ QDF_STATUS wlan_mlme_get_fils_enabled_info(struct wlan_objmgr_psoc *psoc,
 QDF_STATUS wlan_mlme_set_fils_enabled_info(struct wlan_objmgr_psoc *psoc,
 					   bool value);
 
+/**
+ * wlan_mlme_get_wmm_dir_ac_vo() - Get TSPEC direction
+ * for VO
+ * @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_vo(struct wlan_objmgr_psoc *psoc,
+			    uint8_t *value);
+
+/**
+ * wlan_mlme_get_wmm_nom_msdu_size_ac_vo() - Get normal
+ * MSDU size for VO
+ * @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_vo(struct wlan_objmgr_psoc *psoc,
+				      uint16_t *value);
+
+/**
+ * wlan_mlme_get_wmm_mean_data_rate_ac_vo() - mean data rate for VO
+ * @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_vo(struct wlan_objmgr_psoc *psoc,
+				       uint32_t *value);
+/**
+ * wlan_mlme_get_wmm_min_phy_rate_ac_vo() - min PHY
+ * rate for VO
+ * @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_vo(struct wlan_objmgr_psoc *psoc,
+				     uint32_t *value);
+/**
+ * wlan_mlme_get_wmm_sba_ac_vo() - surplus bandwidth allowance for VO
+ * @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_vo(struct wlan_objmgr_psoc *psoc, uint16_t *value);
+
 /**
  * wlan_mlme_set_enable_bcast_probe_rsp() - Set enable bcast probe resp info
  * @psoc: pointer to psoc object
@@ -547,4 +602,29 @@ QDF_STATUS wlan_mlme_set_fils_enabled_info(struct wlan_objmgr_psoc *psoc,
  */
 QDF_STATUS wlan_mlme_set_enable_bcast_probe_rsp(struct wlan_objmgr_psoc *psoc,
 						bool value);
+
+/**
+ * wlan_mlme_get_wmm_uapsd_vo_srv_intv() - Get Uapsd service
+ * interval for voice
+ * @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_vo_srv_intv(struct wlan_objmgr_psoc *psoc,
+				    uint32_t *value);
+
+/**
+ * wlan_mlme_get_wmm_uapsd_vo_sus_intv() - Get Uapsd suspension
+ * interval for voice
+ * @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_vo_sus_intv(struct wlan_objmgr_psoc *psoc,
+				    uint32_t *value);
+
 #endif /* _WLAN_MLME_API_H_ */

+ 25 - 3
components/mlme/dispatcher/inc/wlan_mlme_public_struct.h

@@ -835,12 +835,33 @@ struct wlan_mlme_lfr_cfg {
 };
 
 /**
-* struct wlan_mlme_wmm_params - WMM CFG Items
+ * struct wlan_mlme_wmm_ac_vo - Default TSPEC parameters
+ * for AC_VO
+ * @dir_ac_vo: TSPEC direction for VO
+ * @nom_msdu_size_ac_vo: normal MSDU size for VO
+ * @mean_data_rate_ac_vo: mean data rate for VO
+ * @min_phy_rate_ac_vo: min PHY rate for VO
+ * @sba_ac_vo: surplus bandwidth allowance for VO
+ * @uapsd_vo_srv_intv: Uapsd service interval for voice
+ * @uapsd_vo_sus_intv: Uapsd suspension interval for voice
+ */
+struct wlan_mlme_wmm_ac_vo {
+	uint8_t dir_ac_vo;
+	uint16_t nom_msdu_size_ac_vo;
+	uint32_t mean_data_rate_ac_vo;
+	uint32_t min_phy_rate_ac_vo;
+	uint16_t sba_ac_vo;
+	uint32_t uapsd_vo_srv_intv;
+	uint32_t uapsd_vo_sus_intv;
+};
+
+/**
+ * struct wlan_mlme_wmm_params - WMM CFG Items
  * @qos_enabled: AP is enabled with 11E
  * @wme_enabled: AP is enabled with WMM
  * @max_sp_length: Maximum SP Length
  * @wsm_enabled: AP is enabled with WSM
- * @edca_profile: edca profile id
+ * @ac_vo: Default TSPEC parameters for AC_VO
  */
 struct wlan_mlme_wmm_params {
 	bool qos_enabled;
@@ -848,6 +869,7 @@ struct wlan_mlme_wmm_params {
 	uint8_t max_sp_length;
 	bool wsm_enabled;
 	uint32_t edca_profile;
+	struct wlan_mlme_wmm_ac_vo ac_vo;
 };
 
 /**
@@ -1082,7 +1104,7 @@ struct wlan_mlme_wep_cfg {
  * @acs: ACS related CFG items
  * @feature_flags: Feature flag config items
  * @wep_params:  WEP related config items
- * @wmm_params: WMM related CFG Items
+ * @wmm_params: WMM related CFG & INI Items
  */
 struct wlan_mlme_cfg {
 	struct wlan_mlme_chainmask chainmask_cfg;

+ 117 - 1
components/mlme/dispatcher/inc/wlan_mlme_ucfg_api.h

@@ -168,7 +168,6 @@ QDF_STATUS ucfg_mlme_get_acs_with_more_param(struct wlan_objmgr_psoc *psoc,
 
 /**
  * ucfg_mlme_get_auto_channel_weight() - Get the auto channel select weight
- *
  * @psoc: pointer to psoc object
  * @value: Value that needs to be set from the caller
  *
@@ -234,6 +233,123 @@ ucfg_mlme_get_acs_support_for_dfs_ltecoex(struct wlan_objmgr_psoc *psoc,
 	return wlan_mlme_get_acs_support_for_dfs_ltecoex(psoc, value);
 }
 
+/**
+ * ucfg_mlme_get_wmm_dir_ac_vo() - Get TSPEC direction for VO
+ * @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_vo(struct wlan_objmgr_psoc *psoc,
+			    uint8_t *value)
+{
+	return wlan_mlme_get_wmm_dir_ac_vo(psoc, value);
+}
+
+/**
+ * ucfg_mlme_get_wmm_nom_msdu_size_ac_vo() - Get normal
+ * MSDU size for VO
+ * @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_vo(struct wlan_objmgr_psoc *psoc,
+				      uint16_t *value)
+{
+	return wlan_mlme_get_wmm_nom_msdu_size_ac_vo(psoc, value);
+}
+
+/**
+ * ucfg_mlme_get_wmm_mean_data_rate_ac_vo() - mean data rate for VO
+ * @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_vo(struct wlan_objmgr_psoc *psoc,
+				       uint32_t *value)
+{
+	return wlan_mlme_get_wmm_mean_data_rate_ac_vo(psoc, value);
+}
+
+/**
+ * ucfg_mlme_get_wmm_min_phy_rate_ac_vo() - min PHY
+ * rate for VO
+ * @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_vo(struct wlan_objmgr_psoc *psoc,
+				     uint32_t *value)
+{
+	return wlan_mlme_get_wmm_min_phy_rate_ac_vo(psoc, value);
+}
+
+/**
+ * ucfg_mlme_get_wmm_sba_ac_vo() - surplus bandwidth
+ * allowance for VO
+ * @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_vo(struct wlan_objmgr_psoc *psoc,
+			    uint16_t *value)
+{
+	return wlan_mlme_get_wmm_sba_ac_vo(psoc, value);
+}
+
+/**
+ * ucfg_mlme_get_wmm_uapsd_vo_srv_intv() - Get Uapsd service
+ * interval for voice
+ * @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_vo_srv_intv(struct wlan_objmgr_psoc *psoc,
+				    uint32_t *value)
+{
+	return wlan_mlme_get_wmm_uapsd_vo_srv_intv(psoc, value);
+}
+
+/**
+ * ucfg_mlme_get_wmm_uapsd_vo_sus_intv() - Get Uapsd suspension
+ * interval for voice
+ * @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_vo_sus_intv(struct wlan_objmgr_psoc *psoc,
+				    uint32_t *value)
+{
+	return wlan_mlme_get_wmm_uapsd_vo_sus_intv(psoc, value);
+}
+
 /**
  *
  * ucfg_mlme_get_sap_inactivity_override() - Check if sap max inactivity

+ 112 - 1
components/mlme/dispatcher/src/wlan_mlme_api.c

@@ -349,6 +349,7 @@ wlan_mlme_get_model_number(struct wlan_objmgr_psoc *psoc,
 	*plen = qdf_str_lcopy(pbuf,
 			      mlme_obj->cfg.product_details.model_number,
 			      *plen);
+
 	return QDF_STATUS_SUCCESS;
 }
 
@@ -363,7 +364,6 @@ wlan_mlme_get_model_name(struct wlan_objmgr_psoc *psoc,
 		mlme_err("Failed to get MLME Obj");
 		return QDF_STATUS_E_FAILURE;
 	}
-
 	*plen = qdf_str_lcopy(pbuf,
 			      mlme_obj->cfg.product_details.model_name,
 			      *plen);
@@ -406,6 +406,117 @@ wlan_mlme_get_manufacture_product_name(struct wlan_objmgr_psoc *psoc,
 	return QDF_STATUS_SUCCESS;
 }
 
+QDF_STATUS wlan_mlme_get_wmm_dir_ac_vo(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_vo.dir_ac_vo;
+
+	return QDF_STATUS_SUCCESS;
+}
+
+
+QDF_STATUS wlan_mlme_get_wmm_nom_msdu_size_ac_vo(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_vo.nom_msdu_size_ac_vo;
+	return QDF_STATUS_SUCCESS;
+}
+
+QDF_STATUS
+wlan_mlme_get_wmm_mean_data_rate_ac_vo(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_vo.mean_data_rate_ac_vo;
+
+	return QDF_STATUS_SUCCESS;
+}
+
+QDF_STATUS wlan_mlme_get_wmm_min_phy_rate_ac_vo(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_vo.min_phy_rate_ac_vo;
+	return QDF_STATUS_SUCCESS;
+}
+
+QDF_STATUS wlan_mlme_get_wmm_sba_ac_vo(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_vo.sba_ac_vo;
+
+	return QDF_STATUS_SUCCESS;
+}
+
+QDF_STATUS wlan_mlme_get_wmm_uapsd_vo_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_vo.uapsd_vo_srv_intv;
+
+	return QDF_STATUS_SUCCESS;
+}
+
+QDF_STATUS wlan_mlme_get_wmm_uapsd_vo_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_vo.uapsd_vo_sus_intv;
+
+	return QDF_STATUS_SUCCESS;
+}
+
 QDF_STATUS wlan_mlme_set_sap_listen_interval(struct wlan_objmgr_psoc *psoc,
 					     int value)
 {

+ 0 - 1
components/mlme/dispatcher/src/wlan_mlme_ucfg_api.c

@@ -298,4 +298,3 @@ ucfg_mlme_get_first_scan_bucket_threshold(struct wlan_objmgr_psoc *psoc,
 
 	return QDF_STATUS_SUCCESS;
 }
-

+ 0 - 163
core/hdd/inc/wlan_hdd_cfg.h

@@ -2845,50 +2845,6 @@ enum station_keepalive_method {
 #define CFG_QOS_IMPLICIT_SETUP_ENABLED_MAX              (1)
 #define CFG_QOS_IMPLICIT_SETUP_ENABLED_DEFAULT          (0)
 
-/*
- * <ini>
- * InfraUapsdVoSrvIntv - Set Uapsd service interval for voice
- * @Min: 0
- * @Max: 4294967295UL
- * @Default: 20
- *
- * This ini is used to set Uapsd service interval for voice.
- *
- * Related: None.
- *
- * Supported Feature: WMM
- *
- * Usage: Internal/External
- *
- * </ini>
- */
-#define CFG_QOS_WMM_INFRA_UAPSD_VO_SRV_INTV_NAME         "InfraUapsdVoSrvIntv"
-#define CFG_QOS_WMM_INFRA_UAPSD_VO_SRV_INTV_MIN           (0)
-#define CFG_QOS_WMM_INFRA_UAPSD_VO_SRV_INTV_MAX           (4294967295UL)
-#define CFG_QOS_WMM_INFRA_UAPSD_VO_SRV_INTV_DEFAULT       (20)
-
-/*
- * <ini>
- * InfraUapsdVoSuspIntv - Set Uapsd suspension interval for voice
- * @Min: 0
- * @Max: 4294967295UL
- * @Default: 2000
- *
- * This ini is used to set Uapsd suspension interval for voice.
- *
- * Related: None.
- *
- * Supported Feature: WMM
- *
- * Usage: Internal/External
- *
- * </ini>
- */
-#define CFG_QOS_WMM_INFRA_UAPSD_VO_SUS_INTV_NAME         "InfraUapsdVoSuspIntv"
-#define CFG_QOS_WMM_INFRA_UAPSD_VO_SUS_INTV_MIN           (0)
-#define CFG_QOS_WMM_INFRA_UAPSD_VO_SUS_INTV_MAX           (4294967295UL)
-#define CFG_QOS_WMM_INFRA_UAPSD_VO_SUS_INTV_DEFAULT       (2000)
-
 /*
  * <ini>
  * InfraUapsdViSrvIntv - Set Uapsd service interval for video
@@ -3021,116 +2977,6 @@ enum station_keepalive_method {
 #define CFG_QOS_WMM_INFRA_UAPSD_BK_SUS_INTV_MAX           (4294967295UL)
 #define CFG_QOS_WMM_INFRA_UAPSD_BK_SUS_INTV_DEFAULT       (2000)
 
-/* default TSPEC parameters for AC_VO */
-/*
- * <ini>
- * InfraDirAcVo - Set TSPEC direction for VO
- * @Min: 0
- * @Max: 3
- * @Default: 3
- *
- * This ini is used to set TSPEC direction for VO
- *
- * Related: None.
- *
- * Supported Feature: WMM
- *
- * Usage: Internal/External
- *
- * </ini>
- */
-#define CFG_QOS_WMM_INFRA_DIR_AC_VO_NAME   "InfraDirAcVo"
-#define CFG_QOS_WMM_INFRA_DIR_AC_VO_MIN     (0)
-#define CFG_QOS_WMM_INFRA_DIR_AC_VO_MAX     (3)
-#define CFG_QOS_WMM_INFRA_DIR_AC_VO_DEFAULT (3) /*WLAN_QCT_CUST_WMM_TSDIR_BOTH*/
-
-/*
- * <ini>
- * InfraNomMsduSizeAcVo - Set normal MSDU size for VO
- * @Min: 0x0
- * @Max: 0xFFFF
- * @Default: 0x80D0
- *
- * This ini is used to set normal MSDU size for VO
- *
- * Related: None.
- *
- * Supported Feature: WMM
- *
- * Usage: Internal/External
- *
- * </ini>
- */
-#define CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_VO_NAME      "InfraNomMsduSizeAcVo"
-#define CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_VO_MIN        (0x0)
-#define CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_VO_MAX        (0xFFFF)
-#define CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_VO_DEFAULT    (0x80D0)
-
-/*
- * <ini>
- * InfraMeanDataRateAcVo - Set mean data rate for VO
- * @Min: 0x0
- * @Max: 0xFFFFFFFF
- * @Default: 0x14500
- *
- * This ini is used to set mean data rate for VO
- *
- * Related: None.
- *
- * Supported Feature: WMM
- *
- * Usage: Internal/External
- *
- * </ini>
- */
-#define CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_VO_NAME    "InfraMeanDataRateAcVo"
-#define CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_VO_MIN      (0x0)
-#define CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_VO_MAX      (0xFFFFFFFF)
-#define CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_VO_DEFAULT  (0x14500)
-
-/*
- * <ini>
- * InfraMinPhyRateAcVo - Set min PHY rate for VO
- * @Min: 0x0
- * @Max: 0xFFFFFFFF
- * @Default: 0x5B8D80
- *
- * This ini is used to set min PHY rate for VO
- *
- * Related: None.
- *
- * Supported Feature: WMM
- *
- * Usage: Internal/External
- *
- * </ini>
- */
-#define CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_VO_NAME       "InfraMinPhyRateAcVo"
-#define CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_VO_MIN         (0x0)
-#define CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_VO_MAX         (0xFFFFFFFF)
-#define CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_VO_DEFAULT     (0x5B8D80)
-/*
- * <ini>
- * InfraSbaAcVo - Set surplus bandwidth allowance for VO
- * @Min: 0x2001
- * @Max: 0xFFFF
- * @Default: 0x2001
- *
- * This ini is used to set surplus bandwidth allowance for VO
- *
- * Related: None.
- *
- * Supported Feature: WMM
- *
- * Usage: Internal/External
- *
- * </ini>
- */
- #define CFG_QOS_WMM_INFRA_SBA_AC_VO_NAME                   "InfraSbaAcVo"
- #define CFG_QOS_WMM_INFRA_SBA_AC_VO_MIN                     (0x2001)
- #define CFG_QOS_WMM_INFRA_SBA_AC_VO_MAX                     (0xFFFF)
- #define CFG_QOS_WMM_INFRA_SBA_AC_VO_DEFAULT                 (0x2001)
-
  /* default TSPEC parameters for AC_VI */
 /*
  * <ini>
@@ -9396,8 +9242,6 @@ struct hdd_config {
 	enum hdd_wmm_user_mode WmmMode;
 	bool b80211eIsEnabled;
 	uint8_t UapsdMask;      /* what ACs to setup U-APSD for at assoc */
-	uint32_t InfraUapsdVoSrvIntv;
-	uint32_t InfraUapsdVoSuspIntv;
 	uint32_t InfraUapsdViSrvIntv;
 	uint32_t InfraUapsdViSuspIntv;
 	uint32_t InfraUapsdBeSrvIntv;
@@ -9416,13 +9260,6 @@ struct hdd_config {
 	bool isRoamOffloadScanEnabled;
 	bool bImplicitQosEnabled;
 
-	/* default TSPEC parameters for AC_VO */
-	enum sme_qos_wmm_dir_type InfraDirAcVo;
-	uint16_t InfraNomMsduSizeAcVo;
-	uint32_t InfraMeanDataRateAcVo;
-	uint32_t InfraMinPhyRateAcVo;
-	uint16_t InfraSbaAcVo;
-
 	/* default TSPEC parameters for AC_VI */
 	enum sme_qos_wmm_dir_type InfraDirAcVi;
 	uint16_t InfraNomMsduSizeAcVi;

+ 0 - 55
core/hdd/src/wlan_hdd_cfg.c

@@ -768,22 +768,6 @@ struct reg_table_entry g_registry_table[] = {
 		     CFG_QOS_WMM_UAPSD_MASK_MIN,
 		     CFG_QOS_WMM_UAPSD_MASK_MAX),
 
-	REG_VARIABLE(CFG_QOS_WMM_INFRA_UAPSD_VO_SRV_INTV_NAME,
-		     WLAN_PARAM_Integer,
-		     struct hdd_config, InfraUapsdVoSrvIntv,
-		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
-		     CFG_QOS_WMM_INFRA_UAPSD_VO_SRV_INTV_DEFAULT,
-		     CFG_QOS_WMM_INFRA_UAPSD_VO_SRV_INTV_MIN,
-		     CFG_QOS_WMM_INFRA_UAPSD_VO_SRV_INTV_MAX),
-
-	REG_VARIABLE(CFG_QOS_WMM_INFRA_UAPSD_VO_SUS_INTV_NAME,
-		     WLAN_PARAM_Integer,
-		     struct hdd_config, InfraUapsdVoSuspIntv,
-		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
-		     CFG_QOS_WMM_INFRA_UAPSD_VO_SUS_INTV_DEFAULT,
-		     CFG_QOS_WMM_INFRA_UAPSD_VO_SUS_INTV_MIN,
-		     CFG_QOS_WMM_INFRA_UAPSD_VO_SUS_INTV_MAX),
-
 	REG_VARIABLE(CFG_QOS_WMM_INFRA_UAPSD_VI_SRV_INTV_NAME,
 		     WLAN_PARAM_Integer,
 		     struct hdd_config, InfraUapsdViSrvIntv,
@@ -913,44 +897,6 @@ struct reg_table_entry g_registry_table[] = {
 			     CFG_ROAM_SCAN_OFFLOAD_ENABLED_MAX,
 			     cb_notify_update_roam_scan_offload_enabled, 0),
 
-	REG_VARIABLE(CFG_QOS_WMM_INFRA_DIR_AC_VO_NAME, WLAN_PARAM_Integer,
-		     struct hdd_config, InfraDirAcVo,
-		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
-		     CFG_QOS_WMM_INFRA_DIR_AC_VO_DEFAULT,
-		     CFG_QOS_WMM_INFRA_DIR_AC_VO_MIN,
-		     CFG_QOS_WMM_INFRA_DIR_AC_VO_MAX),
-
-	REG_VARIABLE(CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_VO_NAME,
-		     WLAN_PARAM_HexInteger,
-		     struct hdd_config, InfraNomMsduSizeAcVo,
-		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
-		     CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_VO_DEFAULT,
-		     CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_VO_MIN,
-		     CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_VO_MAX),
-
-	REG_VARIABLE(CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_VO_NAME,
-		     WLAN_PARAM_HexInteger,
-		     struct hdd_config, InfraMeanDataRateAcVo,
-		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
-		     CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_VO_DEFAULT,
-		     CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_VO_MIN,
-		     CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_VO_MAX),
-
-	REG_VARIABLE(CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_VO_NAME,
-		     WLAN_PARAM_HexInteger,
-		     struct hdd_config, InfraMinPhyRateAcVo,
-		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
-		     CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_VO_DEFAULT,
-		     CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_VO_MIN,
-		     CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_VO_MAX),
-
-	REG_VARIABLE(CFG_QOS_WMM_INFRA_SBA_AC_VO_NAME, WLAN_PARAM_HexInteger,
-		     struct hdd_config, InfraSbaAcVo,
-		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
-		     CFG_QOS_WMM_INFRA_SBA_AC_VO_DEFAULT,
-		     CFG_QOS_WMM_INFRA_SBA_AC_VO_MIN,
-		     CFG_QOS_WMM_INFRA_SBA_AC_VO_MAX),
-
 	REG_VARIABLE(CFG_QOS_WMM_INFRA_DIR_AC_VI_NAME, WLAN_PARAM_Integer,
 		     struct hdd_config, InfraDirAcVi,
 		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
@@ -4369,7 +4315,6 @@ static void hdd_set_power_save_offload_config(struct hdd_context *hdd_ctx)
 		ucfg_mlme_set_sap_listen_interval(hdd_ctx->psoc,
 						  listenInterval);
 	}
-
 }
 
 /**

+ 97 - 27
core/hdd/src/wlan_hdd_wmm.c

@@ -53,6 +53,7 @@
 #include <wlan_hdd_softap_tx_rx.h>
 #include <cds_sched.h>
 #include "sme_api.h"
+#include "wlan_mlme_ucfg_api.h"
 
 #define WLAN_HDD_MAX_DSCP 0x3f
 
@@ -1015,6 +1016,12 @@ static void __hdd_wmm_do_implicit_qos(struct work_struct *work)
 	struct sme_qos_wmmtspecinfo qosInfo;
 	struct hdd_context *hdd_ctx;
 	mac_handle_t mac_handle;
+	QDF_STATUS status = QDF_STATUS_SUCCESS;
+	uint8_t dir_ac = 0;
+	uint16_t nom_msdu_size_ac = 0;
+	uint32_t rate_ac = 0;
+	uint16_t sba_ac = 0;
+	uint32_t uapsd_value = 0;
 
 	hdd_debug("Entered, context %pK", pQosContext);
 
@@ -1059,22 +1066,64 @@ static void __hdd_wmm_do_implicit_qos(struct work_struct *work)
 				((WLAN_HDD_GET_CTX(adapter))->config->
 				 UapsdMask & SME_QOS_UAPSD_VO) ? 1 : 0;
 		}
-		qosInfo.ts_info.direction =
-			(WLAN_HDD_GET_CTX(adapter))->config->InfraDirAcVo;
+		status = ucfg_mlme_get_wmm_dir_ac_vo(hdd_ctx->psoc,
+						     &dir_ac);
+		if (!QDF_IS_STATUS_SUCCESS(status)) {
+			hdd_err("Get infra_dir_ac_vo failed");
+			return;
+		}
+		qosInfo.ts_info.direction = dir_ac;
+
 		qosInfo.ts_info.tid = 255;
-		qosInfo.mean_data_rate =
-			(WLAN_HDD_GET_CTX(adapter))->config->
-			InfraMeanDataRateAcVo;
-		qosInfo.min_phy_rate =
-			(WLAN_HDD_GET_CTX(adapter))->config->InfraMinPhyRateAcVo;
-		qosInfo.min_service_interval =
-			(WLAN_HDD_GET_CTX(adapter))->config->InfraUapsdVoSrvIntv;
-		qosInfo.nominal_msdu_size =
-			(WLAN_HDD_GET_CTX(adapter))->config->InfraNomMsduSizeAcVo;
-		qosInfo.surplus_bw_allowance =
-			(WLAN_HDD_GET_CTX(adapter))->config->InfraSbaAcVo;
-		qosInfo.suspension_interval =
-			(WLAN_HDD_GET_CTX(adapter))->config->InfraUapsdVoSuspIntv;
+
+		status = ucfg_mlme_get_wmm_uapsd_vo_srv_intv(hdd_ctx->psoc,
+							     &uapsd_value);
+		if (QDF_IS_STATUS_ERROR(status)) {
+			hdd_err("Get uapsd_srv_intv failed");
+			return;
+		}
+		qosInfo.min_service_interval = uapsd_value;
+
+		status = ucfg_mlme_get_wmm_uapsd_vo_sus_intv(hdd_ctx->psoc,
+							     &uapsd_value);
+		if (QDF_IS_STATUS_ERROR(status)) {
+			hdd_err("Get uapsd_vo_sus_intv failed");
+			return;
+		}
+		qosInfo.suspension_interval = uapsd_value;
+
+		status = ucfg_mlme_get_wmm_mean_data_rate_ac_vo(hdd_ctx->psoc,
+								&rate_ac);
+		if (QDF_IS_STATUS_ERROR(status)) {
+			hdd_err("Get mean_data_rate_ac_vo failed");
+			return;
+		}
+		qosInfo.mean_data_rate = rate_ac;
+
+		status = ucfg_mlme_get_wmm_min_phy_rate_ac_vo(hdd_ctx->psoc,
+							      &rate_ac);
+		if (QDF_IS_STATUS_ERROR(status)) {
+			hdd_err("Get min_phy_rate_ac_vo failed");
+			return;
+		}
+		qosInfo.min_phy_rate = rate_ac;
+
+		status = ucfg_mlme_get_wmm_nom_msdu_size_ac_vo(hdd_ctx->psoc,
+							     &nom_msdu_size_ac);
+		if (QDF_IS_STATUS_ERROR(status)) {
+			hdd_err("Get nom_msdu_size_ac_vo failed");
+			return;
+		}
+		qosInfo.nominal_msdu_size = nom_msdu_size_ac;
+
+		status = ucfg_mlme_get_wmm_sba_ac_vo(hdd_ctx->psoc,
+						     &sba_ac);
+		if (!QDF_IS_STATUS_SUCCESS(status)) {
+			hdd_err("Get sba_ac_vo failed");
+			return;
+		}
+		qosInfo.surplus_bw_allowance = sba_ac;
+
 		break;
 	case SME_AC_VI:
 		qosInfo.ts_info.up = SME_QOS_WMM_UP_VI;
@@ -1818,6 +1867,8 @@ QDF_STATUS hdd_wmm_assoc(struct hdd_adapter *adapter,
 {
 	uint8_t uapsdMask;
 	QDF_STATUS status;
+	uint32_t srv_value = 0;
+	uint32_t sus_value = 0;
 	struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(adapter);
 
 	/* when we associate we need to notify TL if it needs to
@@ -1847,15 +1898,26 @@ QDF_STATUS hdd_wmm_assoc(struct hdd_adapter *adapter,
 	hdd_debug("U-APSD mask is 0x%02x", (int)uapsdMask);
 
 	if (uapsdMask & HDD_AC_VO) {
-		status =
-			sme_enable_uapsd_for_ac((WLAN_HDD_GET_STATION_CTX_PTR
-							    (adapter))->conn_info.staId[0],
-						   SME_AC_VO, 7, 7,
-						   hdd_ctx->config->InfraUapsdVoSrvIntv,
-						   hdd_ctx->config->InfraUapsdVoSuspIntv,
-						   SME_QOS_WMM_TS_DIR_BOTH, 1,
-						   adapter->session_id,
-						   hdd_ctx->config->DelayedTriggerFrmInt);
+		status = ucfg_mlme_get_wmm_uapsd_vo_srv_intv(hdd_ctx->psoc,
+							     &srv_value);
+		if (QDF_IS_STATUS_ERROR(status)) {
+			hdd_err("Get uapsd_srv_intv failed");
+			return QDF_STATUS_SUCCESS;
+		}
+		status = ucfg_mlme_get_wmm_uapsd_vo_sus_intv(hdd_ctx->psoc,
+							     &sus_value);
+		if (QDF_IS_STATUS_ERROR(status)) {
+			hdd_err("Get uapsd_vo_sus_intv failed");
+			return QDF_STATUS_SUCCESS;
+		}
+
+		status = sme_enable_uapsd_for_ac(
+				(WLAN_HDD_GET_STATION_CTX_PTR(
+				adapter))->conn_info.staId[0],
+				SME_AC_VO, 7, 7, srv_value, sus_value,
+				SME_QOS_WMM_TS_DIR_BOTH, 1,
+				adapter->session_id,
+				hdd_ctx->config->DelayedTriggerFrmInt);
 
 		QDF_ASSERT(QDF_IS_STATUS_SUCCESS(status));
 	}
@@ -2020,6 +2082,9 @@ QDF_STATUS hdd_wmm_get_uapsd_mask(struct hdd_adapter *adapter,
 				  uint8_t *pUapsdMask)
 {
 	uint8_t uapsdMask;
+	QDF_STATUS status;
+	struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(adapter);
+	uint32_t uapsd_value = 0;
 
 	if (HDD_WMM_USER_MODE_NO_QOS ==
 	    (WLAN_HDD_GET_CTX(adapter))->config->WmmMode) {
@@ -2030,11 +2095,16 @@ QDF_STATUS hdd_wmm_get_uapsd_mask(struct hdd_adapter *adapter,
 		uapsdMask = (WLAN_HDD_GET_CTX(adapter))->config->UapsdMask;
 
 		/* disable UAPSD for any ACs with a 0 Service Interval */
-		if ((WLAN_HDD_GET_CTX(adapter))->config->
-		    InfraUapsdVoSrvIntv == 0) {
-			uapsdMask &= ~HDD_AC_VO;
+		status = ucfg_mlme_get_wmm_uapsd_vo_srv_intv(hdd_ctx->psoc,
+							     &uapsd_value);
+		if (QDF_IS_STATUS_ERROR(status)) {
+			hdd_err("Get uapsd_srv_intv failed");
+			return QDF_STATUS_E_FAILURE;
 		}
 
+		if (uapsd_value == 0)
+			uapsdMask &= ~HDD_AC_VO;
+
 		if ((WLAN_HDD_GET_CTX(adapter))->config->
 		    InfraUapsdViSrvIntv == 0) {
 			uapsdMask &= ~HDD_AC_VI;

+ 3 - 3
core/mac/src/pe/lim/lim_process_cfg_updates.c

@@ -307,10 +307,10 @@ static void lim_update_config(tpAniSirGlobal pMac, tpPESession psessionEntry)
 	if (LIM_IS_AP_ROLE(psessionEntry) ||
 		LIM_IS_IBSS_ROLE(psessionEntry)) {
 		enabled = pMac->mlme_cfg->wmm_params.wme_enabled;
-		psessionEntry->limWmeEnabled = (enabled) ? 1 : 0;
+		psessionEntry->limWmeEnabled = enabled;
 	}
 	enabled = pMac->mlme_cfg->wmm_params.wsm_enabled;
-	psessionEntry->limWsmEnabled = (enabled) ? 1 : 0;
+	psessionEntry->limWsmEnabled = enabled;
 
 	if ((!psessionEntry->limWmeEnabled) && (psessionEntry->limWsmEnabled)) {
 		pe_err("Can't enable WSM without WME");
@@ -319,7 +319,7 @@ static void lim_update_config(tpAniSirGlobal pMac, tpPESession psessionEntry)
 	/* In STA , this parameter is filled during the join request */
 	if (LIM_IS_AP_ROLE(psessionEntry) || LIM_IS_IBSS_ROLE(psessionEntry)) {
 		enabled = pMac->mlme_cfg->wmm_params.qos_enabled;
-		psessionEntry->limQosEnabled = (enabled) ? 1 : 0;
+		psessionEntry->limQosEnabled = enabled;
 	}
 	psessionEntry->limHcfEnabled = pMac->mlme_cfg->feature_flags.enable_hcf;