summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAbhishek Singh <absingh@codeaurora.org>2017-08-21 15:10:05 +0530
committerAbhishek Singh <absingh@codeaurora.org>2017-08-31 14:24:06 +0530
commitad07fe335ef03e550af0406b3612e2ce591c03ab (patch)
tree1cedc7634a87e24897920464a6d750f6e9359456
parent4984bb302b29ce8064b8a7a3db3b115d7b7b728b (diff)
qcacld-3.0: Fix assert in qdf_mc_timer_stop for host roam timers
The host roam timers are deactivated and deleted in lim_delete_timers_host_roam but again in lim_deactivate_timers they are deactivated which results in assert. Fix this by deactivating roam timers before they are destroyed. Change-Id: I03f069edaf4361111dc5240fce2003c04c9c6509 CRs-Fixed: 2095265
-rw-r--r--core/mac/src/pe/lim/lim_roam_timer_utils.c24
-rw-r--r--core/mac/src/pe/lim/lim_timer_utils.c3
-rw-r--r--core/mac/src/pe/lim/lim_utils.c16
-rw-r--r--core/mac/src/pe/lim/lim_utils.h19
4 files changed, 35 insertions, 27 deletions
diff --git a/core/mac/src/pe/lim/lim_roam_timer_utils.c b/core/mac/src/pe/lim/lim_roam_timer_utils.c
index 3105f0cfeaad..65fae3ddfcb8 100644
--- a/core/mac/src/pe/lim/lim_roam_timer_utils.c
+++ b/core/mac/src/pe/lim/lim_roam_timer_utils.c
@@ -70,27 +70,27 @@ err_roam_timer:
return TX_TIMER_ERROR;
}
-/**
- * lim_delete_timers_host_roam() - Delete timers used in host based roaming
- * @mac_ctx: Global MAC context
- *
- * Delete reassoc and preauth timers
- *
- * Return: none
- */
void lim_delete_timers_host_roam(tpAniSirGlobal mac_ctx)
{
tLimTimers *lim_timer = &mac_ctx->lim.limTimers;
- /* Deactivate and delete Reassociation failure timer. */
- tx_timer_deactivate(&lim_timer->gLimReassocFailureTimer);
+ /* Delete Reassociation failure timer. */
tx_timer_delete(&lim_timer->gLimReassocFailureTimer);
+ /* Delete FT Preauth response timer */
+ tx_timer_delete(&lim_timer->gLimFTPreAuthRspTimer);
+}
+
+void lim_deactivate_timers_host_roam(tpAniSirGlobal mac_ctx)
+{
+ tLimTimers *lim_timer = &mac_ctx->lim.limTimers;
- /* Deactivate and delete FT Preauth response timer */
+ /* Deactivate Reassociation failure timer. */
+ tx_timer_deactivate(&lim_timer->gLimReassocFailureTimer);
+ /* Deactivate FT Preauth response timer */
tx_timer_deactivate(&lim_timer->gLimFTPreAuthRspTimer);
- tx_timer_delete(&lim_timer->gLimFTPreAuthRspTimer);
}
+
/**
* lim_deactivate_and_change_timer_host_roam() - Change timers in host roaming
* @mac_ctx: Pointer to Global MAC structure
diff --git a/core/mac/src/pe/lim/lim_timer_utils.c b/core/mac/src/pe/lim/lim_timer_utils.c
index bd3f92b9fc0d..4d58b61d1c37 100644
--- a/core/mac/src/pe/lim/lim_timer_utils.c
+++ b/core/mac/src/pe/lim/lim_timer_utils.c
@@ -375,10 +375,10 @@ uint32_t lim_create_timers(tpAniSirGlobal pMac)
return TX_SUCCESS;
err_timer:
+ lim_delete_timers_host_roam(pMac);
tx_timer_delete(&pMac->lim.limTimers.gLimDeauthAckTimer);
tx_timer_delete(&pMac->lim.limTimers.gLimDisassocAckTimer);
tx_timer_delete(&pMac->lim.limTimers.gLimRemainOnChannelTimer);
- tx_timer_delete(&pMac->lim.limTimers.gLimFTPreAuthRspTimer);
tx_timer_delete(&pMac->lim.limTimers.gLimUpdateOlbcCacheTimer);
while (((int32_t)-- i) >= 0) {
tx_timer_delete(&pMac->lim.limTimers.gpLimCnfWaitTimer[i]);
@@ -386,7 +386,6 @@ err_timer:
tx_timer_delete(&pMac->lim.limTimers.gLimProbeAfterHBTimer);
tx_timer_delete(&pMac->lim.limTimers.gLimAuthFailureTimer);
tx_timer_delete(&pMac->lim.limTimers.gLimAddtsRspTimer);
- tx_timer_delete(&pMac->lim.limTimers.gLimReassocFailureTimer);
tx_timer_delete(&pMac->lim.limTimers.open_sys_auth_timer);
tx_timer_delete(&pMac->lim.limTimers.gLimAssocFailureTimer);
tx_timer_delete(&pMac->lim.limTimers.gLimJoinFailureTimer);
diff --git a/core/mac/src/pe/lim/lim_utils.c b/core/mac/src/pe/lim/lim_utils.c
index 79eb0ad07a77..dab97526ee2c 100644
--- a/core/mac/src/pe/lim/lim_utils.c
+++ b/core/mac/src/pe/lim/lim_utils.c
@@ -582,11 +582,7 @@ void lim_deactivate_timers(tpAniSirGlobal mac_ctx)
uint32_t n;
tLimTimers *lim_timer = &mac_ctx->lim.limTimers;
- /* Deactivate Reassociation failure timer. */
- tx_timer_deactivate(&lim_timer->gLimReassocFailureTimer);
-
- /* Deactivate FT Preauth response timer */
- tx_timer_deactivate(&lim_timer->gLimFTPreAuthRspTimer);
+ lim_deactivate_timers_host_roam(mac_ctx);
/* Deactivate Periodic Probe channel timers. */
tx_timer_deactivate(&lim_timer->gLimPeriodicProbeReqTimer);
@@ -642,12 +638,6 @@ void lim_deactivate_timers(tpAniSirGlobal mac_ctx)
tx_timer_deactivate(&lim_timer->gLimDeauthAckTimer);
- /* Deactivate Reassociation failure timer. */
- tx_timer_deactivate(&lim_timer->gLimReassocFailureTimer);
-
- /* Deactivate FT Preauth response timer */
- tx_timer_deactivate(&lim_timer->gLimFTPreAuthRspTimer);
-
tx_timer_deactivate(&lim_timer->
gLimP2pSingleShotNoaInsertTimer);
@@ -679,9 +669,9 @@ void lim_cleanup_mlm(tpAniSirGlobal mac_ctx)
if (mac_ctx->lim.gLimTimersCreated == 1) {
lim_timer = &mac_ctx->lim.limTimers;
- lim_delete_timers_host_roam(mac_ctx);
-
lim_deactivate_timers(mac_ctx);
+
+ lim_delete_timers_host_roam(mac_ctx);
/* Delete Periodic Probe channel timers. */
tx_timer_delete(&lim_timer->gLimPeriodicProbeReqTimer);
diff --git a/core/mac/src/pe/lim/lim_utils.h b/core/mac/src/pe/lim/lim_utils.h
index 5c4f8b2fcc1c..c51a616f3283 100644
--- a/core/mac/src/pe/lim/lim_utils.h
+++ b/core/mac/src/pe/lim/lim_utils.h
@@ -701,7 +701,25 @@ void lim_update_obss_scanparams(tpPESession session,
void lim_init_obss_params(tpAniSirGlobal mac_ctx, tpPESession session);
#ifdef WLAN_FEATURE_HOST_ROAM
uint32_t lim_create_timers_host_roam(tpAniSirGlobal mac_ctx);
+/**
+ * lim_delete_timers_host_roam() - Delete timers used in host based roaming
+ * @mac_ctx: Global MAC context
+ *
+ * Delete reassoc and preauth timers
+ *
+ * Return: none
+ */
void lim_delete_timers_host_roam(tpAniSirGlobal mac_ctx);
+/**
+ * lim_deactivate_timers_host_roam() - deactivate timers used in host based
+ * roaming
+ * @mac_ctx: Global MAC context
+ *
+ * Delete reassoc and preauth timers
+ *
+ * Return: none
+ */
+void lim_deactivate_timers_host_roam(tpAniSirGlobal mac_ctx);
void lim_deactivate_and_change_timer_host_roam(tpAniSirGlobal mac_ctx,
uint32_t timer_id);
#else
@@ -711,6 +729,7 @@ static inline uint32_t lim_create_timers_host_roam(tpAniSirGlobal mac_ctx)
}
static inline void lim_delete_timers_host_roam(tpAniSirGlobal mac_ctx)
{}
+static inline void lim_deactivate_timers_host_roam(tpAniSirGlobal mac_ctx) {}
static inline void lim_deactivate_and_change_timer_host_roam(
tpAniSirGlobal mac_ctx, uint32_t timer_id)
{}