From 10ecf58dc66fb5c0f0e38ef835455b6e9f38ecb5 Mon Sep 17 00:00:00 2001 From: Abhishek Singh Date: Wed, 4 May 2016 17:48:59 +0530 Subject: [PATCH] qcacld-3.0: Add INI params to set edca min, max and aifs params qcacld-2.0 to qcacld-3.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 --- core/hdd/inc/wlan_hdd_cfg.h | 97 +++++++++++++ core/hdd/src/wlan_hdd_cfg.c | 176 +++++++++++++++++++++++ core/mac/src/pe/sch/sch_beacon_process.c | 42 +++++- core/sme/inc/csr_api.h | 13 ++ core/sme/inc/csr_internal.h | 13 ++ core/sme/src/csr/csr_api_roam.c | 34 +++++ 6 files changed, 369 insertions(+), 6 deletions(-) diff --git a/core/hdd/inc/wlan_hdd_cfg.h b/core/hdd/inc/wlan_hdd_cfg.h index 10b6c72a8331..b178cf6f8d4c 100644 --- a/core/hdd/inc/wlan_hdd_cfg.h +++ b/core/hdd/inc/wlan_hdd_cfg.h @@ -3023,6 +3023,90 @@ enum dot11p_mode { #define CFG_ENABLE_FATAL_EVENT_TRIGGER_MAX (1) #define CFG_ENABLE_FATAL_EVENT_TRIGGER_DEFAULT (1) +/* + * 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 -------------------------------------------------------------------------*/ @@ -3627,6 +3711,19 @@ struct hdd_config { uint32_t roam_dense_rssi_thresh_offset; bool ignore_peer_ht_opmode; uint32_t roam_dense_min_aps; + 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; bool enable_fatal_event; bool bpf_enabled; }; diff --git a/core/hdd/src/wlan_hdd_cfg.c b/core/hdd/src/wlan_hdd_cfg.c index e5a3164a9443..521f6bc51c62 100644 --- a/core/hdd/src/wlan_hdd_cfg.c +++ b/core/hdd/src/wlan_hdd_cfg.c @@ -3795,6 +3795,109 @@ REG_TABLE_ENTRY g_registry_table[] = { CFG_ENABLE_FATAL_EVENT_TRIGGER_MIN, CFG_ENABLE_FATAL_EVENT_TRIGGER_MAX), + REG_VARIABLE(CFG_ENABLE_EDCA_INI_NAME, WLAN_PARAM_Integer, + struct hdd_config, 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, + struct hdd_config, 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, + struct hdd_config, 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, + struct hdd_config, 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, + struct hdd_config, 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, + struct hdd_config, 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, + struct hdd_config, 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, + struct hdd_config, 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, + struct hdd_config, 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, + struct hdd_config, 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, + struct hdd_config, 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, + struct hdd_config, 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, + struct hdd_config, 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), }; @@ -5399,6 +5502,49 @@ void hdd_cfg_print(hdd_context_t *pHddCtx) CFG_IDLE_TIME_NAME, pHddCtx->config->idle_time_conc); + + hdd_info("Name = [%s] Value = [%u]", + CFG_ENABLE_EDCA_INI_NAME, + pHddCtx->config->enable_edca_params); + + hdd_info("Name = [%s] Value = [%u]", + CFG_EDCA_VO_CWMIN_VALUE_NAME, + pHddCtx->config->edca_vo_cwmin); + hdd_info("Name = [%s] Value = [%u]", + CFG_EDCA_VI_CWMIN_VALUE_NAME, + pHddCtx->config->edca_vi_cwmin); + hdd_info("Name = [%s] Value = [%u]", + CFG_EDCA_BK_CWMIN_VALUE_NAME, + pHddCtx->config->edca_bk_cwmin); + hdd_info("Name = [%s] Value = [%u]", + CFG_EDCA_BE_CWMIN_VALUE_NAME, + pHddCtx->config->edca_be_cwmin); + + hdd_info("Name = [%s] Value = [%u]", + CFG_EDCA_VO_CWMAX_VALUE_NAME, + pHddCtx->config->edca_vo_cwmax); + hdd_info("Name = [%s] Value = [%u]", + CFG_EDCA_VI_CWMAX_VALUE_NAME, + pHddCtx->config->edca_vi_cwmax); + hdd_info("Name = [%s] Value = [%u]", + CFG_EDCA_BK_CWMAX_VALUE_NAME, + pHddCtx->config->edca_bk_cwmax); + hdd_info("Name = [%s] Value = [%u]", + CFG_EDCA_BE_CWMAX_VALUE_NAME, + pHddCtx->config->edca_be_cwmax); + + hdd_info("Name = [%s] Value = [%u]", + CFG_EDCA_VO_AIFS_VALUE_NAME, + pHddCtx->config->edca_vo_aifs); + hdd_info("Name = [%s] Value = [%u]", + CFG_EDCA_VI_AIFS_VALUE_NAME, + pHddCtx->config->edca_vi_aifs); + hdd_info("Name = [%s] Value = [%u]", + CFG_EDCA_BK_AIFS_VALUE_NAME, + pHddCtx->config->edca_bk_aifs); + hdd_info("Name = [%s] Value = [%u]", + CFG_EDCA_BE_AIFS_VALUE_NAME, + pHddCtx->config->edca_be_aifs); } @@ -6909,6 +7055,36 @@ QDF_STATUS hdd_set_sme_config(hdd_context_t *pHddCtx) smeConfig->csrConfig.enable_fatal_event = pConfig->enable_fatal_event; + smeConfig->csrConfig.enable_edca_params = + pConfig->enable_edca_params; + + smeConfig->csrConfig.edca_vo_cwmin = + pConfig->edca_vo_cwmin; + smeConfig->csrConfig.edca_vi_cwmin = + pConfig->edca_vi_cwmin; + smeConfig->csrConfig.edca_bk_cwmin = + pConfig->edca_bk_cwmin; + smeConfig->csrConfig.edca_be_cwmin = + pConfig->edca_be_cwmin; + + smeConfig->csrConfig.edca_vo_cwmax = + pConfig->edca_vo_cwmax; + smeConfig->csrConfig.edca_vi_cwmax = + pConfig->edca_vi_cwmax; + smeConfig->csrConfig.edca_bk_cwmax = + pConfig->edca_bk_cwmax; + smeConfig->csrConfig.edca_be_cwmax = + pConfig->edca_be_cwmax; + + smeConfig->csrConfig.edca_vo_aifs = + pConfig->edca_vo_aifs; + smeConfig->csrConfig.edca_vi_aifs = + pConfig->edca_vi_aifs; + smeConfig->csrConfig.edca_bk_aifs = + pConfig->edca_bk_aifs; + smeConfig->csrConfig.edca_be_aifs = + pConfig->edca_be_aifs; + status = sme_update_config(pHddCtx->hHal, smeConfig); if (!QDF_IS_STATUS_SUCCESS(status)) { hddLog(LOGE, "sme_update_config() return failure %d", diff --git a/core/mac/src/pe/sch/sch_beacon_process.c b/core/mac/src/pe/sch/sch_beacon_process.c index be5af48c2ce6..b9cdf0ab931a 100644 --- a/core/mac/src/pe/sch/sch_beacon_process.c +++ b/core/mac/src/pe/sch/sch_beacon_process.c @@ -924,15 +924,44 @@ sch_beacon_edca_process(tpAniSirGlobal pMac, tSirMacEdcaParamSetIE *edca, host_log_qos_edca_pkt_type *log_ptr = NULL; #endif /* FEATURE_WLAN_DIAG_SUPPORT */ - PELOG1(sch_log(pMac, LOG1, + sch_log(pMac, LOG2, FL("Updating parameter set count: Old %d ---> new %d"), - session->gLimEdcaParamSetCount, edca->qosInfo.count);) + session->gLimEdcaParamSetCount, edca->qosInfo.count); session->gLimEdcaParamSetCount = edca->qosInfo.count; session->gLimEdcaParams[EDCA_AC_BE] = edca->acbe; session->gLimEdcaParams[EDCA_AC_BK] = edca->acbk; session->gLimEdcaParams[EDCA_AC_VI] = edca->acvi; session->gLimEdcaParams[EDCA_AC_VO] = edca->acvo; + + if (pMac->roam.configParam.enable_edca_params) { + session->gLimEdcaParams[EDCA_AC_VO].aci.aifsn = + pMac->roam.configParam.edca_vo_aifs; + session->gLimEdcaParams[EDCA_AC_VI].aci.aifsn = + pMac->roam.configParam.edca_vi_aifs; + session->gLimEdcaParams[EDCA_AC_BK].aci.aifsn = + pMac->roam.configParam.edca_bk_aifs; + session->gLimEdcaParams[EDCA_AC_BE].aci.aifsn = + pMac->roam.configParam.edca_be_aifs; + + session->gLimEdcaParams[EDCA_AC_VO].cw.min = + pMac->roam.configParam.edca_vo_cwmin; + session->gLimEdcaParams[EDCA_AC_VI].cw.min = + pMac->roam.configParam.edca_vi_cwmin; + session->gLimEdcaParams[EDCA_AC_BK].cw.min = + pMac->roam.configParam.edca_bk_cwmin; + session->gLimEdcaParams[EDCA_AC_BE].cw.min = + pMac->roam.configParam.edca_be_cwmin; + + session->gLimEdcaParams[EDCA_AC_VO].cw.max = + pMac->roam.configParam.edca_vo_cwmax; + session->gLimEdcaParams[EDCA_AC_VI].cw.max = + pMac->roam.configParam.edca_vi_cwmax; + session->gLimEdcaParams[EDCA_AC_BK].cw.max = + pMac->roam.configParam.edca_bk_cwmax; + session->gLimEdcaParams[EDCA_AC_BE].cw.max = + pMac->roam.configParam.edca_be_cwmax; + } #ifdef FEATURE_WLAN_DIAG_SUPPORT WLAN_HOST_DIAG_LOG_ALLOC(log_ptr, host_log_qos_edca_pkt_type, LOG_WLAN_QOS_EDCA_C); @@ -967,16 +996,17 @@ sch_beacon_edca_process(tpAniSirGlobal pMac, tSirMacEdcaParamSetIE *edca, } WLAN_HOST_DIAG_LOG_REPORT(log_ptr); #endif /* FEATURE_WLAN_DIAG_SUPPORT */ - PELOG1(sch_log(pMac, LOGE, - FL("Updating Local EDCA Params(gLimEdcaParams) to: "));) + sch_log(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(sch_log(pMac, LOG1, + sch_log(pMac, LOG1, FL("AC[%d]: AIFSN: %d, ACM %d, CWmin %d, CWmax %d, TxOp %d"), i, session->gLimEdcaParams[i].aci.aifsn, session->gLimEdcaParams[i].aci.acm, session->gLimEdcaParams[i].cw.min, session->gLimEdcaParams[i].cw.max, - session->gLimEdcaParams[i].txoplimit);) + session->gLimEdcaParams[i].txoplimit); } return eSIR_SUCCESS; } diff --git a/core/sme/inc/csr_api.h b/core/sme/inc/csr_api.h index 802afc321f1d..6ba1766660aa 100644 --- a/core/sme/inc/csr_api.h +++ b/core/sme/inc/csr_api.h @@ -1230,6 +1230,19 @@ typedef struct tagCsrConfigParam { uint32_t obss_active_dwelltime; uint32_t obss_passive_dwelltime; bool ignore_peer_ht_opmode; + 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; bool enable_fatal_event; } tCsrConfigParam; diff --git a/core/sme/inc/csr_internal.h b/core/sme/inc/csr_internal.h index 17c806f2c585..4785acff94b1 100644 --- a/core/sme/inc/csr_internal.h +++ b/core/sme/inc/csr_internal.h @@ -649,6 +649,19 @@ typedef struct tagCsrConfig { uint32_t obss_active_dwelltime; uint32_t obss_passive_dwelltime; bool ignore_peer_ht_opmode; + 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; bool enable_fatal_event; } tCsrConfig; diff --git a/core/sme/src/csr/csr_api_roam.c b/core/sme/src/csr/csr_api_roam.c index aafc83dc0c0d..4c3af49c9048 100644 --- a/core/sme/src/csr/csr_api_roam.c +++ b/core/sme/src/csr/csr_api_roam.c @@ -2356,6 +2356,23 @@ QDF_STATUS csr_change_default_config_param(tpAniSirGlobal pMac, pParam->early_stop_scan_min_threshold; pMac->roam.configParam.early_stop_scan_max_threshold = pParam->early_stop_scan_max_threshold; + 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; + pMac->roam.configParam.enable_fatal_event = pParam->enable_fatal_event; @@ -2543,6 +2560,23 @@ QDF_STATUS csr_get_config_param(tpAniSirGlobal pMac, tCsrConfigParam *pParam) pParam->enableHtSmps = pMac->roam.configParam.enableHtSmps; pParam->htSmps = pMac->roam.configParam.htSmps; pParam->send_smps_action = pMac->roam.configParam.send_smps_action; + + 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; pParam->enable_fatal_event = pMac->roam.configParam.enable_fatal_event;