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-2020 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 * @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
32 enum iwl_mvm_command_groups
{
38 DATA_PATH_GROUP
= 0x5,
41 PROT_OFFLOAD_GROUP
= 0xb,
42 REGULATORY_AND_NVM_GROUP
= 0xc,
47 * enum iwl_legacy_cmds - legacy group command IDs
49 enum iwl_legacy_cmds
{
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.
56 UCODE_ALIVE_NTFY
= 0x1,
59 * @REPLY_ERROR: Cause an error in the firmware, for testing purposes.
64 * @ECHO_CMD: Send data to the device to have it returned immediately.
69 * @INIT_COMPLETE_NOTIF: Notification that initialization is complete.
71 INIT_COMPLETE_NOTIF
= 0x4,
75 * Add/modify/remove a PHY context, using &struct iwl_phy_context_cmd.
77 PHY_CONTEXT_CMD
= 0x8,
80 * @DBG_CFG: Debug configuration command.
85 * @SCAN_ITERATION_COMPLETE_UMAC:
86 * Firmware indicates a scan iteration completed, using
87 * &struct iwl_umac_scan_iter_complete_notif.
89 SCAN_ITERATION_COMPLETE_UMAC
= 0xb5,
93 * uses &struct iwl_scan_config_v1 or &struct iwl_scan_config
98 * @SCAN_REQ_UMAC: uses &struct iwl_scan_req_umac
103 * @SCAN_ABORT_UMAC: uses &struct iwl_umac_scan_abort
105 SCAN_ABORT_UMAC
= 0xe,
108 * @SCAN_COMPLETE_UMAC: uses &struct iwl_umac_scan_complete
110 SCAN_COMPLETE_UMAC
= 0xf,
113 * @BA_WINDOW_STATUS_NOTIFICATION_ID:
114 * uses &struct iwl_ba_window_status_notif
116 BA_WINDOW_STATUS_NOTIFICATION_ID
= 0x13,
120 * &struct iwl_mvm_add_sta_key_cmd_v1 or
121 * &struct iwl_mvm_add_sta_key_cmd.
127 * &struct iwl_mvm_add_sta_cmd or &struct iwl_mvm_add_sta_cmd_v7.
132 * @REMOVE_STA: &struct iwl_mvm_rm_sta_cmd
137 * @FW_GET_ITEM_CMD: uses &struct iwl_fw_get_item_cmd
139 FW_GET_ITEM_CMD
= 0x1a,
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
150 * @TXPATH_FLUSH: &struct iwl_tx_path_flush_cmd
156 * &struct iwl_mvm_mgmt_mcast_key_cmd or
157 * &struct iwl_mvm_mgmt_mcast_key_cmd_v1
159 MGMT_MCAST_KEY
= 0x1f,
161 /* scheduler config */
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.
167 SCD_QUEUE_CFG
= 0x1d,
170 * @WEP_KEY: uses &struct iwl_mvm_wep_key_cmd
176 * retrieve shared memory configuration - response in
177 * &struct iwl_shared_mem_cfg
179 SHARED_MEM_CFG
= 0x25,
182 * @TDLS_CHANNEL_SWITCH_CMD: uses &struct iwl_tdls_channel_switch_cmd
184 TDLS_CHANNEL_SWITCH_CMD
= 0x27,
187 * @TDLS_CHANNEL_SWITCH_NOTIFICATION:
188 * uses &struct iwl_tdls_channel_switch_notif
190 TDLS_CHANNEL_SWITCH_NOTIFICATION
= 0xaa,
194 * &struct iwl_tdls_config_cmd, response in &struct iwl_tdls_config_res
196 TDLS_CONFIG_CMD
= 0xa7,
199 * @MAC_CONTEXT_CMD: &struct iwl_mac_ctx_cmd
201 MAC_CONTEXT_CMD
= 0x28,
205 * &struct iwl_time_event_cmd, response in &struct iwl_time_event_resp
207 TIME_EVENT_CMD
= 0x29, /* both CMD and response */
210 * @TIME_EVENT_NOTIFICATION: &struct iwl_time_event_notif
212 TIME_EVENT_NOTIFICATION
= 0x2a,
215 * @BINDING_CONTEXT_CMD:
216 * &struct iwl_binding_cmd or &struct iwl_binding_cmd_v1
218 BINDING_CONTEXT_CMD
= 0x2b,
221 * @TIME_QUOTA_CMD: &struct iwl_time_quota_cmd
223 TIME_QUOTA_CMD
= 0x2c,
226 * @NON_QOS_TX_COUNTER_CMD:
227 * command is &struct iwl_nonqos_seq_query_cmd
229 NON_QOS_TX_COUNTER_CMD
= 0x2d,
232 * @LEDS_CMD: command is &struct iwl_led_cmd
237 * @LQ_CMD: using &struct iwl_lq_cmd
242 * @FW_PAGING_BLOCK_CMD:
243 * &struct iwl_fw_paging_cmd
245 FW_PAGING_BLOCK_CMD
= 0x4f,
248 * @SCAN_OFFLOAD_REQUEST_CMD: uses &struct iwl_scan_req_lmac
250 SCAN_OFFLOAD_REQUEST_CMD
= 0x51,
253 * @SCAN_OFFLOAD_ABORT_CMD: abort the scan - no further contents
255 SCAN_OFFLOAD_ABORT_CMD
= 0x52,
258 * @HOT_SPOT_CMD: uses &struct iwl_hs20_roc_req
263 * @SCAN_OFFLOAD_COMPLETE:
264 * notification, &struct iwl_periodic_scan_complete
266 SCAN_OFFLOAD_COMPLETE
= 0x6D,
269 * @SCAN_OFFLOAD_UPDATE_PROFILES_CMD:
270 * update scan offload (scheduled scan) profiles/blocklist/etc.
272 SCAN_OFFLOAD_UPDATE_PROFILES_CMD
= 0x6E,
275 * @MATCH_FOUND_NOTIFICATION: scan match found
277 MATCH_FOUND_NOTIFICATION
= 0xd9,
280 * @SCAN_ITERATION_COMPLETE:
281 * uses &struct iwl_lmac_scan_complete_notif
283 SCAN_ITERATION_COMPLETE
= 0xe7,
287 * @PHY_CONFIGURATION_CMD: &struct iwl_phy_cfg_cmd
289 PHY_CONFIGURATION_CMD
= 0x6a,
292 * @CALIB_RES_NOTIF_PHY_DB: &struct iwl_calib_res_notif_phy_db
294 CALIB_RES_NOTIF_PHY_DB
= 0x6b,
297 * @PHY_DB_CMD: &struct iwl_phy_db_cmd
302 * @POWER_TABLE_CMD: &struct iwl_device_power_cmd
304 POWER_TABLE_CMD
= 0x77,
307 * @PSM_UAPSD_AP_MISBEHAVING_NOTIFICATION:
308 * &struct iwl_uapsd_misbehaving_ap_notif
310 PSM_UAPSD_AP_MISBEHAVING_NOTIFICATION
= 0x78,
313 * @LTR_CONFIG: &struct iwl_ltr_config_cmd
318 * @REPLY_THERMAL_MNG_BACKOFF:
319 * Thermal throttling command
321 REPLY_THERMAL_MNG_BACKOFF
= 0x7e,
325 * Set/Get DC2DC frequency tune
326 * Command is &struct iwl_dc2dc_config_cmd,
327 * response is &struct iwl_dc2dc_config_resp
329 DC2DC_CONFIG_CMD
= 0x83,
332 * @NVM_ACCESS_CMD: using &struct iwl_nvm_access_cmd
334 NVM_ACCESS_CMD
= 0x88,
337 * @BEACON_NOTIFICATION: &struct iwl_extended_beacon_notif
339 BEACON_NOTIFICATION
= 0x90,
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.
347 BEACON_TEMPLATE_CMD
= 0x91,
349 * @TX_ANT_CONFIGURATION_CMD: &struct iwl_tx_ant_cfg_cmd
351 TX_ANT_CONFIGURATION_CMD
= 0x98,
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
361 STATISTICS_CMD
= 0x9c,
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
370 STATISTICS_NOTIFICATION
= 0x9d,
373 * @EOSP_NOTIFICATION:
374 * Notify that a service period ended,
375 * &struct iwl_mvm_eosp_notification
377 EOSP_NOTIFICATION
= 0x9e,
380 * @REDUCE_TX_POWER_CMD:
381 * &struct iwl_dev_tx_power_cmd
383 REDUCE_TX_POWER_CMD
= 0x9f,
386 * @CARD_STATE_NOTIFICATION:
387 * Card state (RF/CT kill) notification,
388 * uses &struct iwl_card_state_notif
390 CARD_STATE_NOTIFICATION
= 0xa1,
393 * @MISSED_BEACONS_NOTIFICATION: &struct iwl_missed_beacons_notif
395 MISSED_BEACONS_NOTIFICATION
= 0xa2,
398 * @MAC_PM_POWER_TABLE: using &struct iwl_mac_power_cmd
400 MAC_PM_POWER_TABLE
= 0xa9,
403 * @MFUART_LOAD_NOTIFICATION: &struct iwl_mfuart_load_notif
405 MFUART_LOAD_NOTIFICATION
= 0xb1,
408 * @RSS_CONFIG_CMD: &struct iwl_rss_config_cmd
410 RSS_CONFIG_CMD
= 0xb3,
413 * @REPLY_RX_PHY_CMD: &struct iwl_rx_phy_info
415 REPLY_RX_PHY_CMD
= 0xc0,
418 * @REPLY_RX_MPDU_CMD:
419 * &struct iwl_rx_mpdu_res_start or &struct iwl_rx_mpdu_desc
421 REPLY_RX_MPDU_CMD
= 0xc1,
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.
428 BAR_FRAME_RELEASE
= 0xc2,
432 * Frame release (reorder helper) notification, uses
433 * &struct iwl_frame_release
435 FRAME_RELEASE
= 0xc3,
439 * BlockAck notification, uses &struct iwl_mvm_compressed_ba_notif
440 * or &struct iwl_mvm_ba_notif depending on the HW
444 /* Location Aware Regulatory */
446 * @MCC_UPDATE_CMD: using &struct iwl_mcc_update_cmd
448 MCC_UPDATE_CMD
= 0xc8,
451 * @MCC_CHUB_UPDATE_CMD: using &struct iwl_mcc_chub_notif
453 MCC_CHUB_UPDATE_CMD
= 0xc9,
456 * @MARKER_CMD: trace marker command, uses &struct iwl_mvm_marker
457 * with &struct iwl_mvm_marker_rsp
462 * @BT_PROFILE_NOTIFICATION: &struct iwl_bt_coex_profile_notif
464 BT_PROFILE_NOTIFICATION
= 0xce,
467 * @BT_CONFIG: &struct iwl_bt_coex_cmd
472 * @BT_COEX_UPDATE_REDUCED_TXP:
473 * &struct iwl_bt_coex_reduced_txp_update_cmd
475 BT_COEX_UPDATE_REDUCED_TXP
= 0x5c,
478 * @BT_COEX_CI: &struct iwl_bt_coex_ci_cmd
483 * @REPLY_SF_CFG_CMD: &struct iwl_sf_cfg_cmd
485 REPLY_SF_CFG_CMD
= 0xd1,
487 * @REPLY_BEACON_FILTERING_CMD: &struct iwl_beacon_filter_cmd
489 REPLY_BEACON_FILTERING_CMD
= 0xd2,
492 * @DTS_MEASUREMENT_NOTIFICATION:
493 * &struct iwl_dts_measurement_notif_v1 or
494 * &struct iwl_dts_measurement_notif_v2
496 DTS_MEASUREMENT_NOTIFICATION
= 0xdd,
499 * @LDBG_CONFIG_CMD: configure continuous trace recording
501 LDBG_CONFIG_CMD
= 0xf6,
504 * @DEBUG_LOG_MSG: Debugging log data from firmware
506 DEBUG_LOG_MSG
= 0xf7,
509 * @BCAST_FILTER_CMD: &struct iwl_bcast_filter_cmd
511 BCAST_FILTER_CMD
= 0xcf,
514 * @MCAST_FILTER_CMD: &struct iwl_mcast_filter_cmd
516 MCAST_FILTER_CMD
= 0xd0,
519 * @D3_CONFIG_CMD: &struct iwl_d3_manager_config
521 D3_CONFIG_CMD
= 0xd3,
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
529 PROT_OFFLOAD_CONFIG_CMD
= 0xd4,
532 * @OFFLOADS_QUERY_CMD:
533 * No data in command, response in &struct iwl_wowlan_status
535 OFFLOADS_QUERY_CMD
= 0xd5,
538 * @REMOTE_WAKE_CONFIG_CMD: &struct iwl_wowlan_remote_wake_config
540 REMOTE_WAKE_CONFIG_CMD
= 0xd6,
543 * @D0I3_END_CMD: End D0i3/D3 state, no command data
548 * @WOWLAN_PATTERNS: &struct iwl_wowlan_patterns_cmd
550 WOWLAN_PATTERNS
= 0xe0,
553 * @WOWLAN_CONFIGURATION: &struct iwl_wowlan_config_cmd
555 WOWLAN_CONFIGURATION
= 0xe1,
558 * @WOWLAN_TSC_RSC_PARAM: &struct iwl_wowlan_rsc_tsc_params_cmd
560 WOWLAN_TSC_RSC_PARAM
= 0xe2,
563 * @WOWLAN_TKIP_PARAM: &struct iwl_wowlan_tkip_params_cmd
565 WOWLAN_TKIP_PARAM
= 0xe3,
568 * @WOWLAN_KEK_KCK_MATERIAL: &struct iwl_wowlan_kek_kck_material_cmd
570 WOWLAN_KEK_KCK_MATERIAL
= 0xe4,
573 * @WOWLAN_GET_STATUSES: response in &struct iwl_wowlan_status
575 WOWLAN_GET_STATUSES
= 0xe5,
578 * @SCAN_OFFLOAD_PROFILES_QUERY_CMD:
579 * No command data, response is &struct iwl_scan_offload_profiles_query
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 #endif /* __iwl_fw_api_commands_h__ */