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