diff options
author | Liad Kaufman <liad.kaufman@intel.com> | 2015-08-09 11:28:43 -0400 |
---|---|---|
committer | Emmanuel Grumbach <emmanuel.grumbach@intel.com> | 2016-03-30 09:24:48 -0400 |
commit | 097129c9e62540122b63cba79c1843a2602bec37 (patch) | |
tree | 12efb47198d3c24daec9b6f8bba830222a98c031 /drivers/net | |
parent | 0e0e44205c14b557606b498ff0fcad53c7c2430a (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')
-rw-r--r-- | drivers/net/wireless/intel/iwlwifi/mvm/fw-api.h | 2 | ||||
-rw-r--r-- | drivers/net/wireless/intel/iwlwifi/mvm/fw.c | 5 | ||||
-rw-r--r-- | drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c | 8 | ||||
-rw-r--r-- | drivers/net/wireless/intel/iwlwifi/mvm/ops.c | 5 |
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 | */ |
105 | enum iwl_mvm_dqa_txq { | 106 | enum 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 | ||