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