summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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);