1d172a5efSJohannes Berg /******************************************************************************
2d172a5efSJohannes Berg  *
3d172a5efSJohannes Berg  * This file is provided under a dual BSD/GPLv2 license.  When using or
4d172a5efSJohannes Berg  * redistributing this file, you may do so under either license.
5d172a5efSJohannes Berg  *
6d172a5efSJohannes Berg  * GPL LICENSE SUMMARY
7d172a5efSJohannes Berg  *
8d172a5efSJohannes Berg  * Copyright(c) 2012 - 2014 Intel Corporation. All rights reserved.
9d172a5efSJohannes Berg  * Copyright(c) 2013 - 2015 Intel Mobile Communications GmbH
10d172a5efSJohannes Berg  * Copyright(c) 2016 - 2017 Intel Deutschland GmbH
11d172a5efSJohannes Berg  *
12d172a5efSJohannes Berg  * This program is free software; you can redistribute it and/or modify
13d172a5efSJohannes Berg  * it under the terms of version 2 of the GNU General Public License as
14d172a5efSJohannes Berg  * published by the Free Software Foundation.
15d172a5efSJohannes Berg  *
16d172a5efSJohannes Berg  * This program is distributed in the hope that it will be useful, but
17d172a5efSJohannes Berg  * WITHOUT ANY WARRANTY; without even the implied warranty of
18d172a5efSJohannes Berg  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
19d172a5efSJohannes Berg  * General Public License for more details.
20d172a5efSJohannes Berg  *
21d172a5efSJohannes Berg  * The full GNU General Public License is included in this distribution
22d172a5efSJohannes Berg  * in the file called COPYING.
23d172a5efSJohannes Berg  *
24d172a5efSJohannes Berg  * Contact Information:
25d172a5efSJohannes Berg  *  Intel Linux Wireless <linuxwifi@intel.com>
26d172a5efSJohannes Berg  * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
27d172a5efSJohannes Berg  *
28d172a5efSJohannes Berg  * BSD LICENSE
29d172a5efSJohannes Berg  *
30d172a5efSJohannes Berg  * Copyright(c) 2012 - 2014 Intel Corporation. All rights reserved.
31d172a5efSJohannes Berg  * Copyright(c) 2013 - 2015 Intel Mobile Communications GmbH
32d172a5efSJohannes Berg  * Copyright(c) 2016 - 2017 Intel Deutschland GmbH
33d172a5efSJohannes Berg  * All rights reserved.
34d172a5efSJohannes Berg  *
35d172a5efSJohannes Berg  * Redistribution and use in source and binary forms, with or without
36d172a5efSJohannes Berg  * modification, are permitted provided that the following conditions
37d172a5efSJohannes Berg  * are met:
38d172a5efSJohannes Berg  *
39d172a5efSJohannes Berg  *  * Redistributions of source code must retain the above copyright
40d172a5efSJohannes Berg  *    notice, this list of conditions and the following disclaimer.
41d172a5efSJohannes Berg  *  * Redistributions in binary form must reproduce the above copyright
42d172a5efSJohannes Berg  *    notice, this list of conditions and the following disclaimer in
43d172a5efSJohannes Berg  *    the documentation and/or other materials provided with the
44d172a5efSJohannes Berg  *    distribution.
45d172a5efSJohannes Berg  *  * Neither the name Intel Corporation nor the names of its
46d172a5efSJohannes Berg  *    contributors may be used to endorse or promote products derived
47d172a5efSJohannes Berg  *    from this software without specific prior written permission.
48d172a5efSJohannes Berg  *
49d172a5efSJohannes Berg  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
50d172a5efSJohannes Berg  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
51d172a5efSJohannes Berg  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
52d172a5efSJohannes Berg  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
53d172a5efSJohannes Berg  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
54d172a5efSJohannes Berg  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
55d172a5efSJohannes Berg  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
56d172a5efSJohannes Berg  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
57d172a5efSJohannes Berg  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
58d172a5efSJohannes Berg  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
59d172a5efSJohannes Berg  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
60d172a5efSJohannes Berg  *
61d172a5efSJohannes Berg  *****************************************************************************/
62d172a5efSJohannes Berg 
63d172a5efSJohannes Berg #ifndef __iwl_fw_api_commands_h__
64d172a5efSJohannes Berg #define __iwl_fw_api_commands_h__
65d172a5efSJohannes Berg 
66d172a5efSJohannes Berg /**
67d172a5efSJohannes Berg  * enum iwl_mvm_command_groups - command groups for the firmware
68d172a5efSJohannes Berg  * @LEGACY_GROUP: legacy group, uses command IDs from &enum iwl_legacy_cmds
69d172a5efSJohannes Berg  * @LONG_GROUP: legacy group with long header, also uses command IDs
70d172a5efSJohannes Berg  *	from &enum iwl_legacy_cmds
71d172a5efSJohannes Berg  * @SYSTEM_GROUP: system group, uses command IDs from
72d172a5efSJohannes Berg  *	&enum iwl_system_subcmd_ids
73d172a5efSJohannes Berg  * @MAC_CONF_GROUP: MAC configuration group, uses command IDs from
74d172a5efSJohannes Berg  *	&enum iwl_mac_conf_subcmd_ids
75d172a5efSJohannes Berg  * @PHY_OPS_GROUP: PHY operations group, uses command IDs from
76d172a5efSJohannes Berg  *	&enum iwl_phy_ops_subcmd_ids
77d172a5efSJohannes Berg  * @DATA_PATH_GROUP: data path group, uses command IDs from
78d172a5efSJohannes Berg  *	&enum iwl_data_path_subcmd_ids
79d172a5efSJohannes Berg  * @NAN_GROUP: NAN group, uses command IDs from &enum iwl_nan_subcmd_ids
80d172a5efSJohannes Berg  * @TOF_GROUP: TOF group, uses command IDs from &enum iwl_tof_subcmd_ids
81d172a5efSJohannes Berg  * @PROT_OFFLOAD_GROUP: protocol offload group, uses command IDs from
82d172a5efSJohannes Berg  *	&enum iwl_prot_offload_subcmd_ids
83d172a5efSJohannes Berg  * @REGULATORY_AND_NVM_GROUP: regulatory/NVM group, uses command IDs from
84d172a5efSJohannes Berg  *	&enum iwl_regulatory_and_nvm_subcmd_ids
85d172a5efSJohannes Berg  * @DEBUG_GROUP: Debug group, uses command IDs from &enum iwl_debug_cmds
86d172a5efSJohannes Berg  */
87d172a5efSJohannes Berg enum iwl_mvm_command_groups {
88d172a5efSJohannes Berg 	LEGACY_GROUP = 0x0,
89d172a5efSJohannes Berg 	LONG_GROUP = 0x1,
90d172a5efSJohannes Berg 	SYSTEM_GROUP = 0x2,
91d172a5efSJohannes Berg 	MAC_CONF_GROUP = 0x3,
92d172a5efSJohannes Berg 	PHY_OPS_GROUP = 0x4,
93d172a5efSJohannes Berg 	DATA_PATH_GROUP = 0x5,
94d172a5efSJohannes Berg 	NAN_GROUP = 0x7,
95d172a5efSJohannes Berg 	TOF_GROUP = 0x8,
96d172a5efSJohannes Berg 	PROT_OFFLOAD_GROUP = 0xb,
97d172a5efSJohannes Berg 	REGULATORY_AND_NVM_GROUP = 0xc,
98d172a5efSJohannes Berg 	DEBUG_GROUP = 0xf,
99d172a5efSJohannes Berg };
100d172a5efSJohannes Berg 
101d172a5efSJohannes Berg /**
102d172a5efSJohannes Berg  * enum iwl_legacy_cmds - legacy group command IDs
103d172a5efSJohannes Berg  */
104d172a5efSJohannes Berg enum iwl_legacy_cmds {
105d172a5efSJohannes Berg 	/**
106d172a5efSJohannes Berg 	 * @MVM_ALIVE:
107d172a5efSJohannes Berg 	 * Alive data from the firmware, as described in
108d172a5efSJohannes Berg 	 * &struct mvm_alive_resp_v3 or &struct mvm_alive_resp.
109d172a5efSJohannes Berg 	 */
110d172a5efSJohannes Berg 	MVM_ALIVE = 0x1,
111d172a5efSJohannes Berg 
112d172a5efSJohannes Berg 	/**
113d172a5efSJohannes Berg 	 * @REPLY_ERROR: Cause an error in the firmware, for testing purposes.
114d172a5efSJohannes Berg 	 */
115d172a5efSJohannes Berg 	REPLY_ERROR = 0x2,
116d172a5efSJohannes Berg 
117d172a5efSJohannes Berg 	/**
118d172a5efSJohannes Berg 	 * @ECHO_CMD: Send data to the device to have it returned immediately.
119d172a5efSJohannes Berg 	 */
120d172a5efSJohannes Berg 	ECHO_CMD = 0x3,
121d172a5efSJohannes Berg 
122d172a5efSJohannes Berg 	/**
123d172a5efSJohannes Berg 	 * @INIT_COMPLETE_NOTIF: Notification that initialization is complete.
124d172a5efSJohannes Berg 	 */
125d172a5efSJohannes Berg 	INIT_COMPLETE_NOTIF = 0x4,
126d172a5efSJohannes Berg 
127d172a5efSJohannes Berg 	/**
128d172a5efSJohannes Berg 	 * @PHY_CONTEXT_CMD:
129d172a5efSJohannes Berg 	 * Add/modify/remove a PHY context, using &struct iwl_phy_context_cmd.
130d172a5efSJohannes Berg 	 */
131d172a5efSJohannes Berg 	PHY_CONTEXT_CMD = 0x8,
132d172a5efSJohannes Berg 
133d172a5efSJohannes Berg 	/**
134d172a5efSJohannes Berg 	 * @DBG_CFG: Debug configuration command.
135d172a5efSJohannes Berg 	 */
136d172a5efSJohannes Berg 	DBG_CFG = 0x9,
137d172a5efSJohannes Berg 
138d172a5efSJohannes Berg 	/**
139d172a5efSJohannes Berg 	 * @ANTENNA_COUPLING_NOTIFICATION:
140d172a5efSJohannes Berg 	 * Antenna coupling data, &struct iwl_mvm_antenna_coupling_notif
141d172a5efSJohannes Berg 	 */
142d172a5efSJohannes Berg 	ANTENNA_COUPLING_NOTIFICATION = 0xa,
143d172a5efSJohannes Berg 
144d172a5efSJohannes Berg 	/**
145d172a5efSJohannes Berg 	 * @SCAN_ITERATION_COMPLETE_UMAC:
146d172a5efSJohannes Berg 	 * Firmware indicates a scan iteration completed, using
147d172a5efSJohannes Berg 	 * &struct iwl_umac_scan_iter_complete_notif.
148d172a5efSJohannes Berg 	 */
149d172a5efSJohannes Berg 	SCAN_ITERATION_COMPLETE_UMAC = 0xb5,
150d172a5efSJohannes Berg 
151d172a5efSJohannes Berg 	/**
152d172a5efSJohannes Berg 	 * @SCAN_CFG_CMD:
153d172a5efSJohannes Berg 	 * uses &struct iwl_scan_config_v1 or &struct iwl_scan_config
154d172a5efSJohannes Berg 	 */
155d172a5efSJohannes Berg 	SCAN_CFG_CMD = 0xc,
156d172a5efSJohannes Berg 
157d172a5efSJohannes Berg 	/**
158d172a5efSJohannes Berg 	 * @SCAN_REQ_UMAC: uses &struct iwl_scan_req_umac
159d172a5efSJohannes Berg 	 */
160d172a5efSJohannes Berg 	SCAN_REQ_UMAC = 0xd,
161d172a5efSJohannes Berg 
162d172a5efSJohannes Berg 	/**
163d172a5efSJohannes Berg 	 * @SCAN_ABORT_UMAC: uses &struct iwl_umac_scan_abort
164d172a5efSJohannes Berg 	 */
165d172a5efSJohannes Berg 	SCAN_ABORT_UMAC = 0xe,
166d172a5efSJohannes Berg 
167d172a5efSJohannes Berg 	/**
168d172a5efSJohannes Berg 	 * @SCAN_COMPLETE_UMAC: uses &struct iwl_umac_scan_complete
169d172a5efSJohannes Berg 	 */
170d172a5efSJohannes Berg 	SCAN_COMPLETE_UMAC = 0xf,
171d172a5efSJohannes Berg 
172d172a5efSJohannes Berg 	/**
173d172a5efSJohannes Berg 	 * @BA_WINDOW_STATUS_NOTIFICATION_ID:
174d172a5efSJohannes Berg 	 * uses &struct iwl_ba_window_status_notif
175d172a5efSJohannes Berg 	 */
176d172a5efSJohannes Berg 	BA_WINDOW_STATUS_NOTIFICATION_ID = 0x13,
177d172a5efSJohannes Berg 
178d172a5efSJohannes Berg 	/**
179d172a5efSJohannes Berg 	 * @ADD_STA_KEY:
180d172a5efSJohannes Berg 	 * &struct iwl_mvm_add_sta_key_cmd_v1 or
181d172a5efSJohannes Berg 	 * &struct iwl_mvm_add_sta_key_cmd.
182d172a5efSJohannes Berg 	 */
183d172a5efSJohannes Berg 	ADD_STA_KEY = 0x17,
184d172a5efSJohannes Berg 
185d172a5efSJohannes Berg 	/**
186d172a5efSJohannes Berg 	 * @ADD_STA:
187d172a5efSJohannes Berg 	 * &struct iwl_mvm_add_sta_cmd or &struct iwl_mvm_add_sta_cmd_v7.
188d172a5efSJohannes Berg 	 */
189d172a5efSJohannes Berg 	ADD_STA = 0x18,
190d172a5efSJohannes Berg 
191d172a5efSJohannes Berg 	/**
192d172a5efSJohannes Berg 	 * @REMOVE_STA: &struct iwl_mvm_rm_sta_cmd
193d172a5efSJohannes Berg 	 */
194d172a5efSJohannes Berg 	REMOVE_STA = 0x19,
195d172a5efSJohannes Berg 
196d172a5efSJohannes Berg 	/**
197d172a5efSJohannes Berg 	 * @FW_GET_ITEM_CMD: uses &struct iwl_fw_get_item_cmd
198d172a5efSJohannes Berg 	 */
199d172a5efSJohannes Berg 	FW_GET_ITEM_CMD = 0x1a,
200d172a5efSJohannes Berg 
201d172a5efSJohannes Berg 	/**
202d172a5efSJohannes Berg 	 * @TX_CMD: uses &struct iwl_tx_cmd or &struct iwl_tx_cmd_gen2,
203d172a5efSJohannes Berg 	 *	response in &struct iwl_mvm_tx_resp or
204d172a5efSJohannes Berg 	 *	&struct iwl_mvm_tx_resp_v3
205d172a5efSJohannes Berg 	 */
206d172a5efSJohannes Berg 	TX_CMD = 0x1c,
207d172a5efSJohannes Berg 
208d172a5efSJohannes Berg 	/**
209d172a5efSJohannes Berg 	 * @TXPATH_FLUSH: &struct iwl_tx_path_flush_cmd
210d172a5efSJohannes Berg 	 */
211d172a5efSJohannes Berg 	TXPATH_FLUSH = 0x1e,
212d172a5efSJohannes Berg 
213d172a5efSJohannes Berg 	/**
214d172a5efSJohannes Berg 	 * @MGMT_MCAST_KEY:
215d172a5efSJohannes Berg 	 * &struct iwl_mvm_mgmt_mcast_key_cmd or
216d172a5efSJohannes Berg 	 * &struct iwl_mvm_mgmt_mcast_key_cmd_v1
217d172a5efSJohannes Berg 	 */
218d172a5efSJohannes Berg 	MGMT_MCAST_KEY = 0x1f,
219d172a5efSJohannes Berg 
220d172a5efSJohannes Berg 	/* scheduler config */
221d172a5efSJohannes Berg 	/**
222d172a5efSJohannes Berg 	 * @SCD_QUEUE_CFG: &struct iwl_scd_txq_cfg_cmd for older hardware,
223d172a5efSJohannes Berg 	 *	&struct iwl_tx_queue_cfg_cmd with &struct iwl_tx_queue_cfg_rsp
224d172a5efSJohannes Berg 	 *	for newer (A000) hardware.
225d172a5efSJohannes Berg 	 */
226d172a5efSJohannes Berg 	SCD_QUEUE_CFG = 0x1d,
227d172a5efSJohannes Berg 
228d172a5efSJohannes Berg 	/**
229d172a5efSJohannes Berg 	 * @WEP_KEY: uses &struct iwl_mvm_wep_key_cmd
230d172a5efSJohannes Berg 	 */
231d172a5efSJohannes Berg 	WEP_KEY = 0x20,
232d172a5efSJohannes Berg 
233d172a5efSJohannes Berg 	/**
234d172a5efSJohannes Berg 	 * @SHARED_MEM_CFG:
235d172a5efSJohannes Berg 	 * retrieve shared memory configuration - response in
236d172a5efSJohannes Berg 	 * &struct iwl_shared_mem_cfg
237d172a5efSJohannes Berg 	 */
238d172a5efSJohannes Berg 	SHARED_MEM_CFG = 0x25,
239d172a5efSJohannes Berg 
240d172a5efSJohannes Berg 	/**
241d172a5efSJohannes Berg 	 * @TDLS_CHANNEL_SWITCH_CMD: uses &struct iwl_tdls_channel_switch_cmd
242d172a5efSJohannes Berg 	 */
243d172a5efSJohannes Berg 	TDLS_CHANNEL_SWITCH_CMD = 0x27,
244d172a5efSJohannes Berg 
245d172a5efSJohannes Berg 	/**
246d172a5efSJohannes Berg 	 * @TDLS_CHANNEL_SWITCH_NOTIFICATION:
247d172a5efSJohannes Berg 	 * uses &struct iwl_tdls_channel_switch_notif
248d172a5efSJohannes Berg 	 */
249d172a5efSJohannes Berg 	TDLS_CHANNEL_SWITCH_NOTIFICATION = 0xaa,
250d172a5efSJohannes Berg 
251d172a5efSJohannes Berg 	/**
252d172a5efSJohannes Berg 	 * @TDLS_CONFIG_CMD:
253d172a5efSJohannes Berg 	 * &struct iwl_tdls_config_cmd, response in &struct iwl_tdls_config_res
254d172a5efSJohannes Berg 	 */
255d172a5efSJohannes Berg 	TDLS_CONFIG_CMD = 0xa7,
256d172a5efSJohannes Berg 
257d172a5efSJohannes Berg 	/**
258d172a5efSJohannes Berg 	 * @MAC_CONTEXT_CMD: &struct iwl_mac_ctx_cmd
259d172a5efSJohannes Berg 	 */
260d172a5efSJohannes Berg 	MAC_CONTEXT_CMD = 0x28,
261d172a5efSJohannes Berg 
262d172a5efSJohannes Berg 	/**
263d172a5efSJohannes Berg 	 * @TIME_EVENT_CMD:
264d172a5efSJohannes Berg 	 * &struct iwl_time_event_cmd, response in &struct iwl_time_event_resp
265d172a5efSJohannes Berg 	 */
266d172a5efSJohannes Berg 	TIME_EVENT_CMD = 0x29, /* both CMD and response */
267d172a5efSJohannes Berg 
268d172a5efSJohannes Berg 	/**
269d172a5efSJohannes Berg 	 * @TIME_EVENT_NOTIFICATION: &struct iwl_time_event_notif
270d172a5efSJohannes Berg 	 */
271d172a5efSJohannes Berg 	TIME_EVENT_NOTIFICATION = 0x2a,
272d172a5efSJohannes Berg 
273d172a5efSJohannes Berg 	/**
274d172a5efSJohannes Berg 	 * @BINDING_CONTEXT_CMD:
275d172a5efSJohannes Berg 	 * &struct iwl_binding_cmd or &struct iwl_binding_cmd_v1
276d172a5efSJohannes Berg 	 */
277d172a5efSJohannes Berg 	BINDING_CONTEXT_CMD = 0x2b,
278d172a5efSJohannes Berg 
279d172a5efSJohannes Berg 	/**
280d172a5efSJohannes Berg 	 * @TIME_QUOTA_CMD: &struct iwl_time_quota_cmd
281d172a5efSJohannes Berg 	 */
282d172a5efSJohannes Berg 	TIME_QUOTA_CMD = 0x2c,
283d172a5efSJohannes Berg 
284d172a5efSJohannes Berg 	/**
285d172a5efSJohannes Berg 	 * @NON_QOS_TX_COUNTER_CMD:
286d172a5efSJohannes Berg 	 * command is &struct iwl_nonqos_seq_query_cmd
287d172a5efSJohannes Berg 	 */
288d172a5efSJohannes Berg 	NON_QOS_TX_COUNTER_CMD = 0x2d,
289d172a5efSJohannes Berg 
290d172a5efSJohannes Berg 	/**
291d172a5efSJohannes Berg 	 * @LQ_CMD: using &struct iwl_lq_cmd
292d172a5efSJohannes Berg 	 */
293d172a5efSJohannes Berg 	LQ_CMD = 0x4e,
294d172a5efSJohannes Berg 
295d172a5efSJohannes Berg 	/**
296d172a5efSJohannes Berg 	 * @FW_PAGING_BLOCK_CMD:
297d172a5efSJohannes Berg 	 * &struct iwl_fw_paging_cmd
298d172a5efSJohannes Berg 	 */
299d172a5efSJohannes Berg 	FW_PAGING_BLOCK_CMD = 0x4f,
300d172a5efSJohannes Berg 
301d172a5efSJohannes Berg 	/**
302d172a5efSJohannes Berg 	 * @SCAN_OFFLOAD_REQUEST_CMD: uses &struct iwl_scan_req_lmac
303d172a5efSJohannes Berg 	 */
304d172a5efSJohannes Berg 	SCAN_OFFLOAD_REQUEST_CMD = 0x51,
305d172a5efSJohannes Berg 
306d172a5efSJohannes Berg 	/**
307d172a5efSJohannes Berg 	 * @SCAN_OFFLOAD_ABORT_CMD: abort the scan - no further contents
308d172a5efSJohannes Berg 	 */
309d172a5efSJohannes Berg 	SCAN_OFFLOAD_ABORT_CMD = 0x52,
310d172a5efSJohannes Berg 
311d172a5efSJohannes Berg 	/**
312d172a5efSJohannes Berg 	 * @HOT_SPOT_CMD: uses &struct iwl_hs20_roc_req
313d172a5efSJohannes Berg 	 */
314d172a5efSJohannes Berg 	HOT_SPOT_CMD = 0x53,
315d172a5efSJohannes Berg 
316d172a5efSJohannes Berg 	/**
317d172a5efSJohannes Berg 	 * @SCAN_OFFLOAD_COMPLETE:
318d172a5efSJohannes Berg 	 * notification, &struct iwl_periodic_scan_complete
319d172a5efSJohannes Berg 	 */
320d172a5efSJohannes Berg 	SCAN_OFFLOAD_COMPLETE = 0x6D,
321d172a5efSJohannes Berg 
322d172a5efSJohannes Berg 	/**
323d172a5efSJohannes Berg 	 * @SCAN_OFFLOAD_UPDATE_PROFILES_CMD:
324d172a5efSJohannes Berg 	 * update scan offload (scheduled scan) profiles/blacklist/etc.
325d172a5efSJohannes Berg 	 */
326d172a5efSJohannes Berg 	SCAN_OFFLOAD_UPDATE_PROFILES_CMD = 0x6E,
327d172a5efSJohannes Berg 
328d172a5efSJohannes Berg 	/**
329d172a5efSJohannes Berg 	 * @MATCH_FOUND_NOTIFICATION: scan match found
330d172a5efSJohannes Berg 	 */
331d172a5efSJohannes Berg 	MATCH_FOUND_NOTIFICATION = 0xd9,
332d172a5efSJohannes Berg 
333d172a5efSJohannes Berg 	/**
334d172a5efSJohannes Berg 	 * @SCAN_ITERATION_COMPLETE:
335d172a5efSJohannes Berg 	 * uses &struct iwl_lmac_scan_complete_notif
336d172a5efSJohannes Berg 	 */
337d172a5efSJohannes Berg 	SCAN_ITERATION_COMPLETE = 0xe7,
338d172a5efSJohannes Berg 
339d172a5efSJohannes Berg 	/* Phy */
340d172a5efSJohannes Berg 	/**
341d172a5efSJohannes Berg 	 * @PHY_CONFIGURATION_CMD: &struct iwl_phy_cfg_cmd
342d172a5efSJohannes Berg 	 */
343d172a5efSJohannes Berg 	PHY_CONFIGURATION_CMD = 0x6a,
344d172a5efSJohannes Berg 
345d172a5efSJohannes Berg 	/**
346d172a5efSJohannes Berg 	 * @CALIB_RES_NOTIF_PHY_DB: &struct iwl_calib_res_notif_phy_db
347d172a5efSJohannes Berg 	 */
348d172a5efSJohannes Berg 	CALIB_RES_NOTIF_PHY_DB = 0x6b,
349d172a5efSJohannes Berg 
350d172a5efSJohannes Berg 	/**
351d172a5efSJohannes Berg 	 * @PHY_DB_CMD: &struct iwl_phy_db_cmd
352d172a5efSJohannes Berg 	 */
353d172a5efSJohannes Berg 	PHY_DB_CMD = 0x6c,
354d172a5efSJohannes Berg 
355d172a5efSJohannes Berg 	/**
356d172a5efSJohannes Berg 	 * @TOF_CMD: &struct iwl_tof_config_cmd
357d172a5efSJohannes Berg 	 */
358d172a5efSJohannes Berg 	TOF_CMD = 0x10,
359d172a5efSJohannes Berg 
360d172a5efSJohannes Berg 	/**
361d172a5efSJohannes Berg 	 * @TOF_NOTIFICATION: &struct iwl_tof_gen_resp_cmd
362d172a5efSJohannes Berg 	 */
363d172a5efSJohannes Berg 	TOF_NOTIFICATION = 0x11,
364d172a5efSJohannes Berg 
365d172a5efSJohannes Berg 	/**
366d172a5efSJohannes Berg 	 * @POWER_TABLE_CMD: &struct iwl_device_power_cmd
367d172a5efSJohannes Berg 	 */
368d172a5efSJohannes Berg 	POWER_TABLE_CMD = 0x77,
369d172a5efSJohannes Berg 
370d172a5efSJohannes Berg 	/**
371d172a5efSJohannes Berg 	 * @PSM_UAPSD_AP_MISBEHAVING_NOTIFICATION:
372d172a5efSJohannes Berg 	 * &struct iwl_uapsd_misbehaving_ap_notif
373d172a5efSJohannes Berg 	 */
374d172a5efSJohannes Berg 	PSM_UAPSD_AP_MISBEHAVING_NOTIFICATION = 0x78,
375d172a5efSJohannes Berg 
376d172a5efSJohannes Berg 	/**
377d172a5efSJohannes Berg 	 * @LTR_CONFIG: &struct iwl_ltr_config_cmd
378d172a5efSJohannes Berg 	 */
379d172a5efSJohannes Berg 	LTR_CONFIG = 0xee,
380d172a5efSJohannes Berg 
381d172a5efSJohannes Berg 	/**
382d172a5efSJohannes Berg 	 * @REPLY_THERMAL_MNG_BACKOFF:
383d172a5efSJohannes Berg 	 * Thermal throttling command
384d172a5efSJohannes Berg 	 */
385d172a5efSJohannes Berg 	REPLY_THERMAL_MNG_BACKOFF = 0x7e,
386d172a5efSJohannes Berg 
387d172a5efSJohannes Berg 	/**
388d172a5efSJohannes Berg 	 * @DC2DC_CONFIG_CMD:
389d172a5efSJohannes Berg 	 * Set/Get DC2DC frequency tune
390d172a5efSJohannes Berg 	 * Command is &struct iwl_dc2dc_config_cmd,
391d172a5efSJohannes Berg 	 * response is &struct iwl_dc2dc_config_resp
392d172a5efSJohannes Berg 	 */
393d172a5efSJohannes Berg 	DC2DC_CONFIG_CMD = 0x83,
394d172a5efSJohannes Berg 
395d172a5efSJohannes Berg 	/**
396d172a5efSJohannes Berg 	 * @NVM_ACCESS_CMD: using &struct iwl_nvm_access_cmd
397d172a5efSJohannes Berg 	 */
398d172a5efSJohannes Berg 	NVM_ACCESS_CMD = 0x88,
399d172a5efSJohannes Berg 
400d172a5efSJohannes Berg 	/**
401d172a5efSJohannes Berg 	 * @BEACON_NOTIFICATION: &struct iwl_extended_beacon_notif
402d172a5efSJohannes Berg 	 */
403d172a5efSJohannes Berg 	BEACON_NOTIFICATION = 0x90,
404d172a5efSJohannes Berg 
405d172a5efSJohannes Berg 	/**
406d172a5efSJohannes Berg 	 * @BEACON_TEMPLATE_CMD:
407d172a5efSJohannes Berg 	 *	Uses one of &struct iwl_mac_beacon_cmd_v6,
408d172a5efSJohannes Berg 	 *	&struct iwl_mac_beacon_cmd_v7 or &struct iwl_mac_beacon_cmd
409d172a5efSJohannes Berg 	 *	depending on the device version.
410d172a5efSJohannes Berg 	 */
411d172a5efSJohannes Berg 	BEACON_TEMPLATE_CMD = 0x91,
412d172a5efSJohannes Berg 	/**
413d172a5efSJohannes Berg 	 * @TX_ANT_CONFIGURATION_CMD: &struct iwl_tx_ant_cfg_cmd
414d172a5efSJohannes Berg 	 */
415d172a5efSJohannes Berg 	TX_ANT_CONFIGURATION_CMD = 0x98,
416d172a5efSJohannes Berg 
417d172a5efSJohannes Berg 	/**
418d172a5efSJohannes Berg 	 * @STATISTICS_CMD: &struct iwl_statistics_cmd
419d172a5efSJohannes Berg 	 */
420d172a5efSJohannes Berg 	STATISTICS_CMD = 0x9c,
421d172a5efSJohannes Berg 
422d172a5efSJohannes Berg 	/**
423d172a5efSJohannes Berg 	 * @STATISTICS_NOTIFICATION:
424d172a5efSJohannes Berg 	 * one of &struct iwl_notif_statistics_v10,
425d172a5efSJohannes Berg 	 * &struct iwl_notif_statistics_v11,
426d172a5efSJohannes Berg 	 * &struct iwl_notif_statistics_cdb
427d172a5efSJohannes Berg 	 */
428d172a5efSJohannes Berg 	STATISTICS_NOTIFICATION = 0x9d,
429d172a5efSJohannes Berg 
430d172a5efSJohannes Berg 	/**
431d172a5efSJohannes Berg 	 * @EOSP_NOTIFICATION:
432d172a5efSJohannes Berg 	 * Notify that a service period ended,
433d172a5efSJohannes Berg 	 * &struct iwl_mvm_eosp_notification
434d172a5efSJohannes Berg 	 */
435d172a5efSJohannes Berg 	EOSP_NOTIFICATION = 0x9e,
436d172a5efSJohannes Berg 
437d172a5efSJohannes Berg 	/**
438d172a5efSJohannes Berg 	 * @REDUCE_TX_POWER_CMD:
439d172a5efSJohannes Berg 	 * &struct iwl_dev_tx_power_cmd_v3 or &struct iwl_dev_tx_power_cmd
440d172a5efSJohannes Berg 	 */
441d172a5efSJohannes Berg 	REDUCE_TX_POWER_CMD = 0x9f,
442d172a5efSJohannes Berg 
443d172a5efSJohannes Berg 	/**
444d172a5efSJohannes Berg 	 * @CARD_STATE_NOTIFICATION:
445d172a5efSJohannes Berg 	 * Card state (RF/CT kill) notification,
446d172a5efSJohannes Berg 	 * uses &struct iwl_card_state_notif
447d172a5efSJohannes Berg 	 */
448d172a5efSJohannes Berg 	CARD_STATE_NOTIFICATION = 0xa1,
449d172a5efSJohannes Berg 
450d172a5efSJohannes Berg 	/**
451d172a5efSJohannes Berg 	 * @MISSED_BEACONS_NOTIFICATION: &struct iwl_missed_beacons_notif
452d172a5efSJohannes Berg 	 */
453d172a5efSJohannes Berg 	MISSED_BEACONS_NOTIFICATION = 0xa2,
454d172a5efSJohannes Berg 
455d172a5efSJohannes Berg 	/**
456d172a5efSJohannes Berg 	 * @MAC_PM_POWER_TABLE: using &struct iwl_mac_power_cmd
457d172a5efSJohannes Berg 	 */
458d172a5efSJohannes Berg 	MAC_PM_POWER_TABLE = 0xa9,
459d172a5efSJohannes Berg 
460d172a5efSJohannes Berg 	/**
461d172a5efSJohannes Berg 	 * @MFUART_LOAD_NOTIFICATION: &struct iwl_mfuart_load_notif
462d172a5efSJohannes Berg 	 */
463d172a5efSJohannes Berg 	MFUART_LOAD_NOTIFICATION = 0xb1,
464d172a5efSJohannes Berg 
465d172a5efSJohannes Berg 	/**
466d172a5efSJohannes Berg 	 * @RSS_CONFIG_CMD: &struct iwl_rss_config_cmd
467d172a5efSJohannes Berg 	 */
468d172a5efSJohannes Berg 	RSS_CONFIG_CMD = 0xb3,
469d172a5efSJohannes Berg 
470d172a5efSJohannes Berg 	/**
471d172a5efSJohannes Berg 	 * @REPLY_RX_PHY_CMD: &struct iwl_rx_phy_info
472d172a5efSJohannes Berg 	 */
473d172a5efSJohannes Berg 	REPLY_RX_PHY_CMD = 0xc0,
474d172a5efSJohannes Berg 
475d172a5efSJohannes Berg 	/**
476d172a5efSJohannes Berg 	 * @REPLY_RX_MPDU_CMD:
477d172a5efSJohannes Berg 	 * &struct iwl_rx_mpdu_res_start or &struct iwl_rx_mpdu_desc
478d172a5efSJohannes Berg 	 */
479d172a5efSJohannes Berg 	REPLY_RX_MPDU_CMD = 0xc1,
480d172a5efSJohannes Berg 
481d172a5efSJohannes Berg 	/**
482d172a5efSJohannes Berg 	 * @FRAME_RELEASE:
483d172a5efSJohannes Berg 	 * Frame release (reorder helper) notification, uses
484d172a5efSJohannes Berg 	 * &struct iwl_frame_release
485d172a5efSJohannes Berg 	 */
486d172a5efSJohannes Berg 	FRAME_RELEASE = 0xc3,
487d172a5efSJohannes Berg 
488d172a5efSJohannes Berg 	/**
489d172a5efSJohannes Berg 	 * @BA_NOTIF:
490d172a5efSJohannes Berg 	 * BlockAck notification, uses &struct iwl_mvm_compressed_ba_notif
491d172a5efSJohannes Berg 	 * or &struct iwl_mvm_ba_notif depending on the HW
492d172a5efSJohannes Berg 	 */
493d172a5efSJohannes Berg 	BA_NOTIF = 0xc5,
494d172a5efSJohannes Berg 
495d172a5efSJohannes Berg 	/* Location Aware Regulatory */
496d172a5efSJohannes Berg 	/**
497d172a5efSJohannes Berg 	 * @MCC_UPDATE_CMD: using &struct iwl_mcc_update_cmd
498d172a5efSJohannes Berg 	 */
499d172a5efSJohannes Berg 	MCC_UPDATE_CMD = 0xc8,
500d172a5efSJohannes Berg 
501d172a5efSJohannes Berg 	/**
502d172a5efSJohannes Berg 	 * @MCC_CHUB_UPDATE_CMD: using &struct iwl_mcc_chub_notif
503d172a5efSJohannes Berg 	 */
504d172a5efSJohannes Berg 	MCC_CHUB_UPDATE_CMD = 0xc9,
505d172a5efSJohannes Berg 
506d172a5efSJohannes Berg 	/**
507d172a5efSJohannes Berg 	 * @MARKER_CMD: trace marker command, uses &struct iwl_mvm_marker
508d172a5efSJohannes Berg 	 */
509d172a5efSJohannes Berg 	MARKER_CMD = 0xcb,
510d172a5efSJohannes Berg 
511d172a5efSJohannes Berg 	/**
512d172a5efSJohannes Berg 	 * @BT_PROFILE_NOTIFICATION: &struct iwl_bt_coex_profile_notif
513d172a5efSJohannes Berg 	 */
514d172a5efSJohannes Berg 	BT_PROFILE_NOTIFICATION = 0xce,
515d172a5efSJohannes Berg 
516d172a5efSJohannes Berg 	/**
517d172a5efSJohannes Berg 	 * @BT_CONFIG: &struct iwl_bt_coex_cmd
518d172a5efSJohannes Berg 	 */
519d172a5efSJohannes Berg 	BT_CONFIG = 0x9b,
520d172a5efSJohannes Berg 
521d172a5efSJohannes Berg 	/**
522d172a5efSJohannes Berg 	 * @BT_COEX_UPDATE_CORUN_LUT:
523d172a5efSJohannes Berg 	 * &struct iwl_bt_coex_corun_lut_update_cmd
524d172a5efSJohannes Berg 	 */
525d172a5efSJohannes Berg 	BT_COEX_UPDATE_CORUN_LUT = 0x5b,
526d172a5efSJohannes Berg 
527d172a5efSJohannes Berg 	/**
528d172a5efSJohannes Berg 	 * @BT_COEX_UPDATE_REDUCED_TXP:
529d172a5efSJohannes Berg 	 * &struct iwl_bt_coex_reduced_txp_update_cmd
530d172a5efSJohannes Berg 	 */
531d172a5efSJohannes Berg 	BT_COEX_UPDATE_REDUCED_TXP = 0x5c,
532d172a5efSJohannes Berg 
533d172a5efSJohannes Berg 	/**
534d172a5efSJohannes Berg 	 * @BT_COEX_CI: &struct iwl_bt_coex_ci_cmd
535d172a5efSJohannes Berg 	 */
536d172a5efSJohannes Berg 	BT_COEX_CI = 0x5d,
537d172a5efSJohannes Berg 
538d172a5efSJohannes Berg 	/**
539d172a5efSJohannes Berg 	 * @REPLY_SF_CFG_CMD: &struct iwl_sf_cfg_cmd
540d172a5efSJohannes Berg 	 */
541d172a5efSJohannes Berg 	REPLY_SF_CFG_CMD = 0xd1,
542d172a5efSJohannes Berg 	/**
543d172a5efSJohannes Berg 	 * @REPLY_BEACON_FILTERING_CMD: &struct iwl_beacon_filter_cmd
544d172a5efSJohannes Berg 	 */
545d172a5efSJohannes Berg 	REPLY_BEACON_FILTERING_CMD = 0xd2,
546d172a5efSJohannes Berg 
547d172a5efSJohannes Berg 	/**
548d172a5efSJohannes Berg 	 * @DTS_MEASUREMENT_NOTIFICATION:
549d172a5efSJohannes Berg 	 * &struct iwl_dts_measurement_notif_v1 or
550d172a5efSJohannes Berg 	 * &struct iwl_dts_measurement_notif_v2
551d172a5efSJohannes Berg 	 */
552d172a5efSJohannes Berg 	DTS_MEASUREMENT_NOTIFICATION = 0xdd,
553d172a5efSJohannes Berg 
554d172a5efSJohannes Berg 	/**
555d172a5efSJohannes Berg 	 * @LDBG_CONFIG_CMD: configure continuous trace recording
556d172a5efSJohannes Berg 	 */
557d172a5efSJohannes Berg 	LDBG_CONFIG_CMD = 0xf6,
558d172a5efSJohannes Berg 
559d172a5efSJohannes Berg 	/**
560d172a5efSJohannes Berg 	 * @DEBUG_LOG_MSG: Debugging log data from firmware
561d172a5efSJohannes Berg 	 */
562d172a5efSJohannes Berg 	DEBUG_LOG_MSG = 0xf7,
563d172a5efSJohannes Berg 
564d172a5efSJohannes Berg 	/**
565d172a5efSJohannes Berg 	 * @BCAST_FILTER_CMD: &struct iwl_bcast_filter_cmd
566d172a5efSJohannes Berg 	 */
567d172a5efSJohannes Berg 	BCAST_FILTER_CMD = 0xcf,
568d172a5efSJohannes Berg 
569d172a5efSJohannes Berg 	/**
570d172a5efSJohannes Berg 	 * @MCAST_FILTER_CMD: &struct iwl_mcast_filter_cmd
571d172a5efSJohannes Berg 	 */
572d172a5efSJohannes Berg 	MCAST_FILTER_CMD = 0xd0,
573d172a5efSJohannes Berg 
574d172a5efSJohannes Berg 	/**
575d172a5efSJohannes Berg 	 * @D3_CONFIG_CMD: &struct iwl_d3_manager_config
576d172a5efSJohannes Berg 	 */
577d172a5efSJohannes Berg 	D3_CONFIG_CMD = 0xd3,
578d172a5efSJohannes Berg 
579d172a5efSJohannes Berg 	/**
580d172a5efSJohannes Berg 	 * @PROT_OFFLOAD_CONFIG_CMD: Depending on firmware, uses one of
581d172a5efSJohannes Berg 	 * &struct iwl_proto_offload_cmd_v1, &struct iwl_proto_offload_cmd_v2,
582d172a5efSJohannes Berg 	 * &struct iwl_proto_offload_cmd_v3_small,
583d172a5efSJohannes Berg 	 * &struct iwl_proto_offload_cmd_v3_large
584d172a5efSJohannes Berg 	 */
585d172a5efSJohannes Berg 	PROT_OFFLOAD_CONFIG_CMD = 0xd4,
586d172a5efSJohannes Berg 
587d172a5efSJohannes Berg 	/**
588d172a5efSJohannes Berg 	 * @OFFLOADS_QUERY_CMD:
589d172a5efSJohannes Berg 	 * No data in command, response in &struct iwl_wowlan_status
590d172a5efSJohannes Berg 	 */
591d172a5efSJohannes Berg 	OFFLOADS_QUERY_CMD = 0xd5,
592d172a5efSJohannes Berg 
593d172a5efSJohannes Berg 	/**
594d172a5efSJohannes Berg 	 * @REMOTE_WAKE_CONFIG_CMD: &struct iwl_wowlan_remote_wake_config
595d172a5efSJohannes Berg 	 */
596d172a5efSJohannes Berg 	REMOTE_WAKE_CONFIG_CMD = 0xd6,
597d172a5efSJohannes Berg 
598d172a5efSJohannes Berg 	/**
599d172a5efSJohannes Berg 	 * @D0I3_END_CMD: End D0i3/D3 state, no command data
600d172a5efSJohannes Berg 	 */
601d172a5efSJohannes Berg 	D0I3_END_CMD = 0xed,
602d172a5efSJohannes Berg 
603d172a5efSJohannes Berg 	/**
604d172a5efSJohannes Berg 	 * @WOWLAN_PATTERNS: &struct iwl_wowlan_patterns_cmd
605d172a5efSJohannes Berg 	 */
606d172a5efSJohannes Berg 	WOWLAN_PATTERNS = 0xe0,
607d172a5efSJohannes Berg 
608d172a5efSJohannes Berg 	/**
609d172a5efSJohannes Berg 	 * @WOWLAN_CONFIGURATION: &struct iwl_wowlan_config_cmd
610d172a5efSJohannes Berg 	 */
611d172a5efSJohannes Berg 	WOWLAN_CONFIGURATION = 0xe1,
612d172a5efSJohannes Berg 
613d172a5efSJohannes Berg 	/**
614d172a5efSJohannes Berg 	 * @WOWLAN_TSC_RSC_PARAM: &struct iwl_wowlan_rsc_tsc_params_cmd
615d172a5efSJohannes Berg 	 */
616d172a5efSJohannes Berg 	WOWLAN_TSC_RSC_PARAM = 0xe2,
617d172a5efSJohannes Berg 
618d172a5efSJohannes Berg 	/**
619d172a5efSJohannes Berg 	 * @WOWLAN_TKIP_PARAM: &struct iwl_wowlan_tkip_params_cmd
620d172a5efSJohannes Berg 	 */
621d172a5efSJohannes Berg 	WOWLAN_TKIP_PARAM = 0xe3,
622d172a5efSJohannes Berg 
623d172a5efSJohannes Berg 	/**
624d172a5efSJohannes Berg 	 * @WOWLAN_KEK_KCK_MATERIAL: &struct iwl_wowlan_kek_kck_material_cmd
625d172a5efSJohannes Berg 	 */
626d172a5efSJohannes Berg 	WOWLAN_KEK_KCK_MATERIAL = 0xe4,
627d172a5efSJohannes Berg 
628d172a5efSJohannes Berg 	/**
629d172a5efSJohannes Berg 	 * @WOWLAN_GET_STATUSES: response in &struct iwl_wowlan_status
630d172a5efSJohannes Berg 	 */
631d172a5efSJohannes Berg 	WOWLAN_GET_STATUSES = 0xe5,
632d172a5efSJohannes Berg 
633d172a5efSJohannes Berg 	/**
634d172a5efSJohannes Berg 	 * @SCAN_OFFLOAD_PROFILES_QUERY_CMD:
635d172a5efSJohannes Berg 	 * No command data, response is &struct iwl_scan_offload_profiles_query
636d172a5efSJohannes Berg 	 */
637d172a5efSJohannes Berg 	SCAN_OFFLOAD_PROFILES_QUERY_CMD = 0x56,
638d172a5efSJohannes Berg };
639d172a5efSJohannes Berg 
640d172a5efSJohannes Berg /**
641d172a5efSJohannes Berg  * enum iwl_system_subcmd_ids - system group command IDs
642d172a5efSJohannes Berg  */
643d172a5efSJohannes Berg enum iwl_system_subcmd_ids {
644d172a5efSJohannes Berg 	/**
645d172a5efSJohannes Berg 	 * @SHARED_MEM_CFG_CMD:
646d172a5efSJohannes Berg 	 * response in &struct iwl_shared_mem_cfg or
647d172a5efSJohannes Berg 	 * &struct iwl_shared_mem_cfg_v2
648d172a5efSJohannes Berg 	 */
649d172a5efSJohannes Berg 	SHARED_MEM_CFG_CMD = 0x0,
650d172a5efSJohannes Berg 
651d172a5efSJohannes Berg 	/**
652d172a5efSJohannes Berg 	 * @INIT_EXTENDED_CFG_CMD: &struct iwl_init_extended_cfg_cmd
653d172a5efSJohannes Berg 	 */
654d172a5efSJohannes Berg 	INIT_EXTENDED_CFG_CMD = 0x03,
655d172a5efSJohannes Berg };
656d172a5efSJohannes Berg 
657d172a5efSJohannes Berg #endif /* __iwl_fw_api_commands_h__ */
658