1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2 | /* |
3 | * Portions of this file |
4 | * Copyright(c) 2016-2017 Intel Deutschland GmbH |
5 | * Copyright (C) 2018 - 2024 Intel Corporation |
6 | */ |
7 | |
8 | #if !defined(__MAC80211_DRIVER_TRACE) || defined(TRACE_HEADER_MULTI_READ) |
9 | #define __MAC80211_DRIVER_TRACE |
10 | |
11 | #include <linux/tracepoint.h> |
12 | #include <net/mac80211.h> |
13 | #include "ieee80211_i.h" |
14 | |
15 | #undef TRACE_SYSTEM |
16 | #define TRACE_SYSTEM mac80211 |
17 | |
18 | #define MAXNAME 32 |
19 | #define LOCAL_ENTRY __array(char, wiphy_name, 32) |
20 | #define LOCAL_ASSIGN strscpy(__entry->wiphy_name, wiphy_name(local->hw.wiphy), MAXNAME) |
21 | #define LOCAL_PR_FMT "%s" |
22 | #define LOCAL_PR_ARG __entry->wiphy_name |
23 | |
24 | #define STA_ENTRY __array(char, sta_addr, ETH_ALEN) |
25 | #define STA_ASSIGN (sta ? memcpy(__entry->sta_addr, sta->addr, ETH_ALEN) : \ |
26 | eth_zero_addr(__entry->sta_addr)) |
27 | #define STA_NAMED_ASSIGN(s) memcpy(__entry->sta_addr, (s)->addr, ETH_ALEN) |
28 | #define STA_PR_FMT " sta:%pM" |
29 | #define STA_PR_ARG __entry->sta_addr |
30 | |
31 | #define VIF_ENTRY __field(enum nl80211_iftype, vif_type) __field(void *, sdata) \ |
32 | __field(bool, p2p) \ |
33 | __string(vif_name, sdata->name) |
34 | #define VIF_ASSIGN __entry->vif_type = sdata->vif.type; __entry->sdata = sdata; \ |
35 | __entry->p2p = sdata->vif.p2p; \ |
36 | __assign_str(vif_name, sdata->name) |
37 | #define VIF_PR_FMT " vif:%s(%d%s)" |
38 | #define VIF_PR_ARG __get_str(vif_name), __entry->vif_type, __entry->p2p ? "/p2p" : "" |
39 | |
40 | #define CHANDEF_ENTRY __field(u32, control_freq) \ |
41 | __field(u32, freq_offset) \ |
42 | __field(u32, chan_width) \ |
43 | __field(u32, center_freq1) \ |
44 | __field(u32, freq1_offset) \ |
45 | __field(u32, center_freq2) |
46 | #define CHANDEF_ASSIGN(c) \ |
47 | __entry->control_freq = (c) ? ((c)->chan ? (c)->chan->center_freq : 0) : 0; \ |
48 | __entry->freq_offset = (c) ? ((c)->chan ? (c)->chan->freq_offset : 0) : 0; \ |
49 | __entry->chan_width = (c) ? (c)->width : 0; \ |
50 | __entry->center_freq1 = (c) ? (c)->center_freq1 : 0; \ |
51 | __entry->freq1_offset = (c) ? (c)->freq1_offset : 0; \ |
52 | __entry->center_freq2 = (c) ? (c)->center_freq2 : 0; |
53 | #define CHANDEF_PR_FMT " chandef(%d.%03d MHz,width:%d,center: %d.%03d/%d MHz)" |
54 | #define CHANDEF_PR_ARG __entry->control_freq, __entry->freq_offset, __entry->chan_width, \ |
55 | __entry->center_freq1, __entry->freq1_offset, __entry->center_freq2 |
56 | |
57 | #define MIN_CHANDEF_ENTRY \ |
58 | __field(u32, min_control_freq) \ |
59 | __field(u32, min_freq_offset) \ |
60 | __field(u32, min_chan_width) \ |
61 | __field(u32, min_center_freq1) \ |
62 | __field(u32, min_freq1_offset) \ |
63 | __field(u32, min_center_freq2) |
64 | |
65 | #define MIN_CHANDEF_ASSIGN(c) \ |
66 | __entry->min_control_freq = (c)->chan ? (c)->chan->center_freq : 0; \ |
67 | __entry->min_freq_offset = (c)->chan ? (c)->chan->freq_offset : 0; \ |
68 | __entry->min_chan_width = (c)->width; \ |
69 | __entry->min_center_freq1 = (c)->center_freq1; \ |
70 | __entry->min_freq1_offset = (c)->freq1_offset; \ |
71 | __entry->min_center_freq2 = (c)->center_freq2; |
72 | #define MIN_CHANDEF_PR_FMT " mindef(%d.%03d MHz,width:%d,center: %d.%03d/%d MHz)" |
73 | #define MIN_CHANDEF_PR_ARG __entry->min_control_freq, __entry->min_freq_offset, \ |
74 | __entry->min_chan_width, \ |
75 | __entry->min_center_freq1, __entry->min_freq1_offset, \ |
76 | __entry->min_center_freq2 |
77 | |
78 | #define AP_CHANDEF_ENTRY \ |
79 | __field(u32, ap_control_freq) \ |
80 | __field(u32, ap_freq_offset) \ |
81 | __field(u32, ap_chan_width) \ |
82 | __field(u32, ap_center_freq1) \ |
83 | __field(u32, ap_freq1_offset) \ |
84 | __field(u32, ap_center_freq2) |
85 | |
86 | #define AP_CHANDEF_ASSIGN(c) \ |
87 | __entry->ap_control_freq = (c)->chan ? (c)->chan->center_freq : 0;\ |
88 | __entry->ap_freq_offset = (c)->chan ? (c)->chan->freq_offset : 0;\ |
89 | __entry->ap_chan_width = (c)->chan ? (c)->width : 0; \ |
90 | __entry->ap_center_freq1 = (c)->chan ? (c)->center_freq1 : 0; \ |
91 | __entry->ap_freq1_offset = (c)->chan ? (c)->freq1_offset : 0; \ |
92 | __entry->ap_center_freq2 = (c)->chan ? (c)->center_freq2 : 0; |
93 | #define AP_CHANDEF_PR_FMT " ap(%d.%03d MHz,width:%d,center: %d.%03d/%d MHz)" |
94 | #define AP_CHANDEF_PR_ARG __entry->ap_control_freq, __entry->ap_freq_offset, \ |
95 | __entry->ap_chan_width, \ |
96 | __entry->ap_center_freq1, __entry->ap_freq1_offset, \ |
97 | __entry->ap_center_freq2 |
98 | |
99 | #define CHANCTX_ENTRY CHANDEF_ENTRY \ |
100 | MIN_CHANDEF_ENTRY \ |
101 | AP_CHANDEF_ENTRY \ |
102 | __field(u8, rx_chains_static) \ |
103 | __field(u8, rx_chains_dynamic) |
104 | #define CHANCTX_ASSIGN CHANDEF_ASSIGN(&ctx->conf.def) \ |
105 | MIN_CHANDEF_ASSIGN(&ctx->conf.min_def) \ |
106 | AP_CHANDEF_ASSIGN(&ctx->conf.ap) \ |
107 | __entry->rx_chains_static = ctx->conf.rx_chains_static; \ |
108 | __entry->rx_chains_dynamic = ctx->conf.rx_chains_dynamic |
109 | #define CHANCTX_PR_FMT CHANDEF_PR_FMT MIN_CHANDEF_PR_FMT AP_CHANDEF_PR_FMT " chains:%d/%d" |
110 | #define CHANCTX_PR_ARG CHANDEF_PR_ARG, MIN_CHANDEF_PR_ARG, AP_CHANDEF_PR_ARG, \ |
111 | __entry->rx_chains_static, __entry->rx_chains_dynamic |
112 | |
113 | #define KEY_ENTRY __field(u32, cipher) \ |
114 | __field(u8, hw_key_idx) \ |
115 | __field(u8, flags) \ |
116 | __field(s8, keyidx) |
117 | #define KEY_ASSIGN(k) __entry->cipher = (k)->cipher; \ |
118 | __entry->flags = (k)->flags; \ |
119 | __entry->keyidx = (k)->keyidx; \ |
120 | __entry->hw_key_idx = (k)->hw_key_idx; |
121 | #define KEY_PR_FMT " cipher:0x%x, flags=%#x, keyidx=%d, hw_key_idx=%d" |
122 | #define KEY_PR_ARG __entry->cipher, __entry->flags, __entry->keyidx, __entry->hw_key_idx |
123 | |
124 | #define AMPDU_ACTION_ENTRY __field(enum ieee80211_ampdu_mlme_action, \ |
125 | ieee80211_ampdu_mlme_action) \ |
126 | STA_ENTRY \ |
127 | __field(u16, tid) \ |
128 | __field(u16, ssn) \ |
129 | __field(u16, buf_size) \ |
130 | __field(bool, amsdu) \ |
131 | __field(u16, timeout) \ |
132 | __field(u16, action) |
133 | #define AMPDU_ACTION_ASSIGN STA_NAMED_ASSIGN(params->sta); \ |
134 | __entry->tid = params->tid; \ |
135 | __entry->ssn = params->ssn; \ |
136 | __entry->buf_size = params->buf_size; \ |
137 | __entry->amsdu = params->amsdu; \ |
138 | __entry->timeout = params->timeout; \ |
139 | __entry->action = params->action; |
140 | #define AMPDU_ACTION_PR_FMT STA_PR_FMT " tid %d, ssn %d, buf_size %u, amsdu %d, timeout %d action %d" |
141 | #define AMPDU_ACTION_PR_ARG STA_PR_ARG, __entry->tid, __entry->ssn, \ |
142 | __entry->buf_size, __entry->amsdu, __entry->timeout, \ |
143 | __entry->action |
144 | |
145 | /* |
146 | * Tracing for driver callbacks. |
147 | */ |
148 | |
149 | DECLARE_EVENT_CLASS(local_only_evt, |
150 | TP_PROTO(struct ieee80211_local *local), |
151 | TP_ARGS(local), |
152 | TP_STRUCT__entry( |
153 | LOCAL_ENTRY |
154 | ), |
155 | TP_fast_assign( |
156 | LOCAL_ASSIGN; |
157 | ), |
158 | TP_printk(LOCAL_PR_FMT, LOCAL_PR_ARG) |
159 | ); |
160 | |
161 | DECLARE_EVENT_CLASS(local_sdata_addr_evt, |
162 | TP_PROTO(struct ieee80211_local *local, |
163 | struct ieee80211_sub_if_data *sdata), |
164 | TP_ARGS(local, sdata), |
165 | |
166 | TP_STRUCT__entry( |
167 | LOCAL_ENTRY |
168 | VIF_ENTRY |
169 | __array(char, addr, ETH_ALEN) |
170 | ), |
171 | |
172 | TP_fast_assign( |
173 | LOCAL_ASSIGN; |
174 | VIF_ASSIGN; |
175 | memcpy(__entry->addr, sdata->vif.addr, ETH_ALEN); |
176 | ), |
177 | |
178 | TP_printk( |
179 | LOCAL_PR_FMT VIF_PR_FMT " addr:%pM" , |
180 | LOCAL_PR_ARG, VIF_PR_ARG, __entry->addr |
181 | ) |
182 | ); |
183 | |
184 | DECLARE_EVENT_CLASS(local_u32_evt, |
185 | TP_PROTO(struct ieee80211_local *local, u32 value), |
186 | TP_ARGS(local, value), |
187 | |
188 | TP_STRUCT__entry( |
189 | LOCAL_ENTRY |
190 | __field(u32, value) |
191 | ), |
192 | |
193 | TP_fast_assign( |
194 | LOCAL_ASSIGN; |
195 | __entry->value = value; |
196 | ), |
197 | |
198 | TP_printk( |
199 | LOCAL_PR_FMT " value:%d" , |
200 | LOCAL_PR_ARG, __entry->value |
201 | ) |
202 | ); |
203 | |
204 | DECLARE_EVENT_CLASS(local_sdata_evt, |
205 | TP_PROTO(struct ieee80211_local *local, |
206 | struct ieee80211_sub_if_data *sdata), |
207 | TP_ARGS(local, sdata), |
208 | |
209 | TP_STRUCT__entry( |
210 | LOCAL_ENTRY |
211 | VIF_ENTRY |
212 | ), |
213 | |
214 | TP_fast_assign( |
215 | LOCAL_ASSIGN; |
216 | VIF_ASSIGN; |
217 | ), |
218 | |
219 | TP_printk( |
220 | LOCAL_PR_FMT VIF_PR_FMT, |
221 | LOCAL_PR_ARG, VIF_PR_ARG |
222 | ) |
223 | ); |
224 | |
225 | DEFINE_EVENT(local_only_evt, drv_return_void, |
226 | TP_PROTO(struct ieee80211_local *local), |
227 | TP_ARGS(local) |
228 | ); |
229 | |
230 | TRACE_EVENT(drv_return_int, |
231 | TP_PROTO(struct ieee80211_local *local, int ret), |
232 | TP_ARGS(local, ret), |
233 | TP_STRUCT__entry( |
234 | LOCAL_ENTRY |
235 | __field(int, ret) |
236 | ), |
237 | TP_fast_assign( |
238 | LOCAL_ASSIGN; |
239 | __entry->ret = ret; |
240 | ), |
241 | TP_printk(LOCAL_PR_FMT " - %d" , LOCAL_PR_ARG, __entry->ret) |
242 | ); |
243 | |
244 | TRACE_EVENT(drv_return_bool, |
245 | TP_PROTO(struct ieee80211_local *local, bool ret), |
246 | TP_ARGS(local, ret), |
247 | TP_STRUCT__entry( |
248 | LOCAL_ENTRY |
249 | __field(bool, ret) |
250 | ), |
251 | TP_fast_assign( |
252 | LOCAL_ASSIGN; |
253 | __entry->ret = ret; |
254 | ), |
255 | TP_printk(LOCAL_PR_FMT " - %s" , LOCAL_PR_ARG, (__entry->ret) ? |
256 | "true" : "false" ) |
257 | ); |
258 | |
259 | TRACE_EVENT(drv_return_u32, |
260 | TP_PROTO(struct ieee80211_local *local, u32 ret), |
261 | TP_ARGS(local, ret), |
262 | TP_STRUCT__entry( |
263 | LOCAL_ENTRY |
264 | __field(u32, ret) |
265 | ), |
266 | TP_fast_assign( |
267 | LOCAL_ASSIGN; |
268 | __entry->ret = ret; |
269 | ), |
270 | TP_printk(LOCAL_PR_FMT " - %u" , LOCAL_PR_ARG, __entry->ret) |
271 | ); |
272 | |
273 | TRACE_EVENT(drv_return_u64, |
274 | TP_PROTO(struct ieee80211_local *local, u64 ret), |
275 | TP_ARGS(local, ret), |
276 | TP_STRUCT__entry( |
277 | LOCAL_ENTRY |
278 | __field(u64, ret) |
279 | ), |
280 | TP_fast_assign( |
281 | LOCAL_ASSIGN; |
282 | __entry->ret = ret; |
283 | ), |
284 | TP_printk(LOCAL_PR_FMT " - %llu" , LOCAL_PR_ARG, __entry->ret) |
285 | ); |
286 | |
287 | DEFINE_EVENT(local_only_evt, drv_start, |
288 | TP_PROTO(struct ieee80211_local *local), |
289 | TP_ARGS(local) |
290 | ); |
291 | |
292 | DEFINE_EVENT(local_u32_evt, drv_get_et_strings, |
293 | TP_PROTO(struct ieee80211_local *local, u32 sset), |
294 | TP_ARGS(local, sset) |
295 | ); |
296 | |
297 | DEFINE_EVENT(local_u32_evt, drv_get_et_sset_count, |
298 | TP_PROTO(struct ieee80211_local *local, u32 sset), |
299 | TP_ARGS(local, sset) |
300 | ); |
301 | |
302 | DEFINE_EVENT(local_only_evt, drv_get_et_stats, |
303 | TP_PROTO(struct ieee80211_local *local), |
304 | TP_ARGS(local) |
305 | ); |
306 | |
307 | DEFINE_EVENT(local_only_evt, drv_suspend, |
308 | TP_PROTO(struct ieee80211_local *local), |
309 | TP_ARGS(local) |
310 | ); |
311 | |
312 | DEFINE_EVENT(local_only_evt, drv_resume, |
313 | TP_PROTO(struct ieee80211_local *local), |
314 | TP_ARGS(local) |
315 | ); |
316 | |
317 | TRACE_EVENT(drv_set_wakeup, |
318 | TP_PROTO(struct ieee80211_local *local, bool enabled), |
319 | TP_ARGS(local, enabled), |
320 | TP_STRUCT__entry( |
321 | LOCAL_ENTRY |
322 | __field(bool, enabled) |
323 | ), |
324 | TP_fast_assign( |
325 | LOCAL_ASSIGN; |
326 | __entry->enabled = enabled; |
327 | ), |
328 | TP_printk(LOCAL_PR_FMT " enabled:%d" , LOCAL_PR_ARG, __entry->enabled) |
329 | ); |
330 | |
331 | DEFINE_EVENT(local_only_evt, drv_stop, |
332 | TP_PROTO(struct ieee80211_local *local), |
333 | TP_ARGS(local) |
334 | ); |
335 | |
336 | DEFINE_EVENT(local_sdata_addr_evt, drv_add_interface, |
337 | TP_PROTO(struct ieee80211_local *local, |
338 | struct ieee80211_sub_if_data *sdata), |
339 | TP_ARGS(local, sdata) |
340 | ); |
341 | |
342 | TRACE_EVENT(drv_change_interface, |
343 | TP_PROTO(struct ieee80211_local *local, |
344 | struct ieee80211_sub_if_data *sdata, |
345 | enum nl80211_iftype type, bool p2p), |
346 | |
347 | TP_ARGS(local, sdata, type, p2p), |
348 | |
349 | TP_STRUCT__entry( |
350 | LOCAL_ENTRY |
351 | VIF_ENTRY |
352 | __field(u32, new_type) |
353 | __field(bool, new_p2p) |
354 | ), |
355 | |
356 | TP_fast_assign( |
357 | LOCAL_ASSIGN; |
358 | VIF_ASSIGN; |
359 | __entry->new_type = type; |
360 | __entry->new_p2p = p2p; |
361 | ), |
362 | |
363 | TP_printk( |
364 | LOCAL_PR_FMT VIF_PR_FMT " new type:%d%s" , |
365 | LOCAL_PR_ARG, VIF_PR_ARG, __entry->new_type, |
366 | __entry->new_p2p ? "/p2p" : "" |
367 | ) |
368 | ); |
369 | |
370 | DEFINE_EVENT(local_sdata_addr_evt, drv_remove_interface, |
371 | TP_PROTO(struct ieee80211_local *local, |
372 | struct ieee80211_sub_if_data *sdata), |
373 | TP_ARGS(local, sdata) |
374 | ); |
375 | |
376 | TRACE_EVENT(drv_config, |
377 | TP_PROTO(struct ieee80211_local *local, |
378 | u32 changed), |
379 | |
380 | TP_ARGS(local, changed), |
381 | |
382 | TP_STRUCT__entry( |
383 | LOCAL_ENTRY |
384 | __field(u32, changed) |
385 | __field(u32, flags) |
386 | __field(int, power_level) |
387 | __field(int, dynamic_ps_timeout) |
388 | __field(u16, listen_interval) |
389 | __field(u8, long_frame_max_tx_count) |
390 | __field(u8, short_frame_max_tx_count) |
391 | CHANDEF_ENTRY |
392 | __field(int, smps) |
393 | ), |
394 | |
395 | TP_fast_assign( |
396 | LOCAL_ASSIGN; |
397 | __entry->changed = changed; |
398 | __entry->flags = local->hw.conf.flags; |
399 | __entry->power_level = local->hw.conf.power_level; |
400 | __entry->dynamic_ps_timeout = local->hw.conf.dynamic_ps_timeout; |
401 | __entry->listen_interval = local->hw.conf.listen_interval; |
402 | __entry->long_frame_max_tx_count = |
403 | local->hw.conf.long_frame_max_tx_count; |
404 | __entry->short_frame_max_tx_count = |
405 | local->hw.conf.short_frame_max_tx_count; |
406 | CHANDEF_ASSIGN(&local->hw.conf.chandef) |
407 | __entry->smps = local->hw.conf.smps_mode; |
408 | ), |
409 | |
410 | TP_printk( |
411 | LOCAL_PR_FMT " ch:%#x" CHANDEF_PR_FMT, |
412 | LOCAL_PR_ARG, __entry->changed, CHANDEF_PR_ARG |
413 | ) |
414 | ); |
415 | |
416 | TRACE_EVENT(drv_vif_cfg_changed, |
417 | TP_PROTO(struct ieee80211_local *local, |
418 | struct ieee80211_sub_if_data *sdata, |
419 | u64 changed), |
420 | |
421 | TP_ARGS(local, sdata, changed), |
422 | |
423 | TP_STRUCT__entry( |
424 | LOCAL_ENTRY |
425 | VIF_ENTRY |
426 | __field(u64, changed) |
427 | __field(bool, assoc) |
428 | __field(bool, ibss_joined) |
429 | __field(bool, ibss_creator) |
430 | __field(u16, aid) |
431 | __dynamic_array(u32, arp_addr_list, |
432 | sdata->vif.cfg.arp_addr_cnt > IEEE80211_BSS_ARP_ADDR_LIST_LEN ? |
433 | IEEE80211_BSS_ARP_ADDR_LIST_LEN : |
434 | sdata->vif.cfg.arp_addr_cnt) |
435 | __field(int, arp_addr_cnt) |
436 | __dynamic_array(u8, ssid, sdata->vif.cfg.ssid_len) |
437 | __field(int, s1g) |
438 | __field(bool, idle) |
439 | __field(bool, ps) |
440 | ), |
441 | |
442 | TP_fast_assign( |
443 | LOCAL_ASSIGN; |
444 | VIF_ASSIGN; |
445 | __entry->changed = changed; |
446 | __entry->aid = sdata->vif.cfg.aid; |
447 | __entry->assoc = sdata->vif.cfg.assoc; |
448 | __entry->ibss_joined = sdata->vif.cfg.ibss_joined; |
449 | __entry->ibss_creator = sdata->vif.cfg.ibss_creator; |
450 | __entry->ps = sdata->vif.cfg.ps; |
451 | |
452 | __entry->arp_addr_cnt = sdata->vif.cfg.arp_addr_cnt; |
453 | memcpy(__get_dynamic_array(arp_addr_list), |
454 | sdata->vif.cfg.arp_addr_list, |
455 | sizeof(u32) * (sdata->vif.cfg.arp_addr_cnt > IEEE80211_BSS_ARP_ADDR_LIST_LEN ? |
456 | IEEE80211_BSS_ARP_ADDR_LIST_LEN : |
457 | sdata->vif.cfg.arp_addr_cnt)); |
458 | memcpy(__get_dynamic_array(ssid), |
459 | sdata->vif.cfg.ssid, |
460 | sdata->vif.cfg.ssid_len); |
461 | __entry->s1g = sdata->vif.cfg.s1g; |
462 | __entry->idle = sdata->vif.cfg.idle; |
463 | ), |
464 | |
465 | TP_printk( |
466 | LOCAL_PR_FMT VIF_PR_FMT " changed:%#llx" , |
467 | LOCAL_PR_ARG, VIF_PR_ARG, __entry->changed |
468 | ) |
469 | ); |
470 | |
471 | TRACE_EVENT(drv_link_info_changed, |
472 | TP_PROTO(struct ieee80211_local *local, |
473 | struct ieee80211_sub_if_data *sdata, |
474 | struct ieee80211_bss_conf *link_conf, |
475 | u64 changed), |
476 | |
477 | TP_ARGS(local, sdata, link_conf, changed), |
478 | |
479 | TP_STRUCT__entry( |
480 | LOCAL_ENTRY |
481 | VIF_ENTRY |
482 | __field(u64, changed) |
483 | __field(int, link_id) |
484 | __field(bool, cts) |
485 | __field(bool, shortpre) |
486 | __field(bool, shortslot) |
487 | __field(bool, enable_beacon) |
488 | __field(u8, dtimper) |
489 | __field(u16, bcnint) |
490 | __field(u16, assoc_cap) |
491 | __field(u64, sync_tsf) |
492 | __field(u32, sync_device_ts) |
493 | __field(u8, sync_dtim_count) |
494 | __field(u32, basic_rates) |
495 | __array(int, mcast_rate, NUM_NL80211_BANDS) |
496 | __field(u16, ht_operation_mode) |
497 | __field(s32, cqm_rssi_thold) |
498 | __field(s32, cqm_rssi_hyst) |
499 | __field(u32, channel_width) |
500 | __field(u32, channel_cfreq1) |
501 | __field(u32, channel_cfreq1_offset) |
502 | __field(bool, qos) |
503 | __field(bool, hidden_ssid) |
504 | __field(int, txpower) |
505 | __field(u8, p2p_oppps_ctwindow) |
506 | ), |
507 | |
508 | TP_fast_assign( |
509 | LOCAL_ASSIGN; |
510 | VIF_ASSIGN; |
511 | __entry->changed = changed; |
512 | __entry->link_id = link_conf->link_id; |
513 | __entry->shortpre = link_conf->use_short_preamble; |
514 | __entry->cts = link_conf->use_cts_prot; |
515 | __entry->shortslot = link_conf->use_short_slot; |
516 | __entry->enable_beacon = link_conf->enable_beacon; |
517 | __entry->dtimper = link_conf->dtim_period; |
518 | __entry->bcnint = link_conf->beacon_int; |
519 | __entry->assoc_cap = link_conf->assoc_capability; |
520 | __entry->sync_tsf = link_conf->sync_tsf; |
521 | __entry->sync_device_ts = link_conf->sync_device_ts; |
522 | __entry->sync_dtim_count = link_conf->sync_dtim_count; |
523 | __entry->basic_rates = link_conf->basic_rates; |
524 | memcpy(__entry->mcast_rate, link_conf->mcast_rate, |
525 | sizeof(__entry->mcast_rate)); |
526 | __entry->ht_operation_mode = link_conf->ht_operation_mode; |
527 | __entry->cqm_rssi_thold = link_conf->cqm_rssi_thold; |
528 | __entry->cqm_rssi_hyst = link_conf->cqm_rssi_hyst; |
529 | __entry->channel_width = link_conf->chanreq.oper.width; |
530 | __entry->channel_cfreq1 = link_conf->chanreq.oper.center_freq1; |
531 | __entry->channel_cfreq1_offset = link_conf->chanreq.oper.freq1_offset; |
532 | __entry->qos = link_conf->qos; |
533 | __entry->hidden_ssid = link_conf->hidden_ssid; |
534 | __entry->txpower = link_conf->txpower; |
535 | __entry->p2p_oppps_ctwindow = link_conf->p2p_noa_attr.oppps_ctwindow; |
536 | ), |
537 | |
538 | TP_printk( |
539 | LOCAL_PR_FMT VIF_PR_FMT " link_id:%d, changed:%#llx" , |
540 | LOCAL_PR_ARG, VIF_PR_ARG, __entry->link_id, |
541 | __entry->changed |
542 | ) |
543 | ); |
544 | |
545 | TRACE_EVENT(drv_prepare_multicast, |
546 | TP_PROTO(struct ieee80211_local *local, int mc_count), |
547 | |
548 | TP_ARGS(local, mc_count), |
549 | |
550 | TP_STRUCT__entry( |
551 | LOCAL_ENTRY |
552 | __field(int, mc_count) |
553 | ), |
554 | |
555 | TP_fast_assign( |
556 | LOCAL_ASSIGN; |
557 | __entry->mc_count = mc_count; |
558 | ), |
559 | |
560 | TP_printk( |
561 | LOCAL_PR_FMT " prepare mc (%d)" , |
562 | LOCAL_PR_ARG, __entry->mc_count |
563 | ) |
564 | ); |
565 | |
566 | TRACE_EVENT(drv_configure_filter, |
567 | TP_PROTO(struct ieee80211_local *local, |
568 | unsigned int changed_flags, |
569 | unsigned int *total_flags, |
570 | u64 multicast), |
571 | |
572 | TP_ARGS(local, changed_flags, total_flags, multicast), |
573 | |
574 | TP_STRUCT__entry( |
575 | LOCAL_ENTRY |
576 | __field(unsigned int, changed) |
577 | __field(unsigned int, total) |
578 | __field(u64, multicast) |
579 | ), |
580 | |
581 | TP_fast_assign( |
582 | LOCAL_ASSIGN; |
583 | __entry->changed = changed_flags; |
584 | __entry->total = *total_flags; |
585 | __entry->multicast = multicast; |
586 | ), |
587 | |
588 | TP_printk( |
589 | LOCAL_PR_FMT " changed:%#x total:%#x" , |
590 | LOCAL_PR_ARG, __entry->changed, __entry->total |
591 | ) |
592 | ); |
593 | |
594 | TRACE_EVENT(drv_config_iface_filter, |
595 | TP_PROTO(struct ieee80211_local *local, |
596 | struct ieee80211_sub_if_data *sdata, |
597 | unsigned int filter_flags, |
598 | unsigned int changed_flags), |
599 | |
600 | TP_ARGS(local, sdata, filter_flags, changed_flags), |
601 | |
602 | TP_STRUCT__entry( |
603 | LOCAL_ENTRY |
604 | VIF_ENTRY |
605 | __field(unsigned int, filter_flags) |
606 | __field(unsigned int, changed_flags) |
607 | ), |
608 | |
609 | TP_fast_assign( |
610 | LOCAL_ASSIGN; |
611 | VIF_ASSIGN; |
612 | __entry->filter_flags = filter_flags; |
613 | __entry->changed_flags = changed_flags; |
614 | ), |
615 | |
616 | TP_printk( |
617 | LOCAL_PR_FMT VIF_PR_FMT |
618 | " filter_flags: %#x changed_flags: %#x" , |
619 | LOCAL_PR_ARG, VIF_PR_ARG, __entry->filter_flags, |
620 | __entry->changed_flags |
621 | ) |
622 | ); |
623 | |
624 | TRACE_EVENT(drv_set_tim, |
625 | TP_PROTO(struct ieee80211_local *local, |
626 | struct ieee80211_sta *sta, bool set), |
627 | |
628 | TP_ARGS(local, sta, set), |
629 | |
630 | TP_STRUCT__entry( |
631 | LOCAL_ENTRY |
632 | STA_ENTRY |
633 | __field(bool, set) |
634 | ), |
635 | |
636 | TP_fast_assign( |
637 | LOCAL_ASSIGN; |
638 | STA_ASSIGN; |
639 | __entry->set = set; |
640 | ), |
641 | |
642 | TP_printk( |
643 | LOCAL_PR_FMT STA_PR_FMT " set:%d" , |
644 | LOCAL_PR_ARG, STA_PR_ARG, __entry->set |
645 | ) |
646 | ); |
647 | |
648 | TRACE_EVENT(drv_set_key, |
649 | TP_PROTO(struct ieee80211_local *local, |
650 | enum set_key_cmd cmd, struct ieee80211_sub_if_data *sdata, |
651 | struct ieee80211_sta *sta, |
652 | struct ieee80211_key_conf *key), |
653 | |
654 | TP_ARGS(local, cmd, sdata, sta, key), |
655 | |
656 | TP_STRUCT__entry( |
657 | LOCAL_ENTRY |
658 | VIF_ENTRY |
659 | STA_ENTRY |
660 | __field(u32, cmd) |
661 | KEY_ENTRY |
662 | ), |
663 | |
664 | TP_fast_assign( |
665 | LOCAL_ASSIGN; |
666 | VIF_ASSIGN; |
667 | STA_ASSIGN; |
668 | __entry->cmd = cmd; |
669 | KEY_ASSIGN(key); |
670 | ), |
671 | |
672 | TP_printk( |
673 | LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT " cmd: %d" KEY_PR_FMT, |
674 | LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG, __entry->cmd, KEY_PR_ARG |
675 | ) |
676 | ); |
677 | |
678 | TRACE_EVENT(drv_update_tkip_key, |
679 | TP_PROTO(struct ieee80211_local *local, |
680 | struct ieee80211_sub_if_data *sdata, |
681 | struct ieee80211_key_conf *conf, |
682 | struct ieee80211_sta *sta, u32 iv32), |
683 | |
684 | TP_ARGS(local, sdata, conf, sta, iv32), |
685 | |
686 | TP_STRUCT__entry( |
687 | LOCAL_ENTRY |
688 | VIF_ENTRY |
689 | STA_ENTRY |
690 | __field(u32, iv32) |
691 | ), |
692 | |
693 | TP_fast_assign( |
694 | LOCAL_ASSIGN; |
695 | VIF_ASSIGN; |
696 | STA_ASSIGN; |
697 | __entry->iv32 = iv32; |
698 | ), |
699 | |
700 | TP_printk( |
701 | LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT " iv32:%#x" , |
702 | LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG, __entry->iv32 |
703 | ) |
704 | ); |
705 | |
706 | DEFINE_EVENT(local_sdata_evt, drv_hw_scan, |
707 | TP_PROTO(struct ieee80211_local *local, |
708 | struct ieee80211_sub_if_data *sdata), |
709 | TP_ARGS(local, sdata) |
710 | ); |
711 | |
712 | DEFINE_EVENT(local_sdata_evt, drv_cancel_hw_scan, |
713 | TP_PROTO(struct ieee80211_local *local, |
714 | struct ieee80211_sub_if_data *sdata), |
715 | TP_ARGS(local, sdata) |
716 | ); |
717 | |
718 | DEFINE_EVENT(local_sdata_evt, drv_sched_scan_start, |
719 | TP_PROTO(struct ieee80211_local *local, |
720 | struct ieee80211_sub_if_data *sdata), |
721 | TP_ARGS(local, sdata) |
722 | ); |
723 | |
724 | DEFINE_EVENT(local_sdata_evt, drv_sched_scan_stop, |
725 | TP_PROTO(struct ieee80211_local *local, |
726 | struct ieee80211_sub_if_data *sdata), |
727 | TP_ARGS(local, sdata) |
728 | ); |
729 | |
730 | TRACE_EVENT(drv_sw_scan_start, |
731 | TP_PROTO(struct ieee80211_local *local, |
732 | struct ieee80211_sub_if_data *sdata, |
733 | const u8 *mac_addr), |
734 | |
735 | TP_ARGS(local, sdata, mac_addr), |
736 | |
737 | TP_STRUCT__entry( |
738 | LOCAL_ENTRY |
739 | VIF_ENTRY |
740 | __array(char, mac_addr, ETH_ALEN) |
741 | ), |
742 | |
743 | TP_fast_assign( |
744 | LOCAL_ASSIGN; |
745 | VIF_ASSIGN; |
746 | memcpy(__entry->mac_addr, mac_addr, ETH_ALEN); |
747 | ), |
748 | |
749 | TP_printk(LOCAL_PR_FMT ", " VIF_PR_FMT ", addr:%pM" , |
750 | LOCAL_PR_ARG, VIF_PR_ARG, __entry->mac_addr) |
751 | ); |
752 | |
753 | DEFINE_EVENT(local_sdata_evt, drv_sw_scan_complete, |
754 | TP_PROTO(struct ieee80211_local *local, |
755 | struct ieee80211_sub_if_data *sdata), |
756 | TP_ARGS(local, sdata) |
757 | ); |
758 | |
759 | TRACE_EVENT(drv_get_stats, |
760 | TP_PROTO(struct ieee80211_local *local, |
761 | struct ieee80211_low_level_stats *stats, |
762 | int ret), |
763 | |
764 | TP_ARGS(local, stats, ret), |
765 | |
766 | TP_STRUCT__entry( |
767 | LOCAL_ENTRY |
768 | __field(int, ret) |
769 | __field(unsigned int, ackfail) |
770 | __field(unsigned int, rtsfail) |
771 | __field(unsigned int, fcserr) |
772 | __field(unsigned int, rtssucc) |
773 | ), |
774 | |
775 | TP_fast_assign( |
776 | LOCAL_ASSIGN; |
777 | __entry->ret = ret; |
778 | __entry->ackfail = stats->dot11ACKFailureCount; |
779 | __entry->rtsfail = stats->dot11RTSFailureCount; |
780 | __entry->fcserr = stats->dot11FCSErrorCount; |
781 | __entry->rtssucc = stats->dot11RTSSuccessCount; |
782 | ), |
783 | |
784 | TP_printk( |
785 | LOCAL_PR_FMT " ret:%d" , |
786 | LOCAL_PR_ARG, __entry->ret |
787 | ) |
788 | ); |
789 | |
790 | TRACE_EVENT(drv_get_key_seq, |
791 | TP_PROTO(struct ieee80211_local *local, |
792 | struct ieee80211_key_conf *key), |
793 | |
794 | TP_ARGS(local, key), |
795 | |
796 | TP_STRUCT__entry( |
797 | LOCAL_ENTRY |
798 | KEY_ENTRY |
799 | ), |
800 | |
801 | TP_fast_assign( |
802 | LOCAL_ASSIGN; |
803 | KEY_ASSIGN(key); |
804 | ), |
805 | |
806 | TP_printk( |
807 | LOCAL_PR_FMT KEY_PR_FMT, |
808 | LOCAL_PR_ARG, KEY_PR_ARG |
809 | ) |
810 | ); |
811 | |
812 | DEFINE_EVENT(local_u32_evt, drv_set_frag_threshold, |
813 | TP_PROTO(struct ieee80211_local *local, u32 value), |
814 | TP_ARGS(local, value) |
815 | ); |
816 | |
817 | DEFINE_EVENT(local_u32_evt, drv_set_rts_threshold, |
818 | TP_PROTO(struct ieee80211_local *local, u32 value), |
819 | TP_ARGS(local, value) |
820 | ); |
821 | |
822 | TRACE_EVENT(drv_set_coverage_class, |
823 | TP_PROTO(struct ieee80211_local *local, s16 value), |
824 | |
825 | TP_ARGS(local, value), |
826 | |
827 | TP_STRUCT__entry( |
828 | LOCAL_ENTRY |
829 | __field(s16, value) |
830 | ), |
831 | |
832 | TP_fast_assign( |
833 | LOCAL_ASSIGN; |
834 | __entry->value = value; |
835 | ), |
836 | |
837 | TP_printk( |
838 | LOCAL_PR_FMT " value:%d" , |
839 | LOCAL_PR_ARG, __entry->value |
840 | ) |
841 | ); |
842 | |
843 | TRACE_EVENT(drv_sta_notify, |
844 | TP_PROTO(struct ieee80211_local *local, |
845 | struct ieee80211_sub_if_data *sdata, |
846 | enum sta_notify_cmd cmd, |
847 | struct ieee80211_sta *sta), |
848 | |
849 | TP_ARGS(local, sdata, cmd, sta), |
850 | |
851 | TP_STRUCT__entry( |
852 | LOCAL_ENTRY |
853 | VIF_ENTRY |
854 | STA_ENTRY |
855 | __field(u32, cmd) |
856 | ), |
857 | |
858 | TP_fast_assign( |
859 | LOCAL_ASSIGN; |
860 | VIF_ASSIGN; |
861 | STA_ASSIGN; |
862 | __entry->cmd = cmd; |
863 | ), |
864 | |
865 | TP_printk( |
866 | LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT " cmd:%d" , |
867 | LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG, __entry->cmd |
868 | ) |
869 | ); |
870 | |
871 | TRACE_EVENT(drv_sta_state, |
872 | TP_PROTO(struct ieee80211_local *local, |
873 | struct ieee80211_sub_if_data *sdata, |
874 | struct ieee80211_sta *sta, |
875 | enum ieee80211_sta_state old_state, |
876 | enum ieee80211_sta_state new_state), |
877 | |
878 | TP_ARGS(local, sdata, sta, old_state, new_state), |
879 | |
880 | TP_STRUCT__entry( |
881 | LOCAL_ENTRY |
882 | VIF_ENTRY |
883 | STA_ENTRY |
884 | __field(u32, old_state) |
885 | __field(u32, new_state) |
886 | ), |
887 | |
888 | TP_fast_assign( |
889 | LOCAL_ASSIGN; |
890 | VIF_ASSIGN; |
891 | STA_ASSIGN; |
892 | __entry->old_state = old_state; |
893 | __entry->new_state = new_state; |
894 | ), |
895 | |
896 | TP_printk( |
897 | LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT " state: %d->%d" , |
898 | LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG, |
899 | __entry->old_state, __entry->new_state |
900 | ) |
901 | ); |
902 | |
903 | TRACE_EVENT(drv_sta_set_txpwr, |
904 | TP_PROTO(struct ieee80211_local *local, |
905 | struct ieee80211_sub_if_data *sdata, |
906 | struct ieee80211_sta *sta), |
907 | |
908 | TP_ARGS(local, sdata, sta), |
909 | |
910 | TP_STRUCT__entry( |
911 | LOCAL_ENTRY |
912 | VIF_ENTRY |
913 | STA_ENTRY |
914 | __field(s16, txpwr) |
915 | __field(u8, type) |
916 | ), |
917 | |
918 | TP_fast_assign( |
919 | LOCAL_ASSIGN; |
920 | VIF_ASSIGN; |
921 | STA_ASSIGN; |
922 | __entry->txpwr = sta->deflink.txpwr.power; |
923 | __entry->type = sta->deflink.txpwr.type; |
924 | ), |
925 | |
926 | TP_printk( |
927 | LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT " txpwr: %d type %d" , |
928 | LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG, |
929 | __entry->txpwr, __entry->type |
930 | ) |
931 | ); |
932 | |
933 | TRACE_EVENT(drv_sta_rc_update, |
934 | TP_PROTO(struct ieee80211_local *local, |
935 | struct ieee80211_sub_if_data *sdata, |
936 | struct ieee80211_sta *sta, |
937 | u32 changed), |
938 | |
939 | TP_ARGS(local, sdata, sta, changed), |
940 | |
941 | TP_STRUCT__entry( |
942 | LOCAL_ENTRY |
943 | VIF_ENTRY |
944 | STA_ENTRY |
945 | __field(u32, changed) |
946 | ), |
947 | |
948 | TP_fast_assign( |
949 | LOCAL_ASSIGN; |
950 | VIF_ASSIGN; |
951 | STA_ASSIGN; |
952 | __entry->changed = changed; |
953 | ), |
954 | |
955 | TP_printk( |
956 | LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT " changed: 0x%x" , |
957 | LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG, __entry->changed |
958 | ) |
959 | ); |
960 | |
961 | DECLARE_EVENT_CLASS(sta_event, |
962 | TP_PROTO(struct ieee80211_local *local, |
963 | struct ieee80211_sub_if_data *sdata, |
964 | struct ieee80211_sta *sta), |
965 | |
966 | TP_ARGS(local, sdata, sta), |
967 | |
968 | TP_STRUCT__entry( |
969 | LOCAL_ENTRY |
970 | VIF_ENTRY |
971 | STA_ENTRY |
972 | ), |
973 | |
974 | TP_fast_assign( |
975 | LOCAL_ASSIGN; |
976 | VIF_ASSIGN; |
977 | STA_ASSIGN; |
978 | ), |
979 | |
980 | TP_printk( |
981 | LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT, |
982 | LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG |
983 | ) |
984 | ); |
985 | |
986 | DEFINE_EVENT(sta_event, drv_sta_statistics, |
987 | TP_PROTO(struct ieee80211_local *local, |
988 | struct ieee80211_sub_if_data *sdata, |
989 | struct ieee80211_sta *sta), |
990 | TP_ARGS(local, sdata, sta) |
991 | ); |
992 | |
993 | DEFINE_EVENT(sta_event, drv_sta_add, |
994 | TP_PROTO(struct ieee80211_local *local, |
995 | struct ieee80211_sub_if_data *sdata, |
996 | struct ieee80211_sta *sta), |
997 | TP_ARGS(local, sdata, sta) |
998 | ); |
999 | |
1000 | DEFINE_EVENT(sta_event, drv_sta_remove, |
1001 | TP_PROTO(struct ieee80211_local *local, |
1002 | struct ieee80211_sub_if_data *sdata, |
1003 | struct ieee80211_sta *sta), |
1004 | TP_ARGS(local, sdata, sta) |
1005 | ); |
1006 | |
1007 | DEFINE_EVENT(sta_event, drv_sta_pre_rcu_remove, |
1008 | TP_PROTO(struct ieee80211_local *local, |
1009 | struct ieee80211_sub_if_data *sdata, |
1010 | struct ieee80211_sta *sta), |
1011 | TP_ARGS(local, sdata, sta) |
1012 | ); |
1013 | |
1014 | DEFINE_EVENT(sta_event, drv_sync_rx_queues, |
1015 | TP_PROTO(struct ieee80211_local *local, |
1016 | struct ieee80211_sub_if_data *sdata, |
1017 | struct ieee80211_sta *sta), |
1018 | TP_ARGS(local, sdata, sta) |
1019 | ); |
1020 | |
1021 | DEFINE_EVENT(sta_event, drv_sta_rate_tbl_update, |
1022 | TP_PROTO(struct ieee80211_local *local, |
1023 | struct ieee80211_sub_if_data *sdata, |
1024 | struct ieee80211_sta *sta), |
1025 | TP_ARGS(local, sdata, sta) |
1026 | ); |
1027 | |
1028 | TRACE_EVENT(drv_conf_tx, |
1029 | TP_PROTO(struct ieee80211_local *local, |
1030 | struct ieee80211_sub_if_data *sdata, |
1031 | unsigned int link_id, |
1032 | u16 ac, const struct ieee80211_tx_queue_params *params), |
1033 | |
1034 | TP_ARGS(local, sdata, link_id, ac, params), |
1035 | |
1036 | TP_STRUCT__entry( |
1037 | LOCAL_ENTRY |
1038 | VIF_ENTRY |
1039 | __field(unsigned int, link_id) |
1040 | __field(u16, ac) |
1041 | __field(u16, txop) |
1042 | __field(u16, cw_min) |
1043 | __field(u16, cw_max) |
1044 | __field(u8, aifs) |
1045 | __field(bool, uapsd) |
1046 | ), |
1047 | |
1048 | TP_fast_assign( |
1049 | LOCAL_ASSIGN; |
1050 | VIF_ASSIGN; |
1051 | __entry->link_id = link_id; |
1052 | __entry->ac = ac; |
1053 | __entry->txop = params->txop; |
1054 | __entry->cw_max = params->cw_max; |
1055 | __entry->cw_min = params->cw_min; |
1056 | __entry->aifs = params->aifs; |
1057 | __entry->uapsd = params->uapsd; |
1058 | ), |
1059 | |
1060 | TP_printk( |
1061 | LOCAL_PR_FMT VIF_PR_FMT " link_id: %d, AC:%d" , |
1062 | LOCAL_PR_ARG, VIF_PR_ARG, __entry->link_id, __entry->ac |
1063 | ) |
1064 | ); |
1065 | |
1066 | DEFINE_EVENT(local_sdata_evt, drv_get_tsf, |
1067 | TP_PROTO(struct ieee80211_local *local, |
1068 | struct ieee80211_sub_if_data *sdata), |
1069 | TP_ARGS(local, sdata) |
1070 | ); |
1071 | |
1072 | TRACE_EVENT(drv_set_tsf, |
1073 | TP_PROTO(struct ieee80211_local *local, |
1074 | struct ieee80211_sub_if_data *sdata, |
1075 | u64 tsf), |
1076 | |
1077 | TP_ARGS(local, sdata, tsf), |
1078 | |
1079 | TP_STRUCT__entry( |
1080 | LOCAL_ENTRY |
1081 | VIF_ENTRY |
1082 | __field(u64, tsf) |
1083 | ), |
1084 | |
1085 | TP_fast_assign( |
1086 | LOCAL_ASSIGN; |
1087 | VIF_ASSIGN; |
1088 | __entry->tsf = tsf; |
1089 | ), |
1090 | |
1091 | TP_printk( |
1092 | LOCAL_PR_FMT VIF_PR_FMT " tsf:%llu" , |
1093 | LOCAL_PR_ARG, VIF_PR_ARG, (unsigned long long)__entry->tsf |
1094 | ) |
1095 | ); |
1096 | |
1097 | TRACE_EVENT(drv_offset_tsf, |
1098 | TP_PROTO(struct ieee80211_local *local, |
1099 | struct ieee80211_sub_if_data *sdata, |
1100 | s64 offset), |
1101 | |
1102 | TP_ARGS(local, sdata, offset), |
1103 | |
1104 | TP_STRUCT__entry( |
1105 | LOCAL_ENTRY |
1106 | VIF_ENTRY |
1107 | __field(s64, tsf_offset) |
1108 | ), |
1109 | |
1110 | TP_fast_assign( |
1111 | LOCAL_ASSIGN; |
1112 | VIF_ASSIGN; |
1113 | __entry->tsf_offset = offset; |
1114 | ), |
1115 | |
1116 | TP_printk( |
1117 | LOCAL_PR_FMT VIF_PR_FMT " tsf offset:%lld" , |
1118 | LOCAL_PR_ARG, VIF_PR_ARG, |
1119 | (unsigned long long)__entry->tsf_offset |
1120 | ) |
1121 | ); |
1122 | |
1123 | DEFINE_EVENT(local_sdata_evt, drv_reset_tsf, |
1124 | TP_PROTO(struct ieee80211_local *local, |
1125 | struct ieee80211_sub_if_data *sdata), |
1126 | TP_ARGS(local, sdata) |
1127 | ); |
1128 | |
1129 | DEFINE_EVENT(local_only_evt, drv_tx_last_beacon, |
1130 | TP_PROTO(struct ieee80211_local *local), |
1131 | TP_ARGS(local) |
1132 | ); |
1133 | |
1134 | TRACE_EVENT(drv_ampdu_action, |
1135 | TP_PROTO(struct ieee80211_local *local, |
1136 | struct ieee80211_sub_if_data *sdata, |
1137 | struct ieee80211_ampdu_params *params), |
1138 | |
1139 | TP_ARGS(local, sdata, params), |
1140 | |
1141 | TP_STRUCT__entry( |
1142 | LOCAL_ENTRY |
1143 | VIF_ENTRY |
1144 | AMPDU_ACTION_ENTRY |
1145 | ), |
1146 | |
1147 | TP_fast_assign( |
1148 | LOCAL_ASSIGN; |
1149 | VIF_ASSIGN; |
1150 | AMPDU_ACTION_ASSIGN; |
1151 | ), |
1152 | |
1153 | TP_printk( |
1154 | LOCAL_PR_FMT VIF_PR_FMT AMPDU_ACTION_PR_FMT, |
1155 | LOCAL_PR_ARG, VIF_PR_ARG, AMPDU_ACTION_PR_ARG |
1156 | ) |
1157 | ); |
1158 | |
1159 | TRACE_EVENT(drv_get_survey, |
1160 | TP_PROTO(struct ieee80211_local *local, int _idx, |
1161 | struct survey_info *survey), |
1162 | |
1163 | TP_ARGS(local, _idx, survey), |
1164 | |
1165 | TP_STRUCT__entry( |
1166 | LOCAL_ENTRY |
1167 | __field(int, idx) |
1168 | ), |
1169 | |
1170 | TP_fast_assign( |
1171 | LOCAL_ASSIGN; |
1172 | __entry->idx = _idx; |
1173 | ), |
1174 | |
1175 | TP_printk( |
1176 | LOCAL_PR_FMT " idx:%d" , |
1177 | LOCAL_PR_ARG, __entry->idx |
1178 | ) |
1179 | ); |
1180 | |
1181 | TRACE_EVENT(drv_flush, |
1182 | TP_PROTO(struct ieee80211_local *local, |
1183 | u32 queues, bool drop), |
1184 | |
1185 | TP_ARGS(local, queues, drop), |
1186 | |
1187 | TP_STRUCT__entry( |
1188 | LOCAL_ENTRY |
1189 | __field(bool, drop) |
1190 | __field(u32, queues) |
1191 | ), |
1192 | |
1193 | TP_fast_assign( |
1194 | LOCAL_ASSIGN; |
1195 | __entry->drop = drop; |
1196 | __entry->queues = queues; |
1197 | ), |
1198 | |
1199 | TP_printk( |
1200 | LOCAL_PR_FMT " queues:0x%x drop:%d" , |
1201 | LOCAL_PR_ARG, __entry->queues, __entry->drop |
1202 | ) |
1203 | ); |
1204 | |
1205 | DEFINE_EVENT(sta_event, drv_flush_sta, |
1206 | TP_PROTO(struct ieee80211_local *local, |
1207 | struct ieee80211_sub_if_data *sdata, |
1208 | struct ieee80211_sta *sta), |
1209 | TP_ARGS(local, sdata, sta) |
1210 | ); |
1211 | |
1212 | DECLARE_EVENT_CLASS(chanswitch_evt, |
1213 | TP_PROTO(struct ieee80211_local *local, |
1214 | struct ieee80211_sub_if_data *sdata, |
1215 | struct ieee80211_channel_switch *ch_switch), |
1216 | |
1217 | TP_ARGS(local, sdata, ch_switch), |
1218 | |
1219 | TP_STRUCT__entry( |
1220 | LOCAL_ENTRY |
1221 | VIF_ENTRY |
1222 | CHANDEF_ENTRY |
1223 | __field(u64, timestamp) |
1224 | __field(u32, device_timestamp) |
1225 | __field(bool, block_tx) |
1226 | __field(u8, count) |
1227 | __field(u8, link_id) |
1228 | ), |
1229 | |
1230 | TP_fast_assign( |
1231 | LOCAL_ASSIGN; |
1232 | VIF_ASSIGN; |
1233 | CHANDEF_ASSIGN(&ch_switch->chandef) |
1234 | __entry->timestamp = ch_switch->timestamp; |
1235 | __entry->device_timestamp = ch_switch->device_timestamp; |
1236 | __entry->block_tx = ch_switch->block_tx; |
1237 | __entry->count = ch_switch->count; |
1238 | __entry->link_id = ch_switch->link_id; |
1239 | ), |
1240 | |
1241 | TP_printk( |
1242 | LOCAL_PR_FMT VIF_PR_FMT CHANDEF_PR_FMT " count:%d block_tx:%d timestamp:%llu device_ts:%u link_id:%d" , |
1243 | LOCAL_PR_ARG, VIF_PR_ARG, CHANDEF_PR_ARG, __entry->count, |
1244 | __entry->block_tx, __entry->timestamp, |
1245 | __entry->device_timestamp, __entry->link_id |
1246 | ) |
1247 | ); |
1248 | |
1249 | DEFINE_EVENT(chanswitch_evt, drv_channel_switch, |
1250 | TP_PROTO(struct ieee80211_local *local, |
1251 | struct ieee80211_sub_if_data *sdata, |
1252 | struct ieee80211_channel_switch *ch_switch), |
1253 | TP_ARGS(local, sdata, ch_switch) |
1254 | ); |
1255 | |
1256 | TRACE_EVENT(drv_set_antenna, |
1257 | TP_PROTO(struct ieee80211_local *local, u32 tx_ant, u32 rx_ant, int ret), |
1258 | |
1259 | TP_ARGS(local, tx_ant, rx_ant, ret), |
1260 | |
1261 | TP_STRUCT__entry( |
1262 | LOCAL_ENTRY |
1263 | __field(u32, tx_ant) |
1264 | __field(u32, rx_ant) |
1265 | __field(int, ret) |
1266 | ), |
1267 | |
1268 | TP_fast_assign( |
1269 | LOCAL_ASSIGN; |
1270 | __entry->tx_ant = tx_ant; |
1271 | __entry->rx_ant = rx_ant; |
1272 | __entry->ret = ret; |
1273 | ), |
1274 | |
1275 | TP_printk( |
1276 | LOCAL_PR_FMT " tx_ant:%d rx_ant:%d ret:%d" , |
1277 | LOCAL_PR_ARG, __entry->tx_ant, __entry->rx_ant, __entry->ret |
1278 | ) |
1279 | ); |
1280 | |
1281 | TRACE_EVENT(drv_get_antenna, |
1282 | TP_PROTO(struct ieee80211_local *local, u32 tx_ant, u32 rx_ant, int ret), |
1283 | |
1284 | TP_ARGS(local, tx_ant, rx_ant, ret), |
1285 | |
1286 | TP_STRUCT__entry( |
1287 | LOCAL_ENTRY |
1288 | __field(u32, tx_ant) |
1289 | __field(u32, rx_ant) |
1290 | __field(int, ret) |
1291 | ), |
1292 | |
1293 | TP_fast_assign( |
1294 | LOCAL_ASSIGN; |
1295 | __entry->tx_ant = tx_ant; |
1296 | __entry->rx_ant = rx_ant; |
1297 | __entry->ret = ret; |
1298 | ), |
1299 | |
1300 | TP_printk( |
1301 | LOCAL_PR_FMT " tx_ant:%d rx_ant:%d ret:%d" , |
1302 | LOCAL_PR_ARG, __entry->tx_ant, __entry->rx_ant, __entry->ret |
1303 | ) |
1304 | ); |
1305 | |
1306 | TRACE_EVENT(drv_remain_on_channel, |
1307 | TP_PROTO(struct ieee80211_local *local, |
1308 | struct ieee80211_sub_if_data *sdata, |
1309 | struct ieee80211_channel *chan, |
1310 | unsigned int duration, |
1311 | enum ieee80211_roc_type type), |
1312 | |
1313 | TP_ARGS(local, sdata, chan, duration, type), |
1314 | |
1315 | TP_STRUCT__entry( |
1316 | LOCAL_ENTRY |
1317 | VIF_ENTRY |
1318 | __field(int, center_freq) |
1319 | __field(int, freq_offset) |
1320 | __field(unsigned int, duration) |
1321 | __field(u32, type) |
1322 | ), |
1323 | |
1324 | TP_fast_assign( |
1325 | LOCAL_ASSIGN; |
1326 | VIF_ASSIGN; |
1327 | __entry->center_freq = chan->center_freq; |
1328 | __entry->freq_offset = chan->freq_offset; |
1329 | __entry->duration = duration; |
1330 | __entry->type = type; |
1331 | ), |
1332 | |
1333 | TP_printk( |
1334 | LOCAL_PR_FMT VIF_PR_FMT " freq:%d.%03dMHz duration:%dms type=%d" , |
1335 | LOCAL_PR_ARG, VIF_PR_ARG, |
1336 | __entry->center_freq, __entry->freq_offset, |
1337 | __entry->duration, __entry->type |
1338 | ) |
1339 | ); |
1340 | |
1341 | DEFINE_EVENT(local_sdata_evt, drv_cancel_remain_on_channel, |
1342 | TP_PROTO(struct ieee80211_local *local, |
1343 | struct ieee80211_sub_if_data *sdata), |
1344 | TP_ARGS(local, sdata) |
1345 | ); |
1346 | |
1347 | TRACE_EVENT(drv_set_ringparam, |
1348 | TP_PROTO(struct ieee80211_local *local, u32 tx, u32 rx), |
1349 | |
1350 | TP_ARGS(local, tx, rx), |
1351 | |
1352 | TP_STRUCT__entry( |
1353 | LOCAL_ENTRY |
1354 | __field(u32, tx) |
1355 | __field(u32, rx) |
1356 | ), |
1357 | |
1358 | TP_fast_assign( |
1359 | LOCAL_ASSIGN; |
1360 | __entry->tx = tx; |
1361 | __entry->rx = rx; |
1362 | ), |
1363 | |
1364 | TP_printk( |
1365 | LOCAL_PR_FMT " tx:%d rx %d" , |
1366 | LOCAL_PR_ARG, __entry->tx, __entry->rx |
1367 | ) |
1368 | ); |
1369 | |
1370 | TRACE_EVENT(drv_get_ringparam, |
1371 | TP_PROTO(struct ieee80211_local *local, u32 *tx, u32 *tx_max, |
1372 | u32 *rx, u32 *rx_max), |
1373 | |
1374 | TP_ARGS(local, tx, tx_max, rx, rx_max), |
1375 | |
1376 | TP_STRUCT__entry( |
1377 | LOCAL_ENTRY |
1378 | __field(u32, tx) |
1379 | __field(u32, tx_max) |
1380 | __field(u32, rx) |
1381 | __field(u32, rx_max) |
1382 | ), |
1383 | |
1384 | TP_fast_assign( |
1385 | LOCAL_ASSIGN; |
1386 | __entry->tx = *tx; |
1387 | __entry->tx_max = *tx_max; |
1388 | __entry->rx = *rx; |
1389 | __entry->rx_max = *rx_max; |
1390 | ), |
1391 | |
1392 | TP_printk( |
1393 | LOCAL_PR_FMT " tx:%d tx_max %d rx %d rx_max %d" , |
1394 | LOCAL_PR_ARG, |
1395 | __entry->tx, __entry->tx_max, __entry->rx, __entry->rx_max |
1396 | ) |
1397 | ); |
1398 | |
1399 | DEFINE_EVENT(local_only_evt, drv_tx_frames_pending, |
1400 | TP_PROTO(struct ieee80211_local *local), |
1401 | TP_ARGS(local) |
1402 | ); |
1403 | |
1404 | DEFINE_EVENT(local_only_evt, drv_offchannel_tx_cancel_wait, |
1405 | TP_PROTO(struct ieee80211_local *local), |
1406 | TP_ARGS(local) |
1407 | ); |
1408 | |
1409 | TRACE_EVENT(drv_set_bitrate_mask, |
1410 | TP_PROTO(struct ieee80211_local *local, |
1411 | struct ieee80211_sub_if_data *sdata, |
1412 | const struct cfg80211_bitrate_mask *mask), |
1413 | |
1414 | TP_ARGS(local, sdata, mask), |
1415 | |
1416 | TP_STRUCT__entry( |
1417 | LOCAL_ENTRY |
1418 | VIF_ENTRY |
1419 | __field(u32, legacy_2g) |
1420 | __field(u32, legacy_5g) |
1421 | ), |
1422 | |
1423 | TP_fast_assign( |
1424 | LOCAL_ASSIGN; |
1425 | VIF_ASSIGN; |
1426 | __entry->legacy_2g = mask->control[NL80211_BAND_2GHZ].legacy; |
1427 | __entry->legacy_5g = mask->control[NL80211_BAND_5GHZ].legacy; |
1428 | ), |
1429 | |
1430 | TP_printk( |
1431 | LOCAL_PR_FMT VIF_PR_FMT " 2G Mask:0x%x 5G Mask:0x%x" , |
1432 | LOCAL_PR_ARG, VIF_PR_ARG, __entry->legacy_2g, __entry->legacy_5g |
1433 | ) |
1434 | ); |
1435 | |
1436 | TRACE_EVENT(drv_set_rekey_data, |
1437 | TP_PROTO(struct ieee80211_local *local, |
1438 | struct ieee80211_sub_if_data *sdata, |
1439 | struct cfg80211_gtk_rekey_data *data), |
1440 | |
1441 | TP_ARGS(local, sdata, data), |
1442 | |
1443 | TP_STRUCT__entry( |
1444 | LOCAL_ENTRY |
1445 | VIF_ENTRY |
1446 | __array(u8, kek, NL80211_KEK_LEN) |
1447 | __array(u8, kck, NL80211_KCK_LEN) |
1448 | __array(u8, replay_ctr, NL80211_REPLAY_CTR_LEN) |
1449 | ), |
1450 | |
1451 | TP_fast_assign( |
1452 | LOCAL_ASSIGN; |
1453 | VIF_ASSIGN; |
1454 | memcpy(__entry->kek, data->kek, NL80211_KEK_LEN); |
1455 | memcpy(__entry->kck, data->kck, NL80211_KCK_LEN); |
1456 | memcpy(__entry->replay_ctr, data->replay_ctr, |
1457 | NL80211_REPLAY_CTR_LEN); |
1458 | ), |
1459 | |
1460 | TP_printk(LOCAL_PR_FMT VIF_PR_FMT, |
1461 | LOCAL_PR_ARG, VIF_PR_ARG) |
1462 | ); |
1463 | |
1464 | TRACE_EVENT(drv_event_callback, |
1465 | TP_PROTO(struct ieee80211_local *local, |
1466 | struct ieee80211_sub_if_data *sdata, |
1467 | const struct ieee80211_event *_event), |
1468 | |
1469 | TP_ARGS(local, sdata, _event), |
1470 | |
1471 | TP_STRUCT__entry( |
1472 | LOCAL_ENTRY |
1473 | VIF_ENTRY |
1474 | __field(u32, type) |
1475 | ), |
1476 | |
1477 | TP_fast_assign( |
1478 | LOCAL_ASSIGN; |
1479 | VIF_ASSIGN; |
1480 | __entry->type = _event->type; |
1481 | ), |
1482 | |
1483 | TP_printk( |
1484 | LOCAL_PR_FMT VIF_PR_FMT " event:%d" , |
1485 | LOCAL_PR_ARG, VIF_PR_ARG, __entry->type |
1486 | ) |
1487 | ); |
1488 | |
1489 | DECLARE_EVENT_CLASS(release_evt, |
1490 | TP_PROTO(struct ieee80211_local *local, |
1491 | struct ieee80211_sta *sta, |
1492 | u16 tids, int num_frames, |
1493 | enum ieee80211_frame_release_type reason, |
1494 | bool more_data), |
1495 | |
1496 | TP_ARGS(local, sta, tids, num_frames, reason, more_data), |
1497 | |
1498 | TP_STRUCT__entry( |
1499 | LOCAL_ENTRY |
1500 | STA_ENTRY |
1501 | __field(u16, tids) |
1502 | __field(int, num_frames) |
1503 | __field(int, reason) |
1504 | __field(bool, more_data) |
1505 | ), |
1506 | |
1507 | TP_fast_assign( |
1508 | LOCAL_ASSIGN; |
1509 | STA_ASSIGN; |
1510 | __entry->tids = tids; |
1511 | __entry->num_frames = num_frames; |
1512 | __entry->reason = reason; |
1513 | __entry->more_data = more_data; |
1514 | ), |
1515 | |
1516 | TP_printk( |
1517 | LOCAL_PR_FMT STA_PR_FMT |
1518 | " TIDs:0x%.4x frames:%d reason:%d more:%d" , |
1519 | LOCAL_PR_ARG, STA_PR_ARG, __entry->tids, __entry->num_frames, |
1520 | __entry->reason, __entry->more_data |
1521 | ) |
1522 | ); |
1523 | |
1524 | DEFINE_EVENT(release_evt, drv_release_buffered_frames, |
1525 | TP_PROTO(struct ieee80211_local *local, |
1526 | struct ieee80211_sta *sta, |
1527 | u16 tids, int num_frames, |
1528 | enum ieee80211_frame_release_type reason, |
1529 | bool more_data), |
1530 | |
1531 | TP_ARGS(local, sta, tids, num_frames, reason, more_data) |
1532 | ); |
1533 | |
1534 | DEFINE_EVENT(release_evt, drv_allow_buffered_frames, |
1535 | TP_PROTO(struct ieee80211_local *local, |
1536 | struct ieee80211_sta *sta, |
1537 | u16 tids, int num_frames, |
1538 | enum ieee80211_frame_release_type reason, |
1539 | bool more_data), |
1540 | |
1541 | TP_ARGS(local, sta, tids, num_frames, reason, more_data) |
1542 | ); |
1543 | |
1544 | DECLARE_EVENT_CLASS(mgd_prepare_complete_tx_evt, |
1545 | TP_PROTO(struct ieee80211_local *local, |
1546 | struct ieee80211_sub_if_data *sdata, |
1547 | u16 duration, u16 subtype, bool success), |
1548 | |
1549 | TP_ARGS(local, sdata, duration, subtype, success), |
1550 | |
1551 | TP_STRUCT__entry( |
1552 | LOCAL_ENTRY |
1553 | VIF_ENTRY |
1554 | __field(u32, duration) |
1555 | __field(u16, subtype) |
1556 | __field(u8, success) |
1557 | ), |
1558 | |
1559 | TP_fast_assign( |
1560 | LOCAL_ASSIGN; |
1561 | VIF_ASSIGN; |
1562 | __entry->duration = duration; |
1563 | __entry->subtype = subtype; |
1564 | __entry->success = success; |
1565 | ), |
1566 | |
1567 | TP_printk( |
1568 | LOCAL_PR_FMT VIF_PR_FMT " duration: %u, subtype:0x%x, success:%d" , |
1569 | LOCAL_PR_ARG, VIF_PR_ARG, __entry->duration, |
1570 | __entry->subtype, __entry->success |
1571 | ) |
1572 | ); |
1573 | |
1574 | DEFINE_EVENT(mgd_prepare_complete_tx_evt, drv_mgd_prepare_tx, |
1575 | TP_PROTO(struct ieee80211_local *local, |
1576 | struct ieee80211_sub_if_data *sdata, |
1577 | u16 duration, u16 subtype, bool success), |
1578 | |
1579 | TP_ARGS(local, sdata, duration, subtype, success) |
1580 | ); |
1581 | |
1582 | DEFINE_EVENT(mgd_prepare_complete_tx_evt, drv_mgd_complete_tx, |
1583 | TP_PROTO(struct ieee80211_local *local, |
1584 | struct ieee80211_sub_if_data *sdata, |
1585 | u16 duration, u16 subtype, bool success), |
1586 | |
1587 | TP_ARGS(local, sdata, duration, subtype, success) |
1588 | ); |
1589 | |
1590 | DEFINE_EVENT(local_sdata_evt, drv_mgd_protect_tdls_discover, |
1591 | TP_PROTO(struct ieee80211_local *local, |
1592 | struct ieee80211_sub_if_data *sdata), |
1593 | |
1594 | TP_ARGS(local, sdata) |
1595 | ); |
1596 | |
1597 | DECLARE_EVENT_CLASS(local_chanctx, |
1598 | TP_PROTO(struct ieee80211_local *local, |
1599 | struct ieee80211_chanctx *ctx), |
1600 | |
1601 | TP_ARGS(local, ctx), |
1602 | |
1603 | TP_STRUCT__entry( |
1604 | LOCAL_ENTRY |
1605 | CHANCTX_ENTRY |
1606 | ), |
1607 | |
1608 | TP_fast_assign( |
1609 | LOCAL_ASSIGN; |
1610 | CHANCTX_ASSIGN; |
1611 | ), |
1612 | |
1613 | TP_printk( |
1614 | LOCAL_PR_FMT CHANCTX_PR_FMT, |
1615 | LOCAL_PR_ARG, CHANCTX_PR_ARG |
1616 | ) |
1617 | ); |
1618 | |
1619 | DEFINE_EVENT(local_chanctx, drv_add_chanctx, |
1620 | TP_PROTO(struct ieee80211_local *local, |
1621 | struct ieee80211_chanctx *ctx), |
1622 | TP_ARGS(local, ctx) |
1623 | ); |
1624 | |
1625 | DEFINE_EVENT(local_chanctx, drv_remove_chanctx, |
1626 | TP_PROTO(struct ieee80211_local *local, |
1627 | struct ieee80211_chanctx *ctx), |
1628 | TP_ARGS(local, ctx) |
1629 | ); |
1630 | |
1631 | TRACE_EVENT(drv_change_chanctx, |
1632 | TP_PROTO(struct ieee80211_local *local, |
1633 | struct ieee80211_chanctx *ctx, |
1634 | u32 changed), |
1635 | |
1636 | TP_ARGS(local, ctx, changed), |
1637 | |
1638 | TP_STRUCT__entry( |
1639 | LOCAL_ENTRY |
1640 | CHANCTX_ENTRY |
1641 | __field(u32, changed) |
1642 | ), |
1643 | |
1644 | TP_fast_assign( |
1645 | LOCAL_ASSIGN; |
1646 | CHANCTX_ASSIGN; |
1647 | __entry->changed = changed; |
1648 | ), |
1649 | |
1650 | TP_printk( |
1651 | LOCAL_PR_FMT CHANCTX_PR_FMT " changed:%#x" , |
1652 | LOCAL_PR_ARG, CHANCTX_PR_ARG, __entry->changed |
1653 | ) |
1654 | ); |
1655 | |
1656 | #if !defined(__TRACE_VIF_ENTRY) |
1657 | #define __TRACE_VIF_ENTRY |
1658 | struct trace_vif_entry { |
1659 | enum nl80211_iftype vif_type; |
1660 | bool p2p; |
1661 | char vif_name[IFNAMSIZ]; |
1662 | } __packed; |
1663 | |
1664 | struct trace_chandef_entry { |
1665 | u32 control_freq; |
1666 | u32 freq_offset; |
1667 | u32 chan_width; |
1668 | u32 center_freq1; |
1669 | u32 freq1_offset; |
1670 | u32 center_freq2; |
1671 | } __packed; |
1672 | |
1673 | struct trace_switch_entry { |
1674 | struct trace_vif_entry vif; |
1675 | unsigned int link_id; |
1676 | struct trace_chandef_entry old_chandef; |
1677 | struct trace_chandef_entry new_chandef; |
1678 | } __packed; |
1679 | |
1680 | #define SWITCH_ENTRY_ASSIGN(to, from) local_vifs[i].to = vifs[i].from |
1681 | #endif |
1682 | |
1683 | TRACE_EVENT(drv_switch_vif_chanctx, |
1684 | TP_PROTO(struct ieee80211_local *local, |
1685 | struct ieee80211_vif_chanctx_switch *vifs, |
1686 | int n_vifs, enum ieee80211_chanctx_switch_mode mode), |
1687 | TP_ARGS(local, vifs, n_vifs, mode), |
1688 | |
1689 | TP_STRUCT__entry( |
1690 | LOCAL_ENTRY |
1691 | __field(int, n_vifs) |
1692 | __field(u32, mode) |
1693 | __dynamic_array(u8, vifs, |
1694 | sizeof(struct trace_switch_entry) * n_vifs) |
1695 | ), |
1696 | |
1697 | TP_fast_assign( |
1698 | LOCAL_ASSIGN; |
1699 | __entry->n_vifs = n_vifs; |
1700 | __entry->mode = mode; |
1701 | { |
1702 | struct trace_switch_entry *local_vifs = |
1703 | __get_dynamic_array(vifs); |
1704 | int i; |
1705 | |
1706 | for (i = 0; i < n_vifs; i++) { |
1707 | struct ieee80211_sub_if_data *sdata; |
1708 | |
1709 | sdata = container_of(vifs[i].vif, |
1710 | struct ieee80211_sub_if_data, |
1711 | vif); |
1712 | |
1713 | SWITCH_ENTRY_ASSIGN(vif.vif_type, vif->type); |
1714 | SWITCH_ENTRY_ASSIGN(vif.p2p, vif->p2p); |
1715 | SWITCH_ENTRY_ASSIGN(link_id, link_conf->link_id); |
1716 | strncpy(local_vifs[i].vif.vif_name, |
1717 | sdata->name, |
1718 | sizeof(local_vifs[i].vif.vif_name)); |
1719 | SWITCH_ENTRY_ASSIGN(old_chandef.control_freq, |
1720 | old_ctx->def.chan->center_freq); |
1721 | SWITCH_ENTRY_ASSIGN(old_chandef.freq_offset, |
1722 | old_ctx->def.chan->freq_offset); |
1723 | SWITCH_ENTRY_ASSIGN(old_chandef.chan_width, |
1724 | old_ctx->def.width); |
1725 | SWITCH_ENTRY_ASSIGN(old_chandef.center_freq1, |
1726 | old_ctx->def.center_freq1); |
1727 | SWITCH_ENTRY_ASSIGN(old_chandef.freq1_offset, |
1728 | old_ctx->def.freq1_offset); |
1729 | SWITCH_ENTRY_ASSIGN(old_chandef.center_freq2, |
1730 | old_ctx->def.center_freq2); |
1731 | SWITCH_ENTRY_ASSIGN(new_chandef.control_freq, |
1732 | new_ctx->def.chan->center_freq); |
1733 | SWITCH_ENTRY_ASSIGN(new_chandef.freq_offset, |
1734 | new_ctx->def.chan->freq_offset); |
1735 | SWITCH_ENTRY_ASSIGN(new_chandef.chan_width, |
1736 | new_ctx->def.width); |
1737 | SWITCH_ENTRY_ASSIGN(new_chandef.center_freq1, |
1738 | new_ctx->def.center_freq1); |
1739 | SWITCH_ENTRY_ASSIGN(new_chandef.freq1_offset, |
1740 | new_ctx->def.freq1_offset); |
1741 | SWITCH_ENTRY_ASSIGN(new_chandef.center_freq2, |
1742 | new_ctx->def.center_freq2); |
1743 | } |
1744 | } |
1745 | ), |
1746 | |
1747 | TP_printk( |
1748 | LOCAL_PR_FMT " n_vifs:%d mode:%d" , |
1749 | LOCAL_PR_ARG, __entry->n_vifs, __entry->mode |
1750 | ) |
1751 | ); |
1752 | |
1753 | DECLARE_EVENT_CLASS(local_sdata_chanctx, |
1754 | TP_PROTO(struct ieee80211_local *local, |
1755 | struct ieee80211_sub_if_data *sdata, |
1756 | struct ieee80211_bss_conf *link_conf, |
1757 | struct ieee80211_chanctx *ctx), |
1758 | |
1759 | TP_ARGS(local, sdata, link_conf, ctx), |
1760 | |
1761 | TP_STRUCT__entry( |
1762 | LOCAL_ENTRY |
1763 | VIF_ENTRY |
1764 | CHANCTX_ENTRY |
1765 | __field(unsigned int, link_id) |
1766 | ), |
1767 | |
1768 | TP_fast_assign( |
1769 | LOCAL_ASSIGN; |
1770 | VIF_ASSIGN; |
1771 | CHANCTX_ASSIGN; |
1772 | __entry->link_id = link_conf->link_id; |
1773 | ), |
1774 | |
1775 | TP_printk( |
1776 | LOCAL_PR_FMT VIF_PR_FMT " link_id:%d" CHANCTX_PR_FMT, |
1777 | LOCAL_PR_ARG, VIF_PR_ARG, __entry->link_id, CHANCTX_PR_ARG |
1778 | ) |
1779 | ); |
1780 | |
1781 | DEFINE_EVENT(local_sdata_chanctx, drv_assign_vif_chanctx, |
1782 | TP_PROTO(struct ieee80211_local *local, |
1783 | struct ieee80211_sub_if_data *sdata, |
1784 | struct ieee80211_bss_conf *link_conf, |
1785 | struct ieee80211_chanctx *ctx), |
1786 | TP_ARGS(local, sdata, link_conf, ctx) |
1787 | ); |
1788 | |
1789 | DEFINE_EVENT(local_sdata_chanctx, drv_unassign_vif_chanctx, |
1790 | TP_PROTO(struct ieee80211_local *local, |
1791 | struct ieee80211_sub_if_data *sdata, |
1792 | struct ieee80211_bss_conf *link_conf, |
1793 | struct ieee80211_chanctx *ctx), |
1794 | TP_ARGS(local, sdata, link_conf, ctx) |
1795 | ); |
1796 | |
1797 | TRACE_EVENT(drv_start_ap, |
1798 | TP_PROTO(struct ieee80211_local *local, |
1799 | struct ieee80211_sub_if_data *sdata, |
1800 | struct ieee80211_bss_conf *link_conf), |
1801 | |
1802 | TP_ARGS(local, sdata, link_conf), |
1803 | |
1804 | TP_STRUCT__entry( |
1805 | LOCAL_ENTRY |
1806 | VIF_ENTRY |
1807 | __field(u32, link_id) |
1808 | __field(u8, dtimper) |
1809 | __field(u16, bcnint) |
1810 | __dynamic_array(u8, ssid, sdata->vif.cfg.ssid_len) |
1811 | __field(bool, hidden_ssid) |
1812 | ), |
1813 | |
1814 | TP_fast_assign( |
1815 | LOCAL_ASSIGN; |
1816 | VIF_ASSIGN; |
1817 | __entry->link_id = link_conf->link_id; |
1818 | __entry->dtimper = link_conf->dtim_period; |
1819 | __entry->bcnint = link_conf->beacon_int; |
1820 | __entry->hidden_ssid = link_conf->hidden_ssid; |
1821 | memcpy(__get_dynamic_array(ssid), |
1822 | sdata->vif.cfg.ssid, |
1823 | sdata->vif.cfg.ssid_len); |
1824 | ), |
1825 | |
1826 | TP_printk( |
1827 | LOCAL_PR_FMT VIF_PR_FMT " link id %u" , |
1828 | LOCAL_PR_ARG, VIF_PR_ARG, __entry->link_id |
1829 | ) |
1830 | ); |
1831 | |
1832 | TRACE_EVENT(drv_stop_ap, |
1833 | TP_PROTO(struct ieee80211_local *local, |
1834 | struct ieee80211_sub_if_data *sdata, |
1835 | struct ieee80211_bss_conf *link_conf), |
1836 | |
1837 | TP_ARGS(local, sdata, link_conf), |
1838 | |
1839 | TP_STRUCT__entry( |
1840 | LOCAL_ENTRY |
1841 | VIF_ENTRY |
1842 | __field(u32, link_id) |
1843 | ), |
1844 | |
1845 | TP_fast_assign( |
1846 | LOCAL_ASSIGN; |
1847 | VIF_ASSIGN; |
1848 | __entry->link_id = link_conf->link_id; |
1849 | ), |
1850 | |
1851 | TP_printk( |
1852 | LOCAL_PR_FMT VIF_PR_FMT " link id %u" , |
1853 | LOCAL_PR_ARG, VIF_PR_ARG, __entry->link_id |
1854 | ) |
1855 | ); |
1856 | |
1857 | TRACE_EVENT(drv_reconfig_complete, |
1858 | TP_PROTO(struct ieee80211_local *local, |
1859 | enum ieee80211_reconfig_type reconfig_type), |
1860 | TP_ARGS(local, reconfig_type), |
1861 | |
1862 | TP_STRUCT__entry( |
1863 | LOCAL_ENTRY |
1864 | __field(u8, reconfig_type) |
1865 | ), |
1866 | |
1867 | TP_fast_assign( |
1868 | LOCAL_ASSIGN; |
1869 | __entry->reconfig_type = reconfig_type; |
1870 | ), |
1871 | |
1872 | TP_printk( |
1873 | LOCAL_PR_FMT " reconfig_type:%d" , |
1874 | LOCAL_PR_ARG, __entry->reconfig_type |
1875 | ) |
1876 | |
1877 | ); |
1878 | |
1879 | #if IS_ENABLED(CONFIG_IPV6) |
1880 | DEFINE_EVENT(local_sdata_evt, drv_ipv6_addr_change, |
1881 | TP_PROTO(struct ieee80211_local *local, |
1882 | struct ieee80211_sub_if_data *sdata), |
1883 | TP_ARGS(local, sdata) |
1884 | ); |
1885 | #endif |
1886 | |
1887 | TRACE_EVENT(drv_join_ibss, |
1888 | TP_PROTO(struct ieee80211_local *local, |
1889 | struct ieee80211_sub_if_data *sdata, |
1890 | struct ieee80211_bss_conf *info), |
1891 | |
1892 | TP_ARGS(local, sdata, info), |
1893 | |
1894 | TP_STRUCT__entry( |
1895 | LOCAL_ENTRY |
1896 | VIF_ENTRY |
1897 | __field(u8, dtimper) |
1898 | __field(u16, bcnint) |
1899 | __dynamic_array(u8, ssid, sdata->vif.cfg.ssid_len) |
1900 | ), |
1901 | |
1902 | TP_fast_assign( |
1903 | LOCAL_ASSIGN; |
1904 | VIF_ASSIGN; |
1905 | __entry->dtimper = info->dtim_period; |
1906 | __entry->bcnint = info->beacon_int; |
1907 | memcpy(__get_dynamic_array(ssid), |
1908 | sdata->vif.cfg.ssid, |
1909 | sdata->vif.cfg.ssid_len); |
1910 | ), |
1911 | |
1912 | TP_printk( |
1913 | LOCAL_PR_FMT VIF_PR_FMT, |
1914 | LOCAL_PR_ARG, VIF_PR_ARG |
1915 | ) |
1916 | ); |
1917 | |
1918 | DEFINE_EVENT(local_sdata_evt, drv_leave_ibss, |
1919 | TP_PROTO(struct ieee80211_local *local, |
1920 | struct ieee80211_sub_if_data *sdata), |
1921 | TP_ARGS(local, sdata) |
1922 | ); |
1923 | |
1924 | TRACE_EVENT(drv_get_expected_throughput, |
1925 | TP_PROTO(struct ieee80211_sta *sta), |
1926 | |
1927 | TP_ARGS(sta), |
1928 | |
1929 | TP_STRUCT__entry( |
1930 | STA_ENTRY |
1931 | ), |
1932 | |
1933 | TP_fast_assign( |
1934 | STA_ASSIGN; |
1935 | ), |
1936 | |
1937 | TP_printk( |
1938 | STA_PR_FMT, STA_PR_ARG |
1939 | ) |
1940 | ); |
1941 | |
1942 | TRACE_EVENT(drv_start_nan, |
1943 | TP_PROTO(struct ieee80211_local *local, |
1944 | struct ieee80211_sub_if_data *sdata, |
1945 | struct cfg80211_nan_conf *conf), |
1946 | |
1947 | TP_ARGS(local, sdata, conf), |
1948 | TP_STRUCT__entry( |
1949 | LOCAL_ENTRY |
1950 | VIF_ENTRY |
1951 | __field(u8, master_pref) |
1952 | __field(u8, bands) |
1953 | ), |
1954 | |
1955 | TP_fast_assign( |
1956 | LOCAL_ASSIGN; |
1957 | VIF_ASSIGN; |
1958 | __entry->master_pref = conf->master_pref; |
1959 | __entry->bands = conf->bands; |
1960 | ), |
1961 | |
1962 | TP_printk( |
1963 | LOCAL_PR_FMT VIF_PR_FMT |
1964 | ", master preference: %u, bands: 0x%0x" , |
1965 | LOCAL_PR_ARG, VIF_PR_ARG, __entry->master_pref, |
1966 | __entry->bands |
1967 | ) |
1968 | ); |
1969 | |
1970 | TRACE_EVENT(drv_stop_nan, |
1971 | TP_PROTO(struct ieee80211_local *local, |
1972 | struct ieee80211_sub_if_data *sdata), |
1973 | |
1974 | TP_ARGS(local, sdata), |
1975 | |
1976 | TP_STRUCT__entry( |
1977 | LOCAL_ENTRY |
1978 | VIF_ENTRY |
1979 | ), |
1980 | |
1981 | TP_fast_assign( |
1982 | LOCAL_ASSIGN; |
1983 | VIF_ASSIGN; |
1984 | ), |
1985 | |
1986 | TP_printk( |
1987 | LOCAL_PR_FMT VIF_PR_FMT, |
1988 | LOCAL_PR_ARG, VIF_PR_ARG |
1989 | ) |
1990 | ); |
1991 | |
1992 | TRACE_EVENT(drv_nan_change_conf, |
1993 | TP_PROTO(struct ieee80211_local *local, |
1994 | struct ieee80211_sub_if_data *sdata, |
1995 | struct cfg80211_nan_conf *conf, |
1996 | u32 changes), |
1997 | |
1998 | TP_ARGS(local, sdata, conf, changes), |
1999 | TP_STRUCT__entry( |
2000 | LOCAL_ENTRY |
2001 | VIF_ENTRY |
2002 | __field(u8, master_pref) |
2003 | __field(u8, bands) |
2004 | __field(u32, changes) |
2005 | ), |
2006 | |
2007 | TP_fast_assign( |
2008 | LOCAL_ASSIGN; |
2009 | VIF_ASSIGN; |
2010 | __entry->master_pref = conf->master_pref; |
2011 | __entry->bands = conf->bands; |
2012 | __entry->changes = changes; |
2013 | ), |
2014 | |
2015 | TP_printk( |
2016 | LOCAL_PR_FMT VIF_PR_FMT |
2017 | ", master preference: %u, bands: 0x%0x, changes: 0x%x" , |
2018 | LOCAL_PR_ARG, VIF_PR_ARG, __entry->master_pref, |
2019 | __entry->bands, __entry->changes |
2020 | ) |
2021 | ); |
2022 | |
2023 | TRACE_EVENT(drv_add_nan_func, |
2024 | TP_PROTO(struct ieee80211_local *local, |
2025 | struct ieee80211_sub_if_data *sdata, |
2026 | const struct cfg80211_nan_func *func), |
2027 | |
2028 | TP_ARGS(local, sdata, func), |
2029 | TP_STRUCT__entry( |
2030 | LOCAL_ENTRY |
2031 | VIF_ENTRY |
2032 | __field(u8, type) |
2033 | __field(u8, inst_id) |
2034 | ), |
2035 | |
2036 | TP_fast_assign( |
2037 | LOCAL_ASSIGN; |
2038 | VIF_ASSIGN; |
2039 | __entry->type = func->type; |
2040 | __entry->inst_id = func->instance_id; |
2041 | ), |
2042 | |
2043 | TP_printk( |
2044 | LOCAL_PR_FMT VIF_PR_FMT |
2045 | ", type: %u, inst_id: %u" , |
2046 | LOCAL_PR_ARG, VIF_PR_ARG, __entry->type, __entry->inst_id |
2047 | ) |
2048 | ); |
2049 | |
2050 | TRACE_EVENT(drv_del_nan_func, |
2051 | TP_PROTO(struct ieee80211_local *local, |
2052 | struct ieee80211_sub_if_data *sdata, |
2053 | u8 instance_id), |
2054 | |
2055 | TP_ARGS(local, sdata, instance_id), |
2056 | TP_STRUCT__entry( |
2057 | LOCAL_ENTRY |
2058 | VIF_ENTRY |
2059 | __field(u8, instance_id) |
2060 | ), |
2061 | |
2062 | TP_fast_assign( |
2063 | LOCAL_ASSIGN; |
2064 | VIF_ASSIGN; |
2065 | __entry->instance_id = instance_id; |
2066 | ), |
2067 | |
2068 | TP_printk( |
2069 | LOCAL_PR_FMT VIF_PR_FMT |
2070 | ", instance_id: %u" , |
2071 | LOCAL_PR_ARG, VIF_PR_ARG, __entry->instance_id |
2072 | ) |
2073 | ); |
2074 | |
2075 | DEFINE_EVENT(local_sdata_evt, drv_start_pmsr, |
2076 | TP_PROTO(struct ieee80211_local *local, |
2077 | struct ieee80211_sub_if_data *sdata), |
2078 | TP_ARGS(local, sdata) |
2079 | ); |
2080 | |
2081 | DEFINE_EVENT(local_sdata_evt, drv_abort_pmsr, |
2082 | TP_PROTO(struct ieee80211_local *local, |
2083 | struct ieee80211_sub_if_data *sdata), |
2084 | TP_ARGS(local, sdata) |
2085 | ); |
2086 | |
2087 | TRACE_EVENT(drv_set_default_unicast_key, |
2088 | TP_PROTO(struct ieee80211_local *local, |
2089 | struct ieee80211_sub_if_data *sdata, |
2090 | int key_idx), |
2091 | |
2092 | TP_ARGS(local, sdata, key_idx), |
2093 | |
2094 | TP_STRUCT__entry( |
2095 | LOCAL_ENTRY |
2096 | VIF_ENTRY |
2097 | __field(int, key_idx) |
2098 | ), |
2099 | |
2100 | TP_fast_assign( |
2101 | LOCAL_ASSIGN; |
2102 | VIF_ASSIGN; |
2103 | __entry->key_idx = key_idx; |
2104 | ), |
2105 | |
2106 | TP_printk(LOCAL_PR_FMT VIF_PR_FMT " key_idx:%d" , |
2107 | LOCAL_PR_ARG, VIF_PR_ARG, __entry->key_idx) |
2108 | ); |
2109 | |
2110 | TRACE_EVENT(drv_channel_switch_beacon, |
2111 | TP_PROTO(struct ieee80211_local *local, |
2112 | struct ieee80211_sub_if_data *sdata, |
2113 | struct cfg80211_chan_def *chandef), |
2114 | |
2115 | TP_ARGS(local, sdata, chandef), |
2116 | |
2117 | TP_STRUCT__entry( |
2118 | LOCAL_ENTRY |
2119 | VIF_ENTRY |
2120 | CHANDEF_ENTRY |
2121 | ), |
2122 | |
2123 | TP_fast_assign( |
2124 | LOCAL_ASSIGN; |
2125 | VIF_ASSIGN; |
2126 | CHANDEF_ASSIGN(chandef); |
2127 | ), |
2128 | |
2129 | TP_printk( |
2130 | LOCAL_PR_FMT VIF_PR_FMT " channel switch to " CHANDEF_PR_FMT, |
2131 | LOCAL_PR_ARG, VIF_PR_ARG, CHANDEF_PR_ARG |
2132 | ) |
2133 | ); |
2134 | |
2135 | DEFINE_EVENT(chanswitch_evt, drv_pre_channel_switch, |
2136 | TP_PROTO(struct ieee80211_local *local, |
2137 | struct ieee80211_sub_if_data *sdata, |
2138 | struct ieee80211_channel_switch *ch_switch), |
2139 | TP_ARGS(local, sdata, ch_switch) |
2140 | ); |
2141 | |
2142 | DEFINE_EVENT(local_sdata_evt, drv_post_channel_switch, |
2143 | TP_PROTO(struct ieee80211_local *local, |
2144 | struct ieee80211_sub_if_data *sdata), |
2145 | TP_ARGS(local, sdata) |
2146 | ); |
2147 | |
2148 | DEFINE_EVENT(local_sdata_evt, drv_abort_channel_switch, |
2149 | TP_PROTO(struct ieee80211_local *local, |
2150 | struct ieee80211_sub_if_data *sdata), |
2151 | TP_ARGS(local, sdata) |
2152 | ); |
2153 | |
2154 | DEFINE_EVENT(chanswitch_evt, drv_channel_switch_rx_beacon, |
2155 | TP_PROTO(struct ieee80211_local *local, |
2156 | struct ieee80211_sub_if_data *sdata, |
2157 | struct ieee80211_channel_switch *ch_switch), |
2158 | TP_ARGS(local, sdata, ch_switch) |
2159 | ); |
2160 | |
2161 | TRACE_EVENT(drv_get_txpower, |
2162 | TP_PROTO(struct ieee80211_local *local, |
2163 | struct ieee80211_sub_if_data *sdata, |
2164 | int dbm, int ret), |
2165 | |
2166 | TP_ARGS(local, sdata, dbm, ret), |
2167 | |
2168 | TP_STRUCT__entry( |
2169 | LOCAL_ENTRY |
2170 | VIF_ENTRY |
2171 | __field(int, dbm) |
2172 | __field(int, ret) |
2173 | ), |
2174 | |
2175 | TP_fast_assign( |
2176 | LOCAL_ASSIGN; |
2177 | VIF_ASSIGN; |
2178 | __entry->dbm = dbm; |
2179 | __entry->ret = ret; |
2180 | ), |
2181 | |
2182 | TP_printk( |
2183 | LOCAL_PR_FMT VIF_PR_FMT " dbm:%d ret:%d" , |
2184 | LOCAL_PR_ARG, VIF_PR_ARG, __entry->dbm, __entry->ret |
2185 | ) |
2186 | ); |
2187 | |
2188 | TRACE_EVENT(drv_tdls_channel_switch, |
2189 | TP_PROTO(struct ieee80211_local *local, |
2190 | struct ieee80211_sub_if_data *sdata, |
2191 | struct ieee80211_sta *sta, u8 oper_class, |
2192 | struct cfg80211_chan_def *chandef), |
2193 | |
2194 | TP_ARGS(local, sdata, sta, oper_class, chandef), |
2195 | |
2196 | TP_STRUCT__entry( |
2197 | LOCAL_ENTRY |
2198 | VIF_ENTRY |
2199 | STA_ENTRY |
2200 | __field(u8, oper_class) |
2201 | CHANDEF_ENTRY |
2202 | ), |
2203 | |
2204 | TP_fast_assign( |
2205 | LOCAL_ASSIGN; |
2206 | VIF_ASSIGN; |
2207 | STA_ASSIGN; |
2208 | __entry->oper_class = oper_class; |
2209 | CHANDEF_ASSIGN(chandef) |
2210 | ), |
2211 | |
2212 | TP_printk( |
2213 | LOCAL_PR_FMT VIF_PR_FMT " tdls channel switch to" |
2214 | CHANDEF_PR_FMT " oper_class:%d " STA_PR_FMT, |
2215 | LOCAL_PR_ARG, VIF_PR_ARG, CHANDEF_PR_ARG, __entry->oper_class, |
2216 | STA_PR_ARG |
2217 | ) |
2218 | ); |
2219 | |
2220 | TRACE_EVENT(drv_tdls_cancel_channel_switch, |
2221 | TP_PROTO(struct ieee80211_local *local, |
2222 | struct ieee80211_sub_if_data *sdata, |
2223 | struct ieee80211_sta *sta), |
2224 | |
2225 | TP_ARGS(local, sdata, sta), |
2226 | |
2227 | TP_STRUCT__entry( |
2228 | LOCAL_ENTRY |
2229 | VIF_ENTRY |
2230 | STA_ENTRY |
2231 | ), |
2232 | |
2233 | TP_fast_assign( |
2234 | LOCAL_ASSIGN; |
2235 | VIF_ASSIGN; |
2236 | STA_ASSIGN; |
2237 | ), |
2238 | |
2239 | TP_printk( |
2240 | LOCAL_PR_FMT VIF_PR_FMT |
2241 | " tdls cancel channel switch with " STA_PR_FMT, |
2242 | LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG |
2243 | ) |
2244 | ); |
2245 | |
2246 | TRACE_EVENT(drv_tdls_recv_channel_switch, |
2247 | TP_PROTO(struct ieee80211_local *local, |
2248 | struct ieee80211_sub_if_data *sdata, |
2249 | struct ieee80211_tdls_ch_sw_params *params), |
2250 | |
2251 | TP_ARGS(local, sdata, params), |
2252 | |
2253 | TP_STRUCT__entry( |
2254 | LOCAL_ENTRY |
2255 | VIF_ENTRY |
2256 | __field(u8, action_code) |
2257 | STA_ENTRY |
2258 | CHANDEF_ENTRY |
2259 | __field(u32, status) |
2260 | __field(bool, peer_initiator) |
2261 | __field(u32, timestamp) |
2262 | __field(u16, switch_time) |
2263 | __field(u16, switch_timeout) |
2264 | ), |
2265 | |
2266 | TP_fast_assign( |
2267 | LOCAL_ASSIGN; |
2268 | VIF_ASSIGN; |
2269 | STA_NAMED_ASSIGN(params->sta); |
2270 | CHANDEF_ASSIGN(params->chandef) |
2271 | __entry->peer_initiator = params->sta->tdls_initiator; |
2272 | __entry->action_code = params->action_code; |
2273 | __entry->status = params->status; |
2274 | __entry->timestamp = params->timestamp; |
2275 | __entry->switch_time = params->switch_time; |
2276 | __entry->switch_timeout = params->switch_timeout; |
2277 | ), |
2278 | |
2279 | TP_printk( |
2280 | LOCAL_PR_FMT VIF_PR_FMT " received tdls channel switch packet" |
2281 | " action:%d status:%d time:%d switch time:%d switch" |
2282 | " timeout:%d initiator: %d chan:" CHANDEF_PR_FMT STA_PR_FMT, |
2283 | LOCAL_PR_ARG, VIF_PR_ARG, __entry->action_code, __entry->status, |
2284 | __entry->timestamp, __entry->switch_time, |
2285 | __entry->switch_timeout, __entry->peer_initiator, |
2286 | CHANDEF_PR_ARG, STA_PR_ARG |
2287 | ) |
2288 | ); |
2289 | |
2290 | TRACE_EVENT(drv_wake_tx_queue, |
2291 | TP_PROTO(struct ieee80211_local *local, |
2292 | struct ieee80211_sub_if_data *sdata, |
2293 | struct txq_info *txq), |
2294 | |
2295 | TP_ARGS(local, sdata, txq), |
2296 | |
2297 | TP_STRUCT__entry( |
2298 | LOCAL_ENTRY |
2299 | VIF_ENTRY |
2300 | STA_ENTRY |
2301 | __field(u8, ac) |
2302 | __field(u8, tid) |
2303 | ), |
2304 | |
2305 | TP_fast_assign( |
2306 | struct ieee80211_sta *sta = txq->txq.sta; |
2307 | |
2308 | LOCAL_ASSIGN; |
2309 | VIF_ASSIGN; |
2310 | STA_ASSIGN; |
2311 | __entry->ac = txq->txq.ac; |
2312 | __entry->tid = txq->txq.tid; |
2313 | ), |
2314 | |
2315 | TP_printk( |
2316 | LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT " ac:%d tid:%d" , |
2317 | LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG, __entry->ac, __entry->tid |
2318 | ) |
2319 | ); |
2320 | |
2321 | TRACE_EVENT(drv_get_ftm_responder_stats, |
2322 | TP_PROTO(struct ieee80211_local *local, |
2323 | struct ieee80211_sub_if_data *sdata, |
2324 | struct cfg80211_ftm_responder_stats *ftm_stats), |
2325 | |
2326 | TP_ARGS(local, sdata, ftm_stats), |
2327 | |
2328 | TP_STRUCT__entry( |
2329 | LOCAL_ENTRY |
2330 | VIF_ENTRY |
2331 | ), |
2332 | |
2333 | TP_fast_assign( |
2334 | LOCAL_ASSIGN; |
2335 | VIF_ASSIGN; |
2336 | ), |
2337 | |
2338 | TP_printk( |
2339 | LOCAL_PR_FMT VIF_PR_FMT, |
2340 | LOCAL_PR_ARG, VIF_PR_ARG |
2341 | ) |
2342 | ); |
2343 | |
2344 | DEFINE_EVENT(local_sdata_addr_evt, drv_update_vif_offload, |
2345 | TP_PROTO(struct ieee80211_local *local, |
2346 | struct ieee80211_sub_if_data *sdata), |
2347 | TP_ARGS(local, sdata) |
2348 | ); |
2349 | |
2350 | DECLARE_EVENT_CLASS(sta_flag_evt, |
2351 | TP_PROTO(struct ieee80211_local *local, |
2352 | struct ieee80211_sub_if_data *sdata, |
2353 | struct ieee80211_sta *sta, bool enabled), |
2354 | |
2355 | TP_ARGS(local, sdata, sta, enabled), |
2356 | |
2357 | TP_STRUCT__entry( |
2358 | LOCAL_ENTRY |
2359 | VIF_ENTRY |
2360 | STA_ENTRY |
2361 | __field(bool, enabled) |
2362 | ), |
2363 | |
2364 | TP_fast_assign( |
2365 | LOCAL_ASSIGN; |
2366 | VIF_ASSIGN; |
2367 | STA_ASSIGN; |
2368 | __entry->enabled = enabled; |
2369 | ), |
2370 | |
2371 | TP_printk( |
2372 | LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT " enabled:%d" , |
2373 | LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG, __entry->enabled |
2374 | ) |
2375 | ); |
2376 | |
2377 | DEFINE_EVENT(sta_flag_evt, drv_sta_set_4addr, |
2378 | TP_PROTO(struct ieee80211_local *local, |
2379 | struct ieee80211_sub_if_data *sdata, |
2380 | struct ieee80211_sta *sta, bool enabled), |
2381 | |
2382 | TP_ARGS(local, sdata, sta, enabled) |
2383 | ); |
2384 | |
2385 | DEFINE_EVENT(sta_flag_evt, drv_sta_set_decap_offload, |
2386 | TP_PROTO(struct ieee80211_local *local, |
2387 | struct ieee80211_sub_if_data *sdata, |
2388 | struct ieee80211_sta *sta, bool enabled), |
2389 | |
2390 | TP_ARGS(local, sdata, sta, enabled) |
2391 | ); |
2392 | |
2393 | TRACE_EVENT(drv_add_twt_setup, |
2394 | TP_PROTO(struct ieee80211_local *local, |
2395 | struct ieee80211_sta *sta, |
2396 | struct ieee80211_twt_setup *twt, |
2397 | struct ieee80211_twt_params *twt_agrt), |
2398 | |
2399 | TP_ARGS(local, sta, twt, twt_agrt), |
2400 | |
2401 | TP_STRUCT__entry( |
2402 | LOCAL_ENTRY |
2403 | STA_ENTRY |
2404 | __field(u8, dialog_token) |
2405 | __field(u8, control) |
2406 | __field(__le16, req_type) |
2407 | __field(__le64, twt) |
2408 | __field(u8, duration) |
2409 | __field(__le16, mantissa) |
2410 | __field(u8, channel) |
2411 | ), |
2412 | |
2413 | TP_fast_assign( |
2414 | LOCAL_ASSIGN; |
2415 | STA_ASSIGN; |
2416 | __entry->dialog_token = twt->dialog_token; |
2417 | __entry->control = twt->control; |
2418 | __entry->req_type = twt_agrt->req_type; |
2419 | __entry->twt = twt_agrt->twt; |
2420 | __entry->duration = twt_agrt->min_twt_dur; |
2421 | __entry->mantissa = twt_agrt->mantissa; |
2422 | __entry->channel = twt_agrt->channel; |
2423 | ), |
2424 | |
2425 | TP_printk( |
2426 | LOCAL_PR_FMT STA_PR_FMT |
2427 | " token:%d control:0x%02x req_type:0x%04x" |
2428 | " twt:%llu duration:%d mantissa:%d channel:%d" , |
2429 | LOCAL_PR_ARG, STA_PR_ARG, __entry->dialog_token, |
2430 | __entry->control, le16_to_cpu(__entry->req_type), |
2431 | le64_to_cpu(__entry->twt), __entry->duration, |
2432 | le16_to_cpu(__entry->mantissa), __entry->channel |
2433 | ) |
2434 | ); |
2435 | |
2436 | TRACE_EVENT(drv_twt_teardown_request, |
2437 | TP_PROTO(struct ieee80211_local *local, |
2438 | struct ieee80211_sta *sta, u8 flowid), |
2439 | |
2440 | TP_ARGS(local, sta, flowid), |
2441 | |
2442 | TP_STRUCT__entry( |
2443 | LOCAL_ENTRY |
2444 | STA_ENTRY |
2445 | __field(u8, flowid) |
2446 | ), |
2447 | |
2448 | TP_fast_assign( |
2449 | LOCAL_ASSIGN; |
2450 | STA_ASSIGN; |
2451 | __entry->flowid = flowid; |
2452 | ), |
2453 | |
2454 | TP_printk( |
2455 | LOCAL_PR_FMT STA_PR_FMT " flowid:%d" , |
2456 | LOCAL_PR_ARG, STA_PR_ARG, __entry->flowid |
2457 | ) |
2458 | ); |
2459 | |
2460 | DEFINE_EVENT(sta_event, drv_net_fill_forward_path, |
2461 | TP_PROTO(struct ieee80211_local *local, |
2462 | struct ieee80211_sub_if_data *sdata, |
2463 | struct ieee80211_sta *sta), |
2464 | TP_ARGS(local, sdata, sta) |
2465 | ); |
2466 | |
2467 | TRACE_EVENT(drv_net_setup_tc, |
2468 | TP_PROTO(struct ieee80211_local *local, |
2469 | struct ieee80211_sub_if_data *sdata, |
2470 | u8 type), |
2471 | |
2472 | TP_ARGS(local, sdata, type), |
2473 | |
2474 | TP_STRUCT__entry( |
2475 | LOCAL_ENTRY |
2476 | VIF_ENTRY |
2477 | __field(u8, type) |
2478 | ), |
2479 | |
2480 | TP_fast_assign( |
2481 | LOCAL_ASSIGN; |
2482 | VIF_ASSIGN; |
2483 | __entry->type = type; |
2484 | ), |
2485 | |
2486 | TP_printk( |
2487 | LOCAL_PR_FMT VIF_PR_FMT " type:%d\n" , |
2488 | LOCAL_PR_ARG, VIF_PR_ARG, __entry->type |
2489 | ) |
2490 | ); |
2491 | |
2492 | TRACE_EVENT(drv_can_activate_links, |
2493 | TP_PROTO(struct ieee80211_local *local, |
2494 | struct ieee80211_sub_if_data *sdata, |
2495 | u16 active_links), |
2496 | |
2497 | TP_ARGS(local, sdata, active_links), |
2498 | |
2499 | TP_STRUCT__entry( |
2500 | LOCAL_ENTRY |
2501 | VIF_ENTRY |
2502 | __field(u16, active_links) |
2503 | ), |
2504 | |
2505 | TP_fast_assign( |
2506 | LOCAL_ASSIGN; |
2507 | VIF_ASSIGN; |
2508 | __entry->active_links = active_links; |
2509 | ), |
2510 | |
2511 | TP_printk( |
2512 | LOCAL_PR_FMT VIF_PR_FMT " requested active_links:0x%04x\n" , |
2513 | LOCAL_PR_ARG, VIF_PR_ARG, __entry->active_links |
2514 | ) |
2515 | ); |
2516 | |
2517 | TRACE_EVENT(drv_change_vif_links, |
2518 | TP_PROTO(struct ieee80211_local *local, |
2519 | struct ieee80211_sub_if_data *sdata, |
2520 | u16 old_links, u16 new_links), |
2521 | |
2522 | TP_ARGS(local, sdata, old_links, new_links), |
2523 | |
2524 | TP_STRUCT__entry( |
2525 | LOCAL_ENTRY |
2526 | VIF_ENTRY |
2527 | __field(u16, old_links) |
2528 | __field(u16, new_links) |
2529 | ), |
2530 | |
2531 | TP_fast_assign( |
2532 | LOCAL_ASSIGN; |
2533 | VIF_ASSIGN; |
2534 | __entry->old_links = old_links; |
2535 | __entry->new_links = new_links; |
2536 | ), |
2537 | |
2538 | TP_printk( |
2539 | LOCAL_PR_FMT VIF_PR_FMT " old_links:0x%04x, new_links:0x%04x\n" , |
2540 | LOCAL_PR_ARG, VIF_PR_ARG, __entry->old_links, __entry->new_links |
2541 | ) |
2542 | ); |
2543 | |
2544 | TRACE_EVENT(drv_change_sta_links, |
2545 | TP_PROTO(struct ieee80211_local *local, |
2546 | struct ieee80211_sub_if_data *sdata, |
2547 | struct ieee80211_sta *sta, |
2548 | u16 old_links, u16 new_links), |
2549 | |
2550 | TP_ARGS(local, sdata, sta, old_links, new_links), |
2551 | |
2552 | TP_STRUCT__entry( |
2553 | LOCAL_ENTRY |
2554 | VIF_ENTRY |
2555 | STA_ENTRY |
2556 | __field(u16, old_links) |
2557 | __field(u16, new_links) |
2558 | ), |
2559 | |
2560 | TP_fast_assign( |
2561 | LOCAL_ASSIGN; |
2562 | VIF_ASSIGN; |
2563 | STA_ASSIGN; |
2564 | __entry->old_links = old_links; |
2565 | __entry->new_links = new_links; |
2566 | ), |
2567 | |
2568 | TP_printk( |
2569 | LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT " old_links:0x%04x, new_links:0x%04x\n" , |
2570 | LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG, |
2571 | __entry->old_links, __entry->new_links |
2572 | ) |
2573 | ); |
2574 | |
2575 | /* |
2576 | * Tracing for API calls that drivers call. |
2577 | */ |
2578 | |
2579 | TRACE_EVENT(api_start_tx_ba_session, |
2580 | TP_PROTO(struct ieee80211_sta *sta, u16 tid), |
2581 | |
2582 | TP_ARGS(sta, tid), |
2583 | |
2584 | TP_STRUCT__entry( |
2585 | STA_ENTRY |
2586 | __field(u16, tid) |
2587 | ), |
2588 | |
2589 | TP_fast_assign( |
2590 | STA_ASSIGN; |
2591 | __entry->tid = tid; |
2592 | ), |
2593 | |
2594 | TP_printk( |
2595 | STA_PR_FMT " tid:%d" , |
2596 | STA_PR_ARG, __entry->tid |
2597 | ) |
2598 | ); |
2599 | |
2600 | TRACE_EVENT(api_start_tx_ba_cb, |
2601 | TP_PROTO(struct ieee80211_sub_if_data *sdata, const u8 *ra, u16 tid), |
2602 | |
2603 | TP_ARGS(sdata, ra, tid), |
2604 | |
2605 | TP_STRUCT__entry( |
2606 | VIF_ENTRY |
2607 | __array(u8, ra, ETH_ALEN) |
2608 | __field(u16, tid) |
2609 | ), |
2610 | |
2611 | TP_fast_assign( |
2612 | VIF_ASSIGN; |
2613 | memcpy(__entry->ra, ra, ETH_ALEN); |
2614 | __entry->tid = tid; |
2615 | ), |
2616 | |
2617 | TP_printk( |
2618 | VIF_PR_FMT " ra:%pM tid:%d" , |
2619 | VIF_PR_ARG, __entry->ra, __entry->tid |
2620 | ) |
2621 | ); |
2622 | |
2623 | TRACE_EVENT(api_stop_tx_ba_session, |
2624 | TP_PROTO(struct ieee80211_sta *sta, u16 tid), |
2625 | |
2626 | TP_ARGS(sta, tid), |
2627 | |
2628 | TP_STRUCT__entry( |
2629 | STA_ENTRY |
2630 | __field(u16, tid) |
2631 | ), |
2632 | |
2633 | TP_fast_assign( |
2634 | STA_ASSIGN; |
2635 | __entry->tid = tid; |
2636 | ), |
2637 | |
2638 | TP_printk( |
2639 | STA_PR_FMT " tid:%d" , |
2640 | STA_PR_ARG, __entry->tid |
2641 | ) |
2642 | ); |
2643 | |
2644 | TRACE_EVENT(api_stop_tx_ba_cb, |
2645 | TP_PROTO(struct ieee80211_sub_if_data *sdata, const u8 *ra, u16 tid), |
2646 | |
2647 | TP_ARGS(sdata, ra, tid), |
2648 | |
2649 | TP_STRUCT__entry( |
2650 | VIF_ENTRY |
2651 | __array(u8, ra, ETH_ALEN) |
2652 | __field(u16, tid) |
2653 | ), |
2654 | |
2655 | TP_fast_assign( |
2656 | VIF_ASSIGN; |
2657 | memcpy(__entry->ra, ra, ETH_ALEN); |
2658 | __entry->tid = tid; |
2659 | ), |
2660 | |
2661 | TP_printk( |
2662 | VIF_PR_FMT " ra:%pM tid:%d" , |
2663 | VIF_PR_ARG, __entry->ra, __entry->tid |
2664 | ) |
2665 | ); |
2666 | |
2667 | DEFINE_EVENT(local_only_evt, api_restart_hw, |
2668 | TP_PROTO(struct ieee80211_local *local), |
2669 | TP_ARGS(local) |
2670 | ); |
2671 | |
2672 | TRACE_EVENT(api_beacon_loss, |
2673 | TP_PROTO(struct ieee80211_sub_if_data *sdata), |
2674 | |
2675 | TP_ARGS(sdata), |
2676 | |
2677 | TP_STRUCT__entry( |
2678 | VIF_ENTRY |
2679 | ), |
2680 | |
2681 | TP_fast_assign( |
2682 | VIF_ASSIGN; |
2683 | ), |
2684 | |
2685 | TP_printk( |
2686 | VIF_PR_FMT, |
2687 | VIF_PR_ARG |
2688 | ) |
2689 | ); |
2690 | |
2691 | TRACE_EVENT(api_connection_loss, |
2692 | TP_PROTO(struct ieee80211_sub_if_data *sdata), |
2693 | |
2694 | TP_ARGS(sdata), |
2695 | |
2696 | TP_STRUCT__entry( |
2697 | VIF_ENTRY |
2698 | ), |
2699 | |
2700 | TP_fast_assign( |
2701 | VIF_ASSIGN; |
2702 | ), |
2703 | |
2704 | TP_printk( |
2705 | VIF_PR_FMT, |
2706 | VIF_PR_ARG |
2707 | ) |
2708 | ); |
2709 | |
2710 | TRACE_EVENT(api_disconnect, |
2711 | TP_PROTO(struct ieee80211_sub_if_data *sdata, bool reconnect), |
2712 | |
2713 | TP_ARGS(sdata, reconnect), |
2714 | |
2715 | TP_STRUCT__entry( |
2716 | VIF_ENTRY |
2717 | __field(int, reconnect) |
2718 | ), |
2719 | |
2720 | TP_fast_assign( |
2721 | VIF_ASSIGN; |
2722 | __entry->reconnect = reconnect; |
2723 | ), |
2724 | |
2725 | TP_printk( |
2726 | VIF_PR_FMT " reconnect:%d" , |
2727 | VIF_PR_ARG, __entry->reconnect |
2728 | ) |
2729 | ); |
2730 | |
2731 | TRACE_EVENT(api_cqm_rssi_notify, |
2732 | TP_PROTO(struct ieee80211_sub_if_data *sdata, |
2733 | enum nl80211_cqm_rssi_threshold_event , |
2734 | s32 ), |
2735 | |
2736 | TP_ARGS(sdata, rssi_event, rssi_level), |
2737 | |
2738 | TP_STRUCT__entry( |
2739 | VIF_ENTRY |
2740 | __field(u32, rssi_event) |
2741 | __field(s32, rssi_level) |
2742 | ), |
2743 | |
2744 | TP_fast_assign( |
2745 | VIF_ASSIGN; |
2746 | __entry->rssi_event = rssi_event; |
2747 | __entry->rssi_level = rssi_level; |
2748 | ), |
2749 | |
2750 | TP_printk( |
2751 | VIF_PR_FMT " event:%d rssi:%d" , |
2752 | VIF_PR_ARG, __entry->rssi_event, __entry->rssi_level |
2753 | ) |
2754 | ); |
2755 | |
2756 | DEFINE_EVENT(local_sdata_evt, api_cqm_beacon_loss_notify, |
2757 | TP_PROTO(struct ieee80211_local *local, |
2758 | struct ieee80211_sub_if_data *sdata), |
2759 | TP_ARGS(local, sdata) |
2760 | ); |
2761 | |
2762 | TRACE_EVENT(api_scan_completed, |
2763 | TP_PROTO(struct ieee80211_local *local, bool aborted), |
2764 | |
2765 | TP_ARGS(local, aborted), |
2766 | |
2767 | TP_STRUCT__entry( |
2768 | LOCAL_ENTRY |
2769 | __field(bool, aborted) |
2770 | ), |
2771 | |
2772 | TP_fast_assign( |
2773 | LOCAL_ASSIGN; |
2774 | __entry->aborted = aborted; |
2775 | ), |
2776 | |
2777 | TP_printk( |
2778 | LOCAL_PR_FMT " aborted:%d" , |
2779 | LOCAL_PR_ARG, __entry->aborted |
2780 | ) |
2781 | ); |
2782 | |
2783 | TRACE_EVENT(api_sched_scan_results, |
2784 | TP_PROTO(struct ieee80211_local *local), |
2785 | |
2786 | TP_ARGS(local), |
2787 | |
2788 | TP_STRUCT__entry( |
2789 | LOCAL_ENTRY |
2790 | ), |
2791 | |
2792 | TP_fast_assign( |
2793 | LOCAL_ASSIGN; |
2794 | ), |
2795 | |
2796 | TP_printk( |
2797 | LOCAL_PR_FMT, LOCAL_PR_ARG |
2798 | ) |
2799 | ); |
2800 | |
2801 | TRACE_EVENT(api_sched_scan_stopped, |
2802 | TP_PROTO(struct ieee80211_local *local), |
2803 | |
2804 | TP_ARGS(local), |
2805 | |
2806 | TP_STRUCT__entry( |
2807 | LOCAL_ENTRY |
2808 | ), |
2809 | |
2810 | TP_fast_assign( |
2811 | LOCAL_ASSIGN; |
2812 | ), |
2813 | |
2814 | TP_printk( |
2815 | LOCAL_PR_FMT, LOCAL_PR_ARG |
2816 | ) |
2817 | ); |
2818 | |
2819 | TRACE_EVENT(api_sta_block_awake, |
2820 | TP_PROTO(struct ieee80211_local *local, |
2821 | struct ieee80211_sta *sta, bool block), |
2822 | |
2823 | TP_ARGS(local, sta, block), |
2824 | |
2825 | TP_STRUCT__entry( |
2826 | LOCAL_ENTRY |
2827 | STA_ENTRY |
2828 | __field(bool, block) |
2829 | ), |
2830 | |
2831 | TP_fast_assign( |
2832 | LOCAL_ASSIGN; |
2833 | STA_ASSIGN; |
2834 | __entry->block = block; |
2835 | ), |
2836 | |
2837 | TP_printk( |
2838 | LOCAL_PR_FMT STA_PR_FMT " block:%d" , |
2839 | LOCAL_PR_ARG, STA_PR_ARG, __entry->block |
2840 | ) |
2841 | ); |
2842 | |
2843 | TRACE_EVENT(api_chswitch_done, |
2844 | TP_PROTO(struct ieee80211_sub_if_data *sdata, bool success, |
2845 | unsigned int link_id), |
2846 | |
2847 | TP_ARGS(sdata, success, link_id), |
2848 | |
2849 | TP_STRUCT__entry( |
2850 | VIF_ENTRY |
2851 | __field(bool, success) |
2852 | __field(unsigned int, link_id) |
2853 | ), |
2854 | |
2855 | TP_fast_assign( |
2856 | VIF_ASSIGN; |
2857 | __entry->success = success; |
2858 | __entry->link_id = link_id; |
2859 | ), |
2860 | |
2861 | TP_printk( |
2862 | VIF_PR_FMT " success=%d link_id=%d" , |
2863 | VIF_PR_ARG, __entry->success, __entry->link_id |
2864 | ) |
2865 | ); |
2866 | |
2867 | DEFINE_EVENT(local_only_evt, api_ready_on_channel, |
2868 | TP_PROTO(struct ieee80211_local *local), |
2869 | TP_ARGS(local) |
2870 | ); |
2871 | |
2872 | DEFINE_EVENT(local_only_evt, api_remain_on_channel_expired, |
2873 | TP_PROTO(struct ieee80211_local *local), |
2874 | TP_ARGS(local) |
2875 | ); |
2876 | |
2877 | TRACE_EVENT(api_gtk_rekey_notify, |
2878 | TP_PROTO(struct ieee80211_sub_if_data *sdata, |
2879 | const u8 *bssid, const u8 *replay_ctr), |
2880 | |
2881 | TP_ARGS(sdata, bssid, replay_ctr), |
2882 | |
2883 | TP_STRUCT__entry( |
2884 | VIF_ENTRY |
2885 | __array(u8, bssid, ETH_ALEN) |
2886 | __array(u8, replay_ctr, NL80211_REPLAY_CTR_LEN) |
2887 | ), |
2888 | |
2889 | TP_fast_assign( |
2890 | VIF_ASSIGN; |
2891 | memcpy(__entry->bssid, bssid, ETH_ALEN); |
2892 | memcpy(__entry->replay_ctr, replay_ctr, NL80211_REPLAY_CTR_LEN); |
2893 | ), |
2894 | |
2895 | TP_printk(VIF_PR_FMT, VIF_PR_ARG) |
2896 | ); |
2897 | |
2898 | TRACE_EVENT(api_enable_rssi_reports, |
2899 | TP_PROTO(struct ieee80211_sub_if_data *sdata, |
2900 | int , int ), |
2901 | |
2902 | TP_ARGS(sdata, rssi_min_thold, rssi_max_thold), |
2903 | |
2904 | TP_STRUCT__entry( |
2905 | VIF_ENTRY |
2906 | __field(int, rssi_min_thold) |
2907 | __field(int, rssi_max_thold) |
2908 | ), |
2909 | |
2910 | TP_fast_assign( |
2911 | VIF_ASSIGN; |
2912 | __entry->rssi_min_thold = rssi_min_thold; |
2913 | __entry->rssi_max_thold = rssi_max_thold; |
2914 | ), |
2915 | |
2916 | TP_printk( |
2917 | VIF_PR_FMT " rssi_min_thold =%d, rssi_max_thold = %d" , |
2918 | VIF_PR_ARG, __entry->rssi_min_thold, __entry->rssi_max_thold |
2919 | ) |
2920 | ); |
2921 | |
2922 | TRACE_EVENT(api_eosp, |
2923 | TP_PROTO(struct ieee80211_local *local, |
2924 | struct ieee80211_sta *sta), |
2925 | |
2926 | TP_ARGS(local, sta), |
2927 | |
2928 | TP_STRUCT__entry( |
2929 | LOCAL_ENTRY |
2930 | STA_ENTRY |
2931 | ), |
2932 | |
2933 | TP_fast_assign( |
2934 | LOCAL_ASSIGN; |
2935 | STA_ASSIGN; |
2936 | ), |
2937 | |
2938 | TP_printk( |
2939 | LOCAL_PR_FMT STA_PR_FMT, |
2940 | LOCAL_PR_ARG, STA_PR_ARG |
2941 | ) |
2942 | ); |
2943 | |
2944 | TRACE_EVENT(api_send_eosp_nullfunc, |
2945 | TP_PROTO(struct ieee80211_local *local, |
2946 | struct ieee80211_sta *sta, |
2947 | u8 tid), |
2948 | |
2949 | TP_ARGS(local, sta, tid), |
2950 | |
2951 | TP_STRUCT__entry( |
2952 | LOCAL_ENTRY |
2953 | STA_ENTRY |
2954 | __field(u8, tid) |
2955 | ), |
2956 | |
2957 | TP_fast_assign( |
2958 | LOCAL_ASSIGN; |
2959 | STA_ASSIGN; |
2960 | __entry->tid = tid; |
2961 | ), |
2962 | |
2963 | TP_printk( |
2964 | LOCAL_PR_FMT STA_PR_FMT " tid:%d" , |
2965 | LOCAL_PR_ARG, STA_PR_ARG, __entry->tid |
2966 | ) |
2967 | ); |
2968 | |
2969 | TRACE_EVENT(api_sta_set_buffered, |
2970 | TP_PROTO(struct ieee80211_local *local, |
2971 | struct ieee80211_sta *sta, |
2972 | u8 tid, bool buffered), |
2973 | |
2974 | TP_ARGS(local, sta, tid, buffered), |
2975 | |
2976 | TP_STRUCT__entry( |
2977 | LOCAL_ENTRY |
2978 | STA_ENTRY |
2979 | __field(u8, tid) |
2980 | __field(bool, buffered) |
2981 | ), |
2982 | |
2983 | TP_fast_assign( |
2984 | LOCAL_ASSIGN; |
2985 | STA_ASSIGN; |
2986 | __entry->tid = tid; |
2987 | __entry->buffered = buffered; |
2988 | ), |
2989 | |
2990 | TP_printk( |
2991 | LOCAL_PR_FMT STA_PR_FMT " tid:%d buffered:%d" , |
2992 | LOCAL_PR_ARG, STA_PR_ARG, __entry->tid, __entry->buffered |
2993 | ) |
2994 | ); |
2995 | |
2996 | TRACE_EVENT(api_radar_detected, |
2997 | TP_PROTO(struct ieee80211_local *local), |
2998 | |
2999 | TP_ARGS(local), |
3000 | |
3001 | TP_STRUCT__entry( |
3002 | LOCAL_ENTRY |
3003 | ), |
3004 | |
3005 | TP_fast_assign( |
3006 | LOCAL_ASSIGN; |
3007 | ), |
3008 | |
3009 | TP_printk( |
3010 | LOCAL_PR_FMT " radar detected" , |
3011 | LOCAL_PR_ARG |
3012 | ) |
3013 | ); |
3014 | |
3015 | TRACE_EVENT(api_request_smps, |
3016 | TP_PROTO(struct ieee80211_local *local, |
3017 | struct ieee80211_sub_if_data *sdata, |
3018 | struct ieee80211_link_data *link, |
3019 | enum ieee80211_smps_mode smps_mode), |
3020 | |
3021 | TP_ARGS(local, sdata, link, smps_mode), |
3022 | |
3023 | TP_STRUCT__entry( |
3024 | LOCAL_ENTRY |
3025 | VIF_ENTRY |
3026 | __field(int, link_id) |
3027 | __field(u32, smps_mode) |
3028 | ), |
3029 | |
3030 | TP_fast_assign( |
3031 | LOCAL_ASSIGN; |
3032 | VIF_ASSIGN; |
3033 | __entry->link_id = link->link_id, |
3034 | __entry->smps_mode = smps_mode; |
3035 | ), |
3036 | |
3037 | TP_printk( |
3038 | LOCAL_PR_FMT " " VIF_PR_FMT " link:%d, smps_mode:%d" , |
3039 | LOCAL_PR_ARG, VIF_PR_ARG, __entry->link_id, __entry->smps_mode |
3040 | ) |
3041 | ); |
3042 | |
3043 | /* |
3044 | * Tracing for internal functions |
3045 | * (which may also be called in response to driver calls) |
3046 | */ |
3047 | |
3048 | TRACE_EVENT(wake_queue, |
3049 | TP_PROTO(struct ieee80211_local *local, u16 queue, |
3050 | enum queue_stop_reason reason), |
3051 | |
3052 | TP_ARGS(local, queue, reason), |
3053 | |
3054 | TP_STRUCT__entry( |
3055 | LOCAL_ENTRY |
3056 | __field(u16, queue) |
3057 | __field(u32, reason) |
3058 | ), |
3059 | |
3060 | TP_fast_assign( |
3061 | LOCAL_ASSIGN; |
3062 | __entry->queue = queue; |
3063 | __entry->reason = reason; |
3064 | ), |
3065 | |
3066 | TP_printk( |
3067 | LOCAL_PR_FMT " queue:%d, reason:%d" , |
3068 | LOCAL_PR_ARG, __entry->queue, __entry->reason |
3069 | ) |
3070 | ); |
3071 | |
3072 | TRACE_EVENT(stop_queue, |
3073 | TP_PROTO(struct ieee80211_local *local, u16 queue, |
3074 | enum queue_stop_reason reason), |
3075 | |
3076 | TP_ARGS(local, queue, reason), |
3077 | |
3078 | TP_STRUCT__entry( |
3079 | LOCAL_ENTRY |
3080 | __field(u16, queue) |
3081 | __field(u32, reason) |
3082 | ), |
3083 | |
3084 | TP_fast_assign( |
3085 | LOCAL_ASSIGN; |
3086 | __entry->queue = queue; |
3087 | __entry->reason = reason; |
3088 | ), |
3089 | |
3090 | TP_printk( |
3091 | LOCAL_PR_FMT " queue:%d, reason:%d" , |
3092 | LOCAL_PR_ARG, __entry->queue, __entry->reason |
3093 | ) |
3094 | ); |
3095 | |
3096 | TRACE_EVENT(drv_can_neg_ttlm, |
3097 | TP_PROTO(struct ieee80211_local *local, |
3098 | struct ieee80211_sub_if_data *sdata, |
3099 | struct ieee80211_neg_ttlm *neg_ttlm), |
3100 | |
3101 | TP_ARGS(local, sdata, neg_ttlm), |
3102 | |
3103 | TP_STRUCT__entry(LOCAL_ENTRY |
3104 | VIF_ENTRY |
3105 | __array(u16, downlink, sizeof(u16) * 8) |
3106 | __array(u16, uplink, sizeof(u16) * 8) |
3107 | ), |
3108 | |
3109 | TP_fast_assign(LOCAL_ASSIGN; |
3110 | VIF_ASSIGN; |
3111 | memcpy(__entry->downlink, neg_ttlm->downlink, |
3112 | sizeof(neg_ttlm->downlink)); |
3113 | memcpy(__entry->uplink, neg_ttlm->uplink, |
3114 | sizeof(neg_ttlm->uplink)); |
3115 | ), |
3116 | |
3117 | TP_printk(LOCAL_PR_FMT ", " VIF_PR_FMT, LOCAL_PR_ARG, VIF_PR_ARG) |
3118 | ); |
3119 | |
3120 | TRACE_EVENT(drv_neg_ttlm_res, |
3121 | TP_PROTO(struct ieee80211_local *local, |
3122 | struct ieee80211_sub_if_data *sdata, |
3123 | enum ieee80211_neg_ttlm_res res, |
3124 | struct ieee80211_neg_ttlm *neg_ttlm), |
3125 | |
3126 | TP_ARGS(local, sdata, res, neg_ttlm), |
3127 | |
3128 | TP_STRUCT__entry(LOCAL_ENTRY |
3129 | VIF_ENTRY |
3130 | __field(u32, res) |
3131 | __array(u16, downlink, sizeof(u16) * 8) |
3132 | __array(u16, uplink, sizeof(u16) * 8) |
3133 | ), |
3134 | |
3135 | TP_fast_assign(LOCAL_ASSIGN; |
3136 | VIF_ASSIGN; |
3137 | __entry->res = res; |
3138 | memcpy(__entry->downlink, neg_ttlm->downlink, |
3139 | sizeof(neg_ttlm->downlink)); |
3140 | memcpy(__entry->uplink, neg_ttlm->uplink, |
3141 | sizeof(neg_ttlm->uplink)); |
3142 | ), |
3143 | |
3144 | TP_printk(LOCAL_PR_FMT VIF_PR_FMT " response: %d\n " , |
3145 | LOCAL_PR_ARG, VIF_PR_ARG, __entry->res |
3146 | ) |
3147 | ); |
3148 | #endif /* !__MAC80211_DRIVER_TRACE || TRACE_HEADER_MULTI_READ */ |
3149 | |
3150 | #undef TRACE_INCLUDE_PATH |
3151 | #define TRACE_INCLUDE_PATH . |
3152 | #undef TRACE_INCLUDE_FILE |
3153 | #define TRACE_INCLUDE_FILE trace |
3154 | #include <trace/define_trace.h> |
3155 | |