Преглед на файлове

qcacld-3.0: Add MLME INI of EDCA parameters

Add the following EDCA INI:
1. CFG_ENABLE_EDCA_INI_NAME
2. CFG_EDCA_VO_CWMIN_VALUE_NAME
3. CFG_EDCA_VO_CWMAX_VALUE_NAME
4. CFG_EDCA_VO_AIFS_VALUE_NAME
5. CFG_EDCA_VI_CWMIN_VALUE_NAME
6. CFG_EDCA_VI_CWMAX_VALUE_NAME
7. CFG_EDCA_VI_AIFS_VALUE_NAME
8. CFG_EDCA_BK_CWMIN_VALUE_NAME
9. CFG_EDCA_BK_CWMAX_VALUE_NAME
10. CFG_EDCA_BK_AIFS_VALUE_NAME
11. CFG_EDCA_BE_CWMIN_VALUE_NAME
12. CFG_EDCA_BE_CWMAX_VALUE_NAME
13. CFG_EDCA_BE_AIFS_VALUE_NAME

Change-Id: I09ff58923d4c73fafce315ed2cea6e6e6a8480bb
CRs-Fixed: 2316365
Abhinav Kumar преди 6 години
родител
ревизия
65f2598ede
променени са 3 файла, в които са добавени 463 реда и са изтрити 3 реда
  1. 40 2
      mlme/core/src/wlan_mlme_main.c
  2. 360 1
      mlme/dispatcher/inc/cfg_mlme_edca_params.h
  3. 63 0
      mlme/dispatcher/inc/wlan_mlme_public_struct.h

+ 40 - 2
mlme/core/src/wlan_mlme_main.c

@@ -360,11 +360,49 @@ static void mlme_init_edca_etsi_cfg(struct wlan_mlme_edca_params *edca_params)
 			      &edca_params->etsi_acvo_b.len);
 }
 
-static void mlme_init_edca_params(struct wlan_mlme_edca_params *edca_params)
+static void
+mlme_init_qos_edca_params(struct wlan_objmgr_psoc *psoc,
+			  struct wlan_mlme_edca_params *edca_params)
+{
+	edca_params->enable_edca_params =
+			cfg_get(psoc, CFG_EDCA_ENABLE_PARAM);
+
+	edca_params->edca_ac_vo.vo_cwmin =
+			cfg_get(psoc, CFG_EDCA_VO_CWMIN);
+	edca_params->edca_ac_vo.vo_cwmax =
+			cfg_get(psoc, CFG_EDCA_VO_CWMAX);
+	edca_params->edca_ac_vo.vo_aifs =
+			cfg_get(psoc, CFG_EDCA_VO_AIFS);
+
+	edca_params->edca_ac_vi.vi_cwmin =
+			cfg_get(psoc, CFG_EDCA_VI_CWMIN);
+	edca_params->edca_ac_vi.vi_cwmax =
+			cfg_get(psoc, CFG_EDCA_VI_CWMAX);
+	edca_params->edca_ac_vi.vi_aifs =
+			cfg_get(psoc, CFG_EDCA_VI_AIFS);
+
+	edca_params->edca_ac_bk.bk_cwmin =
+			cfg_get(psoc, CFG_EDCA_BK_CWMIN);
+	edca_params->edca_ac_bk.bk_cwmax =
+			cfg_get(psoc, CFG_EDCA_BK_CWMAX);
+	edca_params->edca_ac_bk.bk_aifs =
+			cfg_get(psoc, CFG_EDCA_BK_AIFS);
+
+	edca_params->edca_ac_be.be_cwmin =
+			cfg_get(psoc, CFG_EDCA_BE_CWMIN);
+	edca_params->edca_ac_be.be_cwmax =
+			cfg_get(psoc, CFG_EDCA_BE_CWMAX);
+	edca_params->edca_ac_be.be_aifs =
+			cfg_get(psoc, CFG_EDCA_BE_AIFS);
+}
+
+static void mlme_init_edca_params(struct wlan_objmgr_psoc *psoc,
+				  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);
+	mlme_init_qos_edca_params(psoc, edca_params);
 }
 
 static void mlme_init_timeout_cfg(struct wlan_objmgr_psoc *psoc,
@@ -1222,8 +1260,8 @@ 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_timeout_cfg(psoc, &mlme_cfg->timeouts);
+	mlme_init_edca_params(psoc, &mlme_cfg->edca_params);
 	mlme_init_ht_cap_in_cfg(psoc, &mlme_cfg->ht_caps);
 	mlme_init_wmm_in_cfg(psoc, &mlme_cfg->wmm_params);
 	mlme_init_mbo_cfg(psoc, &mlme_cfg->mbo_cfg);

+ 360 - 1
mlme/dispatcher/inc/cfg_mlme_edca_params.h

@@ -263,6 +263,352 @@
 		STR_EDCA_ETSI_ACVO, \
 		"EDCA ETSI ACVO BROADCAST")
 
