diff options
| author | Kiran Kumar Lokere <klokere@codeaurora.org> | 2016-08-31 19:04:04 -0700 |
|---|---|---|
| committer | qcabuildsw <qcabuildsw@localhost> | 2016-09-22 16:27:39 -0700 |
| commit | 1d4094ef44e5c1e21ae733759b1d1ffc58bb422d (patch) | |
| tree | 314ef2b89accfdb58c440d9354a074b8f073d980 | |
| parent | 92fe759c38130aeb590962b24ee94d6208cd4eb1 (diff) | |
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
| -rw-r--r-- | core/mac/src/pe/lim/lim_prop_exts_utils.c | 19 | ||||
| -rw-r--r-- | core/mac/src/pe/lim/lim_send_management_frames.c | 7 |
2 files changed, 26 insertions, 0 deletions
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) { |
