STRUCT IWL_SCAN_REQ_UMAC(9)
π struct iwl_scan_req_umac β the scan request command bestie!! β¨
okay so this is the struct iwl_scan_req_umac manual page from the Kernel API Manual, and ngl it's giving "firmware scan command realness" π like this is the struct you send when you want the UMAC firmware to go find some networks for you. iconic behavior honestly. let me walk you through it π«Ά
πΈ SYNOPSIS πΈ
like, here's the whole literal struct, no cap, every field exactly as it is:
struct iwl_scan_req_umac {
__le32 flags;
__le32 uid;
__le32 ooc_priority;
__le16 general_flags;
u8 reserved;
u8 scan_start_mac_id;
union {
struct {
u8 extended_dwell;
u8 active_dwell;
u8 passive_dwell;
u8 fragmented_dwell;
__le32 max_out_time;
__le32 suspend_time;
__le32 scan_priority;
struct iwl_scan_umac_chan_param channel;
u8 data[];
} v1;
struct {
u8 extended_dwell;
u8 active_dwell;
u8 passive_dwell;
u8 fragmented_dwell;
__le32 max_out_time[SCAN_TWO_LMACS];
__le32 suspend_time[SCAN_TWO_LMACS];
__le32 scan_priority;
struct iwl_scan_umac_chan_param channel;
u8 data[];
} v6;
struct {
u8 active_dwell;
u8 passive_dwell;
u8 fragmented_dwell;
u8 adwell_default_n_aps;
u8 adwell_default_n_aps_social;
u8 reserved3;
__le16 adwell_max_budget;
__le32 max_out_time[SCAN_TWO_LMACS];
__le32 suspend_time[SCAN_TWO_LMACS];
__le32 scan_priority;
struct iwl_scan_umac_chan_param channel;
u8 data[];
} v7;
struct {
u8 active_dwell[SCAN_TWO_LMACS];
u8 reserved2;
u8 adwell_default_n_aps;
u8 adwell_default_n_aps_social;
u8 general_flags2;
__le16 adwell_max_budget;
__le32 max_out_time[SCAN_TWO_LMACS];
__le32 suspend_time[SCAN_TWO_LMACS];
__le32 scan_priority;
u8 passive_dwell[SCAN_TWO_LMACS];
u8 num_of_fragments[SCAN_TWO_LMACS];
struct iwl_scan_umac_chan_param channel;
u8 data[];
} v8;
struct {
u8 active_dwell[SCAN_TWO_LMACS];
u8 adwell_default_hb_n_aps;
u8 adwell_default_lb_n_aps;
u8 adwell_default_n_aps_social;
u8 general_flags2;
__le16 adwell_max_budget;
__le32 max_out_time[SCAN_TWO_LMACS];
__le32 suspend_time[SCAN_TWO_LMACS];
__le32 scan_priority;
u8 passive_dwell[SCAN_TWO_LMACS];
u8 num_of_fragments[SCAN_TWO_LMACS];
struct iwl_scan_umac_chan_param channel;
u8 data[];
} v9;
};
};
the way this thing has FIVE union members for different firmware versionsβ¦ it's giving evolution of a main character tbh π¦ v1, v6, v7, v8, v9 all stacked in one anonymous union like a lil squad π
π the MEMBERS (iykyk) π
flagsβ it's anenum iwl_umac_scan_flags, slay β¨uidβ the scan id, specificallyenum iwl_umac_scan_uid_offsetsπooc_priorityβ out of channel priority, which isenum iwl_scan_priorityπ₯general_flagsβenum iwl_umac_scan_general_flagsπΈreservedβ literally reserved, leave it alone bestie πscan_start_mac_idβ report the scan start TSF time according to this mac's TSF π{unnamed_union}β anonymous, mysterious, lowkey main character energy πv1β version 1 command data π
β¨ v1 details (the OG) β¨
v1.extended_dwellβ dwell time for channels1,6and11πv1.active_dwellβ dwell time for active scan per LMAC πv1.passive_dwellβ dwell time for passive scan per LMAC π§v1.fragmented_dwellβ dwell time for fragmented passive scan βv1.max_out_timeβ max out of serving channel time, per LMAC β for CDB there are 2 LMACs bestie, not me forgetting that πv1.suspend_timeβ max suspend time, per LMAC β again, for CDB there are 2 LMACs π«Άv1.scan_priorityβ scan internal prioritization,enum iwl_scan_priorityπv1.channelβ it's astruct iwl_scan_umac_chan_paramπv1.dataβstruct iwl_scan_channel_cfg_umacandstruct iwl_scan_req_umac_tailπ₯v6β version 6 command data, the glow-up continues π¦v7β version 7 command data β¨
π« v7 lil extras π«
v7.adwell_default_n_apsβ for adaptive dwell, the default number of APs per channel πv7.adwell_default_n_aps_socialβ for adaptive dwell, the default number of APs per social (1,6,11) channel πΈv7.adwell_max_budgetβ for adaptive dwell, the maximal budget of TU to be added to total scan time πv8β version 8 command data π
π v8 lil extras π
v8.general_flags2βenum iwl_umac_scan_general_flags2π§v8.num_of_fragmentsβ Number of fragments needed for full coverage per band. Relevant only for fragmented scan. fr fr note that βv9β version 9 command data, the latest icon π«Ά
π₯ SEE ALSO π₯
okay so here's the whole friend group of related structs and enums, all from the kernel file ./drivers/net/wireless/intel/iwlwifi/fw/api/scan.h β go check them out bestie, they ate:
- enum
iwl_scan_subcmd_ids(9) - struct
iwl_ssid_ie(9) - struct
iwl_scan_offload_blocklist(9) - struct
iwl_scan_offload_profile(9) - struct
iwl_scan_offload_profile_cfg_data(9) - struct
iwl_scan_offload_profile_cfg_v1(9) - struct
iwl_scan_offload_profile_cfg(9) - struct
iwl_scan_schedule_lmac(9) - struct
iwl_scan_req_tx_cmd(9) - struct
iwl_scan_channel_cfg_lmac(9) - struct
iwl_scan_probe_segment(9) - struct
iwl_scan_probe_req_v1(9) - struct
iwl_scan_probe_req(9) - struct
iwl_scan_channel_opt(9) - enum
iwl_mvm_lmac_scan_flags(9) - struct
iwl_scan_req_lmac(9) - struct
iwl_scan_results_notif(9) - struct
iwl_lmac_scan_complete_notif(9) - struct
iwl_periodic_scan_complete(9) - struct
iwl_scan_dwell(9) - struct
iwl_scan_config_v1(9) - struct
iwl_scan_config_v2(9) - struct
iwl_scan_config(9) - enum
iwl_umac_scan_flags(9) - enum
iwl_umac_scan_general_flags2(9) - enum
iwl_umac_scan_general_flags_v2(9) - enum
iwl_umac_scan_general_params_flags2(9) - struct
iwl_scan_channel_cfg_umac(9) - struct
iwl_scan_umac_schedule(9) - struct
iwl_scan_req_umac_tail_v2(9) - struct
iwl_scan_umac_chan_param(9) - struct
iwl_scan_probe_params_v3(9) - struct
iwl_scan_probe_params_v4(9) - struct
iwl_scan_channel_params_v4(9) - struct
iwl_scan_channel_params_v7(9) - struct
iwl_scan_channel_params_v8(9) - struct
iwl_scan_general_params_v11(9) - struct
iwl_scan_periodic_parms_v1(9) - struct
iwl_scan_req_params_v12(9) - struct
iwl_scan_req_params_v17(9) - struct
iwl_scan_req_params_v18(9) - struct
iwl_scan_req_umac_v12(9) - struct
iwl_scan_req_umac_v17(9) - struct
iwl_scan_req_umac_v18(9) - struct
iwl_umac_scan_abort(9) - enum
iwl_umac_scan_abort_status(9) - struct
iwl_umac_scan_start(9) - struct
iwl_umac_scan_complete(9) - struct
iwl_scan_offload_profile_match_v1(9) - struct
iwl_scan_offload_profiles_query_v1(9) - struct
iwl_scan_offload_profile_match(9) - struct
iwl_scan_offload_match_info(9) - struct
iwl_umac_scan_iter_complete_notif(9) - struct
iwl_umac_scan_channel_survey_notif(9)
okay that's the whole page bestie, every single field and reference preserved, you're welcome π this came from ./drivers/net/wireless/intel/i... and the manual is dated October 2026, struct iwl_scan_req_umac(9) periodt π go slay your scans β¨π¦π
π¦ 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