2009-12-28 08:57:22

by Zhu Yi

[permalink] [raw]
Subject: [PATCH V2] mac80211: quit addba_resp_timer if Tx BA session is torn down

Make addba_resp_timer aware the HT_AGG_STATE_REQ_STOP_BA_MSK mask
so that when ___ieee80211_stop_tx_ba_session() is issued the timer
will quit. Otherwise when suspend happens before the timer expired,
the timer handler will be called immediately after resume and
messes up driver status.

Cc: Johannes Berg <[email protected]>
Signed-off-by: Zhu Yi <[email protected]>
---
net/mac80211/agg-tx.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/net/mac80211/agg-tx.c b/net/mac80211/agg-tx.c
index ceda366..a57bd73 100644
--- a/net/mac80211/agg-tx.c
+++ b/net/mac80211/agg-tx.c
@@ -179,7 +179,8 @@ static void sta_addba_resp_timer_expired(unsigned long data)

/* check if the TID waits for addBA response */
spin_lock_bh(&sta->lock);
- if ((*state & (HT_ADDBA_REQUESTED_MSK | HT_ADDBA_RECEIVED_MSK)) !=
+ if ((*state & (HT_ADDBA_REQUESTED_MSK | HT_ADDBA_RECEIVED_MSK |
+ HT_AGG_STATE_REQ_STOP_BA_MSK)) !=
HT_ADDBA_REQUESTED_MSK) {
spin_unlock_bh(&sta->lock);
*state = HT_AGG_STATE_IDLE;
--
1.6.3.3



2009-12-28 16:55:07

by Johannes Berg

[permalink] [raw]
Subject: Re: [PATCH V2] mac80211: quit addba_resp_timer if Tx BA session is torn down

On Mon, 2009-12-28 at 16:57 +0800, Zhu Yi wrote:
> Make addba_resp_timer aware the HT_AGG_STATE_REQ_STOP_BA_MSK mask
> so that when ___ieee80211_stop_tx_ba_session() is issued the timer
> will quit. Otherwise when suspend happens before the timer expired,
> the timer handler will be called immediately after resume and
> messes up driver status.

Want to reference the bug report still?

In any case

Acked-by: Johannes Berg <[email protected]>

> Cc: Johannes Berg <[email protected]>
> Signed-off-by: Zhu Yi <[email protected]>
> ---
> net/mac80211/agg-tx.c | 3 ++-
> 1 files changed, 2 insertions(+), 1 deletions(-)
>
> diff --git a/net/mac80211/agg-tx.c b/net/mac80211/agg-tx.c
> index ceda366..a57bd73 100644
> --- a/net/mac80211/agg-tx.c
> +++ b/net/mac80211/agg-tx.c
> @@ -179,7 +179,8 @@ static void sta_addba_resp_timer_expired(unsigned
> long data)
>
> /* check if the TID waits for addBA response */
> spin_lock_bh(&sta->lock);
> - if ((*state & (HT_ADDBA_REQUESTED_MSK | HT_ADDBA_RECEIVED_MSK)) !=
> + if ((*state & (HT_ADDBA_REQUESTED_MSK | HT_ADDBA_RECEIVED_MSK |
> + HT_AGG_STATE_REQ_STOP_BA_MSK)) !=
> HT_ADDBA_REQUESTED_MSK) {
> spin_unlock_bh(&sta->lock);
> *state = HT_AGG_STATE_IDLE;


Attachments:
signature.asc (801.00 B)
This is a digitally signed message part