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