STRUCT CFG80211_SCHED_SCAN_REQUEST(9)

๐Ÿ“ฆ version 7.3.1, in nixpkgs unstable

๐Ÿ’– NAME ๐Ÿ’–

okay so you opened the struct cfg80211_sched_scan_request(9) page in the Kernel API Manual and you need the whole struct tea? say less bestie, this is the scheduled scan request description and we are going through every single field like the main characters they are ๐Ÿ’…โœจ


โœจ SYNOPSIS โœจ

struct cfg80211_sched_scan_request {
    u64 reqid;
    struct cfg80211_ssid *ssids;
    int n_ssids;
    u32 n_channels;
    const u8 *ie;
    size_t ie_len;
    u32 flags;
    struct cfg80211_match_set *match_sets;
    int n_match_sets;
    s32 min_rssi_thold;
    u32 delay;
    struct cfg80211_sched_scan_plan *scan_plans;
    int n_scan_plans;
    u8 mac_addr[ETH_ALEN];
    u8 mac_addr_mask[ETH_ALEN];
    bool relative_rssi_set;
    s8 relative_rssi;
    struct cfg80211_bss_select_adjust rssi_adjust;
    struct wiphy *wiphy;
    struct net_device *dev;
    unsigned long scan_start;
    bool report_results;
    struct rcu_head rcu_head;
    u32 owner_nlportid;
    bool nl_owner_dead;
    struct list_head list;
    struct ieee80211_channel *channels[];
};

๐ŸŽ€ Members ๐ŸŽ€

  • reqid โ€” identifies this request, like a little name tag for the whole vibe ๐Ÿท๏ธ
  • ssids โ€” SSIDs to scan for (passed in the probe_reqs in active scans) ๐Ÿ‘€
  • n_ssids โ€” number of SSIDs, bestie ๐Ÿ”ข
  • n_channels โ€” total number of channels to scan ๐Ÿ“ก
  • ie โ€” optional information element(s) to add into Probe Request, or NULL ๐Ÿซถ
  • ie_len โ€” length of ie in octets ๐Ÿ“
  • flags โ€” control flags from enum nl80211_scan_flags ๐Ÿšฉ
  • match_sets โ€” sets of parameters to be matched for a scan result entry to be considered valid and to be passed to the host (others are filtered out). If omitted, all results are passed. basically the bouncer for scan results ๐Ÿ’…
  • n_match_sets โ€” number of match sets ๐Ÿ”ข
  • min_rssi_thold โ€” for drivers only supporting a single threshold, this contains the minimum over all matchsets ๐Ÿ“ถ
  • delay โ€” delay in seconds to use before starting the first scan cycle. The driver may ignore this parameter and start immediately (or at any other time), if this feature is not supported. no cap, it might just do its own thing ๐Ÿ˜ญ
  • scan_plans โ€” scan plans to be executed in this scheduled scan. Lowest index must be executed first. order matters, periodt ๐Ÿ“‹
  • n_scan_plans โ€” number of scan plans, at least 1 โ˜๏ธ
  • mac_addr โ€” MAC address used with randomisation ๐ŸŽฒ
  • mac_addr_mask โ€” MAC address mask used with randomisation, bits that are 0 in the mask should be randomised, bits that are 1 should be taken from the mac_addr ๐ŸŽญ
  • relative_rssi_set โ€” Indicates whether relative_rssi is set or not โœ…
  • relative_rssi โ€” Relative RSSI threshold in dB to restrict scan result reporting in connected state to cases where a matching BSS is determined to have better or slightly worse RSSI than the current connected BSS. The relative RSSI threshold values are ignored in disconnected state. connected-state only, iykyk ๐Ÿ“ถ
  • rssi_adjust โ€” delta dB of RSSI preference to be given to the BSSs that belong to the specified band while deciding whether a better BSS is reported using relative_rssi. If delta is a negative number, the BSSs that belong to the specified band will be penalized by delta dB in relative comparisons. lowkey a whole scoring system ๐Ÿงฎ
  • wiphy โ€” the wiphy this was for ๐ŸŒˆ
  • dev โ€” the interface ๐Ÿ”Œ
  • scan_start โ€” start time of the scheduled scan โฐ
  • report_results โ€” indicates that results were reported for this request ๐Ÿ“ฌ
  • rcu_head โ€” RCU callback used to free the struct ๐Ÿงน
  • owner_nlportid โ€” netlink portid of owner (if this request is owned by a particular socket) ๐Ÿ”‘
  • nl_owner_dead โ€” netlink owner socket was closed โ€” this request be freed ๐Ÿ’€
  • list โ€” for keeping list of requests ๐Ÿ“
  • channels โ€” channels to scan ๐Ÿ“ถ

๐Ÿ’– SEE ALSO ๐Ÿ’–

