浏览代码

qcacld-3.0: Add MLME CFG items of EDCA parameters

Add the EDCA cfg parameters:
1. WNI_CFG_EDCA_ANI_ACBK_LOCAL
2. WNI_CFG_EDCA_ANI_ACBE_LOCAL
3. WNI_CFG_EDCA_ANI_ACVI_LOCAL
4. WNI_CFG_EDCA_ANI_ACVO_LOCAL
5. WNI_CFG_EDCA_ANI_ACBK
6. WNI_CFG_EDCA_ANI_ACBE
7. WNI_CFG_EDCA_ANI_ACVI
8. WNI_CFG_EDCA_ANI_ACVO
9. WNI_CFG_EDCA_WME_ACBK_LOCAL
10. WNI_CFG_EDCA_WME_ACBE_LOCAL
11. WNI_CFG_EDCA_WME_ACVI_LOCAL
12. WNI_CFG_EDCA_WME_ACVO_LOCAL
13. WNI_CFG_EDCA_WME_ACBK
14. WNI_CFG_EDCA_WME_ACBE
15. WNI_CFG_EDCA_WME_ACVI
16. WNI_CFG_EDCA_WME_ACVO
17. WNI_CFG_EDCA_ETSI_ACBE_LOCAL
18. WNI_CFG_EDCA_ETSI_ACBK_LOCAL
19. WNI_CFG_EDCA_ETSI_ACVI_LOCAL
20. WNI_CFG_EDCA_ETSI_ACVO_LOCAL
21. WNI_CFG_EDCA_ETSI_ACBE
22. WNI_CFG_EDCA_ETSI_ACBK
23. WNI_CFG_EDCA_ETSI_ACVI
24. WNI_CFG_EDCA_ETSI_ACVO

Change-Id: I10ba5c2b8c63bd3fb19540e999c39f3fdf53197b
CRs-Fixed: 2315482
Pragaspathi Thilagaraj 6 年之前
父节点
当前提交
03efaa5442

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

@@ -144,6 +144,142 @@ static void mlme_init_generic_cfg(struct wlan_objmgr_psoc *psoc,
 	mlme_init_pmf_cfg(psoc, gen);
 }
 
