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