STRUCT IEEE80211_STA(9)
πΈ NAME πΈ
struct ieee80211_sta β station table entry
straight from the struct ieee80211_sta(9) Kernel API Manual page, bestie π
β¨ SYNOPSIS β¨
okay so here's the whole struct, no cap β every field exactly as written:
struct ieee80211_sta {
u8 addr[ETH_ALEN];
u16 aid;
u16 max_rx_aggregation_subframes;
bool wme;
u8 uapsd_queues;
u8 max_sp;
struct ieee80211_sta_rates *rates;
bool tdls;
bool tdls_initiator;
bool mfp;
bool mlo;
bool spp_amsdu;
u8 max_amsdu_subframes;
u16 eml_cap;
struct ieee80211_sta_aggregates *cur;
bool support_p2p_ps;
struct ieee80211_txq *txq[IEEE80211_NUM_TIDS + 1];
u16 valid_links;
u16 ext_mld_capa_ops;
bool epp_peer;
struct ieee80211_link_sta deflink;
struct ieee80211_link_sta *link[IEEE80211_MLD_MAX_NUM_LINKS];
struct ieee80211_sta *nmi;
struct ieee80211_nan_peer_sched *nan_sched;
u8 drv_priv[];
};
π Members π
addrβ MAC address π«Άaidβ the AID we assigned to the station if we're an APmax_rx_aggregation_subframesβ the maximal amount of frames in a single AMPDU that this station is allowed to transmit to us. Can be modified by driver. πwmeβ indicates whether the STA supports QoS/WME (if local devices does, otherwise always false)uapsd_queuesβ bitmap of queues configured for uapsd. Only valid ifwmeis supported. The bits order is like inIEEE80211_WMM_IE_STA_QOSINFO_AC_*. β¨max_spβ max Service Period. Only valid ifwmeis supported.ratesβ rate control selection tabletdlsβ indicates whether the STA is a TDLS peertdls_initiatorβ indicates the STA is an initiator of the TDLS link. Only valid if the STA is a TDLS peer in the first place.mfpβ indicates whether the STA uses management frame protection or not.mloβ indicates whether the STA is MLO station.spp_amsduβ indicates whether the STA uses SPP A-MSDU or not.max_amsdu_subframesβ indicates the maximal number of MSDUs in a single A-MSDU. Taken from the Extended Capabilities element.0means unlimited. π₯eml_capβ EML capabilities of this MLO stationcurβ currently valid data as aggregated from the active links For non MLO STA it will point to thedeflinkdata. For MLO STAieee80211_sta_recalc_aggregatesmust be called to update it.support_p2p_psβ indicates whether the STA supports P2P PS mechanism or not.txqβ per-TID data TX queues; note that the last entry (IEEE80211_NUM_TIDS) is used for non-data framesvalid_linksβ bitmap of valid links, or0for non-MLOext_mld_capa_opsβ the MLD's extended MLD capabilities and operationsepp_peerβ indicates that the peer is an EPP peer.deflinkβ This holds the default link STA information, for non MLO STA all link specific STA information is accessed throughdeflinkor throughlink[0]which points to address ofdeflink. For MLO Link STA the first added link STA will point todeflink.linkβ reference to Link Sta entries. For Non MLO STA, except 1st link, i.elink[0]all links would be assigned toNULLby default and would access link information viadeflinkorlink[0]. For MLO STA, first link STA being added will point its link pointer todeflinkaddress and remaining would be allocated and the address would be assigned tolink[link_id]wherelink_idis the id assigned by the AP.nmiβ For NDI stations, pointer to the NMI station of the peer.nan_schedβ NAN peer schedule for this station. Valid only for NMI stations.drv_privβ data area for driver use, will always be aligned tosizeof(void, size is determined in hw information.
π Description π
A station table entry represents a station we are possibly communicating with. Since stations are RCU-managed in mac80211, any ieee80211_sta pointer you get access to must either be protected by rcu_read_lock explicitly or implicitly, or you must take good care to not use such a pointer after a call to your sta_remove callback that removed it. This also represents the MLD STA in case of MLO association and holds pointers to various link STA's. π
lowkey important: that RCU/sta_remove bit is not a vibe suggestion, bestie β it's the rule π
π NOTE π
fr fr: currently only tracked for AP STAs.
β¨ SEE ALSO β¨
okay so this is the part where the manpage goes βand hereβs literally everyone else in the mac80211 cinematic universeβ π« and honestly? the guest list ate. itβs giving extended-universe group chat, and every single cross-ref is invited. no skips, no cuts, no βyou can guess the restβ energy β weβre listing all of them, periodt.
I split the list into snackable bullets because the original wall-of-text vibe was lowkey doing too much π same order, same exact names, just with better energy. Kernel file ./include/net/mac80211.h and Introduction(9) are first because theyβre basically the opening credits π¬
- batch 1 β the opening credits π¬ β
Kernel file ./include/net/mac80211.h,Introduction(9),Calling mac80211 from interrupts(9),Warning(9),Frame format(9),mac80211 workqueue(9),mac80211 software tx queueing(9),HW timestamping(9),enum ieee80211_max_queues(9),enum ieee80211_ac_numbers(9) - batch 2 β queue params and chanctx besties π¦ β
struct ieee80211_tx_queue_params(9),enum ieee80211_chanctx_change(9),struct ieee80211_chan_req(9),struct ieee80211_chanctx_conf(9),enum ieee80211_chanctx_switch_mode(9),struct ieee80211_vif_chanctx_switch(9),enum ieee80211_bss_change(9),enum ieee80211_event_type(9),enum ieee80211_rssi_event_data(9),struct ieee80211_rssi_event(9) - batch 3 β mlme event girlies + nan cameos πΈ β
enum ieee80211_mlme_event_data(9),enum ieee80211_mlme_event_status(9),struct ieee80211_mlme_event(9),struct ieee80211_ba_event(9),struct ieee80211_event(9),struct ieee80211_mu_group_data(9),struct ieee80211_ftm_responder_params(9),struct ieee80211_fils_discovery(9),struct ieee80211_parsed_tpe(9),struct ieee80211_bss_npca_params(9) - batch 4 β bss_conf and the nan peer map crew β¨ β
struct ieee80211_bss_conf(9),struct ieee80211_nan_channel(9),struct ieee80211_nan_peer_map(9),struct ieee80211_nan_peer_sched(9),enum mac80211_tx_info_flags(9),enum mac80211_tx_control_flags(9),enum mac80211_tx_status_flags(9),enum mac80211_rate_control_flags(9),struct ieee80211_tx_rate(9),struct ieee80211_tx_info(9) - batch 5 β tx/rx status lore π‘ β
struct ieee80211_tx_status(9),struct ieee80211_scan_ies(9),ieee80211_tx_info_clear_status(9),enum mac80211_rx_flags(9),enum mac80211_rx_encoding_flags(9),struct ieee80211_rx_status(9),enum ieee80211_conf_flags(9),enum ieee80211_conf_changed(9),enum ieee80211_smps_mode(9),struct ieee80211_conf(9) - batch 6 β vif flags, offload flags, and ttlm energy π β
struct ieee80211_channel_switch(9),enum ieee80211_vif_flags(9),enum ieee80211_offload_flags(9),struct ieee80211_eml_params(9),struct ieee80211_nan_sched_cfg(9),struct ieee80211_vif_cfg(9),struct ieee80211_neg_ttlm(9),enum ieee80211_neg_ttlm_res(9),struct ieee80211_vif(9),ieee80211_vif_usable_links(9) - batch 7 β vif helper functions + key conf squad π β
ieee80211_vif_is_mld(9),ieee80211_vif_link_active(9),wdev_to_ieee80211_vif(9),ieee80211_vif_to_wdev(9),enum ieee80211_key_flags(9),struct ieee80211_key_conf(9),struct ieee80211_key_seq(9),enum set_key_cmd(9),enum ieee80211_sta_state(9),enum ieee80211_sta_rx_bandwidth(9) - batch 8 β sta rates, txq, hw, and scan request π β
struct ieee80211_sta_rates(9),struct ieee80211_sta_txpwr(9),struct ieee80211_sta_aggregates(9),struct ieee80211_link_sta(9),enum sta_notify_cmd(9),struct ieee80211_tx_control(9),struct ieee80211_txq(9),enum ieee80211_hw_flags(9),struct ieee80211_hw(9),struct ieee80211_scan_request(9) - batch 9 β tdls params, hw macros, and feature pages π§ β
struct ieee80211_tdls_ch_sw_params(9),wiphy_to_ieee80211_hw(9),SET_IEEE80211_DEV(9),SET_IEEE80211_PERM_ADDR(9),ieee80211_free_txskb(9),ieee80211_purge_tx_queue(9),Hardware crypto acceleration(9),Powersave support(9),Beacon filter support(9),Spatial multiplexing power save(9) - batch 10 β filtering, ap powersave, and ampgdu-ish lore π β
Frame filtering(9),AP support for powersaving clients(9),HW queue control(9),enum ieee80211_filter_flags(9),enum ieee80211_ampdu_mlme_action(9),struct ieee80211_ampdu_params(9),enum ieee80211_frame_release_type(9),enum ieee80211_rate_control_changed(9),enum ieee80211_roc_type(9),enum ieee80211_reconfig_type(9) - batch 11 β prep tx info, ops, and the alloc/register pipeline π β
struct ieee80211_prep_tx_info(9),struct ieee80211_ops(9),ieee80211_alloc_hw_nm(9),ieee80211_alloc_hw(9),ieee80211_register_hw(9),struct ieee80211_tpt_blink(9),enum ieee80211_tpt_led_trigger_flags(9),ieee80211_get_tx_led_name(9),ieee80211_get_rx_led_name(9),ieee80211_get_assoc_led_name(9) - batch 12 β led names, unregister/free, and rx entry points π₯ β
ieee80211_get_radio_led_name(9),ieee80211_create_tpt_led_trigger(9),ieee80211_unregister_hw(9),ieee80211_free_hw(9),ieee80211_restart_hw(9),ieee80211_rx_list(9),ieee80211_rx_napi(9),ieee80211_rx(9),ieee80211_rx_irqsafe(9),ieee80211_rx_ni(9) - batch 13 β powersave transitions and tx status crew π β
ieee80211_sta_ps_transition(9),ieee80211_sta_ps_transition_ni(9),ieee80211_sta_pspoll(9),ieee80211_sta_uapsd_trigger(9),ieee80211_sta_set_buffered(9),ieee80211_get_tx_rates(9),ieee80211_tx_rate_update(9),ieee80211_tx_status_skb(9),ieee80211_tx_status_ext(9),ieee80211_tx_status_noskb(9) - batch 14 β tx status variants + beacon template ema list vibes π β
ieee80211_tx_status_ni(9),ieee80211_tx_status_irqsafe(9),ieee80211_report_low_ack(9),struct ieee80211_mutable_offsets(9),ieee80211_beacon_get_template(9),ieee80211_beacon_get_template_ema_index(9),struct ieee80211_ema_beacons(9),ieee80211_beacon_get_template_ema_list(9),ieee80211_beacon_free_ema_list(9),ieee80211_beacon_get_tim(9) - batch 15 β beacon get, csa finish, and frame getters π¦ β
ieee80211_beacon_get(9),ieee80211_beacon_update_cntdwn(9),ieee80211_beacon_set_cntdwn(9),ieee80211_csa_finish(9),ieee80211_beacon_cntdwn_is_complete(9),ieee80211_color_change_finish(9),ieee80211_proberesp_get(9),ieee80211_pspoll_get(9),ieee80211_nullfunc_get(9),ieee80211_probereq_get(9) - batch 16 β rts, cts-to-self, tkip p1k/p2k besties β¨ β
ieee80211_rts_get(9),ieee80211_rts_duration(9),ieee80211_ctstoself_get(9),ieee80211_ctstoself_duration(9),ieee80211_generic_frame_duration(9),ieee80211_get_buffered_bc(9),ieee80211_get_tkip_p1k_iv(9),ieee80211_get_tkip_p1k(9),ieee80211_get_tkip_rx_p1k(9),ieee80211_get_tkip_p2k(9) - batch 17 β tkip iv, key rx seq, queue wake/stop π β
ieee80211_tkip_add_iv(9),ieee80211_get_key_rx_seq(9),ieee80211_set_key_rx_seq(9),ieee80211_gtk_rekey_add(9),ieee80211_gtk_rekey_notify(9),ieee80211_key_mic_failure(9),ieee80211_key_replay(9),ieee80211_wake_queue(9),ieee80211_stop_queue(9),ieee80211_queue_stopped(9) - batch 18 β queues, scan completion, and interface iterators π§ β
ieee80211_stop_queues(9),ieee80211_wake_queues(9),ieee80211_scan_completed(9),ieee80211_sched_scan_results(9),ieee80211_sched_scan_stopped(9),enum ieee80211_interface_iteration_flags(9),ieee80211_iterate_interfaces(9),ieee80211_iterate_active_interfaces(9),ieee80211_iterate_active_interfaces_atomic(9),for_each_interface(9) - batch 19 β active interface/stations crew + queue work π
β
for_each_active_interface(9),ieee80211_iterate_active_interfaces_mtx(9),ieee80211_iterate_stations_atomic(9),for_each_station(9),ieee80211_iterate_stations_mtx(9),ieee80211_queue_work(9),ieee80211_queue_delayed_work(9),ieee80211_refresh_tx_agg_session_timer(9),ieee80211_start_tx_ba_session(9),ieee80211_start_tx_ba_cb_irqsafe(9) - batch 20 β stop tx ba, find sta, and airtime registration π β
ieee80211_stop_tx_ba_session(9),ieee80211_stop_tx_ba_cb_irqsafe(9),ieee80211_find_sta(9),ieee80211_find_sta_by_ifaddr(9),ieee80211_find_sta_by_link_addrs(9),ieee80211_sta_block_awake(9),ieee80211_sta_eosp(9),ieee80211_send_eosp_nullfunc(9),ieee80211_sta_recalc_aggregates(9),ieee80211_sta_register_airtime(9) - batch 21 β txq airtime, key iteration, and loss/disconnect lore π β
ieee80211_txq_airtime_check(9),ieee80211_txq_aql_pending(9),ieee80211_iter_keys(9),ieee80211_iter_keys_rcu(9),ieee80211_iter_chan_contexts_atomic(9),ieee80211_iter_chan_contexts_mtx(9),ieee80211_ap_probereq_get(9),ieee80211_beacon_loss(9),ieee80211_connection_loss(9),ieee80211_disconnect(9) - batch 22 β resume/hw restart disconnect + cqm/radar/chswitch π β
ieee80211_resume_disconnect(9),ieee80211_hw_restart_disconnect(9),ieee80211_cqm_rssi_notify(9),ieee80211_cqm_beacon_loss_notify(9),ieee80211_radar_detected(9),ieee80211_chswitch_done(9),ieee80211_channel_switch_disconnect(9),ieee80211_request_smps(9),ieee80211_ready_on_channel(9),ieee80211_remain_on_channel_expired(9) - batch 23 β rx ba sessions, send bar, rate control squad π β
ieee80211_stop_rx_ba_session(9),ieee80211_mark_rx_ba_filtered_frames(9),ieee80211_send_bar(9),ieee80211_manage_rx_ba_offl(9),ieee80211_start_rx_ba_session_offl(9),ieee80211_stop_rx_ba_session_offl(9),ieee80211_rx_ba_timer_expired(9),struct ieee80211_tx_rate_control(9),enum rate_control_capabilities(9),rate_control_set_rates(9) - batch 24 β he/eht/uhr caps + rssi/timestamp/radiotap girlies β¨ β
ieee80211_get_he_iftype_cap_vif(9),ieee80211_get_he_6ghz_capa_vif(9),ieee80211_get_eht_iftype_cap_vif(9),ieee80211_get_uhr_iftype_cap_vif(9),ieee80211_update_mu_groups(9),ieee80211_ave_rssi(9),ieee80211_calculate_rx_timestamp(9),ieee80211_report_wowlan_wakeup(9),ieee80211_tx_prepare_skb(9),ieee80211_parse_tx_radiotap(9) - batch 25 β p2p noa, tdls oper, tid reserve, and txq dequeue π¦ β
struct ieee80211_noa_data(9),ieee80211_parse_p2p_noa(9),ieee80211_update_p2p_noa(9),ieee80211_tdls_oper_request(9),ieee80211_reserve_tid(9),ieee80211_unreserve_tid(9),ieee80211_tx_dequeue(9),ieee80211_tx_dequeue_ni(9),ieee80211_handle_wake_tx_queue(9),ieee80211_next_txq(9) - batch 26 β txq scheduling + nan functions doing the most π§ β
ieee80211_txq_schedule_start(9),ieee80211_schedule_txq(9),ieee80211_return_txq(9),ieee80211_txq_may_transmit(9),ieee80211_txq_get_depth(9),ieee80211_nan_func_terminated(9),ieee80211_nan_func_match(9),ieee80211_nan_sched_update_done(9),ieee80211_nan_cluster_joined(9),ieee80211_nan_try_evacuate(9) - batch 27 β airtime math, fils/unsol bcast templates, and link switching π β
ieee80211_calc_rx_airtime(9),ieee80211_calc_tx_airtime(9),ieee80211_get_fils_discovery_tmpl(9),ieee80211_get_unsol_bcast_probe_resp_tmpl(9),ieee80211_obss_color_collision_notify(9),ieee80211_is_tx_data(9),ieee80211_set_active_links(9),ieee80211_set_active_links_async(9),ieee80211_send_teardown_neg_ttlm(9),ieee80211_chan_width_to_rx_bw(9) - batch 28 β final four, and yes they ate π
β
ieee80211_prepare_rx_omi_bw(9),ieee80211_finalize_rx_omi_bw(9),ieee80211_vif_nan_started(9),ieee80211_encrypt_tx_skb(9)
and thatβs the whole guest list, bestie β every single cross-ref, no cap π«Ά this page lives at ./include/net, dated October 2026, and itβs literally struct ieee80211_sta(9) β iconic, fr fr πβ¨
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms