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
This commit is contained in:
Abhishek Singh 2017-08-21 15:19:37 +05:30 • committed by snandini
commit 748d8a27aa
4 changed files with 34 additions and 27 deletions

View file

@ -70,27 +70,26 @@ 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);
/* Deactivate and delete FT Preauth response timer */
tx_timer_deactivate(&lim_timer->gLimFTPreAuthRspTimer);
/* 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 Reassociation failure timer. */
tx_timer_deactivate(&lim_timer->gLimReassocFailureTimer);
/* Deactivate FT Preauth response timer */
tx_timer_deactivate(&lim_timer->gLimFTPreAuthRspTimer);
}
/**
* lim_deactivate_and_change_timer_host_roam() - Change timers in host roaming
* @mac_ctx: Pointer to Global MAC structure

View file

@ -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);

View file

@ -586,11 +586,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);
@ -647,12 +643,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);
@ -684,9 +674,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);

View file

@ -696,7 +696,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
@ -706,6 +724,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)
{}