diff options
author | Felix Fietkau <nbd@openwrt.org> | 2011-07-12 03:02:05 +0200 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2011-07-13 20:49:41 +0200 |
commit | 4e868796bbcbae2f2ea3a828c803686787392b71 (patch) | |
tree | 2227bb3c26b7af758303ea7990b3a5912632731f | |
parent | ath5k: disable 32KHz sleep clock operation by default (diff) | |
download | linux-4e868796bbcbae2f2ea3a828c803686787392b71.tar.xz linux-4e868796bbcbae2f2ea3a828c803686787392b71.zip |
ath5k: do not call ieee80211_stop_queue for queues not managed by mac80211
Instead of using ieee80211_stop_queue, check the configured tx queue
limit before calling ieee80211_get_buffered_bc.
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r-- | drivers/net/wireless/ath/ath5k/base.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/net/wireless/ath/ath5k/base.c b/drivers/net/wireless/ath/ath5k/base.c index 3b58e008329c..5f055d69b220 100644 --- a/drivers/net/wireless/ath/ath5k/base.c +++ b/drivers/net/wireless/ath/ath5k/base.c @@ -1554,7 +1554,8 @@ ath5k_tx_queue(struct ieee80211_hw *hw, struct sk_buff *skb, goto drop_packet; } - if (txq->txq_len >= txq->txq_max) + if (txq->txq_len >= txq->txq_max && + txq->qnum <= AR5K_TX_QUEUE_ID_DATA_MAX) ieee80211_stop_queue(hw, txq->qnum); spin_lock_irqsave(&sc->txbuflock, flags); @@ -1930,6 +1931,10 @@ ath5k_beacon_send(struct ath5k_softc *sc) skb = ieee80211_get_buffered_bc(sc->hw, vif); while (skb) { ath5k_tx_queue(sc->hw, skb, sc->cabq); + + if (sc->cabq->txq_len >= sc->cabq->txq_max) + break; + skb = ieee80211_get_buffered_bc(sc->hw, vif); } |