summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKiran Kumar Lokere <klokere@codeaurora.org>2016-08-31 19:04:04 -0700
committerqcabuildsw <qcabuildsw@localhost>2016-09-22 16:27:39 -0700
commit1d4094ef44e5c1e21ae733759b1d1ffc58bb422d (patch)
tree314ef2b89accfdb58c440d9354a074b8f073d980
parent92fe759c38130aeb590962b24ee94d6208cd4eb1 (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.c19
-rw-r--r--core/mac/src/pe/lim/lim_send_management_frames.c7
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) {