Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3a736bcb authored by Emmanuel Grumbach's avatar Emmanuel Grumbach
Browse files

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: default avatarOliver Hartkopp <socketcan@hartkopp.net>
Signed-off-by: default avatarEmmanuel Grumbach <emmanuel.grumbach@intel.com>
parent f7f89e7b
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -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;
};
};
+1 −0
Original line number Original line Diff line number Diff line
@@ -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),
+2 −0
Original line number Original line Diff line number Diff line
@@ -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;
+1 −0
Original line number Original line Diff line number Diff line
@@ -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.
+4 −2
Original line number Original line Diff line number Diff line
@@ -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));
	}
	}