diff options
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-agn-hw.h | 4 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-dev.h | 19 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-trans.c | 10 |
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 | ||
755 | static const struct queue_to_fifo_ac iwlagn_ipan_queue_to_tx_fifo[] = { | 756 | static 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 | }; |
767 | static void iwl_trans_tx_start(struct iwl_priv *priv) | 769 | static 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 | ||