ath5k: fix hardware queue index assignment
authorFelix Fietkau <nbd@openwrt.org>
Sun, 30 Nov 2014 21:05:17 +0000 (21:05 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Sun, 30 Nov 2014 21:05:17 +0000 (21:05 +0000)
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
SVN-Revision: 43442

package/kernel/mac80211/patches/326-ath5k-fix-hardware-queue-index-assignment.patch [new file with mode: 0644]

diff --git a/package/kernel/mac80211/patches/326-ath5k-fix-hardware-queue-index-assignment.patch b/package/kernel/mac80211/patches/326-ath5k-fix-hardware-queue-index-assignment.patch
new file mode 100644 (file)
index 0000000..81807a9
--- /dev/null
@@ -0,0 +1,29 @@
+From: Felix Fietkau <nbd@openwrt.org>
+Date: Sun, 30 Nov 2014 21:51:12 +0100
+Subject: [PATCH] ath5k: fix hardware queue index assignment
+
+Like with ath9k, ath5k queues also need to be ordered by priority.
+queue_info->tqi_subtype already contains the correct index, so use it
+instead of relying on the order of ath5k_hw_setup_tx_queue calls.
+
+Cc: stable@vger.kernel.org
+Signed-off-by: Felix Fietkau <nbd@openwrt.org>
+---
+
+--- a/drivers/net/wireless/ath/ath5k/qcu.c
++++ b/drivers/net/wireless/ath/ath5k/qcu.c
+@@ -225,13 +225,7 @@ ath5k_hw_setup_tx_queue(struct ath5k_hw 
+       } else {
+               switch (queue_type) {
+               case AR5K_TX_QUEUE_DATA:
+-                      for (queue = AR5K_TX_QUEUE_ID_DATA_MIN;
+-                              ah->ah_txq[queue].tqi_type !=
+-                              AR5K_TX_QUEUE_INACTIVE; queue++) {
+-
+-                              if (queue > AR5K_TX_QUEUE_ID_DATA_MAX)
+-                                      return -EINVAL;
+-                      }
++                      queue = queue_info->tqi_subtype;
+                       break;
+               case AR5K_TX_QUEUE_UAPSD:
+                       queue = AR5K_TX_QUEUE_ID_UAPSD;