qcacld-2.0: Modify ETSI AC_BE Txop limit For COT
The Txop limit of AC_BE for ETSI is 6ms. COT fix require
ETSI AC_BE Txop limit minus 500us. Set gStaLocalEDCAForETSI=1
in WCNSS_qcom_cfg.ini to enable COT fix in both AP and
sta.
Change-Id: I8d142078f5ffba6d0fa5f6a4083e89699fcf1f66
CRs-Fixed: 2161931
diff --git a/CORE/MAC/src/pe/sch/schMessage.c b/CORE/MAC/src/pe/sch/schMessage.c
index 497a698..12bfade 100644
--- a/CORE/MAC/src/pe/sch/schMessage.c
+++ b/CORE/MAC/src/pe/sch/schMessage.c
@@ -254,11 +254,7 @@
tANI_U32 etsi_b[] = {WNI_CFG_EDCA_ETSI_ACBE, WNI_CFG_EDCA_ETSI_ACBK,
WNI_CFG_EDCA_ETSI_ACVI, WNI_CFG_EDCA_ETSI_ACVO};
- if(pMac->roam.configParam.gStaLocalEDCAEnable)
- {
- val = WNI_CFG_EDCA_PROFILE_ETSI_EUROPE;
- }
- else if ((wlan_cfgGetStr(pMac, WNI_CFG_COUNTRY_CODE, country_code_str,
+ if ((wlan_cfgGetStr(pMac, WNI_CFG_COUNTRY_CODE, country_code_str,
&country_code_len) == eSIR_SUCCESS) &&
vos_is_etsi_europe_country(country_code_str)) {
val = WNI_CFG_EDCA_PROFILE_ETSI_EUROPE;
@@ -332,6 +328,15 @@
for (idx=0; idx < len; idx++)
params[i][idx] = (tANI_U32) data[idx];
}
+
+ /* If gStaLocalEDCAEnable = 1,
+ * WNI_CFG_EDCA_ETSI_ACBE Txop limit minus 500us
+ */
+ if (local && (val == WNI_CFG_EDCA_PROFILE_ETSI_EUROPE) &&
+ pMac->roam.configParam.gStaLocalEDCAEnable) {
+ /* Txop limit 5500us / 32 = 0xab */
+ params[0][WNI_CFG_EDCA_PROFILE_TXOPA_IDX] = 0xab;
+ }
PELOG1(schLog(pMac, LOG1, FL("GetParams: local=%d, profile = %d Done"), local, val);)
return eSIR_SUCCESS;
}
diff --git a/CORE/SME/src/sme_common/sme_Api.c b/CORE/SME/src/sme_common/sme_Api.c
index db41071..02c1ae8 100644
--- a/CORE/SME/src/sme_common/sme_Api.c
+++ b/CORE/SME/src/sme_common/sme_Api.c
@@ -5108,6 +5108,8 @@
pParam->sub20_channelwidth = pMac->sub20_channelwidth;
pParam->sub20_dynamic_channelwidth = pMac->sub20_dynamic_channelwidth;
pParam->sta_change_cc_via_beacon = pMac->sta_change_cc_via_beacon;
+ pParam->csrConfig.gStaLocalEDCAEnable =
+ pMac->roam.configParam.gStaLocalEDCAEnable;
sme_ReleaseGlobalLock( &pMac->sme );
}