We start an one shot addba_resp_timer in ieee80211_start_tx_ba_session but don't delete it in __ieee80211_stop_tx_ba_session. This will cause problem in suspend and resume. When suspend happens without the timer deleted, the timer handler will be called immediately after resume and messes up driver status. See http://bugzilla.intellinuxwireless.org/show_bug.cgi?id=2134 comment #22 for more details. Cc: Johannes Berg <johannes@xxxxxxxxxxxxxxxx> Signed-off-by: Zhu Yi <yi.zhu@xxxxxxxxx> --- net/mac80211/agg-tx.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) diff --git a/net/mac80211/agg-tx.c b/net/mac80211/agg-tx.c index ceda366..d122082 100644 --- a/net/mac80211/agg-tx.c +++ b/net/mac80211/agg-tx.c @@ -509,6 +509,8 @@ int __ieee80211_stop_tx_ba_session(struct sta_info *sta, u16 tid, u8 *state; int ret; + del_timer_sync(&sta->ampdu_mlme.tid_tx[tid]->addba_resp_timer); + /* check if the TID is in aggregation */ state = &sta->ampdu_mlme.tid_state_tx[tid]; spin_lock_bh(&sta->lock); -- 1.6.3.3 -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html