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 * @SCAN_OFFLOAD_COMPLETE: 270 * notification, &struct iwl_periodic_scan_complete 271 */ 272 SCAN_OFFLOAD_COMPLETE = 0x6D, 273 274 /** 275 * @SCAN_OFFLOAD_UPDATE_PROFILES_CMD: 276 * update scan offload (scheduled scan) profiles/blocklist/etc. 277 */ 278 SCAN_OFFLOAD_UPDATE_PROFILES_CMD = 0x6E, 279 280 /** 281 * @MATCH_FOUND_NOTIFICATION: scan match found 282 */ 283 MATCH_FOUND_NOTIFICATION = 0xd9, 284 285 /** 286 * @SCAN_ITERATION_COMPLETE: 287 * uses &struct iwl_lmac_scan_complete_notif 288 */ 289 SCAN_ITERATION_COMPLETE = 0xe7, 290 291 /* Phy */ 292 /** 293 * @PHY_CONFIGURATION_CMD: &struct iwl_phy_cfg_cmd_v1 or &struct iwl_phy_cfg_cmd_v3 294 */ 295 PHY_CONFIGURATION_CMD = 0x6a, 296 297 /** 298 * @CALIB_RES_NOTIF_PHY_DB: &struct iwl_calib_res_notif_phy_db 299 */ 300 CALIB_RES_NOTIF_PHY_DB = 0x6b, 301 302 /** 303 * @PHY_DB_CMD: &struct iwl_phy_db_cmd 304 */ 305 PHY_DB_CMD = 0x6c, 306 307 /** 308 * @POWER_TABLE_CMD: &struct iwl_device_power_cmd 309 */ 310 POWER_TABLE_CMD = 0x77, 311 312 /** 313 * @PSM_UAPSD_AP_MISBEHAVING_NOTIFICATION: 314 * &struct iwl_uapsd_misbehaving_ap_notif 315 */ 316 PSM_UAPSD_AP_MISBEHAVING_NOTIFICATION = 0x78, 317 318 /** 319 * @LTR_CONFIG: &struct iwl_ltr_config_cmd 320 */ 321 LTR_CONFIG = 0xee, 322 323 /** 324 * @REPLY_THERMAL_MNG_BACKOFF: 325 * Thermal throttling command 326 */ 327 REPLY_THERMAL_MNG_BACKOFF = 0x7e, 328 329 /** 330 * @NVM_ACCESS_CMD: using &struct iwl_nvm_access_cmd 331 */ 332 NVM_ACCESS_CMD = 0x88, 333 334 /** 335 * @BEACON_NOTIFICATION: &struct iwl_extended_beacon_notif 336 */ 337 BEACON_NOTIFICATION = 0x90, 338 339 /** 340 * @BEACON_TEMPLATE_CMD: 341 * Uses one of &struct iwl_mac_beacon_cmd_v6, 342 * &struct iwl_mac_beacon_cmd_v7 or &struct iwl_mac_beacon_cmd 343 * depending on the device version. 344 */ 345 BEACON_TEMPLATE_CMD = 0x91, 346 /** 347 * @TX_ANT_CONFIGURATION_CMD: &struct iwl_tx_ant_cfg_cmd 348 */ 349 TX_ANT_CONFIGURATION_CMD = 0x98, 350 351 /** 352 * @STATISTICS_CMD: 353 * one of &struct iwl_statistics_cmd, 354 * &struct iwl_notif_statistics_v11, 355 * &struct iwl_notif_statistics_v10, 356 * &struct iwl_notif_statistics, 357 * &struct iwl_statistics_operational_ntfy_ver_14 358 */ 359 STATISTICS_CMD = 0x9c, 360 361 /** 362 * @STATISTICS_NOTIFICATION: 363 * one of &struct iwl_notif_statistics_v10, 364 * &struct iwl_notif_statistics_v11, 365 * &struct iwl_notif_statistic, 366 * &struct iwl_statistics_operational_ntfy_ver_14 367 * &struct iwl_statistics_operational_ntfy 368 */ 369 STATISTICS_NOTIFICATION = 0x9d, 370 371 /** 372 * @EOSP_NOTIFICATION: 373 * Notify that a service period ended, 374 * &struct iwl_mvm_eosp_notification 375 */ 376 EOSP_NOTIFICATION = 0x9e, 377 378 /** 379 * @REDUCE_TX_POWER_CMD: 380 * &struct iwl_dev_tx_power_cmd 381 */ 382 REDUCE_TX_POWER_CMD = 0x9f, 383 384 /** 385 * @MISSED_BEACONS_NOTIFICATION: &struct iwl_missed_beacons_notif 386 */ 387 MISSED_BEACONS_NOTIFICATION = 0xa2, 388 389 /** 390 * @MAC_PM_POWER_TABLE: using &struct iwl_mac_power_cmd 391 */ 392 MAC_PM_POWER_TABLE = 0xa9, 393 394 /** 395 * @MFUART_LOAD_NOTIFICATION: &struct iwl_mfuart_load_notif 396 */ 397 MFUART_LOAD_NOTIFICATION = 0xb1, 398 399 /** 400 * @RSS_CONFIG_CMD: &struct iwl_rss_config_cmd 401 */ 402 RSS_CONFIG_CMD = 0xb3, 403 404 /** 405 * @REPLY_RX_PHY_CMD: &struct iwl_rx_phy_info 406 */ 407 REPLY_RX_PHY_CMD = 0xc0, 408 409 /** 410 * @REPLY_RX_MPDU_CMD: 411 * &struct iwl_rx_mpdu_res_start or &struct iwl_rx_mpdu_desc 412 */ 413 REPLY_RX_MPDU_CMD = 0xc1, 414 415 /** 416 * @BAR_FRAME_RELEASE: Frame release from BAR notification, used for 417 * multi-TID BAR (previously, the BAR frame itself was reported 418 * instead). Uses &struct iwl_bar_frame_release. 419 */ 420 BAR_FRAME_RELEASE = 0xc2, 421 422 /** 423 * @FRAME_RELEASE: 424 * Frame release (reorder helper) notification, uses 425 * &struct iwl_frame_release 426 */ 427 FRAME_RELEASE = 0xc3, 428 429 /** 430 * @BA_NOTIF: 431 * BlockAck notification, uses &struct iwl_mvm_compressed_ba_notif 432 * or &struct iwl_mvm_ba_notif depending on the HW 433 */ 434 BA_NOTIF = 0xc5, 435 436 /* Location Aware Regulatory */ 437 /** 438 * @MCC_UPDATE_CMD: using &struct iwl_mcc_update_cmd 439 */ 440 MCC_UPDATE_CMD = 0xc8, 441 442 /** 443 * @MCC_CHUB_UPDATE_CMD: using &struct iwl_mcc_chub_notif 444 */ 445 MCC_CHUB_UPDATE_CMD = 0xc9, 446 447 /** 448 * @MARKER_CMD: trace marker command, uses &struct iwl_mvm_marker 449 * with &struct iwl_mvm_marker_rsp 450 */ 451 MARKER_CMD = 0xcb, 452 453 /** 454 * @BT_PROFILE_NOTIFICATION: &struct iwl_bt_coex_profile_notif 455 */ 456 BT_PROFILE_NOTIFICATION = 0xce, 457 458 /** 459 * @BT_CONFIG: &struct iwl_bt_coex_cmd 460 */ 461 BT_CONFIG = 0x9b, 462 463 /** 464 * @BT_COEX_UPDATE_REDUCED_TXP: 465 * &struct iwl_bt_coex_reduced_txp_update_cmd 466 */ 467 BT_COEX_UPDATE_REDUCED_TXP = 0x5c, 468 469 /** 470 * @BT_COEX_CI: &struct iwl_bt_coex_ci_cmd 471 */ 472 BT_COEX_CI = 0x5d, 473 474 /** 475 * @REPLY_SF_CFG_CMD: &struct iwl_sf_cfg_cmd 476 */ 477 REPLY_SF_CFG_CMD = 0xd1, 478 /** 479 * @REPLY_BEACON_FILTERING_CMD: &struct iwl_beacon_filter_cmd 480 */ 481 REPLY_BEACON_FILTERING_CMD = 0xd2, 482 483 /** 484 * @DTS_MEASUREMENT_NOTIFICATION: 485 * &struct iwl_dts_measurement_notif_v1 or 486 * &struct iwl_dts_measurement_notif_v2 487 */ 488 DTS_MEASUREMENT_NOTIFICATION = 0xdd, 489 490 /** 491 * @LDBG_CONFIG_CMD: configure continuous trace recording 492 */ 493 LDBG_CONFIG_CMD = 0xf6, 494 495 /** 496 * @DEBUG_LOG_MSG: Debugging log data from firmware 497 */ 498 DEBUG_LOG_MSG = 0xf7, 499 500 /** 501 * @MCAST_FILTER_CMD: &struct iwl_mcast_filter_cmd 502 */ 503 MCAST_FILTER_CMD = 0xd0, 504 505 /** 506 * @D3_CONFIG_CMD: &struct iwl_d3_manager_config 507 */ 508 D3_CONFIG_CMD = 0xd3, 509 510 /** 511 * @PROT_OFFLOAD_CONFIG_CMD: Depending on firmware, uses one of 512 * &struct iwl_proto_offload_cmd_v1, &struct iwl_proto_offload_cmd_v2, 513 * &struct iwl_proto_offload_cmd_v3_small, 514 * &struct iwl_proto_offload_cmd_v3_large 515 */ 516 PROT_OFFLOAD_CONFIG_CMD = 0xd4, 517 518 /** 519 * @OFFLOADS_QUERY_CMD: 520 * No data in command, response in &struct iwl_wowlan_status 521 */ 522 OFFLOADS_QUERY_CMD = 0xd5, 523 524 /** 525 * @D0I3_END_CMD: End D0i3/D3 state, no command data 526 */ 527 D0I3_END_CMD = 0xed, 528 529 /** 530 * @WOWLAN_PATTERNS: &struct iwl_wowlan_patterns_cmd 531 */ 532 WOWLAN_PATTERNS = 0xe0, 533 534 /** 535 * @WOWLAN_CONFIGURATION: &struct iwl_wowlan_config_cmd 536 */ 537 WOWLAN_CONFIGURATION = 0xe1, 538 539 /** 540 * @WOWLAN_TSC_RSC_PARAM: &struct iwl_wowlan_rsc_tsc_params_cmd_v4, 541 * &struct iwl_wowlan_rsc_tsc_params_cmd 542 */ 543 WOWLAN_TSC_RSC_PARAM = 0xe2, 544 545 /** 546 * @WOWLAN_TKIP_PARAM: &struct iwl_wowlan_tkip_params_cmd 547 */ 548 WOWLAN_TKIP_PARAM = 0xe3, 549 550 /** 551 * @WOWLAN_KEK_KCK_MATERIAL: &struct iwl_wowlan_kek_kck_material_cmd 552 */ 553 WOWLAN_KEK_KCK_MATERIAL = 0xe4, 554 555 /** 556 * @WOWLAN_GET_STATUSES: response in &struct iwl_wowlan_status 557 */ 558 WOWLAN_GET_STATUSES = 0xe5, 559 560 /** 561 * @SCAN_OFFLOAD_PROFILES_QUERY_CMD: 562 * No command data, response is &struct iwl_scan_offload_profiles_query 563 */ 564 SCAN_OFFLOAD_PROFILES_QUERY_CMD = 0x56, 565 }; 566 567 /** 568 * enum iwl_system_subcmd_ids - system group command IDs 569 */ 570 enum iwl_system_subcmd_ids { 571 /** 572 * @SHARED_MEM_CFG_CMD: 573 * response in &struct iwl_shared_mem_cfg or 574 * &struct iwl_shared_mem_cfg_v2 575 */ 576 SHARED_MEM_CFG_CMD = 0x0, 577 578 /** 579 * @SOC_CONFIGURATION_CMD: &struct iwl_soc_configuration_cmd 580 */ 581 SOC_CONFIGURATION_CMD = 0x01, 582 583 /** 584 * @INIT_EXTENDED_CFG_CMD: &struct iwl_init_extended_cfg_cmd 585 */ 586 INIT_EXTENDED_CFG_CMD = 0x03, 587 588 /** 589 * @FW_ERROR_RECOVERY_CMD: &struct iwl_fw_error_recovery_cmd 590 */ 591 FW_ERROR_RECOVERY_CMD = 0x7, 592 593 /** 594 * @RFI_CONFIG_CMD: &struct iwl_rfi_config_cmd 595 */ 596 RFI_CONFIG_CMD = 0xb, 597 598 /** 599 * @RFI_GET_FREQ_TABLE_CMD: &struct iwl_rfi_config_cmd 600 */ 601 RFI_GET_FREQ_TABLE_CMD = 0xc, 602 603 /** 604 * @SYSTEM_FEATURES_CONTROL_CMD: &struct iwl_system_features_control_cmd 605 */ 606 SYSTEM_FEATURES_CONTROL_CMD = 0xd, 607 608 /** 609 * @RFI_DEACTIVATE_NOTIF: &struct iwl_rfi_deactivate_notif 610 */ 611 RFI_DEACTIVATE_NOTIF = 0xff, 612 }; 613 614 #endif /* __iwl_fw_api_commands_h__ */ 615