aboutsummaryrefslogtreecommitdiffstats
path: root/package/kernel
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2014-11-30 21:05:17 +0000
committerFelix Fietkau <nbd@openwrt.org>2014-11-30 21:05:17 +0000
commitd6ec05aec4810caac3f067b0fa4d358af353987d (patch)
tree68f68be6268e4c8caad783924ae2a575804f2d09 /package/kernel
parent6210a5087336ebbfdc1fc3ccb60267c32a2287bb (diff)
downloadmaster-187ad058-d6ec05aec4810caac3f067b0fa4d358af353987d.tar.gz
master-187ad058-d6ec05aec4810caac3f067b0fa4d358af353987d.tar.bz2
master-187ad058-d6ec05aec4810caac3f067b0fa4d358af353987d.zip
ath5k: fix hardware queue index assignment
Signed-off-by: Felix Fietkau <nbd@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@43442 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/kernel')
-rw-r--r--package/kernel/mac80211/patches/326-ath5k-fix-hardware-queue-index-assignment.patch29
1 files changed, 29 insertions, 0 deletions
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
index 0000000000..81807a9be3
--- /dev/null
+++ b/package/kernel/mac80211/patches/326-ath5k-fix-hardware-queue-index-assignment.patch
@@ -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;