+/*
+ * <ini>
+ * gEnableEdcaParams - Enable edca parameter
+ * @Min: 0
+ * @Max: 1
+ * @Default: 0
+ *
+ * This ini is used if gEnableEdcaParams is set to 1, params gEdcaVoCwmin,
+ * gEdcaViCwmin, gEdcaBkCwmin, gEdcaBeCwmin, gEdcaVoCwmax,
+ * gEdcaViCwmax, gEdcaBkCwmax, gEdcaBeCwmax, gEdcaVoAifs,
+ * gEdcaViAifs, gEdcaBkAifs and gEdcaBeAifs values are used
+ * to overwrite the values received from AP
+ *
+ * Related: None
+ *
+ * Supported Feature: STA
+ *
+ * Usage: Internal/External
+ *
+ * </ini>
+ */
+#define CFG_EDCA_ENABLE_PARAM CFG_INI_BOOL( \
+		"gEnableEdcaParams", \
+		0, \
+		"Enable edca parameter")
+
+/*
+ * <ini>
+ * gEdcaVoCwmin - Set Cwmin value for EDCA_AC_VO
+ * @Min: 0
+ * @Max: 0x15
+ * @Default: 2
+ *
+ * This ini is used to set default Cwmin value for EDCA_AC_VO
+ * Cwmin value for EDCA_AC_VO. CWVomin = 2^gEdcaVoCwmin -1
+ *
+ * Related: If gEnableEdcaParams is set to 1, params gEdcaVoCwmin etc
+ * are aplicable
+ *
+ * Supported Feature: STA
+ *
+ * Usage: Internal/External
+ *
+ * </ini>
+ */
+#define CFG_EDCA_VO_CWMIN CFG_INI_UINT( \
+		"gEdcaVoCwmin", \
+		0x0, \
+		15, \
+		2, \
+		CFG_VALUE_OR_DEFAULT, \
+		"Cwmin value for EDCA_AC_VO")
+
+/*
+ * <ini>
+ * gEdcaVoCwmax - Set Cwmax value for EDCA_AC_VO
+ * @Min: 0
+ * @Max: 15
+ * @Default: 3
+ *
+ * This ini is used to set default Cwmax value for EDCA_AC_VO
+ * Cwmax value for EDCA_AC_VO. CWVomax = 2^gEdcaVoCwmax -1
+ *
+ * Related: If gEnableEdcaParams is set to 1, params gEdcaVoCwmin
+ * etc are aplicable
+ *
+ * Supported Feature: STA
+ *
+ * Usage: Internal/External
+ *
+ * </ini>
+ */
+#define CFG_EDCA_VO_CWMAX CFG_INI_UINT( \
+		"gEdcaVoCwmax", \
+		0x0, \
+		15, \
+		3, \
+		CFG_VALUE_OR_DEFAULT, \
+		"Cwmax value for EDCA_AC_VO")
+
+/*
+ * <ini>
+ * gEdcaVoAifs - Set Aifs value for EDCA_AC_VO
+ * @Min: 0
+ * @Max: 15
+ * @Default: 2
+ *
+ * This ini is used to set default Aifs value for EDCA_AC_VO
+ *
+ * Related: If gEnableEdcaParams is set to 1, params gEdcaVoCwmin
+ * etc are aplicable
+ *
+ * Supported Feature: STA
+ *
+ * Usage: Internal/External
+ *
+ * </ini>
+ */
+#define CFG_EDCA_VO_AIFS CFG_INI_UINT( \
+		"gEdcaVoAifs", \
+		0x0, \
+		15, \
+		2, \
+		CFG_VALUE_OR_DEFAULT, \
+		"default Aifs value for EDCA_AC_VO")
+
+/*
+ * <ini>
+ * gEdcaViCwmin - Set Cwmin value for EDCA_AC_VI
+ * @Min: 0x0
+ * @Max: 15
+ * @Default: 3
+ *
+ * This ini is used to set default value for EDCA_AC_VI
+ * Cwmin value for EDCA_AC_VI. CWVimin = 2^gEdcaViCwmin -1
+ *
+ * Related: If gEnableEdcaParams is set to 1, params gEdcaVoCwmin
+ * etc are aplicable
+ *
+ * Supported Feature: STA
+ *
+ * Usage: Internal/External
+ *
+ * </ini>
+ */
+#define CFG_EDCA_VI_CWMIN CFG_INI_UINT( \
+		"gEdcaViCwmin", \
+		0x0, \
+		15, \
+		3, \
+		CFG_VALUE_OR_DEFAULT, \
+		"Cwmin value for EDCA_AC_VI")
+
+/*
+ * <ini>
+ * gEdcaViCwmax - Set Cwmax value for EDCA_AC_VI
+ * @Min: 0
+ * @Max: 15
+ * @Default: 4
+ *
+ * This ini is used to set default Cwmax value for EDCA_AC_VI
+ * Cwmax value for EDCA_AC_VI. CWVimax = 2^gEdcaViCwmax -1
+ *
+ * Related: If gEnableEdcaParams is set to 1, params gEdcaVoCwmin
+ * etc are aplicable
+ *
+ * Supported Feature: STA
+ *
+ * Usage: Internal/External
+ *
+ * </ini>
+ */
+#define CFG_EDCA_VI_CWMAX CFG_INI_UINT( \
+		"gEdcaViCwmax", \
+		0x0, \
+		15, \
+		4, \
+		CFG_VALUE_OR_DEFAULT, \
+		"cwmax value for EDCA_AC_VI")
+
+/*
+ * <ini>
+ * gEdcaViAifs - Set Aifs value for EDCA_AC_VI
+ * @Min: 0
+ * @Max: 15
+ * @Default: 2
+ *
+ * This ini is used to set default Aifs value for EDCA_AC_VI
+ *
+ * Related: If gEnableEdcaParams is set to 1, params gEdcaVoCwmin
+ * etc are aplicable
+ *
+ * Supported Feature: STA
+ *
+ * Usage: Internal/External
+ *
+ * </ini>
+ */
+#define CFG_EDCA_VI_AIFS CFG_INI_UINT( \
+		"gEdcaViAifs", \
+		0x0, \
+		15, \
+		2, \
+		CFG_VALUE_OR_DEFAULT, \
+		"default Aifs value for EDCA_AC_VI")
+
+/*
+ * <ini>
+ * gEdcaBkCwmin - Set Cwmin value for EDCA_AC_BK
+ * @Min: 0x0
+ * @Max: 15
+ * @Default: 4
+ *
+ * This ini is used to set default Cwmin value for EDCA_AC_BK
+ * Cwmin value for EDCA_AC_BK. CWBkmin = 2^gEdcaBkCwmin -1
+ *
+ * Related: If gEnableEdcaParams is set to 1, params gEdcaVoCwmin
+ * etc are aplicable
+ *
+ * Supported Feature: STA
+ *
+ * Usage: Internal/External
+ * </ini>
+ */
+#define CFG_EDCA_BK_CWMIN CFG_INI_UINT( \
+		"gEdcaBkCwmin", \
+		0x0, \
+		15, \
+		4, \
+		CFG_VALUE_OR_DEFAULT, \
+		"Cwmin value for EDCA_AC_BK")
+
+/*
+ * <ini>
+ * gEdcaBkCwmax - Set Cwmax value for EDCA_AC_BK
+ * @Min: 0
+ * @Max: 15
+ * @Default: 10
+ *
+ * This ini is used to set default Cwmax value for EDCA_AC_BK
+ * Cwmax value for EDCA_AC_BK. CWBkmax = 2^gEdcaBkCwmax -1
+ *
+ * Related: If gEnableEdcaParams is set to 1, params gEdcaVoCwmin
+ * etc are aplicable
+ *
+ * Supported Feature: STA
+ *
+ * Usage: Internal/External
+ *
+ * </ini>
+ */
+#define CFG_EDCA_BK_CWMAX CFG_INI_UINT( \
+		"gEdcaBkCwmax", \
+		0, \
+		15, \
+		10, \
+		CFG_VALUE_OR_DEFAULT, \
+		"cwmax value for EDCA_AC_BK")
+
+/*
+ * <ini>
+ * gEdcaBkAifs - Set Aifs value for EDCA_AC_BK
+ * @Min: 0
+ * @Max: 15
+ * @Default: 7
+ *
+ * This ini is used to set default Aifs value for EDCA_AC_BK
+ *
+ * Related: If gEnableEdcaParams is set to 1, params gEdcaVoCwmin
+ * etc are aplicable
+ *
+ * Supported Feature: STA
+ *
+ * Usage: Internal/External
+ *
+ * </ini>
+ */
+#define CFG_EDCA_BK_AIFS CFG_INI_UINT( \
+		"gEdcaBkAifs", \
+		0, \
+		15, \
+		7, \
+		CFG_VALUE_OR_DEFAULT, \
+		"default Aifs value for EDCA_AC_BK")
+
+/*
+ * <ini>
+ * gEdcaBeCwmin - Set Cwmin value for EDCA_AC_BE
+ * @Min: 0x0
+ * @Max: 15
+ * @Default: 4
+ *
+ * This ini is used to set default Cwmin value for EDCA_AC_BE
+ * Cwmin value for EDCA_AC_BE. CWBemin = 2^gEdcaBeCwmin
+ *
+ * Related: If gEnableEdcaParams is set to 1, params gEdcaVoCwmin
+ * etc are aplicable
+ *
+ * Supported Feature: STA
+ *
+ * Usage: Internal/External
+ *
+ * </ini>
+ */
+#define CFG_EDCA_BE_CWMIN CFG_INI_UINT( \
+		"gEdcaBeCwmin", \
+		0x0, \
+		15, \
+		4, \
+		CFG_VALUE_OR_DEFAULT, \
+		"Cwmin value for EDCA_AC_BE")
+
+/*
+ * <ini>
+ * gEdcaBeCwmax - Set Cwmax value for EDCA_AC_BE
+ * @Min: 0
+ * @Max: 15
+ * @Default: 10
+ *
+ * This ini is used to set default Cwmax value for EDCA_AC_BE
+ * Cwmax value for EDCA_AC_BE. CWBemax = 2^gEdcaBeCwmax -1
+ *
+ * Related: If gEnableEdcaParams is set to 1, params gEdcaVoCwmin
+ * etc are aplicable
+ *
+ * Supported Feature: STA
+ *
+ * Usage: Internal/External
+ *
+ * </ini>
+ */
+
+#define CFG_EDCA_BE_CWMAX CFG_INI_UINT( \
+		"gEdcaBeCwmax", \
+		0, \
+		15, \
+		10, \
+		CFG_VALUE_OR_DEFAULT, \
+		"cwmax value for EDCA_AC_BE")
+
+/*
+ * <ini>
+ * gEdcaBeAifs - Set Aifs value for EDCA_AC_BE
+ * @Min: 0
+ * @Max: 15
+ * @Default: 3
+ *
+ * This ini is used to set default Aifs value for EDCA_AC_BE
+ *
+ * Related: If gEnableEdcaParams is set to 1, params gEdcaVoCwmin
+ * etc are aplicable
+ *
+ * Supported Feature: STA
+ *
+ * Usage: Internal/External
+ *
+ * </ini>
+ */
+#define CFG_EDCA_BE_AIFS CFG_INI_UINT( \
+		"gEdcaBeAifs", \
+		0, \
+		15, \
+		3, \
+		CFG_VALUE_OR_DEFAULT, \
+		"default Aifs value for EDCA_AC_BE")
+
 #define CFG_EDCA_PARAMS_ALL \
 	CFG(CFG_EDCA_ANI_ACBK_LOCAL) \
 	CFG(CFG_EDCA_ANI_ACBE_LOCAL) \
