aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn-hw.h4
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-dev.h19
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-trans.c10
3 files changed, 24 insertions, 9 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-hw.h b/drivers/net/wireless/iwlwifi/iwl-agn-hw.h
index 0e5b842529c4..47c43042ba4f 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn-hw.h
+++ b/drivers/net/wireless/iwlwifi/iwl-agn-hw.h
@@ -92,8 +92,8 @@
92 92
93#define IWLAGN_CMD_FIFO_NUM 7 93#define IWLAGN_CMD_FIFO_NUM 7
94#define IWLAGN_NUM_QUEUES 20 94#define IWLAGN_NUM_QUEUES 20
95#define IWLAGN_NUM_AMPDU_QUEUES 10 95#define IWLAGN_NUM_AMPDU_QUEUES 9
96#define IWLAGN_FIRST_AMPDU_QUEUE 10 96#define IWLAGN_FIRST_AMPDU_QUEUE 11
97 97
98/* Fixed (non-configurable) rx data from phy */ 98/* Fixed (non-configurable) rx data from phy */
99 99
diff --git a/drivers/net/wireless/iwlwifi/iwl-dev.h b/drivers/net/wireless/iwlwifi/iwl-dev.h
index 6c9790cac8d0..233baf60ed63 100644
--- a/drivers/net/wireless/iwlwifi/iwl-dev.h
+++ b/drivers/net/wireless/iwlwifi/iwl-dev.h
@@ -230,12 +230,23 @@ struct iwl_channel_info {
230#define IWL_TX_FIFO_BE_IPAN 4 230#define IWL_TX_FIFO_BE_IPAN 4
231#define IWL_TX_FIFO_VI_IPAN IWL_TX_FIFO_VI 231#define IWL_TX_FIFO_VI_IPAN IWL_TX_FIFO_VI
232#define IWL_TX_FIFO_VO_IPAN 5 232#define IWL_TX_FIFO_VO_IPAN 5
233/* re-uses the VO FIFO, uCode will properly flush/schedule */
234#define IWL_TX_FIFO_AUX 5
233#define IWL_TX_FIFO_UNUSED -1 235#define IWL_TX_FIFO_UNUSED -1
234 236
235/* Minimum number of queues. MAX_NUM is defined in hw specific files. 237/* AUX (TX during scan dwell) queue */
236 * Set the minimum to accommodate the 4 standard TX queues, 1 command 238#define IWL_AUX_QUEUE 10
237 * queue, 2 (unused) HCCA queues, and 4 HT queues (one for each AC) */ 239
238#define IWL_MIN_NUM_QUEUES 10 240/*
241 * Minimum number of queues. MAX_NUM is defined in hw specific files.
242 * Set the minimum to accommodate
243 * - 4 standard TX queues
244 * - the command queue
245 * - 4 PAN TX queues
246 * - the PAN multicast queue, and
247 * - the AUX (TX during scan dwell) queue.
248 */
249#define IWL_MIN_NUM_QUEUES 11
239 250
240/* 251/*
241 * Command queue depends on iPAN support. 252 * Command queue depends on iPAN support.
diff --git a/drivers/net/wireless/iwlwifi/iwl-trans.c b/drivers/net/wireless/iwlwifi/iwl-trans.c
index 41f0de914008..3001bfb46e25 100644
--- a/drivers/net/wireless/iwlwifi/iwl-trans.c
+++ b/drivers/net/wireless/iwlwifi/iwl-trans.c
@@ -750,6 +750,7 @@ static const struct queue_to_fifo_ac iwlagn_default_queue_to_tx_fifo[] = {
750 { IWL_TX_FIFO_UNUSED, IWL_AC_UNSET, }, 750 { IWL_TX_FIFO_UNUSED, IWL_AC_UNSET, },
751 { IWL_TX_FIFO_UNUSED, IWL_AC_UNSET, }, 751 { IWL_TX_FIFO_UNUSED, IWL_AC_UNSET, },
752 { IWL_TX_FIFO_UNUSED, IWL_AC_UNSET, }, 752 { IWL_TX_FIFO_UNUSED, IWL_AC_UNSET, },
753 { IWL_TX_FIFO_UNUSED, IWL_AC_UNSET, },
753}; 754};
754 755
755static const struct queue_to_fifo_ac iwlagn_ipan_queue_to_tx_fifo[] = { 756static const struct queue_to_fifo_ac iwlagn_ipan_queue_to_tx_fifo[] = {
@@ -763,6 +764,7 @@ static const struct queue_to_fifo_ac iwlagn_ipan_queue_to_tx_fifo[] = {
763 { IWL_TX_FIFO_VO_IPAN, IEEE80211_AC_VO, }, 764 { IWL_TX_FIFO_VO_IPAN, IEEE80211_AC_VO, },
764 { IWL_TX_FIFO_BE_IPAN, 2, }, 765 { IWL_TX_FIFO_BE_IPAN, 2, },
765 { IWLAGN_CMD_FIFO_NUM, IWL_AC_UNSET, }, 766 { IWLAGN_CMD_FIFO_NUM, IWL_AC_UNSET, },
767 { IWL_TX_FIFO_AUX, IWL_AC_UNSET, },
766}; 768};
767static void iwl_trans_tx_start(struct iwl_priv *priv) 769static void iwl_trans_tx_start(struct iwl_priv *priv)
768{ 770{
@@ -848,10 +850,12 @@ static void iwl_trans_tx_start(struct iwl_priv *priv)
848 /* reset to 0 to enable all the queue first */ 850 /* reset to 0 to enable all the queue first */
849 priv->txq_ctx_active_msk = 0; 851 priv->txq_ctx_active_msk = 0;
850 852
851 BUILD_BUG_ON(ARRAY_SIZE(iwlagn_default_queue_to_tx_fifo) != 10); 853 BUILD_BUG_ON(ARRAY_SIZE(iwlagn_default_queue_to_tx_fifo) !=
852 BUILD_BUG_ON(ARRAY_SIZE(iwlagn_ipan_queue_to_tx_fifo) != 10); 854 IWLAGN_FIRST_AMPDU_QUEUE);
855 BUILD_BUG_ON(ARRAY_SIZE(iwlagn_ipan_queue_to_tx_fifo) !=
856 IWLAGN_FIRST_AMPDU_QUEUE);
853 857
854 for (i = 0; i < 10; i++) { 858 for (i = 0; i < IWLAGN_FIRST_AMPDU_QUEUE; i++) {
855 int fifo = queue_to_fifo[i].fifo; 859 int fifo = queue_to_fifo[i].fifo;
856 int ac = queue_to_fifo[i].ac; 860 int ac = queue_to_fifo[i].ac;
857 861