From 62100c31d60d1af9831f9cb85bc00cd019f1170e Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Sun, 30 Nov 2014 21:05:17 +0000 Subject: [PATCH] ath5k: fix hardware queue index assignment Signed-off-by: Felix Fietkau SVN-Revision: 43442 --- ...-fix-hardware-queue-index-assignment.patch | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 package/kernel/mac80211/patches/326-ath5k-fix-hardware-queue-index-assignment.patch 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 +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 +--- + +--- 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; -- 2.30.2