STRUCT STATION_INFO(9)

๐Ÿ“ฆ version 7.3.1, in nixpkgs unstable

โœจ NAME โœจ

struct station_info(9) โ€” straight from the Kernel API Manual, this is the station information struct: one big glowed-up container for all the deets about a station ๐Ÿ’…โœจ


๐Ÿ“œ SYNOPSIS ๐Ÿ“œ

struct station_info {
    u64 filled;
    u32 connected_time;
    u32 inactive_time;
    u64 assoc_at;
    u64 rx_bytes;
    u64 tx_bytes;
    s8 signal;
    s8 signal_avg;
    u8 chains;
    s8 chain_signal[IEEE80211_MAX_CHAINS];
    s8 chain_signal_avg[IEEE80211_MAX_CHAINS];
    struct rate_info txrate;
    struct rate_info rxrate;
    u32 rx_packets;
    u32 tx_packets;
    u32 tx_retries;
    u32 tx_failed;
    u32 rx_dropped_misc;
    struct sta_bss_parameters bss_param;
    struct nl80211_sta_flag_update sta_flags;
    int generation;
    u32 beacon_loss_count;
    const u8 *assoc_req_ies;
    size_t assoc_req_ies_len;
    s64 t_offset;
    u16 llid;
    u16 plid;
    u8 plink_state;
    u8 connected_to_gate;
    u8 connected_to_as;
    u32 airtime_link_metric;
    enum nl80211_mesh_power_mode local_pm;
    enum nl80211_mesh_power_mode peer_pm;
    enum nl80211_mesh_power_mode nonpeer_pm;
    u32 expected_throughput;
    u16 airtime_weight;
    s8 ack_signal;
    s8 avg_ack_signal;
    struct cfg80211_tid_stats *pertid;
    u64 tx_duration;
    u64 rx_duration;
    u64 rx_beacon;
    u8 rx_beacon_signal_avg;
    u32 rx_mpdu_count;
    u32 fcs_err_count;
    bool mlo_params_valid;
    u8 assoc_link_id;
    u8 mld_addr[ETH_ALEN];
    const u8 *assoc_resp_ies;
    size_t assoc_resp_ies_len;
    u16 valid_links;
    struct link_station_info *links[IEEE80211_MLD_MAX_NUM_LINKS];
};

๐Ÿงฉ Members ๐Ÿงฉ

