From 1d4094ef44e5c1e21ae733759b1d1ffc58bb422d Mon Sep 17 00:00:00 2001 From: Kiran Kumar Lokere Date: Wed, 31 Aug 2016 19:04:04 -0700 Subject: [PATCH] qcacld-3.0: Add support to add VHT op mode IE Add support to include VHT opmode IE in association request frames when the STA is connecting to VHT AP and the connection has SMPS enabled. Change-Id: Id18a6356ac6f08d1846abe42f84713fddef984dc CRs-Fixed: 1062430 --- core/mac/src/pe/lim/lim_prop_exts_utils.c | 19 +++++++++++++++++++ .../src/pe/lim/lim_send_management_frames.c | 7 +++++++ 2 files changed, 26 insertions(+) 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) {