ath9k: fix aggregation flush on ar9003
authorFelix Fietkau <nbd@openwrt.org>
Wed, 27 Oct 2010 00:43:17 +0000 (00:43 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Wed, 27 Oct 2010 00:43:17 +0000 (00:43 +0000)
SVN-Revision: 23650

package/mac80211/patches/571-ath9k_ar9300_aggr_flush.patch [new file with mode: 0644]

diff --git a/package/mac80211/patches/571-ath9k_ar9300_aggr_flush.patch b/package/mac80211/patches/571-ath9k_ar9300_aggr_flush.patch
new file mode 100644 (file)
index 0000000..3d4cfe8
--- /dev/null
@@ -0,0 +1,34 @@
+--- a/drivers/net/wireless/ath/ath9k/xmit.c
++++ b/drivers/net/wireless/ath/ath9k/xmit.c
+@@ -1089,15 +1089,6 @@ void ath_draintxq(struct ath_softc *sc, 
+       txq->axq_tx_inprogress = false;
+       spin_unlock_bh(&txq->axq_lock);
+-      /* flush any pending frames if aggregation is enabled */
+-      if (sc->sc_flags & SC_OP_TXAGGR) {
+-              if (!retry_tx) {
+-                      spin_lock_bh(&txq->axq_lock);
+-                      ath_txq_drain_pending_buffers(sc, txq);
+-                      spin_unlock_bh(&txq->axq_lock);
+-              }
+-      }
+-
+       if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_EDMA) {
+               spin_lock_bh(&txq->axq_lock);
+               while (!list_empty(&txq->txq_fifo_pending)) {
+@@ -1118,6 +1109,15 @@ void ath_draintxq(struct ath_softc *sc, 
+               }
+               spin_unlock_bh(&txq->axq_lock);
+       }
++
++      /* flush any pending frames if aggregation is enabled */
++      if (sc->sc_flags & SC_OP_TXAGGR) {
++              if (!retry_tx) {
++                      spin_lock_bh(&txq->axq_lock);
++                      ath_txq_drain_pending_buffers(sc, txq);
++                      spin_unlock_bh(&txq->axq_lock);
++              }
++      }
+ }
+ void ath_drain_all_txq(struct ath_softc *sc, bool retry_tx)