Merge branch 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
[pandora-kernel.git] / net / mac80211 / driver-trace.h
1 #if !defined(__MAC80211_DRIVER_TRACE) || defined(TRACE_HEADER_MULTI_READ)
2 #define __MAC80211_DRIVER_TRACE
3
4 #include <linux/tracepoint.h>
5 #include <net/mac80211.h>
6 #include "ieee80211_i.h"
7
8 #if !defined(CONFIG_MAC80211_DRIVER_API_TRACER) || defined(__CHECKER__)
9 #undef TRACE_EVENT
10 #define TRACE_EVENT(name, proto, ...) \
11 static inline void trace_ ## name(proto) {}
12 #undef DECLARE_EVENT_CLASS
13 #define DECLARE_EVENT_CLASS(...)
14 #undef DEFINE_EVENT
15 #define DEFINE_EVENT(evt_class, name, proto, ...) \
16 static inline void trace_ ## name(proto) {}
17 #endif
18
19 #undef TRACE_SYSTEM
20 #define TRACE_SYSTEM mac80211
21
22 #define MAXNAME         32
23 #define LOCAL_ENTRY     __array(char, wiphy_name, 32)
24 #define LOCAL_ASSIGN    strlcpy(__entry->wiphy_name, wiphy_name(local->hw.wiphy), MAXNAME)
25 #define LOCAL_PR_FMT    "%s"
26 #define LOCAL_PR_ARG    __entry->wiphy_name
27
28 #define STA_ENTRY       __array(char, sta_addr, ETH_ALEN)
29 #define STA_ASSIGN      (sta ? memcpy(__entry->sta_addr, sta->addr, ETH_ALEN) : memset(__entry->sta_addr, 0, ETH_ALEN))
30 #define STA_PR_FMT      " sta:%pM"
31 #define STA_PR_ARG      __entry->sta_addr
32
33 #define VIF_ENTRY       __field(enum nl80211_iftype, vif_type) __field(void *, sdata)   \
34                         __field(bool, p2p)                                              \
35                         __string(vif_name, sdata->dev ? sdata->dev->name : "<nodev>")
36 #define VIF_ASSIGN      __entry->vif_type = sdata->vif.type; __entry->sdata = sdata;    \
37                         __entry->p2p = sdata->vif.p2p;                                  \
38                         __assign_str(vif_name, sdata->dev ? sdata->dev->name : "<nodev>")
39 #define VIF_PR_FMT      " vif:%s(%d%s)"
40 #define VIF_PR_ARG      __get_str(vif_name), __entry->vif_type, __entry->p2p ? "/p2p" : ""
41
42 /*
43  * Tracing for driver callbacks.
44  */
45
46 DECLARE_EVENT_CLASS(local_only_evt,
47         TP_PROTO(struct ieee80211_local *local),
48         TP_ARGS(local),
49         TP_STRUCT__entry(
50                 LOCAL_ENTRY
51         ),
52         TP_fast_assign(
53                 LOCAL_ASSIGN;
54         ),
55         TP_printk(LOCAL_PR_FMT, LOCAL_PR_ARG)
56 );
57
58 DECLARE_EVENT_CLASS(local_sdata_addr_evt,
59         TP_PROTO(struct ieee80211_local *local,
60                  struct ieee80211_sub_if_data *sdata),
61         TP_ARGS(local, sdata),
62
63         TP_STRUCT__entry(
64                 LOCAL_ENTRY
65                 VIF_ENTRY
66                 __array(char, addr, 6)
67         ),
68
69         TP_fast_assign(
70                 LOCAL_ASSIGN;
71                 VIF_ASSIGN;
72                 memcpy(__entry->addr, sdata->vif.addr, 6);
73         ),
74
75         TP_printk(
76                 LOCAL_PR_FMT  VIF_PR_FMT " addr:%pM",
77                 LOCAL_PR_ARG, VIF_PR_ARG, __entry->addr
78         )
79 );
80
81 DECLARE_EVENT_CLASS(local_u32_evt,
82         TP_PROTO(struct ieee80211_local *local, u32 value),
83         TP_ARGS(local, value),
84
85         TP_STRUCT__entry(
86                 LOCAL_ENTRY
87                 __field(u32, value)
88         ),
89
90         TP_fast_assign(
91                 LOCAL_ASSIGN;
92                 __entry->value = value;
93         ),
94
95         TP_printk(
96                 LOCAL_PR_FMT " value:%d",
97                 LOCAL_PR_ARG, __entry->value
98         )
99 );
100
101 DECLARE_EVENT_CLASS(local_sdata_evt,
102         TP_PROTO(struct ieee80211_local *local,
103                  struct ieee80211_sub_if_data *sdata),
104         TP_ARGS(local, sdata),
105
106         TP_STRUCT__entry(
107                 LOCAL_ENTRY
108                 VIF_ENTRY
109         ),
110
111         TP_fast_assign(
112                 LOCAL_ASSIGN;
113                 VIF_ASSIGN;
114         ),
115
116         TP_printk(
117                 LOCAL_PR_FMT VIF_PR_FMT,
118                 LOCAL_PR_ARG, VIF_PR_ARG
119         )
120 );
121
122 DEFINE_EVENT(local_only_evt, drv_return_void,
123         TP_PROTO(struct ieee80211_local *local),
124         TP_ARGS(local)
125 );
126
127 TRACE_EVENT(drv_return_int,
128         TP_PROTO(struct ieee80211_local *local, int ret),
129         TP_ARGS(local, ret),
130         TP_STRUCT__entry(
131                 LOCAL_ENTRY
132                 __field(int, ret)
133         ),
134         TP_fast_assign(
135                 LOCAL_ASSIGN;
136                 __entry->ret = ret;
137         ),
138         TP_printk(LOCAL_PR_FMT " - %d", LOCAL_PR_ARG, __entry->ret)
139 );
140
141 TRACE_EVENT(drv_return_bool,
142         TP_PROTO(struct ieee80211_local *local, bool ret),
143         TP_ARGS(local, ret),
144         TP_STRUCT__entry(
145                 LOCAL_ENTRY
146                 __field(bool, ret)
147         ),
148         TP_fast_assign(
149                 LOCAL_ASSIGN;
150                 __entry->ret = ret;
151         ),
152         TP_printk(LOCAL_PR_FMT " - %s", LOCAL_PR_ARG, (__entry->ret) ?
153                   "true" : "false")
154 );
155
156 TRACE_EVENT(drv_return_u64,
157         TP_PROTO(struct ieee80211_local *local, u64 ret),
158         TP_ARGS(local, ret),
159         TP_STRUCT__entry(
160                 LOCAL_ENTRY
161                 __field(u64, ret)
162         ),
163         TP_fast_assign(
164                 LOCAL_ASSIGN;
165                 __entry->ret = ret;
166         ),
167         TP_printk(LOCAL_PR_FMT " - %llu", LOCAL_PR_ARG, __entry->ret)
168 );
169
170 DEFINE_EVENT(local_only_evt, drv_start,
171         TP_PROTO(struct ieee80211_local *local),
172         TP_ARGS(local)
173 );
174
175 DEFINE_EVENT(local_only_evt, drv_suspend,
176         TP_PROTO(struct ieee80211_local *local),
177         TP_ARGS(local)
178 );
179
180 DEFINE_EVENT(local_only_evt, drv_resume,
181         TP_PROTO(struct ieee80211_local *local),
182         TP_ARGS(local)
183 );
184
185 DEFINE_EVENT(local_only_evt, drv_stop,
186         TP_PROTO(struct ieee80211_local *local),
187         TP_ARGS(local)
188 );
189
190 DEFINE_EVENT(local_sdata_addr_evt, drv_add_interface,
191         TP_PROTO(struct ieee80211_local *local,
192                  struct ieee80211_sub_if_data *sdata),
193         TP_ARGS(local, sdata)
194 );
195
196 TRACE_EVENT(drv_change_interface,
197         TP_PROTO(struct ieee80211_local *local,
198                  struct ieee80211_sub_if_data *sdata,
199                  enum nl80211_iftype type, bool p2p),
200
201         TP_ARGS(local, sdata, type, p2p),
202
203         TP_STRUCT__entry(
204                 LOCAL_ENTRY
205                 VIF_ENTRY
206                 __field(u32, new_type)
207                 __field(bool, new_p2p)
208         ),
209
210         TP_fast_assign(
211                 LOCAL_ASSIGN;
212                 VIF_ASSIGN;
213                 __entry->new_type = type;
214                 __entry->new_p2p = p2p;
215         ),
216
217         TP_printk(
218                 LOCAL_PR_FMT  VIF_PR_FMT " new type:%d%s",
219                 LOCAL_PR_ARG, VIF_PR_ARG, __entry->new_type,
220                 __entry->new_p2p ? "/p2p" : ""
221         )
222 );
223
224 DEFINE_EVENT(local_sdata_addr_evt, drv_remove_interface,
225         TP_PROTO(struct ieee80211_local *local,
226                  struct ieee80211_sub_if_data *sdata),
227         TP_ARGS(local, sdata)
228 );
229
230 TRACE_EVENT(drv_config,
231         TP_PROTO(struct ieee80211_local *local,
232                  u32 changed),
233
234         TP_ARGS(local, changed),
235
236         TP_STRUCT__entry(
237                 LOCAL_ENTRY
238                 __field(u32, changed)
239                 __field(u32, flags)
240                 __field(int, power_level)
241                 __field(int, dynamic_ps_timeout)
242                 __field(int, max_sleep_period)
243                 __field(u16, listen_interval)
244                 __field(u8, long_frame_max_tx_count)
245                 __field(u8, short_frame_max_tx_count)
246                 __field(int, center_freq)
247                 __field(int, channel_type)
248                 __field(int, smps)
249         ),
250
251         TP_fast_assign(
252                 LOCAL_ASSIGN;
253                 __entry->changed = changed;
254                 __entry->flags = local->hw.conf.flags;
255                 __entry->power_level = local->hw.conf.power_level;
256                 __entry->dynamic_ps_timeout = local->hw.conf.dynamic_ps_timeout;
257                 __entry->max_sleep_period = local->hw.conf.max_sleep_period;
258                 __entry->listen_interval = local->hw.conf.listen_interval;
259                 __entry->long_frame_max_tx_count = local->hw.conf.long_frame_max_tx_count;
260                 __entry->short_frame_max_tx_count = local->hw.conf.short_frame_max_tx_count;
261                 __entry->center_freq = local->hw.conf.channel->center_freq;
262                 __entry->channel_type = local->hw.conf.channel_type;
263                 __entry->smps = local->hw.conf.smps_mode;
264         ),
265
266         TP_printk(
267                 LOCAL_PR_FMT " ch:%#x freq:%d",
268                 LOCAL_PR_ARG, __entry->changed, __entry->center_freq
269         )
270 );
271
272 TRACE_EVENT(drv_bss_info_changed,
273         TP_PROTO(struct ieee80211_local *local,
274                  struct ieee80211_sub_if_data *sdata,
275                  struct ieee80211_bss_conf *info,
276                  u32 changed),
277
278         TP_ARGS(local, sdata, info, changed),
279
280         TP_STRUCT__entry(
281                 LOCAL_ENTRY
282                 VIF_ENTRY
283                 __field(bool, assoc)
284                 __field(u16, aid)
285                 __field(bool, cts)
286                 __field(bool, shortpre)
287                 __field(bool, shortslot)
288                 __field(u8, dtimper)
289                 __field(u16, bcnint)
290                 __field(u16, assoc_cap)
291                 __field(u64, timestamp)
292                 __field(u32, basic_rates)
293                 __field(u32, changed)
294                 __field(bool, enable_beacon)
295                 __field(u16, ht_operation_mode)
296         ),
297
298         TP_fast_assign(
299                 LOCAL_ASSIGN;
300                 VIF_ASSIGN;
301                 __entry->changed = changed;
302                 __entry->aid = info->aid;
303                 __entry->assoc = info->assoc;
304                 __entry->shortpre = info->use_short_preamble;
305                 __entry->cts = info->use_cts_prot;
306                 __entry->shortslot = info->use_short_slot;
307                 __entry->dtimper = info->dtim_period;
308                 __entry->bcnint = info->beacon_int;
309                 __entry->assoc_cap = info->assoc_capability;
310                 __entry->timestamp = info->timestamp;
311                 __entry->basic_rates = info->basic_rates;
312                 __entry->enable_beacon = info->enable_beacon;
313                 __entry->ht_operation_mode = info->ht_operation_mode;
314         ),
315
316         TP_printk(
317                 LOCAL_PR_FMT  VIF_PR_FMT " changed:%#x",
318                 LOCAL_PR_ARG, VIF_PR_ARG, __entry->changed
319         )
320 );
321
322 TRACE_EVENT(drv_prepare_multicast,
323         TP_PROTO(struct ieee80211_local *local, int mc_count),
324
325         TP_ARGS(local, mc_count),
326
327         TP_STRUCT__entry(
328                 LOCAL_ENTRY
329                 __field(int, mc_count)
330         ),
331
332         TP_fast_assign(
333                 LOCAL_ASSIGN;
334                 __entry->mc_count = mc_count;
335         ),
336
337         TP_printk(
338                 LOCAL_PR_FMT " prepare mc (%d)",
339                 LOCAL_PR_ARG, __entry->mc_count
340         )
341 );
342
343 TRACE_EVENT(drv_configure_filter,
344         TP_PROTO(struct ieee80211_local *local,
345                  unsigned int changed_flags,
346                  unsigned int *total_flags,
347                  u64 multicast),
348
349         TP_ARGS(local, changed_flags, total_flags, multicast),
350
351         TP_STRUCT__entry(
352                 LOCAL_ENTRY
353                 __field(unsigned int, changed)
354                 __field(unsigned int, total)
355                 __field(u64, multicast)
356         ),
357
358         TP_fast_assign(
359                 LOCAL_ASSIGN;
360                 __entry->changed = changed_flags;
361                 __entry->total = *total_flags;
362                 __entry->multicast = multicast;
363         ),
364
365         TP_printk(
366                 LOCAL_PR_FMT " changed:%#x total:%#x",
367                 LOCAL_PR_ARG, __entry->changed, __entry->total
368         )
369 );
370
371 TRACE_EVENT(drv_set_tim,
372         TP_PROTO(struct ieee80211_local *local,
373                  struct ieee80211_sta *sta, bool set),
374
375         TP_ARGS(local, sta, set),
376
377         TP_STRUCT__entry(
378                 LOCAL_ENTRY
379                 STA_ENTRY
380                 __field(bool, set)
381         ),
382
383         TP_fast_assign(
384                 LOCAL_ASSIGN;
385                 STA_ASSIGN;
386                 __entry->set = set;
387         ),
388
389         TP_printk(
390                 LOCAL_PR_FMT STA_PR_FMT " set:%d",
391                 LOCAL_PR_ARG, STA_PR_FMT, __entry->set
392         )
393 );
394
395 TRACE_EVENT(drv_set_key,
396         TP_PROTO(struct ieee80211_local *local,
397                  enum set_key_cmd cmd, struct ieee80211_sub_if_data *sdata,
398                  struct ieee80211_sta *sta,
399                  struct ieee80211_key_conf *key),
400
401         TP_ARGS(local, cmd, sdata, sta, key),
402
403         TP_STRUCT__entry(
404                 LOCAL_ENTRY
405                 VIF_ENTRY
406                 STA_ENTRY
407                 __field(u32, cipher)
408                 __field(u8, hw_key_idx)
409                 __field(u8, flags)
410                 __field(s8, keyidx)
411         ),
412
413         TP_fast_assign(
414                 LOCAL_ASSIGN;
415                 VIF_ASSIGN;
416                 STA_ASSIGN;
417                 __entry->cipher = key->cipher;
418                 __entry->flags = key->flags;
419                 __entry->keyidx = key->keyidx;
420                 __entry->hw_key_idx = key->hw_key_idx;
421         ),
422
423         TP_printk(
424                 LOCAL_PR_FMT  VIF_PR_FMT  STA_PR_FMT,
425                 LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG
426         )
427 );
428
429 TRACE_EVENT(drv_update_tkip_key,
430         TP_PROTO(struct ieee80211_local *local,
431                  struct ieee80211_sub_if_data *sdata,
432                  struct ieee80211_key_conf *conf,
433                  struct ieee80211_sta *sta, u32 iv32),
434
435         TP_ARGS(local, sdata, conf, sta, iv32),
436
437         TP_STRUCT__entry(
438                 LOCAL_ENTRY
439                 VIF_ENTRY
440                 STA_ENTRY
441                 __field(u32, iv32)
442         ),
443
444         TP_fast_assign(
445                 LOCAL_ASSIGN;
446                 VIF_ASSIGN;
447                 STA_ASSIGN;
448                 __entry->iv32 = iv32;
449         ),
450
451         TP_printk(
452                 LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT " iv32:%#x",
453                 LOCAL_PR_ARG,VIF_PR_ARG,STA_PR_ARG, __entry->iv32
454         )
455 );
456
457 DEFINE_EVENT(local_sdata_evt, drv_hw_scan,
458         TP_PROTO(struct ieee80211_local *local,
459                  struct ieee80211_sub_if_data *sdata),
460         TP_ARGS(local, sdata)
461 );
462
463 DEFINE_EVENT(local_sdata_evt, drv_cancel_hw_scan,
464         TP_PROTO(struct ieee80211_local *local,
465                  struct ieee80211_sub_if_data *sdata),
466         TP_ARGS(local, sdata)
467 );
468
469 DEFINE_EVENT(local_sdata_evt, drv_sched_scan_start,
470         TP_PROTO(struct ieee80211_local *local,
471                  struct ieee80211_sub_if_data *sdata),
472         TP_ARGS(local, sdata)
473 );
474
475 DEFINE_EVENT(local_sdata_evt, drv_sched_scan_stop,
476         TP_PROTO(struct ieee80211_local *local,
477                  struct ieee80211_sub_if_data *sdata),
478         TP_ARGS(local, sdata)
479 );
480
481 DEFINE_EVENT(local_only_evt, drv_sw_scan_start,
482         TP_PROTO(struct ieee80211_local *local),
483         TP_ARGS(local)
484 );
485
486 DEFINE_EVENT(local_only_evt, drv_sw_scan_complete,
487         TP_PROTO(struct ieee80211_local *local),
488         TP_ARGS(local)
489 );
490
491 TRACE_EVENT(drv_get_stats,
492         TP_PROTO(struct ieee80211_local *local,
493                  struct ieee80211_low_level_stats *stats,
494                  int ret),
495
496         TP_ARGS(local, stats, ret),
497
498         TP_STRUCT__entry(
499                 LOCAL_ENTRY
500                 __field(int, ret)
501                 __field(unsigned int, ackfail)
502                 __field(unsigned int, rtsfail)
503                 __field(unsigned int, fcserr)
504                 __field(unsigned int, rtssucc)
505         ),
506
507         TP_fast_assign(
508                 LOCAL_ASSIGN;
509                 __entry->ret = ret;
510                 __entry->ackfail = stats->dot11ACKFailureCount;
511                 __entry->rtsfail = stats->dot11RTSFailureCount;
512                 __entry->fcserr = stats->dot11FCSErrorCount;
513                 __entry->rtssucc = stats->dot11RTSSuccessCount;
514         ),
515
516         TP_printk(
517                 LOCAL_PR_FMT " ret:%d",
518                 LOCAL_PR_ARG, __entry->ret
519         )
520 );
521
522 TRACE_EVENT(drv_get_tkip_seq,
523         TP_PROTO(struct ieee80211_local *local,
524                  u8 hw_key_idx, u32 *iv32, u16 *iv16),
525
526         TP_ARGS(local, hw_key_idx, iv32, iv16),
527
528         TP_STRUCT__entry(
529                 LOCAL_ENTRY
530                 __field(u8, hw_key_idx)
531                 __field(u32, iv32)
532                 __field(u16, iv16)
533         ),
534
535         TP_fast_assign(
536                 LOCAL_ASSIGN;
537                 __entry->hw_key_idx = hw_key_idx;
538                 __entry->iv32 = *iv32;
539                 __entry->iv16 = *iv16;
540         ),
541
542         TP_printk(
543                 LOCAL_PR_FMT, LOCAL_PR_ARG
544         )
545 );
546
547 DEFINE_EVENT(local_u32_evt, drv_set_frag_threshold,
548         TP_PROTO(struct ieee80211_local *local, u32 value),
549         TP_ARGS(local, value)
550 );
551
552 DEFINE_EVENT(local_u32_evt, drv_set_rts_threshold,
553         TP_PROTO(struct ieee80211_local *local, u32 value),
554         TP_ARGS(local, value)
555 );
556
557 TRACE_EVENT(drv_set_coverage_class,
558         TP_PROTO(struct ieee80211_local *local, u8 value),
559
560         TP_ARGS(local, value),
561
562         TP_STRUCT__entry(
563                 LOCAL_ENTRY
564                 __field(u8, value)
565         ),
566
567         TP_fast_assign(
568                 LOCAL_ASSIGN;
569                 __entry->value = value;
570         ),
571
572         TP_printk(
573                 LOCAL_PR_FMT " value:%d",
574                 LOCAL_PR_ARG, __entry->value
575         )
576 );
577
578 TRACE_EVENT(drv_sta_notify,
579         TP_PROTO(struct ieee80211_local *local,
580                  struct ieee80211_sub_if_data *sdata,
581                  enum sta_notify_cmd cmd,
582                  struct ieee80211_sta *sta),
583
584         TP_ARGS(local, sdata, cmd, sta),
585
586         TP_STRUCT__entry(
587                 LOCAL_ENTRY
588                 VIF_ENTRY
589                 STA_ENTRY
590                 __field(u32, cmd)
591         ),
592
593         TP_fast_assign(
594                 LOCAL_ASSIGN;
595                 VIF_ASSIGN;
596                 STA_ASSIGN;
597                 __entry->cmd = cmd;
598         ),
599
600         TP_printk(
601                 LOCAL_PR_FMT  VIF_PR_FMT  STA_PR_FMT " cmd:%d",
602                 LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG, __entry->cmd
603         )
604 );
605
606 TRACE_EVENT(drv_sta_add,
607         TP_PROTO(struct ieee80211_local *local,
608                  struct ieee80211_sub_if_data *sdata,
609                  struct ieee80211_sta *sta),
610
611         TP_ARGS(local, sdata, sta),
612
613         TP_STRUCT__entry(
614                 LOCAL_ENTRY
615                 VIF_ENTRY
616                 STA_ENTRY
617         ),
618
619         TP_fast_assign(
620                 LOCAL_ASSIGN;
621                 VIF_ASSIGN;
622                 STA_ASSIGN;
623         ),
624
625         TP_printk(
626                 LOCAL_PR_FMT  VIF_PR_FMT  STA_PR_FMT,
627                 LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG
628         )
629 );
630
631 TRACE_EVENT(drv_sta_remove,
632         TP_PROTO(struct ieee80211_local *local,
633                  struct ieee80211_sub_if_data *sdata,
634                  struct ieee80211_sta *sta),
635
636         TP_ARGS(local, sdata, sta),
637
638         TP_STRUCT__entry(
639                 LOCAL_ENTRY
640                 VIF_ENTRY
641                 STA_ENTRY
642         ),
643
644         TP_fast_assign(
645                 LOCAL_ASSIGN;
646                 VIF_ASSIGN;
647                 STA_ASSIGN;
648         ),
649
650         TP_printk(
651                 LOCAL_PR_FMT  VIF_PR_FMT  STA_PR_FMT,
652                 LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG
653         )
654 );
655
656 TRACE_EVENT(drv_conf_tx,
657         TP_PROTO(struct ieee80211_local *local, u16 queue,
658                  const struct ieee80211_tx_queue_params *params),
659
660         TP_ARGS(local, queue, params),
661
662         TP_STRUCT__entry(
663                 LOCAL_ENTRY
664                 __field(u16, queue)
665                 __field(u16, txop)
666                 __field(u16, cw_min)
667                 __field(u16, cw_max)
668                 __field(u8, aifs)
669         ),
670
671         TP_fast_assign(
672                 LOCAL_ASSIGN;
673                 __entry->queue = queue;
674                 __entry->txop = params->txop;
675                 __entry->cw_max = params->cw_max;
676                 __entry->cw_min = params->cw_min;
677                 __entry->aifs = params->aifs;
678         ),
679
680         TP_printk(
681                 LOCAL_PR_FMT " queue:%d",
682                 LOCAL_PR_ARG, __entry->queue
683         )
684 );
685
686 DEFINE_EVENT(local_only_evt, drv_get_tsf,
687         TP_PROTO(struct ieee80211_local *local),
688         TP_ARGS(local)
689 );
690
691 TRACE_EVENT(drv_set_tsf,
692         TP_PROTO(struct ieee80211_local *local, u64 tsf),
693
694         TP_ARGS(local, tsf),
695
696         TP_STRUCT__entry(
697                 LOCAL_ENTRY
698                 __field(u64, tsf)
699         ),
700
701         TP_fast_assign(
702                 LOCAL_ASSIGN;
703                 __entry->tsf = tsf;
704         ),
705
706         TP_printk(
707                 LOCAL_PR_FMT " tsf:%llu",
708                 LOCAL_PR_ARG, (unsigned long long)__entry->tsf
709         )
710 );
711
712 DEFINE_EVENT(local_only_evt, drv_reset_tsf,
713         TP_PROTO(struct ieee80211_local *local),
714         TP_ARGS(local)
715 );
716
717 DEFINE_EVENT(local_only_evt, drv_tx_last_beacon,
718         TP_PROTO(struct ieee80211_local *local),
719         TP_ARGS(local)
720 );
721
722 TRACE_EVENT(drv_ampdu_action,
723         TP_PROTO(struct ieee80211_local *local,
724                  struct ieee80211_sub_if_data *sdata,
725                  enum ieee80211_ampdu_mlme_action action,
726                  struct ieee80211_sta *sta, u16 tid,
727                  u16 *ssn, u8 buf_size),
728
729         TP_ARGS(local, sdata, action, sta, tid, ssn, buf_size),
730
731         TP_STRUCT__entry(
732                 LOCAL_ENTRY
733                 STA_ENTRY
734                 __field(u32, action)
735                 __field(u16, tid)
736                 __field(u16, ssn)
737                 __field(u8, buf_size)
738                 VIF_ENTRY
739         ),
740
741         TP_fast_assign(
742                 LOCAL_ASSIGN;
743                 VIF_ASSIGN;
744                 STA_ASSIGN;
745                 __entry->action = action;
746                 __entry->tid = tid;
747                 __entry->ssn = ssn ? *ssn : 0;
748                 __entry->buf_size = buf_size;
749         ),
750
751         TP_printk(
752                 LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT " action:%d tid:%d buf:%d",
753                 LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG, __entry->action,
754                 __entry->tid, __entry->buf_size
755         )
756 );
757
758 TRACE_EVENT(drv_get_survey,
759         TP_PROTO(struct ieee80211_local *local, int idx,
760                  struct survey_info *survey),
761
762         TP_ARGS(local, idx, survey),
763
764         TP_STRUCT__entry(
765                 LOCAL_ENTRY
766                 __field(int, idx)
767         ),
768
769         TP_fast_assign(
770                 LOCAL_ASSIGN;
771                 __entry->idx = idx;
772         ),
773
774         TP_printk(
775                 LOCAL_PR_FMT " idx:%d",
776                 LOCAL_PR_ARG, __entry->idx
777         )
778 );
779
780 TRACE_EVENT(drv_flush,
781         TP_PROTO(struct ieee80211_local *local, bool drop),
782
783         TP_ARGS(local, drop),
784
785         TP_STRUCT__entry(
786                 LOCAL_ENTRY
787                 __field(bool, drop)
788         ),
789
790         TP_fast_assign(
791                 LOCAL_ASSIGN;
792                 __entry->drop = drop;
793         ),
794
795         TP_printk(
796                 LOCAL_PR_FMT " drop:%d",
797                 LOCAL_PR_ARG, __entry->drop
798         )
799 );
800
801 TRACE_EVENT(drv_channel_switch,
802         TP_PROTO(struct ieee80211_local *local,
803                  struct ieee80211_channel_switch *ch_switch),
804
805         TP_ARGS(local, ch_switch),
806
807         TP_STRUCT__entry(
808                 LOCAL_ENTRY
809                 __field(u64, timestamp)
810                 __field(bool, block_tx)
811                 __field(u16, freq)
812                 __field(u8, count)
813         ),
814
815         TP_fast_assign(
816                 LOCAL_ASSIGN;
817                 __entry->timestamp = ch_switch->timestamp;
818                 __entry->block_tx = ch_switch->block_tx;
819                 __entry->freq = ch_switch->channel->center_freq;
820                 __entry->count = ch_switch->count;
821         ),
822
823         TP_printk(
824                 LOCAL_PR_FMT " new freq:%u count:%d",
825                 LOCAL_PR_ARG, __entry->freq, __entry->count
826         )
827 );
828
829 TRACE_EVENT(drv_set_antenna,
830         TP_PROTO(struct ieee80211_local *local, u32 tx_ant, u32 rx_ant, int ret),
831
832         TP_ARGS(local, tx_ant, rx_ant, ret),
833
834         TP_STRUCT__entry(
835                 LOCAL_ENTRY
836                 __field(u32, tx_ant)
837                 __field(u32, rx_ant)
838                 __field(int, ret)
839         ),
840
841         TP_fast_assign(
842                 LOCAL_ASSIGN;
843                 __entry->tx_ant = tx_ant;
844                 __entry->rx_ant = rx_ant;
845                 __entry->ret = ret;
846         ),
847
848         TP_printk(
849                 LOCAL_PR_FMT " tx_ant:%d rx_ant:%d ret:%d",
850                 LOCAL_PR_ARG, __entry->tx_ant, __entry->rx_ant, __entry->ret
851         )
852 );
853
854 TRACE_EVENT(drv_get_antenna,
855         TP_PROTO(struct ieee80211_local *local, u32 tx_ant, u32 rx_ant, int ret),
856
857         TP_ARGS(local, tx_ant, rx_ant, ret),
858
859         TP_STRUCT__entry(
860                 LOCAL_ENTRY
861                 __field(u32, tx_ant)
862                 __field(u32, rx_ant)
863                 __field(int, ret)
864         ),
865
866         TP_fast_assign(
867                 LOCAL_ASSIGN;
868                 __entry->tx_ant = tx_ant;
869                 __entry->rx_ant = rx_ant;
870                 __entry->ret = ret;
871         ),
872
873         TP_printk(
874                 LOCAL_PR_FMT " tx_ant:%d rx_ant:%d ret:%d",
875                 LOCAL_PR_ARG, __entry->tx_ant, __entry->rx_ant, __entry->ret
876         )
877 );
878
879 TRACE_EVENT(drv_remain_on_channel,
880         TP_PROTO(struct ieee80211_local *local, struct ieee80211_channel *chan,
881                  enum nl80211_channel_type chantype, unsigned int duration),
882
883         TP_ARGS(local, chan, chantype, duration),
884
885         TP_STRUCT__entry(
886                 LOCAL_ENTRY
887                 __field(int, center_freq)
888                 __field(int, channel_type)
889                 __field(unsigned int, duration)
890         ),
891
892         TP_fast_assign(
893                 LOCAL_ASSIGN;
894                 __entry->center_freq = chan->center_freq;
895                 __entry->channel_type = chantype;
896                 __entry->duration = duration;
897         ),
898
899         TP_printk(
900                 LOCAL_PR_FMT " freq:%dMHz duration:%dms",
901                 LOCAL_PR_ARG, __entry->center_freq, __entry->duration
902         )
903 );
904
905 DEFINE_EVENT(local_only_evt, drv_cancel_remain_on_channel,
906         TP_PROTO(struct ieee80211_local *local),
907         TP_ARGS(local)
908 );
909
910 TRACE_EVENT(drv_offchannel_tx,
911         TP_PROTO(struct ieee80211_local *local, struct sk_buff *skb,
912                  struct ieee80211_channel *chan,
913                  enum nl80211_channel_type channel_type,
914                  unsigned int wait),
915
916         TP_ARGS(local, skb, chan, channel_type, wait),
917
918         TP_STRUCT__entry(
919                 LOCAL_ENTRY
920                 __field(int, center_freq)
921                 __field(int, channel_type)
922                 __field(unsigned int, wait)
923         ),
924
925         TP_fast_assign(
926                 LOCAL_ASSIGN;
927                 __entry->center_freq = chan->center_freq;
928                 __entry->channel_type = channel_type;
929                 __entry->wait = wait;
930         ),
931
932         TP_printk(
933                 LOCAL_PR_FMT " freq:%dMHz, wait:%dms",
934                 LOCAL_PR_ARG, __entry->center_freq, __entry->wait
935         )
936 );
937
938 TRACE_EVENT(drv_set_ringparam,
939         TP_PROTO(struct ieee80211_local *local, u32 tx, u32 rx),
940
941         TP_ARGS(local, tx, rx),
942
943         TP_STRUCT__entry(
944                 LOCAL_ENTRY
945                 __field(u32, tx)
946                 __field(u32, rx)
947         ),
948
949         TP_fast_assign(
950                 LOCAL_ASSIGN;
951                 __entry->tx = tx;
952                 __entry->rx = rx;
953         ),
954
955         TP_printk(
956                 LOCAL_PR_FMT " tx:%d rx %d",
957                 LOCAL_PR_ARG, __entry->tx, __entry->rx
958         )
959 );
960
961 TRACE_EVENT(drv_get_ringparam,
962         TP_PROTO(struct ieee80211_local *local, u32 *tx, u32 *tx_max,
963                  u32 *rx, u32 *rx_max),
964
965         TP_ARGS(local, tx, tx_max, rx, rx_max),
966
967         TP_STRUCT__entry(
968                 LOCAL_ENTRY
969                 __field(u32, tx)
970                 __field(u32, tx_max)
971                 __field(u32, rx)
972                 __field(u32, rx_max)
973         ),
974
975         TP_fast_assign(
976                 LOCAL_ASSIGN;
977                 __entry->tx = *tx;
978                 __entry->tx_max = *tx_max;
979                 __entry->rx = *rx;
980                 __entry->rx_max = *rx_max;
981         ),
982
983         TP_printk(
984                 LOCAL_PR_FMT " tx:%d tx_max %d rx %d rx_max %d",
985                 LOCAL_PR_ARG,
986                 __entry->tx, __entry->tx_max, __entry->rx, __entry->rx_max
987         )
988 );
989
990 DEFINE_EVENT(local_only_evt, drv_tx_frames_pending,
991         TP_PROTO(struct ieee80211_local *local),
992         TP_ARGS(local)
993 );
994
995 DEFINE_EVENT(local_only_evt, drv_offchannel_tx_cancel_wait,
996         TP_PROTO(struct ieee80211_local *local),
997         TP_ARGS(local)
998 );
999
1000 TRACE_EVENT(drv_set_bitrate_mask,
1001         TP_PROTO(struct ieee80211_local *local,
1002                  struct ieee80211_sub_if_data *sdata,
1003                  const struct cfg80211_bitrate_mask *mask),
1004
1005         TP_ARGS(local, sdata, mask),
1006
1007         TP_STRUCT__entry(
1008                 LOCAL_ENTRY
1009                 VIF_ENTRY
1010                 __field(u32, legacy_2g)
1011                 __field(u32, legacy_5g)
1012         ),
1013
1014         TP_fast_assign(
1015                 LOCAL_ASSIGN;
1016                 VIF_ASSIGN;
1017                 __entry->legacy_2g = mask->control[IEEE80211_BAND_2GHZ].legacy;
1018                 __entry->legacy_5g = mask->control[IEEE80211_BAND_5GHZ].legacy;
1019         ),
1020
1021         TP_printk(
1022                 LOCAL_PR_FMT  VIF_PR_FMT " 2G Mask:0x%x 5G Mask:0x%x",
1023                 LOCAL_PR_ARG, VIF_PR_ARG, __entry->legacy_2g, __entry->legacy_5g
1024         )
1025 );
1026
1027 TRACE_EVENT(drv_set_rekey_data,
1028         TP_PROTO(struct ieee80211_local *local,
1029                  struct ieee80211_sub_if_data *sdata,
1030                  struct cfg80211_gtk_rekey_data *data),
1031
1032         TP_ARGS(local, sdata, data),
1033
1034         TP_STRUCT__entry(
1035                 LOCAL_ENTRY
1036                 VIF_ENTRY
1037                 __array(u8, kek, NL80211_KEK_LEN)
1038                 __array(u8, kck, NL80211_KCK_LEN)
1039                 __array(u8, replay_ctr, NL80211_REPLAY_CTR_LEN)
1040         ),
1041
1042         TP_fast_assign(
1043                 LOCAL_ASSIGN;
1044                 VIF_ASSIGN;
1045                 memcpy(__entry->kek, data->kek, NL80211_KEK_LEN);
1046                 memcpy(__entry->kck, data->kck, NL80211_KCK_LEN);
1047                 memcpy(__entry->replay_ctr, data->replay_ctr,
1048                        NL80211_REPLAY_CTR_LEN);
1049         ),
1050
1051         TP_printk(LOCAL_PR_FMT VIF_PR_FMT,
1052                   LOCAL_PR_ARG, VIF_PR_ARG)
1053 );
1054
1055 TRACE_EVENT(drv_rssi_callback,
1056         TP_PROTO(struct ieee80211_local *local,
1057                  enum ieee80211_rssi_event rssi_event),
1058
1059         TP_ARGS(local, rssi_event),
1060
1061         TP_STRUCT__entry(
1062                 LOCAL_ENTRY
1063                 __field(u32, rssi_event)
1064         ),
1065
1066         TP_fast_assign(
1067                 LOCAL_ASSIGN;
1068                 __entry->rssi_event = rssi_event;
1069         ),
1070
1071         TP_printk(
1072                 LOCAL_PR_FMT " rssi_event:%d",
1073                 LOCAL_PR_ARG, __entry->rssi_event
1074         )
1075 );
1076
1077 /*
1078  * Tracing for API calls that drivers call.
1079  */
1080
1081 TRACE_EVENT(api_start_tx_ba_session,
1082         TP_PROTO(struct ieee80211_sta *sta, u16 tid),
1083
1084         TP_ARGS(sta, tid),
1085
1086         TP_STRUCT__entry(
1087                 STA_ENTRY
1088                 __field(u16, tid)
1089         ),
1090
1091         TP_fast_assign(
1092                 STA_ASSIGN;
1093                 __entry->tid = tid;
1094         ),
1095
1096         TP_printk(
1097                 STA_PR_FMT " tid:%d",
1098                 STA_PR_ARG, __entry->tid
1099         )
1100 );
1101
1102 TRACE_EVENT(api_start_tx_ba_cb,
1103         TP_PROTO(struct ieee80211_sub_if_data *sdata, const u8 *ra, u16 tid),
1104
1105         TP_ARGS(sdata, ra, tid),
1106
1107         TP_STRUCT__entry(
1108                 VIF_ENTRY
1109                 __array(u8, ra, ETH_ALEN)
1110                 __field(u16, tid)
1111         ),
1112
1113         TP_fast_assign(
1114                 VIF_ASSIGN;
1115                 memcpy(__entry->ra, ra, ETH_ALEN);
1116                 __entry->tid = tid;
1117         ),
1118
1119         TP_printk(
1120                 VIF_PR_FMT " ra:%pM tid:%d",
1121                 VIF_PR_ARG, __entry->ra, __entry->tid
1122         )
1123 );
1124
1125 TRACE_EVENT(api_stop_tx_ba_session,
1126         TP_PROTO(struct ieee80211_sta *sta, u16 tid),
1127
1128         TP_ARGS(sta, tid),
1129
1130         TP_STRUCT__entry(
1131                 STA_ENTRY
1132                 __field(u16, tid)
1133         ),
1134
1135         TP_fast_assign(
1136                 STA_ASSIGN;
1137                 __entry->tid = tid;
1138         ),
1139
1140         TP_printk(
1141                 STA_PR_FMT " tid:%d",
1142                 STA_PR_ARG, __entry->tid
1143         )
1144 );
1145
1146 TRACE_EVENT(api_stop_tx_ba_cb,
1147         TP_PROTO(struct ieee80211_sub_if_data *sdata, const u8 *ra, u16 tid),
1148
1149         TP_ARGS(sdata, ra, tid),
1150
1151         TP_STRUCT__entry(
1152                 VIF_ENTRY
1153                 __array(u8, ra, ETH_ALEN)
1154                 __field(u16, tid)
1155         ),
1156
1157         TP_fast_assign(
1158                 VIF_ASSIGN;
1159                 memcpy(__entry->ra, ra, ETH_ALEN);
1160                 __entry->tid = tid;
1161         ),
1162
1163         TP_printk(
1164                 VIF_PR_FMT " ra:%pM tid:%d",
1165                 VIF_PR_ARG, __entry->ra, __entry->tid
1166         )
1167 );
1168
1169 DEFINE_EVENT(local_only_evt, api_restart_hw,
1170         TP_PROTO(struct ieee80211_local *local),
1171         TP_ARGS(local)
1172 );
1173
1174 TRACE_EVENT(api_beacon_loss,
1175         TP_PROTO(struct ieee80211_sub_if_data *sdata),
1176
1177         TP_ARGS(sdata),
1178
1179         TP_STRUCT__entry(
1180                 VIF_ENTRY
1181         ),
1182
1183         TP_fast_assign(
1184                 VIF_ASSIGN;
1185         ),
1186
1187         TP_printk(
1188                 VIF_PR_FMT,
1189                 VIF_PR_ARG
1190         )
1191 );
1192
1193 TRACE_EVENT(api_connection_loss,
1194         TP_PROTO(struct ieee80211_sub_if_data *sdata),
1195
1196         TP_ARGS(sdata),
1197
1198         TP_STRUCT__entry(
1199                 VIF_ENTRY
1200         ),
1201
1202         TP_fast_assign(
1203                 VIF_ASSIGN;
1204         ),
1205
1206         TP_printk(
1207                 VIF_PR_FMT,
1208                 VIF_PR_ARG
1209         )
1210 );
1211
1212 TRACE_EVENT(api_cqm_rssi_notify,
1213         TP_PROTO(struct ieee80211_sub_if_data *sdata,
1214                  enum nl80211_cqm_rssi_threshold_event rssi_event),
1215
1216         TP_ARGS(sdata, rssi_event),
1217
1218         TP_STRUCT__entry(
1219                 VIF_ENTRY
1220                 __field(u32, rssi_event)
1221         ),
1222
1223         TP_fast_assign(
1224                 VIF_ASSIGN;
1225                 __entry->rssi_event = rssi_event;
1226         ),
1227
1228         TP_printk(
1229                 VIF_PR_FMT " event:%d",
1230                 VIF_PR_ARG, __entry->rssi_event
1231         )
1232 );
1233
1234 TRACE_EVENT(api_scan_completed,
1235         TP_PROTO(struct ieee80211_local *local, bool aborted),
1236
1237         TP_ARGS(local, aborted),
1238
1239         TP_STRUCT__entry(
1240                 LOCAL_ENTRY
1241                 __field(bool, aborted)
1242         ),
1243
1244         TP_fast_assign(
1245                 LOCAL_ASSIGN;
1246                 __entry->aborted = aborted;
1247         ),
1248
1249         TP_printk(
1250                 LOCAL_PR_FMT " aborted:%d",
1251                 LOCAL_PR_ARG, __entry->aborted
1252         )
1253 );
1254
1255 TRACE_EVENT(api_sched_scan_results,
1256         TP_PROTO(struct ieee80211_local *local),
1257
1258         TP_ARGS(local),
1259
1260         TP_STRUCT__entry(
1261                 LOCAL_ENTRY
1262         ),
1263
1264         TP_fast_assign(
1265                 LOCAL_ASSIGN;
1266         ),
1267
1268         TP_printk(
1269                 LOCAL_PR_FMT, LOCAL_PR_ARG
1270         )
1271 );
1272
1273 TRACE_EVENT(api_sched_scan_stopped,
1274         TP_PROTO(struct ieee80211_local *local),
1275
1276         TP_ARGS(local),
1277
1278         TP_STRUCT__entry(
1279                 LOCAL_ENTRY
1280         ),
1281
1282         TP_fast_assign(
1283                 LOCAL_ASSIGN;
1284         ),
1285
1286         TP_printk(
1287                 LOCAL_PR_FMT, LOCAL_PR_ARG
1288         )
1289 );
1290
1291 TRACE_EVENT(api_sta_block_awake,
1292         TP_PROTO(struct ieee80211_local *local,
1293                  struct ieee80211_sta *sta, bool block),
1294
1295         TP_ARGS(local, sta, block),
1296
1297         TP_STRUCT__entry(
1298                 LOCAL_ENTRY
1299                 STA_ENTRY
1300                 __field(bool, block)
1301         ),
1302
1303         TP_fast_assign(
1304                 LOCAL_ASSIGN;
1305                 STA_ASSIGN;
1306                 __entry->block = block;
1307         ),
1308
1309         TP_printk(
1310                 LOCAL_PR_FMT STA_PR_FMT " block:%d",
1311                 LOCAL_PR_ARG, STA_PR_FMT, __entry->block
1312         )
1313 );
1314
1315 TRACE_EVENT(api_chswitch_done,
1316         TP_PROTO(struct ieee80211_sub_if_data *sdata, bool success),
1317
1318         TP_ARGS(sdata, success),
1319
1320         TP_STRUCT__entry(
1321                 VIF_ENTRY
1322                 __field(bool, success)
1323         ),
1324
1325         TP_fast_assign(
1326                 VIF_ASSIGN;
1327                 __entry->success = success;
1328         ),
1329
1330         TP_printk(
1331                 VIF_PR_FMT " success=%d",
1332                 VIF_PR_ARG, __entry->success
1333         )
1334 );
1335
1336 DEFINE_EVENT(local_only_evt, api_ready_on_channel,
1337         TP_PROTO(struct ieee80211_local *local),
1338         TP_ARGS(local)
1339 );
1340
1341 DEFINE_EVENT(local_only_evt, api_remain_on_channel_expired,
1342         TP_PROTO(struct ieee80211_local *local),
1343         TP_ARGS(local)
1344 );
1345
1346 TRACE_EVENT(api_gtk_rekey_notify,
1347         TP_PROTO(struct ieee80211_sub_if_data *sdata,
1348                  const u8 *bssid, const u8 *replay_ctr),
1349
1350         TP_ARGS(sdata, bssid, replay_ctr),
1351
1352         TP_STRUCT__entry(
1353                 VIF_ENTRY
1354                 __array(u8, bssid, ETH_ALEN)
1355                 __array(u8, replay_ctr, NL80211_REPLAY_CTR_LEN)
1356         ),
1357
1358         TP_fast_assign(
1359                 VIF_ASSIGN;
1360                 memcpy(__entry->bssid, bssid, ETH_ALEN);
1361                 memcpy(__entry->replay_ctr, replay_ctr, NL80211_REPLAY_CTR_LEN);
1362         ),
1363
1364         TP_printk(VIF_PR_FMT, VIF_PR_ARG)
1365 );
1366
1367 TRACE_EVENT(api_enable_rssi_reports,
1368         TP_PROTO(struct ieee80211_sub_if_data *sdata,
1369                  int rssi_min_thold, int rssi_max_thold),
1370
1371         TP_ARGS(sdata, rssi_min_thold, rssi_max_thold),
1372
1373         TP_STRUCT__entry(
1374                 VIF_ENTRY
1375                 __field(int, rssi_min_thold)
1376                 __field(int, rssi_max_thold)
1377         ),
1378
1379         TP_fast_assign(
1380                 VIF_ASSIGN;
1381                 __entry->rssi_min_thold = rssi_min_thold;
1382                 __entry->rssi_max_thold = rssi_max_thold;
1383         ),
1384
1385         TP_printk(
1386                 VIF_PR_FMT " rssi_min_thold =%d, rssi_max_thold = %d",
1387                 VIF_PR_ARG, __entry->rssi_min_thold, __entry->rssi_max_thold
1388         )
1389 );
1390
1391 /*
1392  * Tracing for internal functions
1393  * (which may also be called in response to driver calls)
1394  */
1395
1396 TRACE_EVENT(wake_queue,
1397         TP_PROTO(struct ieee80211_local *local, u16 queue,
1398                  enum queue_stop_reason reason),
1399
1400         TP_ARGS(local, queue, reason),
1401
1402         TP_STRUCT__entry(
1403                 LOCAL_ENTRY
1404                 __field(u16, queue)
1405                 __field(u32, reason)
1406         ),
1407
1408         TP_fast_assign(
1409                 LOCAL_ASSIGN;
1410                 __entry->queue = queue;
1411                 __entry->reason = reason;
1412         ),
1413
1414         TP_printk(
1415                 LOCAL_PR_FMT " queue:%d, reason:%d",
1416                 LOCAL_PR_ARG, __entry->queue, __entry->reason
1417         )
1418 );
1419
1420 TRACE_EVENT(stop_queue,
1421         TP_PROTO(struct ieee80211_local *local, u16 queue,
1422                  enum queue_stop_reason reason),
1423
1424         TP_ARGS(local, queue, reason),
1425
1426         TP_STRUCT__entry(
1427                 LOCAL_ENTRY
1428                 __field(u16, queue)
1429                 __field(u32, reason)
1430         ),
1431
1432         TP_fast_assign(
1433                 LOCAL_ASSIGN;
1434                 __entry->queue = queue;
1435                 __entry->reason = reason;
1436         ),
1437
1438         TP_printk(
1439                 LOCAL_PR_FMT " queue:%d, reason:%d",
1440                 LOCAL_PR_ARG, __entry->queue, __entry->reason
1441         )
1442 );
1443 #endif /* !__MAC80211_DRIVER_TRACE || TRACE_HEADER_MULTI_READ */
1444
1445 #undef TRACE_INCLUDE_PATH
1446 #define TRACE_INCLUDE_PATH .
1447 #undef TRACE_INCLUDE_FILE
1448 #define TRACE_INCLUDE_FILE driver-trace
1449 #include <trace/define_trace.h>