/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ /* * Copyright (C) 2013-2015 Intel Mobile Communications GmbH * Copyright (C) 2016-2017 Intel Deutschland GmbH * Copyright (C) 2018-2020 Intel Corporation */ #ifndef __iwl_fw_api_commands_h__ #define __iwl_fw_api_commands_h__ /** * enum iwl_mvm_command_groups - command groups for the firmware * @LEGACY_GROUP: legacy group, uses command IDs from &enum iwl_legacy_cmds * @LONG_GROUP: legacy group with long header, also uses command IDs * from &enum iwl_legacy_cmds * @SYSTEM_GROUP: system group, uses command IDs from * &enum iwl_system_subcmd_ids * @MAC_CONF_GROUP: MAC configuration group, uses command IDs from * &enum iwl_mac_conf_subcmd_ids * @PHY_OPS_GROUP: PHY operations group, uses command IDs from * &enum iwl_phy_ops_subcmd_ids * @DATA_PATH_GROUP: data path group, uses command IDs from * &enum iwl_data_path_subcmd_ids * @NAN_GROUP: NAN group, uses command IDs from &enum iwl_nan_subcmd_ids * @LOCATION_GROUP: location group, uses command IDs from * &enum iwl_location_subcmd_ids * @PROT_OFFLOAD_GROUP: protocol offload group, uses command IDs from * &enum iwl_prot_offload_subcmd_ids * @REGULATORY_AND_NVM_GROUP: regulatory/NVM group, uses command IDs from * &enum iwl_regulatory_and_nvm_subcmd_ids * @DEBUG_GROUP: Debug group, uses command IDs from &enum iwl_debug_cmds */ enum iwl_mvm_command_groups { LEGACY_GROUP = 0x0, LONG_GROUP = 0x1, SYSTEM_GROUP = 0x2, MAC_CONF_GROUP = 0x3, PHY_OPS_GROUP = 0x4, DATA_PATH_GROUP = 0x5, NAN_GROUP = 0x7, LOCATION_GROUP = 0x8, PROT_OFFLOAD_GROUP = 0xb, REGULATORY_AND_NVM_GROUP = 0xc, DEBUG_GROUP = 0xf, }; /** * enum iwl_legacy_cmds - legacy group command IDs */ enum iwl_legacy_cmds { /** * @UCODE_ALIVE_NTFY: * Alive data from the firmware, as described in * &struct iwl_alive_ntf_v3 or &struct iwl_alive_ntf_v4 or * &struct iwl_alive_ntf_v5 or &struct iwl_alive_ntf_v6. */ UCODE_ALIVE_NTFY = 0x1, /** * @REPLY_ERROR: Cause an error in the firmware, for testing purposes. */ REPLY_ERROR = 0x2, /** * @ECHO_CMD: Send data to the device to have it returned immediately. */ ECHO_CMD = 0x3, /** * @INIT_COMPLETE_NOTIF: Notification that initialization is complete. */ INIT_COMPLETE_NOTIF = 0x4, /** * @PHY_CONTEXT_CMD: * Add/modify/remove a PHY context, using &struct iwl_phy_context_cmd * or &struct iwl_phy_context_cmd_v1. */ PHY_CONTEXT_CMD = 0x8, /** * @DBG_CFG: Debug configuration command. */ DBG_CFG = 0x9, /** * @SCAN_ITERATION_COMPLETE_UMAC: * Firmware indicates a scan iteration completed, using * &struct iwl_umac_scan_iter_complete_notif. */ SCAN_ITERATION_COMPLETE_UMAC = 0xb5, /** * @SCAN_CFG_CMD: * uses &struct iwl_scan_config_v1, &struct iwl_scan_config_v2 * or &struct iwl_scan_config */ SCAN_CFG_CMD = 0xc, /** * @SCAN_REQ_UMAC: uses &struct iwl_scan_req_umac */ SCAN_REQ_UMAC = 0xd, /** * @SCAN_ABORT_UMAC: uses &struct iwl_umac_scan_abort */ SCAN_ABORT_UMAC = 0xe, /** * @SCAN_COMPLETE_UMAC: uses &struct iwl_umac_scan_complete */ SCAN_COMPLETE_UMAC = 0xf, /** * @BA_WINDOW_STATUS_NOTIFICATION_ID: * uses &struct iwl_ba_window_status_notif */ BA_WINDOW_STATUS_NOTIFICATION_ID = 0x13, /** * @ADD_STA_KEY: * &struct iwl_mvm_add_sta_key_cmd_v1 or * &struct iwl_mvm_add_sta_key_cmd. */ ADD_STA_KEY = 0x17, /** * @ADD_STA: * &struct iwl_mvm_add_sta_cmd or &struct iwl_mvm_add_sta_cmd_v7. */ ADD_STA = 0x18, /** * @REMOVE_STA: &struct iwl_mvm_rm_sta_cmd */ REMOVE_STA = 0x19, /** * @FW_GET_ITEM_CMD: uses &struct iwl_fw_get_item_cmd */ FW_GET_ITEM_CMD = 0x1a, /** * @TX_CMD: uses &struct iwl_tx_cmd or &struct iwl_tx_cmd_gen2 or * &struct iwl_tx_cmd_gen3, * response in &struct iwl_mvm_tx_resp or * &struct iwl_mvm_tx_resp_v3 */ TX_CMD = 0x1c, /** * @TXPATH_FLUSH: &struct iwl_tx_path_flush_cmd */ TXPATH_FLUSH = 0x1e, /** * @MGMT_MCAST_KEY: * &struct iwl_mvm_mgmt_mcast_key_cmd or * &struct iwl_mvm_mgmt_mcast_key_cmd_v1 */ MGMT_MCAST_KEY = 0x1f, /* scheduler config */ /** * @SCD_QUEUE_CFG: &struct iwl_scd_txq_cfg_cmd for older hardware, * &struct iwl_tx_queue_cfg_cmd with &struct iwl_tx_queue_cfg_rsp * for newer (22000) hardware. */ SCD_QUEUE_CFG = 0x1d, /** * @WEP_KEY: uses &struct iwl_mvm_wep_key_cmd */ WEP_KEY = 0x20, /** * @SHARED_MEM_CFG: * retrieve shared memory configuration - response in * &struct iwl_shared_mem_cfg */ SHARED_MEM_CFG = 0x25, /** * @TDLS_CHANNEL_SWITCH_CMD: uses &struct iwl_tdls_channel_switch_cmd */ TDLS_CHANNEL_SWITCH_CMD = 0x27, /** * @TDLS_CHANNEL_SWITCH_NOTIFICATION: * uses &struct iwl_tdls_channel_switch_notif */ TDLS_CHANNEL_SWITCH_NOTIFICATION = 0xaa, /** * @TDLS_CONFIG_CMD: * &struct iwl_tdls_config_cmd, response in &struct iwl_tdls_config_res */ TDLS_CONFIG_CMD = 0xa7, /** * @MAC_CONTEXT_CMD: &struct iwl_mac_ctx_cmd */ MAC_CONTEXT_CMD = 0x28, /** * @TIME_EVENT_CMD: * &struct iwl_time_event_cmd, response in &struct iwl_time_event_resp */ TIME_EVENT_CMD = 0x29, /* both CMD and response */ /** * @TIME_EVENT_NOTIFICATION: &struct iwl_time_event_notif */ TIME_EVENT_NOTIFICATION = 0x2a, /** * @BINDING_CONTEXT_CMD: * &struct iwl_binding_cmd or &struct iwl_binding_cmd_v1 */ BINDING_CONTEXT_CMD = 0x2b, /** * @TIME_QUOTA_CMD: &struct iwl_time_quota_cmd */ TIME_QUOTA_CMD = 0x2c, /** * @NON_QOS_TX_COUNTER_CMD: * command is &struct iwl_nonqos_seq_query_cmd */ NON_QOS_TX_COUNTER_CMD = 0x2d, /** * @LEDS_CMD: command is &struct iwl_led_cmd */ LEDS_CMD = 0x48, /** * @LQ_CMD: using &struct iwl_lq_cmd */ LQ_CMD = 0x4e, /** * @FW_PAGING_BLOCK_CMD: * &struct iwl_fw_paging_cmd */ FW_PAGING_BLOCK_CMD = 0x4f, /** * @SCAN_OFFLOAD_REQUEST_CMD: uses &struct iwl_scan_req_lmac */ SCAN_OFFLOAD_REQUEST_CMD = 0x51, /** * @SCAN_OFFLOAD_ABORT_CMD: abort the scan - no further contents */ SCAN_OFFLOAD_ABORT_CMD = 0x52, /** * @HOT_SPOT_CMD: uses &struct iwl_hs20_roc_req */ HOT_SPOT_CMD = 0x53, /** * @SCAN_OFFLOAD_COMPLETE: * notification, &struct iwl_periodic_scan_complete */ SCAN_OFFLOAD_COMPLETE = 0x6D, /** * @SCAN_OFFLOAD_UPDATE_PROFILES_CMD: * update scan offload (scheduled scan) profiles/blocklist/etc. */ SCAN_OFFLOAD_UPDATE_PROFILES_CMD = 0x6E, /** * @MATCH_FOUND_NOTIFICATION: scan match found */ MATCH_FOUND_NOTIFICATION = 0xd9, /** * @SCAN_ITERATION_COMPLETE: * uses &struct iwl_lmac_scan_complete_notif */ SCAN_ITERATION_COMPLETE = 0xe7, /* Phy */ /** * @PHY_CONFIGURATION_CMD: &struct iwl_phy_cfg_cmd_v1 or &struct iwl_phy_cfg_cmd_v3 */ PHY_CONFIGURATION_CMD = 0x6a, /** * @CALIB_RES_NOTIF_PHY_DB: &struct iwl_calib_res_notif_phy_db */ CALIB_RES_NOTIF_PHY_DB = 0x6b, /** * @PHY_DB_CMD: &struct iwl_phy_db_cmd */ PHY_DB_CMD = 0x6c, /** * @POWER_TABLE_CMD: &struct iwl_device_power_cmd */ POWER_TABLE_CMD = 0x77, /** * @PSM_UAPSD_AP_MISBEHAVING_NOTIFICATION: * &struct iwl_uapsd_misbehaving_ap_notif */ PSM_UAPSD_AP_MISBEHAVING_NOTIFICATION = 0x78, /** * @LTR_CONFIG: &struct iwl_ltr_config_cmd */ LTR_CONFIG = 0xee, /** * @REPLY_THERMAL_MNG_BACKOFF: * Thermal throttling command */ REPLY_THERMAL_MNG_BACKOFF = 0x7e, /** * @DC2DC_CONFIG_CMD: * Set/Get DC2DC frequency tune * Command is &struct iwl_dc2dc_config_cmd, * response is &struct iwl_dc2dc_config_resp */ DC2DC_CONFIG_CMD = 0x83, /** * @NVM_ACCESS_CMD: using &struct iwl_nvm_access_cmd */ NVM_ACCESS_CMD = 0x88, /** * @BEACON_NOTIFICATION: &struct iwl_extended_beacon_notif */ BEACON_NOTIFICATION = 0x90, /** * @BEACON_TEMPLATE_CMD: * Uses one of &struct iwl_mac_beacon_cmd_v6, * &struct iwl_mac_beacon_cmd_v7 or &struct iwl_mac_beacon_cmd * depending on the device version. */ BEACON_TEMPLATE_CMD = 0x91, /** * @TX_ANT_CONFIGURATION_CMD: &struct iwl_tx_ant_cfg_cmd */ TX_ANT_CONFIGURATION_CMD = 0x98, /** * @STATISTICS_CMD: * one of &struct iwl_statistics_cmd, * &struct iwl_notif_statistics_v11, * &struct iwl_notif_statistics_v10, * &struct iwl_notif_statistics, * &struct iwl_statistics_operational_ntfy_ver_14 */ STATISTICS_CMD = 0x9c, /** * @STATISTICS_NOTIFICATION: * one of &struct iwl_notif_statistics_v10, * &struct iwl_notif_statistics_v11, * &struct iwl_notif_statistic, * &struct iwl_statistics_operational_ntfy_ver_14 * &struct iwl_statistics_operational_ntfy */ STATISTICS_NOTIFICATION = 0x9d, /** * @EOSP_NOTIFICATION: * Notify that a service period ended, * &struct iwl_mvm_eosp_notification */ EOSP_NOTIFICATION = 0x9e, /** * @REDUCE_TX_POWER_CMD: * &struct iwl_dev_tx_power_cmd */ REDUCE_TX_POWER_CMD = 0x9f, /** * @MISSED_BEACONS_NOTIFICATION: &struct iwl_missed_beacons_notif */ MISSED_BEACONS_NOTIFICATION = 0xa2, /** * @MAC_PM_POWER_TABLE: using &struct iwl_mac_power_cmd */ MAC_PM_POWER_TABLE = 0xa9, /** * @MFUART_LOAD_NOTIFICATION: &struct iwl_mfuart_load_notif */ MFUART_LOAD_NOTIFICATION = 0xb1, /** * @RSS_CONFIG_CMD: &struct iwl_rss_config_cmd */ RSS_CONFIG_CMD = 0xb3, /** * @REPLY_RX_PHY_CMD: &struct iwl_rx_phy_info */ REPLY_RX_PHY_CMD = 0xc0, /** * @REPLY_RX_MPDU_CMD: * &struct iwl_rx_mpdu_res_start or &struct iwl_rx_mpdu_desc */ REPLY_RX_MPDU_CMD = 0xc1, /** * @BAR_FRAME_RELEASE: Frame release from BAR notification, used for * multi-TID BAR (previously, the BAR frame itself was reported * instead). Uses &struct iwl_bar_frame_release. */ BAR_FRAME_RELEASE = 0xc2, /** * @FRAME_RELEASE: * Frame release (reorder helper) notification, uses * &struct iwl_frame_release */ FRAME_RELEASE = 0xc3, /** * @BA_NOTIF: * BlockAck notification, uses &struct iwl_mvm_compressed_ba_notif * or &struct iwl_mvm_ba_notif depending on the HW */ BA_NOTIF = 0xc5, /* Location Aware Regulatory */ /** * @MCC_UPDATE_CMD: using &struct iwl_mcc_update_cmd */ MCC_UPDATE_CMD = 0xc8, /** * @MCC_CHUB_UPDATE_CMD: using &struct iwl_mcc_chub_notif */ MCC_CHUB_UPDATE_CMD = 0xc9, /** * @MARKER_CMD: trace marker command, uses &struct iwl_mvm_marker * with &struct iwl_mvm_marker_rsp */ MARKER_CMD = 0xcb, /** * @BT_PROFILE_NOTIFICATION: &struct iwl_bt_coex_profile_notif */ BT_PROFILE_NOTIFICATION = 0xce, /** * @BT_CONFIG: &struct iwl_bt_coex_cmd */ BT_CONFIG = 0x9b, /** * @BT_COEX_UPDATE_REDUCED_TXP: * &struct iwl_bt_coex_reduced_txp_update_cmd */ BT_COEX_UPDATE_REDUCED_TXP = 0x5c, /** * @BT_COEX_CI: &struct iwl_bt_coex_ci_cmd */ BT_COEX_CI = 0x5d, /** * @REPLY_SF_CFG_CMD: &struct iwl_sf_cfg_cmd */ REPLY_SF_CFG_CMD = 0xd1, /** * @REPLY_BEACON_FILTERING_CMD: &struct iwl_beacon_filter_cmd */ REPLY_BEACON_FILTERING_CMD = 0xd2, /** * @DTS_MEASUREMENT_NOTIFICATION: * &struct iwl_dts_measurement_notif_v1 or * &struct iwl_dts_measurement_notif_v2 */ DTS_MEASUREMENT_NOTIFICATION = 0xdd, /** * @LDBG_CONFIG_CMD: configure continuous trace recording */ LDBG_CONFIG_CMD = 0xf6, /** * @DEBUG_LOG_MSG: Debugging log data from firmware */ DEBUG_LOG_MSG = 0xf7, /** * @BCAST_FILTER_CMD: &struct iwl_bcast_filter_cmd */ BCAST_FILTER_CMD = 0xcf, /** * @MCAST_FILTER_CMD: &struct iwl_mcast_filter_cmd */ MCAST_FILTER_CMD = 0xd0, /** * @D3_CONFIG_CMD: &struct iwl_d3_manager_config */ D3_CONFIG_CMD = 0xd3, /** * @PROT_OFFLOAD_CONFIG_CMD: Depending on firmware, uses one of * &struct iwl_proto_offload_cmd_v1, &struct iwl_proto_offload_cmd_v2, * &struct iwl_proto_offload_cmd_v3_small, * &struct iwl_proto_offload_cmd_v3_large */ PROT_OFFLOAD_CONFIG_CMD = 0xd4, /** * @OFFLOADS_QUERY_CMD: * No data in command, response in &struct iwl_wowlan_status */ OFFLOADS_QUERY_CMD = 0xd5, /** * @D0I3_END_CMD: End D0i3/D3 state, no command data */ D0I3_END_CMD = 0xed, /** * @WOWLAN_PATTERNS: &struct iwl_wowlan_patterns_cmd */ WOWLAN_PATTERNS = 0xe0, /** * @WOWLAN_CONFIGURATION: &struct iwl_wowlan_config_cmd */ WOWLAN_CONFIGURATION = 0xe1, /** * @WOWLAN_TSC_RSC_PARAM: &struct iwl_wowlan_rsc_tsc_params_cmd_v4, * &struct iwl_wowlan_rsc_tsc_params_cmd */ WOWLAN_TSC_RSC_PARAM = 0xe2, /** * @WOWLAN_TKIP_PARAM: &struct iwl_wowlan_tkip_params_cmd */ WOWLAN_TKIP_PARAM = 0xe3, /** * @WOWLAN_KEK_KCK_MATERIAL: &struct iwl_wowlan_kek_kck_material_cmd */ WOWLAN_KEK_KCK_MATERIAL = 0xe4, /** * @WOWLAN_GET_STATUSES: response in &struct iwl_wowlan_status */ WOWLAN_GET_STATUSES = 0xe5, /** * @SCAN_OFFLOAD_PROFILES_QUERY_CMD: * No command data, response is &struct iwl_scan_offload_profiles_query */ SCAN_OFFLOAD_PROFILES_QUERY_CMD = 0x56, }; /** * enum iwl_system_subcmd_ids - system group command IDs */ enum iwl_system_subcmd_ids { /** * @SHARED_MEM_CFG_CMD: * response in &struct iwl_shared_mem_cfg or * &struct iwl_shared_mem_cfg_v2 */ SHARED_MEM_CFG_CMD = 0x0, /** * @SOC_CONFIGURATION_CMD: &struct iwl_soc_configuration_cmd */ SOC_CONFIGURATION_CMD = 0x01, /** * @INIT_EXTENDED_CFG_CMD: &struct iwl_init_extended_cfg_cmd */ INIT_EXTENDED_CFG_CMD = 0x03, /** * @FW_ERROR_RECOVERY_CMD: &struct iwl_fw_error_recovery_cmd */ FW_ERROR_RECOVERY_CMD = 0x7, /** * @RFI_CONFIG_CMD: &struct iwl_rfi_config_cmd */ RFI_CONFIG_CMD = 0xb, /** * @RFI_GET_FREQ_TABLE_CMD: &struct iwl_rfi_config_cmd */ RFI_GET_FREQ_TABLE_CMD = 0xc, /** * @SYSTEM_FEATURES_CONTROL_CMD: &struct iwl_system_features_control_cmd */ SYSTEM_FEATURES_CONTROL_CMD = 0xd, }; #endif /* __iwl_fw_api_commands_h__ */