okay so this part is basically the group chat member list of the cfg80211 universe ๐Ÿ’… like everyone this struct ever dated, roomed with, or borrowed a charger from. it all lives in the kernel file ./include/net/cfg80211.h, and honestly? the roster is long. buckle up bestie ๐ŸŽ€


๐ŸŒธ the core starting points


๐Ÿ”ฅ Actions and configuration(9)

the "setting things up" era of the doc set โœจ


๐Ÿฆ‹ Scanning and BSS list handling(9)

the literal neighborhood of the struct this whole page is about, so yeah, pay attention ๐Ÿ™ˆ

  • struct cfg80211_ssid(9), struct cfg80211_scan_info(9), struct cfg80211_scan_6ghz_params(9), struct cfg80211_scan_request(9), struct cfg80211_match_set(9), struct cfg80211_sched_scan_plan(9), struct cfg80211_bss_select_adjust(9), enum cfg80211_signal_type(9), struct cfg80211_inform_bss(9), struct cfg80211_bss_ies(9), struct cfg80211_bss(9), ieee80211_bss_get_elem(9), ieee80211_bss_get_ie(9)
  • struct cfg80211_auth_request(9), struct cfg80211_assoc_link(9), struct cfg80211_ml_reconf_req(9), enum cfg80211_assoc_req_flags(9), struct cfg80211_assoc_request(9), struct cfg80211_deauth_request(9), struct cfg80211_disassoc_request(9), struct cfg80211_ibss_params(9), struct cfg80211_bss_selection(9), struct cfg80211_connect_params(9), enum cfg80211_connect_params_changed(9)
  • enum wiphy_params_flags(9), struct cfg80211_pmksa(9), struct cfg80211_pkt_pattern(9), struct cfg80211_wowlan_tcp(9), struct cfg80211_wowlan(9), struct cfg80211_coalesce_rules(9), struct cfg80211_coalesce(9), struct cfg80211_wowlan_nd_match(9), struct cfg80211_wowlan_nd_info(9), struct cfg80211_wowlan_wakeup(9), struct cfg80211_gtk_rekey_data(9), struct cfg80211_update_ft_ies_params(9), struct cfg80211_mgmt_tx_params(9), struct cfg80211_dscp_exception(9), struct cfg80211_dscp_range(9), struct cfg80211_qos_map(9)

๐Ÿงš Neighbor Awareness Networking (NAN)(9)

the NAN girlies get their own corner ๐Ÿ’œ

  • struct cfg80211_nan_band_config(9), struct cfg80211_nan_conf(9), struct cfg80211_nan_channel(9), struct cfg80211_nan_local_sched(9), struct cfg80211_nan_peer_map(9), struct cfg80211_nan_peer_sched(9), enum cfg80211_nan_conf_changes(9), struct cfg80211_nan_func_filter(9), struct cfg80211_nan_func(9)
  • then the neighbors who aren't NAN but vibe adjacent: struct cfg80211_pmk_conf(9), struct cfg80211_external_auth_params(9), struct cfg80211_ftm_responder_stats(9), struct cfg80211_pmsr_ftm_result(9), struct cfg80211_pmsr_result(9), struct cfg80211_pmsr_ftm_request_peer(9), struct cfg80211_pmsr_request_peer(9), struct cfg80211_pmsr_request(9), struct cfg80211_update_owe_info(9), struct mgmt_frame_regs(9)

๐Ÿ‘‘ the wiphy-verse (yes it's its own universe)


โญ Utility functions(9)

the little helpers that carry the whole operation ๐Ÿซถ


๐ŸŒˆ Data path helpers(9)


๐Ÿ’€ Regulatory enforcement infrastructure(9)

the vibe check of the spectrum, honestly ๐Ÿ”ฅ


๐Ÿ“ the long tail of scanning, BSS and connect notifs


๐ŸŽ€ and the rest of the notifications (they didn't fit above, ok)


ok and that's the entire friend group ๐Ÿ˜ญ like yes, all of them, nobody got left out, and no we're not done yet โ€” there's still more page coming, so don't go anywhere bestie ๐Ÿ’…โœจ

okay so the SEE ALSO list keeps going, and honestly? she's thriving ๐Ÿ’… buckle up bestie, we're finishing the roll call:

and that's the whole squad ๐Ÿซถ like, sixty-four cross-references, we literally ate and left zero crumbs โœจ


okay that's a wrap on the entire page, bestie ๐ŸŽ€ this one came straight out of ./include/net and it's dated October 2026 โ€” yes, the future, she's ahead of her time ๐Ÿ’… the footer still spells the title as struct cfg80...scan_request(9) (truncated and iconic, no notes โœจ). go read your structs, hydrate, and remember: sched scan never sleeps ๐Ÿ˜ญ ๐Ÿฆ‹๐Ÿ‘‘

๐Ÿ“ฆ where this page comes from