@@ -287,6 +633,19 @@
 	CFG(CFG_EDCA_ETSI_ACBK) \
 	CFG(CFG_EDCA_ETSI_ACBE) \
 	CFG(CFG_EDCA_ETSI_ACVI) \
-	CFG(CFG_EDCA_ETSI_ACVO)
+	CFG(CFG_EDCA_ETSI_ACVO) \
+	CFG(CFG_EDCA_ENABLE_PARAM) \
+	CFG(CFG_EDCA_VO_CWMIN) \
+	CFG(CFG_EDCA_VO_CWMAX) \
+	CFG(CFG_EDCA_VO_AIFS) \
+	CFG(CFG_EDCA_VI_CWMIN) \
+	CFG(CFG_EDCA_VI_CWMAX) \
+	CFG(CFG_EDCA_VI_AIFS) \
+	CFG(CFG_EDCA_BK_CWMIN) \
+	CFG(CFG_EDCA_BK_CWMAX) \
+	CFG(CFG_EDCA_BK_AIFS) \
+	CFG(CFG_EDCA_BE_CWMIN) \
+	CFG(CFG_EDCA_BE_CWMAX) \
+	CFG(CFG_EDCA_BE_AIFS)
 
 #endif  /* __CFG_MLME_EDCA__PARAM_H */

