summaryrefslogtreecommitdiff
path: root/core/mac
diff options
context:
space:
mode:
authorPoddar, Siddarth <siddpodd@codeaurora.org>2016-08-09 19:06:48 +0530
committerqcabuildsw <qcabuildsw@localhost>2016-08-17 20:06:04 -0700
commit7ca1e08421b1f22ed095aea729de2b28f7b5cf41 (patch)
tree2423f8f7b50b5d6da35482d065651546fe3ef7c9 /core/mac
parent53675724ec2077bfa6600dfeebc6a05e24ddfb4e (diff)
downloadqcacld-7ca1e08421b1f22ed095aea729de2b28f7b5cf41.tar.gz
qcacld-3.0: Delete PMF Sta from previous vdev
qcacld-2.0 to qcacld-3.0 propagation If a PMF Sta is already connected to one interface and try to switch to other interface without sending deauth/disassoc, sta entry is not deleted from previous vdev and one more entry is created on current vdev. Due to this htt is not able to get valid peer for EAPOL packets and EAPOL packets are dropped leading to connection failure. To fix this, Add check to delete PMF Sta from one vdev when assoc request is received on another vdev. Change-Id: Ida2e20fe08af3c6ed426822a71db1fd6854a0bea CRs-Fixed: 1033224
Diffstat (limited to 'core/mac')
-rw-r--r--core/mac/src/pe/lim/lim_process_assoc_req_frame.c9
-rw-r--r--core/mac/src/pe/lim/lim_process_auth_frame.c2
2 files changed, 7 insertions, 4 deletions
diff --git a/core/mac/src/pe/lim/lim_process_assoc_req_frame.c b/core/mac/src/pe/lim/lim_process_assoc_req_frame.c
index ee6c33841b..85d6346bd0 100644
--- a/core/mac/src/pe/lim/lim_process_assoc_req_frame.c
+++ b/core/mac/src/pe/lim/lim_process_assoc_req_frame.c
@@ -137,6 +137,7 @@ static void lim_convert_supported_channels(tpAniSirGlobal mac_ctx,
* lim_check_sta_in_pe_entries() - checks if sta exists in any dph tables.
* @mac_ctx: Pointer to Global MAC structure
* @hdr: A pointer to the MAC header
+ * @sessionid - session id for which session is initiated
*
* This function is called by lim_process_assoc_req_frame() to check if STA
* entry already exists in any of the PE entries of the AP. If it exists, deauth
@@ -145,7 +146,8 @@ static void lim_convert_supported_channels(tpAniSirGlobal mac_ctx,
*
* Return: void
*/
-void lim_check_sta_in_pe_entries(tpAniSirGlobal mac_ctx, tpSirMacMgmtHdr hdr)
+void lim_check_sta_in_pe_entries(tpAniSirGlobal mac_ctx, tpSirMacMgmtHdr hdr,
+ uint16_t sessionid)
{
uint8_t i;
uint16_t assoc_id = 0;
@@ -161,7 +163,8 @@ void lim_check_sta_in_pe_entries(tpAniSirGlobal mac_ctx, tpSirMacMgmtHdr hdr)
&assoc_id, &session->dph.dphHashTable);
if (sta_ds
#ifdef WLAN_FEATURE_11W
- && !sta_ds->rmfEnabled
+ && (!sta_ds->rmfEnabled ||
+ (sessionid != session->peSessionId))
#endif
) {
lim_log(mac_ctx, LOGE,
@@ -1778,7 +1781,7 @@ void lim_process_assoc_req_frame(tpAniSirGlobal mac_ctx, uint8_t *rx_pkt_info,
return;
}
- lim_check_sta_in_pe_entries(mac_ctx, hdr);
+ lim_check_sta_in_pe_entries(mac_ctx, hdr, session->peSessionId);
/* Get pointer to Re/Association Request frame body */
frm_body = WMA_GET_RX_MPDU_DATA(rx_pkt_info);
diff --git a/core/mac/src/pe/lim/lim_process_auth_frame.c b/core/mac/src/pe/lim/lim_process_auth_frame.c
index b996942bd4..149091f11d 100644
--- a/core/mac/src/pe/lim/lim_process_auth_frame.c
+++ b/core/mac/src/pe/lim/lim_process_auth_frame.c
@@ -357,7 +357,7 @@ static void lim_process_auth_frame_type1(tpAniSirGlobal mac_ctx,
* received but ACK lost at STA side, in this case 2nd
* auth frame is already in transmission queue
*/
- lim_log(mac_ctx, LOGE,
+ lim_log(mac_ctx, LOGW,
FL("STA is initiating Auth after ACK lost"));
return;
}