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 sta_info __rcu * hnext;
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 #ifdef CONFIG_MAC80211_MESH
26 struct mesh_sta * mesh;
27 #endif
28 struct work_struct drv_deliver_wk;
29 u16 listen_interval;
30 bool dead;
31 bool uploaded;
32 enum ieee80211_sta_state sta_state;
33 unsigned long _flags;
34 spinlock_t ps_lock;
35 struct sk_buff_head ps_tx_buf[IEEE80211_NUM_ACS];
36 struct sk_buff_head tx_filtered[IEEE80211_NUM_ACS];
37 unsigned long driver_buffered_tids;
38 unsigned long txq_buffered_tids;
39 unsigned long rx_packets;
40 u64 rx_bytes;
41 unsigned long last_rx;
42 long last_connected;
43 unsigned long num_duplicates;
44 unsigned long rx_fragments;
45 unsigned long rx_dropped;
46 int last_signal;
47 struct ewma_signal avg_signal;
48 int last_ack_signal;
49 u8 chains;
50 s8 chain_signal_last[IEEE80211_MAX_CHAINS];
51 struct ewma_signal chain_signal_avg[IEEE80211_MAX_CHAINS];
52 __le16 last_seq_ctrl[IEEE80211_NUM_TIDS + 1];
53 unsigned long tx_filtered_count;
54 unsigned long tx_retry_failed;
55 unsigned long tx_retry_count;
56 u64 tx_packets[IEEE80211_NUM_ACS];
57 u64 tx_bytes[IEEE80211_NUM_ACS];
58 struct ieee80211_tx_rate last_tx_rate;
59 int last_rx_rate_idx;
60 u32 last_rx_rate_flag;
61 u32 last_rx_rate_vht_flag;
62 u8 last_rx_rate_vht_nss;
63 u16 tid_seq[IEEE80211_QOS_CTL_TID_MASK + 1];
64 u64 tx_msdu[IEEE80211_NUM_TIDS + 1];
65 u64 tx_msdu_retries[IEEE80211_NUM_TIDS + 1];
66 u64 tx_msdu_failed[IEEE80211_NUM_TIDS + 1];
67 u64 rx_msdu[IEEE80211_NUM_TIDS + 1];
68 struct sta_ampdu_mlme ampdu_mlme;
69 u8 timer_to_tid[IEEE80211_NUM_TIDS];
70 #ifdef CONFIG_MAC80211_DEBUGFS
71 struct sta_info_debugfsdentries debugfs;
72 #endif
73 enum ieee80211_sta_rx_bandwidth cur_max_bandwidth;
74 unsigned int lost_packets;
75 unsigned int beacon_loss_count;
76 enum ieee80211_smps_mode known_smps_mode;
77 const struct ieee80211_cipher_scheme * cipher_scheme;
78 unsigned long last_tdls_pkt_time;
79 u8 reserved_tid;
80 struct cfg80211_chan_def tdls_chandef;
81 struct ieee80211_sta sta;
82 };
83
85 list
86 global linked list entry
87
88 free_list
89 list entry for keeping track of stations to free
90
91 rcu_head
92 RCU head used for freeing this station struct
93
94 hnext
95 hash table linked list pointer
96
97 addr[ETH_ALEN]
98 station´s MAC address - duplicated from public part to let the hash
99 table work with just a single cacheline
100
101 local
102 pointer to the global information
103
104 sdata
105 virtual interface this station belongs to
106
107 gtk[NUM_DEFAULT_KEYS + NUM_DEFAULT_MGMT_KEYS]
108 group keys negotiated with this station, if any
109
110 ptk[NUM_DEFAULT_KEYS]
111 peer keys negotiated with this station, if any
112
113 ptk_idx
114 last installed peer key index
115
116 rate_ctrl
117 rate control algorithm reference
118
119 rate_ctrl_priv
120 rate control private per-STA pointer
121
122 rate_ctrl_lock
123 spinlock used to protect rate control data (data inside the
124 algorithm, so serializes calls there)
125
126 lock
127 used for locking all fields that require locking, see comments in
128 the header file.
129
130 fast_tx
131 TX fastpath information
132
133 mesh
134 mesh STA information
135
136 drv_deliver_wk
137 used for delivering frames after driver PS unblocking
138
139 listen_interval
140 listen interval of this station, when we´re acting as AP
141
142 dead
143 set to true when sta is unlinked
144
145 uploaded
146 set to true when sta is uploaded to the driver
147
148 sta_state
149 duplicates information about station state (for debug)
150
151 _flags
152 STA flags, see enum ieee80211_sta_info_flags, do not use directly
153
154 ps_lock
155 used for powersave (when mac80211 is the AP) related locking
156
157 ps_tx_buf[IEEE80211_NUM_ACS]
158 buffers (per AC) of frames to transmit to this station when it
159 leaves power saving state or polls
160
161 tx_filtered[IEEE80211_NUM_ACS]
162 buffers (per AC) of frames we already tried to transmit but were
163 filtered by hardware due to STA having entered power saving state,
164 these are also delivered to the station when it leaves powersave or
165 polls for frames
166
167 driver_buffered_tids
168 bitmap of TIDs the driver has data buffered on
169
170 txq_buffered_tids
171 bitmap of TIDs that mac80211 has txq data buffered on
172
173 rx_packets
174 Number of MSDUs received from this STA
175
176 rx_bytes
177 Number of bytes received from this STA
178
179 last_rx
180 time (in jiffies) when last frame was received from this STA
181
182 last_connected
183 time (in seconds) when a station got connected
184
185 num_duplicates
186 number of duplicate frames received from this STA
187
188 rx_fragments
189 number of received MPDUs
190
191 rx_dropped
192 number of dropped MPDUs from this STA
193
194 last_signal
195 signal of last received frame from this STA
196
197 avg_signal
198 moving average of signal of received frames from this STA
199
200 last_ack_signal
201 signal of last received Ack frame from this STA
202
203 chains
204 chains ever used for RX from this station
205
206 chain_signal_last[IEEE80211_MAX_CHAINS]
207 last signal (per chain)
208
209 chain_signal_avg[IEEE80211_MAX_CHAINS]
210 signal average (per chain)
211
212 last_seq_ctrl[IEEE80211_NUM_TIDS + 1]
213 last received seq/frag number from this STA (per TID plus one for
214 non-QoS frames)
215
216 tx_filtered_count
217 number of frames the hardware filtered for this STA
218
219 tx_retry_failed
220 number of frames that failed retry
221
222 tx_retry_count
223 total number of retries for frames to this STA
224
225 tx_packets[IEEE80211_NUM_ACS]
226 number of RX/TX MSDUs
227
228 tx_bytes[IEEE80211_NUM_ACS]
229 number of bytes transmitted to this STA
230
231 last_tx_rate
232 rate used for last transmit, to report to userspace as “the”
233 transmit rate
234
235 last_rx_rate_idx
236 rx status rate index of the last data packet
237
238 last_rx_rate_flag
239 rx status flag of the last data packet
240
241 last_rx_rate_vht_flag
242 rx status vht flag of the last data packet
243
244 last_rx_rate_vht_nss
245 rx status nss of last data packet
246
247 tid_seq[IEEE80211_QOS_CTL_TID_MASK + 1]
248 per-TID sequence numbers for sending to this STA
249
250 tx_msdu[IEEE80211_NUM_TIDS + 1]
251 MSDUs transmitted to this station, using IEEE80211_NUM_TID entry
252 for non-QoS frames
253
254 tx_msdu_retries[IEEE80211_NUM_TIDS + 1]
255 MSDU retries for transmissions to to this station, using
256 IEEE80211_NUM_TID entry for non-QoS frames
257
258 tx_msdu_failed[IEEE80211_NUM_TIDS + 1]
259 MSDU failures for transmissions to to this station, using
260 IEEE80211_NUM_TID entry for non-QoS frames
261
262 rx_msdu[IEEE80211_NUM_TIDS + 1]
263 MSDUs received from this station, using IEEE80211_NUM_TID entry for
264 non-QoS frames
265
266 ampdu_mlme
267 A-MPDU state machine state
268
269 timer_to_tid[IEEE80211_NUM_TIDS]
270 identity mapping to ID timers
271
272 debugfs
273 debug filesystem info
274
275 cur_max_bandwidth
276 maximum bandwidth to use for TX to the station, taken from HT/VHT
277 capabilities or VHT operating mode notification
278
279 lost_packets
280 number of consecutive lost packets
281
282 beacon_loss_count
283 number of times beacon loss has triggered
284
285 known_smps_mode
286 the smps_mode the client thinks we are in. Relevant for AP only.
287
288 cipher_scheme
289 optional cipher scheme for this station
290
291 last_tdls_pkt_time
292 holds the time in jiffies of last TDLS pkt ACKed
293
294 reserved_tid
295 reserved TID (if any, otherwise IEEE80211_TID_UNRESERVED)
296
297 tdls_chandef
298 a TDLS peer can have a wider chandef that is compatible to the BSS
299 one.
300
301 sta
302 station information we share with the driver
303
305 This structure collects information about a station that mac80211 is
306 communicating with.
307
309 Johannes Berg <johannes@sipsolutions.net>
310 Author.
311
313Kernel Hackers Manual 2.6. June 2019 STRUCT STA_INFO(9)