summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAbhishek Singh <absingh@qti.qualcomm.com>2016-04-06 15:15:04 +0530
committerAnjaneedevi Kapparapu <akappa@codeaurora.org>2016-04-07 15:42:29 +0530
commit329b4dafb67bae2cdbfc950cfbc4c8ca6cbba00d (patch)
tree6dd1b4f32f26e1ce8dcb9e86ee0f1f28b64db65f
parent4d02616002ce3f31c438839068d9b7fa9e98fe98 (diff)
qcacld-2.0: Add INI params to set edca min, max and aifs params
prima to qcacld-2.0 propagation Add INI params gEdcaVoCwmin, gEdcaViCwmin, gEdcaBkCwmin, gEdcaBeCwmin, gEdcaVoCwmax, gEdcaViCwmax, gEdcaBkCwmax, gEdcaBeCwmax, gEdcaVoAifs, gEdcaViAifs, gEdcaBkAifs and gEdcaBeAifs to control edca params for STA mode. These params will overwrite the values from AP only if gEnableEdcaParams is set. Change-Id: I1e688a67df320208416aba4ca40fd870a947e3be CRs-Fixed: 996685
-rw-r--r--CORE/HDD/inc/wlan_hdd_cfg.h97
-rw-r--r--CORE/HDD/src/wlan_hdd_cfg.c177
-rw-r--r--CORE/MAC/src/pe/sch/schBeaconProcess.c43
-rw-r--r--CORE/SME/inc/csrApi.h13
-rw-r--r--CORE/SME/inc/csrInternal.h13
-rw-r--r--CORE/SME/src/csr/csrApiRoam.c34
6 files changed, 371 insertions, 6 deletions
diff --git a/CORE/HDD/inc/wlan_hdd_cfg.h b/CORE/HDD/inc/wlan_hdd_cfg.h
index ae1dd94d19a4..f9ad21a47f9b 100644
--- a/CORE/HDD/inc/wlan_hdd_cfg.h
+++ b/CORE/HDD/inc/wlan_hdd_cfg.h
@@ -3725,6 +3725,90 @@ enum dot11p_mode {
#define CFG_CREATE_BUG_REPORT_FOR_SCAN_ENABLE (1)
#define CFG_CREATE_BUG_REPORT_FOR_SCAN_DEFAULT (0)
+/*
+ * 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
+ */
+#define CFG_ENABLE_EDCA_INI_NAME "gEnableEdcaParams"
+#define CFG_ENABLE_EDCA_INI_MIN (0)
+#define CFG_ENABLE_EDCA_INI_MAX (1)
+#define CFG_ENABLE_EDCA_INI_DEFAULT (0)
+
+/* Cwmin value for EDCA_AC_VO. CWVomin = 2^gEdcaVoCwmin -1 */
+#define CFG_EDCA_VO_CWMIN_VALUE_NAME "gEdcaVoCwmin"
+#define CFG_EDCA_VO_CWMIN_VALUE_MIN (0x0)
+#define CFG_EDCA_VO_CWMIN_VALUE_MAX (15)
+#define CFG_EDCA_VO_CWMIN_VALUE_DEFAULT (2)
+
+/* Cwmin value for EDCA_AC_VI. CWVimin = 2^gEdcaViCwmin -1 */
+#define CFG_EDCA_VI_CWMIN_VALUE_NAME "gEdcaViCwmin"
+#define CFG_EDCA_VI_CWMIN_VALUE_MIN (0x0)
+#define CFG_EDCA_VI_CWMIN_VALUE_MAX (15)
+#define CFG_EDCA_VI_CWMIN_VALUE_DEFAULT (3)
+
+/* Cwmin value for EDCA_AC_BK. CWBkmin = 2^gEdcaBkCwmin -1 */
+#define CFG_EDCA_BK_CWMIN_VALUE_NAME "gEdcaBkCwmin"
+#define CFG_EDCA_BK_CWMIN_VALUE_MIN (0x0)
+#define CFG_EDCA_BK_CWMIN_VALUE_MAX (15)
+#define CFG_EDCA_BK_CWMIN_VALUE_DEFAULT (4)
+
+/* Cwmin value for EDCA_AC_BE. CWBemin = 2^gEdcaBeCwmin -1 */
+#define CFG_EDCA_BE_CWMIN_VALUE_NAME "gEdcaBeCwmin"
+#define CFG_EDCA_BE_CWMIN_VALUE_MIN (0x0)
+#define CFG_EDCA_BE_CWMIN_VALUE_MAX (15)
+#define CFG_EDCA_BE_CWMIN_VALUE_DEFAULT (4)
+
+/* Cwmax value for EDCA_AC_VO. CWVomax = 2^gEdcaVoCwmax -1 */
+#define CFG_EDCA_VO_CWMAX_VALUE_NAME "gEdcaVoCwmax"
+#define CFG_EDCA_VO_CWMAX_VALUE_MIN (0)
+#define CFG_EDCA_VO_CWMAX_VALUE_MAX (15)
+#define CFG_EDCA_VO_CWMAX_VALUE_DEFAULT (3)
+
+/* Cwmax value for EDCA_AC_VI. CWVimax = 2^gEdcaViCwmax -1 */
+#define CFG_EDCA_VI_CWMAX_VALUE_NAME "gEdcaViCwmax"
+#define CFG_EDCA_VI_CWMAX_VALUE_MIN (0)
+#define CFG_EDCA_VI_CWMAX_VALUE_MAX (15)
+#define CFG_EDCA_VI_CWMAX_VALUE_DEFAULT (4)
+
+/* Cwmax value for EDCA_AC_BK. CWBkmax = 2^gEdcaBkCwmax -1 */
+#define CFG_EDCA_BK_CWMAX_VALUE_NAME "gEdcaBkCwmax"
+#define CFG_EDCA_BK_CWMAX_VALUE_MIN (0)
+#define CFG_EDCA_BK_CWMAX_VALUE_MAX (15)
+#define CFG_EDCA_BK_CWMAX_VALUE_DEFAULT (10)
+
+/* Cwmax value for EDCA_AC_BE. CWBemax = 2^gEdcaBeCwmax -1 */
+#define CFG_EDCA_BE_CWMAX_VALUE_NAME "gEdcaBeCwmax"
+#define CFG_EDCA_BE_CWMAX_VALUE_MIN (0)
+#define CFG_EDCA_BE_CWMAX_VALUE_MAX (15)
+#define CFG_EDCA_BE_CWMAX_VALUE_DEFAULT (10)
+
+/* Aifs value for EDCA_AC_VO.*/
+#define CFG_EDCA_VO_AIFS_VALUE_NAME "gEdcaVoAifs"
+#define CFG_EDCA_VO_AIFS_VALUE_MIN (0)
+#define CFG_EDCA_VO_AIFS_VALUE_MAX (15)
+#define CFG_EDCA_VO_AIFS_VALUE_DEFAULT (2)
+
+/* Aifs value for EDCA_AC_VI.*/
+#define CFG_EDCA_VI_AIFS_VALUE_NAME "gEdcaViAifs"
+#define CFG_EDCA_VI_AIFS_VALUE_MIN (0)
+#define CFG_EDCA_VI_AIFS_VALUE_MAX (15)
+#define CFG_EDCA_VI_AIFS_VALUE_DEFAULT (2)
+
+/* Aifs value for EDCA_AC_BK.*/
+#define CFG_EDCA_BK_AIFS_VALUE_NAME "gEdcaBkAifs"
+#define CFG_EDCA_BK_AIFS_VALUE_MIN (0)
+#define CFG_EDCA_BK_AIFS_VALUE_MAX (15)
+#define CFG_EDCA_BK_AIFS_VALUE_DEFAULT (7)
+
+/* Aifs value for EDCA_AC_BE.*/
+#define CFG_EDCA_BE_AIFS_VALUE_NAME "gEdcaBeAifs"
+#define CFG_EDCA_BE_AIFS_VALUE_MIN (0)
+#define CFG_EDCA_BE_AIFS_VALUE_MAX (15)
+#define CFG_EDCA_BE_AIFS_VALUE_DEFAULT (3)
+
/*---------------------------------------------------------------------------
Type declarations
-------------------------------------------------------------------------*/
@@ -4465,6 +4549,19 @@ struct hdd_config {
uint32_t tx_aggregation_size;
uint32_t rx_aggregation_size;
bool bug_report_for_scan_results;
+ bool enable_edca_params;
+ uint32_t edca_vo_cwmin;
+ uint32_t edca_vi_cwmin;
+ uint32_t edca_bk_cwmin;
+ uint32_t edca_be_cwmin;
+ uint32_t edca_vo_cwmax;
+ uint32_t edca_vi_cwmax;
+ uint32_t edca_bk_cwmax;
+ uint32_t edca_be_cwmax;
+ uint32_t edca_vo_aifs;
+ uint32_t edca_vi_aifs;
+ uint32_t edca_bk_aifs;
+ uint32_t edca_be_aifs;
};
typedef struct hdd_config hdd_config_t;
diff --git a/CORE/HDD/src/wlan_hdd_cfg.c b/CORE/HDD/src/wlan_hdd_cfg.c
index 10bdedcec115..ac583a18170f 100644
--- a/CORE/HDD/src/wlan_hdd_cfg.c
+++ b/CORE/HDD/src/wlan_hdd_cfg.c
@@ -4450,6 +4450,110 @@ REG_TABLE_ENTRY g_registry_table[] =
CFG_CREATE_BUG_REPORT_FOR_SCAN_DEFAULT,
CFG_CREATE_BUG_REPORT_FOR_SCAN_DISABLE,
CFG_CREATE_BUG_REPORT_FOR_SCAN_ENABLE),
+
+ REG_VARIABLE(CFG_ENABLE_EDCA_INI_NAME, WLAN_PARAM_Integer,
+ hdd_config_t, enable_edca_params,
+ VAR_FLAGS_OPTIONAL |
+ VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+ CFG_ENABLE_EDCA_INI_DEFAULT,
+ CFG_ENABLE_EDCA_INI_MIN,
+ CFG_ENABLE_EDCA_INI_MAX),
+
+ REG_VARIABLE(CFG_EDCA_VO_CWMIN_VALUE_NAME, WLAN_PARAM_Integer,
+ hdd_config_t, edca_vo_cwmin,
+ VAR_FLAGS_OPTIONAL |
+ VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+ CFG_EDCA_VO_CWMIN_VALUE_DEFAULT,
+ CFG_EDCA_VO_CWMIN_VALUE_MIN,
+ CFG_EDCA_VO_CWMIN_VALUE_MAX),
+
+ REG_VARIABLE(CFG_EDCA_VI_CWMIN_VALUE_NAME, WLAN_PARAM_Integer,
+ hdd_config_t, edca_vi_cwmin,
+ VAR_FLAGS_OPTIONAL |
+ VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+ CFG_EDCA_VI_CWMIN_VALUE_DEFAULT,
+ CFG_EDCA_VI_CWMIN_VALUE_MIN,
+ CFG_EDCA_VI_CWMIN_VALUE_MAX),
+
+ REG_VARIABLE(CFG_EDCA_BK_CWMIN_VALUE_NAME, WLAN_PARAM_Integer,
+ hdd_config_t, edca_bk_cwmin,
+ VAR_FLAGS_OPTIONAL |
+ VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+ CFG_EDCA_BK_CWMIN_VALUE_DEFAULT,
+ CFG_EDCA_BK_CWMIN_VALUE_MIN,
+ CFG_EDCA_BK_CWMIN_VALUE_MAX),
+
+ REG_VARIABLE(CFG_EDCA_BE_CWMIN_VALUE_NAME, WLAN_PARAM_Integer,
+ hdd_config_t, edca_be_cwmin,
+ VAR_FLAGS_OPTIONAL |
+ VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+ CFG_EDCA_BE_CWMIN_VALUE_DEFAULT,
+ CFG_EDCA_BE_CWMIN_VALUE_MIN,
+ CFG_EDCA_BE_CWMIN_VALUE_MAX),
+
+ REG_VARIABLE(CFG_EDCA_VO_CWMAX_VALUE_NAME, WLAN_PARAM_Integer,
+ hdd_config_t, edca_vo_cwmax,
+ VAR_FLAGS_OPTIONAL |
+ VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+ CFG_EDCA_VO_CWMAX_VALUE_DEFAULT,
+ CFG_EDCA_VO_CWMAX_VALUE_MIN,
+ CFG_EDCA_VO_CWMAX_VALUE_MAX),
+
+ REG_VARIABLE(CFG_EDCA_VI_CWMAX_VALUE_NAME, WLAN_PARAM_Integer,
+ hdd_config_t, edca_vi_cwmax,
+ VAR_FLAGS_OPTIONAL |
+ VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+ CFG_EDCA_VI_CWMAX_VALUE_DEFAULT,
+ CFG_EDCA_VI_CWMAX_VALUE_MIN,
+ CFG_EDCA_VI_CWMAX_VALUE_MAX),
+
+ REG_VARIABLE(CFG_EDCA_BK_CWMAX_VALUE_NAME, WLAN_PARAM_Integer,
+ hdd_config_t, edca_bk_cwmax,
+ VAR_FLAGS_OPTIONAL |
+ VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+ CFG_EDCA_BK_CWMAX_VALUE_DEFAULT,
+ CFG_EDCA_BK_CWMAX_VALUE_MIN,
+ CFG_EDCA_BK_CWMAX_VALUE_MAX),
+
+ REG_VARIABLE(CFG_EDCA_BE_CWMAX_VALUE_NAME, WLAN_PARAM_Integer,
+ hdd_config_t, edca_be_cwmax,
+ VAR_FLAGS_OPTIONAL |
+ VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+ CFG_EDCA_BE_CWMAX_VALUE_DEFAULT,
+ CFG_EDCA_BE_CWMAX_VALUE_MIN,
+ CFG_EDCA_BE_CWMAX_VALUE_MAX),
+
+ REG_VARIABLE(CFG_EDCA_VO_AIFS_VALUE_NAME, WLAN_PARAM_Integer,
+ hdd_config_t, edca_vo_aifs,
+ VAR_FLAGS_OPTIONAL |
+ VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+ CFG_EDCA_VO_AIFS_VALUE_DEFAULT,
+ CFG_EDCA_VO_AIFS_VALUE_MIN,
+ CFG_EDCA_VO_AIFS_VALUE_MAX),
+
+ REG_VARIABLE(CFG_EDCA_VI_AIFS_VALUE_NAME, WLAN_PARAM_Integer,
+ hdd_config_t, edca_vi_aifs,
+ VAR_FLAGS_OPTIONAL |
+ VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+ CFG_EDCA_VI_AIFS_VALUE_DEFAULT,
+ CFG_EDCA_VI_AIFS_VALUE_MIN,
+ CFG_EDCA_VI_AIFS_VALUE_MAX),
+
+ REG_VARIABLE(CFG_EDCA_BK_AIFS_VALUE_NAME, WLAN_PARAM_Integer,
+ hdd_config_t, edca_bk_aifs,
+ VAR_FLAGS_OPTIONAL |
+ VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+ CFG_EDCA_BK_AIFS_VALUE_DEFAULT,
+ CFG_EDCA_BK_AIFS_VALUE_MIN,
+ CFG_EDCA_BK_AIFS_VALUE_MAX),
+
+ REG_VARIABLE(CFG_EDCA_BE_AIFS_VALUE_NAME, WLAN_PARAM_Integer,
+ hdd_config_t, edca_be_aifs,
+ VAR_FLAGS_OPTIONAL |
+ VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+ CFG_EDCA_BE_AIFS_VALUE_DEFAULT,
+ CFG_EDCA_BE_AIFS_VALUE_MIN,
+ CFG_EDCA_BE_AIFS_VALUE_MAX),
};
@@ -5210,6 +5314,49 @@ void print_hdd_cfg(hdd_context_t *pHddCtx)
hddLog(LOG2, "Name = [%s] Value = [%u]",
CFG_USE_OTP_MAC, pHddCtx->cfg_ini->g_use_otpmac);
+ hddLog(LOG2,"Name = [%s] Value = [%u]",
+ CFG_ENABLE_EDCA_INI_NAME,
+ pHddCtx->cfg_ini->enable_edca_params);
+
+ hddLog(LOG2, "Name = [%s] Value = [%u]",
+ CFG_EDCA_VO_CWMIN_VALUE_NAME,
+ pHddCtx->cfg_ini->edca_vo_cwmin);
+ hddLog(LOG2, "Name = [%s] Value = [%u]",
+ CFG_EDCA_VI_CWMIN_VALUE_NAME,
+ pHddCtx->cfg_ini->edca_vi_cwmin);
+ hddLog(LOG2, "Name = [%s] Value = [%u]",
+ CFG_EDCA_BK_CWMIN_VALUE_NAME,
+ pHddCtx->cfg_ini->edca_bk_cwmin);
+ hddLog(LOG2, "Name = [%s] Value = [%u]",
+ CFG_EDCA_BE_CWMIN_VALUE_NAME,
+ pHddCtx->cfg_ini->edca_be_cwmin);
+
+ hddLog(LOG2, "Name = [%s] Value = [%u]",
+ CFG_EDCA_VO_CWMAX_VALUE_NAME,
+ pHddCtx->cfg_ini->edca_vo_cwmax);
+ hddLog(LOG2, "Name = [%s] Value = [%u]",
+ CFG_EDCA_VI_CWMAX_VALUE_NAME,
+ pHddCtx->cfg_ini->edca_vi_cwmax);
+ hddLog(LOG2, "Name = [%s] Value = [%u]",
+ CFG_EDCA_BK_CWMAX_VALUE_NAME,
+ pHddCtx->cfg_ini->edca_bk_cwmax);
+ hddLog(LOG2, "Name = [%s] Value = [%u]",
+ CFG_EDCA_BE_CWMAX_VALUE_NAME,
+ pHddCtx->cfg_ini->edca_be_cwmax);
+
+ hddLog(LOG2, "Name = [%s] Value = [%u]",
+ CFG_EDCA_VO_AIFS_VALUE_NAME,
+ pHddCtx->cfg_ini->edca_vo_aifs);
+ hddLog(LOG2, "Name = [%s] Value = [%u]",
+ CFG_EDCA_VI_AIFS_VALUE_NAME,
+ pHddCtx->cfg_ini->edca_vi_aifs);
+ hddLog(LOG2, "Name = [%s] Value = [%u]",
+ CFG_EDCA_BK_AIFS_VALUE_NAME,
+ pHddCtx->cfg_ini->edca_bk_aifs);
+ hddLog(LOG2, "Name = [%s] Value = [%u]",
+ CFG_EDCA_BE_AIFS_VALUE_NAME,
+ pHddCtx->cfg_ini->edca_be_aifs);
+
hdd_ndp_print_ini_config(pHddCtx);
}
@@ -7108,6 +7255,36 @@ VOS_STATUS hdd_set_sme_config( hdd_context_t *pHddCtx )
pHddCtx->cfg_ini->tx_aggregation_size;
smeConfig->csrConfig.rx_aggregation_size =
pHddCtx->cfg_ini->rx_aggregation_size;
+
+ smeConfig->csrConfig.enable_edca_params =
+ pHddCtx->cfg_ini->enable_edca_params;
+
+ smeConfig->csrConfig.edca_vo_cwmin =
+ pHddCtx->cfg_ini->edca_vo_cwmin;
+ smeConfig->csrConfig.edca_vi_cwmin =
+ pHddCtx->cfg_ini->edca_vi_cwmin;
+ smeConfig->csrConfig.edca_bk_cwmin =
+ pHddCtx->cfg_ini->edca_bk_cwmin;
+ smeConfig->csrConfig.edca_be_cwmin =
+ pHddCtx->cfg_ini->edca_be_cwmin;
+
+ smeConfig->csrConfig.edca_vo_cwmax =
+ pHddCtx->cfg_ini->edca_vo_cwmax;
+ smeConfig->csrConfig.edca_vi_cwmax =
+ pHddCtx->cfg_ini->edca_vi_cwmax;
+ smeConfig->csrConfig.edca_bk_cwmax =
+ pHddCtx->cfg_ini->edca_bk_cwmax;
+ smeConfig->csrConfig.edca_be_cwmax =
+ pHddCtx->cfg_ini->edca_be_cwmax;
+
+ smeConfig->csrConfig.edca_vo_aifs =
+ pHddCtx->cfg_ini->edca_vo_aifs;
+ smeConfig->csrConfig.edca_vi_aifs =
+ pHddCtx->cfg_ini->edca_vi_aifs;
+ smeConfig->csrConfig.edca_bk_aifs =
+ pHddCtx->cfg_ini->edca_bk_aifs;
+ smeConfig->csrConfig.edca_be_aifs =
+ pHddCtx->cfg_ini->edca_be_aifs;
halStatus = sme_UpdateConfig( pHddCtx->hHal, smeConfig);
if ( !HAL_STATUS_SUCCESS( halStatus ) )
{
diff --git a/CORE/MAC/src/pe/sch/schBeaconProcess.c b/CORE/MAC/src/pe/sch/schBeaconProcess.c
index 83f374170015..afd1e9682a27 100644
--- a/CORE/MAC/src/pe/sch/schBeaconProcess.c
+++ b/CORE/MAC/src/pe/sch/schBeaconProcess.c
@@ -880,14 +880,43 @@ tSirRetStatus schBeaconEdcaProcess(tpAniSirGlobal pMac, tSirMacEdcaParamSetIE *e
vos_log_qos_edca_pkt_type *log_ptr = NULL;
#endif //FEATURE_WLAN_DIAG_SUPPORT
- PELOG1(schLog(pMac, LOG1, FL("Updating parameter set count: Old %d ---> new %d"),
- psessionEntry->gLimEdcaParamSetCount, edca->qosInfo.count);)
+ schLog(pMac, LOG2, FL("Updating parameter set count: Old %d ---> new %d"),
+ psessionEntry->gLimEdcaParamSetCount, edca->qosInfo.count);
psessionEntry->gLimEdcaParamSetCount = edca->qosInfo.count;
psessionEntry->gLimEdcaParams[EDCA_AC_BE] = edca->acbe;
psessionEntry->gLimEdcaParams[EDCA_AC_BK] = edca->acbk;
psessionEntry->gLimEdcaParams[EDCA_AC_VI] = edca->acvi;
psessionEntry->gLimEdcaParams[EDCA_AC_VO] = edca->acvo;
+
+ if (pMac->roam.configParam.enable_edca_params) {
+ psessionEntry->gLimEdcaParams[EDCA_AC_VO].aci.aifsn =
+ pMac->roam.configParam.edca_vo_aifs;
+ psessionEntry->gLimEdcaParams[EDCA_AC_VI].aci.aifsn =
+ pMac->roam.configParam.edca_vi_aifs;
+ psessionEntry->gLimEdcaParams[EDCA_AC_BK].aci.aifsn =
+ pMac->roam.configParam.edca_bk_aifs;
+ psessionEntry->gLimEdcaParams[EDCA_AC_BE].aci.aifsn =
+ pMac->roam.configParam.edca_be_aifs;
+
+ psessionEntry->gLimEdcaParams[EDCA_AC_VO].cw.min =
+ pMac->roam.configParam.edca_vo_cwmin;
+ psessionEntry->gLimEdcaParams[EDCA_AC_VI].cw.min =
+ pMac->roam.configParam.edca_vi_cwmin;
+ psessionEntry->gLimEdcaParams[EDCA_AC_BK].cw.min =
+ pMac->roam.configParam.edca_bk_cwmin;
+ psessionEntry->gLimEdcaParams[EDCA_AC_BE].cw.min =
+ pMac->roam.configParam.edca_be_cwmin;
+
+ psessionEntry->gLimEdcaParams[EDCA_AC_VO].cw.max =
+ pMac->roam.configParam.edca_vo_cwmax;
+ psessionEntry->gLimEdcaParams[EDCA_AC_VI].cw.max =
+ pMac->roam.configParam.edca_vi_cwmax;
+ psessionEntry->gLimEdcaParams[EDCA_AC_BK].cw.max =
+ pMac->roam.configParam.edca_bk_cwmax;
+ psessionEntry->gLimEdcaParams[EDCA_AC_BE].cw.max =
+ pMac->roam.configParam.edca_be_cwmax;
+ }
#ifdef FEATURE_WLAN_DIAG_SUPPORT
WLAN_VOS_DIAG_LOG_ALLOC(log_ptr, vos_log_qos_edca_pkt_type, LOG_WLAN_QOS_EDCA_C);
if(log_ptr)
@@ -911,16 +940,18 @@ tSirRetStatus schBeaconEdcaProcess(tpAniSirGlobal pMac, tSirMacEdcaParamSetIE *e
}
WLAN_VOS_DIAG_LOG_REPORT(log_ptr);
#endif //FEATURE_WLAN_DIAG_SUPPORT
- PELOG1(schLog(pMac, LOGE, FL("Updating Local EDCA Params(gLimEdcaParams) to: "));)
- for(i=0; i<MAX_NUM_AC; i++)
+ schLog(pMac, LOG1,
+ FL("Edsa param enabled in ini %d. Updating Local EDCA Params(gLimEdcaParams) to: "),
+ pMac->roam.configParam.enable_edca_params);
+ for (i = 0; i < MAX_NUM_AC; i++)
{
- PELOG1(schLog(pMac, LOG1, FL("AC[%d]: AIFSN: %d, ACM %d, CWmin %d, CWmax %d, TxOp %d"),
+ schLog(pMac, LOG1, FL("AC[%d]: AIFSN: %d, ACM %d, CWmin %d, CWmax %d, TxOp %d"),
i,
psessionEntry->gLimEdcaParams[i].aci.aifsn,
psessionEntry->gLimEdcaParams[i].aci.acm,
psessionEntry->gLimEdcaParams[i].cw.min,
psessionEntry->gLimEdcaParams[i].cw.max,
- psessionEntry->gLimEdcaParams[i].txoplimit);)
+ psessionEntry->gLimEdcaParams[i].txoplimit);
}
return eSIR_SUCCESS;
diff --git a/CORE/SME/inc/csrApi.h b/CORE/SME/inc/csrApi.h
index afe7c0e28976..aa413aeabdf8 100644
--- a/CORE/SME/inc/csrApi.h
+++ b/CORE/SME/inc/csrApi.h
@@ -1319,6 +1319,19 @@ typedef struct tagCsrConfigParam
bool enable_fatal_event;
uint32_t tx_aggregation_size;
uint32_t rx_aggregation_size;
+ bool enable_edca_params;
+ uint32_t edca_vo_cwmin;
+ uint32_t edca_vi_cwmin;
+ uint32_t edca_bk_cwmin;
+ uint32_t edca_be_cwmin;
+ uint32_t edca_vo_cwmax;
+ uint32_t edca_vi_cwmax;
+ uint32_t edca_bk_cwmax;
+ uint32_t edca_be_cwmax;
+ uint32_t edca_vo_aifs;
+ uint32_t edca_vi_aifs;
+ uint32_t edca_bk_aifs;
+ uint32_t edca_be_aifs;
}tCsrConfigParam;
//Tush
diff --git a/CORE/SME/inc/csrInternal.h b/CORE/SME/inc/csrInternal.h
index 229dfba2bde1..d70c6ac424ef 100644
--- a/CORE/SME/inc/csrInternal.h
+++ b/CORE/SME/inc/csrInternal.h
@@ -713,6 +713,19 @@ typedef struct tagCsrConfig
bool enable_fatal_event;
uint32_t tx_aggregation_size;
uint32_t rx_aggregation_size;
+ bool enable_edca_params;
+ uint32_t edca_vo_cwmin;
+ uint32_t edca_vi_cwmin;
+ uint32_t edca_bk_cwmin;
+ uint32_t edca_be_cwmin;
+ uint32_t edca_vo_cwmax;
+ uint32_t edca_vi_cwmax;
+ uint32_t edca_bk_cwmax;
+ uint32_t edca_be_cwmax;
+ uint32_t edca_vo_aifs;
+ uint32_t edca_vi_aifs;
+ uint32_t edca_bk_aifs;
+ uint32_t edca_be_aifs;
}tCsrConfig;
typedef struct tagCsrChannelPowerInfo
diff --git a/CORE/SME/src/csr/csrApiRoam.c b/CORE/SME/src/csr/csrApiRoam.c
index 45fb5714d92d..856189b7a3f5 100644
--- a/CORE/SME/src/csr/csrApiRoam.c
+++ b/CORE/SME/src/csr/csrApiRoam.c
@@ -2040,6 +2040,23 @@ eHalStatus csrChangeDefaultConfigParam(tpAniSirGlobal pMac, tCsrConfigParam *pPa
pParam->tx_aggregation_size;
pMac->roam.configParam.rx_aggregation_size =
pParam->rx_aggregation_size;
+
+ pMac->roam.configParam.enable_edca_params =
+ pParam->enable_edca_params;
+ pMac->roam.configParam.edca_vo_cwmin = pParam->edca_vo_cwmin;
+ pMac->roam.configParam.edca_vi_cwmin = pParam->edca_vi_cwmin;
+ pMac->roam.configParam.edca_bk_cwmin = pParam->edca_bk_cwmin;
+ pMac->roam.configParam.edca_be_cwmin = pParam->edca_be_cwmin;
+
+ pMac->roam.configParam.edca_vo_cwmax = pParam->edca_vo_cwmax;
+ pMac->roam.configParam.edca_vi_cwmax = pParam->edca_vi_cwmax;
+ pMac->roam.configParam.edca_bk_cwmax = pParam->edca_bk_cwmax;
+ pMac->roam.configParam.edca_be_cwmax = pParam->edca_be_cwmax;
+
+ pMac->roam.configParam.edca_vo_aifs = pParam->edca_vo_aifs;
+ pMac->roam.configParam.edca_vi_aifs = pParam->edca_vi_aifs;
+ pMac->roam.configParam.edca_bk_aifs = pParam->edca_bk_aifs;
+ pMac->roam.configParam.edca_be_aifs = pParam->edca_be_aifs;
}
return status;
@@ -2216,6 +2233,23 @@ eHalStatus csrGetConfigParam(tpAniSirGlobal pMac, tCsrConfigParam *pParam)
pParam->htSmps = pMac->roam.configParam.htSmps;
pParam->enable_fatal_event =
pMac->roam.configParam.enable_fatal_event;
+
+ pParam->enable_edca_params =
+ pMac->roam.configParam.enable_edca_params;
+ pParam->edca_vo_cwmin = pMac->roam.configParam.edca_vo_cwmin;
+ pParam->edca_vi_cwmin = pMac->roam.configParam.edca_vi_cwmin;
+ pParam->edca_bk_cwmin = pMac->roam.configParam.edca_bk_cwmin;
+ pParam->edca_be_cwmin = pMac->roam.configParam.edca_be_cwmin;
+
+ pParam->edca_vo_cwmax = pMac->roam.configParam.edca_vo_cwmax;
+ pParam->edca_vi_cwmax = pMac->roam.configParam.edca_vi_cwmax;
+ pParam->edca_bk_cwmax = pMac->roam.configParam.edca_bk_cwmax;
+ pParam->edca_be_cwmax = pMac->roam.configParam.edca_be_cwmax;
+
+ pParam->edca_vo_aifs = pMac->roam.configParam.edca_vo_aifs;
+ pParam->edca_vi_aifs = pMac->roam.configParam.edca_vi_aifs;
+ pParam->edca_bk_aifs = pMac->roam.configParam.edca_bk_aifs;
+ pParam->edca_be_aifs = pMac->roam.configParam.edca_be_aifs;
status = eHAL_STATUS_SUCCESS;
}
return (status);