1 /******************************************************************************
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.
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
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.
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.
21 * The full GNU General Public License is included in this distribution
22 * in the file called COPYING.
24 * Contact Information:
25 * Intel Linux Wireless <linuxwifi@intel.com>
26 * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
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.
35 * Redistribution and use in source and binary forms, with or without
36 * modification, are permitted provided that the following conditions
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
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.
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.
61 *****************************************************************************/
63 #ifndef __iwl_fw_api_commands_h__
64 #define __iwl_fw_api_commands_h__
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
88 enum iwl_mvm_command_groups
{
94 DATA_PATH_GROUP
= 0x5,
97 PROT_OFFLOAD_GROUP
= 0xb,
98 REGULATORY_AND_NVM_GROUP
= 0xc,
103 * enum iwl_legacy_cmds - legacy group command IDs
105 enum iwl_legacy_cmds
{
108 * Alive data from the firmware, as described in
109 * &struct mvm_alive_resp_v3 or &struct mvm_alive_resp.
114 * @REPLY_ERROR: Cause an error in the firmware, for testing purposes.
119 * @ECHO_CMD: Send data to the device to have it returned immediately.
124 * @INIT_COMPLETE_NOTIF: Notification that initialization is complete.
126 INIT_COMPLETE_NOTIF
= 0x4,
130 * Add/modify/remove a PHY context, using &struct iwl_phy_context_cmd.
132 PHY_CONTEXT_CMD
= 0x8,
135 * @DBG_CFG: Debug configuration command.
140 * @SCAN_ITERATION_COMPLETE_UMAC:
141 * Firmware indicates a scan iteration completed, using
142 * &struct iwl_umac_scan_iter_complete_notif.
144 SCAN_ITERATION_COMPLETE_UMAC
= 0xb5,
148 * uses &struct iwl_scan_config_v1 or &struct iwl_scan_config
153 * @SCAN_REQ_UMAC: uses &struct iwl_scan_req_umac
158 * @SCAN_ABORT_UMAC: uses &struct iwl_umac_scan_abort
160 SCAN_ABORT_UMAC
= 0xe,
163 * @SCAN_COMPLETE_UMAC: uses &struct iwl_umac_scan_complete
165 SCAN_COMPLETE_UMAC
= 0xf,
168 * @BA_WINDOW_STATUS_NOTIFICATION_ID:
169 * uses &struct iwl_ba_window_status_notif
171 BA_WINDOW_STATUS_NOTIFICATION_ID
= 0x13,
175 * &struct iwl_mvm_add_sta_key_cmd_v1 or
176 * &struct iwl_mvm_add_sta_key_cmd.
182 * &struct iwl_mvm_add_sta_cmd or &struct iwl_mvm_add_sta_cmd_v7.
187 * @REMOVE_STA: &struct iwl_mvm_rm_sta_cmd
192 * @FW_GET_ITEM_CMD: uses &struct iwl_fw_get_item_cmd
194 FW_GET_ITEM_CMD
= 0x1a,
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
205 * @TXPATH_FLUSH: &struct iwl_tx_path_flush_cmd
211 * &struct iwl_mvm_mgmt_mcast_key_cmd or
212 * &struct iwl_mvm_mgmt_mcast_key_cmd_v1
214 MGMT_MCAST_KEY
= 0x1f,
216 /* scheduler config */
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.
222 SCD_QUEUE_CFG
= 0x1d,
225 * @WEP_KEY: uses &struct iwl_mvm_wep_key_cmd
231 * retrieve shared memory configuration - response in
232 * &struct iwl_shared_mem_cfg
234 SHARED_MEM_CFG
= 0x25,
237 * @TDLS_CHANNEL_SWITCH_CMD: uses &struct iwl_tdls_channel_switch_cmd
239 TDLS_CHANNEL_SWITCH_CMD
= 0x27,
242 * @TDLS_CHANNEL_SWITCH_NOTIFICATION:
243 * uses &struct iwl_tdls_channel_switch_notif
245 TDLS_CHANNEL_SWITCH_NOTIFICATION
= 0xaa,
249 * &struct iwl_tdls_config_cmd, response in &struct iwl_tdls_config_res
251 TDLS_CONFIG_CMD
= 0xa7,
254 * @MAC_CONTEXT_CMD: &struct iwl_mac_ctx_cmd
256 MAC_CONTEXT_CMD
= 0x28,
260 * &struct iwl_time_event_cmd, response in &struct iwl_time_event_resp
262 TIME_EVENT_CMD
= 0x29, /* both CMD and response */
265 * @TIME_EVENT_NOTIFICATION: &struct iwl_time_event_notif
267 TIME_EVENT_NOTIFICATION
= 0x2a,
270 * @BINDING_CONTEXT_CMD:
271 * &struct iwl_binding_cmd or &struct iwl_binding_cmd_v1
273 BINDING_CONTEXT_CMD
= 0x2b,
276 * @TIME_QUOTA_CMD: &struct iwl_time_quota_cmd
278 TIME_QUOTA_CMD
= 0x2c,
281 * @NON_QOS_TX_COUNTER_CMD:
282 * command is &struct iwl_nonqos_seq_query_cmd
284 NON_QOS_TX_COUNTER_CMD
= 0x2d,
287 * @LEDS_CMD: command is &struct iwl_led_cmd
292 * @LQ_CMD: using &struct iwl_lq_cmd
297 * @FW_PAGING_BLOCK_CMD:
298 * &struct iwl_fw_paging_cmd
300 FW_PAGING_BLOCK_CMD
= 0x4f,
303 * @SCAN_OFFLOAD_REQUEST_CMD: uses &struct iwl_scan_req_lmac
305 SCAN_OFFLOAD_REQUEST_CMD
= 0x51,
308 * @SCAN_OFFLOAD_ABORT_CMD: abort the scan - no further contents
310 SCAN_OFFLOAD_ABORT_CMD
= 0x52,
313 * @HOT_SPOT_CMD: uses &struct iwl_hs20_roc_req
318 * @SCAN_OFFLOAD_COMPLETE:
319 * notification, &struct iwl_periodic_scan_complete
321 SCAN_OFFLOAD_COMPLETE
= 0x6D,
324 * @SCAN_OFFLOAD_UPDATE_PROFILES_CMD:
325 * update scan offload (scheduled scan) profiles/blacklist/etc.
327 SCAN_OFFLOAD_UPDATE_PROFILES_CMD
= 0x6E,
330 * @MATCH_FOUND_NOTIFICATION: scan match found
332 MATCH_FOUND_NOTIFICATION
= 0xd9,
335 * @SCAN_ITERATION_COMPLETE:
336 * uses &struct iwl_lmac_scan_complete_notif
338 SCAN_ITERATION_COMPLETE
= 0xe7,
342 * @PHY_CONFIGURATION_CMD: &struct iwl_phy_cfg_cmd
344 PHY_CONFIGURATION_CMD
= 0x6a,
347 * @CALIB_RES_NOTIF_PHY_DB: &struct iwl_calib_res_notif_phy_db
349 CALIB_RES_NOTIF_PHY_DB
= 0x6b,
352 * @PHY_DB_CMD: &struct iwl_phy_db_cmd
357 * @POWER_TABLE_CMD: &struct iwl_device_power_cmd
359 POWER_TABLE_CMD
= 0x77,
362 * @PSM_UAPSD_AP_MISBEHAVING_NOTIFICATION:
363 * &struct iwl_uapsd_misbehaving_ap_notif
365 PSM_UAPSD_AP_MISBEHAVING_NOTIFICATION
= 0x78,
368 * @LTR_CONFIG: &struct iwl_ltr_config_cmd
373 * @REPLY_THERMAL_MNG_BACKOFF:
374 * Thermal throttling command
376 REPLY_THERMAL_MNG_BACKOFF
= 0x7e,
380 * Set/Get DC2DC frequency tune
381 * Command is &struct iwl_dc2dc_config_cmd,
382 * response is &struct iwl_dc2dc_config_resp
384 DC2DC_CONFIG_CMD
= 0x83,
387 * @NVM_ACCESS_CMD: using &struct iwl_nvm_access_cmd
389 NVM_ACCESS_CMD
= 0x88,
392 * @BEACON_NOTIFICATION: &struct iwl_extended_beacon_notif
394 BEACON_NOTIFICATION
= 0x90,
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.
402 BEACON_TEMPLATE_CMD
= 0x91,
404 * @TX_ANT_CONFIGURATION_CMD: &struct iwl_tx_ant_cfg_cmd
406 TX_ANT_CONFIGURATION_CMD
= 0x98,
410 * one of &struct iwl_statistics_cmd,
411 * &struct iwl_notif_statistics_v11,
412 * &struct iwl_notif_statistics_v10,
413 * &struct iwl_notif_statistics
415 STATISTICS_CMD
= 0x9c,
418 * @STATISTICS_NOTIFICATION:
419 * one of &struct iwl_notif_statistics_v10,
420 * &struct iwl_notif_statistics_v11,
421 * &struct iwl_notif_statistics
423 STATISTICS_NOTIFICATION
= 0x9d,
426 * @EOSP_NOTIFICATION:
427 * Notify that a service period ended,
428 * &struct iwl_mvm_eosp_notification
430 EOSP_NOTIFICATION
= 0x9e,
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
437 REDUCE_TX_POWER_CMD
= 0x9f,
440 * @CARD_STATE_NOTIFICATION:
441 * Card state (RF/CT kill) notification,
442 * uses &struct iwl_card_state_notif
444 CARD_STATE_NOTIFICATION
= 0xa1,
447 * @MISSED_BEACONS_NOTIFICATION: &struct iwl_missed_beacons_notif
449 MISSED_BEACONS_NOTIFICATION
= 0xa2,
452 * @MAC_PM_POWER_TABLE: using &struct iwl_mac_power_cmd
454 MAC_PM_POWER_TABLE
= 0xa9,
457 * @MFUART_LOAD_NOTIFICATION: &struct iwl_mfuart_load_notif
459 MFUART_LOAD_NOTIFICATION
= 0xb1,
462 * @RSS_CONFIG_CMD: &struct iwl_rss_config_cmd
464 RSS_CONFIG_CMD
= 0xb3,
467 * @REPLY_RX_PHY_CMD: &struct iwl_rx_phy_info
469 REPLY_RX_PHY_CMD
= 0xc0,
472 * @REPLY_RX_MPDU_CMD:
473 * &struct iwl_rx_mpdu_res_start or &struct iwl_rx_mpdu_desc
475 REPLY_RX_MPDU_CMD
= 0xc1,
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.
482 BAR_FRAME_RELEASE
= 0xc2,
486 * Frame release (reorder helper) notification, uses
487 * &struct iwl_frame_release
489 FRAME_RELEASE
= 0xc3,
493 * BlockAck notification, uses &struct iwl_mvm_compressed_ba_notif
494 * or &struct iwl_mvm_ba_notif depending on the HW
498 /* Location Aware Regulatory */
500 * @MCC_UPDATE_CMD: using &struct iwl_mcc_update_cmd
502 MCC_UPDATE_CMD
= 0xc8,
505 * @MCC_CHUB_UPDATE_CMD: using &struct iwl_mcc_chub_notif
507 MCC_CHUB_UPDATE_CMD
= 0xc9,
510 * @MARKER_CMD: trace marker command, uses &struct iwl_mvm_marker
511 * with &struct iwl_mvm_marker_rsp
516 * @BT_PROFILE_NOTIFICATION: &struct iwl_bt_coex_profile_notif
518 BT_PROFILE_NOTIFICATION
= 0xce,
521 * @BT_CONFIG: &struct iwl_bt_coex_cmd
526 * @BT_COEX_UPDATE_REDUCED_TXP:
527 * &struct iwl_bt_coex_reduced_txp_update_cmd
529 BT_COEX_UPDATE_REDUCED_TXP
= 0x5c,
532 * @BT_COEX_CI: &struct iwl_bt_coex_ci_cmd
537 * @REPLY_SF_CFG_CMD: &struct iwl_sf_cfg_cmd
539 REPLY_SF_CFG_CMD
= 0xd1,
541 * @REPLY_BEACON_FILTERING_CMD: &struct iwl_beacon_filter_cmd
543 REPLY_BEACON_FILTERING_CMD
= 0xd2,
546 * @DTS_MEASUREMENT_NOTIFICATION:
547 * &struct iwl_dts_measurement_notif_v1 or
548 * &struct iwl_dts_measurement_notif_v2
550 DTS_MEASUREMENT_NOTIFICATION
= 0xdd,
553 * @LDBG_CONFIG_CMD: configure continuous trace recording
555 LDBG_CONFIG_CMD
= 0xf6,
558 * @DEBUG_LOG_MSG: Debugging log data from firmware
560 DEBUG_LOG_MSG
= 0xf7,
563 * @BCAST_FILTER_CMD: &struct iwl_bcast_filter_cmd
565 BCAST_FILTER_CMD
= 0xcf,
568 * @MCAST_FILTER_CMD: &struct iwl_mcast_filter_cmd
570 MCAST_FILTER_CMD
= 0xd0,
573 * @D3_CONFIG_CMD: &struct iwl_d3_manager_config
575 D3_CONFIG_CMD
= 0xd3,
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
583 PROT_OFFLOAD_CONFIG_CMD
= 0xd4,
586 * @OFFLOADS_QUERY_CMD:
587 * No data in command, response in &struct iwl_wowlan_status
589 OFFLOADS_QUERY_CMD
= 0xd5,
592 * @REMOTE_WAKE_CONFIG_CMD: &struct iwl_wowlan_remote_wake_config
594 REMOTE_WAKE_CONFIG_CMD
= 0xd6,
597 * @D0I3_END_CMD: End D0i3/D3 state, no command data
602 * @WOWLAN_PATTERNS: &struct iwl_wowlan_patterns_cmd
604 WOWLAN_PATTERNS
= 0xe0,
607 * @WOWLAN_CONFIGURATION: &struct iwl_wowlan_config_cmd
609 WOWLAN_CONFIGURATION
= 0xe1,
612 * @WOWLAN_TSC_RSC_PARAM: &struct iwl_wowlan_rsc_tsc_params_cmd
614 WOWLAN_TSC_RSC_PARAM
= 0xe2,
617 * @WOWLAN_TKIP_PARAM: &struct iwl_wowlan_tkip_params_cmd
619 WOWLAN_TKIP_PARAM
= 0xe3,
622 * @WOWLAN_KEK_KCK_MATERIAL: &struct iwl_wowlan_kek_kck_material_cmd
624 WOWLAN_KEK_KCK_MATERIAL
= 0xe4,
627 * @WOWLAN_GET_STATUSES: response in &struct iwl_wowlan_status
629 WOWLAN_GET_STATUSES
= 0xe5,
632 * @SCAN_OFFLOAD_PROFILES_QUERY_CMD:
633 * No command data, response is &struct iwl_scan_offload_profiles_query
635 SCAN_OFFLOAD_PROFILES_QUERY_CMD
= 0x56,
639 * enum iwl_system_subcmd_ids - system group command IDs
641 enum iwl_system_subcmd_ids
{
643 * @SHARED_MEM_CFG_CMD:
644 * response in &struct iwl_shared_mem_cfg or
645 * &struct iwl_shared_mem_cfg_v2
647 SHARED_MEM_CFG_CMD
= 0x0,
650 * @SOC_CONFIGURATION_CMD: &struct iwl_soc_configuration_cmd
652 SOC_CONFIGURATION_CMD
= 0x01,
655 * @INIT_EXTENDED_CFG_CMD: &struct iwl_init_extended_cfg_cmd
657 INIT_EXTENDED_CFG_CMD
= 0x03,
660 * @FW_ERROR_RECOVERY_CMD: &struct iwl_fw_error_recovery_cmd
662 FW_ERROR_RECOVERY_CMD
= 0x7,
665 #endif /* __iwl_fw_api_commands_h__ */