diff options
| -rw-r--r-- | CORE/HDD/inc/wlan_hdd_cfg.h | 97 | ||||
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_cfg.c | 177 | ||||
| -rw-r--r-- | CORE/MAC/src/pe/sch/schBeaconProcess.c | 43 | ||||
| -rw-r--r-- | CORE/SME/inc/csrApi.h | 13 | ||||
| -rw-r--r-- | CORE/SME/inc/csrInternal.h | 13 | ||||
| -rw-r--r-- | CORE/SME/src/csr/csrApiRoam.c | 34 |
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); |
