summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKrishna Kumaar Natarajan <kknatara@qca.qualcomm.com>2014-07-25 15:05:26 -0700
committerAkash Patel <c_akashp@qca.qualcomm.com>2014-07-29 18:45:08 -0700
commit7a49220d5aa5e1c2bb2dc1cc1bb893e93e2c7c8e (patch)
tree3d868ac0c6db10d9ba211851374145ed2590792a
parenteeb914c9ec9c2f38a95c06635022464d1dff2caa (diff)
wlan: qcacld: Fix to remove dropping of consecutive Deauth frame
In order to prevent rogue AP from pumping DEAUTH into STA, throttling mechanism have been added to throttle the number of DEAUTHs allowed in a given time. Since SA query process is used in case of PMF connection, this check can be avoided. This change set provides fix for skipping the DEAUTH count check for PMF connection. CRs-Fixed: 700276 Change-Id: I82e213d0c7b48500f4ae273ff185f153854b9ceb
-rw-r--r--CORE/SYS/legacy/src/system/src/sysEntryFunc.c23
1 files changed, 21 insertions, 2 deletions
diff --git a/CORE/SYS/legacy/src/system/src/sysEntryFunc.c b/CORE/SYS/legacy/src/system/src/sysEntryFunc.c
index f478a00d1eec..5f46c879764e 100644
--- a/CORE/SYS/legacy/src/system/src/sysEntryFunc.c
+++ b/CORE/SYS/legacy/src/system/src/sysEntryFunc.c
@@ -121,6 +121,12 @@ sysBbtProcessMessageCore(tpAniSirGlobal pMac, tpSirMsgQ pMsg, tANI_U32 type,
vos_pkt_t *pVosPkt = (vos_pkt_t *)pMsg->bodyptr;
VOS_STATUS vosStatus =
WDA_DS_PeekRxPacketInfo( pVosPkt, (v_PVOID_t *)&pBd, VOS_FALSE );
+#ifdef WLAN_FEATURE_11W
+ tANI_U8 sessionId;
+ tpPESession psessionEntry;
+ tpSirMacMgmtHdr pMacHdr;
+#endif /* WLAN_FEATURE_11W */
+
pMac->sys.gSysBbtReceived++;
if ( !VOS_IS_STATUS_SUCCESS(vosStatus) )
@@ -141,8 +147,21 @@ sysBbtProcessMessageCore(tpAniSirGlobal pMac, tpSirMsgQ pMsg, tANI_U32 type,
tANI_U32 timeNow = adf_os_ticks();
tANI_U32 timeGap = adf_os_ticks_to_msecs(timeNow -
lastDeauthPacketTime);
- if (timeGap < 1000)
- goto fail;
+ if (timeGap < 1000) {
+#ifdef WLAN_FEATURE_11W
+ pMacHdr = WDA_GET_RX_MAC_HEADER(pBd);
+ psessionEntry = peFindSessionByPeerSta(pMac,
+ pMacHdr->sa, &sessionId);
+ if(!psessionEntry) {
+ PELOGE(sysLog(pMac, LOGE,
+ FL("session does not exist for given STA [%pM]"),
+ pMacHdr->sa););
+ goto fail;
+ }
+ if (!psessionEntry->limRmfEnabled)
+#endif /* WLAN_FEATURE_11W */
+ goto fail;
+ }
}
if (subType == SIR_MAC_MGMT_DEAUTH)