1 /* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
3 * Copyright (C) 2013-2015 Intel Mobile Communications GmbH
4 * Copyright (C) 2016-2017 Intel Deutschland GmbH
5 * Copyright (C) 2018-2022, 2024 Intel Corporation
7 #ifndef __iwl_fw_api_commands_h__
8 #define __iwl_fw_api_commands_h__
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 * @BT_COEX_GROUP: bt coex group, uses command IDs from
29 * &enum iwl_bt_coex_subcmd_ids
30 * @PROT_OFFLOAD_GROUP: protocol offload group, uses command IDs from
31 * &enum iwl_prot_offload_subcmd_ids
32 * @REGULATORY_AND_NVM_GROUP: regulatory/NVM group, uses command IDs from
33 * &enum iwl_regulatory_and_nvm_subcmd_ids
34 * @DEBUG_GROUP: Debug group, uses command IDs from &enum iwl_debug_cmds
35 * @STATISTICS_GROUP: Statistics group, uses command IDs from
36 * &enum iwl_statistics_subcmd_ids
38 enum iwl_mvm_command_groups {
44 DATA_PATH_GROUP = 0x5,
49 PROT_OFFLOAD_GROUP = 0xb,
50 REGULATORY_AND_NVM_GROUP = 0xc,
52 STATISTICS_GROUP = 0x10,
56 * enum iwl_legacy_cmds - legacy group command IDs
58 enum iwl_legacy_cmds {
61 * Alive data from the firmware, as described in
62 * &struct iwl_alive_ntf_v3 or &struct iwl_alive_ntf_v4 or
63 * &struct iwl_alive_ntf_v5 or &struct iwl_alive_ntf_v6.
65 UCODE_ALIVE_NTFY = 0x1,
68 * @REPLY_ERROR: Cause an error in the firmware, for testing purposes.
73 * @ECHO_CMD: Send data to the device to have it returned immediately.
78 * @INIT_COMPLETE_NOTIF: Notification that initialization is complete.
80 INIT_COMPLETE_NOTIF = 0x4,
84 * Add/modify/remove a PHY context, using &struct iwl_phy_context_cmd
85 * or &struct iwl_phy_context_cmd_v1.
87 PHY_CONTEXT_CMD = 0x8,
90 * @DBG_CFG: Debug configuration command.
95 * @SCAN_ITERATION_COMPLETE_UMAC:
96 * Firmware indicates a scan iteration completed, using
97 * &struct iwl_umac_scan_iter_complete_notif.
99 SCAN_ITERATION_COMPLETE_UMAC = 0xb5,
103 * uses &struct iwl_scan_config_v1, &struct iwl_scan_config_v2
104 * or &struct iwl_scan_config
109 * @SCAN_REQ_UMAC: uses &struct iwl_scan_req_umac
114 * @SCAN_ABORT_UMAC: uses &struct iwl_umac_scan_abort
116 SCAN_ABORT_UMAC = 0xe,
119 * @SCAN_COMPLETE_UMAC: uses &struct iwl_umac_scan_complete
121 SCAN_COMPLETE_UMAC = 0xf,
124 * @BA_WINDOW_STATUS_NOTIFICATION_ID:
125 * uses &struct iwl_ba_window_status_notif
127 BA_WINDOW_STATUS_NOTIFICATION_ID = 0x13,
131 * &struct iwl_mvm_add_sta_key_cmd_v1 or
132 * &struct iwl_mvm_add_sta_key_cmd.
138 * &struct iwl_mvm_add_sta_cmd or &struct iwl_mvm_add_sta_cmd_v7.
143 * @REMOVE_STA: &struct iwl_mvm_rm_sta_cmd
148 * @TX_CMD: uses &struct iwl_tx_cmd or &struct iwl_tx_cmd_gen2 or
149 * &struct iwl_tx_cmd_gen3,
150 * response in &struct iwl_tx_resp or
151 * &struct iwl_tx_resp_v3
156 * @TXPATH_FLUSH: &struct iwl_tx_path_flush_cmd
157 * response in &struct iwl_tx_path_flush_cmd_rsp
163 * &struct iwl_mvm_mgmt_mcast_key_cmd or
164 * &struct iwl_mvm_mgmt_mcast_key_cmd_v1
166 MGMT_MCAST_KEY = 0x1f,
168 /* scheduler config */
170 * @SCD_QUEUE_CFG: &struct iwl_scd_txq_cfg_cmd for older hardware,
171 * &struct iwl_tx_queue_cfg_cmd with &struct iwl_tx_queue_cfg_rsp
172 * for newer (22000) hardware.
174 SCD_QUEUE_CFG = 0x1d,
177 * @WEP_KEY: uses &struct iwl_mvm_wep_key_cmd
183 * retrieve shared memory configuration - response in
184 * &struct iwl_shared_mem_cfg
186 SHARED_MEM_CFG = 0x25,
189 * @TDLS_CHANNEL_SWITCH_CMD: uses &struct iwl_tdls_channel_switch_cmd
191 TDLS_CHANNEL_SWITCH_CMD = 0x27,
194 * @TDLS_CHANNEL_SWITCH_NOTIFICATION:
195 * uses &struct iwl_tdls_channel_switch_notif
197 TDLS_CHANNEL_SWITCH_NOTIFICATION = 0xaa,
201 * &struct iwl_tdls_config_cmd, response in &struct iwl_tdls_config_res
203 TDLS_CONFIG_CMD = 0xa7,
206 * @MAC_CONTEXT_CMD: &struct iwl_mac_ctx_cmd
208 MAC_CONTEXT_CMD = 0x28,
212 * &struct iwl_time_event_cmd, response in &struct iwl_time_event_resp
214 TIME_EVENT_CMD = 0x29, /* both CMD and response */
217 * @TIME_EVENT_NOTIFICATION: &struct iwl_time_event_notif
219 TIME_EVENT_NOTIFICATION = 0x2a,
222 * @BINDING_CONTEXT_CMD:
223 * &struct iwl_binding_cmd or &struct iwl_binding_cmd_v1
225 BINDING_CONTEXT_CMD = 0x2b,
228 * @TIME_QUOTA_CMD: &struct iwl_time_quota_cmd
230 TIME_QUOTA_CMD = 0x2c,
233 * @NON_QOS_TX_COUNTER_CMD:
234 * command is &struct iwl_nonqos_seq_query_cmd
236 NON_QOS_TX_COUNTER_CMD = 0x2d,
239 * @LEDS_CMD: command is &struct iwl_led_cmd
244 * @LQ_CMD: using &struct iwl_lq_cmd
249 * @FW_PAGING_BLOCK_CMD:
250 * &struct iwl_fw_paging_cmd
252 FW_PAGING_BLOCK_CMD = 0x4f,
255 * @SCAN_OFFLOAD_REQUEST_CMD: uses &struct iwl_scan_req_lmac
257 SCAN_OFFLOAD_REQUEST_CMD = 0x51,
260 * @SCAN_OFFLOAD_ABORT_CMD: abort the scan - no further contents
262 SCAN_OFFLOAD_ABORT_CMD = 0x52,
265 * @HOT_SPOT_CMD: uses &struct iwl_hs20_roc_req
270 * @WNM_80211V_TIMING_MEASUREMENT_NOTIFICATION: Time Sync
271 * measurement notification for TM/FTM. Sent on receipt of
272 * respective WNM action frame for TM protocol or public action
273 * frame for FTM protocol from peer device along with additional
274 * meta data specified in &struct iwl_time_msmt_notify
276 WNM_80211V_TIMING_MEASUREMENT_NOTIFICATION = 0x67,
279 * @WNM_80211V_TIMING_MEASUREMENT_CONFIRM_NOTIFICATION: Time Sync
280 * measurement confirmation notification for TM/FTM. Sent on
281 * receipt of Ack from peer for previously Tx'ed TM/FTM
282 * action frame along with additional meta data specified in
283 * &struct iwl_time_msmt_cfm_notify
285 WNM_80211V_TIMING_MEASUREMENT_CONFIRM_NOTIFICATION = 0x68,
288 * @SCAN_OFFLOAD_COMPLETE:
289 * notification, &struct iwl_periodic_scan_complete
291 SCAN_OFFLOAD_COMPLETE = 0x6D,
294 * @SCAN_OFFLOAD_UPDATE_PROFILES_CMD:
295 * update scan offload (scheduled scan) profiles/blocklist/etc.
297 SCAN_OFFLOAD_UPDATE_PROFILES_CMD = 0x6E,
300 * @MATCH_FOUND_NOTIFICATION: scan match found
302 MATCH_FOUND_NOTIFICATION = 0xd9,
305 * @SCAN_ITERATION_COMPLETE:
306 * uses &struct iwl_lmac_scan_complete_notif
308 SCAN_ITERATION_COMPLETE = 0xe7,
312 * @PHY_CONFIGURATION_CMD: &struct iwl_phy_cfg_cmd_v1 or &struct iwl_phy_cfg_cmd_v3
314 PHY_CONFIGURATION_CMD = 0x6a,
317 * @CALIB_RES_NOTIF_PHY_DB: &struct iwl_calib_res_notif_phy_db
319 CALIB_RES_NOTIF_PHY_DB = 0x6b,
322 * @PHY_DB_CMD: &struct iwl_phy_db_cmd
327 * @POWER_TABLE_CMD: &struct iwl_device_power_cmd
329 POWER_TABLE_CMD = 0x77,
332 * @PSM_UAPSD_AP_MISBEHAVING_NOTIFICATION:
333 * &struct iwl_uapsd_misbehaving_ap_notif
335 PSM_UAPSD_AP_MISBEHAVING_NOTIFICATION = 0x78,
338 * @LTR_CONFIG: &struct iwl_ltr_config_cmd
343 * @REPLY_THERMAL_MNG_BACKOFF:
344 * Thermal throttling command
346 REPLY_THERMAL_MNG_BACKOFF = 0x7e,
349 * @NVM_ACCESS_CMD: using &struct iwl_nvm_access_cmd
351 NVM_ACCESS_CMD = 0x88,
354 * @BEACON_NOTIFICATION: &struct iwl_extended_beacon_notif
356 BEACON_NOTIFICATION = 0x90,
359 * @BEACON_TEMPLATE_CMD:
360 * Uses one of &struct iwl_mac_beacon_cmd_v6,
361 * &struct iwl_mac_beacon_cmd_v7 or &struct iwl_mac_beacon_cmd
362 * depending on the device version.
364 BEACON_TEMPLATE_CMD = 0x91,
366 * @TX_ANT_CONFIGURATION_CMD: &struct iwl_tx_ant_cfg_cmd
368 TX_ANT_CONFIGURATION_CMD = 0x98,
372 * one of &struct iwl_statistics_cmd,
373 * &struct iwl_notif_statistics_v11,
374 * &struct iwl_notif_statistics_v10,
375 * &struct iwl_notif_statistics,
376 * &struct iwl_statistics_operational_ntfy_ver_14
378 STATISTICS_CMD = 0x9c,
381 * @STATISTICS_NOTIFICATION:
382 * one of &struct iwl_notif_statistics_v10,
383 * &struct iwl_notif_statistics_v11,
384 * &struct iwl_notif_statistic,
385 * &struct iwl_statistics_operational_ntfy_ver_14
386 * &struct iwl_statistics_operational_ntfy
388 STATISTICS_NOTIFICATION = 0x9d,
391 * @EOSP_NOTIFICATION:
392 * Notify that a service period ended,
393 * &struct iwl_mvm_eosp_notification
395 EOSP_NOTIFICATION = 0x9e,
398 * @REDUCE_TX_POWER_CMD:
399 * &struct iwl_dev_tx_power_cmd
401 REDUCE_TX_POWER_CMD = 0x9f,
404 * @MISSED_BEACONS_NOTIFICATION: &struct iwl_missed_beacons_notif_v4
406 MISSED_BEACONS_NOTIFICATION = 0xa2,
409 * @MAC_PM_POWER_TABLE: using &struct iwl_mac_power_cmd
411 MAC_PM_POWER_TABLE = 0xa9,
414 * @MFUART_LOAD_NOTIFICATION: &struct iwl_mfuart_load_notif
416 MFUART_LOAD_NOTIFICATION = 0xb1,
419 * @RSS_CONFIG_CMD: &struct iwl_rss_config_cmd
421 RSS_CONFIG_CMD = 0xb3,
424 * @REPLY_RX_PHY_CMD: &struct iwl_rx_phy_info
426 REPLY_RX_PHY_CMD = 0xc0,
429 * @REPLY_RX_MPDU_CMD:
430 * &struct iwl_rx_mpdu_res_start or &struct iwl_rx_mpdu_desc
432 REPLY_RX_MPDU_CMD = 0xc1,
435 * @BAR_FRAME_RELEASE: Frame release from BAR notification, used for
436 * multi-TID BAR (previously, the BAR frame itself was reported
437 * instead). Uses &struct iwl_bar_frame_release.
439 BAR_FRAME_RELEASE = 0xc2,
443 * Frame release (reorder helper) notification, uses
444 * &struct iwl_frame_release
446 FRAME_RELEASE = 0xc3,
450 * BlockAck notification, uses &struct iwl_compressed_ba_notif
451 * or &struct iwl_mvm_ba_notif depending on the HW
455 /* Location Aware Regulatory */
457 * @MCC_UPDATE_CMD: using &struct iwl_mcc_update_cmd
459 MCC_UPDATE_CMD = 0xc8,
462 * @MCC_CHUB_UPDATE_CMD: using &struct iwl_mcc_chub_notif
464 MCC_CHUB_UPDATE_CMD = 0xc9,
467 * @MARKER_CMD: trace marker command, uses &struct iwl_mvm_marker
468 * with &struct iwl_mvm_marker_rsp
473 * @BT_PROFILE_NOTIFICATION: &struct iwl_bt_coex_prof_old_notif
475 BT_PROFILE_NOTIFICATION = 0xce,
478 * @BT_CONFIG: &struct iwl_bt_coex_cmd
483 * @BT_COEX_UPDATE_REDUCED_TXP:
484 * &struct iwl_bt_coex_reduced_txp_update_cmd
486 BT_COEX_UPDATE_REDUCED_TXP = 0x5c,
489 * @BT_COEX_CI: &struct iwl_bt_coex_ci_cmd
494 * @REPLY_SF_CFG_CMD: &struct iwl_sf_cfg_cmd
496 REPLY_SF_CFG_CMD = 0xd1,
498 * @REPLY_BEACON_FILTERING_CMD: &struct iwl_beacon_filter_cmd
500 REPLY_BEACON_FILTERING_CMD = 0xd2,
503 * @DTS_MEASUREMENT_NOTIFICATION:
504 * &struct iwl_dts_measurement_notif_v1 or
505 * &struct iwl_dts_measurement_notif_v2
507 DTS_MEASUREMENT_NOTIFICATION = 0xdd,
510 * @LDBG_CONFIG_CMD: configure continuous trace recording
512 LDBG_CONFIG_CMD = 0xf6,
515 * @DEBUG_LOG_MSG: Debugging log data from firmware
517 DEBUG_LOG_MSG = 0xf7,
520 * @MCAST_FILTER_CMD: &struct iwl_mcast_filter_cmd
522 MCAST_FILTER_CMD = 0xd0,
525 * @D3_CONFIG_CMD: &struct iwl_d3_manager_config
527 D3_CONFIG_CMD = 0xd3,
530 * @PROT_OFFLOAD_CONFIG_CMD: Depending on firmware, uses one of
531 * &struct iwl_proto_offload_cmd_v1, &struct iwl_proto_offload_cmd_v2,
532 * &struct iwl_proto_offload_cmd_v3_small,
533 * &struct iwl_proto_offload_cmd_v3_large
535 PROT_OFFLOAD_CONFIG_CMD = 0xd4,
538 * @D0I3_END_CMD: End D0i3/D3 state, no command data
543 * @WOWLAN_PATTERNS: &struct iwl_wowlan_patterns_cmd
545 WOWLAN_PATTERNS = 0xe0,
548 * @WOWLAN_CONFIGURATION: &struct iwl_wowlan_config_cmd
550 WOWLAN_CONFIGURATION = 0xe1,
553 * @WOWLAN_TSC_RSC_PARAM: &struct iwl_wowlan_rsc_tsc_params_cmd_v4,
554 * &struct iwl_wowlan_rsc_tsc_params_cmd
556 WOWLAN_TSC_RSC_PARAM = 0xe2,
559 * @WOWLAN_TKIP_PARAM: &struct iwl_wowlan_tkip_params_cmd
561 WOWLAN_TKIP_PARAM = 0xe3,
564 * @WOWLAN_KEK_KCK_MATERIAL: &struct iwl_wowlan_kek_kck_material_cmd_v2,
565 * &struct iwl_wowlan_kek_kck_material_cmd_v3 or
566 * &struct iwl_wowlan_kek_kck_material_cmd_v4
568 WOWLAN_KEK_KCK_MATERIAL = 0xe4,
571 * @WOWLAN_GET_STATUSES: response in &struct iwl_wowlan_status_v6,
572 * &struct iwl_wowlan_status_v7, &struct iwl_wowlan_status_v9 or
573 * &struct iwl_wowlan_status_v12
575 WOWLAN_GET_STATUSES = 0xe5,
578 * @SCAN_OFFLOAD_PROFILES_QUERY_CMD: No command data, response is
579 * &struct iwl_scan_offload_profiles_query_v1
581 SCAN_OFFLOAD_PROFILES_QUERY_CMD = 0x56,
585 * enum iwl_system_subcmd_ids - system group command IDs
587 enum iwl_system_subcmd_ids {
589 * @SHARED_MEM_CFG_CMD:
590 * response in &struct iwl_shared_mem_cfg or
591 * &struct iwl_shared_mem_cfg_v2
593 SHARED_MEM_CFG_CMD = 0x0,
596 * @SOC_CONFIGURATION_CMD: &struct iwl_soc_configuration_cmd
598 SOC_CONFIGURATION_CMD = 0x01,
601 * @INIT_EXTENDED_CFG_CMD: &struct iwl_init_extended_cfg_cmd
603 INIT_EXTENDED_CFG_CMD = 0x03,
606 * @FW_ERROR_RECOVERY_CMD: &struct iwl_fw_error_recovery_cmd
608 FW_ERROR_RECOVERY_CMD = 0x7,
611 * @RFI_CONFIG_CMD: &struct iwl_rfi_config_cmd
613 RFI_CONFIG_CMD = 0xb,
616 * @RFI_GET_FREQ_TABLE_CMD: &struct iwl_rfi_config_cmd
618 RFI_GET_FREQ_TABLE_CMD = 0xc,
621 * @SYSTEM_FEATURES_CONTROL_CMD: &struct iwl_system_features_control_cmd
623 SYSTEM_FEATURES_CONTROL_CMD = 0xd,
626 * @SYSTEM_STATISTICS_CMD: &struct iwl_system_statistics_cmd
628 SYSTEM_STATISTICS_CMD = 0xf,
631 * @SYSTEM_STATISTICS_END_NOTIF: &struct iwl_system_statistics_end_notif
633 SYSTEM_STATISTICS_END_NOTIF = 0xfd,
636 * @RFI_DEACTIVATE_NOTIF: &struct iwl_rfi_deactivate_notif
638 RFI_DEACTIVATE_NOTIF = 0xff,
642 * enum iwl_statistics_subcmd_ids - Statistics group command IDs
644 enum iwl_statistics_subcmd_ids {
646 * @STATISTICS_OPER_NOTIF: Notification about operational
647 * statistics &struct iwl_system_statistics_notif_oper
649 STATISTICS_OPER_NOTIF = 0x0,
652 * @STATISTICS_OPER_PART1_NOTIF: Notification about operational part1
653 * statistics &struct iwl_system_statistics_part1_notif_oper
655 STATISTICS_OPER_PART1_NOTIF = 0x1,
658 #endif /* __iwl_fw_api_commands_h__ */