1STRUCT STA_INFO(9) Internals STRUCT STA_INFO(9)
2
3
4
6 struct_sta_info - STA information
7
9 struct sta_info {
10 struct list_head list;
11 struct list_head free_list;
12 struct rcu_head rcu_head;
13 struct rhlist_head hash_node;
14 u8 addr[ETH_ALEN];
15 struct ieee80211_local * local;
16 struct ieee80211_sub_if_data * sdata;
17 struct ieee80211_key __rcu * gtk[NUM_DEFAULT_KEYS + NUM_DEFAULT_MGMT_KEYS];
18 struct ieee80211_key __rcu * ptk[NUM_DEFAULT_KEYS];
19 u8 ptk_idx;
20 struct rate_control_ref * rate_ctrl;
21 void * rate_ctrl_priv;
22 spinlock_t rate_ctrl_lock;
23 spinlock_t lock;
24 struct ieee80211_fast_tx __rcu * fast_tx;
25 struct ieee80211_fast_rx __rcu * fast_rx;
26 struct ieee80211_sta_rx_stats __percpu * pcpu_rx_stats;
27 #ifdef CONFIG_MAC80211_MESH
28 struct mesh_sta * mesh;
29 #endif
30 struct work_struct drv_deliver_wk;
31 u16 listen_interval;
32 bool dead;
33 bool removed;
34 bool uploaded;
35 enum ieee80211_sta_state sta_state;
36 unsigned long _flags;
37 spinlock_t ps_lock;
38 struct sk_buff_head ps_tx_buf[IEEE80211_NUM_ACS];
39 struct sk_buff_head tx_filtered[IEEE80211_NUM_ACS];
40 unsigned long driver_buffered_tids;
41 unsigned long txq_buffered_tids;
42 long last_connected;
43 struct ieee80211_sta_rx_stats rx_stats;
44 struct tx_stats;
45 u16 tid_seq[IEEE80211_QOS_CTL_TID_MASK + 1];
46 struct sta_ampdu_mlme ampdu_mlme;
47 u8 timer_to_tid[IEEE80211_NUM_TIDS];
48 #ifdef CONFIG_MAC80211_DEBUGFS
49 struct dentry * debugfs_dir;
50 #endif
51 enum ieee80211_sta_rx_bandwidth cur_max_bandwidth;
52 enum ieee80211_smps_mode known_smps_mode;
53 const struct ieee80211_cipher_scheme * cipher_scheme;
54 struct codel_params cparams;
55 u8 reserved_tid;
56 struct cfg80211_chan_def tdls_chandef;
57 struct ieee80211_sta sta;
58 };
59
61 list
62 global linked list entry
63
64 free_list
65 list entry for keeping track of stations to free
66
67 rcu_head
68 RCU head used for freeing this station struct
69
70 hash_node
71 hash node for rhashtable
72
73 addr[ETH_ALEN]
74 station's MAC address - duplicated from public part to let the hash
75 table work with just a single cacheline
76
77 local
78 pointer to the global information
79
80 sdata
81 virtual interface this station belongs to
82
83 gtk[NUM_DEFAULT_KEYS + NUM_DEFAULT_MGMT_KEYS]
84 group keys negotiated with this station, if any
85
86 ptk[NUM_DEFAULT_KEYS]
87 peer keys negotiated with this station, if any
88
89 ptk_idx
90 last installed peer key index
91
92 rate_ctrl
93 rate control algorithm reference
94
95 rate_ctrl_priv
96 rate control private per-STA pointer
97
98 rate_ctrl_lock
99 spinlock used to protect rate control data (data inside the
100 algorithm, so serializes calls there)
101
102 lock
103 used for locking all fields that require locking, see comments in
104 the header file.
105
106 fast_tx
107 TX fastpath information
108
109 fast_rx
110 RX fastpath information
111
112 pcpu_rx_stats
113 per-CPU RX statistics, assigned only if the driver needs this (by
114 advertising the USES_RSS hw flag)
115
116 mesh
117 mesh STA information
118
119 drv_deliver_wk
120 used for delivering frames after driver PS unblocking
121
122 listen_interval
123 listen interval of this station, when we're acting as AP
124
125 dead
126 set to true when sta is unlinked
127
128 removed
129 set to true when sta is being removed from sta_list
130
131 uploaded
132 set to true when sta is uploaded to the driver
133
134 sta_state
135 duplicates information about station state (for debug)
136
137 _flags
138 STA flags, see enum ieee80211_sta_info_flags, do not use directly
139
140 ps_lock
141 used for powersave (when mac80211 is the AP) related locking
142
143 ps_tx_buf[IEEE80211_NUM_ACS]
144 buffers (per AC) of frames to transmit to this station when it
145 leaves power saving state or polls
146
147 tx_filtered[IEEE80211_NUM_ACS]
148 buffers (per AC) of frames we already tried to transmit but were
149 filtered by hardware due to STA having entered power saving state,
150 these are also delivered to the station when it leaves powersave or
151 polls for frames
152
153 driver_buffered_tids
154 bitmap of TIDs the driver has data buffered on
155
156 txq_buffered_tids
157 bitmap of TIDs that mac80211 has txq data buffered on
158
159 last_connected
160 time (in seconds) when a station got connected
161
162 rx_stats
163 RX statistics
164
165 tx_stats
166 TX statistics
167
168 tid_seq[IEEE80211_QOS_CTL_TID_MASK + 1]
169 per-TID sequence numbers for sending to this STA
170
171 ampdu_mlme
172 A-MPDU state machine state
173
174 timer_to_tid[IEEE80211_NUM_TIDS]
175 identity mapping to ID timers
176
177 debugfs_dir
178 debug filesystem directory dentry
179
180 cur_max_bandwidth
181 maximum bandwidth to use for TX to the station, taken from HT/VHT
182 capabilities or VHT operating mode notification
183
184 known_smps_mode
185 the smps_mode the client thinks we are in. Relevant for AP only.
186
187 cipher_scheme
188 optional cipher scheme for this station
189
190 cparams
191 CoDel parameters for this station.
192
193 reserved_tid
194 reserved TID (if any, otherwise IEEE80211_TID_UNRESERVED)
195
196 tdls_chandef
197 a TDLS peer can have a wider chandef that is compatible to the BSS
198 one.
199
200 sta
201 station information we share with the driver
202
204 This structure collects information about a station that mac80211 is
205 communicating with.
206
208 Johannes Berg <johannes@sipsolutions.net>
209 Author.
210
212Kernel Hackers Manual 3.10 June 2019 STRUCT STA_INFO(9)