summaryrefslogtreecommitdiff
path: root/core/mac/src
diff options
context:
space:
mode:
authorSelvaraj, Sridhar <sselvara@codeaurora.org>2016-09-13 12:45:22 +0530
committerqcabuildsw <qcabuildsw@localhost>2016-09-22 03:26:35 -0700
commite01e0732d8a3de4592745349379eb1ccd929a967 (patch)
treefd5329855cfd1b68cb9da09fd2fa5b06cb5288c2 /core/mac/src
parent656a19e0fecdcf3513818dc853198865b48cf66d (diff)
qcacld-3.0: Move HT/VHT parameter from PEsession to Station dph entry
Move HT/VHT parameter from PEsession to Station dph entry which are introduced as part of wlan data logging. Change-Id: Icd9258c32a82d3842708ac92b498106d870d7f4f CRs-Fixed: 1053747
Diffstat (limited to 'core/mac/src')
-rw-r--r--core/mac/src/include/dph_global.h23
-rw-r--r--core/mac/src/pe/include/lim_session.h4
-rw-r--r--core/mac/src/pe/lim/lim_process_assoc_rsp_frame.c15
-rw-r--r--core/mac/src/pe/lim/lim_process_sme_req_messages.c4
-rw-r--r--core/mac/src/pe/lim/lim_send_sme_rsp_messages.c24
5 files changed, 50 insertions, 20 deletions
diff --git a/core/mac/src/include/dph_global.h b/core/mac/src/include/dph_global.h
index 89bb6e0e85e1..63236b9be124 100644
--- a/core/mac/src/include/dph_global.h
+++ b/core/mac/src/include/dph_global.h
@@ -103,6 +103,28 @@ typedef struct sDphQueueAttr {
uint16_t rsvd:1;
} tDphQueueAttr, *tpDphQueueAttr;
+/**
+ * struct parsed_ies: Parsed IE's of BSS capability
+ * @ht_caps: HT caps IE
+ * @vht_caps: VHT caps IE
+ * @ht_operation: HT operation IE
+ * @vht_operation: VHT operation IE
+ * @hs20vendor_ie: HS2.0 vendor IE
+ *
+ * This structure holds the parsed IE of connected BSS
+ * and this is not the intersection of BSS and STA
+ * capability. For example, if BSS supports 80 MHz
+ * and STA connects to BSS in 20 MHz, this structure
+ * holds 80 MHz as peer capability.
+ */
+struct parsed_ies {
+ tDot11fIEHTCaps ht_caps;
+ tDot11fIEVHTCaps vht_caps;
+ tDot11fIEHTInfo ht_operation;
+ tDot11fIEVHTOperation vht_operation;
+ tDot11fIEhs20vendor_ie hs20vendor_ie;
+};
+
/* STA state node */
typedef struct sDphHashNode {
/*
@@ -242,6 +264,7 @@ typedef struct sDphHashNode {
uint8_t nss;
int8_t del_sta_ctx_rssi;
bool sta_deletion_in_progress;
+ struct parsed_ies parsed_ies;
/*
* When a station with already an existing dph entry tries to
diff --git a/core/mac/src/pe/include/lim_session.h b/core/mac/src/pe/include/lim_session.h
index ea306bf695f8..f12cc19a7619 100644
--- a/core/mac/src/pe/include/lim_session.h
+++ b/core/mac/src/pe/include/lim_session.h
@@ -476,10 +476,6 @@ typedef struct sPESession /* Added to Support BT-AMP */
/* Supported NSS is intersection of self and peer NSS */
bool supported_nss_1x1;
bool is_ext_caps_present;
- tDot11fIEHTCaps ht_caps;
- tDot11fIEVHTCaps vht_caps;
- tDot11fIEHTInfo ht_operation;
- tDot11fIEVHTOperation vht_operation;
uint8_t beacon_tx_rate;
uint8_t *access_policy_vendor_ie;
uint8_t access_policy;
diff --git a/core/mac/src/pe/lim/lim_process_assoc_rsp_frame.c b/core/mac/src/pe/lim/lim_process_assoc_rsp_frame.c
index ab87740e3707..8e267663c73d 100644
--- a/core/mac/src/pe/lim/lim_process_assoc_rsp_frame.c
+++ b/core/mac/src/pe/lim/lim_process_assoc_rsp_frame.c
@@ -996,11 +996,16 @@ lim_process_assoc_rsp_frame(tpAniSirGlobal mac_ctx,
ie_len,
beacon);
- session_entry->vht_caps = beacon->VHTCaps;
- session_entry->ht_caps = beacon->HTCaps;
- session_entry->hs20vendor_ie = beacon->hs20vendor_ie;
- session_entry->ht_operation = beacon->HTInfo;
- session_entry->vht_operation = beacon->VHTOperation;
+ if (beacon->VHTCaps.present)
+ sta_ds->parsed_ies.vht_caps = beacon->VHTCaps;
+ if (beacon->HTCaps.present)
+ sta_ds->parsed_ies.ht_caps = beacon->HTCaps;
+ if (beacon->hs20vendor_ie.present)
+ sta_ds->parsed_ies.hs20vendor_ie = beacon->hs20vendor_ie;
+ if (beacon->HTInfo.present)
+ sta_ds->parsed_ies.ht_operation = beacon->HTInfo;
+ if (beacon->VHTOperation.present)
+ sta_ds->parsed_ies.vht_operation = beacon->VHTOperation;
if (mac_ctx->lim.gLimProtectionControl !=
WNI_CFG_FORCE_POLICY_PROTECTION_DISABLE)
diff --git a/core/mac/src/pe/lim/lim_process_sme_req_messages.c b/core/mac/src/pe/lim/lim_process_sme_req_messages.c
index 951d860665ac..006aaba04ca6 100644
--- a/core/mac/src/pe/lim/lim_process_sme_req_messages.c
+++ b/core/mac/src/pe/lim/lim_process_sme_req_messages.c
@@ -941,7 +941,7 @@ __lim_handle_sme_start_bss_request(tpAniSirGlobal mac_ctx, uint32_t *msg_buf)
session->vht_config.su_beam_former = 0;
session->vht_config.tx_stbc = 0;
session->vht_config.num_soundingdim = 0;
- session->ht_caps.txSTBC = 0;
+ session->htConfig.ht_tx_stbc = 0;
}
/*
* keep the RSN/WPA IE information in PE Session Entry
@@ -1931,7 +1931,7 @@ __lim_process_sme_join_req(tpAniSirGlobal mac_ctx, uint32_t *msg_buf)
session->vht_config.su_beam_former = 0;
session->vht_config.tx_stbc = 0;
session->vht_config.num_soundingdim = 0;
- session->ht_caps.txSTBC = 0;
+ session->htConfig.ht_tx_stbc = 0;
}
#ifdef FEATURE_WLAN_ESE
diff --git a/core/mac/src/pe/lim/lim_send_sme_rsp_messages.c b/core/mac/src/pe/lim/lim_send_sme_rsp_messages.c
index 4fdd41270ddd..26d0190c47d5 100644
--- a/core/mac/src/pe/lim/lim_send_sme_rsp_messages.c
+++ b/core/mac/src/pe/lim/lim_send_sme_rsp_messages.c
@@ -393,19 +393,25 @@ static void lim_handle_join_rsp_status(tpAniSirGlobal mac_ctx,
/**
* lim_add_bss_info() - copy data from session entry to join rsp
- * @session_entry: PE Session Info
+ * @sta_ds: Station dph entry
* @sme_join_rsp: Join response buffer to be filled up
*
* Return: None
*/
-void lim_add_bss_info(tpPESession session_entry,
- tpSirSmeJoinRsp sme_join_rsp)
+void lim_add_bss_info(tpDphHashNode sta_ds, tpSirSmeJoinRsp sme_join_rsp)
{
- sme_join_rsp->hs20vendor_ie = session_entry->hs20vendor_ie;
- sme_join_rsp->vht_caps = session_entry->vht_caps;
- sme_join_rsp->ht_caps = session_entry->ht_caps;
- sme_join_rsp->ht_operation = session_entry->ht_operation;
- sme_join_rsp->vht_operation = session_entry->vht_operation;
+ struct parsed_ies *parsed_ies = &sta_ds->parsed_ies;
+
+ if (parsed_ies->hs20vendor_ie.present)
+ sme_join_rsp->hs20vendor_ie = parsed_ies->hs20vendor_ie;
+ if (parsed_ies->vht_caps.present)
+ sme_join_rsp->vht_caps = parsed_ies->vht_caps;
+ if (parsed_ies->ht_caps.present)
+ sme_join_rsp->ht_caps = parsed_ies->ht_caps;
+ if (parsed_ies->ht_operation.present)
+ sme_join_rsp->ht_operation = parsed_ies->ht_operation;
+ if (parsed_ies->vht_operation.present)
+ sme_join_rsp->vht_operation = parsed_ies->vht_operation;
}
/**
@@ -500,6 +506,7 @@ lim_send_sme_join_reassoc_rsp(tpAniSirGlobal mac_ctx, uint16_t msg_type,
sme_join_rsp->nss = sta_ds->nss;
sme_join_rsp->max_rate_flags =
lim_get_max_rate_flags(mac_ctx, sta_ds);
+ lim_add_bss_info(sta_ds, sme_join_rsp);
}
}
sme_join_rsp->beaconLength = 0;
@@ -509,7 +516,6 @@ lim_send_sme_join_reassoc_rsp(tpAniSirGlobal mac_ctx, uint16_t msg_type,
#ifdef FEATURE_WLAN_ESE
sme_join_rsp->tspecIeLen = 0;
#endif
- lim_add_bss_info(session_entry, sme_join_rsp);
lim_handle_join_rsp_status(mac_ctx, session_entry, result_code,
sme_join_rsp);