659 lines · c
1/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */2/*3 * Copyright (C) 2013-2015 Intel Mobile Communications GmbH4 * Copyright (C) 2016-2017 Intel Deutschland GmbH5 * Copyright (C) 2018-2022, 2024 Intel Corporation6 */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 firmware12 * @LEGACY_GROUP: legacy group, uses command IDs from &enum iwl_legacy_cmds13 * @LONG_GROUP: legacy group with long header, also uses command IDs14 * from &enum iwl_legacy_cmds15 * @SYSTEM_GROUP: system group, uses command IDs from16 * &enum iwl_system_subcmd_ids17 * @MAC_CONF_GROUP: MAC configuration group, uses command IDs from18 * &enum iwl_mac_conf_subcmd_ids19 * @PHY_OPS_GROUP: PHY operations group, uses command IDs from20 * &enum iwl_phy_ops_subcmd_ids21 * @DATA_PATH_GROUP: data path group, uses command IDs from22 * &enum iwl_data_path_subcmd_ids23 * @SCAN_GROUP: scan group, uses command IDs from24 * &enum iwl_scan_subcmd_ids25 * @NAN_GROUP: NAN group, uses command IDs from &enum iwl_nan_subcmd_ids26 * @LOCATION_GROUP: location group, uses command IDs from27 * &enum iwl_location_subcmd_ids28 * @BT_COEX_GROUP: bt coex group, uses command IDs from29 * &enum iwl_bt_coex_subcmd_ids30 * @PROT_OFFLOAD_GROUP: protocol offload group, uses command IDs from31 * &enum iwl_prot_offload_subcmd_ids32 * @REGULATORY_AND_NVM_GROUP: regulatory/NVM group, uses command IDs from33 * &enum iwl_regulatory_and_nvm_subcmd_ids34 * @DEBUG_GROUP: Debug group, uses command IDs from &enum iwl_debug_cmds35 * @STATISTICS_GROUP: Statistics group, uses command IDs from36 * &enum iwl_statistics_subcmd_ids37 */38enum iwl_mvm_command_groups {39 LEGACY_GROUP = 0x0,40 LONG_GROUP = 0x1,41 SYSTEM_GROUP = 0x2,42 MAC_CONF_GROUP = 0x3,43 PHY_OPS_GROUP = 0x4,44 DATA_PATH_GROUP = 0x5,45 SCAN_GROUP = 0x6,46 NAN_GROUP = 0x7,47 LOCATION_GROUP = 0x8,48 BT_COEX_GROUP = 0x9,49 PROT_OFFLOAD_GROUP = 0xb,50 REGULATORY_AND_NVM_GROUP = 0xc,51 DEBUG_GROUP = 0xf,52 STATISTICS_GROUP = 0x10,53};54 55/**56 * enum iwl_legacy_cmds - legacy group command IDs57 */58enum iwl_legacy_cmds {59 /**60 * @UCODE_ALIVE_NTFY:61 * Alive data from the firmware, as described in62 * &struct iwl_alive_ntf_v3 or &struct iwl_alive_ntf_v4 or63 * &struct iwl_alive_ntf_v5 or &struct iwl_alive_ntf_v6.64 */65 UCODE_ALIVE_NTFY = 0x1,66 67 /**68 * @REPLY_ERROR: Cause an error in the firmware, for testing purposes.69 */70 REPLY_ERROR = 0x2,71 72 /**73 * @ECHO_CMD: Send data to the device to have it returned immediately.74 */75 ECHO_CMD = 0x3,76 77 /**78 * @INIT_COMPLETE_NOTIF: Notification that initialization is complete.79 */80 INIT_COMPLETE_NOTIF = 0x4,81 82 /**83 * @PHY_CONTEXT_CMD:84 * Add/modify/remove a PHY context, using &struct iwl_phy_context_cmd85 * or &struct iwl_phy_context_cmd_v1.86 */87 PHY_CONTEXT_CMD = 0x8,88 89 /**90 * @DBG_CFG: Debug configuration command.91 */92 DBG_CFG = 0x9,93 94 /**95 * @SCAN_ITERATION_COMPLETE_UMAC:96 * Firmware indicates a scan iteration completed, using97 * &struct iwl_umac_scan_iter_complete_notif.98 */99 SCAN_ITERATION_COMPLETE_UMAC = 0xb5,100 101 /**102 * @SCAN_CFG_CMD:103 * uses &struct iwl_scan_config_v1, &struct iwl_scan_config_v2104 * or &struct iwl_scan_config105 */106 SCAN_CFG_CMD = 0xc,107 108 /**109 * @SCAN_REQ_UMAC: uses &struct iwl_scan_req_umac110 */111 SCAN_REQ_UMAC = 0xd,112 113 /**114 * @SCAN_ABORT_UMAC: uses &struct iwl_umac_scan_abort115 */116 SCAN_ABORT_UMAC = 0xe,117 118 /**119 * @SCAN_COMPLETE_UMAC: uses &struct iwl_umac_scan_complete120 */121 SCAN_COMPLETE_UMAC = 0xf,122 123 /**124 * @BA_WINDOW_STATUS_NOTIFICATION_ID:125 * uses &struct iwl_ba_window_status_notif126 */127 BA_WINDOW_STATUS_NOTIFICATION_ID = 0x13,128 129 /**130 * @ADD_STA_KEY:131 * &struct iwl_mvm_add_sta_key_cmd_v1 or132 * &struct iwl_mvm_add_sta_key_cmd.133 */134 ADD_STA_KEY = 0x17,135 136 /**137 * @ADD_STA:138 * &struct iwl_mvm_add_sta_cmd or &struct iwl_mvm_add_sta_cmd_v7.139 */140 ADD_STA = 0x18,141 142 /**143 * @REMOVE_STA: &struct iwl_mvm_rm_sta_cmd144 */145 REMOVE_STA = 0x19,146 147 /**148 * @TX_CMD: uses &struct iwl_tx_cmd or &struct iwl_tx_cmd_gen2 or149 * &struct iwl_tx_cmd_gen3,150 * response in &struct iwl_tx_resp or151 * &struct iwl_tx_resp_v3152 */153 TX_CMD = 0x1c,154 155 /**156 * @TXPATH_FLUSH: &struct iwl_tx_path_flush_cmd157 * response in &struct iwl_tx_path_flush_cmd_rsp158 */159 TXPATH_FLUSH = 0x1e,160 161 /**162 * @MGMT_MCAST_KEY:163 * &struct iwl_mvm_mgmt_mcast_key_cmd or164 * &struct iwl_mvm_mgmt_mcast_key_cmd_v1165 */166 MGMT_MCAST_KEY = 0x1f,167 168 /* scheduler config */169 /**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_rsp172 * for newer (22000) hardware.173 */174 SCD_QUEUE_CFG = 0x1d,175 176 /**177 * @WEP_KEY: uses &struct iwl_mvm_wep_key_cmd178 */179 WEP_KEY = 0x20,180 181 /**182 * @SHARED_MEM_CFG:183 * retrieve shared memory configuration - response in184 * &struct iwl_shared_mem_cfg185 */186 SHARED_MEM_CFG = 0x25,187 188 /**189 * @TDLS_CHANNEL_SWITCH_CMD: uses &struct iwl_tdls_channel_switch_cmd190 */191 TDLS_CHANNEL_SWITCH_CMD = 0x27,192 193 /**194 * @TDLS_CHANNEL_SWITCH_NOTIFICATION:195 * uses &struct iwl_tdls_channel_switch_notif196 */197 TDLS_CHANNEL_SWITCH_NOTIFICATION = 0xaa,198 199 /**200 * @TDLS_CONFIG_CMD:201 * &struct iwl_tdls_config_cmd, response in &struct iwl_tdls_config_res202 */203 TDLS_CONFIG_CMD = 0xa7,204 205 /**206 * @MAC_CONTEXT_CMD: &struct iwl_mac_ctx_cmd207 */208 MAC_CONTEXT_CMD = 0x28,209 210 /**211 * @TIME_EVENT_CMD:212 * &struct iwl_time_event_cmd, response in &struct iwl_time_event_resp213 */214 TIME_EVENT_CMD = 0x29, /* both CMD and response */215 216 /**217 * @TIME_EVENT_NOTIFICATION: &struct iwl_time_event_notif218 */219 TIME_EVENT_NOTIFICATION = 0x2a,220 221 /**222 * @BINDING_CONTEXT_CMD:223 * &struct iwl_binding_cmd or &struct iwl_binding_cmd_v1224 */225 BINDING_CONTEXT_CMD = 0x2b,226 227 /**228 * @TIME_QUOTA_CMD: &struct iwl_time_quota_cmd229 */230 TIME_QUOTA_CMD = 0x2c,231 232 /**233 * @NON_QOS_TX_COUNTER_CMD:234 * command is &struct iwl_nonqos_seq_query_cmd235 */236 NON_QOS_TX_COUNTER_CMD = 0x2d,237 238 /**239 * @LEDS_CMD: command is &struct iwl_led_cmd240 */241 LEDS_CMD = 0x48,242 243 /**244 * @LQ_CMD: using &struct iwl_lq_cmd245 */246 LQ_CMD = 0x4e,247 248 /**249 * @FW_PAGING_BLOCK_CMD:250 * &struct iwl_fw_paging_cmd251 */252 FW_PAGING_BLOCK_CMD = 0x4f,253 254 /**255 * @SCAN_OFFLOAD_REQUEST_CMD: uses &struct iwl_scan_req_lmac256 */257 SCAN_OFFLOAD_REQUEST_CMD = 0x51,258 259 /**260 * @SCAN_OFFLOAD_ABORT_CMD: abort the scan - no further contents261 */262 SCAN_OFFLOAD_ABORT_CMD = 0x52,263 264 /**265 * @HOT_SPOT_CMD: uses &struct iwl_hs20_roc_req266 */267 HOT_SPOT_CMD = 0x53,268 269 /**270 * @WNM_80211V_TIMING_MEASUREMENT_NOTIFICATION: Time Sync271 * measurement notification for TM/FTM. Sent on receipt of272 * respective WNM action frame for TM protocol or public action273 * frame for FTM protocol from peer device along with additional274 * meta data specified in &struct iwl_time_msmt_notify275 */276 WNM_80211V_TIMING_MEASUREMENT_NOTIFICATION = 0x67,277 278 /**279 * @WNM_80211V_TIMING_MEASUREMENT_CONFIRM_NOTIFICATION: Time Sync280 * measurement confirmation notification for TM/FTM. Sent on281 * receipt of Ack from peer for previously Tx'ed TM/FTM282 * action frame along with additional meta data specified in283 * &struct iwl_time_msmt_cfm_notify284 */285 WNM_80211V_TIMING_MEASUREMENT_CONFIRM_NOTIFICATION = 0x68,286 287 /**288 * @SCAN_OFFLOAD_COMPLETE:289 * notification, &struct iwl_periodic_scan_complete290 */291 SCAN_OFFLOAD_COMPLETE = 0x6D,292 293 /**294 * @SCAN_OFFLOAD_UPDATE_PROFILES_CMD:295 * update scan offload (scheduled scan) profiles/blocklist/etc.296 */297 SCAN_OFFLOAD_UPDATE_PROFILES_CMD = 0x6E,298 299 /**300 * @MATCH_FOUND_NOTIFICATION: scan match found301 */302 MATCH_FOUND_NOTIFICATION = 0xd9,303 304 /**305 * @SCAN_ITERATION_COMPLETE:306 * uses &struct iwl_lmac_scan_complete_notif307 */308 SCAN_ITERATION_COMPLETE = 0xe7,309 310 /* Phy */311 /**312 * @PHY_CONFIGURATION_CMD: &struct iwl_phy_cfg_cmd_v1 or &struct iwl_phy_cfg_cmd_v3313 */314 PHY_CONFIGURATION_CMD = 0x6a,315 316 /**317 * @CALIB_RES_NOTIF_PHY_DB: &struct iwl_calib_res_notif_phy_db318 */319 CALIB_RES_NOTIF_PHY_DB = 0x6b,320 321 /**322 * @PHY_DB_CMD: &struct iwl_phy_db_cmd323 */324 PHY_DB_CMD = 0x6c,325 326 /**327 * @POWER_TABLE_CMD: &struct iwl_device_power_cmd328 */329 POWER_TABLE_CMD = 0x77,330 331 /**332 * @PSM_UAPSD_AP_MISBEHAVING_NOTIFICATION:333 * &struct iwl_uapsd_misbehaving_ap_notif334 */335 PSM_UAPSD_AP_MISBEHAVING_NOTIFICATION = 0x78,336 337 /**338 * @LTR_CONFIG: &struct iwl_ltr_config_cmd339 */340 LTR_CONFIG = 0xee,341 342 /**343 * @REPLY_THERMAL_MNG_BACKOFF:344 * Thermal throttling command345 */346 REPLY_THERMAL_MNG_BACKOFF = 0x7e,347 348 /**349 * @NVM_ACCESS_CMD: using &struct iwl_nvm_access_cmd350 */351 NVM_ACCESS_CMD = 0x88,352 353 /**354 * @BEACON_NOTIFICATION: &struct iwl_extended_beacon_notif355 */356 BEACON_NOTIFICATION = 0x90,357 358 /**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_cmd362 * depending on the device version.363 */364 BEACON_TEMPLATE_CMD = 0x91,365 /**366 * @TX_ANT_CONFIGURATION_CMD: &struct iwl_tx_ant_cfg_cmd367 */368 TX_ANT_CONFIGURATION_CMD = 0x98,369 370 /**371 * @STATISTICS_CMD: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_14377 */378 STATISTICS_CMD = 0x9c,379 380 /**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_14386 * &struct iwl_statistics_operational_ntfy387 */388 STATISTICS_NOTIFICATION = 0x9d,389 390 /**391 * @EOSP_NOTIFICATION:392 * Notify that a service period ended,393 * &struct iwl_mvm_eosp_notification394 */395 EOSP_NOTIFICATION = 0x9e,396 397 /**398 * @REDUCE_TX_POWER_CMD:399 * &struct iwl_dev_tx_power_cmd400 */401 REDUCE_TX_POWER_CMD = 0x9f,402 403 /**404 * @MISSED_BEACONS_NOTIFICATION: &struct iwl_missed_beacons_notif_v4405 */406 MISSED_BEACONS_NOTIFICATION = 0xa2,407 408 /**409 * @MAC_PM_POWER_TABLE: using &struct iwl_mac_power_cmd410 */411 MAC_PM_POWER_TABLE = 0xa9,412 413 /**414 * @MFUART_LOAD_NOTIFICATION: &struct iwl_mfuart_load_notif415 */416 MFUART_LOAD_NOTIFICATION = 0xb1,417 418 /**419 * @RSS_CONFIG_CMD: &struct iwl_rss_config_cmd420 */421 RSS_CONFIG_CMD = 0xb3,422 423 /**424 * @REPLY_RX_PHY_CMD: &struct iwl_rx_phy_info425 */426 REPLY_RX_PHY_CMD = 0xc0,427 428 /**429 * @REPLY_RX_MPDU_CMD:430 * &struct iwl_rx_mpdu_res_start or &struct iwl_rx_mpdu_desc431 */432 REPLY_RX_MPDU_CMD = 0xc1,433 434 /**435 * @BAR_FRAME_RELEASE: Frame release from BAR notification, used for436 * multi-TID BAR (previously, the BAR frame itself was reported437 * instead). Uses &struct iwl_bar_frame_release.438 */439 BAR_FRAME_RELEASE = 0xc2,440 441 /**442 * @FRAME_RELEASE:443 * Frame release (reorder helper) notification, uses444 * &struct iwl_frame_release445 */446 FRAME_RELEASE = 0xc3,447 448 /**449 * @BA_NOTIF:450 * BlockAck notification, uses &struct iwl_mvm_compressed_ba_notif451 * or &struct iwl_mvm_ba_notif depending on the HW452 */453 BA_NOTIF = 0xc5,454 455 /* Location Aware Regulatory */456 /**457 * @MCC_UPDATE_CMD: using &struct iwl_mcc_update_cmd458 */459 MCC_UPDATE_CMD = 0xc8,460 461 /**462 * @MCC_CHUB_UPDATE_CMD: using &struct iwl_mcc_chub_notif463 */464 MCC_CHUB_UPDATE_CMD = 0xc9,465 466 /**467 * @MARKER_CMD: trace marker command, uses &struct iwl_mvm_marker468 * with &struct iwl_mvm_marker_rsp469 */470 MARKER_CMD = 0xcb,471 472 /**473 * @BT_PROFILE_NOTIFICATION: &struct iwl_bt_coex_prof_old_notif474 */475 BT_PROFILE_NOTIFICATION = 0xce,476 477 /**478 * @BT_CONFIG: &struct iwl_bt_coex_cmd479 */480 BT_CONFIG = 0x9b,481 482 /**483 * @BT_COEX_UPDATE_REDUCED_TXP:484 * &struct iwl_bt_coex_reduced_txp_update_cmd485 */486 BT_COEX_UPDATE_REDUCED_TXP = 0x5c,487 488 /**489 * @BT_COEX_CI: &struct iwl_bt_coex_ci_cmd490 */491 BT_COEX_CI = 0x5d,492 493 /**494 * @REPLY_SF_CFG_CMD: &struct iwl_sf_cfg_cmd495 */496 REPLY_SF_CFG_CMD = 0xd1,497 /**498 * @REPLY_BEACON_FILTERING_CMD: &struct iwl_beacon_filter_cmd499 */500 REPLY_BEACON_FILTERING_CMD = 0xd2,501 502 /**503 * @DTS_MEASUREMENT_NOTIFICATION:504 * &struct iwl_dts_measurement_notif_v1 or505 * &struct iwl_dts_measurement_notif_v2506 */507 DTS_MEASUREMENT_NOTIFICATION = 0xdd,508 509 /**510 * @LDBG_CONFIG_CMD: configure continuous trace recording511 */512 LDBG_CONFIG_CMD = 0xf6,513 514 /**515 * @DEBUG_LOG_MSG: Debugging log data from firmware516 */517 DEBUG_LOG_MSG = 0xf7,518 519 /**520 * @MCAST_FILTER_CMD: &struct iwl_mcast_filter_cmd521 */522 MCAST_FILTER_CMD = 0xd0,523 524 /**525 * @D3_CONFIG_CMD: &struct iwl_d3_manager_config526 */527 D3_CONFIG_CMD = 0xd3,528 529 /**530 * @PROT_OFFLOAD_CONFIG_CMD: Depending on firmware, uses one of531 * &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_large534 */535 PROT_OFFLOAD_CONFIG_CMD = 0xd4,536 537 /**538 * @D0I3_END_CMD: End D0i3/D3 state, no command data539 */540 D0I3_END_CMD = 0xed,541 542 /**543 * @WOWLAN_PATTERNS: &struct iwl_wowlan_patterns_cmd544 */545 WOWLAN_PATTERNS = 0xe0,546 547 /**548 * @WOWLAN_CONFIGURATION: &struct iwl_wowlan_config_cmd549 */550 WOWLAN_CONFIGURATION = 0xe1,551 552 /**553 * @WOWLAN_TSC_RSC_PARAM: &struct iwl_wowlan_rsc_tsc_params_cmd_v4,554 * &struct iwl_wowlan_rsc_tsc_params_cmd555 */556 WOWLAN_TSC_RSC_PARAM = 0xe2,557 558 /**559 * @WOWLAN_TKIP_PARAM: &struct iwl_wowlan_tkip_params_cmd560 */561 WOWLAN_TKIP_PARAM = 0xe3,562 563 /**564 * @WOWLAN_KEK_KCK_MATERIAL: &struct iwl_wowlan_kek_kck_material_cmd_v2,565 * &struct iwl_wowlan_kek_kck_material_cmd_v3 or566 * &struct iwl_wowlan_kek_kck_material_cmd_v4567 */568 WOWLAN_KEK_KCK_MATERIAL = 0xe4,569 570 /**571 * @WOWLAN_GET_STATUSES: response in &struct iwl_wowlan_status_v6,572 * &struct iwl_wowlan_status_v7, &struct iwl_wowlan_status_v9 or573 * &struct iwl_wowlan_status_v12574 */575 WOWLAN_GET_STATUSES = 0xe5,576 577 /**578 * @SCAN_OFFLOAD_PROFILES_QUERY_CMD: No command data, response is579 * &struct iwl_scan_offload_profiles_query_v1580 */581 SCAN_OFFLOAD_PROFILES_QUERY_CMD = 0x56,582};583 584/**585 * enum iwl_system_subcmd_ids - system group command IDs586 */587enum iwl_system_subcmd_ids {588 /**589 * @SHARED_MEM_CFG_CMD:590 * response in &struct iwl_shared_mem_cfg or591 * &struct iwl_shared_mem_cfg_v2592 */593 SHARED_MEM_CFG_CMD = 0x0,594 595 /**596 * @SOC_CONFIGURATION_CMD: &struct iwl_soc_configuration_cmd597 */598 SOC_CONFIGURATION_CMD = 0x01,599 600 /**601 * @INIT_EXTENDED_CFG_CMD: &struct iwl_init_extended_cfg_cmd602 */603 INIT_EXTENDED_CFG_CMD = 0x03,604 605 /**606 * @FW_ERROR_RECOVERY_CMD: &struct iwl_fw_error_recovery_cmd607 */608 FW_ERROR_RECOVERY_CMD = 0x7,609 610 /**611 * @RFI_CONFIG_CMD: &struct iwl_rfi_config_cmd612 */613 RFI_CONFIG_CMD = 0xb,614 615 /**616 * @RFI_GET_FREQ_TABLE_CMD: &struct iwl_rfi_config_cmd617 */618 RFI_GET_FREQ_TABLE_CMD = 0xc,619 620 /**621 * @SYSTEM_FEATURES_CONTROL_CMD: &struct iwl_system_features_control_cmd622 */623 SYSTEM_FEATURES_CONTROL_CMD = 0xd,624 625 /**626 * @SYSTEM_STATISTICS_CMD: &struct iwl_system_statistics_cmd627 */628 SYSTEM_STATISTICS_CMD = 0xf,629 630 /**631 * @SYSTEM_STATISTICS_END_NOTIF: &struct iwl_system_statistics_end_notif632 */633 SYSTEM_STATISTICS_END_NOTIF = 0xfd,634 635 /**636 * @RFI_DEACTIVATE_NOTIF: &struct iwl_rfi_deactivate_notif637 */638 RFI_DEACTIVATE_NOTIF = 0xff,639};640 641/**642 * enum iwl_statistics_subcmd_ids - Statistics group command IDs643 */644enum iwl_statistics_subcmd_ids {645 /**646 * @STATISTICS_OPER_NOTIF: Notification about operational647 * statistics &struct iwl_system_statistics_notif_oper648 */649 STATISTICS_OPER_NOTIF = 0x0,650 651 /**652 * @STATISTICS_OPER_PART1_NOTIF: Notification about operational part1653 * statistics &struct iwl_system_statistics_part1_notif_oper654 */655 STATISTICS_OPER_PART1_NOTIF = 0x1,656};657 658#endif /* __iwl_fw_api_commands_h__ */659