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
This commit is contained in:
Selvaraj, Sridhar 2016-09-13 12:45:22 +05:30 • committed by qcabuildsw
commit e01e0732d8
5 changed files with 50 additions and 20 deletions

View file

@ -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

View file

@ -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;

View file

@ -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)

View file

@ -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

View file

@ -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);