+ 63 - 0
mlme/dispatcher/inc/wlan_mlme_public_struct.h

@@ -122,6 +122,58 @@ enum e_edca_type {
 #define CFG_EDCA_PROFILE_CWMAXG_IDX   14
 #define CFG_EDCA_PROFILE_TXOPG_IDX    16
 
+/**
+ * struct mlme_edca_ac_vo - cwmin, cwmax and  aifs value for edca_ac_vo
+ *
+ * @vo_cwmin: cwmin value for voice
+ * @vo_cwmax: cwmax value for voice
+ * @vo_aifs: aifs value for voice
+ */
+struct mlme_edca_ac_vo {
+	uint32_t vo_cwmin;
+	uint32_t vo_cwmax;
+	uint32_t vo_aifs;
+};
+
+/**
+ * struct mlme_edca_ac_vi - cwmin, cwmax and  aifs value for edca_ac_vi
+ *
+ * @vi_cwmin: cwmin value for video
+ * @vi_cwmax: cwmax value for video
+ * @vi_aifs: aifs value for video
+ */
+struct mlme_edca_ac_vi {
+	uint32_t vi_cwmin;
+	uint32_t vi_cwmax;
+	uint32_t vi_aifs;
+};
+
+/**
+ * struct mlme_edca_ac_bk - cwmin, cwmax and  aifs value for edca_ac_bk
+ *
+ * @bk_cwmin: cwmin value for background
+ * @bk_cwmax: cwmax value for background
+ * @bk_aifs: aifs value for background
+ */
+struct mlme_edca_ac_bk {
+	uint32_t bk_cwmin;
+	uint32_t bk_cwmax;
+	uint32_t bk_aifs;
+};
+
+/**
+ * struct mlme_edca_ac_be - cwmin, cwmax and  aifs value for edca_ac_be
+ *
+ * @be_cwmin: cwmin value for best effort
+ * @be_cwmax: cwmax value for best effort
+ * @be_aifs: aifs value for best effort
+ */
+struct mlme_edca_ac_be {
+	uint32_t be_cwmin;
+	uint32_t be_cwmax;
+	uint32_t be_aifs;
+};
+
 /**
  * struct mlme_edca_params - EDCA pramaters related config items
  *
@@ -149,6 +201,11 @@ enum e_edca_type {
  * @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
+ * @enable_edca_params: Enable edca parameter
+ * @mlme_edca_ac_vo: value for edca_ac_vo
+ * @mlme_edca_ac_vi: value for edca_ac_vi
+ * @mlme_edca_ac_bk: value for edca_ac_bk
+ * @mlme_edca_ac_be: value for edca_ac_be
  */
 struct wlan_mlme_edca_params {
 	struct mlme_cfg_str ani_acbk_l;
@@ -177,6 +234,12 @@ struct wlan_mlme_edca_params {
 	struct mlme_cfg_str etsi_acbe_b;
 	struct mlme_cfg_str etsi_acvi_b;
 	struct mlme_cfg_str etsi_acvo_b;
+
+	bool enable_edca_params;
+	struct mlme_edca_ac_vo edca_ac_vo;
+	struct mlme_edca_ac_vi edca_ac_vi;
+	struct mlme_edca_ac_bk edca_ac_bk;
+	struct mlme_edca_ac_be edca_ac_be;
 };
 
 #define WLAN_CFG_MFR_NAME_LEN (63)