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