diff options
| author | Abhishek Singh <absingh@codeaurora.org> | 2017-04-11 11:54:54 +0530 |
|---|---|---|
| committer | Sandeep Puligilla <spuligil@codeaurora.org> | 2017-04-11 22:31:49 -0700 |
| commit | 42eba0b802c8fe593d5e15a56ba1f93ed49c2580 (patch) | |
| tree | 82b5bff95992b8bbcababca8ddd4769b7b8a13e4 | |
| parent | 74c8eb0807ba7a478aa0a8ff16d6279766d6c2c0 (diff) | |
qcacld-3.0: Set SU bformer capability only if AP is SU bformee
If SU beamformer is set in assoc req when AP is not SU beamformee
low throughput is seen with specific AP.
To fix this, set SU bformer capability only if AP is SU bformee and
set SU bformee capability only if AP is SU bformer
Change-Id: I9093352d48722eb79db7b1992ac873bd8cf13e66
CRs-Fixed: 2025399
| -rw-r--r-- | core/sme/src/csr/csr_api_roam.c | 55 |
1 files changed, 49 insertions, 6 deletions
diff --git a/core/sme/src/csr/csr_api_roam.c b/core/sme/src/csr/csr_api_roam.c index 676f1698272a..3bbf8521d2e9 100644 --- a/core/sme/src/csr/csr_api_roam.c +++ b/core/sme/src/csr/csr_api_roam.c @@ -14551,8 +14551,22 @@ QDF_STATUS csr_send_join_req_msg(tpAniSirGlobal pMac, uint32_t sessionId, QDF_TRACE(QDF_MODULE_ID_QDF, QDF_TRACE_LEVEL_ERROR, ("Failed to get CSN beamformee capability")); + /* + * Set SU Bformee only if SU Bformee is enabled in INI + * and AP is SU Bformer capable + */ + if (value && !((IS_BSS_VHT_CAPABLE(pIes->VHTCaps) && + pIes->VHTCaps.suBeamFormerCap) || + (IS_BSS_VHT_CAPABLE( + pIes->vendor_vht_ie.VHTCaps) + && pIes->vendor_vht_ie.VHTCaps. + suBeamFormerCap))) + value = 0; + csr_join_req->vht_config.su_beam_formee = value; - if (value) { + + /* Set BF CSN value only if SU Bformee is enabled */ + if (csr_join_req->vht_config.su_beam_formee) { txBFCsnValue = (uint8_t)value1; if (IS_BSS_VHT_CAPABLE(pIes->VHTCaps) && pIes->VHTCaps.csnofBeamformerAntSup) @@ -14569,11 +14583,40 @@ QDF_STATUS csr_send_join_req_msg(tpAniSirGlobal pMac, uint32_t sessionId, csr_join_req->vht_config.csnof_beamformer_antSup = txBFCsnValue; if (wlan_cfg_get_int(pMac, - WNI_CFG_VHT_MU_BEAMFORMEE_CAP, &value) - != eSIR_SUCCESS) - QDF_TRACE(QDF_MODULE_ID_QDF, QDF_TRACE_LEVEL_ERROR, - ("Failed to get CSN beamformee capability")); - csr_join_req->vht_config.mu_beam_formee = (uint8_t) value; + WNI_CFG_VHT_SU_BEAMFORMER_CAP, &value) + != eSIR_SUCCESS) + sme_err("Failed to get SU beamformer capability"); + + /* + * Set SU Bformer only if SU Bformer is enabled in INI + * and AP is SU Bformee capable + */ + if (value && !((IS_BSS_VHT_CAPABLE(pIes->VHTCaps) && + pIes->VHTCaps.suBeamformeeCap) || + (IS_BSS_VHT_CAPABLE( + pIes->vendor_vht_ie.VHTCaps) + && pIes->vendor_vht_ie.VHTCaps. + suBeamformeeCap))) + value = 0; + + csr_join_req->vht_config.su_beam_former = value; + + /* Set num soundingdim value to 0 if SU Bformer is disabled */ + if (!csr_join_req->vht_config.su_beam_former) + csr_join_req->vht_config.num_soundingdim = 0; + + if (wlan_cfg_get_int(pMac, + WNI_CFG_VHT_MU_BEAMFORMEE_CAP, &value) + != eSIR_SUCCESS) + sme_err("Failed to get CSN beamformee capability"); + /* + * Set MU Bformee only if SU Bformee is enabled and + * MU Bformee is enabled in INI + */ + if (value && csr_join_req->vht_config.su_beam_formee) + csr_join_req->vht_config.mu_beam_formee = 1; + else + csr_join_req->vht_config.mu_beam_formee = 0; csr_join_req->enableVhtpAid = (uint8_t) pMac->roam.configParam.enableVhtpAid; |