+static void mlme_init_edca_ani_cfg(struct wlan_mlme_edca_params *edca_params)
+{
+	qdf_uint8_array_parse(cfg_default(CFG_EDCA_ANI_ACBK_LOCAL),
+			      edca_params->ani_acbk_l.data,
+			      CFG_EDCA_DATA_LEN,
+			      &edca_params->ani_acbk_l.len);
+
+	qdf_uint8_array_parse(cfg_default(CFG_EDCA_ANI_ACBE_LOCAL),
+			      edca_params->ani_acbe_l.data,
+			      CFG_EDCA_DATA_LEN,
+			      &edca_params->ani_acbe_l.len);
+
+	qdf_uint8_array_parse(cfg_default(CFG_EDCA_ANI_ACVI_LOCAL),
+			      edca_params->ani_acvi_l.data,
+			      CFG_EDCA_DATA_LEN,
+			      &edca_params->ani_acvi_l.len);
+
+	qdf_uint8_array_parse(cfg_default(CFG_EDCA_ANI_ACVO_LOCAL),
+			      edca_params->ani_acvo_l.data,
+			      CFG_EDCA_DATA_LEN,
+			      &edca_params->ani_acvo_l.len);
+
+	qdf_uint8_array_parse(cfg_default(CFG_EDCA_ANI_ACBK),
+			      edca_params->ani_acbk_b.data,
+			      CFG_EDCA_DATA_LEN,
+			      &edca_params->ani_acbk_b.len);
+
+	qdf_uint8_array_parse(cfg_default(CFG_EDCA_ANI_ACBE),
+			      edca_params->ani_acbe_b.data,
+			      CFG_EDCA_DATA_LEN,
+			      &edca_params->ani_acbe_b.len);
+
+	qdf_uint8_array_parse(cfg_default(CFG_EDCA_ANI_ACVI),
+			      edca_params->ani_acvi_b.data,
+			      CFG_EDCA_DATA_LEN,
+			      &edca_params->ani_acvi_b.len);
+
+	qdf_uint8_array_parse(cfg_default(CFG_EDCA_ANI_ACVO),
+			      edca_params->ani_acvo_b.data,
+			      CFG_EDCA_DATA_LEN,
+			      &edca_params->ani_acvo_b.len);
+}
+
+static void mlme_init_edca_wme_cfg(struct wlan_mlme_edca_params *edca_params)
+{
+	qdf_uint8_array_parse(cfg_default(CFG_EDCA_WME_ACBK_LOCAL),
+			      edca_params->wme_acbk_l.data,
+			      CFG_EDCA_DATA_LEN,
+			      &edca_params->wme_acbk_l.len);
+
+	qdf_uint8_array_parse(cfg_default(CFG_EDCA_WME_ACBE_LOCAL),
+			      edca_params->wme_acbe_l.data,
+			      CFG_EDCA_DATA_LEN,
+			      &edca_params->wme_acbe_l.len);
+
+	qdf_uint8_array_parse(cfg_default(CFG_EDCA_WME_ACVI_LOCAL),
+			      edca_params->wme_acvi_l.data,
+			      CFG_EDCA_DATA_LEN,
+			      &edca_params->wme_acvi_l.len);
+
+	qdf_uint8_array_parse(cfg_default(CFG_EDCA_WME_ACVO_LOCAL),
+			      edca_params->wme_acvo_l.data,
+			      CFG_EDCA_DATA_LEN,
+			      &edca_params->wme_acvo_l.len);
+
+	qdf_uint8_array_parse(cfg_default(CFG_EDCA_WME_ACBK),
+			      edca_params->wme_acbk_b.data,
+			      CFG_EDCA_DATA_LEN,
+			      &edca_params->wme_acbk_b.len);
+
+	qdf_uint8_array_parse(cfg_default(CFG_EDCA_WME_ACBE),
+			      edca_params->wme_acbe_b.data,
+			      CFG_EDCA_DATA_LEN,
+			      &edca_params->wme_acbe_b.len);
+
+	qdf_uint8_array_parse(cfg_default(CFG_EDCA_WME_ACVI),
+			      edca_params->wme_acvi_b.data,
+			      CFG_EDCA_DATA_LEN,
+			      &edca_params->wme_acvi_b.len);
+
+	qdf_uint8_array_parse(cfg_default(CFG_EDCA_WME_ACVO),
+			      edca_params->wme_acvo_b.data,
+			      CFG_EDCA_DATA_LEN,
+			      &edca_params->wme_acvo_b.len);
+}
+
+static void mlme_init_edca_etsi_cfg(struct wlan_mlme_edca_params *edca_params)
+{
+	qdf_uint8_array_parse(cfg_default(CFG_EDCA_ETSI_ACBK_LOCAL),
+			      edca_params->etsi_acbk_l.data,
+			      CFG_EDCA_DATA_LEN,
+			      &edca_params->etsi_acbk_l.len);
+
+	qdf_uint8_array_parse(cfg_default(CFG_EDCA_ETSI_ACBE_LOCAL),
+			      edca_params->etsi_acbe_l.data,
+			      CFG_EDCA_DATA_LEN,
+			      &edca_params->etsi_acbe_l.len);
+
+	qdf_uint8_array_parse(cfg_default(CFG_EDCA_ETSI_ACVI_LOCAL),
+			      edca_params->etsi_acvi_l.data,
+			      CFG_EDCA_DATA_LEN,
+			      &edca_params->etsi_acvi_l.len);
+
+	qdf_uint8_array_parse(cfg_default(CFG_EDCA_ETSI_ACVO_LOCAL),
+			      edca_params->etsi_acvo_l.data,
+			      CFG_EDCA_DATA_LEN,
+			      &edca_params->etsi_acvo_l.len);
+
+	qdf_uint8_array_parse(cfg_default(CFG_EDCA_ETSI_ACBK),
+			      edca_params->etsi_acbk_b.data,
+			      CFG_EDCA_DATA_LEN,
+			      &edca_params->etsi_acbk_b.len);
+
+	qdf_uint8_array_parse(cfg_default(CFG_EDCA_ETSI_ACBE),
+			      edca_params->etsi_acbe_b.data,
+			      CFG_EDCA_DATA_LEN,
+			      &edca_params->etsi_acbe_b.len);
+
+	qdf_uint8_array_parse(cfg_default(CFG_EDCA_ETSI_ACVI),
+			      edca_params->etsi_acvi_b.data,
+			      CFG_EDCA_DATA_LEN,
+			      &edca_params->etsi_acvi_b.len);
+
+	qdf_uint8_array_parse(cfg_default(CFG_EDCA_ETSI_ACVO),
+			      edca_params->etsi_acvo_b.data,
+			      CFG_EDCA_DATA_LEN,
+			      &edca_params->etsi_acvo_b.len);
+}
+
+static void mlme_init_edca_params(struct wlan_mlme_edca_params *edca_params)
+{
+	mlme_init_edca_ani_cfg(edca_params);
+	mlme_init_edca_wme_cfg(edca_params);
+	mlme_init_edca_etsi_cfg(edca_params);
+}
+
 static void mlme_init_ht_cap_in_cfg(struct wlan_objmgr_psoc *psoc,
 				    struct wlan_mlme_ht_caps *ht_caps)
 {
@@ -732,6 +868,7 @@ QDF_STATUS mlme_cfg_on_psoc_enable(struct wlan_objmgr_psoc *psoc)
 
 	mlme_cfg = &mlme_obj->cfg;
 	mlme_init_generic_cfg(psoc, &mlme_cfg->gen);
+	mlme_init_edca_params(&mlme_cfg->edca_params);
 	mlme_init_ht_cap_in_cfg(psoc, &mlme_cfg->ht_caps);
 	mlme_init_mbo_cfg(psoc, &mlme_cfg->mbo_cfg);
 	mlme_init_qos_cfg(psoc, &mlme_cfg->qos_mlme_params);

+ 2 - 0
components/mlme/dispatcher/inc/cfg_mlme.h

@@ -24,6 +24,7 @@
 #include "qdf_types.h"
 
 #include "cfg_mlme_chainmask.h"
+#include "cfg_mlme_edca_params.h"
 #include "cfg_mlme_generic.h"
 #include "cfg_mlme_ht_caps.h"
 #include "cfg_mlme_he_caps.h"
@@ -42,6 +43,7 @@
 /* Please Maintain Alphabetic Order here */
 #define CFG_MLME_ALL \
 	CFG_CHAINMASK_ALL \
+	CFG_EDCA_PARAMS_ALL \
 	CFG_GENERIC_ALL \
 	CFG_HT_CAPS_ALL \
 	CFG_HE_CAPS_ALL \

+ 292 - 0
components/mlme/dispatcher/inc/cfg_mlme_edca_params.h

@@ -0,0 +1,292 @@
+/*
+ * Copyright (c) 2011-2018 The Linux Foundation. All rights reserved.
+ *
+ * Permission to use, copy, modify, and/or distribute this software for
+ * any purpose with or without fee is hereby granted, provided that the
+ * above copyright notice and this permission notice appear in all
+ * copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
+ * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
+ * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/**
+ * DOC: This file contains centralized definitions of converged configuration.
+ */
+
+#ifndef __CFG_MLME_EDCA__PARAM_H
+#define __CFG_MLME_EDCA__PARAM_H
+
+#define STR_EDCA_ANI_ACBK_LOCAL "0x0, 0x7, 0x0, 0xf, 0x3, 0xff, 0x0, 0x0, 0x1f, 0x3, 0xff, 0x0, 0x0, 0xf, 0x3, 0xff, 0x0"
+#define STR_EDCA_ANI_ACBK_LOCAL_LEN (sizeof(STR_EDCA_ANI_ACBK_LOCAL) - 1)
+
+#define CFG_EDCA_ANI_ACBK_LOCAL CFG_STRING( \
+		"edca_ani_acbk_local", \
+		0, \
+		STR_EDCA_ANI_ACBK_LOCAL_LEN, \
+		STR_EDCA_ANI_ACBK_LOCAL, \
+		"EDCA ANI ACBK LOCAL")
+
+#define STR_EDCA_ANI_ACBE_LOCAL "0x0, 0x2, 0x0, 0xf, 0x3, 0xff, 0x64, 0x0, 0x1f, 0x3, 0xff, 0x64, 0x0, 0xf, 0x3, 0xff, 0x64"
+#define STR_EDCA_ANI_ACBE_LOCAL_LEN (sizeof(STR_EDCA_ANI_ACBK_LOCAL) - 1)
+
+#define CFG_EDCA_ANI_ACBE_LOCAL CFG_STRING( \
+		"edca_ani_acbe_local", \
+		0, \
+		STR_EDCA_ANI_ACBE_LOCAL_LEN, \
+		STR_EDCA_ANI_ACBE_LOCAL, \
+		"EDCA ANI ACBE LOCAL")
+
+#define STR_EDCA_ANI_ACVI_LOCAL "0x0, 0x2, 0x0, 0x7, 0x0, 0xf, 0xc8, 0x0, 0xf, 0x0, 0x1f, 0xbc, 0x0, 0x7, 0x0, 0xf, 0xc8"
+#define STR_EDCA_ANI_ACVI_LOCAL_LEN (sizeof(STR_EDCA_ANI_ACBK_LOCAL) - 1)
+
+#define CFG_EDCA_ANI_ACVI_LOCAL CFG_STRING( \
+		"edca_ani_acvi_local",\
+		0, \
+		STR_EDCA_ANI_ACVI_LOCAL_LEN, \
+		STR_EDCA_ANI_ACVI_LOCAL, \
+		"EDCA ANI ACVI LOCAL")
+
+#define STR_EDCA_ANI_ACVO_LOCAL "0x0, 0x2, 0x0, 0x3, 0x0, 0x7, 0x64, 0x0, 0x7, 0x0, 0xf, 0x66, 0x0, 0x3, 0x0, 0x7, 0x64"
+#define STR_EDCA_ANI_ACVO_LOCAL_LEN (sizeof(STR_EDCA_ANI_ACBK_LOCAL) - 1)
+
+#define CFG_EDCA_ANI_ACVO_LOCAL CFG_STRING( \
+		"edca_ani_acvo_local", \
+		0, \
+		STR_EDCA_ANI_ACVO_LOCAL_LEN, \
+		STR_EDCA_ANI_ACVO_LOCAL, \
+		"EDCA ANI ACVO LOCAL")
+
+#define STR_EDCA_ANI_ACBK "0x0, 0x7, 0x0, 0xf, 0x3, 0xff, 0x0, 0x0, 0x1f, 0x3, 0xff, 0x0, 0x0, 0xf, 0x3, 0xff, 0x0"
+#define STR_EDCA_ANI_ACBK_LEN (sizeof(STR_EDCA_ANI_ACBK_LOCAL) - 1)
+
+#define CFG_EDCA_ANI_ACBK CFG_STRING( \
+		"edca_ani_acbk", \
+		0, \
+		STR_EDCA_ANI_ACBK_LEN, \
+		STR_EDCA_ANI_ACBK, \
+		"EDCA ANI ACBK BROADCAST")
+
+#define STR_EDCA_ANI_ACBE "0x0, 0x2, 0x0, 0xf, 0x3, 0xff, 0x64, 0x0, 0x1f, 0x3, 0xff, 0x64, 0x0, 0xf, 0x3, 0xff, 0x64"
+#define STR_EDCA_ANI_ACBE_LEN (sizeof(STR_EDCA_ANI_ACBK_LOCAL) - 1)
+
+#define CFG_EDCA_ANI_ACBE CFG_STRING( \
+		"edca_ani_acbe", \
+		0, \
+		STR_EDCA_ANI_ACBE_LEN, \
+		STR_EDCA_ANI_ACBE, \
+		"EDCA ANI ACBE BROADCAST")
+
+#define STR_EDCA_ANI_ACVI "0x0, 0x2, 0x0, 0x7, 0x0, 0xf, 0xc8, 0x0, 0xf, 0x0, 0x1f, 0xbc, 0x0, 0x7, 0x0, 0xf, 0xc8"
+#define STR_EDCA_ANI_ACVI_LEN (sizeof(STR_EDCA_ANI_ACBK_LOCAL) - 1)
+
+#define CFG_EDCA_ANI_ACVI CFG_STRING( \
+		"edca_ani_acvi", \
+		0, \
+		STR_EDCA_ANI_ACVI_LEN, \
+		STR_EDCA_ANI_ACVI, \
+		"EDCA ANI ACVI BROADCAST")
+
+#define STR_EDCA_ANI_ACVO "0x0, 0x2, 0x0, 0x3, 0x0, 0x7, 0x64, 0x0, 0x7, 0x0, 0xf, 0x66, 0x0, 0x3, 0x0, 0x7, 0x64"
+#define STR_EDCA_ANI_ACVO_LEN (sizeof(STR_EDCA_ANI_ACBK_LOCAL) - 1)
+
+#define CFG_EDCA_ANI_ACVO CFG_STRING( \
+		"edca_ani_acvo", \
+		0, \
+		STR_EDCA_ANI_ACVO_LEN, \
+		STR_EDCA_ANI_ACVO, \
+		"EDCA ANI ACVO BROADCAST")
+
+#define STR_EDCA_WME_ACBK_LOCAL "0x0, 0x7, 0x0, 0xf, 0x3, 0xff, 0x0, 0x0, 0x1f, 0x3, 0xff, 0x0, 0x0, 0xf, 0x3, 0xff, 0x0"
+#define STR_EDCA_WME_ACBK_LOCAL_LEN (sizeof(STR_EDCA_WME_ACBK_LOCAL) - 1)
+
+#define CFG_EDCA_WME_ACBK_LOCAL CFG_STRING( \
+		"edca_wme_acbk_local", \
+		0, \
+		STR_EDCA_WME_ACBK_LOCAL_LEN, \
+		STR_EDCA_WME_ACBK_LOCAL, \
+		"EDCA WME ACBK LOCAL")
+
+#define STR_EDCA_WME_ACBE_LOCAL "0x0, 0x3, 0x0, 0xf, 0x0, 0x3f, 0x0, 0x0, 0x1f, 0x3, 0xff, 0x0, 0x0, 0xf, 0x0, 0x3f, 0x0"
+#define STR_EDCA_WME_ACBE_LOCAL_LEN (sizeof(STR_EDCA_WME_ACBE_LOCAL) - 1)
+
+#define CFG_EDCA_WME_ACBE_LOCAL CFG_STRING( \
+		"edca_wme_acbe_local", \
+		0, \
+		STR_EDCA_WME_ACBE_LOCAL_LEN, \
+		STR_EDCA_WME_ACBE_LOCAL, \
+		"EDCA WME ACBE LOCAL")
+
+#define STR_EDCA_WME_ACVI_LOCAL "0x0, 0x1, 0x0, 0x7, 0x0, 0xf, 0x5e, 0x0, 0x7, 0x0, 0xf, 0xbc, 0x0, 0x7, 0x0, 0xf, 0x5e"
+#define STR_EDCA_WME_ACVI_LOCAL_LEN (sizeof(STR_EDCA_WME_ACVI_LOCAL) - 1)
+
+#define CFG_EDCA_WME_ACVI_LOCAL CFG_STRING( \
+		"edca_wme_acvi_local", \
+		0, \
+		STR_EDCA_WME_ACVI_LOCAL_LEN, \
+		STR_EDCA_WME_ACVI_LOCAL, \
+		"EDCA WME ACVI LOCAL")
+
+#define STR_EDCA_WME_ACVO_LOCAL "0x0, 0x1, 0x0, 0x3, 0x0, 0x7, 0x2f, 0x0, 0x3, 0x0, 0x7, 0x66, 0x0, 0x3, 0x0, 0x7, 0x2f"
+#define STR_EDCA_WME_ACVO_LOCAL_LEN (sizeof(STR_EDCA_WME_ACVO_LOCAL) - 1)
+
+#define CFG_EDCA_WME_ACVO_LOCAL CFG_STRING( \
+		"edca_wme_acvo_local", \
+		0, \
+		STR_EDCA_WME_ACVO_LOCAL_LEN, \
+		STR_EDCA_WME_ACVO_LOCAL, \
+		"EDCA WME ACVO LOCAL")
+
+#define STR_EDCA_WME_ACBK "0x0, 0x7, 0x0, 0xf, 0x3, 0xff, 0x0, 0x0, 0xf, 0x3, 0xff, 0x0, 0x0, 0xf, 0x3, 0xff, 0x0"
+#define STR_EDCA_WME_ACBK_LEN (sizeof(STR_EDCA_WME_ACBK) - 1)
+
+#define CFG_EDCA_WME_ACBK CFG_STRING( \
+		"edca_wme_acbk", \
+		0, \
+		STR_EDCA_WME_ACBK_LEN, \
+		STR_EDCA_WME_ACBK, \
+		"EDCA WME ACBK BROADCAST")
+
+#define STR_EDCA_WME_ACBE "0x0, 0x3, 0x0, 0xf, 0x3, 0xff, 0x0, 0x0, 0xf, 0x3, 0xff, 0x0, 0x0, 0xf, 0x3, 0xff, 0x0"
+#define STR_EDCA_WME_ACBE_LEN (sizeof(STR_EDCA_WME_ACBE) - 1)
+
+#define CFG_EDCA_WME_ACBE CFG_STRING( \
+		"edca_wme_acbe", \
+		0, \
+		STR_EDCA_WME_ACBE_LEN, \
+		STR_EDCA_WME_ACBE, \
+		"EDCA WME ACBE BROADCAST")
+
+#define STR_EDCA_WME_ACVI "0x0, 0x2, 0x0, 0x7, 0x0, 0xf, 0x5e, 0x0, 0x7, 0x0, 0xf, 0xbc, 0x0, 0x7, 0x0, 0xf, 0x5e"
+#define STR_EDCA_WME_ACVI_LEN (sizeof(STR_EDCA_WME_ACVI) - 1)
+
+#define CFG_EDCA_WME_ACVI CFG_STRING( \
+		"edca_wme_acvi", \
+		0, \
+		STR_EDCA_WME_ACVI_LEN, \
+		STR_EDCA_WME_ACVI, \
+		"EDCA WME ACVI BROADCAST")
+
+#define STR_EDCA_WME_ACVO "0x0, 0x2, 0x0, 0x3, 0x0, 0x7, 0x2f, 0x0, 0x3, 0x0, 0x7, 0x66, 0x0, 0x3, 0x0, 0x7, 0x2f"
+#define STR_EDCA_WME_ACVO_LEN (sizeof(STR_EDCA_WME_ACVO) - 1)
+
+#define CFG_EDCA_WME_ACVO CFG_STRING( \
+		"edca_wme_acvo", \
+		0, \
+		STR_EDCA_WME_ACVO_LEN, \
+		STR_EDCA_WME_ACVO, \
+		"EDCA WME ACVO BROADCAST")
+
+#define STR_EDCA_ETSI_ACBK_LOCAL "0x0, 0x7, 0x0, 0xf, 0x3, 0xff, 0xbb, 0x0, 0x1f, 0x3, 0xff, 0x0, 0x0, 0xf, 0x3, 0xff, 0x0"
+#define STR_EDCA_ETSI_ACBK_LOCAL_LEN (sizeof(STR_EDCA_ETSI_ACBK_LOCAL) - 1)
+
+#define CFG_EDCA_ETSI_ACBK_LOCAL CFG_STRING( \
+		"edca_etsi_acbk_local", \
+		0, \
+		STR_EDCA_ETSI_ACBK_LOCAL_LEN, \
+		STR_EDCA_ETSI_ACBK_LOCAL, \
+		"EDCA ETSI ACBK LOCAL")
+
+#define STR_EDCA_ETSI_ACBE_LOCAL "0x0, 0x3, 0x0, 0xf, 0x0, 0x3f, 0xbb, 0x0, 0x1f, 0x3, 0xff, 0x0, 0x0, 0xf, 0x0, 0x3f, 0x0"
+#define STR_EDCA_ETSI_ACBE_LOCAL_LEN (sizeof(STR_EDCA_ETSI_ACBE_LOCAL) - 1)
+
+#define CFG_EDCA_ETSI_ACBE_LOCAL CFG_STRING( \
+		"edca_etsi_acbe_local", \
+		0, \
+		STR_EDCA_ETSI_ACBE_LOCAL_LEN, \
+		STR_EDCA_ETSI_ACBE_LOCAL, \
+		"EDCA ETSI ACBE LOCAL")
+
+#define STR_EDCA_ETSI_ACVI_LOCAL "0x0, 0x1, 0x0, 0x7, 0x0, 0xf, 0x7d, 0x0, 0x7, 0x0, 0xf, 0xbc, 0x0, 0x7, 0x0, 0xf, 0x5e"
+#define STR_EDCA_ETSI_ACVI_LOCAL_LEN (sizeof(STR_EDCA_ETSI_ACVI_LOCAL) - 1)
+
+#define CFG_EDCA_ETSI_ACVI_LOCAL CFG_STRING( \
+		"edca_etsi_acvi_local", \
+		0, \
+		STR_EDCA_ETSI_ACVI_LOCAL_LEN, \
+		STR_EDCA_ETSI_ACVI_LOCAL, \
+		"EDCA ETSI ACVI LOCAL")
+
+#define STR_EDCA_ETSI_ACVO_LOCAL "0x0, 0x1, 0x0, 0x3, 0x0, 0x7, 0x3e, 0x0, 0x3, 0x0, 0x7, 0x66, 0x0, 0x3, 0x0, 0x7, 0x2f"
+#define STR_EDCA_ETSI_ACVO_LOCAL_LEN (sizeof(STR_EDCA_ETSI_ACVO_LOCAL) - 1)
+
+#define CFG_EDCA_ETSI_ACVO_LOCAL CFG_STRING( \
+		"edca_etsi_acvo_local", \
+		0, \
+		STR_EDCA_ETSI_ACVO_LOCAL_LEN, \
+		STR_EDCA_ETSI_ACVO_LOCAL, \
+		"EDCA ETSI ACVO LOCAL")
+
+#define STR_EDCA_ETSI_ACBK "0x0, 0x7, 0x0, 0xf, 0x3, 0xff, 0xbb, 0x0, 0xf, 0x3, 0xff, 0x0, 0x0, 0xf, 0x3, 0xff, 0x0"
+#define STR_EDCA_ETSI_ACBK_LEN (sizeof(STR_EDCA_ETSI_ACBK) - 1)
+
+#define CFG_EDCA_ETSI_ACBK CFG_STRING( \
+		"edca_etsi_acbk", \
+		0, \
+		STR_EDCA_ETSI_ACBK_LEN, \
+		STR_EDCA_ETSI_ACBK, \
+		"EDCA ETSI ACBK BROADCAST")
+
+#define STR_EDCA_ETSI_ACBE "0x0, 0x3, 0x0, 0xf, 0x3, 0xff, 0xbb, 0x0, 0xf, 0x3, 0xff, 0x0, 0x0, 0xf, 0x3, 0xff, 0x0"
+#define STR_EDCA_ETSI_ACBE_LEN (sizeof(STR_EDCA_ETSI_ACBE) - 1)
+
+#define CFG_EDCA_ETSI_ACBE CFG_STRING( \
+		"edca_etsi_acbe", \
+		0, \
+		STR_EDCA_ETSI_ACBE_LEN, \
+		STR_EDCA_ETSI_ACBE, \
+		"EDCA ETSI ACBE BROADCAST")
+
+#define STR_EDCA_ETSI_ACVI "0x0, 0x2, 0x0, 0x7, 0x0, 0xf, 0x7d, 0x0, 0x7, 0x0, 0xf, 0xbc, 0x0, 0x7, 0x0, 0xf, 0x5e"
+#define STR_EDCA_ETSI_ACVI_LEN (sizeof(STR_EDCA_ETSI_ACVI) - 1)
+
+#define CFG_EDCA_ETSI_ACVI CFG_STRING( \
+		"edca_etsi_acvi", \
+		0, \
+		STR_EDCA_ETSI_ACVI_LEN, \
+		STR_EDCA_ETSI_ACVI, \
+		"EDCA ETSI ACVI BROADCAST")
+
+#define STR_EDCA_ETSI_ACVO "0x0, 0x2, 0x0, 0x3, 0x0, 0x7, 0x3e, 0x0, 0x3, 0x0, 0x7, 0x66, 0x0, 0x3, 0x0, 0x7, 0x2f"
+#define STR_EDCA_ETSI_ACVO_LEN (sizeof(STR_EDCA_ETSI_ACVO) - 1)
+
+#define CFG_EDCA_ETSI_ACVO CFG_STRING( \
+		"edca_etsi_acvo", \
+		0, \
+		STR_EDCA_ETSI_ACVO_LEN, \
+		STR_EDCA_ETSI_ACVO, \
+		"EDCA ETSI ACVO BROADCAST")
+
+#define CFG_EDCA_PARAMS_ALL \
+	CFG(CFG_EDCA_ANI_ACBK_LOCAL) \
+	CFG(CFG_EDCA_ANI_ACBE_LOCAL) \
+	CFG(CFG_EDCA_ANI_ACVI_LOCAL) \
+	CFG(CFG_EDCA_ANI_ACVO_LOCAL) \
+	CFG(CFG_EDCA_ANI_ACBK) \
+	CFG(CFG_EDCA_ANI_ACBE) \
+	CFG(CFG_EDCA_ANI_ACVI) \
+	CFG(CFG_EDCA_ANI_ACVO) \
+	CFG(CFG_EDCA_WME_ACBK_LOCAL) \
+	CFG(CFG_EDCA_WME_ACBE_LOCAL) \
+	CFG(CFG_EDCA_WME_ACVI_LOCAL) \
+	CFG(CFG_EDCA_WME_ACVO_LOCAL) \
+	CFG(CFG_EDCA_WME_ACBK) \
+	CFG(CFG_EDCA_WME_ACBE) \
+	CFG(CFG_EDCA_WME_ACVI) \
+	CFG(CFG_EDCA_WME_ACVO) \
+	CFG(CFG_EDCA_ETSI_ACBK_LOCAL) \
+	CFG(CFG_EDCA_ETSI_ACBE_LOCAL) \
+	CFG(CFG_EDCA_ETSI_ACVI_LOCAL) \
+	CFG(CFG_EDCA_ETSI_ACVO_LOCAL) \
+	CFG(CFG_EDCA_ETSI_ACBK) \
+	CFG(CFG_EDCA_ETSI_ACBE) \
+	CFG(CFG_EDCA_ETSI_ACVI) \
+	CFG(CFG_EDCA_ETSI_ACVO)
+
+#endif  /* __CFG_MLME_EDCA__PARAM_H */

