driver-trace.h
Go to the documentation of this file.
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  * Tracing for driver callbacks.
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  * Tracing for API calls that drivers call.
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  * Tracing for internal functions
01559  * (which may also be called in response to driver calls)
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 /* !__MAC80211_DRIVER_TRACE || TRACE_HEADER_MULTI_READ */
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>


ros_rt_wmp
Author(s): Danilo Tardioli, dantard@unizar.es
autogenerated on Mon Oct 6 2014 08:27:09