1 /* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ 2 /* 3 * Copyright (C) 2013-2015 Intel Mobile Communications GmbH 4 * Copyright (C) 2016-2017 Intel Deutschland GmbH 5 * Copyright (C) 2018-2022 Intel Corporation 6 */ 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 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 * @PROT_OFFLOAD_GROUP: protocol offload group, uses command IDs from 29 * &enum iwl_prot_offload_subcmd_ids 30 * @REGULATORY_AND_NVM_GROUP: regulatory/NVM group, uses command IDs from 31 * &enum iwl_regulatory_and_nvm_subcmd_ids 32 * @DEBUG_GROUP: Debug group, uses command IDs from &enum iwl_debug_cmds 33 */ 34 enum iwl_mvm_command_groups { 35 LEGACY_GROUP = 0x0, 36 LONG_GROUP = 0x1, 37 SYSTEM_GROUP = 0x2, 38 MAC_CONF_GROUP = 0x3, 39 PHY_OPS_GROUP = 0x4, 40 DATA_PATH_GROUP = 0x5, 41 SCAN_GROUP = 0x6, 42 NAN_GROUP = 0x7, 43 LOCATION_GROUP = 0x8, 44 PROT_OFFLOAD_GROUP = 0xb, 45 REGULATORY_AND_NVM_GROUP = 0xc, 46 DEBUG_GROUP = 0xf, 47 }; 48 49 /** 50 * enum iwl_legacy_cmds - legacy group command IDs 51 */ 52 enum iwl_legacy_cmds { 53 /** 54 * @UCODE_ALIVE_NTFY: 55 * Alive data from the firmware, as described in 56 * &struct iwl_alive_ntf_v3 or &struct iwl_alive_ntf_v4 or 57 * &struct iwl_alive_ntf_v5 or &struct iwl_alive_ntf_v6. 58 */ 59 UCODE_ALIVE_NTFY = 0x1, 60 61 /** 62 * @REPLY_ERROR: Cause an error in the firmware, for testing purposes. 63 */ 64 REPLY_ERROR = 0x2, 65 66 /** 67 * @ECHO_CMD: Send data to the device to have it returned immediately. 68 */ 69 ECHO_CMD = 0x3, 70 71 /** 72 * @INIT_COMPLETE_NOTIF: Notification that initialization is complete. 73 */ 74 INIT_COMPLETE_NOTIF = 0x4, 75 76 /** 77 * @PHY_CONTEXT_CMD: 78 * Add/modify/remove a PHY context, using &struct iwl_phy_context_cmd 79 * or &struct iwl_phy_context_cmd_v1. 80 */ 81 PHY_CONTEXT_CMD = 0x8, 82 83 /** 84 * @DBG_CFG: Debug configuration command. 85 */ 86 DBG_CFG = 0x9, 87 88 /** 89 * @SCAN_ITERATION_COMPLETE_UMAC: 90 * Firmware indicates a scan iteration completed, using 91 * &struct iwl_umac_scan_iter_complete_notif. 92 */ 93 SCAN_ITERATION_COMPLETE_UMAC = 0xb5, 94 95 /** 96 * @SCAN_CFG_CMD: 97 * uses &struct iwl_scan_config_v1, &struct iwl_scan_config_v2 98 * or &struct iwl_scan_config 99 */ 100 SCAN_CFG_CMD = 0xc, 101 102 /** 103 * @SCAN_REQ_UMAC: uses &struct iwl_scan_req_umac 104 */ 105 SCAN_REQ_UMAC = 0xd, 106 107 /** 108 * @SCAN_ABORT_UMAC: uses &struct iwl_umac_scan_abort 109 */ 110 SCAN_ABORT_UMAC = 0xe, 111 112 /** 113 * @SCAN_COMPLETE_UMAC: uses &struct iwl_umac_scan_complete 114 */ 115 SCAN_COMPLETE_UMAC = 0xf, 116 117 /** 118 * @BA_WINDOW_STATUS_NOTIFICATION_ID: 119 * uses &struct iwl_ba_window_status_notif 120 */ 121 BA_WINDOW_STATUS_NOTIFICATION_ID = 0x13, 122 123 /** 124 * @ADD_STA_KEY: 125 * &struct iwl_mvm_add_sta_key_cmd_v1 or 126 * &struct iwl_mvm_add_sta_key_cmd. 127 */ 128 ADD_STA_KEY = 0x17, 129 130 /** 131 * @ADD_STA: 132 * &struct iwl_mvm_add_sta_cmd or &struct iwl_mvm_add_sta_cmd_v7. 133 */ 134 ADD_STA = 0x18, 135 136 /** 137 * @REMOVE_STA: &struct iwl_mvm_rm_sta_cmd 138 */ 139 REMOVE_STA = 0x19, 140 141 /** 142 * @FW_GET_ITEM_CMD: uses &struct iwl_fw_get_item_cmd 143 */ 144 FW_GET_ITEM_CMD = 0x1a, 145 146 /** 147 * @TX_CMD: uses &struct iwl_tx_cmd or &struct iwl_tx_cmd_gen2 or 148 * &struct iwl_tx_cmd_gen3, 149 * response in &struct iwl_mvm_tx_resp or 150 * &struct iwl_mvm_tx_resp_v3 151 */ 152 TX_CMD = 0x1c, 153 154 /** 155 * @TXPATH_FLUSH: &struct iwl_tx_path_flush_cmd 156 * response in &struct iwl_tx_path_flush_cmd_rsp 157 */ 158 TXPATH_FLUSH = 0x1e, 159 160 /** 161 * @MGMT_MCAST_KEY: 162 * &struct iwl_mvm_mgmt_mcast_key_cmd or 163 * &struct iwl_mvm_mgmt_mcast_key_cmd_v1 164 */ 165 MGMT_MCAST_KEY = 0x1f, 166 167 /* scheduler config */ 168 /** 169 * @SCD_QUEUE_CFG: &struct iwl_scd_txq_cfg_cmd for older hardware, 170 * &struct iwl_tx_queue_cfg_cmd with &struct iwl_tx_queue_cfg_rsp 171 * for newer (22000) hardware. 172 */ 173 SCD_QUEUE_CFG = 0x1d, 174 175 /** 176 * @WEP_KEY: uses &struct iwl_mvm_wep_key_cmd 177 */ 178 WEP_KEY = 0x20, 179 180 /** 181 * @SHARED_MEM_CFG: 182 * retrieve shared memory configuration - response in 183 * &struct iwl_shared_mem_cfg 184 */ 185 SHARED_MEM_CFG = 0x25, 186 187 /** 188 * @TDLS_CHANNEL_SWITCH_CMD: uses &struct iwl_tdls_channel_switch_cmd 189 */ 190 TDLS_CHANNEL_SWITCH_CMD = 0x27, 191 192 /** 193 * @TDLS_CHANNEL_SWITCH_NOTIFICATION: 194 * uses &struct iwl_tdls_channel_switch_notif 195 */ 196 TDLS_CHANNEL_SWITCH_NOTIFICATION = 0xaa, 197 198 /** 199 * @TDLS_CONFIG_CMD: 200 * &struct iwl_tdls_config_cmd, response in &struct iwl_tdls_config_res 201 */ 202 TDLS_CONFIG_CMD = 0xa7, 203 204 /** 205 * @MAC_CONTEXT_CMD: &struct iwl_mac_ctx_cmd 206 */ 207 MAC_CONTEXT_CMD = 0x28, 208 209 /** 210 * @TIME_EVENT_CMD: 211 * &struct iwl_time_event_cmd, response in &struct iwl_time_event_resp 212 */ 213 TIME_EVENT_CMD = 0x29, /* both CMD and response */ 214 215 /** 216 * @TIME_EVENT_NOTIFICATION: &struct iwl_time_event_notif 217 */ 218 TIME_EVENT_NOTIFICATION = 0x2a, 219 220 /** 221 * @BINDING_CONTEXT_CMD: 222 * &struct iwl_binding_cmd or &struct iwl_binding_cmd_v1 223 */ 224 BINDING_CONTEXT_CMD = 0x2b, 225 226 /** 227 * @TIME_QUOTA_CMD: &struct iwl_time_quota_cmd 228 */ 229 TIME_QUOTA_CMD = 0x2c, 230 231 /** 232 * @NON_QOS_TX_COUNTER_CMD: 233 * command is &struct iwl_nonqos_seq_query_cmd 234 */ 235 NON_QOS_TX_COUNTER_CMD = 0x2d, 236 237 /** 238 * @LEDS_CMD: command is &struct iwl_led_cmd 239 */ 240 LEDS_CMD = 0x48, 241 242 /** 243 * @LQ_CMD: using &struct iwl_lq_cmd 244 */ 245 LQ_CMD = 0x4e, 246 247 /** 248 * @FW_PAGING_BLOCK_CMD: 249 * &struct iwl_fw_paging_cmd 250 */ 251 FW_PAGING_BLOCK_CMD = 0x4f, 252 253 /** 254 * @SCAN_OFFLOAD_REQUEST_CMD: uses &struct iwl_scan_req_lmac 255 */ 256 SCAN_OFFLOAD_REQUEST_CMD = 0x51, 257 258 /** 259 * @SCAN_OFFLOAD_ABORT_CMD: abort the scan - no further contents 260 */ 261 SCAN_OFFLOAD_ABORT_CMD = 0x52, 262 263 /** 264 * @HOT_SPOT_CMD: uses &struct iwl_hs20_roc_req 265 */ 266 HOT_SPOT_CMD = 0x53, 267 268 /** 269 * @WNM_80211V_TIMING_MEASUREMENT_NOTIFICATION: Time Sync 270 * measurement notification for TM/FTM. Sent on receipt of 271 * respective WNM action frame for TM protocol or public action 272 * frame for FTM protocol from peer device along with additional 273 * meta data specified in &struct iwl_time_msmt_notify 274 */ 275 WNM_80211V_TIMING_MEASUREMENT_NOTIFICATION = 0x67, 276 277 /** 278 * @WNM_80211V_TIMING_MEASUREMENT_CONFIRM_NOTIFICATION: Time Sync 279 * measurement confirmation notification for TM/FTM. Sent on 280 * receipt of Ack from peer for previously Tx'ed TM/FTM 281 * action frame along with additional meta data specified in 282 * &struct iwl_time_msmt_cfm_notify 283 */ 284 WNM_80211V_TIMING_MEASUREMENT_CONFIRM_NOTIFICATION = 0x68, 285 286 /** 287 * @SCAN_OFFLOAD_COMPLETE: 288 * notification, &struct iwl_periodic_scan_complete 289 */ 290 SCAN_OFFLOAD_COMPLETE = 0x6D, 291 292 /** 293 * @SCAN_OFFLOAD_UPDATE_PROFILES_CMD: 294 * update scan offload (scheduled scan) profiles/blocklist/etc. 295 */ 296 SCAN_OFFLOAD_UPDATE_PROFILES_CMD = 0x6E, 297 298 /** 299 * @MATCH_FOUND_NOTIFICATION: scan match found 300 */ 301 MATCH_FOUND_NOTIFICATION = 0xd9, 302 303 /** 304 * @SCAN_ITERATION_COMPLETE: 305 * uses &struct iwl_lmac_scan_complete_notif 306 */ 307 SCAN_ITERATION_COMPLETE = 0xe7, 308 309 /* Phy */ 310 /** 311 * @PHY_CONFIGURATION_CMD: &struct iwl_phy_cfg_cmd_v1 or &struct iwl_phy_cfg_cmd_v3 312 */ 313 PHY_CONFIGURATION_CMD = 0x6a, 314 315 /** 316 * @CALIB_RES_NOTIF_PHY_DB: &struct iwl_calib_res_notif_phy_db 317 */ 318 CALIB_RES_NOTIF_PHY_DB = 0x6b, 319 320 /** 321 * @PHY_DB_CMD: &struct iwl_phy_db_cmd 322 */ 323 PHY_DB_CMD = 0x6c, 324 325 /** 326 * @POWER_TABLE_CMD: &struct iwl_device_power_cmd 327 */ 328 POWER_TABLE_CMD = 0x77, 329 330 /** 331 * @PSM_UAPSD_AP_MISBEHAVING_NOTIFICATION: 332 * &struct iwl_uapsd_misbehaving_ap_notif 333 */ 334 PSM_UAPSD_AP_MISBEHAVING_NOTIFICATION = 0x78, 335 336 /** 337 * @LTR_CONFIG: &struct iwl_ltr_config_cmd 338 */ 339 LTR_CONFIG = 0xee, 340 341 /** 342 * @REPLY_THERMAL_MNG_BACKOFF: 343 * Thermal throttling command 344 */ 345 REPLY_THERMAL_MNG_BACKOFF = 0x7e, 346 347 /** 348 * @NVM_ACCESS_CMD: using &struct iwl_nvm_access_cmd 349 */ 350 NVM_ACCESS_CMD = 0x88, 351 352 /** 353 * @BEACON_NOTIFICATION: &struct iwl_extended_beacon_notif 354 */ 355 BEACON_NOTIFICATION = 0x90, 356 357 /** 358 * @BEACON_TEMPLATE_CMD: 359 * Uses one of &struct iwl_mac_beacon_cmd_v6, 360 * &struct iwl_mac_beacon_cmd_v7 or &struct iwl_mac_beacon_cmd 361 * depending on the device version. 362 */ 363 BEACON_TEMPLATE_CMD = 0x91, 364 /** 365 * @TX_ANT_CONFIGURATION_CMD: &struct iwl_tx_ant_cfg_cmd 366 */ 367 TX_ANT_CONFIGURATION_CMD = 0x98, 368 369 /** 370 * @STATISTICS_CMD: 371 * one of &struct iwl_statistics_cmd, 372 * &struct iwl_notif_statistics_v11, 373 * &struct iwl_notif_statistics_v10, 374 * &struct iwl_notif_statistics, 375 * &struct iwl_statistics_operational_ntfy_ver_14 376 */ 377 STATISTICS_CMD = 0x9c, 378 379 /** 380 * @STATISTICS_NOTIFICATION: 381 * one of &struct iwl_notif_statistics_v10, 382 * &struct iwl_notif_statistics_v11, 383 * &struct iwl_notif_statistic, 384 * &struct iwl_statistics_operational_ntfy_ver_14 385 * &struct iwl_statistics_operational_ntfy 386 */ 387 STATISTICS_NOTIFICATION = 0x9d, 388 389 /** 390 * @EOSP_NOTIFICATION: 391 * Notify that a service period ended, 392 * &struct iwl_mvm_eosp_notification 393 */ 394 EOSP_NOTIFICATION = 0x9e, 395 396 /** 397 * @REDUCE_TX_POWER_CMD: 398 * &struct iwl_dev_tx_power_cmd 399 */ 400 REDUCE_TX_POWER_CMD = 0x9f, 401 402 /** 403 * @MISSED_BEACONS_NOTIFICATION: &struct iwl_missed_beacons_notif 404 */ 405 MISSED_BEACONS_NOTIFICATION = 0xa2, 406 407 /** 408 * @MAC_PM_POWER_TABLE: using &struct iwl_mac_power_cmd 409 */ 410 MAC_PM_POWER_TABLE = 0xa9, 411 412 /** 413 * @MFUART_LOAD_NOTIFICATION: &struct iwl_mfuart_load_notif 414 */ 415 MFUART_LOAD_NOTIFICATION = 0xb1, 416 417 /** 418 * @RSS_CONFIG_CMD: &struct iwl_rss_config_cmd 419 */ 420 RSS_CONFIG_CMD = 0xb3, 421 422 /** 423 * @REPLY_RX_PHY_CMD: &struct iwl_rx_phy_info 424 */ 425 REPLY_RX_PHY_CMD = 0xc0, 426 427 /** 428 * @REPLY_RX_MPDU_CMD: 429 * &struct iwl_rx_mpdu_res_start or &struct iwl_rx_mpdu_desc 430 */ 431 REPLY_RX_MPDU_CMD = 0xc1, 432 433 /** 434 * @BAR_FRAME_RELEASE: Frame release from BAR notification, used for 435 * multi-TID BAR (previously, the BAR frame itself was reported 436 * instead). Uses &struct iwl_bar_frame_release. 437 */ 438 BAR_FRAME_RELEASE = 0xc2, 439 440 /** 441 * @FRAME_RELEASE: 442 * Frame release (reorder helper) notification, uses 443 * &struct iwl_frame_release 444 */ 445 FRAME_RELEASE = 0xc3, 446 447 /** 448 * @BA_NOTIF: 449 * BlockAck notification, uses &struct iwl_mvm_compressed_ba_notif 450 * or &struct iwl_mvm_ba_notif depending on the HW 451 */ 452 BA_NOTIF = 0xc5, 453 454 /* Location Aware Regulatory */ 455 /** 456 * @MCC_UPDATE_CMD: using &struct iwl_mcc_update_cmd 457 */ 458 MCC_UPDATE_CMD = 0xc8, 459 460 /** 461 * @MCC_CHUB_UPDATE_CMD: using &struct iwl_mcc_chub_notif 462 */ 463 MCC_CHUB_UPDATE_CMD = 0xc9, 464 465 /** 466 * @MARKER_CMD: trace marker command, uses &struct iwl_mvm_marker 467 * with &struct iwl_mvm_marker_rsp 468 */ 469 MARKER_CMD = 0xcb, 470 471 /** 472 * @BT_PROFILE_NOTIFICATION: &struct iwl_bt_coex_profile_notif 473 */ 474 BT_PROFILE_NOTIFICATION = 0xce, 475 476 /** 477 * @BT_CONFIG: &struct iwl_bt_coex_cmd 478 */ 479 BT_CONFIG = 0x9b, 480 481 /** 482 * @BT_COEX_UPDATE_REDUCED_TXP: 483 * &struct iwl_bt_coex_reduced_txp_update_cmd 484 */ 485 BT_COEX_UPDATE_REDUCED_TXP = 0x5c, 486 487 /** 488 * @BT_COEX_CI: &struct iwl_bt_coex_ci_cmd 489 */ 490 BT_COEX_CI = 0x5d, 491 492 /** 493 * @REPLY_SF_CFG_CMD: &struct iwl_sf_cfg_cmd 494 */ 495 REPLY_SF_CFG_CMD = 0xd1, 496 /** 497 * @REPLY_BEACON_FILTERING_CMD: &struct iwl_beacon_filter_cmd 498 */ 499 REPLY_BEACON_FILTERING_CMD = 0xd2, 500 501 /** 502 * @DTS_MEASUREMENT_NOTIFICATION: 503 * &struct iwl_dts_measurement_notif_v1 or 504 * &struct iwl_dts_measurement_notif_v2 505 */ 506 DTS_MEASUREMENT_NOTIFICATION = 0xdd, 507 508 /** 509 * @LDBG_CONFIG_CMD: configure continuous trace recording 510 */ 511 LDBG_CONFIG_CMD = 0xf6, 512 513 /** 514 * @DEBUG_LOG_MSG: Debugging log data from firmware 515 */ 516 DEBUG_LOG_MSG = 0xf7, 517 518 /** 519 * @MCAST_FILTER_CMD: &struct iwl_mcast_filter_cmd 520 */ 521 MCAST_FILTER_CMD = 0xd0, 522 523 /** 524 * @D3_CONFIG_CMD: &struct iwl_d3_manager_config 525 */ 526 D3_CONFIG_CMD = 0xd3, 527 528 /** 529 * @PROT_OFFLOAD_CONFIG_CMD: Depending on firmware, uses one of 530 * &struct iwl_proto_offload_cmd_v1, &struct iwl_proto_offload_cmd_v2, 531 * &struct iwl_proto_offload_cmd_v3_small, 532 * &struct iwl_proto_offload_cmd_v3_large 533 */ 534 PROT_OFFLOAD_CONFIG_CMD = 0xd4, 535 536 /** 537 * @OFFLOADS_QUERY_CMD: 538 * No data in command, response in &struct iwl_wowlan_status 539 */ 540 OFFLOADS_QUERY_CMD = 0xd5, 541 542 /** 543 * @D0I3_END_CMD: End D0i3/D3 state, no command data 544 */ 545 D0I3_END_CMD = 0xed, 546 547 /** 548 * @WOWLAN_PATTERNS: &struct iwl_wowlan_patterns_cmd 549 */ 550 WOWLAN_PATTERNS = 0xe0, 551 552 /** 553 * @WOWLAN_CONFIGURATION: &struct iwl_wowlan_config_cmd 554 */ 555 WOWLAN_CONFIGURATION = 0xe1, 556 557 /** 558 * @WOWLAN_TSC_RSC_PARAM: &struct iwl_wowlan_rsc_tsc_params_cmd_v4, 559 * &struct iwl_wowlan_rsc_tsc_params_cmd 560 */ 561 WOWLAN_TSC_RSC_PARAM = 0xe2, 562 563 /** 564 * @WOWLAN_TKIP_PARAM: &struct iwl_wowlan_tkip_params_cmd 565 */ 566 WOWLAN_TKIP_PARAM = 0xe3, 567 568 /** 569 * @WOWLAN_KEK_KCK_MATERIAL: &struct iwl_wowlan_kek_kck_material_cmd 570 */ 571 WOWLAN_KEK_KCK_MATERIAL = 0xe4, 572 573 /** 574 * @WOWLAN_GET_STATUSES: response in &struct iwl_wowlan_status 575 */ 576 WOWLAN_GET_STATUSES = 0xe5, 577 578 /** 579 * @SCAN_OFFLOAD_PROFILES_QUERY_CMD: 580 * No command data, response is &struct iwl_scan_offload_profiles_query 581 */ 582 SCAN_OFFLOAD_PROFILES_QUERY_CMD = 0x56, 583 }; 584 585 /** 586 * enum iwl_system_subcmd_ids - system group command IDs 587 */ 588 enum iwl_system_subcmd_ids { 589 /** 590 * @SHARED_MEM_CFG_CMD: 591 * response in &struct iwl_shared_mem_cfg or 592 * &struct iwl_shared_mem_cfg_v2 593 */ 594 SHARED_MEM_CFG_CMD = 0x0, 595 596 /** 597 * @SOC_CONFIGURATION_CMD: &struct iwl_soc_configuration_cmd 598 */ 599 SOC_CONFIGURATION_CMD = 0x01, 600 601 /** 602 * @INIT_EXTENDED_CFG_CMD: &struct iwl_init_extended_cfg_cmd 603 */ 604 INIT_EXTENDED_CFG_CMD = 0x03, 605 606 /** 607 * @FW_ERROR_RECOVERY_CMD: &struct iwl_fw_error_recovery_cmd 608 */ 609 FW_ERROR_RECOVERY_CMD = 0x7, 610 611 /** 612 * @RFI_CONFIG_CMD: &struct iwl_rfi_config_cmd 613 */ 614 RFI_CONFIG_CMD = 0xb, 615 616 /** 617 * @RFI_GET_FREQ_TABLE_CMD: &struct iwl_rfi_config_cmd 618 */ 619 RFI_GET_FREQ_TABLE_CMD = 0xc, 620 621 /** 622 * @SYSTEM_FEATURES_CONTROL_CMD: &struct iwl_system_features_control_cmd 623 */ 624 SYSTEM_FEATURES_CONTROL_CMD = 0xd, 625 626 /** 627 * @RFI_DEACTIVATE_NOTIF: &struct iwl_rfi_deactivate_notif 628 */ 629 RFI_DEACTIVATE_NOTIF = 0xff, 630 }; 631 632 #endif /* __iwl_fw_api_commands_h__ */ 633