STRUCT CFG80211_ROAM_INFO(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ NAME ✨

struct cfg80211_roam_info β€” driver initiated roaming information πŸ’…

(okay so this is from the Kernel API Manual, section 9, and it's literally the whole struct, no cap)


πŸ¦‹ SYNOPSIS πŸ¦‹

struct cfg80211_roam_info {
    const u8 *req_ie;
    size_t req_ie_len;
    const u8 *resp_ie;
    size_t resp_ie_len;
    struct cfg80211_fils_resp_params fils;
    const u8 *ap_mld_addr;
    u16 valid_links;
    struct {
      const u8 *addr;
      const u8 *bssid;
      struct ieee80211_channel *channel;
      struct cfg80211_bss *bss;
    } links[IEEE80211_MLD_MAX_NUM_LINKS];
 };

Like, that's the whole vibe of the struct right there πŸ‘‘ β€” a little stack of pointers, lengths, and a links array, all crammed together. Iconic.


🌸 MEMBERS 🌸

Bestie, here's the field-by-field breakdown, in order, no skipping πŸ™ˆ

  • req_ie β€” the association request IEs (and yeah, this one might be NULL, it's giving optional πŸ’€)
  • req_ie_len β€” how long those association request IEs are
  • resp_ie β€” the association response IEs (may be NULL too)
  • resp_ie_len β€” the length of the assoc response IEs
  • fils β€” the FILS related roaming information πŸŽ€
  • ap_mld_addr β€” for MLO roaming, this is the MLD address of the new AP. otherwise it's NULL.
  • valid_links β€” for MLO roaming, the BIT mask of the new valid links is set. otherwise it's zero.
  • links β€” for MLO roaming, contains new link info for the valid links set in valid_links. for non-MLO roaming, links[0] contains the new AP info. lowkey the main character of this struct ✨
    • links.addr β€” for MLO roaming, the MAC address of the STA link. otherwise NULL.
    • links.bssid β€” for MLO roaming, the MAC address of the new AP link. for non-MLO roaming, links[0].bssid points to the BSSID of the new AP. may be NULL if links.bss is set.
    • links.channel β€” the channel of the new AP. that's it, that's the field 🌈
    • links.bss β€” for MLO roaming, the entry of the new bss to which the STA link got roamed. for non-MLO roaming, links[0].bss points to the entry of the bss to which the STA got roamed (may be NULL if links.bssid is set).
heads up bestie πŸ’œ β€” links.bssid and links.bss are like, the same info in two forms, so one of them can chill as NULL while the other does the talking. don't set both and expect it to be cute.

fr fr that's part one. more coming, don't go anywhere 🫢

πŸ’« SEE ALSO πŸ’«

okay bestie, sit down, hydrate, because this list is long β€” like, genuinely one of the longest SEE ALSOs you'll ever meet, and every single one of these is a real page you can go read next. it's giving "the entire kernel wireless cinematic universe" 🍿 so let's go through them in order, no skipping, no cap.

πŸ—‚οΈ the file itself + the intro + the whole capability zoo

okay that's the capability clique done, moving on πŸšΆβ€β™€οΈ


πŸ› οΈ the "actions and configuration" era (aka the config girlies)

periodt, configuration section handled πŸ’…


πŸ“‘ scanning & BSS list handling (the gossip girls of the BSS world)

  • 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 + the auth / PMKSA / PMSR girlies

  • 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)

ngl the NAN girls are lowkey underrated 🫢


πŸ‘‘ the wiphy extended universe (main character energy)

the way this list has like 50 wiphy-adjacent pages… obsessed πŸ”₯


🧰 utility functions (the helpers who actually run the group chat)


πŸš€ data path helpers (where the actual packets live, fr fr)


πŸ“œ regulatory enforcement infrastructure (respect the law bestie πŸ’€)

πŸ’Ύ internal regulatory db functions


πŸ“¨ BSS + scan notifications (the "hey, something happened" texts)


πŸ“΄ RFkill integration (the "girl, turn it off and on again" squad)


πŸ›οΈ vendor commands (custom, but make it branded)


πŸ§ͺ test mode


πŸ’Œ connect / disconnect / done notifications


πŸ“Ά mgmt rx/tx, control port, cqm + the rest of the notifier crew

okay that's the whole cross-reference roster, and there's still more page coming so don't close the tab yet πŸ‘€


aaaand that's a wrap on the whole page, bestie πŸŽ€ tysm for reading all three parts. this little masterpiece lives in ./include/net, it's dated October 2026, and the page itself is struct cfg80211_roam_info(9) β€” go forth and roam responsibly πŸ’–

πŸ“¦ where this page comes from