okay bestie, here's the field-by-field vibe check โ€” every member gets its moment ๐Ÿ‘‘

  • filled โ€” a bitflag made from the bits of enum nl80211_sta_info, and it tells you which values in this struct are relevant for them โœจ
  • connected_time โ€” the time, in secs, since a station was last connected ๐Ÿ•ฐ๏ธ
  • inactive_time โ€” how long it's been since the last station activity (tx/rx), in milliseconds ๐Ÿ˜ด
  • assoc_at โ€” the bootime (ns) of the last association โฑ๏ธ
  • rx_bytes โ€” bytes (size of MPDUs) received from this station ๐Ÿ“ฅ
  • tx_bytes โ€” bytes (size of MPDUs) transmitted to this station ๐Ÿ“ค
  • signal โ€” the signal strength; its type depends on the wiphy's signal_type ๐ŸŒˆ For CFG80211_SIGNAL_TYPE_MBM, the value is expressed in dBm.
  • signal_avg โ€” the average signal strength; its type depends on the wiphy's signal_type ๐ŸŒˆ For CFG80211_SIGNAL_TYPE_MBM, the value is expressed in dBm.
  • chains โ€” a bitmask for the filled values in chain_signal and chain_signal_avg ๐Ÿงฎ
  • chain_signal โ€” per-chain signal strength of the last received packet, in dBm ๐Ÿ“ถ
  • chain_signal_avg โ€” per-chain signal strength average, in dBm ๐Ÿ“Š
  • txrate โ€” the current unicast bitrate from this station ๐Ÿš€
  • rxrate โ€” the current unicast bitrate to this station ๐Ÿ›ฌ
  • rx_packets โ€” packets (MSDUs & MMPDUs) received from this station ๐Ÿ“ฆ
  • tx_packets โ€” packets (MSDUs & MMPDUs) transmitted to this station ๐Ÿ“ฆ
  • tx_retries โ€” cumulative retry counts (MPDUs) ๐Ÿ”
  • tx_failed โ€” number of failed transmissions (MPDUs): retries exceeded, no ACK ๐Ÿ’€
  • rx_dropped_misc โ€” dropped for an un-specified reason ๐Ÿ™ˆ
  • bss_param โ€” current BSS parameters ๐Ÿ›ฐ๏ธ
  • sta_flags โ€” station flags mask & values ๐Ÿšฉ
  • generation โ€” generation number for nl80211 dumps. This number should increase every time the list of stations changes, i.e. when a station is added or removed, so that userspace can tell whether it got a consistent snapshot ๐Ÿ”„
  • beacon_loss_count โ€” number of times the beacon loss event has triggered ๐Ÿ“ก
  • assoc_req_ies โ€” IEs from the (Re)Association Request ๐ŸŽ€ This is used only when in AP mode with drivers that do not use the user space MLME/SME implementation. The information is provided for cfg80211_new_sta calls to notify user space of the IEs.
  • assoc_req_ies_len โ€” length of the assoc_req_ies buffer in octets ๐Ÿ“
  • t_offset โ€” time offset of the station relative to this host โณ
  • llid โ€” mesh local link id ๐Ÿ”—
  • plid โ€” mesh peer link id ๐Ÿค
  • plink_state โ€” mesh peer link state ๐Ÿ•ธ๏ธ
  • connected_to_gate โ€” true if the mesh STA has a path to a mesh gate ๐Ÿšช
  • connected_to_as โ€” true if the mesh STA has a path to an authentication server ๐Ÿ”
  • airtime_link_metric โ€” mesh airtime link metric ๐Ÿ“ถ
  • local_pm โ€” local mesh STA power save mode ๐Ÿ”‹
  • peer_pm โ€” peer mesh STA power save mode ๐Ÿ”‹
  • nonpeer_pm โ€” non-peer mesh STA power save mode ๐Ÿ”‹
  • expected_throughput โ€” expected throughput in kbps (including 802.11 headers) towards this station ๐ŸŒŠ
  • airtime_weight โ€” current airtime scheduling weight โš–๏ธ
  • ack_signal โ€” signal strength (in dBm) of the last ACK frame โœ…
  • avg_ack_signal โ€” average RSSI value of ack packets over the number of MSDUs that have been sent ๐Ÿ“ˆ
  • pertid โ€” per-TID statistics; peep struct cfg80211_tid_stats ๐Ÿ‘€ It uses the last (IEEE80211_NUM_TIDS) index for MSDUs not encapsulated in QoS-MPDUs. Note that this doesn't use the filled bit, but is used if non-NULL.
  • tx_duration โ€” aggregate PPDU duration (usecs) for all the frames to a peer โฑ๏ธ
  • rx_duration โ€” aggregate PPDU duration (usecs) for all the frames from a peer โฑ๏ธ
  • rx_beacon โ€” number of beacons received from this peer ๐Ÿ“ก
  • rx_beacon_signal_avg โ€” signal strength average (in dBm) for beacons received from this peer ๐Ÿ“ถ
  • rx_mpdu_count โ€” number of MPDUs received from this station ๐Ÿงพ
  • fcs_err_count โ€” number of packets (MPDUs) received from this station with an FCS error ๐Ÿšจ This counter should be incremented only when the TA of the received packet with an FCS error matches the peer MAC address.
  • mlo_params_valid โ€” indicates that the assoc_link_id and mld_addr fields are filled by the driver ๐Ÿ’ซ Drivers use this only in cfg80211_new_sta calls when the AP MLD's MLME/SME is offload to driver. Drivers won't fill this information in cfg80211_del_sta_sinfo, get_station and dump_station callbacks.
  • assoc_link_id โ€” indicates the MLO link ID of the AP with which the station completed (re)association ๐Ÿ”— This information is filled for both MLO and non-MLO STA connections when the AP is affiliated with an MLD.
  • mld_addr โ€” for an MLO STA connection, filled with the MLD address of the station ๐Ÿท๏ธ For a non-MLO STA connection, filled with all zeros.
  • assoc_resp_ies โ€” IEs from the (Re)Association Response ๐ŸŽ€ This is used only when in AP mode with drivers that do not use the user space MLME/SME implementation. The information is provided only for the cfg80211_new_sta calls to notify user space of the IEs. Drivers won't fill this information in cfg80211_del_sta_sinfo, get_station and dump_station callbacks. User space needs this information to determine the accepted and rejected affiliated links of the connected station.
  • assoc_resp_ies_len โ€” length of the assoc_resp_ies buffer in octets ๐Ÿ“
  • valid_links โ€” bitmap of valid links, or 0 for non-MLO ๐Ÿงฎ Drivers fill this information in cfg80211_new_sta, cfg80211_del_sta_sinfo, get_station and dump_station callbacks.
  • links โ€” reference to Link sta entries for an MLO STA; all link-specific information is accessed through links[link_id] ๐Ÿ”—

