ENUM IWL_LEGACY_CMDS(9)
π 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 instruct iwl_alive_ntf_v3orstruct 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, usingstruct iwl_phy_context_cmdorstruct iwl_phy_context_cmd_v1.DBG_CFGβ the debug configuration command.SCAN_ITERATION_COMPLETE_UMACβ firmware telling you a scan iteration completed, usingstruct iwl_umac_scan_iter_complete_notif.SCAN_CFG_CMDβ usesstruct iwl_scan_config_v1,struct iwl_scan_config_v2orstruct iwl_scan_config.SCAN_REQ_UMACβ usesstruct iwl_scan_req_umac.SCAN_ABORT_UMACβ usesstruct iwl_umac_scan_abort.SCAN_COMPLETE_UMACβ usesstruct iwl_umac_scan_complete.BA_WINDOW_STATUS_NOTIFICATION_IDβ usesstruct iwl_ba_window_status_notif.ADD_STA_KEYβstruct iwl_mvm_add_sta_key_cmd_v1orstruct iwl_mvm_add_sta_key_cmd.ADD_STAβstruct iwl_mvm_add_sta_cmdorstruct iwl_mvm_add_sta_cmd_v7.REMOVE_STAβstruct iwl_mvm_rm_sta_cmd. bye bestie πTX_CMDβ usesstruct iwl_tx_cmd_v6orstruct iwl_tx_cmd_v9orstruct iwl_tx_cmd, with the response coming back instruct iwl_tx_resporstruct iwl_tx_resp_v3.TXPATH_FLUSHβstruct iwl_tx_path_flush_cmd, response instruct iwl_tx_path_flush_cmd_rsp. flush it, periodt π½MGMT_MCAST_KEYβstruct iwl_mvm_mgmt_mcast_key_cmdorstruct iwl_mvm_mgmt_mcast_key_cmd_v1.SCD_QUEUE_CFGβstruct iwl_scd_txq_cfg_cmdfor older hardware, andstruct iwl_tx_queue_cfg_cmdwithstruct iwl_tx_queue_cfg_rspfor the newer (22000) hardware.WEP_KEYβ usesstruct iwl_mvm_wep_key_cmd.SHARED_MEM_CFGβ retrieves the shared memory configuration, with the response instruct iwl_shared_mem_cfg.TDLS_CHANNEL_SWITCH_CMDβ usesstruct iwl_tdls_channel_switch_cmd.TDLS_CHANNEL_SWITCH_NOTIFICATIONβ usesstruct iwl_tdls_channel_switch_notif.TDLS_CONFIG_CMDβstruct iwl_tdls_config_cmd, response instruct iwl_tdls_config_res.MAC_CONTEXT_CMDβstruct iwl_mac_ctx_cmd.TIME_EVENT_CMDβstruct iwl_time_event_cmd, response instruct iwl_time_event_resp.TIME_EVENT_NOTIFICATIONβstruct iwl_time_event_notif.BINDING_CONTEXT_CMDβstruct iwl_binding_cmdorstruct iwl_binding_cmd_v1.TIME_QUOTA_CMDβstruct iwl_time_quota_cmd.NON_QOS_TX_COUNTER_CMDβ the command isstruct iwl_nonqos_seq_query_cmd.LEDS_CMDβ the command isstruct iwl_led_cmd. blinky blinky πLQ_CMDβ usingstruct iwl_lq_cmd.FW_PAGING_BLOCK_CMDβstruct iwl_fw_paging_cmd.SCAN_OFFLOAD_REQUEST_CMDβ usesstruct 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β usesstruct 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 instruct 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 instruct 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β usesstruct iwl_umac_scan_start.MATCH_FOUND_NOTIFICATIONβ a scan match was found. found it, bestie πSCAN_ITERATION_COMPLETEβ usesstruct iwl_lmac_scan_complete_notif.PHY_CONFIGURATION_CMDβstruct iwl_phy_cfg_cmd_v1orstruct 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β usingstruct iwl_nvm_access_cmd.BEACON_NOTIFICATIONβstruct iwl_extended_beacon_notif.BEACON_TEMPLATE_CMDβ uses one ofstruct iwl_mac_beacon_cmd_v6,struct iwl_mac_beacon_cmd_v7orstruct iwl_mac_beacon_cmd, depending on the device version.TX_ANT_CONFIGURATION_CMDβstruct iwl_tx_ant_cfg_cmd.STATISTICS_CMDβ one ofstruct 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 ofstruct 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β usingstruct 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_startorstruct 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). usesstruct iwl_bar_frame_release.FRAME_RELEASEβ frame release (reorder helper) notification, usesstruct iwl_frame_release.BA_NOTIFβ the BlockAck notification, usesstruct iwl_compressed_ba_notiforstruct iwl_mvm_ba_notifdepending on the HW.MCC_UPDATE_CMDβ usingstruct iwl_mcc_update_cmd.MCC_CHUB_UPDATE_CMDβ usingstruct iwl_mcc_chub_notif.MARKER_CMDβ the trace marker command, usesstruct iwl_markerwithstruct 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_v1orstruct 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 ofstruct 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_v3orstruct iwl_wowlan_kek_kck_material_cmd_v4.WOWLAN_GET_STATUSESβ the response comes back instruct iwl_wowlan_status_v6orstruct iwl_wowlan_status_v7.SCAN_OFFLOAD_PROFILES_QUERY_CMDβ no command data, and the response isstruct 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, enumiwl_mvm_command_groups(9), enumiwl_system_subcmd_ids(9), enumiwl_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
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms