mirror of https://gitee.com/openkylin/linux.git
iwlwifi: trans: don't configure the set_active in SCD for dvm
This configuration is not needed for dvm, and it actually broke it. Reported-by: Oliver Hartkopp <socketcan@hartkopp.net> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
This commit is contained in:
parent
f7f89e7bae
commit
3a736bcb18
|
@ -377,6 +377,7 @@ enum iwl_trans_status {
|
||||||
* if unset 4k will be the RX buffer size
|
* if unset 4k will be the RX buffer size
|
||||||
* @bc_table_dword: set to true if the BC table expects the byte count to be
|
* @bc_table_dword: set to true if the BC table expects the byte count to be
|
||||||
* in DWORD (as opposed to bytes)
|
* in DWORD (as opposed to bytes)
|
||||||
|
* @scd_set_active: should the transport configure the SCD for HCMD queue
|
||||||
* @queue_watchdog_timeout: time (in ms) after which queues
|
* @queue_watchdog_timeout: time (in ms) after which queues
|
||||||
* are considered stuck and will trigger device restart
|
* are considered stuck and will trigger device restart
|
||||||
* @command_names: array of command names, must be 256 entries
|
* @command_names: array of command names, must be 256 entries
|
||||||
|
@ -392,6 +393,7 @@ struct iwl_trans_config {
|
||||||
|
|
||||||
bool rx_buf_size_8k;
|
bool rx_buf_size_8k;
|
||||||
bool bc_table_dword;
|
bool bc_table_dword;
|
||||||
|
bool scd_set_active;
|
||||||
unsigned int queue_watchdog_timeout;
|
unsigned int queue_watchdog_timeout;
|
||||||
const char *const *command_names;
|
const char *const *command_names;
|
||||||
};
|
};
|
||||||
|
|
|
@ -460,6 +460,7 @@ iwl_op_mode_mvm_start(struct iwl_trans *trans, const struct iwl_cfg *cfg,
|
||||||
|
|
||||||
trans_cfg.cmd_queue = IWL_MVM_CMD_QUEUE;
|
trans_cfg.cmd_queue = IWL_MVM_CMD_QUEUE;
|
||||||
trans_cfg.cmd_fifo = IWL_MVM_TX_FIFO_CMD;
|
trans_cfg.cmd_fifo = IWL_MVM_TX_FIFO_CMD;
|
||||||
|
trans_cfg.scd_set_active = true;
|
||||||
|
|
||||||
snprintf(mvm->hw->wiphy->fw_version,
|
snprintf(mvm->hw->wiphy->fw_version,
|
||||||
sizeof(mvm->hw->wiphy->fw_version),
|
sizeof(mvm->hw->wiphy->fw_version),
|
||||||
|
|
|
@ -257,6 +257,7 @@ iwl_pcie_get_scratchbuf_dma(struct iwl_txq *txq, int idx)
|
||||||
* @cmd_queue - command queue number
|
* @cmd_queue - command queue number
|
||||||
* @rx_buf_size_8k: 8 kB RX buffer size
|
* @rx_buf_size_8k: 8 kB RX buffer size
|
||||||
* @bc_table_dword: true if the BC table expects DWORD (as opposed to bytes)
|
* @bc_table_dword: true if the BC table expects DWORD (as opposed to bytes)
|
||||||
|
* @scd_set_active: should the transport configure the SCD for HCMD queue
|
||||||
* @rx_page_order: page order for receive buffer size
|
* @rx_page_order: page order for receive buffer size
|
||||||
* @wd_timeout: queue watchdog timeout (jiffies)
|
* @wd_timeout: queue watchdog timeout (jiffies)
|
||||||
* @reg_lock: protect hw register access
|
* @reg_lock: protect hw register access
|
||||||
|
@ -306,6 +307,7 @@ struct iwl_trans_pcie {
|
||||||
|
|
||||||
bool rx_buf_size_8k;
|
bool rx_buf_size_8k;
|
||||||
bool bc_table_dword;
|
bool bc_table_dword;
|
||||||
|
bool scd_set_active;
|
||||||
u32 rx_page_order;
|
u32 rx_page_order;
|
||||||
|
|
||||||
const char *const *command_names;
|
const char *const *command_names;
|
||||||
|
|
|
@ -1171,6 +1171,7 @@ static void iwl_trans_pcie_configure(struct iwl_trans *trans,
|
||||||
|
|
||||||
trans_pcie->command_names = trans_cfg->command_names;
|
trans_pcie->command_names = trans_cfg->command_names;
|
||||||
trans_pcie->bc_table_dword = trans_cfg->bc_table_dword;
|
trans_pcie->bc_table_dword = trans_cfg->bc_table_dword;
|
||||||
|
trans_pcie->scd_set_active = trans_cfg->scd_set_active;
|
||||||
|
|
||||||
/* Initialize NAPI here - it should be before registering to mac80211
|
/* Initialize NAPI here - it should be before registering to mac80211
|
||||||
* in the opmode but after the HW struct is allocated.
|
* in the opmode but after the HW struct is allocated.
|
||||||
|
|
|
@ -1080,7 +1080,8 @@ void iwl_trans_pcie_txq_enable(struct iwl_trans *trans, int txq_id, u16 ssn,
|
||||||
fifo = cfg->fifo;
|
fifo = cfg->fifo;
|
||||||
|
|
||||||
/* Disable the scheduler prior configuring the cmd queue */
|
/* Disable the scheduler prior configuring the cmd queue */
|
||||||
if (txq_id == trans_pcie->cmd_queue)
|
if (txq_id == trans_pcie->cmd_queue &&
|
||||||
|
trans_pcie->scd_set_active)
|
||||||
iwl_scd_enable_set_active(trans, 0);
|
iwl_scd_enable_set_active(trans, 0);
|
||||||
|
|
||||||
/* Stop this Tx queue before configuring it */
|
/* Stop this Tx queue before configuring it */
|
||||||
|
@ -1142,7 +1143,8 @@ void iwl_trans_pcie_txq_enable(struct iwl_trans *trans, int txq_id, u16 ssn,
|
||||||
SCD_QUEUE_STTS_REG_MSK);
|
SCD_QUEUE_STTS_REG_MSK);
|
||||||
|
|
||||||
/* enable the scheduler for this queue (only) */
|
/* enable the scheduler for this queue (only) */
|
||||||
if (txq_id == trans_pcie->cmd_queue)
|
if (txq_id == trans_pcie->cmd_queue &&
|
||||||
|
trans_pcie->scd_set_active)
|
||||||
iwl_scd_enable_set_active(trans, BIT(txq_id));
|
iwl_scd_enable_set_active(trans, BIT(txq_id));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue