struct ieee80211_sta — station table entry
struct ieee80211_sta { u32 supp_rates[IEEE80211_NUM_BANDS]; u8 addr[ETH_ALEN]; u16 aid; struct ieee80211_sta_ht_cap ht_cap; struct ieee80211_sta_vht_cap vht_cap; bool wme; u8 uapsd_queues; u8 max_sp; u8 rx_nss; enum ieee80211_sta_rx_bandwidth bandwidth; enum ieee80211_smps_mode smps_mode; struct ieee80211_sta_rates __rcu * rates; bool tdls; bool tdls_initiator; bool mfp; struct ieee80211_txq * txq[IEEE80211_NUM_TIDS]; u8 drv_priv[0]; };
Bitmap of supported rates (per band)
MAC address
AID we assigned to the station if we're an AP
HT capabilities of this STA; restricted to our own capabilities
VHT capabilities of this STA; restricted to our own capabilities
indicates whether the STA supports QoS/WME (if local devices does, otherwise always false)
bitmap of queues configured for uapsd. Only valid if wme is supported.
max Service Period. Only valid if wme is supported.
in HT/VHT, the maximum number of spatial streams the station can receive at the moment, changed by operating mode notifications and capabilities. The value is only valid after the station moves to associated state.
current bandwidth the station can receive with
current SMPS mode (off, static or dynamic)
rate control selection table
indicates whether the STA is a TDLS peer
indicates the STA is an initiator of the TDLS link. Only valid if the STA is a TDLS peer in the first place.
indicates whether the STA uses management frame protection or not.
per-TID data TX queues (if driver uses the TXQ abstraction)
data area for driver use, will always be aligned to sizeof(void *), size is determined in hw information.
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.