diff options
| author | Krishna Kumaar Natarajan <kknatara@qca.qualcomm.com> | 2014-07-25 15:05:26 -0700 |
|---|---|---|
| committer | Akash Patel <c_akashp@qca.qualcomm.com> | 2014-07-29 18:45:08 -0700 |
| commit | 7a49220d5aa5e1c2bb2dc1cc1bb893e93e2c7c8e (patch) | |
| tree | 3d868ac0c6db10d9ba211851374145ed2590792a | |
| parent | eeb914c9ec9c2f38a95c06635022464d1dff2caa (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.c | 23 |
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) |
