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 cdff0e1eb772..b5a14336e07a 100644 --- a/core/mac/src/pe/lim/lim_prop_exts_utils.c +++ b/core/mac/src/pe/lim/lim_prop_exts_utils.c @@ -87,6 +87,7 @@ lim_extract_ap_capability(tpAniSirGlobal mac_ctx, uint8_t *p_ie, uint8_t fw_vht_ch_wd; uint8_t vht_ch_wd; uint8_t center_freq_diff; + struct s_ext_cap *ext_cap; beacon_struct = qdf_mem_malloc(sizeof(tSirProbeRespBeacon)); if (NULL == beacon_struct) { @@ -267,6 +268,24 @@ lim_extract_ap_capability(tpAniSirGlobal mac_ctx, uint8_t *p_ie, lim_log(mac_ctx, LOGP, FL("Set VHT_SU_BEAMFORMEE_CAP Fail")); } + if (session->vhtCapability && + session->vhtCapabilityPresentInBeacon && + beacon_struct->ext_cap.present) { + ext_cap = (struct s_ext_cap *)beacon_struct->ext_cap.bytes; + session->gLimOperatingMode.present = + ext_cap->oper_mode_notification; + if (ext_cap->oper_mode_notification) { + if (CH_WIDTH_160MHZ > session->ch_width) + session->gLimOperatingMode.chanWidth = + session->ch_width; + else + session->gLimOperatingMode.chanWidth = + CH_WIDTH_160MHZ; + } else { + lim_log(mac_ctx, LOGE, FL( + "AP does not support op_mode rx")); + } + } /* Extract the UAPSD flag from WMM Parameter element */ if (beacon_struct->wmeEdcaPresent) *uapsd = beacon_struct->edcaParams.qosInfo.uapsd; diff --git a/core/mac/src/pe/lim/lim_send_management_frames.c b/core/mac/src/pe/lim/lim_send_management_frames.c index dbd4ff3d9dfd..0643ddcd6463 100644 --- a/core/mac/src/pe/lim/lim_send_management_frames.c +++ b/core/mac/src/pe/lim/lim_send_management_frames.c @@ -1796,6 +1796,13 @@ lim_send_assoc_req_mgmt_frame(tpAniSirGlobal mac_ctx, lim_log(mac_ctx, LOG1, FL("Populate VHT IEs in Assoc Request")); populate_dot11f_vht_caps(mac_ctx, pe_session, &frm->VHTCaps); vht_enabled = true; + if (pe_session->enableHtSmps && + !pe_session->supported_nss_1x1) { + lim_log(mac_ctx, LOGE, FL( + "VHT OP mode IE in Assoc Req")); + populate_dot11f_operating_mode(mac_ctx, + &frm->OperatingMode, pe_session); + } } if (!vht_enabled && pe_session->is_vendor_specific_vhtcaps) {