Issue: WCSWREL-353 Timeout id 0x12 or kernel panic when run connect/forget extAP stress

Disabled Deleting TCP session part, Added cancel check before calling
woal_tcp_ack_timer_func

Signed-off-by: Meet Patel <meet.patel@nxp.com>
This commit is contained in:
Meet Patel 2022-07-11 19:48:47 +05:30 committed by yunjie
parent 5f1ac0fea8
commit b4f6b06d6b
2 changed files with 11 additions and 4 deletions

View file

@ -6952,7 +6952,13 @@ static int woal_process_tcp_ack(moal_private *priv, mlan_buffer *pmbuf)
LEAVE();
return ret;
}
} else if ((*((t_u8 *)tcph + 13) & 0x11) == 0x11) {
}
#if 0
/* Might have race conditions with woal_tcp_ack_timer_func
* Causing kernel panic, ageout handler will free tcp_sess
* for now.
*/
else if ((*((t_u8 *)tcph + 13) & 0x11) == 0x11) {
/* TCP ACK + Fin */
spin_lock_irqsave(&priv->tcp_sess_lock, flags);
tcp_session = woal_get_tcp_sess(priv, (__force t_u32)iph->saddr,
@ -6972,7 +6978,7 @@ static int woal_process_tcp_ack(moal_private *priv, mlan_buffer *pmbuf)
}
spin_unlock_irqrestore(&priv->tcp_sess_lock, flags);
}
#endif
done:
LEAVE();
return ret;

View file

@ -390,9 +390,10 @@ static inline void woal_timer_handler(unsigned long fcontext)
pmoal_drv_timer timer = (pmoal_drv_timer)fcontext;
#endif
timer->timer_function(timer->function_context);
if (!timer->timer_is_canceled)
timer->timer_function(timer->function_context);
if (timer->timer_is_periodic == MTRUE) {
if (timer->timer_is_periodic == MTRUE && !timer->timer_is_canceled) {
mod_timer(&timer->tl,
jiffies + ((timer->time_period * HZ) / 1000));
} else {