๐Ÿ’ฌ Description ๐Ÿ’ฌ

This is the station information that the driver fills in for get_station and dump_station ๐Ÿซถโœจ

โœจ SEE ALSO โœจ

okay bestie, this is the part of the page where it just lists, like, everything in the wifi universe ๐Ÿ’€ not even kidding, it's giving "the author's entire group chat". Every single one of these is a real page in the kernel docs, and yeah, some of them you're absolutely gonna need. We're going in order, so buckle up, hydration check, let's go ๐ŸŽ€

The mothership source of truth is ./include/net/cfg80211.h โ€” go say hi to it, it's iconic.

  • where it all begins โ€” Kernel file ./include/net/cfg80211.h, plus Introduction(9) and Device registration(9) if you're brand new here ๐Ÿซถ

๐ŸŒˆ the channel / rate / BSS-adjacent lore


๐ŸŽ€ Actions and configuration (the big one, no cap)


๐Ÿฆ‹ Scanning and BSS list handling

  • the hub page โ€” Scanning and BSS list handling(9)
  • SSID + scan info crew โ€” struct cfg80211_ssid(9), struct cfg80211_scan_info(9), struct cfg80211_scan_6ghz_params(9), struct cfg80211_scan_request(9)
  • match sets + sched scan plans โ€” struct cfg80211_match_set(9), struct cfg80211_sched_scan_plan(9), struct cfg80211_bss_select_adjust(9), struct cfg80211_sched_scan_request(9)
  • signal type + informing BSS โ€” enum cfg80211_signal_type(9), struct cfg80211_inform_bss(9), struct cfg80211_bss_ies(9), struct cfg80211_bss(9)
  • getting IEs out of a BSS โ€” ieee80211_bss_get_elem(9), ieee80211_bss_get_ie(9)
  • auth / assoc request squad โ€” 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)
  • deauth / disassoc / IBSS / bss selection โ€” struct cfg80211_deauth_request(9), struct cfg80211_disassoc_request(9), struct cfg80211_ibss_params(9), struct cfg80211_bss_selection(9)
  • connect params + flags โ€” struct cfg80211_connect_params(9), enum cfg80211_connect_params_changed(9), enum wiphy_params_flags(9)
  • PMKSA + packet patterns โ€” struct cfg80211_pmksa(9), struct cfg80211_pkt_pattern(9)
  • wowlan (wake-on-wireless-LAN, she sleeps but stays booked and busy) ๐Ÿ˜ด โ€” struct cfg80211_wowlan_tcp(9), struct cfg80211_wowlan(9)
  • coalesce rules โ€” struct cfg80211_coalesce_rules(9), struct cfg80211_coalesce(9)
  • wowlan net-detect + wakeup โ€” struct cfg80211_wowlan_nd_match(9), struct cfg80211_wowlan_nd_info(9), struct cfg80211_wowlan_wakeup(9)
  • GTK rekey + FT IEs โ€” struct cfg80211_gtk_rekey_data(9), struct cfg80211_update_ft_ies_params(9)
  • mgmt tx params โ€” struct cfg80211_mgmt_tx_params(9)
  • DSCP exception / range + QoS map โ€” struct cfg80211_dscp_exception(9), struct cfg80211_dscp_range(9), struct cfg80211_qos_map(9)

