aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/intel/iwlwifi
diff options
context:
space:
mode:
authorLiad Kaufman <liad.kaufman@intel.com>2015-08-09 11:28:43 -0400
committerEmmanuel Grumbach <emmanuel.grumbach@intel.com>2016-03-30 09:24:48 -0400
commit097129c9e62540122b63cba79c1843a2602bec37 (patch)
tree12efb47198d3c24daec9b6f8bba830222a98c031 /drivers/net/wireless/intel/iwlwifi
parent0e0e44205c14b557606b498ff0fcad53c7c2430a (diff)
iwlwifi: mvm: move cmd queue to be #0 in dqa mode
Change the CMD queue to be queue #0 (rather than queue #9) when working in DQA mode. Signed-off-by: Liad Kaufman <liad.kaufman@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Diffstat (limited to 'drivers/net/wireless/intel/iwlwifi')
-rw-r--r--drivers/net/wireless/intel/iwlwifi/mvm/fw-api.h2
-rw-r--r--drivers/net/wireless/intel/iwlwifi/mvm/fw.c5
-rw-r--r--drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c8
-rw-r--r--drivers/net/wireless/intel/iwlwifi/mvm/ops.c5
4 files changed, 16 insertions, 4 deletions
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/fw-api.h b/drivers/net/wireless/intel/iwlwifi/mvm/fw-api.h
index b38cb03ec086..60eed8485aba 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/fw-api.h
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/fw-api.h
@@ -89,6 +89,7 @@ enum {
89/* 89/*
90 * DQA queue numbers 90 * DQA queue numbers
91 * 91 *
92 * @IWL_MVM_DQA_CMD_QUEUE: a queue reserved for sending HCMDs to the FW
92 * @IWL_MVM_DQA_GCAST_QUEUE: a queue reserved for P2P GO/SoftAP GCAST frames 93 * @IWL_MVM_DQA_GCAST_QUEUE: a queue reserved for P2P GO/SoftAP GCAST frames
93 * @IWL_MVM_DQA_BSS_CLIENT_QUEUE: a queue reserved for BSS activity, to ensure 94 * @IWL_MVM_DQA_BSS_CLIENT_QUEUE: a queue reserved for BSS activity, to ensure
94 * that we are never left without the possibility to connect to an AP. 95 * that we are never left without the possibility to connect to an AP.
@@ -103,6 +104,7 @@ enum {
103 * @IWL_MVM_DQA_MAX_DATA_QUEUE: last TXQ in pool for DATA frames 104 * @IWL_MVM_DQA_MAX_DATA_QUEUE: last TXQ in pool for DATA frames
104 */ 105 */
105enum iwl_mvm_dqa_txq { 106enum iwl_mvm_dqa_txq {
107 IWL_MVM_DQA_CMD_QUEUE = 0,
106 IWL_MVM_DQA_GCAST_QUEUE = 3, 108 IWL_MVM_DQA_GCAST_QUEUE = 3,
107 IWL_MVM_DQA_BSS_CLIENT_QUEUE = 4, 109 IWL_MVM_DQA_BSS_CLIENT_QUEUE = 4,
108 IWL_MVM_DQA_MIN_MGMT_QUEUE = 5, 110 IWL_MVM_DQA_MIN_MGMT_QUEUE = 5,
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/fw.c b/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
index 2dc97a19246a..6ad5c602e84c 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
@@ -652,7 +652,10 @@ static int iwl_mvm_load_ucode_wait_alive(struct iwl_mvm *mvm,
652 */ 652 */
653 653
654 memset(&mvm->queue_info, 0, sizeof(mvm->queue_info)); 654 memset(&mvm->queue_info, 0, sizeof(mvm->queue_info));
655 mvm->queue_info[IWL_MVM_CMD_QUEUE].hw_queue_refcount = 1; 655 if (iwl_mvm_is_dqa_supported(mvm))
656 mvm->queue_info[IWL_MVM_DQA_CMD_QUEUE].hw_queue_refcount = 1;
657 else
658 mvm->queue_info[IWL_MVM_CMD_QUEUE].hw_queue_refcount = 1;
656 659
657 for (i = 0; i < IEEE80211_MAX_QUEUES; i++) 660 for (i = 0; i < IEEE80211_MAX_QUEUES; i++)
658 atomic_set(&mvm->mac80211_queue_stop_count[i], 0); 661 atomic_set(&mvm->mac80211_queue_stop_count[i], 0);
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c b/drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c
index 43fd85725d45..5f950568e92c 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c
@@ -252,10 +252,14 @@ unsigned long iwl_mvm_get_used_hw_queues(struct iwl_mvm *mvm,
252 .exclude_vif = exclude_vif, 252 .exclude_vif = exclude_vif,
253 .used_hw_queues = 253 .used_hw_queues =
254 BIT(IWL_MVM_OFFCHANNEL_QUEUE) | 254 BIT(IWL_MVM_OFFCHANNEL_QUEUE) |
255 BIT(mvm->aux_queue) | 255 BIT(mvm->aux_queue),
256 BIT(IWL_MVM_CMD_QUEUE),
257 }; 256 };
258 257
258 if (iwl_mvm_is_dqa_supported(mvm))
259 data.used_hw_queues |= BIT(IWL_MVM_DQA_CMD_QUEUE);
260 else
261 data.used_hw_queues |= BIT(IWL_MVM_CMD_QUEUE);
262
259 lockdep_assert_held(&mvm->mutex); 263 lockdep_assert_held(&mvm->mutex);
260 264
261 /* mark all VIF used hw queues */ 265 /* mark all VIF used hw queues */
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/ops.c b/drivers/net/wireless/intel/iwlwifi/mvm/ops.c
index e36bcade69d1..cb0092609595 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/ops.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/ops.c
@@ -619,7 +619,10 @@ iwl_op_mode_mvm_start(struct iwl_trans *trans, const struct iwl_cfg *cfg,
619 trans_cfg.command_groups = iwl_mvm_groups; 619 trans_cfg.command_groups = iwl_mvm_groups;
620 trans_cfg.command_groups_size = ARRAY_SIZE(iwl_mvm_groups); 620 trans_cfg.command_groups_size = ARRAY_SIZE(iwl_mvm_groups);
621 621
622 trans_cfg.cmd_queue = IWL_MVM_CMD_QUEUE; 622 if (iwl_mvm_is_dqa_supported(mvm))
623 trans_cfg.cmd_queue = IWL_MVM_DQA_CMD_QUEUE;
624 else
625 trans_cfg.cmd_queue = IWL_MVM_CMD_QUEUE;
623 trans_cfg.cmd_fifo = IWL_MVM_TX_FIFO_CMD; 626 trans_cfg.cmd_fifo = IWL_MVM_TX_FIFO_CMD;
624 trans_cfg.scd_set_active = true; 627 trans_cfg.scd_set_active = true;
625 628