diff options
| -rw-r--r-- | CORE/MAC/src/pe/lim/limUtils.c | 40 |
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 |
