diff --git a/core/hdd/src/wlan_hdd_cfg.c b/core/hdd/src/wlan_hdd_cfg.c index 99da72e2c131..b7d6ba15f2fa 100644 --- a/core/hdd/src/wlan_hdd_cfg.c +++ b/core/hdd/src/wlan_hdd_cfg.c @@ -6797,6 +6797,15 @@ bool hdd_update_config_dat(hdd_context_t *pHddCtx) hddLog(LOGE, "Could not pass on WNI_CFG_IBSS_ATIM_WIN_SIZE to CFG"); } + + if (sme_cfg_set_int(pHddCtx->hHal, + WNI_CFG_VHT_CSN_BEAMFORMEE_ANT_SUPPORTED, + pConfig->txBFCsnValue) == + QDF_STATUS_E_FAILURE) { + fStatus = false; + hddLog(LOGE, + "Could not pass on WNI_CFG_VHT_CSN_BEAMFORMEE_ANT_SUPPORTED to CFG"); + } return fStatus; } #ifdef FEATURE_WLAN_SCAN_PNO @@ -6937,7 +6946,6 @@ QDF_STATUS hdd_set_sme_config(hdd_context_t *pHddCtx) smeConfig->csrConfig.enableTxBF = pConfig->enableTxBF; smeConfig->csrConfig.enable_txbf_sap_mode = pConfig->enable_txbf_sap_mode; - smeConfig->csrConfig.txBFCsnValue = pConfig->txBFCsnValue; smeConfig->csrConfig.enable2x2 = pConfig->enable2x2; smeConfig->csrConfig.enableVhtFor24GHz = pConfig->enableVhtFor24GHzBand; smeConfig->csrConfig.enableMuBformee = pConfig->enableMuBformee; diff --git a/core/mac/inc/sir_api.h b/core/mac/inc/sir_api.h index 558252485446..2aa2318bdf8e 100644 --- a/core/mac/inc/sir_api.h +++ b/core/mac/inc/sir_api.h @@ -653,8 +653,6 @@ typedef struct sSirSmeStartBssReq { uint8_t center_freq_seg0; uint8_t center_freq_seg1; uint8_t sec_ch_offset; - bool txbf_ini_enabled; - uint8_t txbf_csn_val; uint8_t privacy; uint8_t apUapsdEnable; @@ -1140,9 +1138,6 @@ typedef struct sSirSmeJoinReq { uint8_t txLdpcIniFeatureEnabled; tSirHTConfig htConfig; struct sir_vht_config vht_config; - uint8_t txBFIniFeatureEnabled; - uint8_t txBFCsnValue; - uint8_t txMuBformee; uint8_t enableVhtpAid; uint8_t enableVhtGid; uint8_t enableAmpduPs; diff --git a/core/mac/src/pe/include/lim_session.h b/core/mac/src/pe/include/lim_session.h index 2bc7246f98b3..407c6b178068 100644 --- a/core/mac/src/pe/include/lim_session.h +++ b/core/mac/src/pe/include/lim_session.h @@ -314,12 +314,8 @@ typedef struct sPESession /* Added to Support BT-AMP */ uint8_t ch_center_freq_seg0; enum phy_ch_width ch_width; uint8_t ch_center_freq_seg1; - uint8_t txBFIniFeatureEnabled; - uint8_t txbf_csn_value; - uint8_t txMuBformee; uint8_t enableVhtpAid; uint8_t enableVhtGid; - uint8_t enable_su_tx_bformer; tLimWiderBWChannelSwitchInfo gLimWiderBWChannelSwitch; uint8_t enableAmpduPs; uint8_t enableHtSmps; diff --git a/core/mac/src/pe/lim/lim_assoc_utils.c b/core/mac/src/pe/lim/lim_assoc_utils.c index e26a2e9fb5e5..6ec3e19a9dbe 100644 --- a/core/mac/src/pe/lim/lim_assoc_utils.c +++ b/core/mac/src/pe/lim/lim_assoc_utils.c @@ -2269,12 +2269,12 @@ lim_add_sta(tpAniSirGlobal mac_ctx, #ifdef FEATURE_WLAN_TDLS ((STA_ENTRY_PEER == sta_ds->staType) || (STA_ENTRY_TDLS_PEER == sta_ds->staType)) ? - sta_ds->vhtBeamFormerCapable : - session_entry->txBFIniFeatureEnabled; + sta_ds->vhtBeamFormerCapable : + session_entry->vht_config.su_beam_formee; #else (STA_ENTRY_PEER == sta_ds->staType) ? - sta_ds->vhtBeamFormerCapable : - session_entry->txBFIniFeatureEnabled; + sta_ds->vhtBeamFormerCapable : + session_entry->vht_config.su_beam_formee; #endif add_sta_params->enable_su_tx_bformer = sta_ds->vht_su_bfee_capable; @@ -2793,9 +2793,10 @@ lim_add_sta_self(tpAniSirGlobal pMac, uint16_t staIdx, uint8_t updateSta, lim_log(pMac, LOG1, FL("VHT WIDTH SET %d"), pAddStaParams->ch_width); } - pAddStaParams->vhtTxBFCapable = psessionEntry->txBFIniFeatureEnabled; + pAddStaParams->vhtTxBFCapable = + psessionEntry->vht_config.su_beam_formee; pAddStaParams->enable_su_tx_bformer = - psessionEntry->enable_su_tx_bformer; + psessionEntry->vht_config.su_beam_former; lim_log(pMac, LOG2, FL("vhtCapable: %d vhtTxBFCapable %d, su_bfer %d"), pAddStaParams->vhtCapable, pAddStaParams->vhtTxBFCapable, pAddStaParams->enable_su_tx_bformer); @@ -2811,7 +2812,8 @@ lim_add_sta_self(tpAniSirGlobal pMac, uint16_t staIdx, uint8_t updateSta, } pAddStaParams->maxAmpduSize = (uint8_t) ampduLenExponent; } - pAddStaParams->vhtTxMUBformeeCapable = psessionEntry->txMuBformee; + pAddStaParams->vhtTxMUBformeeCapable = + psessionEntry->vht_config.mu_beam_formee; pAddStaParams->enableVhtpAid = psessionEntry->enableVhtpAid; pAddStaParams->enableAmpduPs = psessionEntry->enableAmpduPs; pAddStaParams->enableHtSmps = (psessionEntry->enableHtSmps && @@ -3749,15 +3751,16 @@ tSirRetStatus lim_sta_send_add_bss(tpAniSirGlobal pMac, tpSirAssocRsp pAssocRsp, } if ((vht_caps != NULL) && (vht_caps->suBeamFormerCap || - vht_caps->muBeamformerCap) && - psessionEntry->txBFIniFeatureEnabled) + vht_caps->muBeamformerCap) && + psessionEntry->vht_config.su_beam_formee) sta_context->vhtTxBFCapable = 1; if ((vht_caps != NULL) && vht_caps->muBeamformerCap && - psessionEntry->txMuBformee) + psessionEntry->vht_config.mu_beam_formee) sta_context->vhtTxMUBformeeCapable = 1; + if ((vht_caps != NULL) && vht_caps->suBeamformeeCap && - psessionEntry->enable_su_tx_bformer) + psessionEntry->vht_config.su_beam_former) sta_context->enable_su_tx_bformer = 1; } @@ -4286,18 +4289,20 @@ tSirRetStatus lim_sta_send_add_bss_pre_assoc(tpAniSirGlobal pMac, uint8_t update vht_caps = &pBeaconStruct->vendor2_ie.VHTCaps; if ((vht_caps != NULL) && (vht_caps->suBeamFormerCap || - vht_caps->muBeamformerCap) && - psessionEntry->txBFIniFeatureEnabled) + vht_caps->muBeamformerCap) && + psessionEntry->vht_config.su_beam_formee) pAddBssParams->staContext.vhtTxBFCapable = 1; if ((vht_caps != NULL) && vht_caps->muBeamformerCap && - psessionEntry->txMuBformee) + psessionEntry->vht_config.mu_beam_formee) pAddBssParams->staContext.vhtTxMUBformeeCapable = 1; + if ((vht_caps != NULL) && vht_caps->suBeamformeeCap && - psessionEntry->enable_su_tx_bformer) + psessionEntry->vht_config.su_beam_former) pAddBssParams->staContext.enable_su_tx_bformer = 1; + lim_log(pMac, LOG2, FL("StaContext: su_tx_bfer %d"), pAddBssParams->staContext.enable_su_tx_bformer); } diff --git a/core/mac/src/pe/lim/lim_ft.c b/core/mac/src/pe/lim/lim_ft.c index 770ff88533dc..c8abf3256b27 100644 --- a/core/mac/src/pe/lim/lim_ft.c +++ b/core/mac/src/pe/lim/lim_ft.c @@ -371,11 +371,11 @@ void lim_ft_prepare_add_bss_req(tpAniSirGlobal pMac, pAddBssParams->staContext.vhtCapable = 1; if ((pBeaconStruct->VHTCaps.suBeamFormerCap || pBeaconStruct->VHTCaps.muBeamformerCap) && - pftSessionEntry->txBFIniFeatureEnabled) + pftSessionEntry->vht_config.su_beam_formee) sta_ctx->vhtTxBFCapable = 1; if (pBeaconStruct->VHTCaps.suBeamformeeCap && - pftSessionEntry->enable_su_tx_bformer) + pftSessionEntry->vht_config.su_beam_former) sta_ctx->enable_su_tx_bformer = 1; } if ((pBeaconStruct->HTCaps.supportedChannelWidthSet) && diff --git a/core/mac/src/pe/lim/lim_process_assoc_req_frame.c b/core/mac/src/pe/lim/lim_process_assoc_req_frame.c index 2aebb6f39e4c..ee6c33841b00 100644 --- a/core/mac/src/pe/lim/lim_process_assoc_req_frame.c +++ b/core/mac/src/pe/lim/lim_process_assoc_req_frame.c @@ -1373,12 +1373,12 @@ static bool lim_update_sta_ds(tpAniSirGlobal mac_ctx, tpSirMacMgmtHdr hdr, sta_ds->mlmStaContext.vhtCapability = 0; } if (sta_ds->mlmStaContext.vhtCapability) { - if (session->txBFIniFeatureEnabled && + if (session->vht_config.su_beam_formee && assoc_req->VHTCaps.suBeamFormerCap) sta_ds->vhtBeamFormerCapable = 1; else sta_ds->vhtBeamFormerCapable = 0; - if (session->enable_su_tx_bformer && + if (session->vht_config.su_beam_former && assoc_req->VHTCaps.suBeamformeeCap) sta_ds->vht_su_bfee_capable = 1; else diff --git a/core/mac/src/pe/lim/lim_process_mlm_req_messages.c b/core/mac/src/pe/lim/lim_process_mlm_req_messages.c index 1bf4471e9f08..88629e7e4dad 100644 --- a/core/mac/src/pe/lim/lim_process_mlm_req_messages.c +++ b/core/mac/src/pe/lim/lim_process_mlm_req_messages.c @@ -426,10 +426,11 @@ static void mlm_add_sta(tpAniSirGlobal mac_ctx, tpAddStaParams sta_param, if (session_entry->vhtCapability) { sta_param->vhtCapable = true; sta_param->vhtTxBFCapable = - session_entry->txBFIniFeatureEnabled; - sta_param->vhtTxMUBformeeCapable = session_entry->txMuBformee; + session_entry->vht_config.su_beam_formee; + sta_param->vhtTxMUBformeeCapable = + session_entry->vht_config.mu_beam_formee; sta_param->enable_su_tx_bformer = - session_entry->enable_su_tx_bformer; + session_entry->vht_config.su_beam_former; } /* * Since this is Self-STA, need to populate Self MAX_AMPDU_SIZE diff --git a/core/mac/src/pe/lim/lim_process_sme_req_messages.c b/core/mac/src/pe/lim/lim_process_sme_req_messages.c index 46de9dc32f2d..7a7e324761fe 100644 --- a/core/mac/src/pe/lim/lim_process_sme_req_messages.c +++ b/core/mac/src/pe/lim/lim_process_sme_req_messages.c @@ -826,15 +826,10 @@ __lim_handle_sme_start_bss_request(tpAniSirGlobal mac_ctx, uint32_t *msg_buf) case eSIR_INFRA_AP_MODE: lim_configure_ap_start_bss_session(mac_ctx, session, sme_start_bss_req); - if (session->pePersona == QDF_SAP_MODE) { - session->txBFIniFeatureEnabled = - sme_start_bss_req->txbf_ini_enabled; - session->txbf_csn_value = - sme_start_bss_req->txbf_csn_val; + if (session->pePersona == QDF_SAP_MODE) session->vdev_nss = vdev_type_nss->sap; - } else { + else session->vdev_nss = vdev_type_nss->p2p_go; - } break; case eSIR_IBSS_MODE: session->limSystemRole = eLIM_STA_IN_IBSS_ROLE; @@ -930,22 +925,23 @@ __lim_handle_sme_start_bss_request(tpAniSirGlobal mac_ctx, uint32_t *msg_buf) } if (session->vhtCapability && - (CH_WIDTH_160MHZ > session->ch_width)) { - if (wlan_cfg_get_int(mac_ctx, - WNI_CFG_VHT_SU_BEAMFORMER_CAP, &val) != - eSIR_SUCCESS) - lim_log(mac_ctx, LOGE, FL( - "cfg get vht su bformer failed")); - - session->enable_su_tx_bformer = val; - } else { + (session->ch_width > CH_WIDTH_80MHZ)) { session->nss = 1; + lim_log(mac_ctx, LOG1, FL("nss set to [%d]"), + session->nss); } - lim_log(mac_ctx, LOG1, FL("vht su tx bformer %d"), val); + lim_log(mac_ctx, LOG1, FL("vht su tx bformer %d"), + session->vht_config.su_beam_former); /* Delete pre-auth list if any */ lim_delete_pre_auth_list(mac_ctx); + if (session->nss == 1) { + session->vht_config.su_beam_former = 0; + session->vht_config.tx_stbc = 0; + session->vht_config.num_soundingdim = 0; + session->ht_caps.txSTBC = 0; + } /* * keep the RSN/WPA IE information in PE Session Entry * later will be using this to check when received (Re)Assoc req @@ -1784,46 +1780,25 @@ __lim_process_sme_join_req(tpAniSirGlobal mac_ctx, uint32_t *msg_buf) IS_DOT11_MODE_VHT(session->dot11mode); if (session->vhtCapability) { if (session->pePersona == QDF_STA_MODE) { - session->txBFIniFeatureEnabled = - sme_join_req->txBFIniFeatureEnabled; + session->vht_config.su_beam_formee = + sme_join_req->vht_config.su_beam_formee; } else { - session->txBFIniFeatureEnabled = 0; + session->vht_config.su_beam_formee = 0; } - session->txMuBformee = sme_join_req->txMuBformee; session->enableVhtpAid = sme_join_req->enableVhtpAid; session->enableVhtGid = sme_join_req->enableVhtGid; - - if (wlan_cfg_get_int(mac_ctx, - WNI_CFG_VHT_SU_BEAMFORMER_CAP, &val) != - eSIR_SUCCESS) - lim_log(mac_ctx, LOGE, FL( - "cfg get vht su bformer failed")); - - session->enable_su_tx_bformer = val; - } - if (session->vhtCapability && session->txBFIniFeatureEnabled) { - if (cfg_set_int(mac_ctx, WNI_CFG_VHT_SU_BEAMFORMEE_CAP, - session->txBFIniFeatureEnabled) != - eSIR_SUCCESS) { - /* - * Set failed for - * CFG_VHT_SU_BEAMFORMEE_CAP - */ - lim_log(mac_ctx, LOGP, - FL("Failed CFG_VHT_SU_BEAMFORMEE_CAP")); - ret_code = eSIR_LOGP_EXCEPTION; - goto end; - } - session->txbf_csn_value = sme_join_req->txBFCsnValue; + lim_log(mac_ctx, LOG1, FL("vht su bformer [%d]"), + session->vht_config.su_beam_former); } + lim_log(mac_ctx, LOG1, - FL("vhtCapability: %d txBFIniFeatureEnabled: %d txbf_csn_value: %d su_tx_bformer %d"), + FL("vhtCapability: %d su_beam_formee: %d txbf_csn_value: %d su_tx_bformer %d"), session->vhtCapability, - session->txBFIniFeatureEnabled, - session->txbf_csn_value, - session->enable_su_tx_bformer); + session->vht_config.su_beam_formee, + session->vht_config.csnof_beamformer_antSup, + session->vht_config.su_beam_former); /*Phy mode */ session->gLimPhyMode = bss_desc->nwType; handle_ht_capabilityand_ht_info(mac_ctx, session); @@ -1971,6 +1946,17 @@ __lim_process_sme_join_req(tpAniSirGlobal mac_ctx, uint32_t *msg_buf) &session->gLimCurrentBssUapsd, &local_power_constraint, session); + /* + * Once the AP capabilities are available then set the + * beam forming capabilities accordingly. + */ + if (session->nss == 1) { + session->vht_config.su_beam_former = 0; + session->vht_config.tx_stbc = 0; + session->vht_config.num_soundingdim = 0; + session->ht_caps.txSTBC = 0; + } + #ifdef FEATURE_WLAN_ESE session->maxTxPower = lim_get_max_tx_power(reg_max, local_power_constraint, diff --git a/core/mac/src/pe/lim/lim_prop_exts_utils.c b/core/mac/src/pe/lim/lim_prop_exts_utils.c index 268a2c18ed1d..192fb2d91f7f 100644 --- a/core/mac/src/pe/lim/lim_prop_exts_utils.c +++ b/core/mac/src/pe/lim/lim_prop_exts_utils.c @@ -140,13 +140,13 @@ lim_extract_ap_capability(tpAniSirGlobal mac_ctx, uint8_t *p_ie, VHT_MCS_3x3_MASK) && ((beacon_struct->VHTCaps.txMCSMap & VHT_MCS_2x2_MASK) != VHT_MCS_2x2_MASK))) - session->txBFIniFeatureEnabled = 0; + session->vht_config.su_beam_formee = 0; } else { session->vhtCapabilityPresentInBeacon = 0; } if (session->vhtCapabilityPresentInBeacon == 1 && - session->txBFIniFeatureEnabled == 0) { + session->vht_config.su_beam_formee == 0) { cfg_set_status = cfg_set_int(mac_ctx, WNI_CFG_VHT_SU_BEAMFORMEE_CAP, 0); @@ -161,7 +161,7 @@ lim_extract_ap_capability(tpAniSirGlobal mac_ctx, uint8_t *p_ie, &enable_txbf_20mhz); if ((IS_SIR_STATUS_SUCCESS(cfg_get_status)) && (false == enable_txbf_20mhz)) - session->txBFIniFeatureEnabled = 0; + session->vht_config.su_beam_formee = 0; } else if (session->vhtCapabilityPresentInBeacon && vht_op->chanWidth) { /* If VHT is supported min 80 MHz support is must */ @@ -242,13 +242,13 @@ lim_extract_ap_capability(tpAniSirGlobal mac_ctx, uint8_t *p_ie, session->ch_center_freq_seg1, session->ch_width); if (CH_WIDTH_80MHZ < session->ch_width) { - session->enable_su_tx_bformer = 0; + session->vht_config.su_beam_former = 0; session->nss = 1; } } if (session->vhtCapabilityPresentInBeacon == 1 && !session->htSupportedChannelWidthSet && - session->txBFIniFeatureEnabled == 0) { + session->vht_config.su_beam_formee == 0) { cfg_set_status = cfg_set_int(mac_ctx, WNI_CFG_VHT_SU_BEAMFORMEE_CAP, 0); diff --git a/core/mac/src/sys/legacy/src/utils/src/parser_api.c b/core/mac/src/sys/legacy/src/utils/src/parser_api.c index 95382cfae9c8..b586c0f3308e 100644 --- a/core/mac/src/sys/legacy/src/utils/src/parser_api.c +++ b/core/mac/src/sys/legacy/src/utils/src/parser_api.c @@ -971,6 +971,7 @@ populate_dot11f_vht_caps(tpAniSirGlobal pMac, if (psessionEntry->ch_width < CH_WIDTH_160MHZ) { pDot11f->shortGI160and80plus80MHz = 0; + pDot11f->supportedChannelWidthSet = 0; } else { pDot11f->shortGI160and80plus80MHz = psessionEntry->vht_config.shortgi160and80plus80; @@ -982,18 +983,20 @@ populate_dot11f_vht_caps(tpAniSirGlobal pMac, if (psessionEntry->htConfig.ht_rx_stbc) pDot11f->rxSTBC = psessionEntry->vht_config.rx_stbc; - pDot11f->suBeamformeeCap = psessionEntry->txBFIniFeatureEnabled; - if (psessionEntry->txBFIniFeatureEnabled) { + pDot11f->suBeamformeeCap = + psessionEntry->vht_config.su_beam_formee; + if (psessionEntry->vht_config.su_beam_formee) { nCfgValue = 0; CFG_GET_INT(nStatus, pMac, WNI_CFG_VHT_MU_BEAMFORMEE_CAP, nCfgValue); pDot11f->muBeamformeeCap = (nCfgValue & 0x0001); pDot11f->csnofBeamformerAntSup = - psessionEntry->txbf_csn_value; + psessionEntry->vht_config.csnof_beamformer_antSup; } else { pDot11f->muBeamformeeCap = 0; } - pDot11f->suBeamFormerCap = psessionEntry->enable_su_tx_bformer; + pDot11f->suBeamFormerCap = + psessionEntry->vht_config.su_beam_former; pDot11f->vhtTXOPPS = psessionEntry->vht_config.vht_txops; diff --git a/core/sme/inc/csr_api.h b/core/sme/inc/csr_api.h index 2c22a81ea407..8cfbff20ba66 100644 --- a/core/sme/inc/csr_api.h +++ b/core/sme/inc/csr_api.h @@ -1186,7 +1186,6 @@ typedef struct tagCsrConfigParam { uint32_t nVhtChannelWidth; uint8_t enableTxBF; uint8_t enable_txbf_sap_mode; - uint8_t txBFCsnValue; uint8_t enable2x2; bool enableVhtFor24GHz; uint8_t enableMuBformee; diff --git a/core/sme/inc/csr_internal.h b/core/sme/inc/csr_internal.h index 4119caec762d..c4eb5ea257e6 100644 --- a/core/sme/inc/csr_internal.h +++ b/core/sme/inc/csr_internal.h @@ -602,12 +602,9 @@ typedef struct tagCsrConfig { /* To enable scanning 2g channels twice on single scan req from HDD */ bool fScanTwice; uint32_t nVhtChannelWidth; - uint8_t txBFEnable; uint8_t enable_txbf_sap_mode; - uint8_t txBFCsnValue; uint8_t enable2x2; bool enableVhtFor24GHz; - uint8_t txMuBformee; uint8_t enableVhtpAid; uint8_t enableVhtGid; uint8_t enableAmpduPs; diff --git a/core/sme/src/csr/csr_api_roam.c b/core/sme/src/csr/csr_api_roam.c index de985fd1f764..b29c7c05349c 100644 --- a/core/sme/src/csr/csr_api_roam.c +++ b/core/sme/src/csr/csr_api_roam.c @@ -2314,14 +2314,11 @@ QDF_STATUS csr_change_default_config_param(tpAniSirGlobal pMac, pMac->roam.configParam.nVhtChannelWidth = pParam->nVhtChannelWidth; - pMac->roam.configParam.txBFEnable = pParam->enableTxBF; pMac->roam.configParam.enable_txbf_sap_mode = pParam->enable_txbf_sap_mode; - pMac->roam.configParam.txBFCsnValue = pParam->txBFCsnValue; pMac->roam.configParam.enable2x2 = pParam->enable2x2; pMac->roam.configParam.enableVhtFor24GHz = pParam->enableVhtFor24GHz; - pMac->roam.configParam.txMuBformee = pParam->enableMuBformee; pMac->roam.configParam.enableVhtpAid = pParam->enableVhtpAid; pMac->roam.configParam.enableVhtGid = pParam->enableVhtGid; pMac->roam.configParam.enableAmpduPs = pParam->enableAmpduPs; @@ -2512,11 +2509,8 @@ QDF_STATUS csr_get_config_param(tpAniSirGlobal pMac, tCsrConfigParam *pParam) &cfg_params->neighborRoamConfig, sizeof(tCsrNeighborRoamConfigParams)); pParam->nVhtChannelWidth = cfg_params->nVhtChannelWidth; - pParam->enableTxBF = cfg_params->txBFEnable; pParam->enable_txbf_sap_mode = cfg_params->enable_txbf_sap_mode; - pParam->txBFCsnValue = cfg_params->txBFCsnValue; - pParam->enableMuBformee = cfg_params->txMuBformee; pParam->enableVhtFor24GHz = cfg_params->enableVhtFor24GHz; pParam->ignore_peer_erp_info = cfg_params->ignore_peer_erp_info; pParam->enable2x2 = cfg_params->enable2x2; @@ -13615,7 +13609,7 @@ QDF_STATUS csr_send_join_req_msg(tpAniSirGlobal pMac, uint32_t sessionId, struct ps_params *ps_param = &ps_global_info->ps_params[sessionId]; uint8_t ese_config = 0; tpCsrNeighborRoamControlInfo neigh_roam_info; - + uint32_t value = 0, value1 = 0; if (!pSession) { sms_log(pMac, LOGE, FL(" session %d not found "), sessionId); @@ -14088,11 +14082,19 @@ QDF_STATUS csr_send_join_req_msg(tpAniSirGlobal pMac, uint32_t sessionId, FL("ht capability 0x%x VHT capability 0x%x"), (unsigned int)(*(uint32_t *) &csr_join_req->htConfig), (unsigned int)(*(uint32_t *) &csr_join_req->vht_config)); - csr_join_req->txBFIniFeatureEnabled = - (uint8_t) pMac->roam.configParam.txBFEnable; - if (pMac->roam.configParam.txBFEnable) { - txBFCsnValue = - (uint8_t)pMac->roam.configParam.txBFCsnValue; + if (wlan_cfg_get_int(pMac, WNI_CFG_VHT_SU_BEAMFORMEE_CAP, + &value) != eSIR_SUCCESS) + QDF_TRACE(QDF_MODULE_ID_QDF, QDF_TRACE_LEVEL_ERROR, + FL("Failed to get SU beamformee capability")); + if (wlan_cfg_get_int(pMac, + WNI_CFG_VHT_CSN_BEAMFORMEE_ANT_SUPPORTED, + &value1) != eSIR_SUCCESS) + QDF_TRACE(QDF_MODULE_ID_QDF, QDF_TRACE_LEVEL_ERROR, + FL("Failed to get CSN beamformee capability")); + + csr_join_req->vht_config.su_beam_formee = value; + if (value) { + txBFCsnValue = (uint8_t)value1; if (IS_BSS_VHT_CAPABLE(pIes->VHTCaps) && pIes->VHTCaps.numSoundingDim) txBFCsnValue = QDF_MIN(txBFCsnValue, @@ -14102,10 +14104,14 @@ QDF_STATUS csr_send_join_req_msg(tpAniSirGlobal pMac, uint32_t sessionId, txBFCsnValue = QDF_MIN(txBFCsnValue, pIes->vendor2_ie.VHTCaps.numSoundingDim); } - csr_join_req->txBFCsnValue = txBFCsnValue; + csr_join_req->vht_config.csnof_beamformer_antSup = txBFCsnValue; - csr_join_req->txMuBformee = - (uint8_t) pMac->roam.configParam.txMuBformee; + 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, + FL("Failed to get CSN beamformee capability")); + csr_join_req->vht_config.mu_beam_formee = (uint8_t) value; csr_join_req->enableVhtpAid = (uint8_t) pMac->roam.configParam.enableVhtpAid; @@ -14765,6 +14771,7 @@ QDF_STATUS csr_send_mb_start_bss_req_msg(tpAniSirGlobal pMac, uint32_t sessionId { tSirSmeStartBssReq *pMsg; uint16_t wTmp; + uint32_t value = 0; tCsrRoamSession *pSession = CSR_GET_SESSION(pMac, sessionId); if (!pSession) { @@ -14828,10 +14835,21 @@ QDF_STATUS csr_send_mb_start_bss_req_msg(tpAniSirGlobal pMac, uint32_t sessionId pMsg->isCoalesingInIBSSAllowed = pMac->isCoalesingInIBSSAllowed; pMsg->bssPersona = pParam->bssPersona; pMsg->txLdpcIniFeatureEnabled = pMac->roam.configParam.txLdpcEnable; - pMsg->txbf_ini_enabled = - (uint8_t)pMac->roam.configParam.txBFEnable && + + if (wlan_cfg_get_int(pMac, WNI_CFG_VHT_SU_BEAMFORMEE_CAP, &value) + != eSIR_SUCCESS) + QDF_TRACE(QDF_MODULE_ID_QDF, QDF_TRACE_LEVEL_ERROR, + FL("could not get SU beam formee capability")); + pMsg->vht_config.su_beam_formee = + (uint8_t)value && (uint8_t)pMac->roam.configParam.enable_txbf_sap_mode; - pMsg->txbf_csn_val = (uint8_t)pMac->roam.configParam.txBFCsnValue; + if (wlan_cfg_get_int(pMac, + WNI_CFG_VHT_CSN_BEAMFORMEE_ANT_SUPPORTED, + &value) != eSIR_SUCCESS) + QDF_TRACE(QDF_MODULE_ID_QDF, QDF_TRACE_LEVEL_ERROR, + FL("Failed to get CSN beamformee capability")); + pMsg->vht_config.csnof_beamformer_antSup = (uint8_t)value; + #ifdef WLAN_FEATURE_11W pMsg->pmfCapable = pParam->mfpCapable; pMsg->pmfRequired = pParam->mfpRequired;