qcacld-3.0: Fix he case failed
lim_check_oui_and_update_session call location is changed by Change-Id: Ib99072c36b72859cb1f8a4336f8aa7f696cb7d02. session->nss is initialized in lim_check_oui_and_update_session, it should be called before lim_extract_ap_capability-> lim_check_is_he_mcs_valid, or he capable of session is disabled, he cases will fail. To fix it, lim_check_oui_and_update_session call location is changed back to follow lim_join_req_update_ht_vht_caps. Add new function lim_disable_bformee_for_iot to handle IoT issue, since it need get channel width of session, let it be called after lim_extract_ap_capability. Change-Id: Ice1d86b3f6711a116b94cd139aae87f249c554d4 CRs-Fixed: 3600303
This commit is contained in:
@@ -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;
|
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) &&
|
if (WLAN_REG_IS_24GHZ_CH_FREQ(bss_desc->chan_freq) &&
|
||||||
!mac_ctx->mlme_cfg->vht_caps.vht_cap_info.b24ghz_band &&
|
!mac_ctx->mlme_cfg->vht_caps.vht_cap_info.b24ghz_band &&
|
||||||
session->dot11mode == MLME_DOT11_MODE_11AC) {
|
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
|
QDF_STATUS
|
||||||
lim_fill_pe_session(struct mac_context *mac_ctx, struct pe_session *session,
|
lim_fill_pe_session(struct mac_context *mac_ctx, struct pe_session *session,
|
||||||
struct bss_description *bss_desc)
|
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,
|
lim_join_req_update_ht_vht_caps(mac_ctx, session, bss_desc,
|
||||||
ie_struct);
|
ie_struct);
|
||||||
|
|
||||||
|
lim_check_oui_and_update_session(mac_ctx, session, ie_struct);
|
||||||
ese_ver_present = ie_struct->ESEVersion.present;
|
ese_ver_present = ie_struct->ESEVersion.present;
|
||||||
|
|
||||||
/* Copying of bssId is already done, while creating session */
|
/* 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,
|
&session->gLimCurrentBssUapsd,
|
||||||
&local_power_constraint, session, &is_pwr_constraint);
|
&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 =
|
mlme_obj->reg_tpc_obj.is_power_constraint_abs =
|
||||||
!is_pwr_constraint;
|
!is_pwr_constraint;
|
||||||
|
Reference in New Issue
Block a user