compat-wireless-2010-03-10
[pandora-wifi.git] / net / mac80211 / driver-trace.h
1 #if !defined(__MAC80211_DRIVER_TRACE) || defined(TRACE_HEADER_MULTI_READ)
2 #define __MAC80211_DRIVER_TRACE
3
4 #if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,27))
5 #include <linux/tracepoint.h>
6 #endif /* (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,27)) */
7 #include <net/mac80211.h>
8 #include "ieee80211_i.h"
9
10 #if !defined(CONFIG_MAC80211_DRIVER_API_TRACER) || defined(__CHECKER__)
11 #undef TRACE_EVENT
12 #define TRACE_EVENT(name, proto, ...) \
13 static inline void trace_ ## name(proto) {}
14 #endif
15
16 #undef TRACE_SYSTEM
17 #define TRACE_SYSTEM mac80211
18
19 #define MAXNAME         32
20 #define LOCAL_ENTRY     __array(char, wiphy_name, 32)
21 #define LOCAL_ASSIGN    strlcpy(__entry->wiphy_name, wiphy_name(local->hw.wiphy), MAXNAME)
22 #define LOCAL_PR_FMT    "%s"
23 #define LOCAL_PR_ARG    __entry->wiphy_name
24
25 #define STA_ENTRY       __array(char, sta_addr, ETH_ALEN)
26 #define STA_ASSIGN      (sta ? memcpy(__entry->sta_addr, sta->addr, ETH_ALEN) : memset(__entry->sta_addr, 0, ETH_ALEN))
27 #define STA_PR_FMT      " sta:%pM"
28 #define STA_PR_ARG      __entry->sta_addr
29
30 #define VIF_ENTRY       __field(enum nl80211_iftype, vif_type) __field(void *, sdata) \
31                         __string(vif_name, sdata->dev ? sdata->dev->name : "<nodev>")
32 #define VIF_ASSIGN      __entry->vif_type = sdata->vif.type; __entry->sdata = sdata; \
33                         __assign_str(vif_name, sdata->dev ? sdata->dev->name : "<nodev>")
34 #define VIF_PR_FMT      " vif:%s(%d)"
35 #define VIF_PR_ARG      __get_str(vif_name), __entry->vif_type
36
37 TRACE_EVENT(drv_start,
38         TP_PROTO(struct ieee80211_local *local, int ret),
39
40         TP_ARGS(local, ret),
41
42         TP_STRUCT__entry(
43                 LOCAL_ENTRY
44                 __field(int, ret)
45         ),
46
47         TP_fast_assign(
48                 LOCAL_ASSIGN;
49                 __entry->ret = ret;
50         ),
51
52         TP_printk(
53                 LOCAL_PR_FMT, LOCAL_PR_ARG
54         )
55 );
56
57 TRACE_EVENT(drv_stop,
58         TP_PROTO(struct ieee80211_local *local),
59
60         TP_ARGS(local),
61
62         TP_STRUCT__entry(
63                 LOCAL_ENTRY
64         ),
65
66         TP_fast_assign(
67                 LOCAL_ASSIGN;
68         ),
69
70         TP_printk(
71                 LOCAL_PR_FMT, LOCAL_PR_ARG
72         )
73 );
74
75 TRACE_EVENT(drv_add_interface,
76         TP_PROTO(struct ieee80211_local *local,
77                  struct ieee80211_sub_if_data *sdata,
78                  int ret),
79
80         TP_ARGS(local, sdata, ret),
81
82         TP_STRUCT__entry(
83                 LOCAL_ENTRY
84                 VIF_ENTRY
85                 __array(char, addr, 6)
86                 __field(int, ret)
87         ),
88
89         TP_fast_assign(
90                 LOCAL_ASSIGN;
91                 VIF_ASSIGN;
92                 memcpy(__entry->addr, sdata->vif.addr, 6);
93                 __entry->ret = ret;
94         ),
95
96         TP_printk(
97                 LOCAL_PR_FMT  VIF_PR_FMT " addr:%pM ret:%d",
98                 LOCAL_PR_ARG, VIF_PR_ARG, __entry->addr, __entry->ret
99         )
100 );
101
102 TRACE_EVENT(drv_remove_interface,
103         TP_PROTO(struct ieee80211_local *local, struct ieee80211_sub_if_data *sdata),
104
105         TP_ARGS(local, sdata),
106
107         TP_STRUCT__entry(
108                 LOCAL_ENTRY
109                 VIF_ENTRY
110                 __array(char, addr, 6)
111         ),
112
113         TP_fast_assign(
114                 LOCAL_ASSIGN;
115                 VIF_ASSIGN;
116                 memcpy(__entry->addr, sdata->vif.addr, 6);
117         ),
118
119         TP_printk(
120                 LOCAL_PR_FMT  VIF_PR_FMT " addr:%pM",
121                 LOCAL_PR_ARG, VIF_PR_ARG, __entry->addr
122         )
123 );
124
125 TRACE_EVENT(drv_config,
126         TP_PROTO(struct ieee80211_local *local,
127                  u32 changed,
128                  int ret),
129
130         TP_ARGS(local, changed, ret),
131
132         TP_STRUCT__entry(
133                 LOCAL_ENTRY
134                 __field(u32, changed)
135                 __field(int, ret)
136                 __field(u32, flags)
137                 __field(int, power_level)
138                 __field(int, dynamic_ps_timeout)
139                 __field(int, max_sleep_period)
140                 __field(u16, listen_interval)
141                 __field(u8, long_frame_max_tx_count)
142                 __field(u8, short_frame_max_tx_count)
143                 __field(int, center_freq)
144                 __field(int, channel_type)
145                 __field(int, smps)
146         ),
147
148         TP_fast_assign(
149                 LOCAL_ASSIGN;
150                 __entry->changed = changed;
151                 __entry->ret = ret;
152                 __entry->flags = local->hw.conf.flags;
153                 __entry->power_level = local->hw.conf.power_level;
154                 __entry->dynamic_ps_timeout = local->hw.conf.dynamic_ps_timeout;
155                 __entry->max_sleep_period = local->hw.conf.max_sleep_period;
156                 __entry->listen_interval = local->hw.conf.listen_interval;
157                 __entry->long_frame_max_tx_count = local->hw.conf.long_frame_max_tx_count;
158                 __entry->short_frame_max_tx_count = local->hw.conf.short_frame_max_tx_count;
159                 __entry->center_freq = local->hw.conf.channel->center_freq;
160                 __entry->channel_type = local->hw.conf.channel_type;
161                 __entry->smps = local->hw.conf.smps_mode;
162         ),
163
164         TP_printk(
165                 LOCAL_PR_FMT " ch:%#x freq:%d ret:%d",
166                 LOCAL_PR_ARG, __entry->changed, __entry->center_freq, __entry->ret
167         )
168 );
169
170 TRACE_EVENT(drv_bss_info_changed,
171         TP_PROTO(struct ieee80211_local *local,
172                  struct ieee80211_sub_if_data *sdata,
173                  struct ieee80211_bss_conf *info,
174                  u32 changed),
175
176         TP_ARGS(local, sdata, info, changed),
177
178         TP_STRUCT__entry(
179                 LOCAL_ENTRY
180                 VIF_ENTRY
181                 __field(bool, assoc)
182                 __field(u16, aid)
183                 __field(bool, cts)
184                 __field(bool, shortpre)
185                 __field(bool, shortslot)
186                 __field(u8, dtimper)
187                 __field(u16, bcnint)
188                 __field(u16, assoc_cap)
189                 __field(u64, timestamp)
190                 __field(u32, basic_rates)
191                 __field(u32, changed)
192                 __field(bool, enable_beacon)
193                 __field(u16, ht_operation_mode)
194         ),
195
196         TP_fast_assign(
197                 LOCAL_ASSIGN;
198                 VIF_ASSIGN;
199                 __entry->changed = changed;
200                 __entry->aid = info->aid;
201                 __entry->assoc = info->assoc;
202                 __entry->shortpre = info->use_short_preamble;
203                 __entry->cts = info->use_cts_prot;
204                 __entry->shortslot = info->use_short_slot;
205                 __entry->dtimper = info->dtim_period;
206                 __entry->bcnint = info->beacon_int;
207                 __entry->assoc_cap = info->assoc_capability;
208                 __entry->timestamp = info->timestamp;
209                 __entry->basic_rates = info->basic_rates;
210                 __entry->enable_beacon = info->enable_beacon;
211                 __entry->ht_operation_mode = info->ht_operation_mode;
212         ),
213
214         TP_printk(
215                 LOCAL_PR_FMT  VIF_PR_FMT " changed:%#x",
216                 LOCAL_PR_ARG, VIF_PR_ARG, __entry->changed
217         )
218 );
219
220 TRACE_EVENT(drv_prepare_multicast,
221         TP_PROTO(struct ieee80211_local *local, int mc_count, u64 ret),
222
223         TP_ARGS(local, mc_count, ret),
224
225         TP_STRUCT__entry(
226                 LOCAL_ENTRY
227                 __field(int, mc_count)
228                 __field(u64, ret)
229         ),
230
231         TP_fast_assign(
232                 LOCAL_ASSIGN;
233                 __entry->mc_count = mc_count;
234                 __entry->ret = ret;
235         ),
236
237         TP_printk(
238                 LOCAL_PR_FMT " prepare mc (%d): %llx",
239                 LOCAL_PR_ARG, __entry->mc_count,
240                 (unsigned long long) __entry->ret
241         )
242 );
243
244 TRACE_EVENT(drv_configure_filter,
245         TP_PROTO(struct ieee80211_local *local,
246                  unsigned int changed_flags,
247                  unsigned int *total_flags,
248                  u64 multicast),
249
250         TP_ARGS(local, changed_flags, total_flags, multicast),
251
252         TP_STRUCT__entry(
253                 LOCAL_ENTRY
254                 __field(unsigned int, changed)
255                 __field(unsigned int, total)
256                 __field(u64, multicast)
257         ),
258
259         TP_fast_assign(
260                 LOCAL_ASSIGN;
261                 __entry->changed = changed_flags;
262                 __entry->total = *total_flags;
263                 __entry->multicast = multicast;
264         ),
265
266         TP_printk(
267                 LOCAL_PR_FMT " changed:%#x total:%#x",
268                 LOCAL_PR_ARG, __entry->changed, __entry->total
269         )
270 );
271
272 TRACE_EVENT(drv_set_tim,
273         TP_PROTO(struct ieee80211_local *local,
274                  struct ieee80211_sta *sta, bool set, int ret),
275
276         TP_ARGS(local, sta, set, ret),
277
278         TP_STRUCT__entry(
279                 LOCAL_ENTRY
280                 STA_ENTRY
281                 __field(bool, set)
282                 __field(int, ret)
283         ),
284
285         TP_fast_assign(
286                 LOCAL_ASSIGN;
287                 STA_ASSIGN;
288                 __entry->set = set;
289                 __entry->ret = ret;
290         ),
291
292         TP_printk(
293                 LOCAL_PR_FMT STA_PR_FMT " set:%d ret:%d",
294                 LOCAL_PR_ARG, STA_PR_FMT, __entry->set, __entry->ret
295         )
296 );
297
298 TRACE_EVENT(drv_set_key,
299         TP_PROTO(struct ieee80211_local *local,
300                  enum set_key_cmd cmd, struct ieee80211_sub_if_data *sdata,
301                  struct ieee80211_sta *sta,
302                  struct ieee80211_key_conf *key, int ret),
303
304         TP_ARGS(local, cmd, sdata, sta, key, ret),
305
306         TP_STRUCT__entry(
307                 LOCAL_ENTRY
308                 VIF_ENTRY
309                 STA_ENTRY
310                 __field(enum ieee80211_key_alg, alg)
311                 __field(u8, hw_key_idx)
312                 __field(u8, flags)
313                 __field(s8, keyidx)
314                 __field(int, ret)
315         ),
316
317         TP_fast_assign(
318                 LOCAL_ASSIGN;
319                 VIF_ASSIGN;
320                 STA_ASSIGN;
321                 __entry->alg = key->alg;
322                 __entry->flags = key->flags;
323                 __entry->keyidx = key->keyidx;
324                 __entry->hw_key_idx = key->hw_key_idx;
325                 __entry->ret = ret;
326         ),
327
328         TP_printk(
329                 LOCAL_PR_FMT  VIF_PR_FMT  STA_PR_FMT " ret:%d",
330                 LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG, __entry->ret
331         )
332 );
333
334 TRACE_EVENT(drv_update_tkip_key,
335         TP_PROTO(struct ieee80211_local *local,
336                  struct ieee80211_sub_if_data *sdata,
337                  struct ieee80211_key_conf *conf,
338                  struct ieee80211_sta *sta, u32 iv32),
339
340         TP_ARGS(local, sdata, conf, sta, iv32),
341
342         TP_STRUCT__entry(
343                 LOCAL_ENTRY
344                 VIF_ENTRY
345                 STA_ENTRY
346                 __field(u32, iv32)
347         ),
348
349         TP_fast_assign(
350                 LOCAL_ASSIGN;
351                 VIF_ASSIGN;
352                 STA_ASSIGN;
353                 __entry->iv32 = iv32;
354         ),
355
356         TP_printk(
357                 LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT " iv32:%#x",
358                 LOCAL_PR_ARG,VIF_PR_ARG,STA_PR_ARG, __entry->iv32
359         )
360 );
361
362 TRACE_EVENT(drv_hw_scan,
363         TP_PROTO(struct ieee80211_local *local,
364                  struct cfg80211_scan_request *req, int ret),
365
366         TP_ARGS(local, req, ret),
367
368         TP_STRUCT__entry(
369                 LOCAL_ENTRY
370                 __field(int, ret)
371         ),
372
373         TP_fast_assign(
374                 LOCAL_ASSIGN;
375                 __entry->ret = ret;
376         ),
377
378         TP_printk(
379                 LOCAL_PR_FMT " ret:%d",
380                 LOCAL_PR_ARG, __entry->ret
381         )
382 );
383
384 TRACE_EVENT(drv_sw_scan_start,
385         TP_PROTO(struct ieee80211_local *local),
386
387         TP_ARGS(local),
388
389         TP_STRUCT__entry(
390                 LOCAL_ENTRY
391         ),
392
393         TP_fast_assign(
394                 LOCAL_ASSIGN;
395         ),
396
397         TP_printk(
398                 LOCAL_PR_FMT, LOCAL_PR_ARG
399         )
400 );
401
402 TRACE_EVENT(drv_sw_scan_complete,
403         TP_PROTO(struct ieee80211_local *local),
404
405         TP_ARGS(local),
406
407         TP_STRUCT__entry(
408                 LOCAL_ENTRY
409         ),
410
411         TP_fast_assign(
412                 LOCAL_ASSIGN;
413         ),
414
415         TP_printk(
416                 LOCAL_PR_FMT, LOCAL_PR_ARG
417         )
418 );
419
420 TRACE_EVENT(drv_get_stats,
421         TP_PROTO(struct ieee80211_local *local,
422                  struct ieee80211_low_level_stats *stats,
423                  int ret),
424
425         TP_ARGS(local, stats, ret),
426
427         TP_STRUCT__entry(
428                 LOCAL_ENTRY
429                 __field(int, ret)
430                 __field(unsigned int, ackfail)
431                 __field(unsigned int, rtsfail)
432                 __field(unsigned int, fcserr)
433                 __field(unsigned int, rtssucc)
434         ),
435
436         TP_fast_assign(
437                 LOCAL_ASSIGN;
438                 __entry->ret = ret;
439                 __entry->ackfail = stats->dot11ACKFailureCount;
440                 __entry->rtsfail = stats->dot11RTSFailureCount;
441                 __entry->fcserr = stats->dot11FCSErrorCount;
442                 __entry->rtssucc = stats->dot11RTSSuccessCount;
443         ),
444
445         TP_printk(
446                 LOCAL_PR_FMT " ret:%d",
447                 LOCAL_PR_ARG, __entry->ret
448         )
449 );
450
451 TRACE_EVENT(drv_get_tkip_seq,
452         TP_PROTO(struct ieee80211_local *local,
453                  u8 hw_key_idx, u32 *iv32, u16 *iv16),
454
455         TP_ARGS(local, hw_key_idx, iv32, iv16),
456
457         TP_STRUCT__entry(
458                 LOCAL_ENTRY
459                 __field(u8, hw_key_idx)
460                 __field(u32, iv32)
461                 __field(u16, iv16)
462         ),
463
464         TP_fast_assign(
465                 LOCAL_ASSIGN;
466                 __entry->hw_key_idx = hw_key_idx;
467                 __entry->iv32 = *iv32;
468                 __entry->iv16 = *iv16;
469         ),
470
471         TP_printk(
472                 LOCAL_PR_FMT, LOCAL_PR_ARG
473         )
474 );
475
476 TRACE_EVENT(drv_set_rts_threshold,
477         TP_PROTO(struct ieee80211_local *local, u32 value, int ret),
478
479         TP_ARGS(local, value, ret),
480
481         TP_STRUCT__entry(
482                 LOCAL_ENTRY
483                 __field(u32, value)
484                 __field(int, ret)
485         ),
486
487         TP_fast_assign(
488                 LOCAL_ASSIGN;
489                 __entry->ret = ret;
490                 __entry->value = value;
491         ),
492
493         TP_printk(
494                 LOCAL_PR_FMT " value:%d ret:%d",
495                 LOCAL_PR_ARG, __entry->value, __entry->ret
496         )
497 );
498
499 TRACE_EVENT(drv_set_coverage_class,
500         TP_PROTO(struct ieee80211_local *local, u8 value, int ret),
501
502         TP_ARGS(local, value, ret),
503
504         TP_STRUCT__entry(
505                 LOCAL_ENTRY
506                 __field(u8, value)
507                 __field(int, ret)
508         ),
509
510         TP_fast_assign(
511                 LOCAL_ASSIGN;
512                 __entry->ret = ret;
513                 __entry->value = value;
514         ),
515
516         TP_printk(
517                 LOCAL_PR_FMT " value:%d ret:%d",
518                 LOCAL_PR_ARG, __entry->value, __entry->ret
519         )
520 );
521
522 TRACE_EVENT(drv_sta_notify,
523         TP_PROTO(struct ieee80211_local *local,
524                  struct ieee80211_sub_if_data *sdata,
525                  enum sta_notify_cmd cmd,
526                  struct ieee80211_sta *sta),
527
528         TP_ARGS(local, sdata, cmd, sta),
529
530         TP_STRUCT__entry(
531                 LOCAL_ENTRY
532                 VIF_ENTRY
533                 STA_ENTRY
534                 __field(u32, cmd)
535         ),
536
537         TP_fast_assign(
538                 LOCAL_ASSIGN;
539                 VIF_ASSIGN;
540                 STA_ASSIGN;
541                 __entry->cmd = cmd;
542         ),
543
544         TP_printk(
545                 LOCAL_PR_FMT  VIF_PR_FMT  STA_PR_FMT " cmd:%d",
546                 LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG, __entry->cmd
547         )
548 );
549
550 TRACE_EVENT(drv_sta_add,
551         TP_PROTO(struct ieee80211_local *local,
552                  struct ieee80211_sub_if_data *sdata,
553                  struct ieee80211_sta *sta, int ret),
554
555         TP_ARGS(local, sdata, sta, ret),
556
557         TP_STRUCT__entry(
558                 LOCAL_ENTRY
559                 VIF_ENTRY
560                 STA_ENTRY
561                 __field(int, ret)
562         ),
563
564         TP_fast_assign(
565                 LOCAL_ASSIGN;
566                 VIF_ASSIGN;
567                 STA_ASSIGN;
568                 __entry->ret = ret;
569         ),
570
571         TP_printk(
572                 LOCAL_PR_FMT  VIF_PR_FMT  STA_PR_FMT " ret:%d",
573                 LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG, __entry->ret
574         )
575 );
576
577 TRACE_EVENT(drv_sta_remove,
578         TP_PROTO(struct ieee80211_local *local,
579                  struct ieee80211_sub_if_data *sdata,
580                  struct ieee80211_sta *sta),
581
582         TP_ARGS(local, sdata, sta),
583
584         TP_STRUCT__entry(
585                 LOCAL_ENTRY
586                 VIF_ENTRY
587                 STA_ENTRY
588         ),
589
590         TP_fast_assign(
591                 LOCAL_ASSIGN;
592                 VIF_ASSIGN;
593                 STA_ASSIGN;
594         ),
595
596         TP_printk(
597                 LOCAL_PR_FMT  VIF_PR_FMT  STA_PR_FMT,
598                 LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG
599         )
600 );
601
602 TRACE_EVENT(drv_conf_tx,
603         TP_PROTO(struct ieee80211_local *local, u16 queue,
604                  const struct ieee80211_tx_queue_params *params,
605                  int ret),
606
607         TP_ARGS(local, queue, params, ret),
608
609         TP_STRUCT__entry(
610                 LOCAL_ENTRY
611                 __field(u16, queue)
612                 __field(u16, txop)
613                 __field(u16, cw_min)
614                 __field(u16, cw_max)
615                 __field(u8, aifs)
616                 __field(int, ret)
617         ),
618
619         TP_fast_assign(
620                 LOCAL_ASSIGN;
621                 __entry->queue = queue;
622                 __entry->ret = ret;
623                 __entry->txop = params->txop;
624                 __entry->cw_max = params->cw_max;
625                 __entry->cw_min = params->cw_min;
626                 __entry->aifs = params->aifs;
627         ),
628
629         TP_printk(
630                 LOCAL_PR_FMT " queue:%d ret:%d",
631                 LOCAL_PR_ARG, __entry->queue, __entry->ret
632         )
633 );
634
635 TRACE_EVENT(drv_get_tsf,
636         TP_PROTO(struct ieee80211_local *local, u64 ret),
637
638         TP_ARGS(local, ret),
639
640         TP_STRUCT__entry(
641                 LOCAL_ENTRY
642                 __field(u64, ret)
643         ),
644
645         TP_fast_assign(
646                 LOCAL_ASSIGN;
647                 __entry->ret = ret;
648         ),
649
650         TP_printk(
651                 LOCAL_PR_FMT " ret:%llu",
652                 LOCAL_PR_ARG, (unsigned long long)__entry->ret
653         )
654 );
655
656 TRACE_EVENT(drv_set_tsf,
657         TP_PROTO(struct ieee80211_local *local, u64 tsf),
658
659         TP_ARGS(local, tsf),
660
661         TP_STRUCT__entry(
662                 LOCAL_ENTRY
663                 __field(u64, tsf)
664         ),
665
666         TP_fast_assign(
667                 LOCAL_ASSIGN;
668                 __entry->tsf = tsf;
669         ),
670
671         TP_printk(
672                 LOCAL_PR_FMT " tsf:%llu",
673                 LOCAL_PR_ARG, (unsigned long long)__entry->tsf
674         )
675 );
676
677 TRACE_EVENT(drv_reset_tsf,
678         TP_PROTO(struct ieee80211_local *local),
679
680         TP_ARGS(local),
681
682         TP_STRUCT__entry(
683                 LOCAL_ENTRY
684         ),
685
686         TP_fast_assign(
687                 LOCAL_ASSIGN;
688         ),
689
690         TP_printk(
691                 LOCAL_PR_FMT, LOCAL_PR_ARG
692         )
693 );
694
695 TRACE_EVENT(drv_tx_last_beacon,
696         TP_PROTO(struct ieee80211_local *local, int ret),
697
698         TP_ARGS(local, ret),
699
700         TP_STRUCT__entry(
701                 LOCAL_ENTRY
702                 __field(int, ret)
703         ),
704
705         TP_fast_assign(
706                 LOCAL_ASSIGN;
707                 __entry->ret = ret;
708         ),
709
710         TP_printk(
711                 LOCAL_PR_FMT " ret:%d",
712                 LOCAL_PR_ARG, __entry->ret
713         )
714 );
715
716 TRACE_EVENT(drv_ampdu_action,
717         TP_PROTO(struct ieee80211_local *local,
718                  struct ieee80211_sub_if_data *sdata,
719                  enum ieee80211_ampdu_mlme_action action,
720                  struct ieee80211_sta *sta, u16 tid,
721                  u16 *ssn, int ret),
722
723         TP_ARGS(local, sdata, action, sta, tid, ssn, ret),
724
725         TP_STRUCT__entry(
726                 LOCAL_ENTRY
727                 STA_ENTRY
728                 __field(u32, action)
729                 __field(u16, tid)
730                 __field(u16, ssn)
731                 __field(int, ret)
732                 VIF_ENTRY
733         ),
734
735         TP_fast_assign(
736                 LOCAL_ASSIGN;
737                 VIF_ASSIGN;
738                 STA_ASSIGN;
739                 __entry->ret = ret;
740                 __entry->action = action;
741                 __entry->tid = tid;
742                 __entry->ssn = ssn ? *ssn : 0;
743         ),
744
745         TP_printk(
746                 LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT " action:%d tid:%d ret:%d",
747                 LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG, __entry->action, __entry->tid, __entry->ret
748         )
749 );
750
751 TRACE_EVENT(drv_flush,
752         TP_PROTO(struct ieee80211_local *local, bool drop),
753
754         TP_ARGS(local, drop),
755
756         TP_STRUCT__entry(
757                 LOCAL_ENTRY
758                 __field(bool, drop)
759         ),
760
761         TP_fast_assign(
762                 LOCAL_ASSIGN;
763                 __entry->drop = drop;
764         ),
765
766         TP_printk(
767                 LOCAL_PR_FMT " drop:%d",
768                 LOCAL_PR_ARG, __entry->drop
769         )
770 );
771 #endif /* !__MAC80211_DRIVER_TRACE || TRACE_HEADER_MULTI_READ */
772
773 #undef TRACE_INCLUDE_PATH
774 #define TRACE_INCLUDE_PATH .
775 #undef TRACE_INCLUDE_FILE
776 #define TRACE_INCLUDE_FILE driver-trace
777 #if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,30))
778 #include <trace/define_trace.h>
779 #endif /* (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,30)) */