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