00001 #if !defined(__MAC80211_DRIVER_TRACE) || defined(TRACE_HEADER_MULTI_READ)
00002 #define __MAC80211_DRIVER_TRACE
00003
00004 #include <linux/tracepoint.h>
00005 #include <net/mac80211.h>
00006 #include "ieee80211_i.h"
00007
00008 #undef TRACE_SYSTEM
00009 #define TRACE_SYSTEM mac80211
00010
00011 #define MAXNAME 32
00012 #define LOCAL_ENTRY __array(char, wiphy_name, 32)
00013 #define LOCAL_ASSIGN strlcpy(__entry->wiphy_name, wiphy_name(local->hw.wiphy), MAXNAME)
00014 #define LOCAL_PR_FMT "%s"
00015 #define LOCAL_PR_ARG __entry->wiphy_name
00016
00017 #define STA_ENTRY __array(char, sta_addr, ETH_ALEN)
00018 #define STA_ASSIGN (sta ? memcpy(__entry->sta_addr, sta->addr, ETH_ALEN) : memset(__entry->sta_addr, 0, ETH_ALEN))
00019 #define STA_PR_FMT " sta:%pM"
00020 #define STA_PR_ARG __entry->sta_addr
00021
00022 #define VIF_ENTRY __field(enum nl80211_iftype, vif_type) __field(void *, sdata) \
00023 __field(bool, p2p) \
00024 __string(vif_name, sdata->dev ? sdata->dev->name : "<nodev>")
00025 #define VIF_ASSIGN __entry->vif_type = sdata->vif.type; __entry->sdata = sdata; \
00026 __entry->p2p = sdata->vif.p2p; \
00027 __assign_str(vif_name, sdata->dev ? sdata->dev->name : "<nodev>")
00028 #define VIF_PR_FMT " vif:%s(%d%s)"
00029 #define VIF_PR_ARG __get_str(vif_name), __entry->vif_type, __entry->p2p ? "/p2p" : ""
00030
00031
00032
00033
00034
00035 DECLARE_EVENT_CLASS(local_only_evt,
00036 TP_PROTO(struct ieee80211_local *local),
00037 TP_ARGS(local),
00038 TP_STRUCT__entry(
00039 LOCAL_ENTRY
00040 ),
00041 TP_fast_assign(
00042 LOCAL_ASSIGN;
00043 ),
00044 TP_printk(LOCAL_PR_FMT, LOCAL_PR_ARG)
00045 );
00046
00047 DECLARE_EVENT_CLASS(local_sdata_addr_evt,
00048 TP_PROTO(struct ieee80211_local *local,
00049 struct ieee80211_sub_if_data *sdata),
00050 TP_ARGS(local, sdata),
00051
00052 TP_STRUCT__entry(
00053 LOCAL_ENTRY
00054 VIF_ENTRY
00055 __array(char, addr, 6)
00056 ),
00057
00058 TP_fast_assign(
00059 LOCAL_ASSIGN;
00060 VIF_ASSIGN;
00061 memcpy(__entry->addr, sdata->vif.addr, 6);
00062 ),
00063
00064 TP_printk(
00065 LOCAL_PR_FMT VIF_PR_FMT " addr:%pM",
00066 LOCAL_PR_ARG, VIF_PR_ARG, __entry->addr
00067 )
00068 );
00069
00070 DECLARE_EVENT_CLASS(local_u32_evt,
00071 TP_PROTO(struct ieee80211_local *local, u32 value),
00072 TP_ARGS(local, value),
00073
00074 TP_STRUCT__entry(
00075 LOCAL_ENTRY
00076 __field(u32, value)
00077 ),
00078
00079 TP_fast_assign(
00080 LOCAL_ASSIGN;
00081 __entry->value = value;
00082 ),
00083
00084 TP_printk(
00085 LOCAL_PR_FMT " value:%d",
00086 LOCAL_PR_ARG, __entry->value
00087 )
00088 );
00089
00090 DECLARE_EVENT_CLASS(local_sdata_evt,
00091 TP_PROTO(struct ieee80211_local *local,
00092 struct ieee80211_sub_if_data *sdata),
00093 TP_ARGS(local, sdata),
00094
00095 TP_STRUCT__entry(
00096 LOCAL_ENTRY
00097 VIF_ENTRY
00098 ),
00099
00100 TP_fast_assign(
00101 LOCAL_ASSIGN;
00102 VIF_ASSIGN;
00103 ),
00104
00105 TP_printk(
00106 LOCAL_PR_FMT VIF_PR_FMT,
00107 LOCAL_PR_ARG, VIF_PR_ARG
00108 )
00109 );
00110
00111 DEFINE_EVENT(local_only_evt, drv_return_void,
00112 TP_PROTO(struct ieee80211_local *local),
00113 TP_ARGS(local)
00114 );
00115
00116 TRACE_EVENT(drv_return_int,
00117 TP_PROTO(struct ieee80211_local *local, int ret),
00118 TP_ARGS(local, ret),
00119 TP_STRUCT__entry(
00120 LOCAL_ENTRY
00121 __field(int, ret)
00122 ),
00123 TP_fast_assign(
00124 LOCAL_ASSIGN;
00125 __entry->ret = ret;
00126 ),
00127 TP_printk(LOCAL_PR_FMT " - %d", LOCAL_PR_ARG, __entry->ret)
00128 );
00129
00130 TRACE_EVENT(drv_return_bool,
00131 TP_PROTO(struct ieee80211_local *local, bool ret),
00132 TP_ARGS(local, ret),
00133 TP_STRUCT__entry(
00134 LOCAL_ENTRY
00135 __field(bool, ret)
00136 ),
00137 TP_fast_assign(
00138 LOCAL_ASSIGN;
00139 __entry->ret = ret;
00140 ),
00141 TP_printk(LOCAL_PR_FMT " - %s", LOCAL_PR_ARG, (__entry->ret) ?
00142 "true" : "false")
00143 );
00144
00145 TRACE_EVENT(drv_return_u64,
00146 TP_PROTO(struct ieee80211_local *local, u64 ret),
00147 TP_ARGS(local, ret),
00148 TP_STRUCT__entry(
00149 LOCAL_ENTRY
00150 __field(u64, ret)
00151 ),
00152 TP_fast_assign(
00153 LOCAL_ASSIGN;
00154 __entry->ret = ret;
00155 ),
00156 TP_printk(LOCAL_PR_FMT " - %llu", LOCAL_PR_ARG, __entry->ret)
00157 );
00158
00159 DEFINE_EVENT(local_only_evt, drv_start,
00160 TP_PROTO(struct ieee80211_local *local),
00161 TP_ARGS(local)
00162 );
00163
00164 DEFINE_EVENT(local_u32_evt, drv_get_et_strings,
00165 TP_PROTO(struct ieee80211_local *local, u32 sset),
00166 TP_ARGS(local, sset)
00167 );
00168
00169 DEFINE_EVENT(local_u32_evt, drv_get_et_sset_count,
00170 TP_PROTO(struct ieee80211_local *local, u32 sset),
00171 TP_ARGS(local, sset)
00172 );
00173
00174 DEFINE_EVENT(local_only_evt, drv_get_et_stats,
00175 TP_PROTO(struct ieee80211_local *local),
00176 TP_ARGS(local)
00177 );
00178
00179 DEFINE_EVENT(local_only_evt, drv_suspend,
00180 TP_PROTO(struct ieee80211_local *local),
00181 TP_ARGS(local)
00182 );
00183
00184 DEFINE_EVENT(local_only_evt, drv_resume,
00185 TP_PROTO(struct ieee80211_local *local),
00186 TP_ARGS(local)
00187 );
00188
00189 TRACE_EVENT(drv_set_wakeup,
00190 TP_PROTO(struct ieee80211_local *local, bool enabled),
00191 TP_ARGS(local, enabled),
00192 TP_STRUCT__entry(
00193 LOCAL_ENTRY
00194 __field(bool, enabled)
00195 ),
00196 TP_fast_assign(
00197 LOCAL_ASSIGN;
00198 __entry->enabled = enabled;
00199 ),
00200 TP_printk(LOCAL_PR_FMT " enabled:%d", LOCAL_PR_ARG, __entry->enabled)
00201 );
00202
00203 DEFINE_EVENT(local_only_evt, drv_stop,
00204 TP_PROTO(struct ieee80211_local *local),
00205 TP_ARGS(local)
00206 );
00207
00208 DEFINE_EVENT(local_sdata_addr_evt, drv_add_interface,
00209 TP_PROTO(struct ieee80211_local *local,
00210 struct ieee80211_sub_if_data *sdata),
00211 TP_ARGS(local, sdata)
00212 );
00213
00214 TRACE_EVENT(drv_change_interface,
00215 TP_PROTO(struct ieee80211_local *local,
00216 struct ieee80211_sub_if_data *sdata,
00217 enum nl80211_iftype type, bool p2p),
00218
00219 TP_ARGS(local, sdata, type, p2p),
00220
00221 TP_STRUCT__entry(
00222 LOCAL_ENTRY
00223 VIF_ENTRY
00224 __field(u32, new_type)
00225 __field(bool, new_p2p)
00226 ),
00227
00228 TP_fast_assign(
00229 LOCAL_ASSIGN;
00230 VIF_ASSIGN;
00231 __entry->new_type = type;
00232 __entry->new_p2p = p2p;
00233 ),
00234
00235 TP_printk(
00236 LOCAL_PR_FMT VIF_PR_FMT " new type:%d%s",
00237 LOCAL_PR_ARG, VIF_PR_ARG, __entry->new_type,
00238 __entry->new_p2p ? "/p2p" : ""
00239 )
00240 );
00241
00242 DEFINE_EVENT(local_sdata_addr_evt, drv_remove_interface,
00243 TP_PROTO(struct ieee80211_local *local,
00244 struct ieee80211_sub_if_data *sdata),
00245 TP_ARGS(local, sdata)
00246 );
00247
00248 TRACE_EVENT(drv_config,
00249 TP_PROTO(struct ieee80211_local *local,
00250 u32 changed),
00251
00252 TP_ARGS(local, changed),
00253
00254 TP_STRUCT__entry(
00255 LOCAL_ENTRY
00256 __field(u32, changed)
00257 __field(u32, flags)
00258 __field(int, power_level)
00259 __field(int, dynamic_ps_timeout)
00260 __field(int, max_sleep_period)
00261 __field(u16, listen_interval)
00262 __field(u8, long_frame_max_tx_count)
00263 __field(u8, short_frame_max_tx_count)
00264 __field(int, center_freq)
00265 __field(int, channel_type)
00266 __field(int, smps)
00267 ),
00268
00269 TP_fast_assign(
00270 LOCAL_ASSIGN;
00271 __entry->changed = changed;
00272 __entry->flags = local->hw.conf.flags;
00273 __entry->power_level = local->hw.conf.power_level;
00274 __entry->dynamic_ps_timeout = local->hw.conf.dynamic_ps_timeout;
00275 __entry->max_sleep_period = local->hw.conf.max_sleep_period;
00276 __entry->listen_interval = local->hw.conf.listen_interval;
00277 __entry->long_frame_max_tx_count = local->hw.conf.long_frame_max_tx_count;
00278 __entry->short_frame_max_tx_count = local->hw.conf.short_frame_max_tx_count;
00279 __entry->center_freq = local->hw.conf.channel->center_freq;
00280 __entry->channel_type = local->hw.conf.channel_type;
00281 __entry->smps = local->hw.conf.smps_mode;
00282 ),
00283
00284 TP_printk(
00285 LOCAL_PR_FMT " ch:%#x freq:%d",
00286 LOCAL_PR_ARG, __entry->changed, __entry->center_freq
00287 )
00288 );
00289
00290 TRACE_EVENT(drv_bss_info_changed,
00291 TP_PROTO(struct ieee80211_local *local,
00292 struct ieee80211_sub_if_data *sdata,
00293 struct ieee80211_bss_conf *info,
00294 u32 changed),
00295
00296 TP_ARGS(local, sdata, info, changed),
00297
00298 TP_STRUCT__entry(
00299 LOCAL_ENTRY
00300 VIF_ENTRY
00301 __field(bool, assoc)
00302 __field(u16, aid)
00303 __field(bool, cts)
00304 __field(bool, shortpre)
00305 __field(bool, shortslot)
00306 __field(u8, dtimper)
00307 __field(u16, bcnint)
00308 __field(u16, assoc_cap)
00309 __field(u64, timestamp)
00310 __field(u32, basic_rates)
00311 __field(u32, changed)
00312 __field(bool, enable_beacon)
00313 __field(u16, ht_operation_mode)
00314 ),
00315
00316 TP_fast_assign(
00317 LOCAL_ASSIGN;
00318 VIF_ASSIGN;
00319 __entry->changed = changed;
00320 __entry->aid = info->aid;
00321 __entry->assoc = info->assoc;
00322 __entry->shortpre = info->use_short_preamble;
00323 __entry->cts = info->use_cts_prot;
00324 __entry->shortslot = info->use_short_slot;
00325 __entry->dtimper = info->dtim_period;
00326 __entry->bcnint = info->beacon_int;
00327 __entry->assoc_cap = info->assoc_capability;
00328 __entry->timestamp = info->last_tsf;
00329 __entry->basic_rates = info->basic_rates;
00330 __entry->enable_beacon = info->enable_beacon;
00331 __entry->ht_operation_mode = info->ht_operation_mode;
00332 ),
00333
00334 TP_printk(
00335 LOCAL_PR_FMT VIF_PR_FMT " changed:%#x",
00336 LOCAL_PR_ARG, VIF_PR_ARG, __entry->changed
00337 )
00338 );
00339
00340 TRACE_EVENT(drv_prepare_multicast,
00341 TP_PROTO(struct ieee80211_local *local, int mc_count),
00342
00343 TP_ARGS(local, mc_count),
00344
00345 TP_STRUCT__entry(
00346 LOCAL_ENTRY
00347 __field(int, mc_count)
00348 ),
00349
00350 TP_fast_assign(
00351 LOCAL_ASSIGN;
00352 __entry->mc_count = mc_count;
00353 ),
00354
00355 TP_printk(
00356 LOCAL_PR_FMT " prepare mc (%d)",
00357 LOCAL_PR_ARG, __entry->mc_count
00358 )
00359 );
00360
00361 TRACE_EVENT(drv_configure_filter,
00362 TP_PROTO(struct ieee80211_local *local,
00363 unsigned int changed_flags,
00364 unsigned int *total_flags,
00365 u64 multicast),
00366
00367 TP_ARGS(local, changed_flags, total_flags, multicast),
00368
00369 TP_STRUCT__entry(
00370 LOCAL_ENTRY
00371 __field(unsigned int, changed)
00372 __field(unsigned int, total)
00373 __field(u64, multicast)
00374 ),
00375
00376 TP_fast_assign(
00377 LOCAL_ASSIGN;
00378 __entry->changed = changed_flags;
00379 __entry->total = *total_flags;
00380 __entry->multicast = multicast;
00381 ),
00382
00383 TP_printk(
00384 LOCAL_PR_FMT " changed:%#x total:%#x",
00385 LOCAL_PR_ARG, __entry->changed, __entry->total
00386 )
00387 );
00388
00389 TRACE_EVENT(drv_set_tim,
00390 TP_PROTO(struct ieee80211_local *local,
00391 struct ieee80211_sta *sta, bool set),
00392
00393 TP_ARGS(local, sta, set),
00394
00395 TP_STRUCT__entry(
00396 LOCAL_ENTRY
00397 STA_ENTRY
00398 __field(bool, set)
00399 ),
00400
00401 TP_fast_assign(
00402 LOCAL_ASSIGN;
00403 STA_ASSIGN;
00404 __entry->set = set;
00405 ),
00406
00407 TP_printk(
00408 LOCAL_PR_FMT STA_PR_FMT " set:%d",
00409 LOCAL_PR_ARG, STA_PR_FMT, __entry->set
00410 )
00411 );
00412
00413 TRACE_EVENT(drv_set_key,
00414 TP_PROTO(struct ieee80211_local *local,
00415 enum set_key_cmd cmd, struct ieee80211_sub_if_data *sdata,
00416 struct ieee80211_sta *sta,
00417 struct ieee80211_key_conf *key),
00418
00419 TP_ARGS(local, cmd, sdata, sta, key),
00420
00421 TP_STRUCT__entry(
00422 LOCAL_ENTRY
00423 VIF_ENTRY
00424 STA_ENTRY
00425 __field(u32, cipher)
00426 __field(u8, hw_key_idx)
00427 __field(u8, flags)
00428 __field(s8, keyidx)
00429 ),
00430
00431 TP_fast_assign(
00432 LOCAL_ASSIGN;
00433 VIF_ASSIGN;
00434 STA_ASSIGN;
00435 __entry->cipher = key->cipher;
00436 __entry->flags = key->flags;
00437 __entry->keyidx = key->keyidx;
00438 __entry->hw_key_idx = key->hw_key_idx;
00439 ),
00440
00441 TP_printk(
00442 LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT,
00443 LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG
00444 )
00445 );
00446
00447 TRACE_EVENT(drv_update_tkip_key,
00448 TP_PROTO(struct ieee80211_local *local,
00449 struct ieee80211_sub_if_data *sdata,
00450 struct ieee80211_key_conf *conf,
00451 struct ieee80211_sta *sta, u32 iv32),
00452
00453 TP_ARGS(local, sdata, conf, sta, iv32),
00454
00455 TP_STRUCT__entry(
00456 LOCAL_ENTRY
00457 VIF_ENTRY
00458 STA_ENTRY
00459 __field(u32, iv32)
00460 ),
00461
00462 TP_fast_assign(
00463 LOCAL_ASSIGN;
00464 VIF_ASSIGN;
00465 STA_ASSIGN;
00466 __entry->iv32 = iv32;
00467 ),
00468
00469 TP_printk(
00470 LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT " iv32:%#x",
00471 LOCAL_PR_ARG,VIF_PR_ARG,STA_PR_ARG, __entry->iv32
00472 )
00473 );
00474
00475 DEFINE_EVENT(local_sdata_evt, drv_hw_scan,
00476 TP_PROTO(struct ieee80211_local *local,
00477 struct ieee80211_sub_if_data *sdata),
00478 TP_ARGS(local, sdata)
00479 );
00480
00481 DEFINE_EVENT(local_sdata_evt, drv_cancel_hw_scan,
00482 TP_PROTO(struct ieee80211_local *local,
00483 struct ieee80211_sub_if_data *sdata),
00484 TP_ARGS(local, sdata)
00485 );
00486
00487 DEFINE_EVENT(local_sdata_evt, drv_sched_scan_start,
00488 TP_PROTO(struct ieee80211_local *local,
00489 struct ieee80211_sub_if_data *sdata),
00490 TP_ARGS(local, sdata)
00491 );
00492
00493 DEFINE_EVENT(local_sdata_evt, drv_sched_scan_stop,
00494 TP_PROTO(struct ieee80211_local *local,
00495 struct ieee80211_sub_if_data *sdata),
00496 TP_ARGS(local, sdata)
00497 );
00498
00499 DEFINE_EVENT(local_only_evt, drv_sw_scan_start,
00500 TP_PROTO(struct ieee80211_local *local),
00501 TP_ARGS(local)
00502 );
00503
00504 DEFINE_EVENT(local_only_evt, drv_sw_scan_complete,
00505 TP_PROTO(struct ieee80211_local *local),
00506 TP_ARGS(local)
00507 );
00508
00509 TRACE_EVENT(drv_get_stats,
00510 TP_PROTO(struct ieee80211_local *local,
00511 struct ieee80211_low_level_stats *stats,
00512 int ret),
00513
00514 TP_ARGS(local, stats, ret),
00515
00516 TP_STRUCT__entry(
00517 LOCAL_ENTRY
00518 __field(int, ret)
00519 __field(unsigned int, ackfail)
00520 __field(unsigned int, rtsfail)
00521 __field(unsigned int, fcserr)
00522 __field(unsigned int, rtssucc)
00523 ),
00524
00525 TP_fast_assign(
00526 LOCAL_ASSIGN;
00527 __entry->ret = ret;
00528 __entry->ackfail = stats->dot11ACKFailureCount;
00529 __entry->rtsfail = stats->dot11RTSFailureCount;
00530 __entry->fcserr = stats->dot11FCSErrorCount;
00531 __entry->rtssucc = stats->dot11RTSSuccessCount;
00532 ),
00533
00534 TP_printk(
00535 LOCAL_PR_FMT " ret:%d",
00536 LOCAL_PR_ARG, __entry->ret
00537 )
00538 );
00539
00540 TRACE_EVENT(drv_get_tkip_seq,
00541 TP_PROTO(struct ieee80211_local *local,
00542 u8 hw_key_idx, u32 *iv32, u16 *iv16),
00543
00544 TP_ARGS(local, hw_key_idx, iv32, iv16),
00545
00546 TP_STRUCT__entry(
00547 LOCAL_ENTRY
00548 __field(u8, hw_key_idx)
00549 __field(u32, iv32)
00550 __field(u16, iv16)
00551 ),
00552
00553 TP_fast_assign(
00554 LOCAL_ASSIGN;
00555 __entry->hw_key_idx = hw_key_idx;
00556 __entry->iv32 = *iv32;
00557 __entry->iv16 = *iv16;
00558 ),
00559
00560 TP_printk(
00561 LOCAL_PR_FMT, LOCAL_PR_ARG
00562 )
00563 );
00564
00565 DEFINE_EVENT(local_u32_evt, drv_set_frag_threshold,
00566 TP_PROTO(struct ieee80211_local *local, u32 value),
00567 TP_ARGS(local, value)
00568 );
00569
00570 DEFINE_EVENT(local_u32_evt, drv_set_rts_threshold,
00571 TP_PROTO(struct ieee80211_local *local, u32 value),
00572 TP_ARGS(local, value)
00573 );
00574
00575 TRACE_EVENT(drv_set_coverage_class,
00576 TP_PROTO(struct ieee80211_local *local, u8 value),
00577
00578 TP_ARGS(local, value),
00579
00580 TP_STRUCT__entry(
00581 LOCAL_ENTRY
00582 __field(u8, value)
00583 ),
00584
00585 TP_fast_assign(
00586 LOCAL_ASSIGN;
00587 __entry->value = value;
00588 ),
00589
00590 TP_printk(
00591 LOCAL_PR_FMT " value:%d",
00592 LOCAL_PR_ARG, __entry->value
00593 )
00594 );
00595
00596 TRACE_EVENT(drv_sta_notify,
00597 TP_PROTO(struct ieee80211_local *local,
00598 struct ieee80211_sub_if_data *sdata,
00599 enum sta_notify_cmd cmd,
00600 struct ieee80211_sta *sta),
00601
00602 TP_ARGS(local, sdata, cmd, sta),
00603
00604 TP_STRUCT__entry(
00605 LOCAL_ENTRY
00606 VIF_ENTRY
00607 STA_ENTRY
00608 __field(u32, cmd)
00609 ),
00610
00611 TP_fast_assign(
00612 LOCAL_ASSIGN;
00613 VIF_ASSIGN;
00614 STA_ASSIGN;
00615 __entry->cmd = cmd;
00616 ),
00617
00618 TP_printk(
00619 LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT " cmd:%d",
00620 LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG, __entry->cmd
00621 )
00622 );
00623
00624 TRACE_EVENT(drv_sta_state,
00625 TP_PROTO(struct ieee80211_local *local,
00626 struct ieee80211_sub_if_data *sdata,
00627 struct ieee80211_sta *sta,
00628 enum ieee80211_sta_state old_state,
00629 enum ieee80211_sta_state new_state),
00630
00631 TP_ARGS(local, sdata, sta, old_state, new_state),
00632
00633 TP_STRUCT__entry(
00634 LOCAL_ENTRY
00635 VIF_ENTRY
00636 STA_ENTRY
00637 __field(u32, old_state)
00638 __field(u32, new_state)
00639 ),
00640
00641 TP_fast_assign(
00642 LOCAL_ASSIGN;
00643 VIF_ASSIGN;
00644 STA_ASSIGN;
00645 __entry->old_state = old_state;
00646 __entry->new_state = new_state;
00647 ),
00648
00649 TP_printk(
00650 LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT " state: %d->%d",
00651 LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG,
00652 __entry->old_state, __entry->new_state
00653 )
00654 );
00655
00656 TRACE_EVENT(drv_sta_rc_update,
00657 TP_PROTO(struct ieee80211_local *local,
00658 struct ieee80211_sub_if_data *sdata,
00659 struct ieee80211_sta *sta,
00660 u32 changed),
00661
00662 TP_ARGS(local, sdata, sta, changed),
00663
00664 TP_STRUCT__entry(
00665 LOCAL_ENTRY
00666 VIF_ENTRY
00667 STA_ENTRY
00668 __field(u32, changed)
00669 ),
00670
00671 TP_fast_assign(
00672 LOCAL_ASSIGN;
00673 VIF_ASSIGN;
00674 STA_ASSIGN;
00675 __entry->changed = changed;
00676 ),
00677
00678 TP_printk(
00679 LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT " changed: 0x%x",
00680 LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG, __entry->changed
00681 )
00682 );
00683
00684 TRACE_EVENT(drv_sta_add,
00685 TP_PROTO(struct ieee80211_local *local,
00686 struct ieee80211_sub_if_data *sdata,
00687 struct ieee80211_sta *sta),
00688
00689 TP_ARGS(local, sdata, sta),
00690
00691 TP_STRUCT__entry(
00692 LOCAL_ENTRY
00693 VIF_ENTRY
00694 STA_ENTRY
00695 ),
00696
00697 TP_fast_assign(
00698 LOCAL_ASSIGN;
00699 VIF_ASSIGN;
00700 STA_ASSIGN;
00701 ),
00702
00703 TP_printk(
00704 LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT,
00705 LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG
00706 )
00707 );
00708
00709 TRACE_EVENT(drv_sta_remove,
00710 TP_PROTO(struct ieee80211_local *local,
00711 struct ieee80211_sub_if_data *sdata,
00712 struct ieee80211_sta *sta),
00713
00714 TP_ARGS(local, sdata, sta),
00715
00716 TP_STRUCT__entry(
00717 LOCAL_ENTRY
00718 VIF_ENTRY
00719 STA_ENTRY
00720 ),
00721
00722 TP_fast_assign(
00723 LOCAL_ASSIGN;
00724 VIF_ASSIGN;
00725 STA_ASSIGN;
00726 ),
00727
00728 TP_printk(
00729 LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT,
00730 LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG
00731 )
00732 );
00733
00734 TRACE_EVENT(drv_conf_tx,
00735 TP_PROTO(struct ieee80211_local *local,
00736 struct ieee80211_sub_if_data *sdata,
00737 u16 ac, const struct ieee80211_tx_queue_params *params),
00738
00739 TP_ARGS(local, sdata, ac, params),
00740
00741 TP_STRUCT__entry(
00742 LOCAL_ENTRY
00743 VIF_ENTRY
00744 __field(u16, ac)
00745 __field(u16, txop)
00746 __field(u16, cw_min)
00747 __field(u16, cw_max)
00748 __field(u8, aifs)
00749 __field(bool, uapsd)
00750 ),
00751
00752 TP_fast_assign(
00753 LOCAL_ASSIGN;
00754 VIF_ASSIGN;
00755 __entry->ac = ac;
00756 __entry->txop = params->txop;
00757 __entry->cw_max = params->cw_max;
00758 __entry->cw_min = params->cw_min;
00759 __entry->aifs = params->aifs;
00760 __entry->uapsd = params->uapsd;
00761 ),
00762
00763 TP_printk(
00764 LOCAL_PR_FMT VIF_PR_FMT " AC:%d",
00765 LOCAL_PR_ARG, VIF_PR_ARG, __entry->ac
00766 )
00767 );
00768
00769 DEFINE_EVENT(local_sdata_evt, drv_get_tsf,
00770 TP_PROTO(struct ieee80211_local *local,
00771 struct ieee80211_sub_if_data *sdata),
00772 TP_ARGS(local, sdata)
00773 );
00774
00775 TRACE_EVENT(drv_set_tsf,
00776 TP_PROTO(struct ieee80211_local *local,
00777 struct ieee80211_sub_if_data *sdata,
00778 u64 tsf),
00779
00780 TP_ARGS(local, sdata, tsf),
00781
00782 TP_STRUCT__entry(
00783 LOCAL_ENTRY
00784 VIF_ENTRY
00785 __field(u64, tsf)
00786 ),
00787
00788 TP_fast_assign(
00789 LOCAL_ASSIGN;
00790 VIF_ASSIGN;
00791 __entry->tsf = tsf;
00792 ),
00793
00794 TP_printk(
00795 LOCAL_PR_FMT VIF_PR_FMT " tsf:%llu",
00796 LOCAL_PR_ARG, VIF_PR_ARG, (unsigned long long)__entry->tsf
00797 )
00798 );
00799
00800 DEFINE_EVENT(local_sdata_evt, drv_reset_tsf,
00801 TP_PROTO(struct ieee80211_local *local,
00802 struct ieee80211_sub_if_data *sdata),
00803 TP_ARGS(local, sdata)
00804 );
00805
00806 DEFINE_EVENT(local_only_evt, drv_tx_last_beacon,
00807 TP_PROTO(struct ieee80211_local *local),
00808 TP_ARGS(local)
00809 );
00810
00811 TRACE_EVENT(drv_ampdu_action,
00812 TP_PROTO(struct ieee80211_local *local,
00813 struct ieee80211_sub_if_data *sdata,
00814 enum ieee80211_ampdu_mlme_action action,
00815 struct ieee80211_sta *sta, u16 tid,
00816 u16 *ssn, u8 buf_size),
00817
00818 TP_ARGS(local, sdata, action, sta, tid, ssn, buf_size),
00819
00820 TP_STRUCT__entry(
00821 LOCAL_ENTRY
00822 STA_ENTRY
00823 __field(u32, action)
00824 __field(u16, tid)
00825 __field(u16, ssn)
00826 __field(u8, buf_size)
00827 VIF_ENTRY
00828 ),
00829
00830 TP_fast_assign(
00831 LOCAL_ASSIGN;
00832 VIF_ASSIGN;
00833 STA_ASSIGN;
00834 __entry->action = action;
00835 __entry->tid = tid;
00836 __entry->ssn = ssn ? *ssn : 0;
00837 __entry->buf_size = buf_size;
00838 ),
00839
00840 TP_printk(
00841 LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT " action:%d tid:%d buf:%d",
00842 LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG, __entry->action,
00843 __entry->tid, __entry->buf_size
00844 )
00845 );
00846
00847 TRACE_EVENT(drv_get_survey,
00848 TP_PROTO(struct ieee80211_local *local, int idx,
00849 struct survey_info *survey),
00850
00851 TP_ARGS(local, idx, survey),
00852
00853 TP_STRUCT__entry(
00854 LOCAL_ENTRY
00855 __field(int, idx)
00856 ),
00857
00858 TP_fast_assign(
00859 LOCAL_ASSIGN;
00860 __entry->idx = idx;
00861 ),
00862
00863 TP_printk(
00864 LOCAL_PR_FMT " idx:%d",
00865 LOCAL_PR_ARG, __entry->idx
00866 )
00867 );
00868
00869 TRACE_EVENT(drv_flush,
00870 TP_PROTO(struct ieee80211_local *local, bool drop),
00871
00872 TP_ARGS(local, drop),
00873
00874 TP_STRUCT__entry(
00875 LOCAL_ENTRY
00876 __field(bool, drop)
00877 ),
00878
00879 TP_fast_assign(
00880 LOCAL_ASSIGN;
00881 __entry->drop = drop;
00882 ),
00883
00884 TP_printk(
00885 LOCAL_PR_FMT " drop:%d",
00886 LOCAL_PR_ARG, __entry->drop
00887 )
00888 );
00889
00890 TRACE_EVENT(drv_channel_switch,
00891 TP_PROTO(struct ieee80211_local *local,
00892 struct ieee80211_channel_switch *ch_switch),
00893
00894 TP_ARGS(local, ch_switch),
00895
00896 TP_STRUCT__entry(
00897 LOCAL_ENTRY
00898 __field(u64, timestamp)
00899 __field(bool, block_tx)
00900 __field(u16, freq)
00901 __field(u8, count)
00902 ),
00903
00904 TP_fast_assign(
00905 LOCAL_ASSIGN;
00906 __entry->timestamp = ch_switch->timestamp;
00907 __entry->block_tx = ch_switch->block_tx;
00908 __entry->freq = ch_switch->channel->center_freq;
00909 __entry->count = ch_switch->count;
00910 ),
00911
00912 TP_printk(
00913 LOCAL_PR_FMT " new freq:%u count:%d",
00914 LOCAL_PR_ARG, __entry->freq, __entry->count
00915 )
00916 );
00917
00918 TRACE_EVENT(drv_set_antenna,
00919 TP_PROTO(struct ieee80211_local *local, u32 tx_ant, u32 rx_ant, int ret),
00920
00921 TP_ARGS(local, tx_ant, rx_ant, ret),
00922
00923 TP_STRUCT__entry(
00924 LOCAL_ENTRY
00925 __field(u32, tx_ant)
00926 __field(u32, rx_ant)
00927 __field(int, ret)
00928 ),
00929
00930 TP_fast_assign(
00931 LOCAL_ASSIGN;
00932 __entry->tx_ant = tx_ant;
00933 __entry->rx_ant = rx_ant;
00934 __entry->ret = ret;
00935 ),
00936
00937 TP_printk(
00938 LOCAL_PR_FMT " tx_ant:%d rx_ant:%d ret:%d",
00939 LOCAL_PR_ARG, __entry->tx_ant, __entry->rx_ant, __entry->ret
00940 )
00941 );
00942
00943 TRACE_EVENT(drv_get_antenna,
00944 TP_PROTO(struct ieee80211_local *local, u32 tx_ant, u32 rx_ant, int ret),
00945
00946 TP_ARGS(local, tx_ant, rx_ant, ret),
00947
00948 TP_STRUCT__entry(
00949 LOCAL_ENTRY
00950 __field(u32, tx_ant)
00951 __field(u32, rx_ant)
00952 __field(int, ret)
00953 ),
00954
00955 TP_fast_assign(
00956 LOCAL_ASSIGN;
00957 __entry->tx_ant = tx_ant;
00958 __entry->rx_ant = rx_ant;
00959 __entry->ret = ret;
00960 ),
00961
00962 TP_printk(
00963 LOCAL_PR_FMT " tx_ant:%d rx_ant:%d ret:%d",
00964 LOCAL_PR_ARG, __entry->tx_ant, __entry->rx_ant, __entry->ret
00965 )
00966 );
00967
00968 TRACE_EVENT(drv_remain_on_channel,
00969 TP_PROTO(struct ieee80211_local *local, struct ieee80211_channel *chan,
00970 enum nl80211_channel_type chantype, unsigned int duration),
00971
00972 TP_ARGS(local, chan, chantype, duration),
00973
00974 TP_STRUCT__entry(
00975 LOCAL_ENTRY
00976 __field(int, center_freq)
00977 __field(int, channel_type)
00978 __field(unsigned int, duration)
00979 ),
00980
00981 TP_fast_assign(
00982 LOCAL_ASSIGN;
00983 __entry->center_freq = chan->center_freq;
00984 __entry->channel_type = chantype;
00985 __entry->duration = duration;
00986 ),
00987
00988 TP_printk(
00989 LOCAL_PR_FMT " freq:%dMHz duration:%dms",
00990 LOCAL_PR_ARG, __entry->center_freq, __entry->duration
00991 )
00992 );
00993
00994 DEFINE_EVENT(local_only_evt, drv_cancel_remain_on_channel,
00995 TP_PROTO(struct ieee80211_local *local),
00996 TP_ARGS(local)
00997 );
00998
00999 TRACE_EVENT(drv_offchannel_tx,
01000 TP_PROTO(struct ieee80211_local *local, struct sk_buff *skb,
01001 struct ieee80211_channel *chan,
01002 enum nl80211_channel_type channel_type,
01003 unsigned int wait),
01004
01005 TP_ARGS(local, skb, chan, channel_type, wait),
01006
01007 TP_STRUCT__entry(
01008 LOCAL_ENTRY
01009 __field(int, center_freq)
01010 __field(int, channel_type)
01011 __field(unsigned int, wait)
01012 ),
01013
01014 TP_fast_assign(
01015 LOCAL_ASSIGN;
01016 __entry->center_freq = chan->center_freq;
01017 __entry->channel_type = channel_type;
01018 __entry->wait = wait;
01019 ),
01020
01021 TP_printk(
01022 LOCAL_PR_FMT " freq:%dMHz, wait:%dms",
01023 LOCAL_PR_ARG, __entry->center_freq, __entry->wait
01024 )
01025 );
01026
01027 TRACE_EVENT(drv_set_ringparam,
01028 TP_PROTO(struct ieee80211_local *local, u32 tx, u32 rx),
01029
01030 TP_ARGS(local, tx, rx),
01031
01032 TP_STRUCT__entry(
01033 LOCAL_ENTRY
01034 __field(u32, tx)
01035 __field(u32, rx)
01036 ),
01037
01038 TP_fast_assign(
01039 LOCAL_ASSIGN;
01040 __entry->tx = tx;
01041 __entry->rx = rx;
01042 ),
01043
01044 TP_printk(
01045 LOCAL_PR_FMT " tx:%d rx %d",
01046 LOCAL_PR_ARG, __entry->tx, __entry->rx
01047 )
01048 );
01049
01050 TRACE_EVENT(drv_get_ringparam,
01051 TP_PROTO(struct ieee80211_local *local, u32 *tx, u32 *tx_max,
01052 u32 *rx, u32 *rx_max),
01053
01054 TP_ARGS(local, tx, tx_max, rx, rx_max),
01055
01056 TP_STRUCT__entry(
01057 LOCAL_ENTRY
01058 __field(u32, tx)
01059 __field(u32, tx_max)
01060 __field(u32, rx)
01061 __field(u32, rx_max)
01062 ),
01063
01064 TP_fast_assign(
01065 LOCAL_ASSIGN;
01066 __entry->tx = *tx;
01067 __entry->tx_max = *tx_max;
01068 __entry->rx = *rx;
01069 __entry->rx_max = *rx_max;
01070 ),
01071
01072 TP_printk(
01073 LOCAL_PR_FMT " tx:%d tx_max %d rx %d rx_max %d",
01074 LOCAL_PR_ARG,
01075 __entry->tx, __entry->tx_max, __entry->rx, __entry->rx_max
01076 )
01077 );
01078
01079 DEFINE_EVENT(local_only_evt, drv_tx_frames_pending,
01080 TP_PROTO(struct ieee80211_local *local),
01081 TP_ARGS(local)
01082 );
01083
01084 DEFINE_EVENT(local_only_evt, drv_offchannel_tx_cancel_wait,
01085 TP_PROTO(struct ieee80211_local *local),
01086 TP_ARGS(local)
01087 );
01088
01089 TRACE_EVENT(drv_set_bitrate_mask,
01090 TP_PROTO(struct ieee80211_local *local,
01091 struct ieee80211_sub_if_data *sdata,
01092 const struct cfg80211_bitrate_mask *mask),
01093
01094 TP_ARGS(local, sdata, mask),
01095
01096 TP_STRUCT__entry(
01097 LOCAL_ENTRY
01098 VIF_ENTRY
01099 __field(u32, legacy_2g)
01100 __field(u32, legacy_5g)
01101 ),
01102
01103 TP_fast_assign(
01104 LOCAL_ASSIGN;
01105 VIF_ASSIGN;
01106 __entry->legacy_2g = mask->control[IEEE80211_BAND_2GHZ].legacy;
01107 __entry->legacy_5g = mask->control[IEEE80211_BAND_5GHZ].legacy;
01108 ),
01109
01110 TP_printk(
01111 LOCAL_PR_FMT VIF_PR_FMT " 2G Mask:0x%x 5G Mask:0x%x",
01112 LOCAL_PR_ARG, VIF_PR_ARG, __entry->legacy_2g, __entry->legacy_5g
01113 )
01114 );
01115
01116 TRACE_EVENT(drv_set_rekey_data,
01117 TP_PROTO(struct ieee80211_local *local,
01118 struct ieee80211_sub_if_data *sdata,
01119 struct cfg80211_gtk_rekey_data *data),
01120
01121 TP_ARGS(local, sdata, data),
01122
01123 TP_STRUCT__entry(
01124 LOCAL_ENTRY
01125 VIF_ENTRY
01126 __array(u8, kek, NL80211_KEK_LEN)
01127 __array(u8, kck, NL80211_KCK_LEN)
01128 __array(u8, replay_ctr, NL80211_REPLAY_CTR_LEN)
01129 ),
01130
01131 TP_fast_assign(
01132 LOCAL_ASSIGN;
01133 VIF_ASSIGN;
01134 memcpy(__entry->kek, data->kek, NL80211_KEK_LEN);
01135 memcpy(__entry->kck, data->kck, NL80211_KCK_LEN);
01136 memcpy(__entry->replay_ctr, data->replay_ctr,
01137 NL80211_REPLAY_CTR_LEN);
01138 ),
01139
01140 TP_printk(LOCAL_PR_FMT VIF_PR_FMT,
01141 LOCAL_PR_ARG, VIF_PR_ARG)
01142 );
01143
01144 TRACE_EVENT(drv_rssi_callback,
01145 TP_PROTO(struct ieee80211_local *local,
01146 enum ieee80211_rssi_event rssi_event),
01147
01148 TP_ARGS(local, rssi_event),
01149
01150 TP_STRUCT__entry(
01151 LOCAL_ENTRY
01152 __field(u32, rssi_event)
01153 ),
01154
01155 TP_fast_assign(
01156 LOCAL_ASSIGN;
01157 __entry->rssi_event = rssi_event;
01158 ),
01159
01160 TP_printk(
01161 LOCAL_PR_FMT " rssi_event:%d",
01162 LOCAL_PR_ARG, __entry->rssi_event
01163 )
01164 );
01165
01166 DECLARE_EVENT_CLASS(release_evt,
01167 TP_PROTO(struct ieee80211_local *local,
01168 struct ieee80211_sta *sta,
01169 u16 tids, int num_frames,
01170 enum ieee80211_frame_release_type reason,
01171 bool more_data),
01172
01173 TP_ARGS(local, sta, tids, num_frames, reason, more_data),
01174
01175 TP_STRUCT__entry(
01176 LOCAL_ENTRY
01177 STA_ENTRY
01178 __field(u16, tids)
01179 __field(int, num_frames)
01180 __field(int, reason)
01181 __field(bool, more_data)
01182 ),
01183
01184 TP_fast_assign(
01185 LOCAL_ASSIGN;
01186 STA_ASSIGN;
01187 __entry->tids = tids;
01188 __entry->num_frames = num_frames;
01189 __entry->reason = reason;
01190 __entry->more_data = more_data;
01191 ),
01192
01193 TP_printk(
01194 LOCAL_PR_FMT STA_PR_FMT
01195 " TIDs:0x%.4x frames:%d reason:%d more:%d",
01196 LOCAL_PR_ARG, STA_PR_ARG, __entry->tids, __entry->num_frames,
01197 __entry->reason, __entry->more_data
01198 )
01199 );
01200
01201 DEFINE_EVENT(release_evt, drv_release_buffered_frames,
01202 TP_PROTO(struct ieee80211_local *local,
01203 struct ieee80211_sta *sta,
01204 u16 tids, int num_frames,
01205 enum ieee80211_frame_release_type reason,
01206 bool more_data),
01207
01208 TP_ARGS(local, sta, tids, num_frames, reason, more_data)
01209 );
01210
01211 DEFINE_EVENT(release_evt, drv_allow_buffered_frames,
01212 TP_PROTO(struct ieee80211_local *local,
01213 struct ieee80211_sta *sta,
01214 u16 tids, int num_frames,
01215 enum ieee80211_frame_release_type reason,
01216 bool more_data),
01217
01218 TP_ARGS(local, sta, tids, num_frames, reason, more_data)
01219 );
01220
01221
01222
01223
01224
01225 TRACE_EVENT(api_start_tx_ba_session,
01226 TP_PROTO(struct ieee80211_sta *sta, u16 tid),
01227
01228 TP_ARGS(sta, tid),
01229
01230 TP_STRUCT__entry(
01231 STA_ENTRY
01232 __field(u16, tid)
01233 ),
01234
01235 TP_fast_assign(
01236 STA_ASSIGN;
01237 __entry->tid = tid;
01238 ),
01239
01240 TP_printk(
01241 STA_PR_FMT " tid:%d",
01242 STA_PR_ARG, __entry->tid
01243 )
01244 );
01245
01246 TRACE_EVENT(api_start_tx_ba_cb,
01247 TP_PROTO(struct ieee80211_sub_if_data *sdata, const u8 *ra, u16 tid),
01248
01249 TP_ARGS(sdata, ra, tid),
01250
01251 TP_STRUCT__entry(
01252 VIF_ENTRY
01253 __array(u8, ra, ETH_ALEN)
01254 __field(u16, tid)
01255 ),
01256
01257 TP_fast_assign(
01258 VIF_ASSIGN;
01259 memcpy(__entry->ra, ra, ETH_ALEN);
01260 __entry->tid = tid;
01261 ),
01262
01263 TP_printk(
01264 VIF_PR_FMT " ra:%pM tid:%d",
01265 VIF_PR_ARG, __entry->ra, __entry->tid
01266 )
01267 );
01268
01269 TRACE_EVENT(api_stop_tx_ba_session,
01270 TP_PROTO(struct ieee80211_sta *sta, u16 tid),
01271
01272 TP_ARGS(sta, tid),
01273
01274 TP_STRUCT__entry(
01275 STA_ENTRY
01276 __field(u16, tid)
01277 ),
01278
01279 TP_fast_assign(
01280 STA_ASSIGN;
01281 __entry->tid = tid;
01282 ),
01283
01284 TP_printk(
01285 STA_PR_FMT " tid:%d",
01286 STA_PR_ARG, __entry->tid
01287 )
01288 );
01289
01290 TRACE_EVENT(api_stop_tx_ba_cb,
01291 TP_PROTO(struct ieee80211_sub_if_data *sdata, const u8 *ra, u16 tid),
01292
01293 TP_ARGS(sdata, ra, tid),
01294
01295 TP_STRUCT__entry(
01296 VIF_ENTRY
01297 __array(u8, ra, ETH_ALEN)
01298 __field(u16, tid)
01299 ),
01300
01301 TP_fast_assign(
01302 VIF_ASSIGN;
01303 memcpy(__entry->ra, ra, ETH_ALEN);
01304 __entry->tid = tid;
01305 ),
01306
01307 TP_printk(
01308 VIF_PR_FMT " ra:%pM tid:%d",
01309 VIF_PR_ARG, __entry->ra, __entry->tid
01310 )
01311 );
01312
01313 DEFINE_EVENT(local_only_evt, api_restart_hw,
01314 TP_PROTO(struct ieee80211_local *local),
01315 TP_ARGS(local)
01316 );
01317
01318 TRACE_EVENT(api_beacon_loss,
01319 TP_PROTO(struct ieee80211_sub_if_data *sdata),
01320
01321 TP_ARGS(sdata),
01322
01323 TP_STRUCT__entry(
01324 VIF_ENTRY
01325 ),
01326
01327 TP_fast_assign(
01328 VIF_ASSIGN;
01329 ),
01330
01331 TP_printk(
01332 VIF_PR_FMT,
01333 VIF_PR_ARG
01334 )
01335 );
01336
01337 TRACE_EVENT(api_connection_loss,
01338 TP_PROTO(struct ieee80211_sub_if_data *sdata),
01339
01340 TP_ARGS(sdata),
01341
01342 TP_STRUCT__entry(
01343 VIF_ENTRY
01344 ),
01345
01346 TP_fast_assign(
01347 VIF_ASSIGN;
01348 ),
01349
01350 TP_printk(
01351 VIF_PR_FMT,
01352 VIF_PR_ARG
01353 )
01354 );
01355
01356 TRACE_EVENT(api_cqm_rssi_notify,
01357 TP_PROTO(struct ieee80211_sub_if_data *sdata,
01358 enum nl80211_cqm_rssi_threshold_event rssi_event),
01359
01360 TP_ARGS(sdata, rssi_event),
01361
01362 TP_STRUCT__entry(
01363 VIF_ENTRY
01364 __field(u32, rssi_event)
01365 ),
01366
01367 TP_fast_assign(
01368 VIF_ASSIGN;
01369 __entry->rssi_event = rssi_event;
01370 ),
01371
01372 TP_printk(
01373 VIF_PR_FMT " event:%d",
01374 VIF_PR_ARG, __entry->rssi_event
01375 )
01376 );
01377
01378 TRACE_EVENT(api_scan_completed,
01379 TP_PROTO(struct ieee80211_local *local, bool aborted),
01380
01381 TP_ARGS(local, aborted),
01382
01383 TP_STRUCT__entry(
01384 LOCAL_ENTRY
01385 __field(bool, aborted)
01386 ),
01387
01388 TP_fast_assign(
01389 LOCAL_ASSIGN;
01390 __entry->aborted = aborted;
01391 ),
01392
01393 TP_printk(
01394 LOCAL_PR_FMT " aborted:%d",
01395 LOCAL_PR_ARG, __entry->aborted
01396 )
01397 );
01398
01399 TRACE_EVENT(api_sched_scan_results,
01400 TP_PROTO(struct ieee80211_local *local),
01401
01402 TP_ARGS(local),
01403
01404 TP_STRUCT__entry(
01405 LOCAL_ENTRY
01406 ),
01407
01408 TP_fast_assign(
01409 LOCAL_ASSIGN;
01410 ),
01411
01412 TP_printk(
01413 LOCAL_PR_FMT, LOCAL_PR_ARG
01414 )
01415 );
01416
01417 TRACE_EVENT(api_sched_scan_stopped,
01418 TP_PROTO(struct ieee80211_local *local),
01419
01420 TP_ARGS(local),
01421
01422 TP_STRUCT__entry(
01423 LOCAL_ENTRY
01424 ),
01425
01426 TP_fast_assign(
01427 LOCAL_ASSIGN;
01428 ),
01429
01430 TP_printk(
01431 LOCAL_PR_FMT, LOCAL_PR_ARG
01432 )
01433 );
01434
01435 TRACE_EVENT(api_sta_block_awake,
01436 TP_PROTO(struct ieee80211_local *local,
01437 struct ieee80211_sta *sta, bool block),
01438
01439 TP_ARGS(local, sta, block),
01440
01441 TP_STRUCT__entry(
01442 LOCAL_ENTRY
01443 STA_ENTRY
01444 __field(bool, block)
01445 ),
01446
01447 TP_fast_assign(
01448 LOCAL_ASSIGN;
01449 STA_ASSIGN;
01450 __entry->block = block;
01451 ),
01452
01453 TP_printk(
01454 LOCAL_PR_FMT STA_PR_FMT " block:%d",
01455 LOCAL_PR_ARG, STA_PR_FMT, __entry->block
01456 )
01457 );
01458
01459 TRACE_EVENT(api_chswitch_done,
01460 TP_PROTO(struct ieee80211_sub_if_data *sdata, bool success),
01461
01462 TP_ARGS(sdata, success),
01463
01464 TP_STRUCT__entry(
01465 VIF_ENTRY
01466 __field(bool, success)
01467 ),
01468
01469 TP_fast_assign(
01470 VIF_ASSIGN;
01471 __entry->success = success;
01472 ),
01473
01474 TP_printk(
01475 VIF_PR_FMT " success=%d",
01476 VIF_PR_ARG, __entry->success
01477 )
01478 );
01479
01480 DEFINE_EVENT(local_only_evt, api_ready_on_channel,
01481 TP_PROTO(struct ieee80211_local *local),
01482 TP_ARGS(local)
01483 );
01484
01485 DEFINE_EVENT(local_only_evt, api_remain_on_channel_expired,
01486 TP_PROTO(struct ieee80211_local *local),
01487 TP_ARGS(local)
01488 );
01489
01490 TRACE_EVENT(api_gtk_rekey_notify,
01491 TP_PROTO(struct ieee80211_sub_if_data *sdata,
01492 const u8 *bssid, const u8 *replay_ctr),
01493
01494 TP_ARGS(sdata, bssid, replay_ctr),
01495
01496 TP_STRUCT__entry(
01497 VIF_ENTRY
01498 __array(u8, bssid, ETH_ALEN)
01499 __array(u8, replay_ctr, NL80211_REPLAY_CTR_LEN)
01500 ),
01501
01502 TP_fast_assign(
01503 VIF_ASSIGN;
01504 memcpy(__entry->bssid, bssid, ETH_ALEN);
01505 memcpy(__entry->replay_ctr, replay_ctr, NL80211_REPLAY_CTR_LEN);
01506 ),
01507
01508 TP_printk(VIF_PR_FMT, VIF_PR_ARG)
01509 );
01510
01511 TRACE_EVENT(api_enable_rssi_reports,
01512 TP_PROTO(struct ieee80211_sub_if_data *sdata,
01513 int rssi_min_thold, int rssi_max_thold),
01514
01515 TP_ARGS(sdata, rssi_min_thold, rssi_max_thold),
01516
01517 TP_STRUCT__entry(
01518 VIF_ENTRY
01519 __field(int, rssi_min_thold)
01520 __field(int, rssi_max_thold)
01521 ),
01522
01523 TP_fast_assign(
01524 VIF_ASSIGN;
01525 __entry->rssi_min_thold = rssi_min_thold;
01526 __entry->rssi_max_thold = rssi_max_thold;
01527 ),
01528
01529 TP_printk(
01530 VIF_PR_FMT " rssi_min_thold =%d, rssi_max_thold = %d",
01531 VIF_PR_ARG, __entry->rssi_min_thold, __entry->rssi_max_thold
01532 )
01533 );
01534
01535 TRACE_EVENT(api_eosp,
01536 TP_PROTO(struct ieee80211_local *local,
01537 struct ieee80211_sta *sta),
01538
01539 TP_ARGS(local, sta),
01540
01541 TP_STRUCT__entry(
01542 LOCAL_ENTRY
01543 STA_ENTRY
01544 ),
01545
01546 TP_fast_assign(
01547 LOCAL_ASSIGN;
01548 STA_ASSIGN;
01549 ),
01550
01551 TP_printk(
01552 LOCAL_PR_FMT STA_PR_FMT,
01553 LOCAL_PR_ARG, STA_PR_FMT
01554 )
01555 );
01556
01557
01558
01559
01560
01561
01562 TRACE_EVENT(wake_queue,
01563 TP_PROTO(struct ieee80211_local *local, u16 queue,
01564 enum queue_stop_reason reason),
01565
01566 TP_ARGS(local, queue, reason),
01567
01568 TP_STRUCT__entry(
01569 LOCAL_ENTRY
01570 __field(u16, queue)
01571 __field(u32, reason)
01572 ),
01573
01574 TP_fast_assign(
01575 LOCAL_ASSIGN;
01576 __entry->queue = queue;
01577 __entry->reason = reason;
01578 ),
01579
01580 TP_printk(
01581 LOCAL_PR_FMT " queue:%d, reason:%d",
01582 LOCAL_PR_ARG, __entry->queue, __entry->reason
01583 )
01584 );
01585
01586 TRACE_EVENT(stop_queue,
01587 TP_PROTO(struct ieee80211_local *local, u16 queue,
01588 enum queue_stop_reason reason),
01589
01590 TP_ARGS(local, queue, reason),
01591
01592 TP_STRUCT__entry(
01593 LOCAL_ENTRY
01594 __field(u16, queue)
01595 __field(u32, reason)
01596 ),
01597
01598 TP_fast_assign(
01599 LOCAL_ASSIGN;
01600 __entry->queue = queue;
01601 __entry->reason = reason;
01602 ),
01603
01604 TP_printk(
01605 LOCAL_PR_FMT " queue:%d, reason:%d",
01606 LOCAL_PR_ARG, __entry->queue, __entry->reason
01607 )
01608 );
01609 #endif
01610
01611 #undef TRACE_INCLUDE_PATH
01612 #define TRACE_INCLUDE_PATH .
01613 #undef TRACE_INCLUDE_FILE
01614 #define TRACE_INCLUDE_FILE driver-trace
01615 #include <trace/define_trace.h>