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
Цей коміт міститься в:

зафіксовано
Rahul Choudhary

джерело
d270d9ebc3
коміт
deeac31fbb
@@ -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;
|
||||
|
Посилання в новій задачі
Заблокувати користувача