18e99ea8dSJohannes Berg /* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
28e99ea8dSJohannes Berg /*
38e99ea8dSJohannes Berg  * Copyright (C) 2013-2015 Intel Mobile Communications GmbH
48e99ea8dSJohannes Berg  * Copyright (C) 2016-2017 Intel Deutschland GmbH
55ac54afdSIlan Peer  * Copyright (C) 2018-2022 Intel Corporation
68e99ea8dSJohannes Berg  */
7d172a5efSJohannes Berg #ifndef __iwl_fw_api_commands_h__
8d172a5efSJohannes Berg #define __iwl_fw_api_commands_h__
9d172a5efSJohannes Berg 
10d172a5efSJohannes Berg /**
11d172a5efSJohannes Berg  * enum iwl_mvm_command_groups - command groups for the firmware
12d172a5efSJohannes Berg  * @LEGACY_GROUP: legacy group, uses command IDs from &enum iwl_legacy_cmds
13d172a5efSJohannes Berg  * @LONG_GROUP: legacy group with long header, also uses command IDs
14d172a5efSJohannes Berg  *	from &enum iwl_legacy_cmds
15d172a5efSJohannes Berg  * @SYSTEM_GROUP: system group, uses command IDs from
16d172a5efSJohannes Berg  *	&enum iwl_system_subcmd_ids
17d172a5efSJohannes Berg  * @MAC_CONF_GROUP: MAC configuration group, uses command IDs from
18d172a5efSJohannes Berg  *	&enum iwl_mac_conf_subcmd_ids
19d172a5efSJohannes Berg  * @PHY_OPS_GROUP: PHY operations group, uses command IDs from
20d172a5efSJohannes Berg  *	&enum iwl_phy_ops_subcmd_ids
21d172a5efSJohannes Berg  * @DATA_PATH_GROUP: data path group, uses command IDs from
22d172a5efSJohannes Berg  *	&enum iwl_data_path_subcmd_ids
235ac54afdSIlan Peer  * @SCAN_GROUP: scan group, uses command IDs from
245ac54afdSIlan Peer  *	&enum iwl_scan_subcmd_ids
25d172a5efSJohannes Berg  * @NAN_GROUP: NAN group, uses command IDs from &enum iwl_nan_subcmd_ids
266c161980SJohannes Berg  * @LOCATION_GROUP: location group, uses command IDs from
276c161980SJohannes Berg  *	&enum iwl_location_subcmd_ids
28d172a5efSJohannes Berg  * @PROT_OFFLOAD_GROUP: protocol offload group, uses command IDs from
29d172a5efSJohannes Berg  *	&enum iwl_prot_offload_subcmd_ids
30d172a5efSJohannes Berg  * @REGULATORY_AND_NVM_GROUP: regulatory/NVM group, uses command IDs from
31d172a5efSJohannes Berg  *	&enum iwl_regulatory_and_nvm_subcmd_ids
32d172a5efSJohannes Berg  * @DEBUG_GROUP: Debug group, uses command IDs from &enum iwl_debug_cmds
33d172a5efSJohannes Berg  */
34d172a5efSJohannes Berg enum iwl_mvm_command_groups {
35d172a5efSJohannes Berg 	LEGACY_GROUP = 0x0,
36d172a5efSJohannes Berg 	LONG_GROUP = 0x1,
37d172a5efSJohannes Berg 	SYSTEM_GROUP = 0x2,
38d172a5efSJohannes Berg 	MAC_CONF_GROUP = 0x3,
39d172a5efSJohannes Berg 	PHY_OPS_GROUP = 0x4,
40d172a5efSJohannes Berg 	DATA_PATH_GROUP = 0x5,
415ac54afdSIlan Peer 	SCAN_GROUP = 0x6,
42d172a5efSJohannes Berg 	NAN_GROUP = 0x7,
436c161980SJohannes Berg 	LOCATION_GROUP = 0x8,
44d172a5efSJohannes Berg 	PROT_OFFLOAD_GROUP = 0xb,
45d172a5efSJohannes Berg 	REGULATORY_AND_NVM_GROUP = 0xc,
46d172a5efSJohannes Berg 	DEBUG_GROUP = 0xf,
47d172a5efSJohannes Berg };
48d172a5efSJohannes Berg 
49d172a5efSJohannes Berg /**
50d172a5efSJohannes Berg  * enum iwl_legacy_cmds - legacy group command IDs
51d172a5efSJohannes Berg  */
52d172a5efSJohannes Berg enum iwl_legacy_cmds {
53d172a5efSJohannes Berg 	/**
549422b978SLuca Coelho 	 * @UCODE_ALIVE_NTFY:
55d172a5efSJohannes Berg 	 * Alive data from the firmware, as described in
569422b978SLuca Coelho 	 * &struct iwl_alive_ntf_v3 or &struct iwl_alive_ntf_v4 or
57708d8c53SJohannes Berg 	 * &struct iwl_alive_ntf_v5 or &struct iwl_alive_ntf_v6.
58d172a5efSJohannes Berg 	 */
599422b978SLuca Coelho 	UCODE_ALIVE_NTFY = 0x1,
60d172a5efSJohannes Berg 
61d172a5efSJohannes Berg 	/**
62d172a5efSJohannes Berg 	 * @REPLY_ERROR: Cause an error in the firmware, for testing purposes.
63d172a5efSJohannes Berg 	 */
64d172a5efSJohannes Berg 	REPLY_ERROR = 0x2,
65d172a5efSJohannes Berg 
66d172a5efSJohannes Berg 	/**
67d172a5efSJohannes Berg 	 * @ECHO_CMD: Send data to the device to have it returned immediately.
68d172a5efSJohannes Berg 	 */
69d172a5efSJohannes Berg 	ECHO_CMD = 0x3,
70d172a5efSJohannes Berg 
71d172a5efSJohannes Berg 	/**
72d172a5efSJohannes Berg 	 * @INIT_COMPLETE_NOTIF: Notification that initialization is complete.
73d172a5efSJohannes Berg 	 */
74d172a5efSJohannes Berg 	INIT_COMPLETE_NOTIF = 0x4,
75d172a5efSJohannes Berg 
76d172a5efSJohannes Berg 	/**
77d172a5efSJohannes Berg 	 * @PHY_CONTEXT_CMD:
78f4340bafSJohannes Berg 	 * Add/modify/remove a PHY context, using &struct iwl_phy_context_cmd
79f4340bafSJohannes Berg 	 *	or &struct iwl_phy_context_cmd_v1.
80d172a5efSJohannes Berg 	 */
81d172a5efSJohannes Berg 	PHY_CONTEXT_CMD = 0x8,
82d172a5efSJohannes Berg 
83d172a5efSJohannes Berg 	/**
84d172a5efSJohannes Berg 	 * @DBG_CFG: Debug configuration command.
85d172a5efSJohannes Berg 	 */
86d172a5efSJohannes Berg 	DBG_CFG = 0x9,
87d172a5efSJohannes Berg 
88d172a5efSJohannes Berg 	/**
89d172a5efSJohannes Berg 	 * @SCAN_ITERATION_COMPLETE_UMAC:
90d172a5efSJohannes Berg 	 * Firmware indicates a scan iteration completed, using
91d172a5efSJohannes Berg 	 * &struct iwl_umac_scan_iter_complete_notif.
92d172a5efSJohannes Berg 	 */
93d172a5efSJohannes Berg 	SCAN_ITERATION_COMPLETE_UMAC = 0xb5,
94d172a5efSJohannes Berg 
95d172a5efSJohannes Berg 	/**
96d172a5efSJohannes Berg 	 * @SCAN_CFG_CMD:
970c912045SJohannes Berg 	 * uses &struct iwl_scan_config_v1, &struct iwl_scan_config_v2
980c912045SJohannes Berg 	 * or &struct iwl_scan_config
99d172a5efSJohannes Berg 	 */
100d172a5efSJohannes Berg 	SCAN_CFG_CMD = 0xc,
101d172a5efSJohannes Berg 
102d172a5efSJohannes Berg 	/**
103d172a5efSJohannes Berg 	 * @SCAN_REQ_UMAC: uses &struct iwl_scan_req_umac
104d172a5efSJohannes Berg 	 */
105d172a5efSJohannes Berg 	SCAN_REQ_UMAC = 0xd,
106d172a5efSJohannes Berg 
107d172a5efSJohannes Berg 	/**
108d172a5efSJohannes Berg 	 * @SCAN_ABORT_UMAC: uses &struct iwl_umac_scan_abort
109d172a5efSJohannes Berg 	 */
110d172a5efSJohannes Berg 	SCAN_ABORT_UMAC = 0xe,
111d172a5efSJohannes Berg 
112d172a5efSJohannes Berg 	/**
113d172a5efSJohannes Berg 	 * @SCAN_COMPLETE_UMAC: uses &struct iwl_umac_scan_complete
114d172a5efSJohannes Berg 	 */
115d172a5efSJohannes Berg 	SCAN_COMPLETE_UMAC = 0xf,
116d172a5efSJohannes Berg 
117d172a5efSJohannes Berg 	/**
118d172a5efSJohannes Berg 	 * @BA_WINDOW_STATUS_NOTIFICATION_ID:
119d172a5efSJohannes Berg 	 * uses &struct iwl_ba_window_status_notif
120d172a5efSJohannes Berg 	 */
121d172a5efSJohannes Berg 	BA_WINDOW_STATUS_NOTIFICATION_ID = 0x13,
122d172a5efSJohannes Berg 
123d172a5efSJohannes Berg 	/**
124d172a5efSJohannes Berg 	 * @ADD_STA_KEY:
125d172a5efSJohannes Berg 	 * &struct iwl_mvm_add_sta_key_cmd_v1 or
126d172a5efSJohannes Berg 	 * &struct iwl_mvm_add_sta_key_cmd.
127d172a5efSJohannes Berg 	 */
128d172a5efSJohannes Berg 	ADD_STA_KEY = 0x17,
129d172a5efSJohannes Berg 
130d172a5efSJohannes Berg 	/**
131d172a5efSJohannes Berg 	 * @ADD_STA:
132d172a5efSJohannes Berg 	 * &struct iwl_mvm_add_sta_cmd or &struct iwl_mvm_add_sta_cmd_v7.
133d172a5efSJohannes Berg 	 */
134d172a5efSJohannes Berg 	ADD_STA = 0x18,
135d172a5efSJohannes Berg 
136d172a5efSJohannes Berg 	/**
137d172a5efSJohannes Berg 	 * @REMOVE_STA: &struct iwl_mvm_rm_sta_cmd
138d172a5efSJohannes Berg 	 */
139d172a5efSJohannes Berg 	REMOVE_STA = 0x19,
140d172a5efSJohannes Berg 
141d172a5efSJohannes Berg 	/**
142a0ec0169SGolan Ben Ami 	 * @TX_CMD: uses &struct iwl_tx_cmd or &struct iwl_tx_cmd_gen2 or
143a0ec0169SGolan Ben Ami 	 *	&struct iwl_tx_cmd_gen3,
144d172a5efSJohannes Berg 	 *	response in &struct iwl_mvm_tx_resp or
145d172a5efSJohannes Berg 	 *	&struct iwl_mvm_tx_resp_v3
146d172a5efSJohannes Berg 	 */
147d172a5efSJohannes Berg 	TX_CMD = 0x1c,
148d172a5efSJohannes Berg 
149d172a5efSJohannes Berg 	/**
150d172a5efSJohannes Berg 	 * @TXPATH_FLUSH: &struct iwl_tx_path_flush_cmd
15124091f87SEmmanuel Grumbach 	 *	response in &struct iwl_tx_path_flush_cmd_rsp
152d172a5efSJohannes Berg 	 */
153d172a5efSJohannes Berg 	TXPATH_FLUSH = 0x1e,
154d172a5efSJohannes Berg 
155d172a5efSJohannes Berg 	/**
156d172a5efSJohannes Berg 	 * @MGMT_MCAST_KEY:
157d172a5efSJohannes Berg 	 * &struct iwl_mvm_mgmt_mcast_key_cmd or
158d172a5efSJohannes Berg 	 * &struct iwl_mvm_mgmt_mcast_key_cmd_v1
159d172a5efSJohannes Berg 	 */
160d172a5efSJohannes Berg 	MGMT_MCAST_KEY = 0x1f,
161d172a5efSJohannes Berg 
162d172a5efSJohannes Berg 	/* scheduler config */
163d172a5efSJohannes Berg 	/**
164d172a5efSJohannes Berg 	 * @SCD_QUEUE_CFG: &struct iwl_scd_txq_cfg_cmd for older hardware,
165d172a5efSJohannes Berg 	 *	&struct iwl_tx_queue_cfg_cmd with &struct iwl_tx_queue_cfg_rsp
1662f7a3863SLuca Coelho 	 *	for newer (22000) hardware.
167d172a5efSJohannes Berg 	 */
168d172a5efSJohannes Berg 	SCD_QUEUE_CFG = 0x1d,
169d172a5efSJohannes Berg 
170d172a5efSJohannes Berg 	/**
171d172a5efSJohannes Berg 	 * @WEP_KEY: uses &struct iwl_mvm_wep_key_cmd
172d172a5efSJohannes Berg 	 */
173d172a5efSJohannes Berg 	WEP_KEY = 0x20,
174d172a5efSJohannes Berg 
175d172a5efSJohannes Berg 	/**
176d172a5efSJohannes Berg 	 * @SHARED_MEM_CFG:
177d172a5efSJohannes Berg 	 * retrieve shared memory configuration - response in
178d172a5efSJohannes Berg 	 * &struct iwl_shared_mem_cfg
179d172a5efSJohannes Berg 	 */
180d172a5efSJohannes Berg 	SHARED_MEM_CFG = 0x25,
181d172a5efSJohannes Berg 
182d172a5efSJohannes Berg 	/**
183d172a5efSJohannes Berg 	 * @TDLS_CHANNEL_SWITCH_CMD: uses &struct iwl_tdls_channel_switch_cmd
184d172a5efSJohannes Berg 	 */
185d172a5efSJohannes Berg 	TDLS_CHANNEL_SWITCH_CMD = 0x27,
186d172a5efSJohannes Berg 
187d172a5efSJohannes Berg 	/**
188d172a5efSJohannes Berg 	 * @TDLS_CHANNEL_SWITCH_NOTIFICATION:
189d172a5efSJohannes Berg 	 * uses &struct iwl_tdls_channel_switch_notif
190d172a5efSJohannes Berg 	 */
191d172a5efSJohannes Berg 	TDLS_CHANNEL_SWITCH_NOTIFICATION = 0xaa,
192d172a5efSJohannes Berg 
193d172a5efSJohannes Berg 	/**
194d172a5efSJohannes Berg 	 * @TDLS_CONFIG_CMD:
195d172a5efSJohannes Berg 	 * &struct iwl_tdls_config_cmd, response in &struct iwl_tdls_config_res
196d172a5efSJohannes Berg 	 */
197d172a5efSJohannes Berg 	TDLS_CONFIG_CMD = 0xa7,
198d172a5efSJohannes Berg 
199d172a5efSJohannes Berg 	/**
200d172a5efSJohannes Berg 	 * @MAC_CONTEXT_CMD: &struct iwl_mac_ctx_cmd
201d172a5efSJohannes Berg 	 */
202d172a5efSJohannes Berg 	MAC_CONTEXT_CMD = 0x28,
203d172a5efSJohannes Berg 
204d172a5efSJohannes Berg 	/**
205d172a5efSJohannes Berg 	 * @TIME_EVENT_CMD:
206d172a5efSJohannes Berg 	 * &struct iwl_time_event_cmd, response in &struct iwl_time_event_resp
207d172a5efSJohannes Berg 	 */
208d172a5efSJohannes Berg 	TIME_EVENT_CMD = 0x29, /* both CMD and response */
209d172a5efSJohannes Berg 
210d172a5efSJohannes Berg 	/**
211d172a5efSJohannes Berg 	 * @TIME_EVENT_NOTIFICATION: &struct iwl_time_event_notif
212d172a5efSJohannes Berg 	 */
213d172a5efSJohannes Berg 	TIME_EVENT_NOTIFICATION = 0x2a,
214d172a5efSJohannes Berg 
215d172a5efSJohannes Berg 	/**
216d172a5efSJohannes Berg 	 * @BINDING_CONTEXT_CMD:
217d172a5efSJohannes Berg 	 * &struct iwl_binding_cmd or &struct iwl_binding_cmd_v1
218d172a5efSJohannes Berg 	 */
219d172a5efSJohannes Berg 	BINDING_CONTEXT_CMD = 0x2b,
220d172a5efSJohannes Berg 
221d172a5efSJohannes Berg 	/**
222d172a5efSJohannes Berg 	 * @TIME_QUOTA_CMD: &struct iwl_time_quota_cmd
223d172a5efSJohannes Berg 	 */
224d172a5efSJohannes Berg 	TIME_QUOTA_CMD = 0x2c,
225d172a5efSJohannes Berg 
226d172a5efSJohannes Berg 	/**
227d172a5efSJohannes Berg 	 * @NON_QOS_TX_COUNTER_CMD:
228d172a5efSJohannes Berg 	 * command is &struct iwl_nonqos_seq_query_cmd
229d172a5efSJohannes Berg 	 */
230d172a5efSJohannes Berg 	NON_QOS_TX_COUNTER_CMD = 0x2d,
231d172a5efSJohannes Berg 
232d172a5efSJohannes Berg 	/**
2337089ae63SJohannes Berg 	 * @LEDS_CMD: command is &struct iwl_led_cmd
2347089ae63SJohannes Berg 	 */
2357089ae63SJohannes Berg 	LEDS_CMD = 0x48,
2367089ae63SJohannes Berg 
2377089ae63SJohannes Berg 	/**
238d172a5efSJohannes Berg 	 * @LQ_CMD: using &struct iwl_lq_cmd
239d172a5efSJohannes Berg 	 */
240d172a5efSJohannes Berg 	LQ_CMD = 0x4e,
241d172a5efSJohannes Berg 
242d172a5efSJohannes Berg 	/**
243d172a5efSJohannes Berg 	 * @FW_PAGING_BLOCK_CMD:
244d172a5efSJohannes Berg 	 * &struct iwl_fw_paging_cmd
245d172a5efSJohannes Berg 	 */
246d172a5efSJohannes Berg 	FW_PAGING_BLOCK_CMD = 0x4f,
247d172a5efSJohannes Berg 
248d172a5efSJohannes Berg 	/**
249d172a5efSJohannes Berg 	 * @SCAN_OFFLOAD_REQUEST_CMD: uses &struct iwl_scan_req_lmac
250d172a5efSJohannes Berg 	 */
251d172a5efSJohannes Berg 	SCAN_OFFLOAD_REQUEST_CMD = 0x51,
252d172a5efSJohannes Berg 
253d172a5efSJohannes Berg 	/**
254d172a5efSJohannes Berg 	 * @SCAN_OFFLOAD_ABORT_CMD: abort the scan - no further contents
255d172a5efSJohannes Berg 	 */
256d172a5efSJohannes Berg 	SCAN_OFFLOAD_ABORT_CMD = 0x52,
257d172a5efSJohannes Berg 
258d172a5efSJohannes Berg 	/**
259d172a5efSJohannes Berg 	 * @HOT_SPOT_CMD: uses &struct iwl_hs20_roc_req
260d172a5efSJohannes Berg 	 */
261d172a5efSJohannes Berg 	HOT_SPOT_CMD = 0x53,
262d172a5efSJohannes Berg 
263d172a5efSJohannes Berg 	/**
264c7eca79dSAvraham Stern 	 * @WNM_80211V_TIMING_MEASUREMENT_NOTIFICATION: Time Sync
265c7eca79dSAvraham Stern 	 *	measurement notification for TM/FTM. Sent on receipt of
266c7eca79dSAvraham Stern 	 *	respective WNM action frame for TM protocol or public action
267c7eca79dSAvraham Stern 	 *	frame for FTM protocol from peer device along with additional
268c7eca79dSAvraham Stern 	 *	meta data specified in &struct iwl_time_msmt_notify
269c7eca79dSAvraham Stern 	 */
270c7eca79dSAvraham Stern 	WNM_80211V_TIMING_MEASUREMENT_NOTIFICATION = 0x67,
271c7eca79dSAvraham Stern 
272c7eca79dSAvraham Stern 	/**
273c7eca79dSAvraham Stern 	 * @WNM_80211V_TIMING_MEASUREMENT_CONFIRM_NOTIFICATION: Time Sync
274c7eca79dSAvraham Stern 	 *	measurement confirmation notification for TM/FTM. Sent on
275c7eca79dSAvraham Stern 	 *	receipt of Ack from peer for previously Tx'ed TM/FTM
276c7eca79dSAvraham Stern 	 *	action frame along with additional meta data specified in
277c7eca79dSAvraham Stern 	 *	&struct iwl_time_msmt_cfm_notify
278c7eca79dSAvraham Stern 	 */
279c7eca79dSAvraham Stern 	WNM_80211V_TIMING_MEASUREMENT_CONFIRM_NOTIFICATION = 0x68,
280c7eca79dSAvraham Stern 
281c7eca79dSAvraham Stern 	/**
282d172a5efSJohannes Berg 	 * @SCAN_OFFLOAD_COMPLETE:
283d172a5efSJohannes Berg 	 * notification, &struct iwl_periodic_scan_complete
284d172a5efSJohannes Berg 	 */
285d172a5efSJohannes Berg 	SCAN_OFFLOAD_COMPLETE = 0x6D,
286d172a5efSJohannes Berg 
287d172a5efSJohannes Berg 	/**
288d172a5efSJohannes Berg 	 * @SCAN_OFFLOAD_UPDATE_PROFILES_CMD:
289cdaba917SEmmanuel Grumbach 	 * update scan offload (scheduled scan) profiles/blocklist/etc.
290d172a5efSJohannes Berg 	 */
291d172a5efSJohannes Berg 	SCAN_OFFLOAD_UPDATE_PROFILES_CMD = 0x6E,
292d172a5efSJohannes Berg 
293d172a5efSJohannes Berg 	/**
294d172a5efSJohannes Berg 	 * @MATCH_FOUND_NOTIFICATION: scan match found
295d172a5efSJohannes Berg 	 */
296d172a5efSJohannes Berg 	MATCH_FOUND_NOTIFICATION = 0xd9,
297d172a5efSJohannes Berg 
298d172a5efSJohannes Berg 	/**
299d172a5efSJohannes Berg 	 * @SCAN_ITERATION_COMPLETE:
300d172a5efSJohannes Berg 	 * uses &struct iwl_lmac_scan_complete_notif
301d172a5efSJohannes Berg 	 */
302d172a5efSJohannes Berg 	SCAN_ITERATION_COMPLETE = 0xe7,
303d172a5efSJohannes Berg 
304d172a5efSJohannes Berg 	/* Phy */
305d172a5efSJohannes Berg 	/**
306cb3abd20SJohannes Berg 	 * @PHY_CONFIGURATION_CMD: &struct iwl_phy_cfg_cmd_v1 or &struct iwl_phy_cfg_cmd_v3
307d172a5efSJohannes Berg 	 */
308d172a5efSJohannes Berg 	PHY_CONFIGURATION_CMD = 0x6a,
309d172a5efSJohannes Berg 
310d172a5efSJohannes Berg 	/**
311d172a5efSJohannes Berg 	 * @CALIB_RES_NOTIF_PHY_DB: &struct iwl_calib_res_notif_phy_db
312d172a5efSJohannes Berg 	 */
313d172a5efSJohannes Berg 	CALIB_RES_NOTIF_PHY_DB = 0x6b,
314d172a5efSJohannes Berg 
315d172a5efSJohannes Berg 	/**
316d172a5efSJohannes Berg 	 * @PHY_DB_CMD: &struct iwl_phy_db_cmd
317d172a5efSJohannes Berg 	 */
318d172a5efSJohannes Berg 	PHY_DB_CMD = 0x6c,
319d172a5efSJohannes Berg 
320d172a5efSJohannes Berg 	/**
321d172a5efSJohannes Berg 	 * @POWER_TABLE_CMD: &struct iwl_device_power_cmd
322d172a5efSJohannes Berg 	 */
323d172a5efSJohannes Berg 	POWER_TABLE_CMD = 0x77,
324d172a5efSJohannes Berg 
325d172a5efSJohannes Berg 	/**
326d172a5efSJohannes Berg 	 * @PSM_UAPSD_AP_MISBEHAVING_NOTIFICATION:
327d172a5efSJohannes Berg 	 * &struct iwl_uapsd_misbehaving_ap_notif
328d172a5efSJohannes Berg 	 */
329d172a5efSJohannes Berg 	PSM_UAPSD_AP_MISBEHAVING_NOTIFICATION = 0x78,
330d172a5efSJohannes Berg 
331d172a5efSJohannes Berg 	/**
332d172a5efSJohannes Berg 	 * @LTR_CONFIG: &struct iwl_ltr_config_cmd
333d172a5efSJohannes Berg 	 */
334d172a5efSJohannes Berg 	LTR_CONFIG = 0xee,
335d172a5efSJohannes Berg 
336d172a5efSJohannes Berg 	/**
337d172a5efSJohannes Berg 	 * @REPLY_THERMAL_MNG_BACKOFF:
338d172a5efSJohannes Berg 	 * Thermal throttling command
339d172a5efSJohannes Berg 	 */
340d172a5efSJohannes Berg 	REPLY_THERMAL_MNG_BACKOFF = 0x7e,
341d172a5efSJohannes Berg 
342d172a5efSJohannes Berg 	/**
343d172a5efSJohannes Berg 	 * @NVM_ACCESS_CMD: using &struct iwl_nvm_access_cmd
344d172a5efSJohannes Berg 	 */
345d172a5efSJohannes Berg 	NVM_ACCESS_CMD = 0x88,
346d172a5efSJohannes Berg 
347d172a5efSJohannes Berg 	/**
348d172a5efSJohannes Berg 	 * @BEACON_NOTIFICATION: &struct iwl_extended_beacon_notif
349d172a5efSJohannes Berg 	 */
350d172a5efSJohannes Berg 	BEACON_NOTIFICATION = 0x90,
351d172a5efSJohannes Berg 
352d172a5efSJohannes Berg 	/**
353d172a5efSJohannes Berg 	 * @BEACON_TEMPLATE_CMD:
354d172a5efSJohannes Berg 	 *	Uses one of &struct iwl_mac_beacon_cmd_v6,
355d172a5efSJohannes Berg 	 *	&struct iwl_mac_beacon_cmd_v7 or &struct iwl_mac_beacon_cmd
356d172a5efSJohannes Berg 	 *	depending on the device version.
357d172a5efSJohannes Berg 	 */
358d172a5efSJohannes Berg 	BEACON_TEMPLATE_CMD = 0x91,
359d172a5efSJohannes Berg 	/**
360d172a5efSJohannes Berg 	 * @TX_ANT_CONFIGURATION_CMD: &struct iwl_tx_ant_cfg_cmd
361d172a5efSJohannes Berg 	 */
362d172a5efSJohannes Berg 	TX_ANT_CONFIGURATION_CMD = 0x98,
363d172a5efSJohannes Berg 
364d172a5efSJohannes Berg 	/**
365a74231baSLiad Kaufman 	 * @STATISTICS_CMD:
366a74231baSLiad Kaufman 	 * one of &struct iwl_statistics_cmd,
367a74231baSLiad Kaufman 	 * &struct iwl_notif_statistics_v11,
368a74231baSLiad Kaufman 	 * &struct iwl_notif_statistics_v10,
369853f4954SMordechay Goodstein 	 * &struct iwl_notif_statistics,
3706324c173SMordechay Goodstein 	 * &struct iwl_statistics_operational_ntfy_ver_14
371d172a5efSJohannes Berg 	 */
372d172a5efSJohannes Berg 	STATISTICS_CMD = 0x9c,
373d172a5efSJohannes Berg 
374d172a5efSJohannes Berg 	/**
375d172a5efSJohannes Berg 	 * @STATISTICS_NOTIFICATION:
376d172a5efSJohannes Berg 	 * one of &struct iwl_notif_statistics_v10,
377d172a5efSJohannes Berg 	 * &struct iwl_notif_statistics_v11,
378853f4954SMordechay Goodstein 	 * &struct iwl_notif_statistic,
3796324c173SMordechay Goodstein 	 * &struct iwl_statistics_operational_ntfy_ver_14
380853f4954SMordechay Goodstein 	 * &struct iwl_statistics_operational_ntfy
381d172a5efSJohannes Berg 	 */
382d172a5efSJohannes Berg 	STATISTICS_NOTIFICATION = 0x9d,
383d172a5efSJohannes Berg 
384d172a5efSJohannes Berg 	/**
385d172a5efSJohannes Berg 	 * @EOSP_NOTIFICATION:
386d172a5efSJohannes Berg 	 * Notify that a service period ended,
387d172a5efSJohannes Berg 	 * &struct iwl_mvm_eosp_notification
388d172a5efSJohannes Berg 	 */
389d172a5efSJohannes Berg 	EOSP_NOTIFICATION = 0x9e,
390d172a5efSJohannes Berg 
391d172a5efSJohannes Berg 	/**
392d172a5efSJohannes Berg 	 * @REDUCE_TX_POWER_CMD:
393216cdfb5SLuca Coelho 	 * &struct iwl_dev_tx_power_cmd
394d172a5efSJohannes Berg 	 */
395d172a5efSJohannes Berg 	REDUCE_TX_POWER_CMD = 0x9f,
396d172a5efSJohannes Berg 
397d172a5efSJohannes Berg 	/**
398d172a5efSJohannes Berg 	 * @MISSED_BEACONS_NOTIFICATION: &struct iwl_missed_beacons_notif
399d172a5efSJohannes Berg 	 */
400d172a5efSJohannes Berg 	MISSED_BEACONS_NOTIFICATION = 0xa2,
401d172a5efSJohannes Berg 
402d172a5efSJohannes Berg 	/**
403d172a5efSJohannes Berg 	 * @MAC_PM_POWER_TABLE: using &struct iwl_mac_power_cmd
404d172a5efSJohannes Berg 	 */
405d172a5efSJohannes Berg 	MAC_PM_POWER_TABLE = 0xa9,
406d172a5efSJohannes Berg 
407d172a5efSJohannes Berg 	/**
408d172a5efSJohannes Berg 	 * @MFUART_LOAD_NOTIFICATION: &struct iwl_mfuart_load_notif
409d172a5efSJohannes Berg 	 */
410d172a5efSJohannes Berg 	MFUART_LOAD_NOTIFICATION = 0xb1,
411d172a5efSJohannes Berg 
412d172a5efSJohannes Berg 	/**
413d172a5efSJohannes Berg 	 * @RSS_CONFIG_CMD: &struct iwl_rss_config_cmd
414d172a5efSJohannes Berg 	 */
415d172a5efSJohannes Berg 	RSS_CONFIG_CMD = 0xb3,
416d172a5efSJohannes Berg 
417d172a5efSJohannes Berg 	/**
418d172a5efSJohannes Berg 	 * @REPLY_RX_PHY_CMD: &struct iwl_rx_phy_info
419d172a5efSJohannes Berg 	 */
420d172a5efSJohannes Berg 	REPLY_RX_PHY_CMD = 0xc0,
421d172a5efSJohannes Berg 
422d172a5efSJohannes Berg 	/**
423d172a5efSJohannes Berg 	 * @REPLY_RX_MPDU_CMD:
424d172a5efSJohannes Berg 	 * &struct iwl_rx_mpdu_res_start or &struct iwl_rx_mpdu_desc
425d172a5efSJohannes Berg 	 */
426d172a5efSJohannes Berg 	REPLY_RX_MPDU_CMD = 0xc1,
427d172a5efSJohannes Berg 
428d172a5efSJohannes Berg 	/**
429fe69b7d1SJohannes Berg 	 * @BAR_FRAME_RELEASE: Frame release from BAR notification, used for
430fe69b7d1SJohannes Berg 	 *	multi-TID BAR (previously, the BAR frame itself was reported
431fe69b7d1SJohannes Berg 	 *	instead). Uses &struct iwl_bar_frame_release.
432fe69b7d1SJohannes Berg 	 */
433fe69b7d1SJohannes Berg 	BAR_FRAME_RELEASE = 0xc2,
434fe69b7d1SJohannes Berg 
435fe69b7d1SJohannes Berg 	/**
436d172a5efSJohannes Berg 	 * @FRAME_RELEASE:
437d172a5efSJohannes Berg 	 * Frame release (reorder helper) notification, uses
438d172a5efSJohannes Berg 	 * &struct iwl_frame_release
439d172a5efSJohannes Berg 	 */
440d172a5efSJohannes Berg 	FRAME_RELEASE = 0xc3,
441d172a5efSJohannes Berg 
442d172a5efSJohannes Berg 	/**
443d172a5efSJohannes Berg 	 * @BA_NOTIF:
444d172a5efSJohannes Berg 	 * BlockAck notification, uses &struct iwl_mvm_compressed_ba_notif
445d172a5efSJohannes Berg 	 * or &struct iwl_mvm_ba_notif depending on the HW
446d172a5efSJohannes Berg 	 */
447d172a5efSJohannes Berg 	BA_NOTIF = 0xc5,
448d172a5efSJohannes Berg 
449d172a5efSJohannes Berg 	/* Location Aware Regulatory */
450d172a5efSJohannes Berg 	/**
451d172a5efSJohannes Berg 	 * @MCC_UPDATE_CMD: using &struct iwl_mcc_update_cmd
452d172a5efSJohannes Berg 	 */
453d172a5efSJohannes Berg 	MCC_UPDATE_CMD = 0xc8,
454d172a5efSJohannes Berg 
455d172a5efSJohannes Berg 	/**
456d172a5efSJohannes Berg 	 * @MCC_CHUB_UPDATE_CMD: using &struct iwl_mcc_chub_notif
457d172a5efSJohannes Berg 	 */
458d172a5efSJohannes Berg 	MCC_CHUB_UPDATE_CMD = 0xc9,
459d172a5efSJohannes Berg 
460d172a5efSJohannes Berg 	/**
461d172a5efSJohannes Berg 	 * @MARKER_CMD: trace marker command, uses &struct iwl_mvm_marker
4625281f518SMordechay Goodstein 	 * with &struct iwl_mvm_marker_rsp
463d172a5efSJohannes Berg 	 */
464d172a5efSJohannes Berg 	MARKER_CMD = 0xcb,
465d172a5efSJohannes Berg 
466d172a5efSJohannes Berg 	/**
467d172a5efSJohannes Berg 	 * @BT_PROFILE_NOTIFICATION: &struct iwl_bt_coex_profile_notif
468d172a5efSJohannes Berg 	 */
469d172a5efSJohannes Berg 	BT_PROFILE_NOTIFICATION = 0xce,
470d172a5efSJohannes Berg 
471d172a5efSJohannes Berg 	/**
472d172a5efSJohannes Berg 	 * @BT_CONFIG: &struct iwl_bt_coex_cmd
473d172a5efSJohannes Berg 	 */
474d172a5efSJohannes Berg 	BT_CONFIG = 0x9b,
475d172a5efSJohannes Berg 
476d172a5efSJohannes Berg 	/**
477d172a5efSJohannes Berg 	 * @BT_COEX_UPDATE_REDUCED_TXP:
478d172a5efSJohannes Berg 	 * &struct iwl_bt_coex_reduced_txp_update_cmd
479d172a5efSJohannes Berg 	 */
480d172a5efSJohannes Berg 	BT_COEX_UPDATE_REDUCED_TXP = 0x5c,
481d172a5efSJohannes Berg 
482d172a5efSJohannes Berg 	/**
483d172a5efSJohannes Berg 	 * @BT_COEX_CI: &struct iwl_bt_coex_ci_cmd
484d172a5efSJohannes Berg 	 */
485d172a5efSJohannes Berg 	BT_COEX_CI = 0x5d,
486d172a5efSJohannes Berg 
487d172a5efSJohannes Berg 	/**
488d172a5efSJohannes Berg 	 * @REPLY_SF_CFG_CMD: &struct iwl_sf_cfg_cmd
489d172a5efSJohannes Berg 	 */
490d172a5efSJohannes Berg 	REPLY_SF_CFG_CMD = 0xd1,
491d172a5efSJohannes Berg 	/**
492d172a5efSJohannes Berg 	 * @REPLY_BEACON_FILTERING_CMD: &struct iwl_beacon_filter_cmd
493d172a5efSJohannes Berg 	 */
494d172a5efSJohannes Berg 	REPLY_BEACON_FILTERING_CMD = 0xd2,
495d172a5efSJohannes Berg 
496d172a5efSJohannes Berg 	/**
497d172a5efSJohannes Berg 	 * @DTS_MEASUREMENT_NOTIFICATION:
498d172a5efSJohannes Berg 	 * &struct iwl_dts_measurement_notif_v1 or
499d172a5efSJohannes Berg 	 * &struct iwl_dts_measurement_notif_v2
500d172a5efSJohannes Berg 	 */
501d172a5efSJohannes Berg 	DTS_MEASUREMENT_NOTIFICATION = 0xdd,
502d172a5efSJohannes Berg 
503d172a5efSJohannes Berg 	/**
504d172a5efSJohannes Berg 	 * @LDBG_CONFIG_CMD: configure continuous trace recording
505d172a5efSJohannes Berg 	 */
506d172a5efSJohannes Berg 	LDBG_CONFIG_CMD = 0xf6,
507d172a5efSJohannes Berg 
508d172a5efSJohannes Berg 	/**
509d172a5efSJohannes Berg 	 * @DEBUG_LOG_MSG: Debugging log data from firmware
510d172a5efSJohannes Berg 	 */
511d172a5efSJohannes Berg 	DEBUG_LOG_MSG = 0xf7,
512d172a5efSJohannes Berg 
513d172a5efSJohannes Berg 	/**
514d172a5efSJohannes Berg 	 * @MCAST_FILTER_CMD: &struct iwl_mcast_filter_cmd
515d172a5efSJohannes Berg 	 */
516d172a5efSJohannes Berg 	MCAST_FILTER_CMD = 0xd0,
517d172a5efSJohannes Berg 
518d172a5efSJohannes Berg 	/**
519d172a5efSJohannes Berg 	 * @D3_CONFIG_CMD: &struct iwl_d3_manager_config
520d172a5efSJohannes Berg 	 */
521d172a5efSJohannes Berg 	D3_CONFIG_CMD = 0xd3,
522d172a5efSJohannes Berg 
523d172a5efSJohannes Berg 	/**
524d172a5efSJohannes Berg 	 * @PROT_OFFLOAD_CONFIG_CMD: Depending on firmware, uses one of
525d172a5efSJohannes Berg 	 * &struct iwl_proto_offload_cmd_v1, &struct iwl_proto_offload_cmd_v2,
526d172a5efSJohannes Berg 	 * &struct iwl_proto_offload_cmd_v3_small,
527d172a5efSJohannes Berg 	 * &struct iwl_proto_offload_cmd_v3_large
528d172a5efSJohannes Berg 	 */
529d172a5efSJohannes Berg 	PROT_OFFLOAD_CONFIG_CMD = 0xd4,
530d172a5efSJohannes Berg 
531d172a5efSJohannes Berg 	/**
532d172a5efSJohannes Berg 	 * @D0I3_END_CMD: End D0i3/D3 state, no command data
533d172a5efSJohannes Berg 	 */
534d172a5efSJohannes Berg 	D0I3_END_CMD = 0xed,
535d172a5efSJohannes Berg 
536d172a5efSJohannes Berg 	/**
537d172a5efSJohannes Berg 	 * @WOWLAN_PATTERNS: &struct iwl_wowlan_patterns_cmd
538d172a5efSJohannes Berg 	 */
539d172a5efSJohannes Berg 	WOWLAN_PATTERNS = 0xe0,
540d172a5efSJohannes Berg 
541d172a5efSJohannes Berg 	/**
542d172a5efSJohannes Berg 	 * @WOWLAN_CONFIGURATION: &struct iwl_wowlan_config_cmd
543d172a5efSJohannes Berg 	 */
544d172a5efSJohannes Berg 	WOWLAN_CONFIGURATION = 0xe1,
545d172a5efSJohannes Berg 
546d172a5efSJohannes Berg 	/**
54779e561f0SJohannes Berg 	 * @WOWLAN_TSC_RSC_PARAM: &struct iwl_wowlan_rsc_tsc_params_cmd_v4,
54879e561f0SJohannes Berg 	 *	&struct iwl_wowlan_rsc_tsc_params_cmd
549d172a5efSJohannes Berg 	 */
550d172a5efSJohannes Berg 	WOWLAN_TSC_RSC_PARAM = 0xe2,
551d172a5efSJohannes Berg 
552d172a5efSJohannes Berg 	/**
553d172a5efSJohannes Berg 	 * @WOWLAN_TKIP_PARAM: &struct iwl_wowlan_tkip_params_cmd
554d172a5efSJohannes Berg 	 */
555d172a5efSJohannes Berg 	WOWLAN_TKIP_PARAM = 0xe3,
556d172a5efSJohannes Berg 
557d172a5efSJohannes Berg 	/**
558*43413a36SJohannes Berg 	 * @WOWLAN_KEK_KCK_MATERIAL: &struct iwl_wowlan_kek_kck_material_cmd_v2,
559*43413a36SJohannes Berg 	 * &struct iwl_wowlan_kek_kck_material_cmd_v3 or
560*43413a36SJohannes Berg 	 * &struct iwl_wowlan_kek_kck_material_cmd_v4
561d172a5efSJohannes Berg 	 */
562d172a5efSJohannes Berg 	WOWLAN_KEK_KCK_MATERIAL = 0xe4,
563d172a5efSJohannes Berg 
564d172a5efSJohannes Berg 	/**
565*43413a36SJohannes Berg 	 * @WOWLAN_GET_STATUSES: response in &struct iwl_wowlan_status_v6,
566*43413a36SJohannes Berg 	 *	&struct iwl_wowlan_status_v7, &struct iwl_wowlan_status_v9 or
567*43413a36SJohannes Berg 	 *	&struct iwl_wowlan_status_v12
568d172a5efSJohannes Berg 	 */
569d172a5efSJohannes Berg 	WOWLAN_GET_STATUSES = 0xe5,
570d172a5efSJohannes Berg 
571d172a5efSJohannes Berg 	/**
572*43413a36SJohannes Berg 	 * @SCAN_OFFLOAD_PROFILES_QUERY_CMD: No command data, response is
573*43413a36SJohannes Berg 	 *	&struct iwl_scan_offload_profiles_query_v1
574d172a5efSJohannes Berg 	 */
575d172a5efSJohannes Berg 	SCAN_OFFLOAD_PROFILES_QUERY_CMD = 0x56,
576d172a5efSJohannes Berg };
577d172a5efSJohannes Berg 
578d172a5efSJohannes Berg /**
579d172a5efSJohannes Berg  * enum iwl_system_subcmd_ids - system group command IDs
580d172a5efSJohannes Berg  */
581d172a5efSJohannes Berg enum iwl_system_subcmd_ids {
582d172a5efSJohannes Berg 	/**
583d172a5efSJohannes Berg 	 * @SHARED_MEM_CFG_CMD:
584d172a5efSJohannes Berg 	 * response in &struct iwl_shared_mem_cfg or
585d172a5efSJohannes Berg 	 * &struct iwl_shared_mem_cfg_v2
586d172a5efSJohannes Berg 	 */
587d172a5efSJohannes Berg 	SHARED_MEM_CFG_CMD = 0x0,
588d172a5efSJohannes Berg 
589d172a5efSJohannes Berg 	/**
590cceb4507SShahar S Matityahu 	 * @SOC_CONFIGURATION_CMD: &struct iwl_soc_configuration_cmd
591cceb4507SShahar S Matityahu 	 */
592cceb4507SShahar S Matityahu 	SOC_CONFIGURATION_CMD = 0x01,
593cceb4507SShahar S Matityahu 
594cceb4507SShahar S Matityahu 	/**
595d172a5efSJohannes Berg 	 * @INIT_EXTENDED_CFG_CMD: &struct iwl_init_extended_cfg_cmd
596d172a5efSJohannes Berg 	 */
597d172a5efSJohannes Berg 	INIT_EXTENDED_CFG_CMD = 0x03,
598f130bb75SMordechay Goodstein 
599f130bb75SMordechay Goodstein 	/**
600f130bb75SMordechay Goodstein 	 * @FW_ERROR_RECOVERY_CMD: &struct iwl_fw_error_recovery_cmd
601f130bb75SMordechay Goodstein 	 */
602f130bb75SMordechay Goodstein 	FW_ERROR_RECOVERY_CMD = 0x7,
60321254908SGregory Greenman 
60421254908SGregory Greenman 	/**
60521254908SGregory Greenman 	 * @RFI_CONFIG_CMD: &struct iwl_rfi_config_cmd
60621254908SGregory Greenman 	 */
60721254908SGregory Greenman 	RFI_CONFIG_CMD = 0xb,
60821254908SGregory Greenman 
60921254908SGregory Greenman 	/**
61021254908SGregory Greenman 	 * @RFI_GET_FREQ_TABLE_CMD: &struct iwl_rfi_config_cmd
61121254908SGregory Greenman 	 */
61221254908SGregory Greenman 	RFI_GET_FREQ_TABLE_CMD = 0xc,
613e93d4aafSJohannes Berg 
614e93d4aafSJohannes Berg 	/**
615e93d4aafSJohannes Berg 	 * @SYSTEM_FEATURES_CONTROL_CMD: &struct iwl_system_features_control_cmd
616e93d4aafSJohannes Berg 	 */
617e93d4aafSJohannes Berg 	SYSTEM_FEATURES_CONTROL_CMD = 0xd,
61863b62a2dSGregory Greenman 
61963b62a2dSGregory Greenman 	/**
62063b62a2dSGregory Greenman 	 * @RFI_DEACTIVATE_NOTIF: &struct iwl_rfi_deactivate_notif
62163b62a2dSGregory Greenman 	 */
62263b62a2dSGregory Greenman 	RFI_DEACTIVATE_NOTIF = 0xff,
623d172a5efSJohannes Berg };
624d172a5efSJohannes Berg 
625d172a5efSJohannes Berg #endif /* __iwl_fw_api_commands_h__ */
626