ath9k: Fix tx stuck when connected to aggr disabled HT AP
authorVasanthakumar Thiagarajan <vasanth@atheros.com>
Tue, 9 Jun 2009 09:58:21 +0000 (15:28 +0530)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 10 Jun 2009 17:28:38 +0000 (13:28 -0400)
This patch along with my previous patch in mac80211 "Fix the
way ADDBA count..", fixes hang in tx when connected to an HT
AP which rejects/times out on addba req.

AGGR_ADDBA_PROGRESS should be cleared in aggr state when addba
negotiation is terminated due to either addba response is timed out
or addba is denied by the AP. With out clearing this bit,
all frames are queued onto s/w queue for getting tx'd as aggr and
will never be scheduled onto hw queue.

Signed-off-by: Vasanthakumar Thiagarajan <vasanth@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/ath9k/xmit.c

index a8def4fa449c295c3b928ef1c9ea10fd370fc563..b61a071788a50f98347ddaa7f74b778791372c4c 100644 (file)
@@ -711,6 +711,7 @@ int ath_tx_aggr_stop(struct ath_softc *sc, struct ieee80211_sta *sta, u16 tid)
                return 0;
 
        if (!(txtid->state & AGGR_ADDBA_COMPLETE)) {
+               txtid->state &= ~AGGR_ADDBA_PROGRESS;
                txtid->addba_exchangeattempts = 0;
                return 0;
        }