summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkrunal soni <ksoni@qca.qualcomm.com>2014-07-22 21:04:16 -0700
committerAkash Patel <c_akashp@qca.qualcomm.com>2014-07-24 18:25:53 -0700
commit30b2c79c6dfd197b26d747da6824e0a3e650d291 (patch)
tree08d2ddca563433afadb31e8ec9a865cda8b71f03
parent46ec7272578429d44bc82a5c8244c3167006574c (diff)
qcacld: PMF: Fix to delete pmfSaQueryTimer during SubSystemRestart
The issue is, when SSR is triggered, we are not deleting pmfSaQueryTimer because the function which actually deletes this timer is not getting called during SSR. This solution will fix this issue. As part of this solution, when ever SSR is triggered, we will loop through each STA per BSSID and deletes the pmfSaQueryTimer associated. Change-Id: I01d6394d78b4ef93bdb5af24445c24d80d2fa8df CRs-Fixed: 696054
-rw-r--r--CORE/MAC/src/pe/lim/limUtils.c40
1 files changed, 40 insertions, 0 deletions
diff --git a/CORE/MAC/src/pe/lim/limUtils.c b/CORE/MAC/src/pe/lim/limUtils.c
index 4fb055b9badc..ca09b87abf74 100644
--- a/CORE/MAC/src/pe/lim/limUtils.c
+++ b/CORE/MAC/src/pe/lim/limUtils.c
@@ -958,6 +958,11 @@ limCleanupMlm(tpAniSirGlobal pMac)
{
tANI_U32 n;
tLimPreAuthNode *pAuthNode;
+#ifdef WLAN_FEATURE_11W
+ tANI_U32 bss_entry, sta_entry;
+ tpDphHashNode pStaDs = NULL;
+ tpPESession psessionEntry = NULL;
+#endif
if (pMac->lim.gLimTimersCreated == 1)
{
@@ -1096,6 +1101,41 @@ limCleanupMlm(tpAniSirGlobal pMac)
pMac->lim.gLimTimersCreated = 0;
}
+#ifdef WLAN_FEATURE_11W
+ /*
+ * When SSR is triggered, we need to loop through
+ * each STA associated per BSSId and deactivate/delete
+ * the pmfSaQueryTimer for it
+ */
+ if (vos_is_logp_in_progress(VOS_MODULE_ID_PE, NULL))
+ {
+ VOS_TRACE(VOS_MODULE_ID_PE, VOS_TRACE_LEVEL_ERROR,
+ FL("SSR is detected, proceed to clean up pmfSaQueryTimer"));
+ for (bss_entry = 0; bss_entry < pMac->lim.maxBssId; bss_entry++)
+ {
+ if (pMac->lim.gpSession[bss_entry].valid)
+ {
+ for (sta_entry = 1; sta_entry < pMac->lim.gLimAssocStaLimit;
+ sta_entry++)
+ {
+ psessionEntry = &pMac->lim.gpSession[bss_entry];
+ pStaDs = dphGetHashEntry(pMac, sta_entry,
+ &psessionEntry->dph.dphHashTable);
+ if (NULL == pStaDs)
+ {
+ continue;
+ }
+ VOS_TRACE(VOS_MODULE_ID_PE, VOS_TRACE_LEVEL_ERROR,
+ FL("Deleting pmfSaQueryTimer for staid[%d]"),
+ pStaDs->staIndex) ;
+ tx_timer_deactivate(&pStaDs->pmfSaQueryTimer);
+ tx_timer_delete(&pStaDs->pmfSaQueryTimer);
+ }
+ }
+ }
+ }
+#endif
+
/// Cleanup cached scan list
limReInitScanResults(pMac);
#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD