ath9k: fix tx queue configuration for buffered multicast frames
authorFelix Fietkau <nbd@openwrt.org>
Sun, 9 Mar 2014 10:05:41 +0000 (10:05 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Sun, 9 Mar 2014 10:05:41 +0000 (10:05 +0000)
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
SVN-Revision: 39848

package/kernel/mac80211/patches/300-pending_work.patch

index e4eaecfd410fb337e67a997d65bf5ce80664f281..8b044d2a543a5a5ec1194a4252d5c2359c537776 100644 (file)
@@ -1,3 +1,20 @@
+commit 22e298b5a3a8a49e33805d4e351965123dede35b
+Author: Felix Fietkau <nbd@openwrt.org>
+Date:   Sun Mar 9 10:58:47 2014 +0100
+
+    ath9k: fix ready time of the multicast buffer queue
+    
+    qi->tqi_readyTime is written directly to registers that expect
+    microseconds as unit instead of TU.
+    When setting the CABQ ready time, cur_conf->beacon_interval is in TU, so
+    convert it to microseconds before passing it to ath9k_hw.
+    
+    This should hopefully fix some Tx DMA issues with buffered multicast
+    frames in AP mode.
+    
+    Cc: stable@vger.kernel.org
+    Signed-off-by: Felix Fietkau <nbd@openwrt.org>
+
 commit fcb064fdd5a27bec8d24099bc0172468f34c97cb
 Author: Felix Fietkau <nbd@openwrt.org>
 Date:   Sun Mar 9 09:43:09 2014 +0100
@@ -3286,6 +3303,15 @@ Date:   Thu Jan 23 20:06:34 2014 +0100
                buffered = ath_tid_has_buffered(tid);
  
                tid->sched = false;
+@@ -1696,7 +1698,7 @@ int ath_cabq_update(struct ath_softc *sc
+       ath9k_hw_get_txq_props(sc->sc_ah, qnum, &qi);
+-      qi.tqi_readyTime = (cur_conf->beacon_interval *
++      qi.tqi_readyTime = (TU_TO_USEC(cur_conf->beacon_interval) *
+                           ATH_CABQ_READY_TIME) / 100;
+       ath_txq_update(sc, qnum, &qi);
 @@ -2184,14 +2186,15 @@ int ath_tx_start(struct ieee80211_hw *hw
                txq->stopped = true;
        }