STRUCT STA_INFO(9) | Internals | STRUCT STA_INFO(9) |
NAME¶
struct_sta_info - STA information
SYNOPSIS¶
struct sta_info {
struct list_head list;
struct list_head free_list;
struct rcu_head rcu_head;
struct rhlist_head hash_node;
u8 addr[ETH_ALEN];
struct ieee80211_local * local;
struct ieee80211_sub_if_data * sdata;
struct ieee80211_key __rcu * gtk[NUM_DEFAULT_KEYS + NUM_DEFAULT_MGMT_KEYS];
struct ieee80211_key __rcu * ptk[NUM_DEFAULT_KEYS];
u8 ptk_idx;
struct rate_control_ref * rate_ctrl;
void * rate_ctrl_priv;
spinlock_t rate_ctrl_lock;
spinlock_t lock;
struct ieee80211_fast_tx __rcu * fast_tx;
struct ieee80211_fast_rx __rcu * fast_rx;
struct ieee80211_sta_rx_stats __percpu * pcpu_rx_stats; #ifdef CONFIG_MAC80211_MESH
struct mesh_sta * mesh; #endif
struct work_struct drv_deliver_wk;
u16 listen_interval;
bool dead;
bool removed;
bool uploaded;
enum ieee80211_sta_state sta_state;
unsigned long _flags;
spinlock_t ps_lock;
struct sk_buff_head ps_tx_buf[IEEE80211_NUM_ACS];
struct sk_buff_head tx_filtered[IEEE80211_NUM_ACS];
unsigned long driver_buffered_tids;
unsigned long txq_buffered_tids;
long last_connected;
struct ieee80211_sta_rx_stats rx_stats;
struct tx_stats;
u16 tid_seq[IEEE80211_QOS_CTL_TID_MASK + 1];
struct airtime_info airtime[IEEE80211_NUM_ACS];
u16 airtime_weight;
struct sta_ampdu_mlme ampdu_mlme; #ifdef CONFIG_MAC80211_DEBUGFS
struct dentry * debugfs_dir; #endif
enum ieee80211_sta_rx_bandwidth cur_max_bandwidth;
enum ieee80211_smps_mode known_smps_mode;
const struct ieee80211_cipher_scheme * cipher_scheme;
struct codel_params cparams;
u8 reserved_tid;
struct cfg80211_chan_def tdls_chandef;
struct ieee80211_sta sta; };
MEMBERS¶
list
global linked list entry
free_list
list entry for keeping track of stations to free
rcu_head
RCU head used for freeing this station struct
hash_node
hash node for rhashtable
addr[ETH_ALEN]
station's MAC address - duplicated from public part to
let the hash table work with just a single cacheline
local
pointer to the global information
sdata
virtual interface this station belongs to
gtk[NUM_DEFAULT_KEYS + NUM_DEFAULT_MGMT_KEYS]
group keys negotiated with this station, if any
ptk[NUM_DEFAULT_KEYS]
peer keys negotiated with this station, if any
ptk_idx
last installed peer key index
rate_ctrl
rate control algorithm reference
rate_ctrl_priv
rate control private per-STA pointer
rate_ctrl_lock
spinlock used to protect rate control data (data inside
the algorithm, so serializes calls there)
lock
used for locking all fields that require locking, see
comments in the header file.
fast_tx
TX fastpath information
fast_rx
RX fastpath information
pcpu_rx_stats
per-CPU RX statistics, assigned only if the driver needs
this (by advertising the USES_RSS hw flag)
mesh
mesh STA information
drv_deliver_wk
used for delivering frames after driver PS
unblocking
listen_interval
listen interval of this station, when we're acting as
AP
dead
set to true when sta is unlinked
removed
set to true when sta is being removed from sta_list
uploaded
set to true when sta is uploaded to the driver
sta_state
duplicates information about station state (for
debug)
_flags
STA flags, see enum ieee80211_sta_info_flags, do not use
directly
ps_lock
used for powersave (when mac80211 is the AP) related
locking
ps_tx_buf[IEEE80211_NUM_ACS]
buffers (per AC) of frames to transmit to this station
when it leaves power saving state or polls
tx_filtered[IEEE80211_NUM_ACS]
buffers (per AC) of frames we already tried to transmit
but were filtered by hardware due to STA having entered power saving state,
these are also delivered to the station when it leaves powersave or polls for
frames
driver_buffered_tids
bitmap of TIDs the driver has data buffered on
txq_buffered_tids
bitmap of TIDs that mac80211 has txq data buffered
on
last_connected
time (in seconds) when a station got connected
rx_stats
RX statistics
tx_stats
TX statistics tx_stats.packets: # of packets
transmitted tx_stats.bytes: # of bytes in all packets transmitted
tx_stats.last_rate: last TX rate tx_stats.msdu: # of transmitted
MSDUs per TID
tid_seq[IEEE80211_QOS_CTL_TID_MASK + 1]
per-TID sequence numbers for sending to this STA
airtime[IEEE80211_NUM_ACS]
per-AC struct airtime_info describing airtime statistics
for this station
airtime_weight
station weight for airtime fairness calculation
purposes
ampdu_mlme
A-MPDU state machine state
debugfs_dir
debug filesystem directory dentry
cur_max_bandwidth
maximum bandwidth to use for TX to the station, taken
from HT/VHT capabilities or VHT operating mode notification
known_smps_mode
the smps_mode the client thinks we are in. Relevant for
AP only.
cipher_scheme
optional cipher scheme for this station
cparams
CoDel parameters for this station.
reserved_tid
reserved TID (if any, otherwise
IEEE80211_TID_UNRESERVED)
tdls_chandef
a TDLS peer can have a wider chandef that is compatible
to the BSS one.
sta
station information we share with the driver
DESCRIPTION¶
This structure collects information about a station that mac80211 is communicating with.
AUTHOR¶
Johannes Berg <johannes@sipsolutions.net>
Author.
COPYRIGHT¶
June 2024 | Kernel Hackers Manual 3.10 |