๐Ÿ’œ Neighbor Awareness Networking (NAN) and the auth/fine-timing girls

  • the NAN hub page โ€” Neighbor Awareness Networking (NAN)(9)
  • NAN config & channel bits โ€” struct cfg80211_nan_band_config(9), struct cfg80211_nan_conf(9), struct cfg80211_nan_channel(9)
  • NAN scheduling & peer maps โ€” struct cfg80211_nan_local_sched(9), struct cfg80211_nan_peer_map(9), struct cfg80211_nan_peer_sched(9), enum cfg80211_nan_conf_changes(9)
  • NAN functions โ€” struct cfg80211_nan_func_filter(9), struct cfg80211_nan_func(9)
  • PMK / external auth โ€” struct cfg80211_pmk_conf(9), struct cfg80211_external_auth_params(9)
  • FTM responder stats โ€” struct cfg80211_ftm_responder_stats(9)
  • PMSR (peer measurement โ€” she's measuring, respectfully) ๐Ÿ“ โ€” 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)
  • OWE + mgmt frame regs โ€” struct cfg80211_update_owe_info(9), struct mgmt_frame_regs(9)

๐Ÿ‘‘ driver ops, wiphy flags, and the capability closet

  • the ops table โ€” struct cfg80211_ops(9)
  • wiphy flags + iface combos โ€” enum wiphy_flags(9), struct ieee80211_iface_limit(9), struct ieee80211_iface_combination(9)
  • wowlan support โ€” enum wiphy_wowlan_support_flags(9), struct wiphy_wowlan_support(9), struct wiphy_coalesce_support(9)
  • vendor command flags + opmode โ€” enum wiphy_vendor_command_flags(9), enum wiphy_opmode_flag(9), struct sta_opmode_info(9), struct wiphy_vendor_command(9)
  • iftype ext capab + AKM suites โ€” struct wiphy_iftype_ext_capab(9), cfg80211_get_iftype_ext_capa(9), struct cfg80211_pmsr_capabilities(9), struct wiphy_iftype_akm_suites(9)
  • radio config trilogy โ€” struct wiphy_radio_cfg(9), struct wiphy_radio_freq_range(9), struct wiphy_radio(9)
  • NAN capability bits โ€” enum wiphy_nan_flags(9), struct wiphy_nan_capa(9)

โญ the wiphy itself + her private life (allocation, registration, locking, work)


๐Ÿงš wireless dev + Utility functions


๐ŸŒธ Data path helpers


๐ŸŒˆ Regulatory enforcement infrastructure (+ internal db functions)


๐ŸŽ€ scan done, BSS informing, and MLME events


๐Ÿซถ RFkill integration


๐Ÿ‘‘ Vendor commands


โญ Test mode


๐Ÿ’… connect / roam / disconnect / sta events


๐ŸŒˆ rx mgmt, tx status, CQM, radar, and the notify girlies


okay that's literally the whole SEE ALSO list and it ate, no notes ๐Ÿ’… but bestie we are NOT done โ€” there's more page after this, so don't close the tab, keep scrolling ๐ŸŒธ

okay bestie, deep breath โ€” the cross-ref list does not stop, and we are finishing it properly, every single one, no skipping, no "etc." energy ๐Ÿ’…โœจ

(still here? iconic. keep scrolling babe ๐Ÿซถ)

(the colour-change girlies are having a moment rn ๐ŸŒˆ)

and that's the list, all 64 of them, accounted for, nobody left behind fr fr ๐ŸŽ€


okay and that's genuinely the whole page, bestie โ€” we ate ๐Ÿ“ this one comes from ./include/net, it's the October 2026 edition, and it's filed under struct station_info(9). go forth and consult your cross-refs, you gorgeous nerd, i'm obsessed ๐Ÿ’–โœจ๐Ÿฆ‹

๐Ÿ“ฆ where this page comes from