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

Commit 5b88792c authored by Sara Sharon's avatar Sara Sharon Committed by Luca Coelho
Browse files

iwlwifi: move to wide ID for all commands



Due to firmware design considerations, move to wide ID for
all commands.

Signed-off-by: default avatarSara Sharon <sara.sharon@intel.com>
Signed-off-by: default avatarLuca Coelho <luciano.coelho@intel.com>
parent 607876f1
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -99,8 +99,12 @@ void iwl_notification_wait_notify(struct iwl_notif_wait_data *notif_wait,
				continue;

			for (i = 0; i < w->n_cmds; i++) {
				if (w->cmds[i] ==
				    WIDE_ID(pkt->hdr.group_id, pkt->hdr.cmd)) {
				u16 rec_id = WIDE_ID(pkt->hdr.group_id,
						     pkt->hdr.cmd);

				if (w->cmds[i] == rec_id ||
				    (!iwl_cmd_groupid(w->cmds[i]) &&
				     DEF_ID(w->cmds[i]) == rec_id)) {
					found = true;
					break;
				}
+3 −0
Original line number Diff line number Diff line
@@ -140,6 +140,9 @@ int iwl_trans_send_cmd(struct iwl_trans *trans, struct iwl_host_cmd *cmd)
	if (!(cmd->flags & CMD_ASYNC))
		lock_map_acquire_read(&trans->sync_cmd_lockdep_map);

	if (trans->wide_cmd_header && !iwl_cmd_groupid(cmd->id))
		cmd->id = DEF_ID(cmd->id);

	ret = trans->ops->send_cmd(trans, cmd);

	if (!(cmd->flags & CMD_ASYNC))
+3 −2
Original line number Diff line number Diff line
@@ -153,6 +153,7 @@ static inline u32 iwl_cmd_id(u8 opcode, u8 groupid, u8 version)

/* make u16 wide id out of u8 group and opcode */
#define WIDE_ID(grp, opcode) ((grp << 8) | opcode)
#define DEF_ID(opcode) ((1 << 8) | (opcode))

/* due to the conversion, this group is special; new groups
 * should be defined in the appropriate fw-api header files
@@ -484,7 +485,6 @@ struct iwl_hcmd_arr {
 * @bc_table_dword: set to true if the BC table expects the byte count to be
 *	in DWORD (as opposed to bytes)
 * @scd_set_active: should the transport configure the SCD for HCMD queue
 * @wide_cmd_header: firmware supports wide host command header
 * @sw_csum_tx: transport should compute the TCP checksum
 * @command_groups: array of command groups, each member is an array of the
 *	commands in the group; for debugging only
@@ -506,7 +506,6 @@ struct iwl_trans_config {
	enum iwl_amsdu_size rx_buf_size;
	bool bc_table_dword;
	bool scd_set_active;
	bool wide_cmd_header;
	bool sw_csum_tx;
	const struct iwl_hcmd_arr *command_groups;
	int command_groups_size;
@@ -770,6 +769,7 @@ enum iwl_plat_pm_mode {
 * @hw_id_str: a string with info about HW ID. Set during transport allocation.
 * @pm_support: set to true in start_hw if link pm is supported
 * @ltr_enabled: set to true if the LTR is enabled
 * @wide_cmd_header: true when ucode supports wide command header format
 * @num_rx_queues: number of RX queues allocated by the transport;
 *	the transport must set this before calling iwl_drv_start()
 * @dev_cmd_pool: pool for Tx cmd allocation - for internal use only.
@@ -821,6 +821,7 @@ struct iwl_trans {

	const struct iwl_hcmd_arr *command_groups;
	int command_groups_size;
	bool wide_cmd_header;

	u8 num_rx_queues;

+2 −2
Original line number Diff line number Diff line
@@ -652,7 +652,7 @@ iwl_op_mode_mvm_start(struct iwl_trans *trans, const struct iwl_cfg *cfg,
	/* the hardware splits the A-MSDU */
	if (mvm->cfg->mq_rx_supported)
		trans_cfg.rx_buf_size = IWL_AMSDU_4K;
	trans_cfg.wide_cmd_header = fw_has_api(&mvm->fw->ucode_capa,
	trans->wide_cmd_header = fw_has_api(&mvm->fw->ucode_capa,
					    IWL_UCODE_TLV_API_WIDE_CMD_HDR);

	if (mvm->fw->ucode_capa.flags & IWL_UCODE_TLV_FLAGS_DW_BC_TABLE)
+0 −2
Original line number Diff line number Diff line
@@ -332,7 +332,6 @@ enum iwl_shared_irq_flags {
 * @rx_buf_size: Rx buffer size
 * @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
 * @wide_cmd_header: true when ucode supports wide command header format
 * @sw_csum_tx: if true, then the transport will compute the csum of the TXed
 *	frame.
 * @rx_page_order: page order for receive buffer size
@@ -405,7 +404,6 @@ struct iwl_trans_pcie {
	enum iwl_amsdu_size rx_buf_size;
	bool bc_table_dword;
	bool scd_set_active;
	bool wide_cmd_header;
	bool sw_csum_tx;
	u32 rx_page_order;

Loading