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