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 cc245e69c6..60f05e5f22 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 @@ -1954,18 +1954,6 @@ static void lim_check_oui_and_update_session(struct mac_context *mac_ctx, session->is_oui_auth_assoc_6mbps_2ghz_enable = true; } - /* When connect to IoT AP with BW 160MHz and NSS 2, - * disable Beamformee - */ - if (wlan_action_oui_search(mac_ctx->psoc, - &vendor_ap_search_attr, - ACTION_OUI_DISABLE_BFORMEE) && - session->nss == 2 && CH_WIDTH_160MHZ == session->ch_width) { - session->vht_config.su_beam_formee = 0; - session->vht_config.mu_beam_formee = 0; - pe_debug("IoT ap, NSS 2 BW 160, disable beamformee"); - } - if (WLAN_REG_IS_24GHZ_CH_FREQ(bss_desc->chan_freq) && !mac_ctx->mlme_cfg->vht_caps.vht_cap_info.b24ghz_band && session->dot11mode == MLME_DOT11_MODE_11AC) { @@ -3142,6 +3130,39 @@ static void lim_reset_self_ocv_caps(struct pe_session *session) } +/** + * lim_disable_bformee_for_iot_ap() - disable bformee for iot ap + *@mac_ctx: mac context + *@session: pe session + *@bss_desc: bss descriptor + * + * When connect IoT AP with BW 160MHz and NSS 2, disable Beamformee + * + * Return: None + */ +static void +lim_disable_bformee_for_iot_ap(struct mac_context *mac_ctx, + struct pe_session *session, + struct bss_description *bss_desc) +{ + struct action_oui_search_attr vendor_ap_search_attr; + uint16_t ie_len; + + ie_len = wlan_get_ielen_from_bss_description(bss_desc); + + vendor_ap_search_attr.ie_data = (uint8_t *)&bss_desc->ieFields[0]; + vendor_ap_search_attr.ie_length = ie_len; + + if (wlan_action_oui_search(mac_ctx->psoc, + &vendor_ap_search_attr, + ACTION_OUI_DISABLE_BFORMEE) && + session->nss == 2 && CH_WIDTH_160MHZ == session->ch_width) { + session->vht_config.su_beam_formee = 0; + session->vht_config.mu_beam_formee = 0; + pe_debug("IoT ap with BW 160 MHz NSS 2, disable Beamformee"); + } +} + QDF_STATUS lim_fill_pe_session(struct mac_context *mac_ctx, struct pe_session *session, struct bss_description *bss_desc) @@ -3266,6 +3287,7 @@ lim_fill_pe_session(struct mac_context *mac_ctx, struct pe_session *session, lim_join_req_update_ht_vht_caps(mac_ctx, session, bss_desc, ie_struct); + lim_check_oui_and_update_session(mac_ctx, session, ie_struct); ese_ver_present = ie_struct->ESEVersion.present; /* Copying of bssId is already done, while creating session */ @@ -3409,7 +3431,7 @@ lim_fill_pe_session(struct mac_context *mac_ctx, struct pe_session *session, &session->gLimCurrentBssUapsd, &local_power_constraint, session, &is_pwr_constraint); - lim_check_oui_and_update_session(mac_ctx, session, ie_struct); + lim_disable_bformee_for_iot_ap(mac_ctx, session, bss_desc); mlme_obj->reg_tpc_obj.is_power_constraint_abs = !is_pwr_constraint;