+ 126 - 0
components/mlme/dispatcher/inc/wlan_mlme_public_struct.h

@@ -28,6 +28,131 @@
 #define CFG_PMKID_MODES_OKC                        (0x1)
 #define CFG_PMKID_MODES_PMKSA_CACHING              (0x2)
 
+#define CFG_EDCA_DATA_LEN 17
+
+/**
+ * struct mlme_cfg_str - generic structure for all mlme CFG string items
+ *
+ * @len: length of the string
+ * @data: uint8_t array to store values
+ */
+struct mlme_cfg_str {
+	qdf_size_t len;
+	uint8_t data[CFG_EDCA_DATA_LEN];
+};
+
+/**
+ * enum e_edca_type - to index edca params for edca profile
+ *			 EDCA profile   AC   unicast/bcast
+ * @edca_ani_acbe_local:    ani          BE      unicast
+ * @edca_ani_acbk_local:    ani          BK      unicast
+ * @edca_ani_acvi_local:    ani          VI      unicast
+ * @edca_ani_acvo_local:    ani          VO      unicast
+ * @edca_ani_acbe_bcast:    ani          BE      bcast
+ * @edca_ani_acbk_bcast:    ani          BK      bcast
+ * @edca_ani_acvi_bcast:    ani          VI      bcast
+ * @edca_ani_acvo_bcast:    ani          VO      bcast
+ * @edca_wme_acbe_local:    wme          BE      unicast
+ * @edca_wme_acbk_local:    wme          BK      unicast
+ * @edca_wme_acvi_local:    wme          VI      unicast
+ * @edca_wme_acvo_local:    wme          VO      unicast
+ * @edca_wme_acbe_bcast:    wme          BE      bcast
+ * @edca_wme_acbk_bcast:    wme          BK      bcast
+ * @edca_wme_acvi_bcast:    wme          VI      bcast
+ * @edca_wme_acvo_bcast:    wme          VO      bcast
+ * @edca_etsi_acbe_local:   etsi         BE      unicast
+ * @edca_etsi_acbk_local:   etsi         BK      unicast
+ * @edca_etsi_acvi_local:   etsi         VI      unicast
+ * @edca_etsi_acvo_local:   etsi         VO      unicast
+ * @edca_etsi_acbe_bcast:   etsi         BE      bcast
+ * @edca_etsi_acbk_bcast:   etsi         BK      bcast
+ * @edca_etsi_acvi_bcast:   etsi         VI      bcast
+ * @edca_etsi_acvo_bcast:   etsi         VO      bcast
+ */
+enum e_edca_type {
+	edca_ani_acbe_local,
+	edca_ani_acbk_local,
+	edca_ani_acvi_local,
+	edca_ani_acvo_local,
+	edca_ani_acbe_bcast,
+	edca_ani_acbk_bcast,
+	edca_ani_acvi_bcast,
+	edca_ani_acvo_bcast,
+	edca_wme_acbe_local,
+	edca_wme_acbk_local,
+	edca_wme_acvi_local,
+	edca_wme_acvo_local,
+	edca_wme_acbe_bcast,
+	edca_wme_acbk_bcast,
+	edca_wme_acvi_bcast,
+	edca_wme_acvo_bcast,
+	edca_etsi_acbe_local,
+	edca_etsi_acbk_local,
+	edca_etsi_acvi_local,
+	edca_etsi_acvo_local,
+	edca_etsi_acbe_bcast,
+	edca_etsi_acbk_bcast,
+	edca_etsi_acvi_bcast,
+	edca_etsi_acvo_bcast
+};
+
+/**
+ * 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
+ * @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
+ * @etsi_acvo_l: EDCA parameters for ETSI local access category voice
+ * @etsi_acbk_b: EDCA parameters for ETSI bcast access category background
+ * @etsi_acbe_b: EDCA parameters for ETSI bcast access category best effort
+ * @etsi_acvi_b: EDCA parameters for ETSI bcast access category video
+ * @etsi_acvo_b: EDCA parameters for ETSI bcast access category voice
+ */
+struct wlan_mlme_edca_params {
+	struct mlme_cfg_str ani_acbk_l;
+	struct mlme_cfg_str ani_acbe_l;
+	struct mlme_cfg_str ani_acvi_l;
+	struct mlme_cfg_str ani_acvo_l;
+	struct mlme_cfg_str ani_acbk_b;
+	struct mlme_cfg_str ani_acbe_b;
+	struct mlme_cfg_str ani_acvi_b;
+	struct mlme_cfg_str ani_acvo_b;
+
+	struct mlme_cfg_str wme_acbk_l;
+	struct mlme_cfg_str wme_acbe_l;
+	struct mlme_cfg_str wme_acvi_l;
+	struct mlme_cfg_str wme_acvo_l;
+	struct mlme_cfg_str wme_acbk_b;
+	struct mlme_cfg_str wme_acbe_b;
+	struct mlme_cfg_str wme_acvi_b;
+	struct mlme_cfg_str wme_acvo_b;
+
+	struct mlme_cfg_str etsi_acbk_l;
+	struct mlme_cfg_str etsi_acbe_l;
+	struct mlme_cfg_str etsi_acvi_l;
+	struct mlme_cfg_str etsi_acvo_l;
+	struct mlme_cfg_str etsi_acbk_b;
+	struct mlme_cfg_str etsi_acbe_b;
+	struct mlme_cfg_str etsi_acvi_b;
+	struct mlme_cfg_str etsi_acvo_b;
+};
+
 /**
  * struct mlme_ht_capabilities_info - HT Capabilities Info
  * @l_sig_tx_op_protection: L-SIG TXOP Protection Mechanism support
@@ -660,6 +785,7 @@ struct wlan_mlme_oce {
  * @scoring: BSS Scoring related CFG Items
  */
 struct wlan_mlme_cfg {
+	struct wlan_mlme_edca_params edca_params;
 	struct wlan_mlme_generic gen;
 	struct wlan_mlme_ht_caps ht_caps;
 	struct wlan_mlme_he_caps he_caps;