ENUM IWL_LEGACY_CMDS(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– NAME πŸ’–

enum iwl_legacy_cmds β€” the legacy group command IDs, bestie. That's it, that's the whole vibe. This is straight out of the Kernel API Manual, section 9, and it's basically the master list of the old-school command IDs that the iwlwifi fam still speaks. 🫢


✨ SYNOPSIS ✨

Okay so here's the actual declaration, and yes it's a long one β€” 91 members, no cap. Every single one is listed below, exactly as written, because we do not skip entries in this house πŸ’…

enum iwl_legacy_cmds {
    UCODE_ALIVE_NTFY ,
    REPLY_ERROR ,
    ECHO_CMD ,
    INIT_COMPLETE_NOTIF ,
    PHY_CONTEXT_CMD ,
    DBG_CFG ,
    SCAN_ITERATION_COMPLETE_UMAC ,
    SCAN_CFG_CMD ,
    SCAN_REQ_UMAC ,
    SCAN_ABORT_UMAC ,
    SCAN_COMPLETE_UMAC ,
    BA_WINDOW_STATUS_NOTIFICATION_ID ,
    ADD_STA_KEY ,
    ADD_STA ,
    REMOVE_STA ,
    TX_CMD ,
    TXPATH_FLUSH ,
    MGMT_MCAST_KEY ,
    SCD_QUEUE_CFG ,
    WEP_KEY ,
    SHARED_MEM_CFG ,
    TDLS_CHANNEL_SWITCH_CMD ,
    TDLS_CHANNEL_SWITCH_NOTIFICATION ,
    TDLS_CONFIG_CMD ,
    MAC_CONTEXT_CMD ,
    TIME_EVENT_CMD ,
    TIME_EVENT_NOTIFICATION ,
    BINDING_CONTEXT_CMD ,
    TIME_QUOTA_CMD ,
    NON_QOS_TX_COUNTER_CMD ,
    LEDS_CMD ,
    LQ_CMD ,
    FW_PAGING_BLOCK_CMD ,
    SCAN_OFFLOAD_REQUEST_CMD ,
    SCAN_OFFLOAD_ABORT_CMD ,
    HOT_SPOT_CMD ,
    WNM_80211V_TIMING_MEASUREMENT_NOTIFICATION ,
    WNM_80211V_TIMING_MEASUREMENT_CONFIRM_NOTIFICATION ,
    SCAN_OFFLOAD_COMPLETE ,
    SCAN_OFFLOAD_UPDATE_PROFILES_CMD ,
    SCAN_START_NOTIFICATION_UMAC ,
    MATCH_FOUND_NOTIFICATION ,
    SCAN_ITERATION_COMPLETE ,
    PHY_CONFIGURATION_CMD ,
    CALIB_RES_NOTIF_PHY_DB ,
    PHY_DB_CMD ,
    POWER_TABLE_CMD ,
    PSM_UAPSD_AP_MISBEHAVING_NOTIFICATION ,
    LTR_CONFIG ,
    REPLY_THERMAL_MNG_BACKOFF ,
    NVM_ACCESS_CMD ,
    BEACON_NOTIFICATION ,
    BEACON_TEMPLATE_CMD ,
    TX_ANT_CONFIGURATION_CMD ,
    STATISTICS_CMD ,
    STATISTICS_NOTIFICATION ,
    EOSP_NOTIFICATION ,
    REDUCE_TX_POWER_CMD ,
    MISSED_BEACONS_NOTIFICATION ,
    MAC_PM_POWER_TABLE ,
    MFUART_LOAD_NOTIFICATION ,
    RSS_CONFIG_CMD ,
    REPLY_RX_PHY_CMD ,
    REPLY_RX_MPDU_CMD ,
    BAR_FRAME_RELEASE ,
    FRAME_RELEASE ,
    BA_NOTIF ,
    MCC_UPDATE_CMD ,
    MCC_CHUB_UPDATE_CMD ,
    MARKER_CMD ,
    BT_PROFILE_NOTIFICATION ,
    BT_CONFIG ,
    BT_COEX_UPDATE_REDUCED_TXP ,
    BT_COEX_CI ,
    REPLY_SF_CFG_CMD ,
    REPLY_BEACON_FILTERING_CMD ,
    DTS_MEASUREMENT_NOTIFICATION ,
    DEBUG_HOST_COMMAND ,
    LDBG_CONFIG_CMD ,
    DEBUG_LOG_MSG ,
    MCAST_FILTER_CMD ,
    D3_CONFIG_CMD ,
    PROT_OFFLOAD_CONFIG_CMD ,
    D0I3_END_CMD ,
    WOWLAN_PATTERNS ,
    WOWLAN_CONFIGURATION ,
    WOWLAN_TSC_RSC_PARAM ,
    WOWLAN_TKIP_PARAM ,
    WOWLAN_KEK_KCK_MATERIAL ,
    WOWLAN_GET_STATUSES ,
    SCAN_OFFLOAD_PROFILES_QUERY_CMD

};

Lowkey obsessed with how this enum just keeps going 😭 like girl, we get it, you have commands. SCAN_* shows up so many times it's giving main character energy, and WNM_80211V_TIMING_MEASUREMENT_CONFIRM_NOTIFICATION is literally the longest name I've ever typed with a straight face πŸ’€ Respect though β€” every one of these is a real, load-bearing member of the enum, so treat the list like the sacred text it is.

Heads up: these are the legacy group command IDs. The name says it right there β€” <italic>legacy</italic> β€” so don't go assuming this is the shiny new hotness. πŸŽ€

That's part 1, and there's more coming β€” don't go anywhere 🌸

✨ Constants ✨

okay bestie, this is the big one β€” the actual glossary of command IDs. every single one, no skipping, because half of these are literally just "here's the struct it uses" and you will need them for cross-referencing later. grab a drink πŸ“

  • UCODE_ALIVE_NTFY β€” the alive data from the firmware, exactly as described in struct iwl_alive_ntf_v3 or struct iwl_alive_ntf_v7. it's giving "i'm awake, i promise" πŸ’–
  • REPLY_ERROR β€” deliberately causes an error in the firmware, purely for testing purposes. yes, on purpose. no, don't ship it πŸ™ˆ
  • ECHO_CMD β€” you send data to the device and it hands it right back, immediately. a little echo, a little vibe check πŸ”
  • INIT_COMPLETE_NOTIF β€” the notification that says initialization is complete. we love a finished setup ✨
  • PHY_CONTEXT_CMD β€” add, modify or remove a PHY context, using struct iwl_phy_context_cmd or struct iwl_phy_context_cmd_v1.
  • DBG_CFG β€” the debug configuration command.
  • SCAN_ITERATION_COMPLETE_UMAC β€” firmware telling you a scan iteration completed, using struct iwl_umac_scan_iter_complete_notif.
  • SCAN_CFG_CMD β€” uses struct iwl_scan_config_v1, struct iwl_scan_config_v2 or struct iwl_scan_config.
  • SCAN_REQ_UMAC β€” uses struct iwl_scan_req_umac.
  • SCAN_ABORT_UMAC β€” uses struct iwl_umac_scan_abort.
  • SCAN_COMPLETE_UMAC β€” uses struct iwl_umac_scan_complete.
  • BA_WINDOW_STATUS_NOTIFICATION_ID β€” uses struct iwl_ba_window_status_notif.
  • ADD_STA_KEY β€” struct iwl_mvm_add_sta_key_cmd_v1 or struct iwl_mvm_add_sta_key_cmd.
  • ADD_STA β€” struct iwl_mvm_add_sta_cmd or struct iwl_mvm_add_sta_cmd_v7.
  • REMOVE_STA β€” struct iwl_mvm_rm_sta_cmd. bye bestie πŸ‘‹
  • TX_CMD β€” uses struct iwl_tx_cmd_v6 or struct iwl_tx_cmd_v9 or struct iwl_tx_cmd, with the response coming back in struct iwl_tx_resp or struct iwl_tx_resp_v3.
  • TXPATH_FLUSH β€” struct iwl_tx_path_flush_cmd, response in struct iwl_tx_path_flush_cmd_rsp. flush it, periodt 🚽
  • MGMT_MCAST_KEY β€” struct iwl_mvm_mgmt_mcast_key_cmd or struct iwl_mvm_mgmt_mcast_key_cmd_v1.
  • SCD_QUEUE_CFG β€” struct iwl_scd_txq_cfg_cmd for older hardware, and struct iwl_tx_queue_cfg_cmd with struct iwl_tx_queue_cfg_rsp for the newer (22000) hardware.
  • WEP_KEY β€” uses struct iwl_mvm_wep_key_cmd.
  • SHARED_MEM_CFG β€” retrieves the shared memory configuration, with the response in struct iwl_shared_mem_cfg.
  • TDLS_CHANNEL_SWITCH_CMD β€” uses struct iwl_tdls_channel_switch_cmd.
  • TDLS_CHANNEL_SWITCH_NOTIFICATION β€” uses struct iwl_tdls_channel_switch_notif.
  • TDLS_CONFIG_CMD β€” struct iwl_tdls_config_cmd, response in struct iwl_tdls_config_res.
  • MAC_CONTEXT_CMD β€” struct iwl_mac_ctx_cmd.
  • TIME_EVENT_CMD β€” struct iwl_time_event_cmd, response in struct iwl_time_event_resp.
  • TIME_EVENT_NOTIFICATION β€” struct iwl_time_event_notif.
  • BINDING_CONTEXT_CMD β€” struct iwl_binding_cmd or struct iwl_binding_cmd_v1.
  • TIME_QUOTA_CMD β€” struct iwl_time_quota_cmd.
  • NON_QOS_TX_COUNTER_CMD β€” the command is struct iwl_nonqos_seq_query_cmd.
  • LEDS_CMD β€” the command is struct iwl_led_cmd. blinky blinky πŸŽ€
  • LQ_CMD β€” using struct iwl_lq_cmd.
  • FW_PAGING_BLOCK_CMD β€” struct iwl_fw_paging_cmd.
  • SCAN_OFFLOAD_REQUEST_CMD β€” uses struct iwl_scan_req_lmac.
  • SCAN_OFFLOAD_ABORT_CMD β€” aborts the scan, and that's it. no further contents, that's the whole thing.
  • HOT_SPOT_CMD β€” uses struct iwl_hs20_roc_req.

  • WNM_80211V_TIMING_MEASUREMENT_NOTIFICATION β€” the Time Sync measurement notification for TM/FTM. it gets sent on receipt of the respective WNM action frame for the TM protocol, or the public action frame for the FTM protocol, from the peer device, along with the additional meta data specified in struct iwl_time_msmt_notify.
  • WNM_80211V_TIMING_MEASUREMENT_CONFIRM_NOTIFICATION β€” the Time Sync measurement confirmation notification for TM/FTM. sent on receipt of an Ack from the peer for a previously Tx'ed TM/FTM action frame, along with the additional meta data specified in struct iwl_time_msmt_cfm_notify.
  • SCAN_OFFLOAD_COMPLETE β€” notification, struct iwl_periodic_scan_complete.
  • SCAN_OFFLOAD_UPDATE_PROFILES_CMD β€” updates the scan offload (scheduled scan) profiles, blocklist, etc.
  • SCAN_START_NOTIFICATION_UMAC β€” uses struct iwl_umac_scan_start.
  • MATCH_FOUND_NOTIFICATION β€” a scan match was found. found it, bestie πŸ”
  • SCAN_ITERATION_COMPLETE β€” uses struct iwl_lmac_scan_complete_notif.
  • PHY_CONFIGURATION_CMD β€” struct iwl_phy_cfg_cmd_v1 or struct iwl_phy_cfg_cmd_v3.
  • CALIB_RES_NOTIF_PHY_DB β€” struct iwl_calib_res_notif_phy_db.
  • PHY_DB_CMD β€” struct iwl_phy_db_cmd.
  • POWER_TABLE_CMD β€” struct iwl_device_power_cmd.
  • PSM_UAPSD_AP_MISBEHAVING_NOTIFICATION β€” struct iwl_uapsd_misbehaving_ap_notif. yes the AP is misbehaving, we're calling it out πŸ“’
  • LTR_CONFIG β€” struct iwl_ltr_config_cmd.
  • REPLY_THERMAL_MNG_BACKOFF β€” the thermal throttling command. it's hot in here πŸ”₯
  • NVM_ACCESS_CMD β€” using struct iwl_nvm_access_cmd.
  • BEACON_NOTIFICATION β€” struct iwl_extended_beacon_notif.
  • BEACON_TEMPLATE_CMD β€” uses one of struct iwl_mac_beacon_cmd_v6, struct iwl_mac_beacon_cmd_v7 or struct iwl_mac_beacon_cmd, depending on the device version.
  • TX_ANT_CONFIGURATION_CMD β€” struct iwl_tx_ant_cfg_cmd.
  • STATISTICS_CMD β€” one of struct iwl_statistics_cmd, struct iwl_notif_statistics_v11, struct iwl_notif_statistics_v10, struct iwl_notif_statistics, struct iwl_statistics_operational_ntfy_ver_14.
  • STATISTICS_NOTIFICATION β€” one of struct iwl_notif_statistics_v10, struct iwl_notif_statistics_v11, struct iwl_notif_statistics, struct iwl_statistics_operational_ntfy_ver_14, struct iwl_statistics_operational_ntfy. yes, that's the list exactly as written, don't come for me πŸ’…
  • EOSP_NOTIFICATION β€” notifies that a service period ended, struct iwl_mvm_eosp_notification.
  • REDUCE_TX_POWER_CMD β€” struct iwl_dev_tx_power_cmd.
  • MISSED_BEACONS_NOTIFICATION β€” struct iwl_missed_beacons_notif_v4.
  • MAC_PM_POWER_TABLE β€” using struct iwl_mac_power_cmd.
  • MFUART_LOAD_NOTIFICATION β€” struct iwl_mfuart_load_notif.
  • RSS_CONFIG_CMD β€” struct iwl_rss_config_cmd.
  • REPLY_RX_PHY_CMD β€” struct iwl_rx_phy_info.
  • REPLY_RX_MPDU_CMD β€” struct iwl_rx_mpdu_res_start or struct iwl_rx_mpdu_desc.
  • BAR_FRAME_RELEASE β€” frame release from the BAR notification, used for multi-TID BAR (previously the BAR frame itself was reported instead). uses struct iwl_bar_frame_release.
  • FRAME_RELEASE β€” frame release (reorder helper) notification, uses struct iwl_frame_release.
  • BA_NOTIF β€” the BlockAck notification, uses struct iwl_compressed_ba_notif or struct iwl_mvm_ba_notif depending on the HW.
  • MCC_UPDATE_CMD β€” using struct iwl_mcc_update_cmd.
  • MCC_CHUB_UPDATE_CMD β€” using struct iwl_mcc_chub_notif.
  • MARKER_CMD β€” the trace marker command, uses struct iwl_marker with struct iwl_marker_rsp.
  • BT_PROFILE_NOTIFICATION β€” struct iwl_bt_coex_prof_old_notif.
  • BT_CONFIG β€” struct iwl_bt_coex_cmd.
  • BT_COEX_UPDATE_REDUCED_TXP β€” struct iwl_bt_coex_reduced_txp_update_cmd.
  • BT_COEX_CI β€” struct iwl_bt_coex_ci_cmd.
  • REPLY_SF_CFG_CMD β€” struct iwl_sf_cfg_cmd.
  • REPLY_BEACON_FILTERING_CMD β€” struct iwl_beacon_filter_cmd.

  • DTS_MEASUREMENT_NOTIFICATION β€” struct iwl_dts_measurement_notif_v1 or struct iwl_dts_measurement_notif.
  • DEBUG_HOST_COMMAND β€” struct iwl_dhc_cmd.
  • LDBG_CONFIG_CMD β€” configures continuous trace recording.
  • DEBUG_LOG_MSG β€” debugging log data from the firmware.
  • MCAST_FILTER_CMD β€” struct iwl_mcast_filter_cmd.
  • D3_CONFIG_CMD β€” struct iwl_d3_manager_config.
  • PROT_OFFLOAD_CONFIG_CMD β€” depending on the firmware, uses one of struct iwl_proto_offload_cmd_v1, struct iwl_proto_offload_cmd_v2, struct iwl_proto_offload_cmd_v3_small, struct iwl_proto_offload_cmd_v3_large.
  • D0I3_END_CMD β€” ends the D0i3/D3 state. no command data, it just ends it ✌️
  • WOWLAN_PATTERNS β€” struct iwl_wowlan_patterns_cmd.
  • WOWLAN_CONFIGURATION β€” struct iwl_wowlan_config_cmd.
  • WOWLAN_TSC_RSC_PARAM β€” struct iwl_wowlan_rsc_tsc_params_cmd_ver_2, struct iwl_wowlan_rsc_tsc_params_cmd.
  • WOWLAN_TKIP_PARAM β€” struct iwl_wowlan_tkip_params_cmd.
  • WOWLAN_KEK_KCK_MATERIAL β€” struct iwl_wowlan_kek_kck_material_cmd_v2, struct iwl_wowlan_kek_kck_material_cmd_v3 or struct iwl_wowlan_kek_kck_material_cmd_v4.
  • WOWLAN_GET_STATUSES β€” the response comes back in struct iwl_wowlan_status_v6 or struct iwl_wowlan_status_v7.
  • SCAN_OFFLOAD_PROFILES_QUERY_CMD β€” no command data, and the response is struct iwl_scan_offload_profiles_query_v1.
ngl that was a lot of constants, but you ate that. every single one, iykyk 🫢

🌈 SEE ALSO 🌈

the lore continues, bestie β€” go read these next:

  • Kernel file ./drivers/net/wireless/intel/iwlwifi/fw/api/commands.h, enum iwl_mvm_command_groups(9), enum iwl_system_subcmd_ids(9), enum iwl_statistics_subcmd_ids(9)

and that's the whole page!! thank you for coming to my ted talk πŸ’– this one's pulled from ./drivers/net/wireless/intel/i... and it's dated October 2026, sitting at version enum iwl_legacy_cmds(9) β€” go forth and slay your firmware debugging, bestie πŸ‘‘βœ¨

πŸ“¦ where this page comes from