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 * @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 146 */ 147 TX_CMD = 0x1c, 148 149 /** 150 * @TXPATH_FLUSH: &struct iwl_tx_path_flush_cmd 151 * response in &struct iwl_tx_path_flush_cmd_rsp 152 */ 153 TXPATH_FLUSH = 0x1e, 154 155 /** 156 * @MGMT_MCAST_KEY: 157 * &struct iwl_mvm_mgmt_mcast_key_cmd or 158 * &struct iwl_mvm_mgmt_mcast_key_cmd_v1 159 */ 160 MGMT_MCAST_KEY = 0x1f, 161 162 /* scheduler config */ 163 /** 164 * @SCD_QUEUE_CFG: &struct iwl_scd_txq_cfg_cmd for older hardware, 165 * &struct iwl_tx_queue_cfg_cmd with &struct iwl_tx_queue_cfg_rsp 166 * for newer (22000) hardware. 167 */ 168 SCD_QUEUE_CFG = 0x1d, 169 170 /** 171 * @WEP_KEY: uses &struct iwl_mvm_wep_key_cmd 172 */ 173 WEP_KEY = 0x20, 174 175 /** 176 * @SHARED_MEM_CFG: 177 * retrieve shared memory configuration - response in 178 * &struct iwl_shared_mem_cfg 179 */ 180 SHARED_MEM_CFG = 0x25, 181 182 /** 183 * @TDLS_CHANNEL_SWITCH_CMD: uses &struct iwl_tdls_channel_switch_cmd 184 */ 185 TDLS_CHANNEL_SWITCH_CMD = 0x27, 186 187 /** 188 * @TDLS_CHANNEL_SWITCH_NOTIFICATION: 189 * uses &struct iwl_tdls_channel_switch_notif 190 */ 191 TDLS_CHANNEL_SWITCH_NOTIFICATION = 0xaa, 192 193 /** 194 * @TDLS_CONFIG_CMD: 195 * &struct iwl_tdls_config_cmd, response in &struct iwl_tdls_config_res 196 */ 197 TDLS_CONFIG_CMD = 0xa7, 198 199 /** 200 * @MAC_CONTEXT_CMD: &struct iwl_mac_ctx_cmd 201 */ 202 MAC_CONTEXT_CMD = 0x28, 203 204 /** 205 * @TIME_EVENT_CMD: 206 * &struct iwl_time_event_cmd, response in &struct iwl_time_event_resp 207 */ 208 TIME_EVENT_CMD = 0x29, /* both CMD and response */ 209 210 /** 211 * @TIME_EVENT_NOTIFICATION: &struct iwl_time_event_notif 212 */ 213 TIME_EVENT_NOTIFICATION = 0x2a, 214 215 /** 216 * @BINDING_CONTEXT_CMD: 217 * &struct iwl_binding_cmd or &struct iwl_binding_cmd_v1 218 */ 219 BINDING_CONTEXT_CMD = 0x2b, 220 221 /** 222 * @TIME_QUOTA_CMD: &struct iwl_time_quota_cmd 223 */ 224 TIME_QUOTA_CMD = 0x2c, 225 226 /** 227 * @NON_QOS_TX_COUNTER_CMD: 228 * command is &struct iwl_nonqos_seq_query_cmd 229 */ 230 NON_QOS_TX_COUNTER_CMD = 0x2d, 231 232 /** 233 * @LEDS_CMD: command is &struct iwl_led_cmd 234 */ 235 LEDS_CMD = 0x48, 236 237 /** 238 * @LQ_CMD: using &struct iwl_lq_cmd 239 */ 240 LQ_CMD = 0x4e, 241 242 /** 243 * @FW_PAGING_BLOCK_CMD: 244 * &struct iwl_fw_paging_cmd 245 */ 246 FW_PAGING_BLOCK_CMD = 0x4f, 247 248 /** 249 * @SCAN_OFFLOAD_REQUEST_CMD: uses &struct iwl_scan_req_lmac 250 */ 251 SCAN_OFFLOAD_REQUEST_CMD = 0x51, 252 253 /** 254 * @SCAN_OFFLOAD_ABORT_CMD: abort the scan - no further contents 255 */ 256 SCAN_OFFLOAD_ABORT_CMD = 0x52, 257 258 /** 259 * @HOT_SPOT_CMD: uses &struct iwl_hs20_roc_req 260 */ 261 HOT_SPOT_CMD = 0x53, 262 263 /** 264 * @WNM_80211V_TIMING_MEASUREMENT_NOTIFICATION: Time Sync 265 * measurement notification for TM/FTM. Sent on receipt of 266 * respective WNM action frame for TM protocol or public action 267 * frame for FTM protocol from peer device along with additional 268 * meta data specified in &struct iwl_time_msmt_notify 269 */ 270 WNM_80211V_TIMING_MEASUREMENT_NOTIFICATION = 0x67, 271 272 /** 273 * @WNM_80211V_TIMING_MEASUREMENT_CONFIRM_NOTIFICATION: Time Sync 274 * measurement confirmation notification for TM/FTM. Sent on 275 * receipt of Ack from peer for previously Tx'ed TM/FTM 276 * action frame along with additional meta data specified in 277 * &struct iwl_time_msmt_cfm_notify 278 */ 279 WNM_80211V_TIMING_MEASUREMENT_CONFIRM_NOTIFICATION = 0x68, 280 281 /** 282 * @SCAN_OFFLOAD_COMPLETE: 283 * notification, &struct iwl_periodic_scan_complete 284 */ 285 SCAN_OFFLOAD_COMPLETE = 0x6D, 286 287 /** 288 * @SCAN_OFFLOAD_UPDATE_PROFILES_CMD: 289 * update scan offload (scheduled scan) profiles/blocklist/etc. 290 */ 291 SCAN_OFFLOAD_UPDATE_PROFILES_CMD = 0x6E, 292 293 /** 294 * @MATCH_FOUND_NOTIFICATION: scan match found 295 */ 296 MATCH_FOUND_NOTIFICATION = 0xd9, 297 298 /** 299 * @SCAN_ITERATION_COMPLETE: 300 * uses &struct iwl_lmac_scan_complete_notif 301 */ 302 SCAN_ITERATION_COMPLETE = 0xe7, 303 304 /* Phy */ 305 /** 306 * @PHY_CONFIGURATION_CMD: &struct iwl_phy_cfg_cmd_v1 or &struct iwl_phy_cfg_cmd_v3 307 */ 308 PHY_CONFIGURATION_CMD = 0x6a, 309 310 /** 311 * @CALIB_RES_NOTIF_PHY_DB: &struct iwl_calib_res_notif_phy_db 312 */ 313 CALIB_RES_NOTIF_PHY_DB = 0x6b, 314 315 /** 316 * @PHY_DB_CMD: &struct iwl_phy_db_cmd 317 */ 318 PHY_DB_CMD = 0x6c, 319 320 /** 321 * @POWER_TABLE_CMD: &struct iwl_device_power_cmd 322 */ 323 POWER_TABLE_CMD = 0x77, 324 325 /** 326 * @PSM_UAPSD_AP_MISBEHAVING_NOTIFICATION: 327 * &struct iwl_uapsd_misbehaving_ap_notif 328 */ 329 PSM_UAPSD_AP_MISBEHAVING_NOTIFICATION = 0x78, 330 331 /** 332 * @LTR_CONFIG: &struct iwl_ltr_config_cmd 333 */ 334 LTR_CONFIG = 0xee, 335 336 /** 337 * @REPLY_THERMAL_MNG_BACKOFF: 338 * Thermal throttling command 339 */ 340 REPLY_THERMAL_MNG_BACKOFF = 0x7e, 341 342 /** 343 * @NVM_ACCESS_CMD: using &struct iwl_nvm_access_cmd 344 */ 345 NVM_ACCESS_CMD = 0x88, 346 347 /** 348 * @BEACON_NOTIFICATION: &struct iwl_extended_beacon_notif 349 */ 350 BEACON_NOTIFICATION = 0x90, 351 352 /** 353 * @BEACON_TEMPLATE_CMD: 354 * Uses one of &struct iwl_mac_beacon_cmd_v6, 355 * &struct iwl_mac_beacon_cmd_v7 or &struct iwl_mac_beacon_cmd 356 * depending on the device version. 357 */ 358 BEACON_TEMPLATE_CMD = 0x91, 359 /** 360 * @TX_ANT_CONFIGURATION_CMD: &struct iwl_tx_ant_cfg_cmd 361 */ 362 TX_ANT_CONFIGURATION_CMD = 0x98, 363 364 /** 365 * @STATISTICS_CMD: 366 * one of &struct iwl_statistics_cmd, 367 * &struct iwl_notif_statistics_v11, 368 * &struct iwl_notif_statistics_v10, 369 * &struct iwl_notif_statistics, 370 * &struct iwl_statistics_operational_ntfy_ver_14 371 */ 372 STATISTICS_CMD = 0x9c, 373 374 /** 375 * @STATISTICS_NOTIFICATION: 376 * one of &struct iwl_notif_statistics_v10, 377 * &struct iwl_notif_statistics_v11, 378 * &struct iwl_notif_statistic, 379 * &struct iwl_statistics_operational_ntfy_ver_14 380 * &struct iwl_statistics_operational_ntfy 381 */ 382 STATISTICS_NOTIFICATION = 0x9d, 383 384 /** 385 * @EOSP_NOTIFICATION: 386 * Notify that a service period ended, 387 * &struct iwl_mvm_eosp_notification 388 */ 389 EOSP_NOTIFICATION = 0x9e, 390 391 /** 392 * @REDUCE_TX_POWER_CMD: 393 * &struct iwl_dev_tx_power_cmd 394 */ 395 REDUCE_TX_POWER_CMD = 0x9f, 396 397 /** 398 * @MISSED_BEACONS_NOTIFICATION: &struct iwl_missed_beacons_notif 399 */ 400 MISSED_BEACONS_NOTIFICATION = 0xa2, 401 402 /** 403 * @MAC_PM_POWER_TABLE: using &struct iwl_mac_power_cmd 404 */ 405 MAC_PM_POWER_TABLE = 0xa9, 406 407 /** 408 * @MFUART_LOAD_NOTIFICATION: &struct iwl_mfuart_load_notif 409 */ 410 MFUART_LOAD_NOTIFICATION = 0xb1, 411 412 /** 413 * @RSS_CONFIG_CMD: &struct iwl_rss_config_cmd 414 */ 415 RSS_CONFIG_CMD = 0xb3, 416 417 /** 418 * @REPLY_RX_PHY_CMD: &struct iwl_rx_phy_info 419 */ 420 REPLY_RX_PHY_CMD = 0xc0, 421 422 /** 423 * @REPLY_RX_MPDU_CMD: 424 * &struct iwl_rx_mpdu_res_start or &struct iwl_rx_mpdu_desc 425 */ 426 REPLY_RX_MPDU_CMD = 0xc1, 427 428 /** 429 * @BAR_FRAME_RELEASE: Frame release from BAR notification, used for 430 * multi-TID BAR (previously, the BAR frame itself was reported 431 * instead). Uses &struct iwl_bar_frame_release. 432 */ 433 BAR_FRAME_RELEASE = 0xc2, 434 435 /** 436 * @FRAME_RELEASE: 437 * Frame release (reorder helper) notification, uses 438 * &struct iwl_frame_release 439 */ 440 FRAME_RELEASE = 0xc3, 441 442 /** 443 * @BA_NOTIF: 444 * BlockAck notification, uses &struct iwl_mvm_compressed_ba_notif 445 * or &struct iwl_mvm_ba_notif depending on the HW 446 */ 447 BA_NOTIF = 0xc5, 448 449 /* Location Aware Regulatory */ 450 /** 451 * @MCC_UPDATE_CMD: using &struct iwl_mcc_update_cmd 452 */ 453 MCC_UPDATE_CMD = 0xc8, 454 455 /** 456 * @MCC_CHUB_UPDATE_CMD: using &struct iwl_mcc_chub_notif 457 */ 458 MCC_CHUB_UPDATE_CMD = 0xc9, 459 460 /** 461 * @MARKER_CMD: trace marker command, uses &struct iwl_mvm_marker 462 * with &struct iwl_mvm_marker_rsp 463 */ 464 MARKER_CMD = 0xcb, 465 466 /** 467 * @BT_PROFILE_NOTIFICATION: &struct iwl_bt_coex_profile_notif 468 */ 469 BT_PROFILE_NOTIFICATION = 0xce, 470 471 /** 472 * @BT_CONFIG: &struct iwl_bt_coex_cmd 473 */ 474 BT_CONFIG = 0x9b, 475 476 /** 477 * @BT_COEX_UPDATE_REDUCED_TXP: 478 * &struct iwl_bt_coex_reduced_txp_update_cmd 479 */ 480 BT_COEX_UPDATE_REDUCED_TXP = 0x5c, 481 482 /** 483 * @BT_COEX_CI: &struct iwl_bt_coex_ci_cmd 484 */ 485 BT_COEX_CI = 0x5d, 486 487 /** 488 * @REPLY_SF_CFG_CMD: &struct iwl_sf_cfg_cmd 489 */ 490 REPLY_SF_CFG_CMD = 0xd1, 491 /** 492 * @REPLY_BEACON_FILTERING_CMD: &struct iwl_beacon_filter_cmd 493 */ 494 REPLY_BEACON_FILTERING_CMD = 0xd2, 495 496 /** 497 * @DTS_MEASUREMENT_NOTIFICATION: 498 * &struct iwl_dts_measurement_notif_v1 or 499 * &struct iwl_dts_measurement_notif_v2 500 */ 501 DTS_MEASUREMENT_NOTIFICATION = 0xdd, 502 503 /** 504 * @LDBG_CONFIG_CMD: configure continuous trace recording 505 */ 506 LDBG_CONFIG_CMD = 0xf6, 507 508 /** 509 * @DEBUG_LOG_MSG: Debugging log data from firmware 510 */ 511 DEBUG_LOG_MSG = 0xf7, 512 513 /** 514 * @MCAST_FILTER_CMD: &struct iwl_mcast_filter_cmd 515 */ 516 MCAST_FILTER_CMD = 0xd0, 517 518 /** 519 * @D3_CONFIG_CMD: &struct iwl_d3_manager_config 520 */ 521 D3_CONFIG_CMD = 0xd3, 522 523 /** 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 528 */ 529 PROT_OFFLOAD_CONFIG_CMD = 0xd4, 530 531 /** 532 * @D0I3_END_CMD: End D0i3/D3 state, no command data 533 */ 534 D0I3_END_CMD = 0xed, 535 536 /** 537 * @WOWLAN_PATTERNS: &struct iwl_wowlan_patterns_cmd 538 */ 539 WOWLAN_PATTERNS = 0xe0, 540 541 /** 542 * @WOWLAN_CONFIGURATION: &struct iwl_wowlan_config_cmd 543 */ 544 WOWLAN_CONFIGURATION = 0xe1, 545 546 /** 547 * @WOWLAN_TSC_RSC_PARAM: &struct iwl_wowlan_rsc_tsc_params_cmd_v4, 548 * &struct iwl_wowlan_rsc_tsc_params_cmd 549 */ 550 WOWLAN_TSC_RSC_PARAM = 0xe2, 551 552 /** 553 * @WOWLAN_TKIP_PARAM: &struct iwl_wowlan_tkip_params_cmd 554 */ 555 WOWLAN_TKIP_PARAM = 0xe3, 556 557 /** 558 * @WOWLAN_KEK_KCK_MATERIAL: &struct iwl_wowlan_kek_kck_material_cmd_v2, 559 * &struct iwl_wowlan_kek_kck_material_cmd_v3 or 560 * &struct iwl_wowlan_kek_kck_material_cmd_v4 561 */ 562 WOWLAN_KEK_KCK_MATERIAL = 0xe4, 563 564 /** 565 * @WOWLAN_GET_STATUSES: response in &struct iwl_wowlan_status_v6, 566 * &struct iwl_wowlan_status_v7, &struct iwl_wowlan_status_v9 or 567 * &struct iwl_wowlan_status_v12 568 */ 569 WOWLAN_GET_STATUSES = 0xe5, 570 571 /** 572 * @SCAN_OFFLOAD_PROFILES_QUERY_CMD: No command data, response is 573 * &struct iwl_scan_offload_profiles_query_v1 574 */ 575 SCAN_OFFLOAD_PROFILES_QUERY_CMD = 0x56, 576 }; 577 578 /** 579 * enum iwl_system_subcmd_ids - system group command IDs 580 */ 581 enum iwl_system_subcmd_ids { 582 /** 583 * @SHARED_MEM_CFG_CMD: 584 * response in &struct iwl_shared_mem_cfg or 585 * &struct iwl_shared_mem_cfg_v2 586 */ 587 SHARED_MEM_CFG_CMD = 0x0, 588 589 /** 590 * @SOC_CONFIGURATION_CMD: &struct iwl_soc_configuration_cmd 591 */ 592 SOC_CONFIGURATION_CMD = 0x01, 593 594 /** 595 * @INIT_EXTENDED_CFG_CMD: &struct iwl_init_extended_cfg_cmd 596 */ 597 INIT_EXTENDED_CFG_CMD = 0x03, 598 599 /** 600 * @FW_ERROR_RECOVERY_CMD: &struct iwl_fw_error_recovery_cmd 601 */ 602 FW_ERROR_RECOVERY_CMD = 0x7, 603 604 /** 605 * @RFI_CONFIG_CMD: &struct iwl_rfi_config_cmd 606 */ 607 RFI_CONFIG_CMD = 0xb, 608 609 /** 610 * @RFI_GET_FREQ_TABLE_CMD: &struct iwl_rfi_config_cmd 611 */ 612 RFI_GET_FREQ_TABLE_CMD = 0xc, 613 614 /** 615 * @SYSTEM_FEATURES_CONTROL_CMD: &struct iwl_system_features_control_cmd 616 */ 617 SYSTEM_FEATURES_CONTROL_CMD = 0xd, 618 619 /** 620 * @RFI_DEACTIVATE_NOTIF: &struct iwl_rfi_deactivate_notif 621 */ 622 RFI_DEACTIVATE_NOTIF = 0xff, 623 }; 624 625 #endif /* __iwl_fw_api_commands_h__ */ 626