STRUCT CFG80211_CSA_SETTINGS(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– NAME πŸ’–

okay so bestie, welcome to the Kernel API Manual page for struct cfg80211_csa_settings β€” channel switch settings. This is the struct that holds the channel-switch settings, and we are gonna walk through every single field, no skips, no cap. πŸ’…

πŸ¦‹ SYNOPSIS πŸ¦‹

struct cfg80211_csa_settings {
    struct cfg80211_chan_def chandef;
    struct cfg80211_beacon_data beacon_csa;
    const u16 *counter_offsets_beacon;
    const u16 *counter_offsets_presp;
    unsigned int n_counter_offsets_beacon;
    unsigned int n_counter_offsets_presp;
    struct cfg80211_beacon_data beacon_after;
    struct cfg80211_unsol_bcast_probe_resp unsol_bcast_probe_resp;
    bool radar_required;
    bool block_tx;
    u8 count;
    u8 link_id;
};

πŸŽ€ Members πŸŽ€

  • chandef β€” defines the channel to use after the switch. the β€œwhere are we going after this” field, basically. ✨
  • beacon_csa β€” beacon data while performing the switch. it’s the beacon data for the switching moment, and yes it has main character energy. πŸ¦‹
  • counter_offsets_beacon β€” offsets of the counters within the beacon (tail). literally the offsets for the counters inside the beacon (tail). πŸ”₯
  • counter_offsets_presp β€” offsets of the counters within the probe response. same counter-offset situation, but for the probe response. πŸ’«
  • n_counter_offsets_beacon β€” number of csa counters the beacon (tail). it tells you how many csa counters the beacon (tail) is working with. 🌸
  • n_counter_offsets_presp β€” number of csa counters in the probe response. the matching count for the probe response. πŸ“
  • beacon_after β€” beacon data to be used on the new channel. this is the beacon data that comes through on the new channel. πŸŽ€
  • unsol_bcast_probe_resp β€” Unsolicited broadcast probe response parameters. the parameters for the unsolicited broadcast probe response, periodt. πŸ‘‘
  • radar_required β€” whether radar detection is required on the new channel. no guessing here β€” it says whether radar detection is required on the new channel. 🚨
  • block_tx β€” whether transmissions should be blocked while changing. it tells you whether transmissions should be blocked while changing. 😭
  • count β€” number of beacons until switch. the beacons-until-switch count. ⭐
  • link_id β€” defines the link on which channel switch is expected during MLO. and for the non-MLO case: 0. 🫢

🌈 Description 🌈

Used for channel switch. that’s the whole description, bestie β€” used for channel switch. iconic, concise, doing exactly what it says on the tin. πŸ’–

✨ SEE ALSO ✨

okay so bestie, this is the part where they dump LITERALLY every single related page on you 😭 and ngl it's a LOT. but it's giving "the syllabus" β€” every one of these is a real, cited cross-reference, so here they all are, in order, no skips, no cap. 🫢

it all starts at the mama page: the kernel file ./include/net/cfg80211.h, plus the big intro and the device-registration basics:


🌈 the band / cap / iftype era

this is the "what can this radio even do" cluster β€” channels, rates, privacy, HT/VHT/HE/EHT/UHR caps, EDMG, S1G, and all the iftype lookups πŸ’…


πŸŽ€ actions & configuration (the chandef cinematic universe)

this section is a whole moment β€” vif params, keys, chandef everything (valid, usable, DFS, primary, NPCA, DBE 🫠), plus AP settings, station params, SAR, mesh/OCB, and txq params. main character energy fr fr ⭐


πŸ” scanning & BSS list handling

scan requests, sched scan plans, BSS ies, auth/assoc/deauth/disassoc requests, connect params, WoWLAN stuff, and the whole pmksa + qos fam. obsessed with how many of these there are ngl πŸ’€

  • Scanning and BSS list handling(9)
  • 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)
  • struct cfg80211_sched_scan_request(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)

🧚 NAN + PMSR + external auth era

Neighbor Awareness Networking gets a whole little family here, and then it's PMK conf, external auth, FTM responder stats, PMSR (result / peer / request β€” a whole trilogy), OWE updates, and mgmt frame regs 🌸

  • Neighbor Awareness Networking (NAN)(9)
  • 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)
  • 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 section (aka the big one)

struct cfg80211_ops leads, then flags, iface limits/combos, wowlan + coalesce support, vendor command stuff, opmode, ext capab, PMSR capabilities, AKM suites, radio config/freq range/radio, NAN flags + capa, then struct wiphy(9) itself and the whole accessor/lifecycle crew β€” priv, dev, name, new, register, deref, regdom, unregister, free, lock/unlock, the work queue family, the delayed work family, the hrtimer work family, and finally wireless_dev + wdev helpers πŸ’–


πŸ¦‹ utility functions

channel <-> freq <-> khz conversions (there are SO many, it's giving "they really covered every direction"), device channel checks, rate lookups, radiotap iterator, and hdrlen helpers πŸŽ€


🌟 data path helpers

8023 conversions, amsdu checks, tunnel proto, mesh hdr stripping, 8021d classification, and the very iconic element-finding family (match / elem / ie / ext / vendor β€” all of them, iykyk) πŸ”₯


πŸ—ΊοΈ regulatory enforcement infrastructure

the "please don't break the law" section 😌 including the internal regulatory db functions β€” yes, they get called out separately, iconic


πŸ“‘ scan done / BSS inform / MLME notifications

the "tell userspace what happened" cluster β€” scan completion, BSS frames, bssid gen, element inheritance, profile merge, get/ref/put/unlink bss, mlme mgmt tx/rx, michael mic failure, ibss joined, new peer candidate. chef's kiss 🀌


🎧 RFkill, vendor commands & test mode


πŸ’œ connect / roam / channel / station event notify squad

the "hey userspace, something happened" hall of fame β€” connect done/bss/result/timeout, roamed, port authorized, disconnected, ready-on-channel, remain-on-channel expired, tx mgmt expired, tid stats alloc + release, new sta, del sta, conn failed, rx mgmt family, tx status family, control port, CQM notifies, radar + CAC, gtk rekey, pmksa candidate, and the spurious/unexpected frame warnings πŸ™ˆ

bestie that's the entire list, promise β€” every last reference, nothing cut πŸ’… and there's still more page coming, so don't go anywhere 🫢

…and the cross-reference section keeps going, bestie, because of course it does 😭 this list is genuinely iconic in length β€” here's every single one of them, no skips, no cap:


That's the whole list, every last one, nothing dropped πŸ’… bookmark it, tab through it, live your truth.

And that's a wrap on the page, bestie πŸŽ€ this one lives in ./include/net, dated October 2026, and it's the struct cfg80...csa_settings(9) entry in the Kernel API Manual β€” go forth and channel-switch responsibly βœ¨πŸ¦‹

πŸ“¦ where this page comes from