diff options
| -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; |
