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 a8def4f..b61a071 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;
        }