summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPoddar, Siddarth <siddpodd@qti.qualcomm.com>2016-06-27 14:06:39 +0530
committerAnjaneedevi Kapparapu <akappa@codeaurora.org>2016-06-28 18:02:28 +0530
commit53ced02b084b33969567d64f5bc1d5f5f1543319 (patch)
tree4d653c389f2cf99a9d28e3e6aaeb373bda5036eb
parent030090e8fa4ed69b2dd39082a329665f124b0f7d (diff)
qcacld-2.0: Delete PMF Sta from previous vdev
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
-rw-r--r--CORE/MAC/src/pe/lim/limProcessAssocReqFrame.c35
-rw-r--r--CORE/MAC/src/pe/lim/limProcessAuthFrame.c4
2 files changed, 21 insertions, 18 deletions
diff --git a/CORE/MAC/src/pe/lim/limProcessAssocReqFrame.c b/CORE/MAC/src/pe/lim/limProcessAssocReqFrame.c
index 4d6fb1f821bb..cc24b8f76fae 100644
--- a/CORE/MAC/src/pe/lim/limProcessAssocReqFrame.c
+++ b/CORE/MAC/src/pe/lim/limProcessAssocReqFrame.c
@@ -156,20 +156,22 @@ limConvertSupportedChannels(tpAniSirGlobal pMac,
pMlmAssocInd->supportedChannels.numChnl);)
}
-/**---------------------------------------------------------------
-\fn lim_check_sta_in_pe_entries
-\brief This function is called by limProcessAssocReqFrame()
-\ to check if STA entry already exists in any of the
-\ PE entries of the AP. If it exists, deauth will be
-\ sent on that session and the STA deletion will
-\ happen. After this, the ASSOC request will be
-\ processed
-\
-\param pMac - A pointer to Global MAC structure
-\param pHdr - A pointer to the MAC header
-\return None
-------------------------------------------------------------------*/
-void lim_check_sta_in_pe_entries(tpAniSirGlobal pMac, tpSirMacMgmtHdr pHdr)
+/**
+ * lim_check_sta_in_pe_entries() - to check if sta entry already exists
+ * @pMac - A pointer to Global MAC structure
+ * @pHdr - A pointer to the MAC header
+ * @sessionid - session id for which session is initiated
+ *
+ * This function is called by limProcessAssocReqFrame()
+ * to check if STA entry already exists in any of the
+ * PE entries of the AP. If it exists, deauth will be
+ * sent on that session and the STA deletion will
+ * happen. After this, the ASSOC request will be processed
+ *
+ * Return: None
+ */
+void lim_check_sta_in_pe_entries(tpAniSirGlobal pMac, tpSirMacMgmtHdr pHdr,
+ uint16_t sessionid)
{
tANI_U8 i;
tANI_U16 assocId = 0;
@@ -188,7 +190,8 @@ void lim_check_sta_in_pe_entries(tpAniSirGlobal pMac, tpSirMacMgmtHdr pHdr)
&psessionEntry->dph.dphHashTable);
if (pStaDs
#ifdef WLAN_FEATURE_11W
- && !pStaDs->rmfEnabled
+ && (!pStaDs->rmfEnabled ||
+ (sessionid != psessionEntry->peSessionId))
#endif
) {
limLog(pMac, LOGE,
@@ -321,7 +324,7 @@ limProcessAssocReqFrame(tpAniSirGlobal pMac, tANI_U8 *pRxPacketInfo,
}
}
- lim_check_sta_in_pe_entries(pMac, pHdr);
+ lim_check_sta_in_pe_entries(pMac, pHdr, psessionEntry->peSessionId);
// Get pointer to Re/Association Request frame body
pBody = WDA_GET_RX_MPDU_DATA(pRxPacketInfo);
diff --git a/CORE/MAC/src/pe/lim/limProcessAuthFrame.c b/CORE/MAC/src/pe/lim/limProcessAuthFrame.c
index 61028eca0667..1fcaab0ceb13 100644
--- a/CORE/MAC/src/pe/lim/limProcessAuthFrame.c
+++ b/CORE/MAC/src/pe/lim/limProcessAuthFrame.c
@@ -661,7 +661,7 @@ limProcessAuthFrame(tpAniSirGlobal pMac, tANI_U8 *pRxPacketInfo, tpPESession pse
eLIM_AUTH_RSP_TIMER,
pAuthNode->authNodeIdx);
}
- PELOGE(limLog(pMac, LOGE, FL("STA is initiating brand-new Authentication ..."));)
+ limLog(pMac, LOGW, FL("STA is initiating brand-new Authentication ..."));
limDeletePreAuthNode(pMac,
pHdr->sa);
/**
@@ -710,7 +710,7 @@ limProcessAuthFrame(tpAniSirGlobal pMac, tANI_U8 *pRxPacketInfo, tpPESession pse
* but ACK lost at STA side, in this case 2nd auth frame is already
* in transmission queue
* */
- PELOGE(limLog(pMac, LOGE, FL("STA is initiating Authentication after ACK lost..."));)
+ limLog(pMac, LOGW, FL("STA is initiating Authentication after ACK lost..."));
return;
}
}