diff options
| author | Poddar, Siddarth <siddpodd@qti.qualcomm.com> | 2016-06-27 14:06:39 +0530 |
|---|---|---|
| committer | Anjaneedevi Kapparapu <akappa@codeaurora.org> | 2016-06-28 19:55:21 +0530 |
| commit | 5b0dcd0a80892c03d7ece9481bb517cd3b59ec40 (patch) | |
| tree | 4d653c389f2cf99a9d28e3e6aaeb373bda5036eb | |
| parent | 37699ca29a56fb1fec966880d5b875fc12ef6aa5 (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.c | 35 | ||||
| -rw-r--r-- | CORE/MAC/src/pe/lim/limProcessAuthFrame.c | 4 |
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; } } |
