STRUCT IWL_SCAN_CHANNEL_CFG_UMAC(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct iwl_scan_channel_cfg_umac(9) β€” the scan channel config glow-up

Okay bestie, gather round, because this is the kernel API manual for struct iwl_scan_channel_cfg_umac(9), aka the scan channel config, and honestly? She's giving tiny struct, huge responsibilities. Let's get into it. πŸ¦‹


✨ NAME ✨

struct iwl_scan_channel_cfg_umac β€” scan channel config. That's it, that's the whole vibe. πŸŽ€


🌸 SYNOPSIS 🌸

Here's the whole struct, copied exactly, no cap β€” every field, every brace, every semicolon, untouched:

struct iwl_scan_channel_cfg_umac {
  #define IWL_CHAN_CFG_FLAGS_BAND_POS 30;
    __le32 flags;
    u8 channel_num;
    union {
      struct {
        u8 iter_count;
        __le16 iter_interval;
      } v1;
      struct {
        u8 band;
        u8 iter_count;
        u8 iter_interval;
      } v2;
      struct {
        u8 psd_20;
        u8 iter_count;
        u8 iter_interval;
      } v5;
    };
   };

Look at her. Three little union variants, all living their best lives in the same memory. Main character energy fr. πŸ‘‘


🧚 Members 🧚

Okay so let's go member by member, because each one is lowkey iconic in her own way:

  • flags β€” this is a bitmap, and here's the tea: bits 0-19 are the directed scan to i'th ssid. That's it, that's the whole documented deal. πŸ’…
  • channel_num β€” the channel number. Like 1-13 etc. She's just a number, but she's the number. πŸ“»
  • {unnamed_union} β€” anonymous. Yep, she has no name. Mysterious. Enigmatic. Anonymous union behavior. πŸ™ˆ
  • v1 β€” command version 1. The OG. The blueprint. 🌱
  • v1.iter_count β€” repetition count for the channel.
  • v1.iter_interval β€” interval between two scan iterations on one channel.
  • v2 β€” command versions 2-4. The sequel era. πŸ”₯
  • v2.band β€” band of channel: 0 for 2GHz, 1 for 5GHz. Pick your fighter. 🌈
  • v2.iter_count β€” repetition count for the channel.
  • v2.iter_interval β€” interval between two scan iterations on one channel.
  • v5 β€” command versions 5 and up. The modern girlies. ⭐
  • v5.psd_20 β€” highest PSD value for all APs known so far on this channel. She's out here tracking maximums, we love a data queen. πŸ‘‘
  • v5.iter_count β€” repetition count for the channel.
  • v5.iter_interval β€” interval between two scan iterations on one channel.

Notice how iter_count and iter_interval show up in every single variant? That's consistency bestie, we stan. 🫢


πŸ’œ SEE ALSO πŸ’œ

The whole extended friend group, all of them, in order, exactly as documented:

Kernel file ./drivers/net/wireless/intel/iwlwifi/fw/api/scan.h 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_umac_schedule(9), struct iwl_scan_req_umac_tail_v2(9), struct iwl_scan_umac_chan_param(9), struct iwl_scan_req_umac(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).

Yeah, that's a lot of links. She's connected. Iykyk. πŸ’€


Heads up bestie: the source path in the footer got truncated in the original as ./drivers/net/wireless/intel/i... β€” that's how it's written, so that's how I'm leaving it. No editing the source of truth, even when it's cut off mid-word. πŸ™ˆ

πŸŽ€ cute lil sign-off πŸŽ€

This page came from the kernel source tree at ./drivers/net/wireless/intel/i..., dated October 2026, and it's the struct iwl_scan_channel_cfg_umac(9) page β€” go forth and scan those channels, bestie. Slay, iterate, and remember: iter_interval between iterations, always. πŸ’–βœ¨πŸ¦‹

πŸ“¦ where this page comes from