Kaynağa Gözat

qcacld-3.0: Add EDCA mlme cfg API

Add mlme cfg api functions to get EDCA parameters.
Also remove the legacy CFG item definitions.

Change-Id: I075240279e2cf3fda4424b77b7cfcf50ac9619f4
CRs-Fixed: 2316205
Pragaspathi Thilagaraj 6 yıl önce
ebeveyn
işleme
fe1efeccfc

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

@@ -146,6 +146,18 @@ static void mlme_init_generic_cfg(struct wlan_objmgr_psoc *psoc,
 
 static void mlme_init_edca_ani_cfg(struct wlan_mlme_edca_params *edca_params)
 {
+	/* initialize the max allowed array length for read/write */
+	edca_params->ani_acbe_l.max_len = CFG_EDCA_DATA_LEN;
+	edca_params->ani_acbk_l.max_len = CFG_EDCA_DATA_LEN;
+	edca_params->ani_acvi_l.max_len = CFG_EDCA_DATA_LEN;
+	edca_params->ani_acvo_l.max_len = CFG_EDCA_DATA_LEN;
+
+	edca_params->ani_acbe_b.max_len = CFG_EDCA_DATA_LEN;
+	edca_params->ani_acbk_b.max_len = CFG_EDCA_DATA_LEN;
+	edca_params->ani_acvi_b.max_len = CFG_EDCA_DATA_LEN;
+	edca_params->ani_acvo_b.max_len = CFG_EDCA_DATA_LEN;
+
+	/* parse the ETSI edca parameters from cfg string for BK,BE,VI,VO ac */
 	qdf_uint8_array_parse(cfg_default(CFG_EDCA_ANI_ACBK_LOCAL),
 			      edca_params->ani_acbk_l.data,
 			      CFG_EDCA_DATA_LEN,
@@ -189,6 +201,18 @@ static void mlme_init_edca_ani_cfg(struct wlan_mlme_edca_params *edca_params)
 
 static void mlme_init_edca_wme_cfg(struct wlan_mlme_edca_params *edca_params)
 {
+	/* initialize the max allowed array length for read/write */
+	edca_params->wme_acbk_l.max_len = CFG_EDCA_DATA_LEN;
+	edca_params->wme_acbe_l.max_len = CFG_EDCA_DATA_LEN;
+	edca_params->wme_acvi_l.max_len = CFG_EDCA_DATA_LEN;
+	edca_params->wme_acvo_l.max_len = CFG_EDCA_DATA_LEN;
+
+	edca_params->wme_acbk_b.max_len = CFG_EDCA_DATA_LEN;
+	edca_params->wme_acbe_b.max_len = CFG_EDCA_DATA_LEN;
+	edca_params->wme_acvi_b.max_len = CFG_EDCA_DATA_LEN;
+	edca_params->wme_acvo_b.max_len = CFG_EDCA_DATA_LEN;
+
+	/* parse the WME edca parameters from cfg string for BK,BE,VI,VO ac */
 	qdf_uint8_array_parse(cfg_default(CFG_EDCA_WME_ACBK_LOCAL),
 			      edca_params->wme_acbk_l.data,
 			      CFG_EDCA_DATA_LEN,
@@ -232,6 +256,18 @@ static void mlme_init_edca_wme_cfg(struct wlan_mlme_edca_params *edca_params)
 
 static void mlme_init_edca_etsi_cfg(struct wlan_mlme_edca_params *edca_params)
 {
+	/* initialize the max allowed array length for read/write */
+	edca_params->etsi_acbe_l.max_len = CFG_EDCA_DATA_LEN;
+	edca_params->etsi_acbk_l.max_len = CFG_EDCA_DATA_LEN;
+	edca_params->etsi_acvi_l.max_len = CFG_EDCA_DATA_LEN;
+	edca_params->etsi_acvo_l.max_len = CFG_EDCA_DATA_LEN;
+
+	edca_params->etsi_acbe_b.max_len = CFG_EDCA_DATA_LEN;
+	edca_params->etsi_acbk_b.max_len = CFG_EDCA_DATA_LEN;
+	edca_params->etsi_acvi_b.max_len = CFG_EDCA_DATA_LEN;
+	edca_params->etsi_acvo_b.max_len = CFG_EDCA_DATA_LEN;
+
+	/* parse the ETSI edca parameters from cfg string for BK,BE,VI,VO ac */
 	qdf_uint8_array_parse(cfg_default(CFG_EDCA_ETSI_ACBK_LOCAL),
 			      edca_params->etsi_acbk_l.data,
 			      CFG_EDCA_DATA_LEN,

+ 35 - 1
components/mlme/dispatcher/inc/wlan_mlme_api.h

@@ -25,9 +25,43 @@
 #include <wlan_mlme_public_struct.h>
 #include <wlan_objmgr_psoc_obj.h>
 #include <wlan_cmn.h>
-
 #include "sme_api.h"
 
+/**
+ * wlan_mlme_get_cfg_str() - Copy the uint8_t array for a particular CFG
+ * @dst:       pointer to the destination buffer.
+ * @cfg_str:   pointer to the cfg string structure
+ * @len:       length to be copied
+ *
+ * Return: QDF_STATUS_SUCCESS or QDF_STATUS_E_FAILURE
+ */
+QDF_STATUS wlan_mlme_get_cfg_str(uint8_t *dst, struct mlme_cfg_str *cfg_str,
+				 qdf_size_t *len);
+
+/**
+ * wlan_mlme_set_cfg_str() - Set values for a particular CFG
+ * @src:            pointer to the source buffer.
+ * @dst_cfg_str:    pointer to the cfg string structure to be modified
+ * @len:            length to be written
+ *
+ * Return: QDF_STATUS_SUCCESS or QDF_STATUS_E_FAILURE
+ */
+QDF_STATUS wlan_mlme_set_cfg_str(uint8_t *src, struct mlme_cfg_str *dst_cfg_str,
+				 qdf_size_t len);
+
+/**
+ * wlan_mlme_get_edca_params() - get the EDCA parameters corresponding to the
+ * edca profile access category
+ * @edca_params:   pointer to mlme edca parameters structure
+ * @data:          data to which the parameter is to be copied
+ * @edca_ac:       edca ac type enum passed to get the cfg value
+ *
+ * Return QDF_STATUS_SUCCESS or QDF_STATUS_E_FAILURE
+ *
+ */
+QDF_STATUS wlan_mlme_get_edca_params(struct wlan_mlme_edca_params *edca_params,
+				     uint8_t *data, enum e_edca_type edca_ac);
+
 /**
  * wlan_mlme_get_ht_cap_info() - Get the HT cap info config
  * @psoc: pointer to psoc object

+ 34 - 19
components/mlme/dispatcher/inc/wlan_mlme_public_struct.h

@@ -28,17 +28,20 @@
 #define CFG_PMKID_MODES_OKC                        (0x1)
 #define CFG_PMKID_MODES_PMKSA_CACHING              (0x2)
 
-#define CFG_EDCA_DATA_LEN 17
+#define CFG_STR_DATA_LEN     17
+#define CFG_EDCA_DATA_LEN    17
 
 /**
  * struct mlme_cfg_str - generic structure for all mlme CFG string items
  *
- * @len: length of the string
+ * @max_len: maximum data length allowed
+ * @len: valid no. of elements of the data
  * @data: uint8_t array to store values
  */
 struct mlme_cfg_str {
+	qdf_size_t max_len;
 	qdf_size_t len;
-	uint8_t data[CFG_EDCA_DATA_LEN];
+	uint8_t data[CFG_STR_DATA_LEN];
 };
 
 /**
@@ -96,25 +99,37 @@ enum e_edca_type {
 	edca_etsi_acvo_bcast
 };
 
+#define CFG_EDCA_PROFILE_ACM_IDX      0
+#define CFG_EDCA_PROFILE_AIFSN_IDX    1
+#define CFG_EDCA_PROFILE_CWMINA_IDX   2
+#define CFG_EDCA_PROFILE_CWMAXA_IDX   4
+#define CFG_EDCA_PROFILE_TXOPA_IDX    6
+#define CFG_EDCA_PROFILE_CWMINB_IDX   7
+#define CFG_EDCA_PROFILE_CWMAXB_IDX   9
+#define CFG_EDCA_PROFILE_TXOPB_IDX    11
+#define CFG_EDCA_PROFILE_CWMING_IDX   12
+#define CFG_EDCA_PROFILE_CWMAXG_IDX   14
+#define CFG_EDCA_PROFILE_TXOPG_IDX    16
+
 /**
  * struct mlme_edca_params - EDCA pramaters related config items
  *
- * @ani_acbk_l: EDCA parameters for ANI local access category background
- * @ani_acbe_l: EDCA parameters for ANI local access category best effort
- * @ani_acvi_l: EDCA parameters for ANI local access category video
- * @ani_acvo_l: EDCA parameters for ANI local access category voice
- * @ani_acbk_b: EDCA parameters for ANI bcast access category background
- * @ani_acbe_b: EDCA parameters for ANI bcast access category best effort
- * @ani_acvi_b: EDCA parameters for ANI bcast access category video
- * @ani_acvo_b: EDCA parameters for ANI bcast access category voice
- * @wme_acbk_l: EDCA parameters for WME local access category background
- * @wme_acbe_l: EDCA parameters for WME local access category best effort
- * @wme_acvi_l: EDCA parameters for WME local access category video
- * @wme_acvo_l: EDCA parameters for WME local access category voice
- * @wme_acbk_b: EDCA parameters for WME bcast access category background
- * @wme_acbe_b: EDCA parameters for WME bcast access category best effort
- * @wme_acvi_b: EDCA parameters for WME bcast access category video
- * @wme_acvo_b: EDCA parameters for WME bcast access category voice
+ * @ani_acbk_l:  EDCA parameters for ANI local access category background
+ * @ani_acbe_l:  EDCA parameters for ANI local access category best effort
+ * @ani_acvi_l:  EDCA parameters for ANI local access category video
+ * @ani_acvo_l:  EDCA parameters for ANI local access category voice
+ * @ani_acbk_b:  EDCA parameters for ANI bcast access category background
+ * @ani_acbe_b:  EDCA parameters for ANI bcast access category best effort
+ * @ani_acvi_b:  EDCA parameters for ANI bcast access category video
+ * @ani_acvo_b:  EDCA parameters for ANI bcast access category voice
+ * @wme_acbk_l:  EDCA parameters for WME local access category background
+ * @wme_acbe_l:  EDCA parameters for WME local access category best effort
+ * @wme_acvi_l:  EDCA parameters for WME local access category video
+ * @wme_acvo_l:  EDCA parameters for WME local access category voice
+ * @wme_acbk_b:  EDCA parameters for WME bcast access category background
+ * @wme_acbe_b:  EDCA parameters for WME bcast access category best effort
+ * @wme_acvi_b:  EDCA parameters for WME bcast access category video
+ * @wme_acvo_b:  EDCA parameters for WME bcast access category voice
  * @etsi_acbk_l: EDCA parameters for ETSI local access category background
  * @etsi_acbe_l: EDCA parameters for ETSI local access category best effort
  * @etsi_acvi_l: EDCA parameters for ETSI local access category video

+ 161 - 0
components/mlme/dispatcher/src/wlan_mlme_api.c

@@ -25,6 +25,35 @@
 #include "wma_types.h"
 #include "wmi_unified.h"
 
+QDF_STATUS wlan_mlme_get_cfg_str(uint8_t *dst, struct mlme_cfg_str *cfg_str,
+				 qdf_size_t *len)
+{
+	if (*len < cfg_str->len) {
+		mlme_err("Invalid len %zd", *len);
+		return QDF_STATUS_E_INVAL;
+	}
+
+	*len = cfg_str->len;
+	qdf_mem_copy(dst, cfg_str->data, *len);
+
+	return QDF_STATUS_SUCCESS;
+}
+
+QDF_STATUS wlan_mlme_set_cfg_str(uint8_t *src, struct mlme_cfg_str *dst_cfg_str,
+				 qdf_size_t len)
+{
+	if (len > dst_cfg_str->max_len) {
+		mlme_err("Invalid len %zd (>%zd)", len,
+			 dst_cfg_str->max_len);
+		return QDF_STATUS_E_INVAL;
+	}
+
+	dst_cfg_str->len = len;
+	qdf_mem_copy(dst_cfg_str->data, src, len);
+
+	return QDF_STATUS_SUCCESS;
+}
+
 QDF_STATUS wlan_mlme_get_ht_cap_info(struct wlan_objmgr_psoc *psoc,
 				     struct mlme_ht_capabilities_info
 				     *ht_cap_info)
@@ -518,3 +547,135 @@ QDF_STATUS wlan_mlme_set_enable_bcast_probe_rsp(struct wlan_objmgr_psoc *psoc,
 	mlme_obj->cfg.oce.enable_bcast_probe_rsp = value;
 	return QDF_STATUS_SUCCESS;
 }
+
+QDF_STATUS wlan_mlme_get_edca_params(struct wlan_mlme_edca_params *edca_params,
+				     uint8_t *data, enum e_edca_type edca_ac)
+{
+	qdf_size_t len;
+
+	switch (edca_ac) {
+	case edca_ani_acbe_local:
+		len = edca_params->ani_acbe_l.len;
+		wlan_mlme_get_cfg_str(data, &edca_params->ani_acbe_l, &len);
+		break;
+
+	case edca_ani_acbk_local:
+		len = edca_params->ani_acbk_l.len;
+		wlan_mlme_get_cfg_str(data, &edca_params->ani_acbk_l, &len);
+		break;
+
+	case edca_ani_acvi_local:
+		len = edca_params->ani_acvi_l.len;
+		wlan_mlme_get_cfg_str(data, &edca_params->ani_acvi_l, &len);
+		break;
+
+	case edca_ani_acvo_local:
+		len = edca_params->ani_acvo_l.len;
+		wlan_mlme_get_cfg_str(data, &edca_params->ani_acvo_l, &len);
+		break;
+
+	case edca_ani_acbk_bcast:
+		len = edca_params->ani_acbk_b.len;
+		wlan_mlme_get_cfg_str(data, &edca_params->ani_acbk_b, &len);
+		break;
+
+	case edca_ani_acbe_bcast:
+		len = edca_params->ani_acbe_b.len;
+		wlan_mlme_get_cfg_str(data, &edca_params->ani_acbe_b, &len);
+		break;
+
+	case edca_ani_acvi_bcast:
+		len = edca_params->ani_acvi_b.len;
+		wlan_mlme_get_cfg_str(data, &edca_params->ani_acvi_b, &len);
+		break;
+
+	case edca_ani_acvo_bcast:
+		len = edca_params->ani_acvo_b.len;
+		wlan_mlme_get_cfg_str(data, &edca_params->ani_acvo_b, &len);
+		break;
+
+	case edca_wme_acbe_local:
+		len = edca_params->wme_acbe_l.len;
+		wlan_mlme_get_cfg_str(data, &edca_params->wme_acbe_l, &len);
+		break;
+
+	case edca_wme_acbk_local:
+		len = edca_params->wme_acbk_l.len;
+		wlan_mlme_get_cfg_str(data, &edca_params->wme_acbk_l, &len);
+		break;
+
+	case edca_wme_acvi_local:
+		len = edca_params->wme_acvi_l.len;
+		wlan_mlme_get_cfg_str(data, &edca_params->wme_acvi_l, &len);
+		break;
+
+	case edca_wme_acvo_local:
+		len = edca_params->wme_acvo_l.len;
+		wlan_mlme_get_cfg_str(data, &edca_params->wme_acvo_l, &len);
+		break;
+
+	case edca_wme_acbe_bcast:
+		len = edca_params->wme_acbe_b.len;
+		wlan_mlme_get_cfg_str(data, &edca_params->wme_acbe_b, &len);
+		break;
+
+	case edca_wme_acbk_bcast:
+		len = edca_params->wme_acbk_b.len;
+		wlan_mlme_get_cfg_str(data, &edca_params->wme_acbk_b, &len);
+		break;
+
+	case edca_wme_acvi_bcast:
+		len = edca_params->wme_acvi_b.len;
+		wlan_mlme_get_cfg_str(data, &edca_params->wme_acvi_b, &len);
+		break;
+
+	case edca_wme_acvo_bcast:
+		len = edca_params->wme_acvo_b.len;
+		wlan_mlme_get_cfg_str(data, &edca_params->wme_acvo_b, &len);
+		break;
+
+	case edca_etsi_acbe_local:
+		len = edca_params->etsi_acbe_l.len;
+		wlan_mlme_get_cfg_str(data, &edca_params->etsi_acbe_l, &len);
+		break;
+
+	case edca_etsi_acbk_local:
+		len = edca_params->etsi_acbk_l.len;
+		wlan_mlme_get_cfg_str(data, &edca_params->etsi_acbk_l, &len);
+		break;
+
+	case edca_etsi_acvi_local:
+		len = edca_params->etsi_acvi_l.len;
+		wlan_mlme_get_cfg_str(data, &edca_params->etsi_acvi_l, &len);
+		break;
+
+	case edca_etsi_acvo_local:
+		len = edca_params->etsi_acvo_l.len;
+		wlan_mlme_get_cfg_str(data, &edca_params->etsi_acvo_l, &len);
+		break;
+
+	case edca_etsi_acbe_bcast:
+		len = edca_params->etsi_acbe_b.len;
+		wlan_mlme_get_cfg_str(data, &edca_params->etsi_acbe_b, &len);
+		break;
+
+	case edca_etsi_acbk_bcast:
+		len = edca_params->etsi_acbk_b.len;
+		wlan_mlme_get_cfg_str(data, &edca_params->etsi_acbk_b, &len);
+		break;
+
+	case edca_etsi_acvi_bcast:
+		len = edca_params->etsi_acvi_b.len;
+		wlan_mlme_get_cfg_str(data, &edca_params->etsi_acvi_b, &len);
+		break;
+
+	case edca_etsi_acvo_bcast:
+		len = edca_params->etsi_acvo_b.len;
+		wlan_mlme_get_cfg_str(data, &edca_params->etsi_acvo_b, &len);
+		break;
+	default:
+		mlme_err("Invalid edca access category");
+		return QDF_STATUS_E_INVAL;
+	}
+	return QDF_STATUS_SUCCESS;
+}

+ 0 - 59
core/mac/inc/wni_cfg.h

@@ -84,22 +84,6 @@ enum {
 	WNI_CFG_MAX_SP_LENGTH,
 	WNI_CFG_WSM_ENABLED,
 	WNI_CFG_EDCA_PROFILE,
-	WNI_CFG_EDCA_ANI_ACBK_LOCAL,
-	WNI_CFG_EDCA_ANI_ACBE_LOCAL,
-	WNI_CFG_EDCA_ANI_ACVI_LOCAL,
-	WNI_CFG_EDCA_ANI_ACVO_LOCAL,
-	WNI_CFG_EDCA_ANI_ACBK,
-	WNI_CFG_EDCA_ANI_ACBE,
-	WNI_CFG_EDCA_ANI_ACVI,
-	WNI_CFG_EDCA_ANI_ACVO,
-	WNI_CFG_EDCA_WME_ACBK_LOCAL,
-	WNI_CFG_EDCA_WME_ACBE_LOCAL,
-	WNI_CFG_EDCA_WME_ACVI_LOCAL,
-	WNI_CFG_EDCA_WME_ACVO_LOCAL,
-	WNI_CFG_EDCA_WME_ACBK,
-	WNI_CFG_EDCA_WME_ACBE,
-	WNI_CFG_EDCA_WME_ACVI,
-	WNI_CFG_EDCA_WME_ACVO,
 	WNI_CFG_LOCAL_POWER_CONSTRAINT,
 	WNI_CFG_ADMIT_POLICY,
 	WNI_CFG_ADMIT_BWFACTOR,
@@ -287,14 +271,6 @@ enum {
 	WNI_CFG_SAP_MAX_MCS_DATA,
 	WNI_CFG_RATE_FOR_TX_MGMT_2G,
 	WNI_CFG_RATE_FOR_TX_MGMT_5G,
-	WNI_CFG_EDCA_ETSI_ACBK_LOCAL,
-	WNI_CFG_EDCA_ETSI_ACBE_LOCAL,
-	WNI_CFG_EDCA_ETSI_ACVI_LOCAL,
-	WNI_CFG_EDCA_ETSI_ACVO_LOCAL,
-	WNI_CFG_EDCA_ETSI_ACBK,
-	WNI_CFG_EDCA_ETSI_ACBE,
-	WNI_CFG_EDCA_ETSI_ACVI,
-	WNI_CFG_EDCA_ETSI_ACVO,
 	WNI_CFG_OBSS_DETECTION_OFFLOAD,
 	WNI_CFG_OBSS_COLOR_COLLISION_OFFLOAD,
 	WNI_CFG_TWT_REQUESTOR,
@@ -327,30 +303,6 @@ enum {
 #define WNI_CFG_MAX_TX_POWER_2_4_LEN    128
 #define WNI_CFG_MAX_TX_POWER_5_LEN    128
 #define WNI_CFG_COUNTRY_CODE_LEN    3
-#define WNI_CFG_EDCA_ANI_ACBK_LOCAL_LEN    20
-#define WNI_CFG_EDCA_ANI_ACBE_LOCAL_LEN    20
-#define WNI_CFG_EDCA_ANI_ACVI_LOCAL_LEN    20
-#define WNI_CFG_EDCA_ANI_ACVO_LOCAL_LEN    20
-#define WNI_CFG_EDCA_ANI_ACBK_LEN    20
-#define WNI_CFG_EDCA_ANI_ACBE_LEN    20
-#define WNI_CFG_EDCA_ANI_ACVI_LEN    20
-#define WNI_CFG_EDCA_ANI_ACVO_LEN    20
-#define WNI_CFG_EDCA_WME_ACBK_LOCAL_LEN    20
-#define WNI_CFG_EDCA_WME_ACBE_LOCAL_LEN    20
-#define WNI_CFG_EDCA_WME_ACVI_LOCAL_LEN    20
-#define WNI_CFG_EDCA_WME_ACVO_LOCAL_LEN    20
-#define WNI_CFG_EDCA_WME_ACBK_LEN    20
-#define WNI_CFG_EDCA_WME_ACBE_LEN    20
-#define WNI_CFG_EDCA_WME_ACVI_LEN    20
-#define WNI_CFG_EDCA_WME_ACVO_LEN    20
-#define WNI_CFG_EDCA_ETSI_ACBK_LOCAL_LEN    20
-#define WNI_CFG_EDCA_ETSI_ACBE_LOCAL_LEN    20
-#define WNI_CFG_EDCA_ETSI_ACVI_LOCAL_LEN    20
-#define WNI_CFG_EDCA_ETSI_ACVO_LOCAL_LEN    20
-#define WNI_CFG_EDCA_ETSI_ACBK_LEN    20
-#define WNI_CFG_EDCA_ETSI_ACBE_LEN    20
-#define WNI_CFG_EDCA_ETSI_ACVI_LEN    20
-#define WNI_CFG_EDCA_ETSI_ACVO_LEN    20
 #define WNI_CFG_SCAN_CONTROL_LIST_LEN    128
 #define WNI_CFG_SUPPORTED_MCS_SET_LEN    16
 #define WNI_CFG_BASIC_MCS_SET_LEN    16
@@ -668,17 +620,6 @@ enum {
 #define WNI_CFG_EDCA_PROFILE_TIT_DEMO    2
 #define WNI_CFG_EDCA_PROFILE_ETSI_EUROPE   3
 #define WNI_CFG_EDCA_PROFILE_MAX    4
-#define WNI_CFG_EDCA_PROFILE_ACM_IDX    0
-#define WNI_CFG_EDCA_PROFILE_AIFSN_IDX    1
-#define WNI_CFG_EDCA_PROFILE_CWMINA_IDX    2
-#define WNI_CFG_EDCA_PROFILE_CWMAXA_IDX    4
-#define WNI_CFG_EDCA_PROFILE_TXOPA_IDX    6
-#define WNI_CFG_EDCA_PROFILE_CWMINB_IDX    7
-#define WNI_CFG_EDCA_PROFILE_CWMAXB_IDX    9
-#define WNI_CFG_EDCA_PROFILE_TXOPB_IDX    11
-#define WNI_CFG_EDCA_PROFILE_CWMING_IDX    12
-#define WNI_CFG_EDCA_PROFILE_CWMAXG_IDX    14
-#define WNI_CFG_EDCA_PROFILE_TXOPG_IDX    16
 
 #define WNI_CFG_LOCAL_POWER_CONSTRAINT_STAMIN    0
 #define WNI_CFG_LOCAL_POWER_CONSTRAINT_STAMAX    255

+ 0 - 24
core/mac/src/cfg/cfg_param_name.c

@@ -99,22 +99,6 @@ const char *cfg_get_string(uint16_t cfg_id)
 	CASE_RETURN_STRING(WNI_CFG_MAX_SP_LENGTH);
 	CASE_RETURN_STRING(WNI_CFG_WSM_ENABLED);
 	CASE_RETURN_STRING(WNI_CFG_EDCA_PROFILE);
-	CASE_RETURN_STRING(WNI_CFG_EDCA_ANI_ACBK_LOCAL);
-	CASE_RETURN_STRING(WNI_CFG_EDCA_ANI_ACBE_LOCAL);
-	CASE_RETURN_STRING(WNI_CFG_EDCA_ANI_ACVI_LOCAL);
-	CASE_RETURN_STRING(WNI_CFG_EDCA_ANI_ACVO_LOCAL);
-	CASE_RETURN_STRING(WNI_CFG_EDCA_ANI_ACBK);
-	CASE_RETURN_STRING(WNI_CFG_EDCA_ANI_ACBE);
-	CASE_RETURN_STRING(WNI_CFG_EDCA_ANI_ACVI);
-	CASE_RETURN_STRING(WNI_CFG_EDCA_ANI_ACVO);
-	CASE_RETURN_STRING(WNI_CFG_EDCA_WME_ACBK_LOCAL);
-	CASE_RETURN_STRING(WNI_CFG_EDCA_WME_ACBE_LOCAL);
-	CASE_RETURN_STRING(WNI_CFG_EDCA_WME_ACVI_LOCAL);
-	CASE_RETURN_STRING(WNI_CFG_EDCA_WME_ACVO_LOCAL);
-	CASE_RETURN_STRING(WNI_CFG_EDCA_WME_ACBK);
-	CASE_RETURN_STRING(WNI_CFG_EDCA_WME_ACBE);
-	CASE_RETURN_STRING(WNI_CFG_EDCA_WME_ACVI);
-	CASE_RETURN_STRING(WNI_CFG_EDCA_WME_ACVO);
 	CASE_RETURN_STRING(WNI_CFG_LOCAL_POWER_CONSTRAINT);
 	CASE_RETURN_STRING(WNI_CFG_ADMIT_POLICY);
 	CASE_RETURN_STRING(WNI_CFG_ADMIT_BWFACTOR);
@@ -294,14 +278,6 @@ const char *cfg_get_string(uint16_t cfg_id)
 	CASE_RETURN_STRING(WNI_CFG_SAP_MAX_MCS_DATA);
 	CASE_RETURN_STRING(WNI_CFG_RATE_FOR_TX_MGMT_2G);
 	CASE_RETURN_STRING(WNI_CFG_RATE_FOR_TX_MGMT_5G);
-	CASE_RETURN_STRING(WNI_CFG_EDCA_ETSI_ACBK_LOCAL);
-	CASE_RETURN_STRING(WNI_CFG_EDCA_ETSI_ACBE_LOCAL);
-	CASE_RETURN_STRING(WNI_CFG_EDCA_ETSI_ACVI_LOCAL);
-	CASE_RETURN_STRING(WNI_CFG_EDCA_ETSI_ACVO_LOCAL);
-	CASE_RETURN_STRING(WNI_CFG_EDCA_ETSI_ACBK);
-	CASE_RETURN_STRING(WNI_CFG_EDCA_ETSI_ACBE);
-	CASE_RETURN_STRING(WNI_CFG_EDCA_ETSI_ACVI);
-	CASE_RETURN_STRING(WNI_CFG_EDCA_ETSI_ACVO);
 	CASE_RETURN_STRING(WNI_CFG_OBSS_DETECTION_OFFLOAD);
 	CASE_RETURN_STRING(WNI_CFG_OBSS_COLOR_COLLISION_OFFLOAD);
 	CASE_RETURN_STRING(WNI_CFG_TWT_REQUESTOR);

+ 0 - 189
core/mac/src/cfg/cfg_proc_msg.c

@@ -310,54 +310,6 @@ cgstatic cfg_static[CFG_PARAM_MAX_NUM] = {
 	WNI_CFG_EDCA_PROFILE_STAMIN,
 	WNI_CFG_EDCA_PROFILE_STAMAX,
 	WNI_CFG_EDCA_PROFILE_STADEF},
-	{WNI_CFG_EDCA_ANI_ACBK_LOCAL,
-	CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_RESTART,
-	0, 0, 0},
-	{WNI_CFG_EDCA_ANI_ACBE_LOCAL,
-	CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_RESTART,
-	0, 0, 0},
-	{WNI_CFG_EDCA_ANI_ACVI_LOCAL,
-	CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_RESTART,
-	0, 0, 0},
-	{WNI_CFG_EDCA_ANI_ACVO_LOCAL,
-	CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_RESTART,
-	0, 0, 0},
-	{WNI_CFG_EDCA_ANI_ACBK,
-	CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_RESTART,
-	0, 0, 0},
-	{WNI_CFG_EDCA_ANI_ACBE,
-	CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_RESTART,
-	0, 0, 0},
-	{WNI_CFG_EDCA_ANI_ACVI,
-	CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_RESTART,
-	0, 0, 0},
-	{WNI_CFG_EDCA_ANI_ACVO,
-	CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_RESTART,
-	0, 0, 0},
-	{WNI_CFG_EDCA_WME_ACBK_LOCAL,
-	CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_RESTART,
-	0, 0, 0},
-	{WNI_CFG_EDCA_WME_ACBE_LOCAL,
-	CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_RESTART,
-	0, 0, 0},
-	{WNI_CFG_EDCA_WME_ACVI_LOCAL,
-	CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_RESTART,
-	0, 0, 0},
-	{WNI_CFG_EDCA_WME_ACVO_LOCAL,
-	CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_RESTART,
-	0, 0, 0},
-	{WNI_CFG_EDCA_WME_ACBK,
-	CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_RESTART,
-	0, 0, 0},
-	{WNI_CFG_EDCA_WME_ACBE,
-	CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_RESTART,
-	0, 0, 0},
-	{WNI_CFG_EDCA_WME_ACVI,
-	CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_RESTART,
-	0, 0, 0},
-	{WNI_CFG_EDCA_WME_ACVO,
-	CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_RESTART,
-	0, 0, 0},
 	{WNI_CFG_LOCAL_POWER_CONSTRAINT,
 	CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_INT |
 	CFG_CTL_RESTART,
@@ -1279,30 +1231,6 @@ cgstatic cfg_static[CFG_PARAM_MAX_NUM] = {
 	WNI_CFG_RATE_FOR_TX_MGMT_5G_STAMIN,
 	WNI_CFG_RATE_FOR_TX_MGMT_5G_STAMAX,
 	WNI_CFG_RATE_FOR_TX_MGMT_5G_STADEF},
-	{WNI_CFG_EDCA_ETSI_ACBK_LOCAL,
-	 CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_RESTART,
-	 0, 0, 0},
-	{WNI_CFG_EDCA_ETSI_ACBE_LOCAL,
-	 CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_RESTART,
-	 0, 0, 0},
-	{WNI_CFG_EDCA_ETSI_ACVI_LOCAL,
-	 CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_RESTART,
-	 0, 0, 0},
-	{WNI_CFG_EDCA_ETSI_ACVO_LOCAL,
-	 CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_RESTART,
-	 0, 0, 0},
-	{WNI_CFG_EDCA_ETSI_ACBK,
-	 CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_RESTART,
-	 0, 0, 0},
-	{WNI_CFG_EDCA_ETSI_ACBE,
-	 CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_RESTART,
-	 0, 0, 0},
-	{WNI_CFG_EDCA_ETSI_ACVI,
-	 CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_RESTART,
-	 0, 0, 0},
-	{WNI_CFG_EDCA_ETSI_ACVO,
-	 CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_RESTART,
-	 0, 0, 0},
 	{WNI_CFG_OBSS_DETECTION_OFFLOAD,
 	 CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_INT,
 	 0, 1, 0},
@@ -1406,83 +1334,6 @@ cfgstatic_string cfg_static_string[CFG_MAX_STATIC_STRING] = {
 	WNI_CFG_COUNTRY_CODE_LEN,
 	0,
 	{0} },
-	{WNI_CFG_EDCA_ANI_ACBK_LOCAL,
-	WNI_CFG_EDCA_ANI_ACBK_LOCAL_LEN,
-	17,
-	{0x0, 0x7, 0x0, 0xf, 0x3, 0xff, 0x0, 0x0, 0x1f, 0x3, 0xff, 0x0, 0x0,
-	 0xf, 0x3, 0xff, 0x0} },
-	{WNI_CFG_EDCA_ANI_ACBE_LOCAL,
-	WNI_CFG_EDCA_ANI_ACBE_LOCAL_LEN,
-	17,
-	{0x0, 0x2, 0x0, 0xf, 0x3, 0xff, 0x64, 0x0, 0x1f, 0x3, 0xff, 0x64, 0x0,
-	 0xf, 0x3, 0xff, 0x64} },
-	{WNI_CFG_EDCA_ANI_ACVI_LOCAL,
-	WNI_CFG_EDCA_ANI_ACVI_LOCAL_LEN,
-	17,
-	{0x0, 0x2, 0x0, 0x7, 0x0, 0xf, 0xc8, 0x0, 0xf, 0x0, 0x1f, 0xbc, 0x0,
-	 0x7, 0x0, 0xf, 0xc8} },
-	{WNI_CFG_EDCA_ANI_ACVO_LOCAL,
-	WNI_CFG_EDCA_ANI_ACVO_LOCAL_LEN,
-	17,
-	{0x0, 0x2, 0x0, 0x3, 0x0, 0x7, 0x64, 0x0, 0x7, 0x0, 0xf, 0x66, 0x0,
-	 0x3, 0x0, 0x7, 0x64} },
-	{WNI_CFG_EDCA_ANI_ACBK,
-	WNI_CFG_EDCA_ANI_ACBK_LEN,
-	17,
-	{0x0, 0x7, 0x0, 0xf, 0x3, 0xff, 0x0, 0x0, 0x1f, 0x3, 0xff, 0x0, 0x0,
-	 0xf, 0x3, 0xff, 0x0} },
-	{WNI_CFG_EDCA_ANI_ACBE,
-	WNI_CFG_EDCA_ANI_ACBE_LEN,
-	17,
-	{0x0, 0x2, 0x0, 0xf, 0x3, 0xff, 0x64, 0x0, 0x1f, 0x3, 0xff, 0x64, 0x0,
-	 0xf, 0x3, 0xff, 0x64} },
-	{WNI_CFG_EDCA_ANI_ACVI,
-	WNI_CFG_EDCA_ANI_ACVI_LEN,
-	17, {0x0, 0x2, 0x0, 0x7, 0x0, 0xf, 0xc8, 0x0, 0xf, 0x0, 0x1f,
-	0xbc, 0x0, 0x7, 0x0, 0xf, 0xc8} },
-	{WNI_CFG_EDCA_ANI_ACVO,
-	WNI_CFG_EDCA_ANI_ACVO_LEN,
-	17,
-	{0x0, 0x2, 0x0, 0x3, 0x0, 0x7, 0x64, 0x0, 0x7, 0x0, 0xf, 0x66, 0x0, 0x3,
-	 0x0, 0x7, 0x64} },
-	{WNI_CFG_EDCA_WME_ACBK_LOCAL,
-	WNI_CFG_EDCA_WME_ACBK_LOCAL_LEN,
-	17, {0x0, 0x7, 0x0, 0xf, 0x3, 0xff, 0x0, 0x0, 0x1f, 0x3, 0xff,
-	0x0, 0x0, 0xf, 0x3, 0xff, 0x0} },
-	{WNI_CFG_EDCA_WME_ACBE_LOCAL,
-	WNI_CFG_EDCA_WME_ACBE_LOCAL_LEN,
-	17, {0x0, 0x3, 0x0, 0xf, 0x0, 0x3f, 0x0, 0x0, 0x1f, 0x3, 0xff,
-	0x0, 0x0, 0xf, 0x0, 0x3f, 0x0} },
-	{WNI_CFG_EDCA_WME_ACVI_LOCAL,
-	WNI_CFG_EDCA_WME_ACVI_LOCAL_LEN,
-	17,
-	{0x0, 0x1, 0x0, 0x7, 0x0, 0xf, 0x5e, 0x0, 0x7, 0x0, 0xf, 0xbc, 0x0, 0x7,
-	 0x0, 0xf, 0x5e} },
-	{WNI_CFG_EDCA_WME_ACVO_LOCAL,
-	WNI_CFG_EDCA_WME_ACVO_LOCAL_LEN,
-	17,
-	{0x0, 0x1, 0x0, 0x3, 0x0, 0x7, 0x2f, 0x0, 0x3, 0x0, 0x7, 0x66, 0x0, 0x3,
-	 0x0, 0x7, 0x2f} },
-	{WNI_CFG_EDCA_WME_ACBK,
-	WNI_CFG_EDCA_WME_ACBK_LEN,
-	17,
-	{0x0, 0x7, 0x0, 0xf, 0x3, 0xff, 0x0, 0x0, 0xf, 0x3, 0xff, 0x0, 0x0, 0xf,
-	 0x3, 0xff, 0x0} },
-	{WNI_CFG_EDCA_WME_ACBE,
-	WNI_CFG_EDCA_WME_ACBE_LEN,
-	17,
-	{0x0, 0x3, 0x0, 0xf, 0x3, 0xff, 0x0, 0x0, 0xf, 0x3, 0xff, 0x0, 0x0, 0xf,
-	 0x3, 0xff, 0x0} },
-	{WNI_CFG_EDCA_WME_ACVI,
-	WNI_CFG_EDCA_WME_ACVI_LEN,
-	17,
-	{0x0, 0x2, 0x0, 0x7, 0x0, 0xf, 0x5e, 0x0, 0x7, 0x0, 0xf, 0xbc, 0x0, 0x7,
-	 0x0, 0xf, 0x5e} },
-	{WNI_CFG_EDCA_WME_ACVO,
-	WNI_CFG_EDCA_WME_ACVO_LEN,
-	17,
-	{0x0, 0x2, 0x0, 0x3, 0x0, 0x7, 0x2f, 0x0, 0x3, 0x0, 0x7, 0x66, 0x0, 0x3,
-	 0x0, 0x7, 0x2f} },
 	{WNI_CFG_SCAN_CONTROL_LIST,
 	WNI_CFG_SCAN_CONTROL_LIST_LEN,
 	114,
@@ -1524,46 +1375,6 @@ cfgstatic_string cfg_static_string[CFG_MAX_STATIC_STRING] = {
 	WNI_CFG_HE_PPET_LEN,
 	{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
 	 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0} },
-	{WNI_CFG_EDCA_ETSI_ACBK_LOCAL,
-	 WNI_CFG_EDCA_ETSI_ACBK_LOCAL_LEN,
-	 17,
-	 {0x0, 0x7, 0x0, 0xf, 0x3, 0xff, 0xbb, 0x0, 0x1f, 0x3, 0xff, 0x0, 0x0,
-	  0xf, 0x3, 0xff, 0x0} },
-	{WNI_CFG_EDCA_ETSI_ACBE_LOCAL,
-	 WNI_CFG_EDCA_ETSI_ACBE_LOCAL_LEN,
-	 17,
-	 {0x0, 0x3, 0x0, 0xf, 0x0, 0x3f, 0xbb, 0x0, 0x1f, 0x3, 0xff, 0x0, 0x0,
-	  0xf, 0x0, 0x3f, 0x0} },
-	{WNI_CFG_EDCA_ETSI_ACVI_LOCAL,
-	 WNI_CFG_EDCA_ETSI_ACVI_LOCAL_LEN,
-	 17,
-	 {0x0, 0x1, 0x0, 0x7, 0x0, 0xf, 0x7d, 0x0, 0x7, 0x0, 0xf, 0xbc, 0x0,
-	  0x7, 0x0, 0xf, 0x5e} },
-	{WNI_CFG_EDCA_ETSI_ACVO_LOCAL,
-	 WNI_CFG_EDCA_ETSI_ACVO_LOCAL_LEN,
-	 17,
-	 {0x0, 0x1, 0x0, 0x3, 0x0, 0x7, 0x3e, 0x0, 0x3, 0x0, 0x7, 0x66, 0x0,
-	  0x3, 0x0, 0x7, 0x2f} },
-	{WNI_CFG_EDCA_ETSI_ACBK,
-	 WNI_CFG_EDCA_ETSI_ACBK_LEN,
-	 17,
-	 {0x0, 0x7, 0x0, 0xf, 0x3, 0xff, 0xbb, 0x0, 0xf, 0x3, 0xff, 0x0, 0x0,
-	  0xf, 0x3, 0xff, 0x0} },
-	{WNI_CFG_EDCA_ETSI_ACBE,
-	 WNI_CFG_EDCA_ETSI_ACBE_LEN,
-	 17,
-	 {0x0, 0x3, 0x0, 0xf, 0x3, 0xff, 0xbb, 0x0, 0xf, 0x3, 0xff, 0x0, 0x0,
-	  0xf, 0x3, 0xff, 0x0} },
-	{WNI_CFG_EDCA_ETSI_ACVI,
-	 WNI_CFG_EDCA_ETSI_ACVI_LEN,
-	 17,
-	 {0x0, 0x2, 0x0, 0x7, 0x0, 0xf, 0x7d, 0x0, 0x7, 0x0, 0xf, 0xbc, 0x0,
-	  0x7, 0x0, 0xf, 0x5e} },
-	{WNI_CFG_EDCA_ETSI_ACVO,
-	 WNI_CFG_EDCA_ETSI_ACVO_LEN,
-	 17,
-	 {0x0, 0x2, 0x0, 0x3, 0x0, 0x7, 0x3e, 0x0, 0x3, 0x0, 0x7, 0x66, 0x0,
-	  0x3, 0x0, 0x7, 0x2f} },
 };
 
 /*--------------------------------------------------------------------*/

+ 119 - 137
core/mac/src/pe/sch/sch_message.c

@@ -26,6 +26,7 @@
 #include "lim_send_messages.h"
 
 #include "sch_api.h"
+#include "wlan_mlme_api.h"
 
 /* / Minimum beacon interval allowed (in Kus) */
 #define SCH_BEACON_INTERVAL_MIN  10
@@ -39,10 +40,10 @@
 /* local functions */
 static QDF_STATUS
 get_wmm_local_params(tpAniSirGlobal pMac,
-		     uint32_t params[][WNI_CFG_EDCA_ANI_ACBK_LOCAL_LEN]);
+		     uint32_t params[][CFG_EDCA_DATA_LEN]);
 static void
 set_sch_edca_params(tpAniSirGlobal pMac,
-		    uint32_t params[][WNI_CFG_EDCA_ANI_ACBK_LOCAL_LEN],
+		    uint32_t params[][CFG_EDCA_DATA_LEN],
 		    tpPESession psessionEntry);
 
 /* -------------------------------------------------------------------- */
@@ -120,31 +121,6 @@ void sch_process_message(tpAniSirGlobal pMac, struct scheduler_msg *pSchMsg)
 			sch_edca_profile_update(pMac, psessionEntry);
 			break;
 
-		case WNI_CFG_EDCA_ANI_ACBK_LOCAL:
-		case WNI_CFG_EDCA_ANI_ACBE_LOCAL:
-		case WNI_CFG_EDCA_ANI_ACVI_LOCAL:
-		case WNI_CFG_EDCA_ANI_ACVO_LOCAL:
-		case WNI_CFG_EDCA_WME_ACBK_LOCAL:
-		case WNI_CFG_EDCA_WME_ACBE_LOCAL:
-		case WNI_CFG_EDCA_WME_ACVI_LOCAL:
-		case WNI_CFG_EDCA_WME_ACVO_LOCAL:
-			if (LIM_IS_AP_ROLE(psessionEntry))
-				sch_qos_update_local(pMac, psessionEntry);
-			break;
-
-		case WNI_CFG_EDCA_ANI_ACBK:
-		case WNI_CFG_EDCA_ANI_ACBE:
-		case WNI_CFG_EDCA_ANI_ACVI:
-		case WNI_CFG_EDCA_ANI_ACVO:
-		case WNI_CFG_EDCA_WME_ACBK:
-		case WNI_CFG_EDCA_WME_ACBE:
-		case WNI_CFG_EDCA_WME_ACVI:
-		case WNI_CFG_EDCA_WME_ACVO:
-			if (LIM_IS_AP_ROLE(psessionEntry)) {
-				sch_qos_update_broadcast(pMac, psessionEntry);
-			}
-			break;
-
 		default:
 			pe_err("Cfg param %d indication not handled",
 				pSchMsg->bodyval);
@@ -157,34 +133,40 @@ void sch_process_message(tpAniSirGlobal pMac, struct scheduler_msg *pSchMsg)
 
 }
 
-/* get the local or broadcast parameters based on the profile sepcified in the config */
-/* params are delivered in this order: BK, BE, VI, VO */
+/**
+ * sch_get_params() - get the local or broadcast parameters based on the profile
+ * sepcified in the config params are delivered in this order: BE, BK, VI, VO
+ */
 static QDF_STATUS
 sch_get_params(tpAniSirGlobal pMac,
-	       uint32_t params[][WNI_CFG_EDCA_ANI_ACBK_LOCAL_LEN],
+	       uint32_t params[][CFG_EDCA_DATA_LEN],
 	       uint8_t local)
 {
 	uint32_t val;
 	uint32_t i, idx;
 	uint32_t *prf;
+	struct wlan_mlme_edca_params *edca_params;
+	QDF_STATUS status;
 	uint8_t country_code_str[WNI_CFG_COUNTRY_CODE_LEN];
 	uint32_t country_code_len = WNI_CFG_COUNTRY_CODE_LEN;
-	uint32_t ani_l[] = {
-	  WNI_CFG_EDCA_ANI_ACBE_LOCAL, WNI_CFG_EDCA_ANI_ACBK_LOCAL,
-	  WNI_CFG_EDCA_ANI_ACVI_LOCAL, WNI_CFG_EDCA_ANI_ACVO_LOCAL};
-	uint32_t wme_l[] = {
-	  WNI_CFG_EDCA_WME_ACBE_LOCAL, WNI_CFG_EDCA_WME_ACBK_LOCAL,
-	  WNI_CFG_EDCA_WME_ACVI_LOCAL, WNI_CFG_EDCA_WME_ACVO_LOCAL};
-	uint32_t etsi_l[] = {WNI_CFG_EDCA_ETSI_ACBE_LOCAL,
-			WNI_CFG_EDCA_ETSI_ACBK_LOCAL,
-			WNI_CFG_EDCA_ETSI_ACVI_LOCAL,
-			WNI_CFG_EDCA_ETSI_ACVO_LOCAL};
-	uint32_t ani_b[] = { WNI_CFG_EDCA_ANI_ACBE, WNI_CFG_EDCA_ANI_ACBK,
-			     WNI_CFG_EDCA_ANI_ACVI, WNI_CFG_EDCA_ANI_ACVO};
-	uint32_t wme_b[] = { WNI_CFG_EDCA_WME_ACBE, WNI_CFG_EDCA_WME_ACBK,
-			     WNI_CFG_EDCA_WME_ACVI, WNI_CFG_EDCA_WME_ACVO};
-	uint32_t etsi_b[] = {WNI_CFG_EDCA_ETSI_ACBE, WNI_CFG_EDCA_ETSI_ACBK,
-			WNI_CFG_EDCA_ETSI_ACVI, WNI_CFG_EDCA_ETSI_ACVO};
+	uint32_t ani_l[] = {edca_ani_acbe_local, edca_ani_acbk_local,
+			    edca_ani_acvi_local, edca_ani_acvo_local};
+
+	uint32_t wme_l[] = {edca_wme_acbe_local, edca_wme_acbk_local,
+			    edca_wme_acvi_local, edca_wme_acvo_local};
+
+	uint32_t etsi_l[] = {edca_etsi_acbe_local, edca_etsi_acbk_local,
+			     edca_etsi_acvi_local, edca_etsi_acvo_local};
+
+	uint32_t ani_b[] = {edca_ani_acbe_bcast, edca_ani_acbk_bcast,
+			    edca_ani_acvi_bcast, edca_ani_acvo_bcast};
+
+	uint32_t wme_b[] = {edca_wme_acbe_bcast, edca_wme_acbk_bcast,
+			    edca_wme_acvi_bcast, edca_wme_acvo_bcast};
+
+	uint32_t etsi_b[] = {edca_etsi_acbe_bcast, edca_etsi_acbk_bcast,
+			     edca_etsi_acvi_bcast, edca_etsi_acvo_bcast};
+	edca_params = &pMac->mlme_cfg->edca_params;
 
 	if (wlan_cfg_get_str(pMac, WNI_CFG_COUNTRY_CODE, country_code_str,
 			     &country_code_len) == QDF_STATUS_SUCCESS &&
@@ -237,21 +219,17 @@ sch_get_params(tpAniSirGlobal pMac,
 	}
 
 	for (i = 0; i < 4; i++) {
-		uint8_t data[WNI_CFG_EDCA_ANI_ACBK_LEN];
-		uint32_t len = WNI_CFG_EDCA_ANI_ACBK_LOCAL_LEN;
+		uint8_t data[CFG_EDCA_DATA_LEN];
 
-		if (wlan_cfg_get_str
-			    (pMac, (uint16_t) prf[i], (uint8_t *) &data[0],
-			    &len) != QDF_STATUS_SUCCESS) {
-			pe_err("cfgGet failed for %d", prf[i]);
-			return QDF_STATUS_E_FAILURE;
-		}
-		if (len > WNI_CFG_EDCA_ANI_ACBK_LOCAL_LEN) {
-			pe_err("cfgGet for %d: length is %d instead of %d",
-				prf[i], len, WNI_CFG_EDCA_ANI_ACBK_LOCAL_LEN);
+		status = wlan_mlme_get_edca_params(edca_params,
+						   (uint8_t *)&data[0],
+						   (uint8_t)prf[i]);
+		if (QDF_IS_STATUS_ERROR(status)) {
+			pe_err("Get failed for ac:%d", i);
 			return QDF_STATUS_E_FAILURE;
 		}
-		for (idx = 0; idx < len; idx++)
+
+		for (idx = 0; idx < CFG_EDCA_DATA_LEN; idx++)
 			params[i][idx] = (uint32_t) data[idx];
 	}
 	pe_debug("GetParams: local=%d, profile = %d Done", local, val);
@@ -327,7 +305,7 @@ broadcast_wmm_of_concurrent_sta_session(tpAniSirGlobal mac_ctx,
 
 void sch_qos_update_broadcast(tpAniSirGlobal pMac, tpPESession psessionEntry)
 {
-	uint32_t params[4][WNI_CFG_EDCA_ANI_ACBK_LOCAL_LEN];
+	uint32_t params[4][CFG_EDCA_DATA_LEN];
 	uint32_t cwminidx, cwmaxidx, txopidx;
 	uint32_t phyMode;
 	uint8_t i;
@@ -343,31 +321,31 @@ void sch_qos_update_broadcast(tpAniSirGlobal pMac, tpPESession psessionEntry)
 	pe_debug("QosUpdBcast: mode %d", phyMode);
 
 	if (phyMode == WNI_CFG_PHY_MODE_11G) {
-		cwminidx = WNI_CFG_EDCA_PROFILE_CWMING_IDX;
-		cwmaxidx = WNI_CFG_EDCA_PROFILE_CWMAXG_IDX;
-		txopidx = WNI_CFG_EDCA_PROFILE_TXOPG_IDX;
+		cwminidx = CFG_EDCA_PROFILE_CWMING_IDX;
+		cwmaxidx = CFG_EDCA_PROFILE_CWMAXG_IDX;
+		txopidx = CFG_EDCA_PROFILE_TXOPG_IDX;
 	} else if (phyMode == WNI_CFG_PHY_MODE_11B) {
-		cwminidx = WNI_CFG_EDCA_PROFILE_CWMINB_IDX;
-		cwmaxidx = WNI_CFG_EDCA_PROFILE_CWMAXB_IDX;
-		txopidx = WNI_CFG_EDCA_PROFILE_TXOPB_IDX;
+		cwminidx = CFG_EDCA_PROFILE_CWMINB_IDX;
+		cwmaxidx = CFG_EDCA_PROFILE_CWMAXB_IDX;
+		txopidx = CFG_EDCA_PROFILE_TXOPB_IDX;
 	} else {
 		/* This can happen if mode is not set yet, assume 11a mode */
-		cwminidx = WNI_CFG_EDCA_PROFILE_CWMINA_IDX;
-		cwmaxidx = WNI_CFG_EDCA_PROFILE_CWMAXA_IDX;
-		txopidx = WNI_CFG_EDCA_PROFILE_TXOPA_IDX;
+		cwminidx = CFG_EDCA_PROFILE_CWMINA_IDX;
+		cwmaxidx = CFG_EDCA_PROFILE_CWMAXA_IDX;
+		txopidx = CFG_EDCA_PROFILE_TXOPA_IDX;
 	}
 
 	for (i = 0; i < MAX_NUM_AC; i++) {
 		if (psessionEntry->gLimEdcaParamsBC[i].aci.acm !=
-			(uint8_t) params[i][WNI_CFG_EDCA_PROFILE_ACM_IDX]) {
+			(uint8_t)params[i][CFG_EDCA_PROFILE_ACM_IDX]) {
 			psessionEntry->gLimEdcaParamsBC[i].aci.acm =
-			(uint8_t) params[i][WNI_CFG_EDCA_PROFILE_ACM_IDX];
+			(uint8_t)params[i][CFG_EDCA_PROFILE_ACM_IDX];
 			updated = true;
 		}
 		if (psessionEntry->gLimEdcaParamsBC[i].aci.aifsn !=
-			(uint8_t) params[i][WNI_CFG_EDCA_PROFILE_AIFSN_IDX]) {
+			(uint8_t)params[i][CFG_EDCA_PROFILE_AIFSN_IDX]) {
 			psessionEntry->gLimEdcaParamsBC[i].aci.aifsn =
-			(uint8_t) params[i][WNI_CFG_EDCA_PROFILE_AIFSN_IDX];
+			(uint8_t)params[i][CFG_EDCA_PROFILE_AIFSN_IDX];
 			updated = true;
 		}
 		if (psessionEntry->gLimEdcaParamsBC[i].cw.min !=
@@ -383,9 +361,9 @@ void sch_qos_update_broadcast(tpAniSirGlobal pMac, tpPESession psessionEntry)
 			updated = true;
 		}
 		if (psessionEntry->gLimEdcaParamsBC[i].txoplimit !=
-			(uint16_t) params[i][txopidx]) {
+			(uint16_t)params[i][txopidx]) {
 			psessionEntry->gLimEdcaParamsBC[i].txoplimit =
-			(uint16_t) params[i][txopidx];
+			(uint16_t)params[i][txopidx];
 			updated = true;
 		}
 
@@ -416,7 +394,7 @@ void sch_qos_update_broadcast(tpAniSirGlobal pMac, tpPESession psessionEntry)
 void sch_qos_update_local(tpAniSirGlobal pMac, tpPESession psessionEntry)
 {
 
-	uint32_t params[4][WNI_CFG_EDCA_ANI_ACBK_LOCAL_LEN];
+	uint32_t params[4][CFG_EDCA_DATA_LEN];
 	QDF_STATUS status;
 
 	status = sch_get_params(pMac, params, true /*local */);
@@ -432,16 +410,17 @@ void sch_qos_update_local(tpAniSirGlobal pMac, tpPESession psessionEntry)
 			     psessionEntry->bssIdx, false);
 }
 
-/** ----------------------------------------------------------
-   \fn      sch_set_default_edca_params
-   \brief   This function sets the gLimEdcaParams to the default
- \        local wmm profile.
-   \param   tpAniSirGlobal  pMac
-   \return  none
- \ ------------------------------------------------------------ */
+/**
+ * sch_set_default_edca_params() - This function sets the gLimEdcaParams to the
+ * default local wmm profile.
+ * @pMac - Global mac context
+ * @psessionEntry - PE session
+ *
+ * return none
+ */
 void sch_set_default_edca_params(tpAniSirGlobal pMac, tpPESession psessionEntry)
 {
-	uint32_t params[4][WNI_CFG_EDCA_ANI_ACBK_LOCAL_LEN];
+	uint32_t params[4][CFG_EDCA_DATA_LEN];
 
 	if (get_wmm_local_params(pMac, params) != QDF_STATUS_SUCCESS) {
 		pe_err("get_wmm_local_params() failed");
@@ -452,16 +431,18 @@ void sch_set_default_edca_params(tpAniSirGlobal pMac, tpPESession psessionEntry)
 	return;
 }
 
-/** ----------------------------------------------------------
-   \fn      set_sch_edca_params
-   \brief   This function fills in the gLimEdcaParams structure
- \        with the given edca params.
-   \param   tpAniSirGlobal  pMac
-   \return  none
- \ ------------------------------------------------------------ */
+/**
+ * set_sch_edca_params() - This function fills in the gLimEdcaParams structure
+ * with the given edca params.
+ * @pMac - global mac context
+ * @psessionEntry - PE session
+ * @params - EDCA parameters
+ *
+ * Return  none
+ */
 static void
 set_sch_edca_params(tpAniSirGlobal pMac,
-		    uint32_t params[][WNI_CFG_EDCA_ANI_ACBK_LOCAL_LEN],
+		    uint32_t params[][CFG_EDCA_DATA_LEN],
 		    tpPESession psessionEntry)
 {
 	uint32_t i;
@@ -473,33 +454,33 @@ set_sch_edca_params(tpAniSirGlobal pMac,
 	pe_debug("lim_get_phy_mode() = %d", phyMode);
 	/* if (pMac->lim.gLimPhyMode == WNI_CFG_PHY_MODE_11G) */
 	if (phyMode == WNI_CFG_PHY_MODE_11G) {
-		cwminidx = WNI_CFG_EDCA_PROFILE_CWMING_IDX;
-		cwmaxidx = WNI_CFG_EDCA_PROFILE_CWMAXG_IDX;
-		txopidx = WNI_CFG_EDCA_PROFILE_TXOPG_IDX;
+		cwminidx = CFG_EDCA_PROFILE_CWMING_IDX;
+		cwmaxidx = CFG_EDCA_PROFILE_CWMAXG_IDX;
+		txopidx = CFG_EDCA_PROFILE_TXOPG_IDX;
 	}
 	/* else if (pMac->lim.gLimPhyMode == WNI_CFG_PHY_MODE_11B) */
 	else if (phyMode == WNI_CFG_PHY_MODE_11B) {
-		cwminidx = WNI_CFG_EDCA_PROFILE_CWMINB_IDX;
-		cwmaxidx = WNI_CFG_EDCA_PROFILE_CWMAXB_IDX;
-		txopidx = WNI_CFG_EDCA_PROFILE_TXOPB_IDX;
+		cwminidx = CFG_EDCA_PROFILE_CWMINB_IDX;
+		cwmaxidx = CFG_EDCA_PROFILE_CWMAXB_IDX;
+		txopidx = CFG_EDCA_PROFILE_TXOPB_IDX;
 	} else {
 		/* This can happen if mode is not set yet, assume 11a mode */
-		cwminidx = WNI_CFG_EDCA_PROFILE_CWMINA_IDX;
-		cwmaxidx = WNI_CFG_EDCA_PROFILE_CWMAXA_IDX;
-		txopidx = WNI_CFG_EDCA_PROFILE_TXOPA_IDX;
+		cwminidx = CFG_EDCA_PROFILE_CWMINA_IDX;
+		cwmaxidx = CFG_EDCA_PROFILE_CWMAXA_IDX;
+		txopidx = CFG_EDCA_PROFILE_TXOPA_IDX;
 	}
 
 	for (i = 0; i < MAX_NUM_AC; i++) {
 		psessionEntry->gLimEdcaParams[i].aci.acm =
-			(uint8_t) params[i][WNI_CFG_EDCA_PROFILE_ACM_IDX];
+			(uint8_t)params[i][CFG_EDCA_PROFILE_ACM_IDX];
 		psessionEntry->gLimEdcaParams[i].aci.aifsn =
-			(uint8_t) params[i][WNI_CFG_EDCA_PROFILE_AIFSN_IDX];
+			(uint8_t)params[i][CFG_EDCA_PROFILE_AIFSN_IDX];
 		psessionEntry->gLimEdcaParams[i].cw.min =
 			convert_cw(GET_CW(&params[i][cwminidx]));
 		psessionEntry->gLimEdcaParams[i].cw.max =
 			convert_cw(GET_CW(&params[i][cwmaxidx]));
 		psessionEntry->gLimEdcaParams[i].txoplimit =
-			(uint16_t) params[i][txopidx];
+			(uint16_t)params[i][txopidx];
 
 		pe_debug("AC :%d: AIFSN: %d, ACM %d, CWmin %d, CWmax %d, TxOp %d",
 			       i, psessionEntry->gLimEdcaParams[i].aci.aifsn,
@@ -512,53 +493,54 @@ set_sch_edca_params(tpAniSirGlobal pMac,
 	return;
 }
 
-/** ----------------------------------------------------------
-   \fn      get_wmm_local_params
-   \brief   This function gets the WMM local edca parameters.
-   \param   tpAniSirGlobal  pMac
-   \param   uint32_t params[][WNI_CFG_EDCA_ANI_ACBK_LOCAL_LEN]
-   \return  none
- \ ------------------------------------------------------------ */
+/**
+ * get_wmm_local_params() - This function gets the WMM local edca parameters.
+ * @pMac
+ * @params[][WNI_CFG_EDCA_ANI_ACBK_LOCAL_LEN]
+ *
+ * Return  none
+ */
 static QDF_STATUS
-get_wmm_local_params(tpAniSirGlobal pMac,
-		     uint32_t params[][WNI_CFG_EDCA_ANI_ACBK_LOCAL_LEN])
+get_wmm_local_params(tpAniSirGlobal mac_ctx,
+		     uint32_t params[][CFG_EDCA_DATA_LEN])
 {
 	uint32_t i, idx;
-	uint32_t *prf;
-	uint32_t wme_l[] = {
-	  WNI_CFG_EDCA_WME_ACBE_LOCAL, WNI_CFG_EDCA_WME_ACBK_LOCAL,
-	  WNI_CFG_EDCA_WME_ACVI_LOCAL, WNI_CFG_EDCA_WME_ACVO_LOCAL};
+	QDF_STATUS status;
+	struct wlan_mlme_edca_params *edca_params;
+	uint32_t wme_l[] = {edca_wme_acbe_local, edca_wme_acbk_local,
+			    edca_wme_acvi_local, edca_wme_acvo_local};
 
-	prf = &wme_l[0];
+	if (!mac_ctx->mlme_cfg) {
+		pe_err("NULL mlme cfg");
+		return QDF_STATUS_E_FAILURE;
+	}
+
+	edca_params = &mac_ctx->mlme_cfg->edca_params;
 	for (i = 0; i < 4; i++) {
-		uint8_t data[WNI_CFG_EDCA_ANI_ACBK_LEN];
-		uint32_t len = WNI_CFG_EDCA_ANI_ACBK_LOCAL_LEN;
+		uint8_t data[CFG_EDCA_DATA_LEN];
 
-		if (wlan_cfg_get_str
-			    (pMac, (uint16_t) prf[i], (uint8_t *) &data[0],
-			    &len) != QDF_STATUS_SUCCESS) {
-			pe_err("cfgGet failed for %d", prf[i]);
-			return QDF_STATUS_E_FAILURE;
-		}
-		if (len > WNI_CFG_EDCA_ANI_ACBK_LOCAL_LEN) {
-			pe_err("cfgGet for %d: length is %d instead of %d",
-				prf[i], len, WNI_CFG_EDCA_ANI_ACBK_LOCAL_LEN);
+		status = wlan_mlme_get_edca_params(edca_params,
+						   (uint8_t *)&data[0],
+						   (uint8_t)wme_l[i]);
+		if (QDF_IS_STATUS_ERROR(status)) {
+			pe_err("Get failed for ac:[%d]", i);
 			return QDF_STATUS_E_FAILURE;
 		}
-		for (idx = 0; idx < len; idx++)
+		for (idx = 0; idx < CFG_EDCA_DATA_LEN; idx++)
 			params[i][idx] = (uint32_t) data[idx];
 	}
 	return QDF_STATUS_SUCCESS;
 }
 
-/** ----------------------------------------------------------
-   \fn      sch_edca_profile_update
-   \brief   This function updates the local and broadcast
- \        EDCA params in the gLimEdcaParams structure. It also
- \        updates the edcaParamSetCount.
-   \param   tpAniSirGlobal  pMac
-   \return  none
- \ ------------------------------------------------------------ */
+/**
+ * sch_edca_profile_update() - This function updates the local and broadcast
+ * EDCA params in the gLimEdcaParams structure. It also updates the
+ * edcaParamSetCount.
+ *
+ * @pMac - global mac context
+ *
+ * Return  none
+ */
 void sch_edca_profile_update(tpAniSirGlobal pMac, tpPESession psessionEntry)
 {
 	if (LIM_IS_AP_ROLE(psessionEntry) ||