1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* 3 * Portions of this file 4 * Copyright(c) 2016-2017 Intel Deutschland GmbH 5 * Copyright (C) 2018 - 2019 Intel Corporation 6 */ 7 8 #if !defined(__MAC80211_DRIVER_TRACE) || defined(TRACE_HEADER_MULTI_READ) 9 #define __MAC80211_DRIVER_TRACE 10 11 #include <linux/tracepoint.h> 12 #include <net/mac80211.h> 13 #include "ieee80211_i.h" 14 15 #undef TRACE_SYSTEM 16 #define TRACE_SYSTEM mac80211 17 18 #define MAXNAME 32 19 #define LOCAL_ENTRY __array(char, wiphy_name, 32) 20 #define LOCAL_ASSIGN strlcpy(__entry->wiphy_name, wiphy_name(local->hw.wiphy), MAXNAME) 21 #define LOCAL_PR_FMT "%s" 22 #define LOCAL_PR_ARG __entry->wiphy_name 23 24 #define STA_ENTRY __array(char, sta_addr, ETH_ALEN) 25 #define STA_ASSIGN (sta ? memcpy(__entry->sta_addr, sta->addr, ETH_ALEN) : memset(__entry->sta_addr, 0, ETH_ALEN)) 26 #define STA_NAMED_ASSIGN(s) memcpy(__entry->sta_addr, (s)->addr, ETH_ALEN) 27 #define STA_PR_FMT " sta:%pM" 28 #define STA_PR_ARG __entry->sta_addr 29 30 #define VIF_ENTRY __field(enum nl80211_iftype, vif_type) __field(void *, sdata) \ 31 __field(bool, p2p) \ 32 __string(vif_name, sdata->name) 33 #define VIF_ASSIGN __entry->vif_type = sdata->vif.type; __entry->sdata = sdata; \ 34 __entry->p2p = sdata->vif.p2p; \ 35 __assign_str(vif_name, sdata->name) 36 #define VIF_PR_FMT " vif:%s(%d%s)" 37 #define VIF_PR_ARG __get_str(vif_name), __entry->vif_type, __entry->p2p ? "/p2p" : "" 38 39 #define CHANDEF_ENTRY __field(u32, control_freq) \ 40 __field(u32, freq_offset) \ 41 __field(u32, chan_width) \ 42 __field(u32, center_freq1) \ 43 __field(u32, freq1_offset) \ 44 __field(u32, center_freq2) 45 #define CHANDEF_ASSIGN(c) \ 46 __entry->control_freq = (c) ? ((c)->chan ? (c)->chan->center_freq : 0) : 0; \ 47 __entry->freq_offset = (c) ? ((c)->chan ? (c)->chan->freq_offset : 0) : 0; \ 48 __entry->chan_width = (c) ? (c)->width : 0; \ 49 __entry->center_freq1 = (c) ? (c)->center_freq1 : 0; \ 50 __entry->freq1_offset = (c) ? (c)->freq1_offset : 0; \ 51 __entry->center_freq2 = (c) ? (c)->center_freq2 : 0; 52 #define CHANDEF_PR_FMT " control:%d.%03d MHz width:%d center: %d.%03d/%d MHz" 53 #define CHANDEF_PR_ARG __entry->control_freq, __entry->freq_offset, __entry->chan_width, \ 54 __entry->center_freq1, __entry->freq1_offset, __entry->center_freq2 55 56 #define MIN_CHANDEF_ENTRY \ 57 __field(u32, min_control_freq) \ 58 __field(u32, min_freq_offset) \ 59 __field(u32, min_chan_width) \ 60 __field(u32, min_center_freq1) \ 61 __field(u32, min_freq1_offset) \ 62 __field(u32, min_center_freq2) 63 64 #define MIN_CHANDEF_ASSIGN(c) \ 65 __entry->min_control_freq = (c)->chan ? (c)->chan->center_freq : 0; \ 66 __entry->min_freq_offset = (c)->chan ? (c)->chan->freq_offset : 0; \ 67 __entry->min_chan_width = (c)->width; \ 68 __entry->min_center_freq1 = (c)->center_freq1; \ 69 __entry->freq1_offset = (c)->freq1_offset; \ 70 __entry->min_center_freq2 = (c)->center_freq2; 71 #define MIN_CHANDEF_PR_FMT " min_control:%d.%03d MHz min_width:%d min_center: %d.%03d/%d MHz" 72 #define MIN_CHANDEF_PR_ARG __entry->min_control_freq, __entry->min_freq_offset, \ 73 __entry->min_chan_width, \ 74 __entry->min_center_freq1, __entry->min_freq1_offset, \ 75 __entry->min_center_freq2 76 77 #define CHANCTX_ENTRY CHANDEF_ENTRY \ 78 MIN_CHANDEF_ENTRY \ 79 __field(u8, rx_chains_static) \ 80 __field(u8, rx_chains_dynamic) 81 #define CHANCTX_ASSIGN CHANDEF_ASSIGN(&ctx->conf.def) \ 82 MIN_CHANDEF_ASSIGN(&ctx->conf.min_def) \ 83 __entry->rx_chains_static = ctx->conf.rx_chains_static; \ 84 __entry->rx_chains_dynamic = ctx->conf.rx_chains_dynamic 85 #define CHANCTX_PR_FMT CHANDEF_PR_FMT MIN_CHANDEF_PR_FMT " chains:%d/%d" 86 #define CHANCTX_PR_ARG CHANDEF_PR_ARG, MIN_CHANDEF_PR_ARG, \ 87 __entry->rx_chains_static, __entry->rx_chains_dynamic 88 89 #define KEY_ENTRY __field(u32, cipher) \ 90 __field(u8, hw_key_idx) \ 91 __field(u8, flags) \ 92 __field(s8, keyidx) 93 #define KEY_ASSIGN(k) __entry->cipher = (k)->cipher; \ 94 __entry->flags = (k)->flags; \ 95 __entry->keyidx = (k)->keyidx; \ 96 __entry->hw_key_idx = (k)->hw_key_idx; 97 #define KEY_PR_FMT " cipher:0x%x, flags=%#x, keyidx=%d, hw_key_idx=%d" 98 #define KEY_PR_ARG __entry->cipher, __entry->flags, __entry->keyidx, __entry->hw_key_idx 99 100 #define AMPDU_ACTION_ENTRY __field(enum ieee80211_ampdu_mlme_action, \ 101 ieee80211_ampdu_mlme_action) \ 102 STA_ENTRY \ 103 __field(u16, tid) \ 104 __field(u16, ssn) \ 105 __field(u16, buf_size) \ 106 __field(bool, amsdu) \ 107 __field(u16, timeout) \ 108 __field(u16, action) 109 #define AMPDU_ACTION_ASSIGN STA_NAMED_ASSIGN(params->sta); \ 110 __entry->tid = params->tid; \ 111 __entry->ssn = params->ssn; \ 112 __entry->buf_size = params->buf_size; \ 113 __entry->amsdu = params->amsdu; \ 114 __entry->timeout = params->timeout; \ 115 __entry->action = params->action; 116 #define AMPDU_ACTION_PR_FMT STA_PR_FMT " tid %d, ssn %d, buf_size %u, amsdu %d, timeout %d action %d" 117 #define AMPDU_ACTION_PR_ARG STA_PR_ARG, __entry->tid, __entry->ssn, \ 118 __entry->buf_size, __entry->amsdu, __entry->timeout, \ 119 __entry->action 120 121 /* 122 * Tracing for driver callbacks. 123 */ 124 125 DECLARE_EVENT_CLASS(local_only_evt, 126 TP_PROTO(struct ieee80211_local *local), 127 TP_ARGS(local), 128 TP_STRUCT__entry( 129 LOCAL_ENTRY 130 ), 131 TP_fast_assign( 132 LOCAL_ASSIGN; 133 ), 134 TP_printk(LOCAL_PR_FMT, LOCAL_PR_ARG) 135 ); 136 137 DECLARE_EVENT_CLASS(local_sdata_addr_evt, 138 TP_PROTO(struct ieee80211_local *local, 139 struct ieee80211_sub_if_data *sdata), 140 TP_ARGS(local, sdata), 141 142 TP_STRUCT__entry( 143 LOCAL_ENTRY 144 VIF_ENTRY 145 __array(char, addr, ETH_ALEN) 146 ), 147 148 TP_fast_assign( 149 LOCAL_ASSIGN; 150 VIF_ASSIGN; 151 memcpy(__entry->addr, sdata->vif.addr, ETH_ALEN); 152 ), 153 154 TP_printk( 155 LOCAL_PR_FMT VIF_PR_FMT " addr:%pM", 156 LOCAL_PR_ARG, VIF_PR_ARG, __entry->addr 157 ) 158 ); 159 160 DECLARE_EVENT_CLASS(local_u32_evt, 161 TP_PROTO(struct ieee80211_local *local, u32 value), 162 TP_ARGS(local, value), 163 164 TP_STRUCT__entry( 165 LOCAL_ENTRY 166 __field(u32, value) 167 ), 168 169 TP_fast_assign( 170 LOCAL_ASSIGN; 171 __entry->value = value; 172 ), 173 174 TP_printk( 175 LOCAL_PR_FMT " value:%d", 176 LOCAL_PR_ARG, __entry->value 177 ) 178 ); 179 180 DECLARE_EVENT_CLASS(local_sdata_evt, 181 TP_PROTO(struct ieee80211_local *local, 182 struct ieee80211_sub_if_data *sdata), 183 TP_ARGS(local, sdata), 184 185 TP_STRUCT__entry( 186 LOCAL_ENTRY 187 VIF_ENTRY 188 ), 189 190 TP_fast_assign( 191 LOCAL_ASSIGN; 192 VIF_ASSIGN; 193 ), 194 195 TP_printk( 196 LOCAL_PR_FMT VIF_PR_FMT, 197 LOCAL_PR_ARG, VIF_PR_ARG 198 ) 199 ); 200 201 DEFINE_EVENT(local_only_evt, drv_return_void, 202 TP_PROTO(struct ieee80211_local *local), 203 TP_ARGS(local) 204 ); 205 206 TRACE_EVENT(drv_return_int, 207 TP_PROTO(struct ieee80211_local *local, int ret), 208 TP_ARGS(local, ret), 209 TP_STRUCT__entry( 210 LOCAL_ENTRY 211 __field(int, ret) 212 ), 213 TP_fast_assign( 214 LOCAL_ASSIGN; 215 __entry->ret = ret; 216 ), 217 TP_printk(LOCAL_PR_FMT " - %d", LOCAL_PR_ARG, __entry->ret) 218 ); 219 220 TRACE_EVENT(drv_return_bool, 221 TP_PROTO(struct ieee80211_local *local, bool ret), 222 TP_ARGS(local, ret), 223 TP_STRUCT__entry( 224 LOCAL_ENTRY 225 __field(bool, ret) 226 ), 227 TP_fast_assign( 228 LOCAL_ASSIGN; 229 __entry->ret = ret; 230 ), 231 TP_printk(LOCAL_PR_FMT " - %s", LOCAL_PR_ARG, (__entry->ret) ? 232 "true" : "false") 233 ); 234 235 TRACE_EVENT(drv_return_u32, 236 TP_PROTO(struct ieee80211_local *local, u32 ret), 237 TP_ARGS(local, ret), 238 TP_STRUCT__entry( 239 LOCAL_ENTRY 240 __field(u32, ret) 241 ), 242 TP_fast_assign( 243 LOCAL_ASSIGN; 244 __entry->ret = ret; 245 ), 246 TP_printk(LOCAL_PR_FMT " - %u", LOCAL_PR_ARG, __entry->ret) 247 ); 248 249 TRACE_EVENT(drv_return_u64, 250 TP_PROTO(struct ieee80211_local *local, u64 ret), 251 TP_ARGS(local, ret), 252 TP_STRUCT__entry( 253 LOCAL_ENTRY 254 __field(u64, ret) 255 ), 256 TP_fast_assign( 257 LOCAL_ASSIGN; 258 __entry->ret = ret; 259 ), 260 TP_printk(LOCAL_PR_FMT " - %llu", LOCAL_PR_ARG, __entry->ret) 261 ); 262 263 DEFINE_EVENT(local_only_evt, drv_start, 264 TP_PROTO(struct ieee80211_local *local), 265 TP_ARGS(local) 266 ); 267 268 DEFINE_EVENT(local_u32_evt, drv_get_et_strings, 269 TP_PROTO(struct ieee80211_local *local, u32 sset), 270 TP_ARGS(local, sset) 271 ); 272 273 DEFINE_EVENT(local_u32_evt, drv_get_et_sset_count, 274 TP_PROTO(struct ieee80211_local *local, u32 sset), 275 TP_ARGS(local, sset) 276 ); 277 278 DEFINE_EVENT(local_only_evt, drv_get_et_stats, 279 TP_PROTO(struct ieee80211_local *local), 280 TP_ARGS(local) 281 ); 282 283 DEFINE_EVENT(local_only_evt, drv_suspend, 284 TP_PROTO(struct ieee80211_local *local), 285 TP_ARGS(local) 286 ); 287 288 DEFINE_EVENT(local_only_evt, drv_resume, 289 TP_PROTO(struct ieee80211_local *local), 290 TP_ARGS(local) 291 ); 292 293 TRACE_EVENT(drv_set_wakeup, 294 TP_PROTO(struct ieee80211_local *local, bool enabled), 295 TP_ARGS(local, enabled), 296 TP_STRUCT__entry( 297 LOCAL_ENTRY 298 __field(bool, enabled) 299 ), 300 TP_fast_assign( 301 LOCAL_ASSIGN; 302 __entry->enabled = enabled; 303 ), 304 TP_printk(LOCAL_PR_FMT " enabled:%d", LOCAL_PR_ARG, __entry->enabled) 305 ); 306 307 DEFINE_EVENT(local_only_evt, drv_stop, 308 TP_PROTO(struct ieee80211_local *local), 309 TP_ARGS(local) 310 ); 311 312 DEFINE_EVENT(local_sdata_addr_evt, drv_add_interface, 313 TP_PROTO(struct ieee80211_local *local, 314 struct ieee80211_sub_if_data *sdata), 315 TP_ARGS(local, sdata) 316 ); 317 318 TRACE_EVENT(drv_change_interface, 319 TP_PROTO(struct ieee80211_local *local, 320 struct ieee80211_sub_if_data *sdata, 321 enum nl80211_iftype type, bool p2p), 322 323 TP_ARGS(local, sdata, type, p2p), 324 325 TP_STRUCT__entry( 326 LOCAL_ENTRY 327 VIF_ENTRY 328 __field(u32, new_type) 329 __field(bool, new_p2p) 330 ), 331 332 TP_fast_assign( 333 LOCAL_ASSIGN; 334 VIF_ASSIGN; 335 __entry->new_type = type; 336 __entry->new_p2p = p2p; 337 ), 338 339 TP_printk( 340 LOCAL_PR_FMT VIF_PR_FMT " new type:%d%s", 341 LOCAL_PR_ARG, VIF_PR_ARG, __entry->new_type, 342 __entry->new_p2p ? "/p2p" : "" 343 ) 344 ); 345 346 DEFINE_EVENT(local_sdata_addr_evt, drv_remove_interface, 347 TP_PROTO(struct ieee80211_local *local, 348 struct ieee80211_sub_if_data *sdata), 349 TP_ARGS(local, sdata) 350 ); 351 352 TRACE_EVENT(drv_config, 353 TP_PROTO(struct ieee80211_local *local, 354 u32 changed), 355 356 TP_ARGS(local, changed), 357 358 TP_STRUCT__entry( 359 LOCAL_ENTRY 360 __field(u32, changed) 361 __field(u32, flags) 362 __field(int, power_level) 363 __field(int, dynamic_ps_timeout) 364 __field(u16, listen_interval) 365 __field(u8, long_frame_max_tx_count) 366 __field(u8, short_frame_max_tx_count) 367 CHANDEF_ENTRY 368 __field(int, smps) 369 ), 370 371 TP_fast_assign( 372 LOCAL_ASSIGN; 373 __entry->changed = changed; 374 __entry->flags = local->hw.conf.flags; 375 __entry->power_level = local->hw.conf.power_level; 376 __entry->dynamic_ps_timeout = local->hw.conf.dynamic_ps_timeout; 377 __entry->listen_interval = local->hw.conf.listen_interval; 378 __entry->long_frame_max_tx_count = 379 local->hw.conf.long_frame_max_tx_count; 380 __entry->short_frame_max_tx_count = 381 local->hw.conf.short_frame_max_tx_count; 382 CHANDEF_ASSIGN(&local->hw.conf.chandef) 383 __entry->smps = local->hw.conf.smps_mode; 384 ), 385 386 TP_printk( 387 LOCAL_PR_FMT " ch:%#x" CHANDEF_PR_FMT, 388 LOCAL_PR_ARG, __entry->changed, CHANDEF_PR_ARG 389 ) 390 ); 391 392 TRACE_EVENT(drv_bss_info_changed, 393 TP_PROTO(struct ieee80211_local *local, 394 struct ieee80211_sub_if_data *sdata, 395 struct ieee80211_bss_conf *info, 396 u32 changed), 397 398 TP_ARGS(local, sdata, info, changed), 399 400 TP_STRUCT__entry( 401 LOCAL_ENTRY 402 VIF_ENTRY 403 __field(u32, changed) 404 __field(bool, assoc) 405 __field(bool, ibss_joined) 406 __field(bool, ibss_creator) 407 __field(u16, aid) 408 __field(bool, cts) 409 __field(bool, shortpre) 410 __field(bool, shortslot) 411 __field(bool, enable_beacon) 412 __field(u8, dtimper) 413 __field(u16, bcnint) 414 __field(u16, assoc_cap) 415 __field(u64, sync_tsf) 416 __field(u32, sync_device_ts) 417 __field(u8, sync_dtim_count) 418 __field(u32, basic_rates) 419 __array(int, mcast_rate, NUM_NL80211_BANDS) 420 __field(u16, ht_operation_mode) 421 __field(s32, cqm_rssi_thold) 422 __field(s32, cqm_rssi_hyst) 423 __field(u32, channel_width) 424 __field(u32, channel_cfreq1) 425 __field(u32, channel_cfreq1_offset) 426 __dynamic_array(u32, arp_addr_list, 427 info->arp_addr_cnt > IEEE80211_BSS_ARP_ADDR_LIST_LEN ? 428 IEEE80211_BSS_ARP_ADDR_LIST_LEN : 429 info->arp_addr_cnt) 430 __field(int, arp_addr_cnt) 431 __field(bool, qos) 432 __field(bool, idle) 433 __field(bool, ps) 434 __dynamic_array(u8, ssid, info->ssid_len) 435 __field(bool, hidden_ssid) 436 __field(int, txpower) 437 __field(u8, p2p_oppps_ctwindow) 438 ), 439 440 TP_fast_assign( 441 LOCAL_ASSIGN; 442 VIF_ASSIGN; 443 __entry->changed = changed; 444 __entry->aid = info->aid; 445 __entry->assoc = info->assoc; 446 __entry->ibss_joined = info->ibss_joined; 447 __entry->ibss_creator = info->ibss_creator; 448 __entry->shortpre = info->use_short_preamble; 449 __entry->cts = info->use_cts_prot; 450 __entry->shortslot = info->use_short_slot; 451 __entry->enable_beacon = info->enable_beacon; 452 __entry->dtimper = info->dtim_period; 453 __entry->bcnint = info->beacon_int; 454 __entry->assoc_cap = info->assoc_capability; 455 __entry->sync_tsf = info->sync_tsf; 456 __entry->sync_device_ts = info->sync_device_ts; 457 __entry->sync_dtim_count = info->sync_dtim_count; 458 __entry->basic_rates = info->basic_rates; 459 memcpy(__entry->mcast_rate, info->mcast_rate, 460 sizeof(__entry->mcast_rate)); 461 __entry->ht_operation_mode = info->ht_operation_mode; 462 __entry->cqm_rssi_thold = info->cqm_rssi_thold; 463 __entry->cqm_rssi_hyst = info->cqm_rssi_hyst; 464 __entry->channel_width = info->chandef.width; 465 __entry->channel_cfreq1 = info->chandef.center_freq1; 466 __entry->channel_cfreq1_offset = info->chandef.freq1_offset; 467 __entry->arp_addr_cnt = info->arp_addr_cnt; 468 memcpy(__get_dynamic_array(arp_addr_list), info->arp_addr_list, 469 sizeof(u32) * (info->arp_addr_cnt > IEEE80211_BSS_ARP_ADDR_LIST_LEN ? 470 IEEE80211_BSS_ARP_ADDR_LIST_LEN : 471 info->arp_addr_cnt)); 472 __entry->qos = info->qos; 473 __entry->idle = info->idle; 474 __entry->ps = info->ps; 475 memcpy(__get_dynamic_array(ssid), info->ssid, info->ssid_len); 476 __entry->hidden_ssid = info->hidden_ssid; 477 __entry->txpower = info->txpower; 478 __entry->p2p_oppps_ctwindow = info->p2p_noa_attr.oppps_ctwindow; 479 ), 480 481 TP_printk( 482 LOCAL_PR_FMT VIF_PR_FMT " changed:%#x", 483 LOCAL_PR_ARG, VIF_PR_ARG, __entry->changed 484 ) 485 ); 486 487 TRACE_EVENT(drv_prepare_multicast, 488 TP_PROTO(struct ieee80211_local *local, int mc_count), 489 490 TP_ARGS(local, mc_count), 491 492 TP_STRUCT__entry( 493 LOCAL_ENTRY 494 __field(int, mc_count) 495 ), 496 497 TP_fast_assign( 498 LOCAL_ASSIGN; 499 __entry->mc_count = mc_count; 500 ), 501 502 TP_printk( 503 LOCAL_PR_FMT " prepare mc (%d)", 504 LOCAL_PR_ARG, __entry->mc_count 505 ) 506 ); 507 508 TRACE_EVENT(drv_configure_filter, 509 TP_PROTO(struct ieee80211_local *local, 510 unsigned int changed_flags, 511 unsigned int *total_flags, 512 u64 multicast), 513 514 TP_ARGS(local, changed_flags, total_flags, multicast), 515 516 TP_STRUCT__entry( 517 LOCAL_ENTRY 518 __field(unsigned int, changed) 519 __field(unsigned int, total) 520 __field(u64, multicast) 521 ), 522 523 TP_fast_assign( 524 LOCAL_ASSIGN; 525 __entry->changed = changed_flags; 526 __entry->total = *total_flags; 527 __entry->multicast = multicast; 528 ), 529 530 TP_printk( 531 LOCAL_PR_FMT " changed:%#x total:%#x", 532 LOCAL_PR_ARG, __entry->changed, __entry->total 533 ) 534 ); 535 536 TRACE_EVENT(drv_config_iface_filter, 537 TP_PROTO(struct ieee80211_local *local, 538 struct ieee80211_sub_if_data *sdata, 539 unsigned int filter_flags, 540 unsigned int changed_flags), 541 542 TP_ARGS(local, sdata, filter_flags, changed_flags), 543 544 TP_STRUCT__entry( 545 LOCAL_ENTRY 546 VIF_ENTRY 547 __field(unsigned int, filter_flags) 548 __field(unsigned int, changed_flags) 549 ), 550 551 TP_fast_assign( 552 LOCAL_ASSIGN; 553 VIF_ASSIGN; 554 __entry->filter_flags = filter_flags; 555 __entry->changed_flags = changed_flags; 556 ), 557 558 TP_printk( 559 LOCAL_PR_FMT VIF_PR_FMT 560 " filter_flags: %#x changed_flags: %#x", 561 LOCAL_PR_ARG, VIF_PR_ARG, __entry->filter_flags, 562 __entry->changed_flags 563 ) 564 ); 565 566 TRACE_EVENT(drv_set_tim, 567 TP_PROTO(struct ieee80211_local *local, 568 struct ieee80211_sta *sta, bool set), 569 570 TP_ARGS(local, sta, set), 571 572 TP_STRUCT__entry( 573 LOCAL_ENTRY 574 STA_ENTRY 575 __field(bool, set) 576 ), 577 578 TP_fast_assign( 579 LOCAL_ASSIGN; 580 STA_ASSIGN; 581 __entry->set = set; 582 ), 583 584 TP_printk( 585 LOCAL_PR_FMT STA_PR_FMT " set:%d", 586 LOCAL_PR_ARG, STA_PR_ARG, __entry->set 587 ) 588 ); 589 590 TRACE_EVENT(drv_set_key, 591 TP_PROTO(struct ieee80211_local *local, 592 enum set_key_cmd cmd, struct ieee80211_sub_if_data *sdata, 593 struct ieee80211_sta *sta, 594 struct ieee80211_key_conf *key), 595 596 TP_ARGS(local, cmd, sdata, sta, key), 597 598 TP_STRUCT__entry( 599 LOCAL_ENTRY 600 VIF_ENTRY 601 STA_ENTRY 602 KEY_ENTRY 603 ), 604 605 TP_fast_assign( 606 LOCAL_ASSIGN; 607 VIF_ASSIGN; 608 STA_ASSIGN; 609 KEY_ASSIGN(key); 610 ), 611 612 TP_printk( 613 LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT KEY_PR_FMT, 614 LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG, KEY_PR_ARG 615 ) 616 ); 617 618 TRACE_EVENT(drv_update_tkip_key, 619 TP_PROTO(struct ieee80211_local *local, 620 struct ieee80211_sub_if_data *sdata, 621 struct ieee80211_key_conf *conf, 622 struct ieee80211_sta *sta, u32 iv32), 623 624 TP_ARGS(local, sdata, conf, sta, iv32), 625 626 TP_STRUCT__entry( 627 LOCAL_ENTRY 628 VIF_ENTRY 629 STA_ENTRY 630 __field(u32, iv32) 631 ), 632 633 TP_fast_assign( 634 LOCAL_ASSIGN; 635 VIF_ASSIGN; 636 STA_ASSIGN; 637 __entry->iv32 = iv32; 638 ), 639 640 TP_printk( 641 LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT " iv32:%#x", 642 LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG, __entry->iv32 643 ) 644 ); 645 646 DEFINE_EVENT(local_sdata_evt, drv_hw_scan, 647 TP_PROTO(struct ieee80211_local *local, 648 struct ieee80211_sub_if_data *sdata), 649 TP_ARGS(local, sdata) 650 ); 651 652 DEFINE_EVENT(local_sdata_evt, drv_cancel_hw_scan, 653 TP_PROTO(struct ieee80211_local *local, 654 struct ieee80211_sub_if_data *sdata), 655 TP_ARGS(local, sdata) 656 ); 657 658 DEFINE_EVENT(local_sdata_evt, drv_sched_scan_start, 659 TP_PROTO(struct ieee80211_local *local, 660 struct ieee80211_sub_if_data *sdata), 661 TP_ARGS(local, sdata) 662 ); 663 664 DEFINE_EVENT(local_sdata_evt, drv_sched_scan_stop, 665 TP_PROTO(struct ieee80211_local *local, 666 struct ieee80211_sub_if_data *sdata), 667 TP_ARGS(local, sdata) 668 ); 669 670 TRACE_EVENT(drv_sw_scan_start, 671 TP_PROTO(struct ieee80211_local *local, 672 struct ieee80211_sub_if_data *sdata, 673 const u8 *mac_addr), 674 675 TP_ARGS(local, sdata, mac_addr), 676 677 TP_STRUCT__entry( 678 LOCAL_ENTRY 679 VIF_ENTRY 680 __array(char, mac_addr, ETH_ALEN) 681 ), 682 683 TP_fast_assign( 684 LOCAL_ASSIGN; 685 VIF_ASSIGN; 686 memcpy(__entry->mac_addr, mac_addr, ETH_ALEN); 687 ), 688 689 TP_printk(LOCAL_PR_FMT ", " VIF_PR_FMT ", addr:%pM", 690 LOCAL_PR_ARG, VIF_PR_ARG, __entry->mac_addr) 691 ); 692 693 DEFINE_EVENT(local_sdata_evt, drv_sw_scan_complete, 694 TP_PROTO(struct ieee80211_local *local, 695 struct ieee80211_sub_if_data *sdata), 696 TP_ARGS(local, sdata) 697 ); 698 699 TRACE_EVENT(drv_get_stats, 700 TP_PROTO(struct ieee80211_local *local, 701 struct ieee80211_low_level_stats *stats, 702 int ret), 703 704 TP_ARGS(local, stats, ret), 705 706 TP_STRUCT__entry( 707 LOCAL_ENTRY 708 __field(int, ret) 709 __field(unsigned int, ackfail) 710 __field(unsigned int, rtsfail) 711 __field(unsigned int, fcserr) 712 __field(unsigned int, rtssucc) 713 ), 714 715 TP_fast_assign( 716 LOCAL_ASSIGN; 717 __entry->ret = ret; 718 __entry->ackfail = stats->dot11ACKFailureCount; 719 __entry->rtsfail = stats->dot11RTSFailureCount; 720 __entry->fcserr = stats->dot11FCSErrorCount; 721 __entry->rtssucc = stats->dot11RTSSuccessCount; 722 ), 723 724 TP_printk( 725 LOCAL_PR_FMT " ret:%d", 726 LOCAL_PR_ARG, __entry->ret 727 ) 728 ); 729 730 TRACE_EVENT(drv_get_key_seq, 731 TP_PROTO(struct ieee80211_local *local, 732 struct ieee80211_key_conf *key), 733 734 TP_ARGS(local, key), 735 736 TP_STRUCT__entry( 737 LOCAL_ENTRY 738 KEY_ENTRY 739 ), 740 741 TP_fast_assign( 742 LOCAL_ASSIGN; 743 KEY_ASSIGN(key); 744 ), 745 746 TP_printk( 747 LOCAL_PR_FMT KEY_PR_FMT, 748 LOCAL_PR_ARG, KEY_PR_ARG 749 ) 750 ); 751 752 DEFINE_EVENT(local_u32_evt, drv_set_frag_threshold, 753 TP_PROTO(struct ieee80211_local *local, u32 value), 754 TP_ARGS(local, value) 755 ); 756 757 DEFINE_EVENT(local_u32_evt, drv_set_rts_threshold, 758 TP_PROTO(struct ieee80211_local *local, u32 value), 759 TP_ARGS(local, value) 760 ); 761 762 TRACE_EVENT(drv_set_coverage_class, 763 TP_PROTO(struct ieee80211_local *local, s16 value), 764 765 TP_ARGS(local, value), 766 767 TP_STRUCT__entry( 768 LOCAL_ENTRY 769 __field(s16, value) 770 ), 771 772 TP_fast_assign( 773 LOCAL_ASSIGN; 774 __entry->value = value; 775 ), 776 777 TP_printk( 778 LOCAL_PR_FMT " value:%d", 779 LOCAL_PR_ARG, __entry->value 780 ) 781 ); 782 783 TRACE_EVENT(drv_sta_notify, 784 TP_PROTO(struct ieee80211_local *local, 785 struct ieee80211_sub_if_data *sdata, 786 enum sta_notify_cmd cmd, 787 struct ieee80211_sta *sta), 788 789 TP_ARGS(local, sdata, cmd, sta), 790 791 TP_STRUCT__entry( 792 LOCAL_ENTRY 793 VIF_ENTRY 794 STA_ENTRY 795 __field(u32, cmd) 796 ), 797 798 TP_fast_assign( 799 LOCAL_ASSIGN; 800 VIF_ASSIGN; 801 STA_ASSIGN; 802 __entry->cmd = cmd; 803 ), 804 805 TP_printk( 806 LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT " cmd:%d", 807 LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG, __entry->cmd 808 ) 809 ); 810 811 TRACE_EVENT(drv_sta_state, 812 TP_PROTO(struct ieee80211_local *local, 813 struct ieee80211_sub_if_data *sdata, 814 struct ieee80211_sta *sta, 815 enum ieee80211_sta_state old_state, 816 enum ieee80211_sta_state new_state), 817 818 TP_ARGS(local, sdata, sta, old_state, new_state), 819 820 TP_STRUCT__entry( 821 LOCAL_ENTRY 822 VIF_ENTRY 823 STA_ENTRY 824 __field(u32, old_state) 825 __field(u32, new_state) 826 ), 827 828 TP_fast_assign( 829 LOCAL_ASSIGN; 830 VIF_ASSIGN; 831 STA_ASSIGN; 832 __entry->old_state = old_state; 833 __entry->new_state = new_state; 834 ), 835 836 TP_printk( 837 LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT " state: %d->%d", 838 LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG, 839 __entry->old_state, __entry->new_state 840 ) 841 ); 842 843 TRACE_EVENT(drv_sta_set_txpwr, 844 TP_PROTO(struct ieee80211_local *local, 845 struct ieee80211_sub_if_data *sdata, 846 struct ieee80211_sta *sta), 847 848 TP_ARGS(local, sdata, sta), 849 850 TP_STRUCT__entry( 851 LOCAL_ENTRY 852 VIF_ENTRY 853 STA_ENTRY 854 __field(s16, txpwr) 855 __field(u8, type) 856 ), 857 858 TP_fast_assign( 859 LOCAL_ASSIGN; 860 VIF_ASSIGN; 861 STA_ASSIGN; 862 __entry->txpwr = sta->txpwr.power; 863 __entry->type = sta->txpwr.type; 864 ), 865 866 TP_printk( 867 LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT " txpwr: %d type %d", 868 LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG, 869 __entry->txpwr, __entry->type 870 ) 871 ); 872 873 TRACE_EVENT(drv_sta_rc_update, 874 TP_PROTO(struct ieee80211_local *local, 875 struct ieee80211_sub_if_data *sdata, 876 struct ieee80211_sta *sta, 877 u32 changed), 878 879 TP_ARGS(local, sdata, sta, changed), 880 881 TP_STRUCT__entry( 882 LOCAL_ENTRY 883 VIF_ENTRY 884 STA_ENTRY 885 __field(u32, changed) 886 ), 887 888 TP_fast_assign( 889 LOCAL_ASSIGN; 890 VIF_ASSIGN; 891 STA_ASSIGN; 892 __entry->changed = changed; 893 ), 894 895 TP_printk( 896 LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT " changed: 0x%x", 897 LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG, __entry->changed 898 ) 899 ); 900 901 DECLARE_EVENT_CLASS(sta_event, 902 TP_PROTO(struct ieee80211_local *local, 903 struct ieee80211_sub_if_data *sdata, 904 struct ieee80211_sta *sta), 905 906 TP_ARGS(local, sdata, sta), 907 908 TP_STRUCT__entry( 909 LOCAL_ENTRY 910 VIF_ENTRY 911 STA_ENTRY 912 ), 913 914 TP_fast_assign( 915 LOCAL_ASSIGN; 916 VIF_ASSIGN; 917 STA_ASSIGN; 918 ), 919 920 TP_printk( 921 LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT, 922 LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG 923 ) 924 ); 925 926 DEFINE_EVENT(sta_event, drv_sta_statistics, 927 TP_PROTO(struct ieee80211_local *local, 928 struct ieee80211_sub_if_data *sdata, 929 struct ieee80211_sta *sta), 930 TP_ARGS(local, sdata, sta) 931 ); 932 933 DEFINE_EVENT(sta_event, drv_sta_add, 934 TP_PROTO(struct ieee80211_local *local, 935 struct ieee80211_sub_if_data *sdata, 936 struct ieee80211_sta *sta), 937 TP_ARGS(local, sdata, sta) 938 ); 939 940 DEFINE_EVENT(sta_event, drv_sta_remove, 941 TP_PROTO(struct ieee80211_local *local, 942 struct ieee80211_sub_if_data *sdata, 943 struct ieee80211_sta *sta), 944 TP_ARGS(local, sdata, sta) 945 ); 946 947 DEFINE_EVENT(sta_event, drv_sta_pre_rcu_remove, 948 TP_PROTO(struct ieee80211_local *local, 949 struct ieee80211_sub_if_data *sdata, 950 struct ieee80211_sta *sta), 951 TP_ARGS(local, sdata, sta) 952 ); 953 954 DEFINE_EVENT(sta_event, drv_sync_rx_queues, 955 TP_PROTO(struct ieee80211_local *local, 956 struct ieee80211_sub_if_data *sdata, 957 struct ieee80211_sta *sta), 958 TP_ARGS(local, sdata, sta) 959 ); 960 961 DEFINE_EVENT(sta_event, drv_sta_rate_tbl_update, 962 TP_PROTO(struct ieee80211_local *local, 963 struct ieee80211_sub_if_data *sdata, 964 struct ieee80211_sta *sta), 965 TP_ARGS(local, sdata, sta) 966 ); 967 968 TRACE_EVENT(drv_conf_tx, 969 TP_PROTO(struct ieee80211_local *local, 970 struct ieee80211_sub_if_data *sdata, 971 u16 ac, const struct ieee80211_tx_queue_params *params), 972 973 TP_ARGS(local, sdata, ac, params), 974 975 TP_STRUCT__entry( 976 LOCAL_ENTRY 977 VIF_ENTRY 978 __field(u16, ac) 979 __field(u16, txop) 980 __field(u16, cw_min) 981 __field(u16, cw_max) 982 __field(u8, aifs) 983 __field(bool, uapsd) 984 ), 985 986 TP_fast_assign( 987 LOCAL_ASSIGN; 988 VIF_ASSIGN; 989 __entry->ac = ac; 990 __entry->txop = params->txop; 991 __entry->cw_max = params->cw_max; 992 __entry->cw_min = params->cw_min; 993 __entry->aifs = params->aifs; 994 __entry->uapsd = params->uapsd; 995 ), 996 997 TP_printk( 998 LOCAL_PR_FMT VIF_PR_FMT " AC:%d", 999 LOCAL_PR_ARG, VIF_PR_ARG, __entry->ac 1000 ) 1001 ); 1002 1003 DEFINE_EVENT(local_sdata_evt, drv_get_tsf, 1004 TP_PROTO(struct ieee80211_local *local, 1005 struct ieee80211_sub_if_data *sdata), 1006 TP_ARGS(local, sdata) 1007 ); 1008 1009 TRACE_EVENT(drv_set_tsf, 1010 TP_PROTO(struct ieee80211_local *local, 1011 struct ieee80211_sub_if_data *sdata, 1012 u64 tsf), 1013 1014 TP_ARGS(local, sdata, tsf), 1015 1016 TP_STRUCT__entry( 1017 LOCAL_ENTRY 1018 VIF_ENTRY 1019 __field(u64, tsf) 1020 ), 1021 1022 TP_fast_assign( 1023 LOCAL_ASSIGN; 1024 VIF_ASSIGN; 1025 __entry->tsf = tsf; 1026 ), 1027 1028 TP_printk( 1029 LOCAL_PR_FMT VIF_PR_FMT " tsf:%llu", 1030 LOCAL_PR_ARG, VIF_PR_ARG, (unsigned long long)__entry->tsf 1031 ) 1032 ); 1033 1034 TRACE_EVENT(drv_offset_tsf, 1035 TP_PROTO(struct ieee80211_local *local, 1036 struct ieee80211_sub_if_data *sdata, 1037 s64 offset), 1038 1039 TP_ARGS(local, sdata, offset), 1040 1041 TP_STRUCT__entry( 1042 LOCAL_ENTRY 1043 VIF_ENTRY 1044 __field(s64, tsf_offset) 1045 ), 1046 1047 TP_fast_assign( 1048 LOCAL_ASSIGN; 1049 VIF_ASSIGN; 1050 __entry->tsf_offset = offset; 1051 ), 1052 1053 TP_printk( 1054 LOCAL_PR_FMT VIF_PR_FMT " tsf offset:%lld", 1055 LOCAL_PR_ARG, VIF_PR_ARG, 1056 (unsigned long long)__entry->tsf_offset 1057 ) 1058 ); 1059 1060 DEFINE_EVENT(local_sdata_evt, drv_reset_tsf, 1061 TP_PROTO(struct ieee80211_local *local, 1062 struct ieee80211_sub_if_data *sdata), 1063 TP_ARGS(local, sdata) 1064 ); 1065 1066 DEFINE_EVENT(local_only_evt, drv_tx_last_beacon, 1067 TP_PROTO(struct ieee80211_local *local), 1068 TP_ARGS(local) 1069 ); 1070 1071 TRACE_EVENT(drv_ampdu_action, 1072 TP_PROTO(struct ieee80211_local *local, 1073 struct ieee80211_sub_if_data *sdata, 1074 struct ieee80211_ampdu_params *params), 1075 1076 TP_ARGS(local, sdata, params), 1077 1078 TP_STRUCT__entry( 1079 LOCAL_ENTRY 1080 VIF_ENTRY 1081 AMPDU_ACTION_ENTRY 1082 ), 1083 1084 TP_fast_assign( 1085 LOCAL_ASSIGN; 1086 VIF_ASSIGN; 1087 AMPDU_ACTION_ASSIGN; 1088 ), 1089 1090 TP_printk( 1091 LOCAL_PR_FMT VIF_PR_FMT AMPDU_ACTION_PR_FMT, 1092 LOCAL_PR_ARG, VIF_PR_ARG, AMPDU_ACTION_PR_ARG 1093 ) 1094 ); 1095 1096 TRACE_EVENT(drv_get_survey, 1097 TP_PROTO(struct ieee80211_local *local, int _idx, 1098 struct survey_info *survey), 1099 1100 TP_ARGS(local, _idx, survey), 1101 1102 TP_STRUCT__entry( 1103 LOCAL_ENTRY 1104 __field(int, idx) 1105 ), 1106 1107 TP_fast_assign( 1108 LOCAL_ASSIGN; 1109 __entry->idx = _idx; 1110 ), 1111 1112 TP_printk( 1113 LOCAL_PR_FMT " idx:%d", 1114 LOCAL_PR_ARG, __entry->idx 1115 ) 1116 ); 1117 1118 TRACE_EVENT(drv_flush, 1119 TP_PROTO(struct ieee80211_local *local, 1120 u32 queues, bool drop), 1121 1122 TP_ARGS(local, queues, drop), 1123 1124 TP_STRUCT__entry( 1125 LOCAL_ENTRY 1126 __field(bool, drop) 1127 __field(u32, queues) 1128 ), 1129 1130 TP_fast_assign( 1131 LOCAL_ASSIGN; 1132 __entry->drop = drop; 1133 __entry->queues = queues; 1134 ), 1135 1136 TP_printk( 1137 LOCAL_PR_FMT " queues:0x%x drop:%d", 1138 LOCAL_PR_ARG, __entry->queues, __entry->drop 1139 ) 1140 ); 1141 1142 TRACE_EVENT(drv_channel_switch, 1143 TP_PROTO(struct ieee80211_local *local, 1144 struct ieee80211_sub_if_data *sdata, 1145 struct ieee80211_channel_switch *ch_switch), 1146 1147 TP_ARGS(local, sdata, ch_switch), 1148 1149 TP_STRUCT__entry( 1150 LOCAL_ENTRY 1151 VIF_ENTRY 1152 CHANDEF_ENTRY 1153 __field(u64, timestamp) 1154 __field(u32, device_timestamp) 1155 __field(bool, block_tx) 1156 __field(u8, count) 1157 ), 1158 1159 TP_fast_assign( 1160 LOCAL_ASSIGN; 1161 VIF_ASSIGN; 1162 CHANDEF_ASSIGN(&ch_switch->chandef) 1163 __entry->timestamp = ch_switch->timestamp; 1164 __entry->device_timestamp = ch_switch->device_timestamp; 1165 __entry->block_tx = ch_switch->block_tx; 1166 __entry->count = ch_switch->count; 1167 ), 1168 1169 TP_printk( 1170 LOCAL_PR_FMT VIF_PR_FMT " new " CHANDEF_PR_FMT " count:%d", 1171 LOCAL_PR_ARG, VIF_PR_ARG, CHANDEF_PR_ARG, __entry->count 1172 ) 1173 ); 1174 1175 TRACE_EVENT(drv_set_antenna, 1176 TP_PROTO(struct ieee80211_local *local, u32 tx_ant, u32 rx_ant, int ret), 1177 1178 TP_ARGS(local, tx_ant, rx_ant, ret), 1179 1180 TP_STRUCT__entry( 1181 LOCAL_ENTRY 1182 __field(u32, tx_ant) 1183 __field(u32, rx_ant) 1184 __field(int, ret) 1185 ), 1186 1187 TP_fast_assign( 1188 LOCAL_ASSIGN; 1189 __entry->tx_ant = tx_ant; 1190 __entry->rx_ant = rx_ant; 1191 __entry->ret = ret; 1192 ), 1193 1194 TP_printk( 1195 LOCAL_PR_FMT " tx_ant:%d rx_ant:%d ret:%d", 1196 LOCAL_PR_ARG, __entry->tx_ant, __entry->rx_ant, __entry->ret 1197 ) 1198 ); 1199 1200 TRACE_EVENT(drv_get_antenna, 1201 TP_PROTO(struct ieee80211_local *local, u32 tx_ant, u32 rx_ant, int ret), 1202 1203 TP_ARGS(local, tx_ant, rx_ant, ret), 1204 1205 TP_STRUCT__entry( 1206 LOCAL_ENTRY 1207 __field(u32, tx_ant) 1208 __field(u32, rx_ant) 1209 __field(int, ret) 1210 ), 1211 1212 TP_fast_assign( 1213 LOCAL_ASSIGN; 1214 __entry->tx_ant = tx_ant; 1215 __entry->rx_ant = rx_ant; 1216 __entry->ret = ret; 1217 ), 1218 1219 TP_printk( 1220 LOCAL_PR_FMT " tx_ant:%d rx_ant:%d ret:%d", 1221 LOCAL_PR_ARG, __entry->tx_ant, __entry->rx_ant, __entry->ret 1222 ) 1223 ); 1224 1225 TRACE_EVENT(drv_remain_on_channel, 1226 TP_PROTO(struct ieee80211_local *local, 1227 struct ieee80211_sub_if_data *sdata, 1228 struct ieee80211_channel *chan, 1229 unsigned int duration, 1230 enum ieee80211_roc_type type), 1231 1232 TP_ARGS(local, sdata, chan, duration, type), 1233 1234 TP_STRUCT__entry( 1235 LOCAL_ENTRY 1236 VIF_ENTRY 1237 __field(int, center_freq) 1238 __field(int, freq_offset) 1239 __field(unsigned int, duration) 1240 __field(u32, type) 1241 ), 1242 1243 TP_fast_assign( 1244 LOCAL_ASSIGN; 1245 VIF_ASSIGN; 1246 __entry->center_freq = chan->center_freq; 1247 __entry->freq_offset = chan->freq_offset; 1248 __entry->duration = duration; 1249 __entry->type = type; 1250 ), 1251 1252 TP_printk( 1253 LOCAL_PR_FMT VIF_PR_FMT " freq:%d.%03dMHz duration:%dms type=%d", 1254 LOCAL_PR_ARG, VIF_PR_ARG, 1255 __entry->center_freq, __entry->freq_offset, 1256 __entry->duration, __entry->type 1257 ) 1258 ); 1259 1260 DEFINE_EVENT(local_sdata_evt, drv_cancel_remain_on_channel, 1261 TP_PROTO(struct ieee80211_local *local, 1262 struct ieee80211_sub_if_data *sdata), 1263 TP_ARGS(local, sdata) 1264 ); 1265 1266 TRACE_EVENT(drv_set_ringparam, 1267 TP_PROTO(struct ieee80211_local *local, u32 tx, u32 rx), 1268 1269 TP_ARGS(local, tx, rx), 1270 1271 TP_STRUCT__entry( 1272 LOCAL_ENTRY 1273 __field(u32, tx) 1274 __field(u32, rx) 1275 ), 1276 1277 TP_fast_assign( 1278 LOCAL_ASSIGN; 1279 __entry->tx = tx; 1280 __entry->rx = rx; 1281 ), 1282 1283 TP_printk( 1284 LOCAL_PR_FMT " tx:%d rx %d", 1285 LOCAL_PR_ARG, __entry->tx, __entry->rx 1286 ) 1287 ); 1288 1289 TRACE_EVENT(drv_get_ringparam, 1290 TP_PROTO(struct ieee80211_local *local, u32 *tx, u32 *tx_max, 1291 u32 *rx, u32 *rx_max), 1292 1293 TP_ARGS(local, tx, tx_max, rx, rx_max), 1294 1295 TP_STRUCT__entry( 1296 LOCAL_ENTRY 1297 __field(u32, tx) 1298 __field(u32, tx_max) 1299 __field(u32, rx) 1300 __field(u32, rx_max) 1301 ), 1302 1303 TP_fast_assign( 1304 LOCAL_ASSIGN; 1305 __entry->tx = *tx; 1306 __entry->tx_max = *tx_max; 1307 __entry->rx = *rx; 1308 __entry->rx_max = *rx_max; 1309 ), 1310 1311 TP_printk( 1312 LOCAL_PR_FMT " tx:%d tx_max %d rx %d rx_max %d", 1313 LOCAL_PR_ARG, 1314 __entry->tx, __entry->tx_max, __entry->rx, __entry->rx_max 1315 ) 1316 ); 1317 1318 DEFINE_EVENT(local_only_evt, drv_tx_frames_pending, 1319 TP_PROTO(struct ieee80211_local *local), 1320 TP_ARGS(local) 1321 ); 1322 1323 DEFINE_EVENT(local_only_evt, drv_offchannel_tx_cancel_wait, 1324 TP_PROTO(struct ieee80211_local *local), 1325 TP_ARGS(local) 1326 ); 1327 1328 TRACE_EVENT(drv_set_bitrate_mask, 1329 TP_PROTO(struct ieee80211_local *local, 1330 struct ieee80211_sub_if_data *sdata, 1331 const struct cfg80211_bitrate_mask *mask), 1332 1333 TP_ARGS(local, sdata, mask), 1334 1335 TP_STRUCT__entry( 1336 LOCAL_ENTRY 1337 VIF_ENTRY 1338 __field(u32, legacy_2g) 1339 __field(u32, legacy_5g) 1340 ), 1341 1342 TP_fast_assign( 1343 LOCAL_ASSIGN; 1344 VIF_ASSIGN; 1345 __entry->legacy_2g = mask->control[NL80211_BAND_2GHZ].legacy; 1346 __entry->legacy_5g = mask->control[NL80211_BAND_5GHZ].legacy; 1347 ), 1348 1349 TP_printk( 1350 LOCAL_PR_FMT VIF_PR_FMT " 2G Mask:0x%x 5G Mask:0x%x", 1351 LOCAL_PR_ARG, VIF_PR_ARG, __entry->legacy_2g, __entry->legacy_5g 1352 ) 1353 ); 1354 1355 TRACE_EVENT(drv_set_rekey_data, 1356 TP_PROTO(struct ieee80211_local *local, 1357 struct ieee80211_sub_if_data *sdata, 1358 struct cfg80211_gtk_rekey_data *data), 1359 1360 TP_ARGS(local, sdata, data), 1361 1362 TP_STRUCT__entry( 1363 LOCAL_ENTRY 1364 VIF_ENTRY 1365 __array(u8, kek, NL80211_KEK_LEN) 1366 __array(u8, kck, NL80211_KCK_LEN) 1367 __array(u8, replay_ctr, NL80211_REPLAY_CTR_LEN) 1368 ), 1369 1370 TP_fast_assign( 1371 LOCAL_ASSIGN; 1372 VIF_ASSIGN; 1373 memcpy(__entry->kek, data->kek, NL80211_KEK_LEN); 1374 memcpy(__entry->kck, data->kck, NL80211_KCK_LEN); 1375 memcpy(__entry->replay_ctr, data->replay_ctr, 1376 NL80211_REPLAY_CTR_LEN); 1377 ), 1378 1379 TP_printk(LOCAL_PR_FMT VIF_PR_FMT, 1380 LOCAL_PR_ARG, VIF_PR_ARG) 1381 ); 1382 1383 TRACE_EVENT(drv_event_callback, 1384 TP_PROTO(struct ieee80211_local *local, 1385 struct ieee80211_sub_if_data *sdata, 1386 const struct ieee80211_event *_event), 1387 1388 TP_ARGS(local, sdata, _event), 1389 1390 TP_STRUCT__entry( 1391 LOCAL_ENTRY 1392 VIF_ENTRY 1393 __field(u32, type) 1394 ), 1395 1396 TP_fast_assign( 1397 LOCAL_ASSIGN; 1398 VIF_ASSIGN; 1399 __entry->type = _event->type; 1400 ), 1401 1402 TP_printk( 1403 LOCAL_PR_FMT VIF_PR_FMT " event:%d", 1404 LOCAL_PR_ARG, VIF_PR_ARG, __entry->type 1405 ) 1406 ); 1407 1408 DECLARE_EVENT_CLASS(release_evt, 1409 TP_PROTO(struct ieee80211_local *local, 1410 struct ieee80211_sta *sta, 1411 u16 tids, int num_frames, 1412 enum ieee80211_frame_release_type reason, 1413 bool more_data), 1414 1415 TP_ARGS(local, sta, tids, num_frames, reason, more_data), 1416 1417 TP_STRUCT__entry( 1418 LOCAL_ENTRY 1419 STA_ENTRY 1420 __field(u16, tids) 1421 __field(int, num_frames) 1422 __field(int, reason) 1423 __field(bool, more_data) 1424 ), 1425 1426 TP_fast_assign( 1427 LOCAL_ASSIGN; 1428 STA_ASSIGN; 1429 __entry->tids = tids; 1430 __entry->num_frames = num_frames; 1431 __entry->reason = reason; 1432 __entry->more_data = more_data; 1433 ), 1434 1435 TP_printk( 1436 LOCAL_PR_FMT STA_PR_FMT 1437 " TIDs:0x%.4x frames:%d reason:%d more:%d", 1438 LOCAL_PR_ARG, STA_PR_ARG, __entry->tids, __entry->num_frames, 1439 __entry->reason, __entry->more_data 1440 ) 1441 ); 1442 1443 DEFINE_EVENT(release_evt, drv_release_buffered_frames, 1444 TP_PROTO(struct ieee80211_local *local, 1445 struct ieee80211_sta *sta, 1446 u16 tids, int num_frames, 1447 enum ieee80211_frame_release_type reason, 1448 bool more_data), 1449 1450 TP_ARGS(local, sta, tids, num_frames, reason, more_data) 1451 ); 1452 1453 DEFINE_EVENT(release_evt, drv_allow_buffered_frames, 1454 TP_PROTO(struct ieee80211_local *local, 1455 struct ieee80211_sta *sta, 1456 u16 tids, int num_frames, 1457 enum ieee80211_frame_release_type reason, 1458 bool more_data), 1459 1460 TP_ARGS(local, sta, tids, num_frames, reason, more_data) 1461 ); 1462 1463 TRACE_EVENT(drv_mgd_prepare_tx, 1464 TP_PROTO(struct ieee80211_local *local, 1465 struct ieee80211_sub_if_data *sdata, 1466 u16 duration), 1467 1468 TP_ARGS(local, sdata, duration), 1469 1470 TP_STRUCT__entry( 1471 LOCAL_ENTRY 1472 VIF_ENTRY 1473 __field(u32, duration) 1474 ), 1475 1476 TP_fast_assign( 1477 LOCAL_ASSIGN; 1478 VIF_ASSIGN; 1479 __entry->duration = duration; 1480 ), 1481 1482 TP_printk( 1483 LOCAL_PR_FMT VIF_PR_FMT " duration: %u", 1484 LOCAL_PR_ARG, VIF_PR_ARG, __entry->duration 1485 ) 1486 ); 1487 1488 DEFINE_EVENT(local_sdata_evt, drv_mgd_protect_tdls_discover, 1489 TP_PROTO(struct ieee80211_local *local, 1490 struct ieee80211_sub_if_data *sdata), 1491 1492 TP_ARGS(local, sdata) 1493 ); 1494 1495 DECLARE_EVENT_CLASS(local_chanctx, 1496 TP_PROTO(struct ieee80211_local *local, 1497 struct ieee80211_chanctx *ctx), 1498 1499 TP_ARGS(local, ctx), 1500 1501 TP_STRUCT__entry( 1502 LOCAL_ENTRY 1503 CHANCTX_ENTRY 1504 ), 1505 1506 TP_fast_assign( 1507 LOCAL_ASSIGN; 1508 CHANCTX_ASSIGN; 1509 ), 1510 1511 TP_printk( 1512 LOCAL_PR_FMT CHANCTX_PR_FMT, 1513 LOCAL_PR_ARG, CHANCTX_PR_ARG 1514 ) 1515 ); 1516 1517 DEFINE_EVENT(local_chanctx, drv_add_chanctx, 1518 TP_PROTO(struct ieee80211_local *local, 1519 struct ieee80211_chanctx *ctx), 1520 TP_ARGS(local, ctx) 1521 ); 1522 1523 DEFINE_EVENT(local_chanctx, drv_remove_chanctx, 1524 TP_PROTO(struct ieee80211_local *local, 1525 struct ieee80211_chanctx *ctx), 1526 TP_ARGS(local, ctx) 1527 ); 1528 1529 TRACE_EVENT(drv_change_chanctx, 1530 TP_PROTO(struct ieee80211_local *local, 1531 struct ieee80211_chanctx *ctx, 1532 u32 changed), 1533 1534 TP_ARGS(local, ctx, changed), 1535 1536 TP_STRUCT__entry( 1537 LOCAL_ENTRY 1538 CHANCTX_ENTRY 1539 __field(u32, changed) 1540 ), 1541 1542 TP_fast_assign( 1543 LOCAL_ASSIGN; 1544 CHANCTX_ASSIGN; 1545 __entry->changed = changed; 1546 ), 1547 1548 TP_printk( 1549 LOCAL_PR_FMT CHANCTX_PR_FMT " changed:%#x", 1550 LOCAL_PR_ARG, CHANCTX_PR_ARG, __entry->changed 1551 ) 1552 ); 1553 1554 #if !defined(__TRACE_VIF_ENTRY) 1555 #define __TRACE_VIF_ENTRY 1556 struct trace_vif_entry { 1557 enum nl80211_iftype vif_type; 1558 bool p2p; 1559 char vif_name[IFNAMSIZ]; 1560 } __packed; 1561 1562 struct trace_chandef_entry { 1563 u32 control_freq; 1564 u32 freq_offset; 1565 u32 chan_width; 1566 u32 center_freq1; 1567 u32 freq1_offset; 1568 u32 center_freq2; 1569 } __packed; 1570 1571 struct trace_switch_entry { 1572 struct trace_vif_entry vif; 1573 struct trace_chandef_entry old_chandef; 1574 struct trace_chandef_entry new_chandef; 1575 } __packed; 1576 1577 #define SWITCH_ENTRY_ASSIGN(to, from) local_vifs[i].to = vifs[i].from 1578 #endif 1579 1580 TRACE_EVENT(drv_switch_vif_chanctx, 1581 TP_PROTO(struct ieee80211_local *local, 1582 struct ieee80211_vif_chanctx_switch *vifs, 1583 int n_vifs, enum ieee80211_chanctx_switch_mode mode), 1584 TP_ARGS(local, vifs, n_vifs, mode), 1585 1586 TP_STRUCT__entry( 1587 LOCAL_ENTRY 1588 __field(int, n_vifs) 1589 __field(u32, mode) 1590 __dynamic_array(u8, vifs, 1591 sizeof(struct trace_switch_entry) * n_vifs) 1592 ), 1593 1594 TP_fast_assign( 1595 LOCAL_ASSIGN; 1596 __entry->n_vifs = n_vifs; 1597 __entry->mode = mode; 1598 { 1599 struct trace_switch_entry *local_vifs = 1600 __get_dynamic_array(vifs); 1601 int i; 1602 1603 for (i = 0; i < n_vifs; i++) { 1604 struct ieee80211_sub_if_data *sdata; 1605 1606 sdata = container_of(vifs[i].vif, 1607 struct ieee80211_sub_if_data, 1608 vif); 1609 1610 SWITCH_ENTRY_ASSIGN(vif.vif_type, vif->type); 1611 SWITCH_ENTRY_ASSIGN(vif.p2p, vif->p2p); 1612 strncpy(local_vifs[i].vif.vif_name, 1613 sdata->name, 1614 sizeof(local_vifs[i].vif.vif_name)); 1615 SWITCH_ENTRY_ASSIGN(old_chandef.control_freq, 1616 old_ctx->def.chan->center_freq); 1617 SWITCH_ENTRY_ASSIGN(old_chandef.freq_offset, 1618 old_ctx->def.chan->freq_offset); 1619 SWITCH_ENTRY_ASSIGN(old_chandef.chan_width, 1620 old_ctx->def.width); 1621 SWITCH_ENTRY_ASSIGN(old_chandef.center_freq1, 1622 old_ctx->def.center_freq1); 1623 SWITCH_ENTRY_ASSIGN(old_chandef.freq1_offset, 1624 old_ctx->def.freq1_offset); 1625 SWITCH_ENTRY_ASSIGN(old_chandef.center_freq2, 1626 old_ctx->def.center_freq2); 1627 SWITCH_ENTRY_ASSIGN(new_chandef.control_freq, 1628 new_ctx->def.chan->center_freq); 1629 SWITCH_ENTRY_ASSIGN(new_chandef.freq_offset, 1630 new_ctx->def.chan->freq_offset); 1631 SWITCH_ENTRY_ASSIGN(new_chandef.chan_width, 1632 new_ctx->def.width); 1633 SWITCH_ENTRY_ASSIGN(new_chandef.center_freq1, 1634 new_ctx->def.center_freq1); 1635 SWITCH_ENTRY_ASSIGN(new_chandef.freq1_offset, 1636 new_ctx->def.freq1_offset); 1637 SWITCH_ENTRY_ASSIGN(new_chandef.center_freq2, 1638 new_ctx->def.center_freq2); 1639 } 1640 } 1641 ), 1642 1643 TP_printk( 1644 LOCAL_PR_FMT " n_vifs:%d mode:%d", 1645 LOCAL_PR_ARG, __entry->n_vifs, __entry->mode 1646 ) 1647 ); 1648 1649 DECLARE_EVENT_CLASS(local_sdata_chanctx, 1650 TP_PROTO(struct ieee80211_local *local, 1651 struct ieee80211_sub_if_data *sdata, 1652 struct ieee80211_chanctx *ctx), 1653 1654 TP_ARGS(local, sdata, ctx), 1655 1656 TP_STRUCT__entry( 1657 LOCAL_ENTRY 1658 VIF_ENTRY 1659 CHANCTX_ENTRY 1660 ), 1661 1662 TP_fast_assign( 1663 LOCAL_ASSIGN; 1664 VIF_ASSIGN; 1665 CHANCTX_ASSIGN; 1666 ), 1667 1668 TP_printk( 1669 LOCAL_PR_FMT VIF_PR_FMT CHANCTX_PR_FMT, 1670 LOCAL_PR_ARG, VIF_PR_ARG, CHANCTX_PR_ARG 1671 ) 1672 ); 1673 1674 DEFINE_EVENT(local_sdata_chanctx, drv_assign_vif_chanctx, 1675 TP_PROTO(struct ieee80211_local *local, 1676 struct ieee80211_sub_if_data *sdata, 1677 struct ieee80211_chanctx *ctx), 1678 TP_ARGS(local, sdata, ctx) 1679 ); 1680 1681 DEFINE_EVENT(local_sdata_chanctx, drv_unassign_vif_chanctx, 1682 TP_PROTO(struct ieee80211_local *local, 1683 struct ieee80211_sub_if_data *sdata, 1684 struct ieee80211_chanctx *ctx), 1685 TP_ARGS(local, sdata, ctx) 1686 ); 1687 1688 TRACE_EVENT(drv_start_ap, 1689 TP_PROTO(struct ieee80211_local *local, 1690 struct ieee80211_sub_if_data *sdata, 1691 struct ieee80211_bss_conf *info), 1692 1693 TP_ARGS(local, sdata, info), 1694 1695 TP_STRUCT__entry( 1696 LOCAL_ENTRY 1697 VIF_ENTRY 1698 __field(u8, dtimper) 1699 __field(u16, bcnint) 1700 __dynamic_array(u8, ssid, info->ssid_len) 1701 __field(bool, hidden_ssid) 1702 ), 1703 1704 TP_fast_assign( 1705 LOCAL_ASSIGN; 1706 VIF_ASSIGN; 1707 __entry->dtimper = info->dtim_period; 1708 __entry->bcnint = info->beacon_int; 1709 memcpy(__get_dynamic_array(ssid), info->ssid, info->ssid_len); 1710 __entry->hidden_ssid = info->hidden_ssid; 1711 ), 1712 1713 TP_printk( 1714 LOCAL_PR_FMT VIF_PR_FMT, 1715 LOCAL_PR_ARG, VIF_PR_ARG 1716 ) 1717 ); 1718 1719 DEFINE_EVENT(local_sdata_evt, drv_stop_ap, 1720 TP_PROTO(struct ieee80211_local *local, 1721 struct ieee80211_sub_if_data *sdata), 1722 TP_ARGS(local, sdata) 1723 ); 1724 1725 TRACE_EVENT(drv_reconfig_complete, 1726 TP_PROTO(struct ieee80211_local *local, 1727 enum ieee80211_reconfig_type reconfig_type), 1728 TP_ARGS(local, reconfig_type), 1729 1730 TP_STRUCT__entry( 1731 LOCAL_ENTRY 1732 __field(u8, reconfig_type) 1733 ), 1734 1735 TP_fast_assign( 1736 LOCAL_ASSIGN; 1737 __entry->reconfig_type = reconfig_type; 1738 ), 1739 1740 TP_printk( 1741 LOCAL_PR_FMT " reconfig_type:%d", 1742 LOCAL_PR_ARG, __entry->reconfig_type 1743 ) 1744 1745 ); 1746 1747 #if IS_ENABLED(CONFIG_IPV6) 1748 DEFINE_EVENT(local_sdata_evt, drv_ipv6_addr_change, 1749 TP_PROTO(struct ieee80211_local *local, 1750 struct ieee80211_sub_if_data *sdata), 1751 TP_ARGS(local, sdata) 1752 ); 1753 #endif 1754 1755 TRACE_EVENT(drv_join_ibss, 1756 TP_PROTO(struct ieee80211_local *local, 1757 struct ieee80211_sub_if_data *sdata, 1758 struct ieee80211_bss_conf *info), 1759 1760 TP_ARGS(local, sdata, info), 1761 1762 TP_STRUCT__entry( 1763 LOCAL_ENTRY 1764 VIF_ENTRY 1765 __field(u8, dtimper) 1766 __field(u16, bcnint) 1767 __dynamic_array(u8, ssid, info->ssid_len) 1768 ), 1769 1770 TP_fast_assign( 1771 LOCAL_ASSIGN; 1772 VIF_ASSIGN; 1773 __entry->dtimper = info->dtim_period; 1774 __entry->bcnint = info->beacon_int; 1775 memcpy(__get_dynamic_array(ssid), info->ssid, info->ssid_len); 1776 ), 1777 1778 TP_printk( 1779 LOCAL_PR_FMT VIF_PR_FMT, 1780 LOCAL_PR_ARG, VIF_PR_ARG 1781 ) 1782 ); 1783 1784 DEFINE_EVENT(local_sdata_evt, drv_leave_ibss, 1785 TP_PROTO(struct ieee80211_local *local, 1786 struct ieee80211_sub_if_data *sdata), 1787 TP_ARGS(local, sdata) 1788 ); 1789 1790 TRACE_EVENT(drv_get_expected_throughput, 1791 TP_PROTO(struct ieee80211_sta *sta), 1792 1793 TP_ARGS(sta), 1794 1795 TP_STRUCT__entry( 1796 STA_ENTRY 1797 ), 1798 1799 TP_fast_assign( 1800 STA_ASSIGN; 1801 ), 1802 1803 TP_printk( 1804 STA_PR_FMT, STA_PR_ARG 1805 ) 1806 ); 1807 1808 TRACE_EVENT(drv_start_nan, 1809 TP_PROTO(struct ieee80211_local *local, 1810 struct ieee80211_sub_if_data *sdata, 1811 struct cfg80211_nan_conf *conf), 1812 1813 TP_ARGS(local, sdata, conf), 1814 TP_STRUCT__entry( 1815 LOCAL_ENTRY 1816 VIF_ENTRY 1817 __field(u8, master_pref) 1818 __field(u8, bands) 1819 ), 1820 1821 TP_fast_assign( 1822 LOCAL_ASSIGN; 1823 VIF_ASSIGN; 1824 __entry->master_pref = conf->master_pref; 1825 __entry->bands = conf->bands; 1826 ), 1827 1828 TP_printk( 1829 LOCAL_PR_FMT VIF_PR_FMT 1830 ", master preference: %u, bands: 0x%0x", 1831 LOCAL_PR_ARG, VIF_PR_ARG, __entry->master_pref, 1832 __entry->bands 1833 ) 1834 ); 1835 1836 TRACE_EVENT(drv_stop_nan, 1837 TP_PROTO(struct ieee80211_local *local, 1838 struct ieee80211_sub_if_data *sdata), 1839 1840 TP_ARGS(local, sdata), 1841 1842 TP_STRUCT__entry( 1843 LOCAL_ENTRY 1844 VIF_ENTRY 1845 ), 1846 1847 TP_fast_assign( 1848 LOCAL_ASSIGN; 1849 VIF_ASSIGN; 1850 ), 1851 1852 TP_printk( 1853 LOCAL_PR_FMT VIF_PR_FMT, 1854 LOCAL_PR_ARG, VIF_PR_ARG 1855 ) 1856 ); 1857 1858 TRACE_EVENT(drv_nan_change_conf, 1859 TP_PROTO(struct ieee80211_local *local, 1860 struct ieee80211_sub_if_data *sdata, 1861 struct cfg80211_nan_conf *conf, 1862 u32 changes), 1863 1864 TP_ARGS(local, sdata, conf, changes), 1865 TP_STRUCT__entry( 1866 LOCAL_ENTRY 1867 VIF_ENTRY 1868 __field(u8, master_pref) 1869 __field(u8, bands) 1870 __field(u32, changes) 1871 ), 1872 1873 TP_fast_assign( 1874 LOCAL_ASSIGN; 1875 VIF_ASSIGN; 1876 __entry->master_pref = conf->master_pref; 1877 __entry->bands = conf->bands; 1878 __entry->changes = changes; 1879 ), 1880 1881 TP_printk( 1882 LOCAL_PR_FMT VIF_PR_FMT 1883 ", master preference: %u, bands: 0x%0x, changes: 0x%x", 1884 LOCAL_PR_ARG, VIF_PR_ARG, __entry->master_pref, 1885 __entry->bands, __entry->changes 1886 ) 1887 ); 1888 1889 TRACE_EVENT(drv_add_nan_func, 1890 TP_PROTO(struct ieee80211_local *local, 1891 struct ieee80211_sub_if_data *sdata, 1892 const struct cfg80211_nan_func *func), 1893 1894 TP_ARGS(local, sdata, func), 1895 TP_STRUCT__entry( 1896 LOCAL_ENTRY 1897 VIF_ENTRY 1898 __field(u8, type) 1899 __field(u8, inst_id) 1900 ), 1901 1902 TP_fast_assign( 1903 LOCAL_ASSIGN; 1904 VIF_ASSIGN; 1905 __entry->type = func->type; 1906 __entry->inst_id = func->instance_id; 1907 ), 1908 1909 TP_printk( 1910 LOCAL_PR_FMT VIF_PR_FMT 1911 ", type: %u, inst_id: %u", 1912 LOCAL_PR_ARG, VIF_PR_ARG, __entry->type, __entry->inst_id 1913 ) 1914 ); 1915 1916 TRACE_EVENT(drv_del_nan_func, 1917 TP_PROTO(struct ieee80211_local *local, 1918 struct ieee80211_sub_if_data *sdata, 1919 u8 instance_id), 1920 1921 TP_ARGS(local, sdata, instance_id), 1922 TP_STRUCT__entry( 1923 LOCAL_ENTRY 1924 VIF_ENTRY 1925 __field(u8, instance_id) 1926 ), 1927 1928 TP_fast_assign( 1929 LOCAL_ASSIGN; 1930 VIF_ASSIGN; 1931 __entry->instance_id = instance_id; 1932 ), 1933 1934 TP_printk( 1935 LOCAL_PR_FMT VIF_PR_FMT 1936 ", instance_id: %u", 1937 LOCAL_PR_ARG, VIF_PR_ARG, __entry->instance_id 1938 ) 1939 ); 1940 1941 DEFINE_EVENT(local_sdata_evt, drv_start_pmsr, 1942 TP_PROTO(struct ieee80211_local *local, 1943 struct ieee80211_sub_if_data *sdata), 1944 TP_ARGS(local, sdata) 1945 ); 1946 1947 DEFINE_EVENT(local_sdata_evt, drv_abort_pmsr, 1948 TP_PROTO(struct ieee80211_local *local, 1949 struct ieee80211_sub_if_data *sdata), 1950 TP_ARGS(local, sdata) 1951 ); 1952 1953 /* 1954 * Tracing for API calls that drivers call. 1955 */ 1956 1957 TRACE_EVENT(api_start_tx_ba_session, 1958 TP_PROTO(struct ieee80211_sta *sta, u16 tid), 1959 1960 TP_ARGS(sta, tid), 1961 1962 TP_STRUCT__entry( 1963 STA_ENTRY 1964 __field(u16, tid) 1965 ), 1966 1967 TP_fast_assign( 1968 STA_ASSIGN; 1969 __entry->tid = tid; 1970 ), 1971 1972 TP_printk( 1973 STA_PR_FMT " tid:%d", 1974 STA_PR_ARG, __entry->tid 1975 ) 1976 ); 1977 1978 TRACE_EVENT(api_start_tx_ba_cb, 1979 TP_PROTO(struct ieee80211_sub_if_data *sdata, const u8 *ra, u16 tid), 1980 1981 TP_ARGS(sdata, ra, tid), 1982 1983 TP_STRUCT__entry( 1984 VIF_ENTRY 1985 __array(u8, ra, ETH_ALEN) 1986 __field(u16, tid) 1987 ), 1988 1989 TP_fast_assign( 1990 VIF_ASSIGN; 1991 memcpy(__entry->ra, ra, ETH_ALEN); 1992 __entry->tid = tid; 1993 ), 1994 1995 TP_printk( 1996 VIF_PR_FMT " ra:%pM tid:%d", 1997 VIF_PR_ARG, __entry->ra, __entry->tid 1998 ) 1999 ); 2000 2001 TRACE_EVENT(api_stop_tx_ba_session, 2002 TP_PROTO(struct ieee80211_sta *sta, u16 tid), 2003 2004 TP_ARGS(sta, tid), 2005 2006 TP_STRUCT__entry( 2007 STA_ENTRY 2008 __field(u16, tid) 2009 ), 2010 2011 TP_fast_assign( 2012 STA_ASSIGN; 2013 __entry->tid = tid; 2014 ), 2015 2016 TP_printk( 2017 STA_PR_FMT " tid:%d", 2018 STA_PR_ARG, __entry->tid 2019 ) 2020 ); 2021 2022 TRACE_EVENT(api_stop_tx_ba_cb, 2023 TP_PROTO(struct ieee80211_sub_if_data *sdata, const u8 *ra, u16 tid), 2024 2025 TP_ARGS(sdata, ra, tid), 2026 2027 TP_STRUCT__entry( 2028 VIF_ENTRY 2029 __array(u8, ra, ETH_ALEN) 2030 __field(u16, tid) 2031 ), 2032 2033 TP_fast_assign( 2034 VIF_ASSIGN; 2035 memcpy(__entry->ra, ra, ETH_ALEN); 2036 __entry->tid = tid; 2037 ), 2038 2039 TP_printk( 2040 VIF_PR_FMT " ra:%pM tid:%d", 2041 VIF_PR_ARG, __entry->ra, __entry->tid 2042 ) 2043 ); 2044 2045 DEFINE_EVENT(local_only_evt, api_restart_hw, 2046 TP_PROTO(struct ieee80211_local *local), 2047 TP_ARGS(local) 2048 ); 2049 2050 TRACE_EVENT(api_beacon_loss, 2051 TP_PROTO(struct ieee80211_sub_if_data *sdata), 2052 2053 TP_ARGS(sdata), 2054 2055 TP_STRUCT__entry( 2056 VIF_ENTRY 2057 ), 2058 2059 TP_fast_assign( 2060 VIF_ASSIGN; 2061 ), 2062 2063 TP_printk( 2064 VIF_PR_FMT, 2065 VIF_PR_ARG 2066 ) 2067 ); 2068 2069 TRACE_EVENT(api_connection_loss, 2070 TP_PROTO(struct ieee80211_sub_if_data *sdata), 2071 2072 TP_ARGS(sdata), 2073 2074 TP_STRUCT__entry( 2075 VIF_ENTRY 2076 ), 2077 2078 TP_fast_assign( 2079 VIF_ASSIGN; 2080 ), 2081 2082 TP_printk( 2083 VIF_PR_FMT, 2084 VIF_PR_ARG 2085 ) 2086 ); 2087 2088 TRACE_EVENT(api_cqm_rssi_notify, 2089 TP_PROTO(struct ieee80211_sub_if_data *sdata, 2090 enum nl80211_cqm_rssi_threshold_event rssi_event, 2091 s32 rssi_level), 2092 2093 TP_ARGS(sdata, rssi_event, rssi_level), 2094 2095 TP_STRUCT__entry( 2096 VIF_ENTRY 2097 __field(u32, rssi_event) 2098 __field(s32, rssi_level) 2099 ), 2100 2101 TP_fast_assign( 2102 VIF_ASSIGN; 2103 __entry->rssi_event = rssi_event; 2104 __entry->rssi_level = rssi_level; 2105 ), 2106 2107 TP_printk( 2108 VIF_PR_FMT " event:%d rssi:%d", 2109 VIF_PR_ARG, __entry->rssi_event, __entry->rssi_level 2110 ) 2111 ); 2112 2113 DEFINE_EVENT(local_sdata_evt, api_cqm_beacon_loss_notify, 2114 TP_PROTO(struct ieee80211_local *local, 2115 struct ieee80211_sub_if_data *sdata), 2116 TP_ARGS(local, sdata) 2117 ); 2118 2119 TRACE_EVENT(api_scan_completed, 2120 TP_PROTO(struct ieee80211_local *local, bool aborted), 2121 2122 TP_ARGS(local, aborted), 2123 2124 TP_STRUCT__entry( 2125 LOCAL_ENTRY 2126 __field(bool, aborted) 2127 ), 2128 2129 TP_fast_assign( 2130 LOCAL_ASSIGN; 2131 __entry->aborted = aborted; 2132 ), 2133 2134 TP_printk( 2135 LOCAL_PR_FMT " aborted:%d", 2136 LOCAL_PR_ARG, __entry->aborted 2137 ) 2138 ); 2139 2140 TRACE_EVENT(api_sched_scan_results, 2141 TP_PROTO(struct ieee80211_local *local), 2142 2143 TP_ARGS(local), 2144 2145 TP_STRUCT__entry( 2146 LOCAL_ENTRY 2147 ), 2148 2149 TP_fast_assign( 2150 LOCAL_ASSIGN; 2151 ), 2152 2153 TP_printk( 2154 LOCAL_PR_FMT, LOCAL_PR_ARG 2155 ) 2156 ); 2157 2158 TRACE_EVENT(api_sched_scan_stopped, 2159 TP_PROTO(struct ieee80211_local *local), 2160 2161 TP_ARGS(local), 2162 2163 TP_STRUCT__entry( 2164 LOCAL_ENTRY 2165 ), 2166 2167 TP_fast_assign( 2168 LOCAL_ASSIGN; 2169 ), 2170 2171 TP_printk( 2172 LOCAL_PR_FMT, LOCAL_PR_ARG 2173 ) 2174 ); 2175 2176 TRACE_EVENT(api_sta_block_awake, 2177 TP_PROTO(struct ieee80211_local *local, 2178 struct ieee80211_sta *sta, bool block), 2179 2180 TP_ARGS(local, sta, block), 2181 2182 TP_STRUCT__entry( 2183 LOCAL_ENTRY 2184 STA_ENTRY 2185 __field(bool, block) 2186 ), 2187 2188 TP_fast_assign( 2189 LOCAL_ASSIGN; 2190 STA_ASSIGN; 2191 __entry->block = block; 2192 ), 2193 2194 TP_printk( 2195 LOCAL_PR_FMT STA_PR_FMT " block:%d", 2196 LOCAL_PR_ARG, STA_PR_ARG, __entry->block 2197 ) 2198 ); 2199 2200 TRACE_EVENT(api_chswitch_done, 2201 TP_PROTO(struct ieee80211_sub_if_data *sdata, bool success), 2202 2203 TP_ARGS(sdata, success), 2204 2205 TP_STRUCT__entry( 2206 VIF_ENTRY 2207 __field(bool, success) 2208 ), 2209 2210 TP_fast_assign( 2211 VIF_ASSIGN; 2212 __entry->success = success; 2213 ), 2214 2215 TP_printk( 2216 VIF_PR_FMT " success=%d", 2217 VIF_PR_ARG, __entry->success 2218 ) 2219 ); 2220 2221 DEFINE_EVENT(local_only_evt, api_ready_on_channel, 2222 TP_PROTO(struct ieee80211_local *local), 2223 TP_ARGS(local) 2224 ); 2225 2226 DEFINE_EVENT(local_only_evt, api_remain_on_channel_expired, 2227 TP_PROTO(struct ieee80211_local *local), 2228 TP_ARGS(local) 2229 ); 2230 2231 TRACE_EVENT(api_gtk_rekey_notify, 2232 TP_PROTO(struct ieee80211_sub_if_data *sdata, 2233 const u8 *bssid, const u8 *replay_ctr), 2234 2235 TP_ARGS(sdata, bssid, replay_ctr), 2236 2237 TP_STRUCT__entry( 2238 VIF_ENTRY 2239 __array(u8, bssid, ETH_ALEN) 2240 __array(u8, replay_ctr, NL80211_REPLAY_CTR_LEN) 2241 ), 2242 2243 TP_fast_assign( 2244 VIF_ASSIGN; 2245 memcpy(__entry->bssid, bssid, ETH_ALEN); 2246 memcpy(__entry->replay_ctr, replay_ctr, NL80211_REPLAY_CTR_LEN); 2247 ), 2248 2249 TP_printk(VIF_PR_FMT, VIF_PR_ARG) 2250 ); 2251 2252 TRACE_EVENT(api_enable_rssi_reports, 2253 TP_PROTO(struct ieee80211_sub_if_data *sdata, 2254 int rssi_min_thold, int rssi_max_thold), 2255 2256 TP_ARGS(sdata, rssi_min_thold, rssi_max_thold), 2257 2258 TP_STRUCT__entry( 2259 VIF_ENTRY 2260 __field(int, rssi_min_thold) 2261 __field(int, rssi_max_thold) 2262 ), 2263 2264 TP_fast_assign( 2265 VIF_ASSIGN; 2266 __entry->rssi_min_thold = rssi_min_thold; 2267 __entry->rssi_max_thold = rssi_max_thold; 2268 ), 2269 2270 TP_printk( 2271 VIF_PR_FMT " rssi_min_thold =%d, rssi_max_thold = %d", 2272 VIF_PR_ARG, __entry->rssi_min_thold, __entry->rssi_max_thold 2273 ) 2274 ); 2275 2276 TRACE_EVENT(api_eosp, 2277 TP_PROTO(struct ieee80211_local *local, 2278 struct ieee80211_sta *sta), 2279 2280 TP_ARGS(local, sta), 2281 2282 TP_STRUCT__entry( 2283 LOCAL_ENTRY 2284 STA_ENTRY 2285 ), 2286 2287 TP_fast_assign( 2288 LOCAL_ASSIGN; 2289 STA_ASSIGN; 2290 ), 2291 2292 TP_printk( 2293 LOCAL_PR_FMT STA_PR_FMT, 2294 LOCAL_PR_ARG, STA_PR_ARG 2295 ) 2296 ); 2297 2298 TRACE_EVENT(api_send_eosp_nullfunc, 2299 TP_PROTO(struct ieee80211_local *local, 2300 struct ieee80211_sta *sta, 2301 u8 tid), 2302 2303 TP_ARGS(local, sta, tid), 2304 2305 TP_STRUCT__entry( 2306 LOCAL_ENTRY 2307 STA_ENTRY 2308 __field(u8, tid) 2309 ), 2310 2311 TP_fast_assign( 2312 LOCAL_ASSIGN; 2313 STA_ASSIGN; 2314 __entry->tid = tid; 2315 ), 2316 2317 TP_printk( 2318 LOCAL_PR_FMT STA_PR_FMT " tid:%d", 2319 LOCAL_PR_ARG, STA_PR_ARG, __entry->tid 2320 ) 2321 ); 2322 2323 TRACE_EVENT(api_sta_set_buffered, 2324 TP_PROTO(struct ieee80211_local *local, 2325 struct ieee80211_sta *sta, 2326 u8 tid, bool buffered), 2327 2328 TP_ARGS(local, sta, tid, buffered), 2329 2330 TP_STRUCT__entry( 2331 LOCAL_ENTRY 2332 STA_ENTRY 2333 __field(u8, tid) 2334 __field(bool, buffered) 2335 ), 2336 2337 TP_fast_assign( 2338 LOCAL_ASSIGN; 2339 STA_ASSIGN; 2340 __entry->tid = tid; 2341 __entry->buffered = buffered; 2342 ), 2343 2344 TP_printk( 2345 LOCAL_PR_FMT STA_PR_FMT " tid:%d buffered:%d", 2346 LOCAL_PR_ARG, STA_PR_ARG, __entry->tid, __entry->buffered 2347 ) 2348 ); 2349 2350 /* 2351 * Tracing for internal functions 2352 * (which may also be called in response to driver calls) 2353 */ 2354 2355 TRACE_EVENT(wake_queue, 2356 TP_PROTO(struct ieee80211_local *local, u16 queue, 2357 enum queue_stop_reason reason), 2358 2359 TP_ARGS(local, queue, reason), 2360 2361 TP_STRUCT__entry( 2362 LOCAL_ENTRY 2363 __field(u16, queue) 2364 __field(u32, reason) 2365 ), 2366 2367 TP_fast_assign( 2368 LOCAL_ASSIGN; 2369 __entry->queue = queue; 2370 __entry->reason = reason; 2371 ), 2372 2373 TP_printk( 2374 LOCAL_PR_FMT " queue:%d, reason:%d", 2375 LOCAL_PR_ARG, __entry->queue, __entry->reason 2376 ) 2377 ); 2378 2379 TRACE_EVENT(stop_queue, 2380 TP_PROTO(struct ieee80211_local *local, u16 queue, 2381 enum queue_stop_reason reason), 2382 2383 TP_ARGS(local, queue, reason), 2384 2385 TP_STRUCT__entry( 2386 LOCAL_ENTRY 2387 __field(u16, queue) 2388 __field(u32, reason) 2389 ), 2390 2391 TP_fast_assign( 2392 LOCAL_ASSIGN; 2393 __entry->queue = queue; 2394 __entry->reason = reason; 2395 ), 2396 2397 TP_printk( 2398 LOCAL_PR_FMT " queue:%d, reason:%d", 2399 LOCAL_PR_ARG, __entry->queue, __entry->reason 2400 ) 2401 ); 2402 2403 TRACE_EVENT(drv_set_default_unicast_key, 2404 TP_PROTO(struct ieee80211_local *local, 2405 struct ieee80211_sub_if_data *sdata, 2406 int key_idx), 2407 2408 TP_ARGS(local, sdata, key_idx), 2409 2410 TP_STRUCT__entry( 2411 LOCAL_ENTRY 2412 VIF_ENTRY 2413 __field(int, key_idx) 2414 ), 2415 2416 TP_fast_assign( 2417 LOCAL_ASSIGN; 2418 VIF_ASSIGN; 2419 __entry->key_idx = key_idx; 2420 ), 2421 2422 TP_printk(LOCAL_PR_FMT VIF_PR_FMT " key_idx:%d", 2423 LOCAL_PR_ARG, VIF_PR_ARG, __entry->key_idx) 2424 ); 2425 2426 TRACE_EVENT(api_radar_detected, 2427 TP_PROTO(struct ieee80211_local *local), 2428 2429 TP_ARGS(local), 2430 2431 TP_STRUCT__entry( 2432 LOCAL_ENTRY 2433 ), 2434 2435 TP_fast_assign( 2436 LOCAL_ASSIGN; 2437 ), 2438 2439 TP_printk( 2440 LOCAL_PR_FMT " radar detected", 2441 LOCAL_PR_ARG 2442 ) 2443 ); 2444 2445 TRACE_EVENT(drv_channel_switch_beacon, 2446 TP_PROTO(struct ieee80211_local *local, 2447 struct ieee80211_sub_if_data *sdata, 2448 struct cfg80211_chan_def *chandef), 2449 2450 TP_ARGS(local, sdata, chandef), 2451 2452 TP_STRUCT__entry( 2453 LOCAL_ENTRY 2454 VIF_ENTRY 2455 CHANDEF_ENTRY 2456 ), 2457 2458 TP_fast_assign( 2459 LOCAL_ASSIGN; 2460 VIF_ASSIGN; 2461 CHANDEF_ASSIGN(chandef); 2462 ), 2463 2464 TP_printk( 2465 LOCAL_PR_FMT VIF_PR_FMT " channel switch to " CHANDEF_PR_FMT, 2466 LOCAL_PR_ARG, VIF_PR_ARG, CHANDEF_PR_ARG 2467 ) 2468 ); 2469 2470 TRACE_EVENT(drv_pre_channel_switch, 2471 TP_PROTO(struct ieee80211_local *local, 2472 struct ieee80211_sub_if_data *sdata, 2473 struct ieee80211_channel_switch *ch_switch), 2474 2475 TP_ARGS(local, sdata, ch_switch), 2476 2477 TP_STRUCT__entry( 2478 LOCAL_ENTRY 2479 VIF_ENTRY 2480 CHANDEF_ENTRY 2481 __field(u64, timestamp) 2482 __field(u32, device_timestamp) 2483 __field(bool, block_tx) 2484 __field(u8, count) 2485 ), 2486 2487 TP_fast_assign( 2488 LOCAL_ASSIGN; 2489 VIF_ASSIGN; 2490 CHANDEF_ASSIGN(&ch_switch->chandef) 2491 __entry->timestamp = ch_switch->timestamp; 2492 __entry->device_timestamp = ch_switch->device_timestamp; 2493 __entry->block_tx = ch_switch->block_tx; 2494 __entry->count = ch_switch->count; 2495 ), 2496 2497 TP_printk( 2498 LOCAL_PR_FMT VIF_PR_FMT " prepare channel switch to " 2499 CHANDEF_PR_FMT " count:%d block_tx:%d timestamp:%llu", 2500 LOCAL_PR_ARG, VIF_PR_ARG, CHANDEF_PR_ARG, __entry->count, 2501 __entry->block_tx, __entry->timestamp 2502 ) 2503 ); 2504 2505 DEFINE_EVENT(local_sdata_evt, drv_post_channel_switch, 2506 TP_PROTO(struct ieee80211_local *local, 2507 struct ieee80211_sub_if_data *sdata), 2508 TP_ARGS(local, sdata) 2509 ); 2510 2511 DEFINE_EVENT(local_sdata_evt, drv_abort_channel_switch, 2512 TP_PROTO(struct ieee80211_local *local, 2513 struct ieee80211_sub_if_data *sdata), 2514 TP_ARGS(local, sdata) 2515 ); 2516 2517 TRACE_EVENT(drv_channel_switch_rx_beacon, 2518 TP_PROTO(struct ieee80211_local *local, 2519 struct ieee80211_sub_if_data *sdata, 2520 struct ieee80211_channel_switch *ch_switch), 2521 2522 TP_ARGS(local, sdata, ch_switch), 2523 2524 TP_STRUCT__entry( 2525 LOCAL_ENTRY 2526 VIF_ENTRY 2527 CHANDEF_ENTRY 2528 __field(u64, timestamp) 2529 __field(u32, device_timestamp) 2530 __field(bool, block_tx) 2531 __field(u8, count) 2532 ), 2533 2534 TP_fast_assign( 2535 LOCAL_ASSIGN; 2536 VIF_ASSIGN; 2537 CHANDEF_ASSIGN(&ch_switch->chandef) 2538 __entry->timestamp = ch_switch->timestamp; 2539 __entry->device_timestamp = ch_switch->device_timestamp; 2540 __entry->block_tx = ch_switch->block_tx; 2541 __entry->count = ch_switch->count; 2542 ), 2543 2544 TP_printk( 2545 LOCAL_PR_FMT VIF_PR_FMT 2546 " received a channel switch beacon to " 2547 CHANDEF_PR_FMT " count:%d block_tx:%d timestamp:%llu", 2548 LOCAL_PR_ARG, VIF_PR_ARG, CHANDEF_PR_ARG, __entry->count, 2549 __entry->block_tx, __entry->timestamp 2550 ) 2551 ); 2552 2553 TRACE_EVENT(drv_get_txpower, 2554 TP_PROTO(struct ieee80211_local *local, 2555 struct ieee80211_sub_if_data *sdata, 2556 int dbm, int ret), 2557 2558 TP_ARGS(local, sdata, dbm, ret), 2559 2560 TP_STRUCT__entry( 2561 LOCAL_ENTRY 2562 VIF_ENTRY 2563 __field(int, dbm) 2564 __field(int, ret) 2565 ), 2566 2567 TP_fast_assign( 2568 LOCAL_ASSIGN; 2569 VIF_ASSIGN; 2570 __entry->dbm = dbm; 2571 __entry->ret = ret; 2572 ), 2573 2574 TP_printk( 2575 LOCAL_PR_FMT VIF_PR_FMT " dbm:%d ret:%d", 2576 LOCAL_PR_ARG, VIF_PR_ARG, __entry->dbm, __entry->ret 2577 ) 2578 ); 2579 2580 TRACE_EVENT(drv_tdls_channel_switch, 2581 TP_PROTO(struct ieee80211_local *local, 2582 struct ieee80211_sub_if_data *sdata, 2583 struct ieee80211_sta *sta, u8 oper_class, 2584 struct cfg80211_chan_def *chandef), 2585 2586 TP_ARGS(local, sdata, sta, oper_class, chandef), 2587 2588 TP_STRUCT__entry( 2589 LOCAL_ENTRY 2590 VIF_ENTRY 2591 STA_ENTRY 2592 __field(u8, oper_class) 2593 CHANDEF_ENTRY 2594 ), 2595 2596 TP_fast_assign( 2597 LOCAL_ASSIGN; 2598 VIF_ASSIGN; 2599 STA_ASSIGN; 2600 __entry->oper_class = oper_class; 2601 CHANDEF_ASSIGN(chandef) 2602 ), 2603 2604 TP_printk( 2605 LOCAL_PR_FMT VIF_PR_FMT " tdls channel switch to" 2606 CHANDEF_PR_FMT " oper_class:%d " STA_PR_FMT, 2607 LOCAL_PR_ARG, VIF_PR_ARG, CHANDEF_PR_ARG, __entry->oper_class, 2608 STA_PR_ARG 2609 ) 2610 ); 2611 2612 TRACE_EVENT(drv_tdls_cancel_channel_switch, 2613 TP_PROTO(struct ieee80211_local *local, 2614 struct ieee80211_sub_if_data *sdata, 2615 struct ieee80211_sta *sta), 2616 2617 TP_ARGS(local, sdata, sta), 2618 2619 TP_STRUCT__entry( 2620 LOCAL_ENTRY 2621 VIF_ENTRY 2622 STA_ENTRY 2623 ), 2624 2625 TP_fast_assign( 2626 LOCAL_ASSIGN; 2627 VIF_ASSIGN; 2628 STA_ASSIGN; 2629 ), 2630 2631 TP_printk( 2632 LOCAL_PR_FMT VIF_PR_FMT 2633 " tdls cancel channel switch with " STA_PR_FMT, 2634 LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG 2635 ) 2636 ); 2637 2638 TRACE_EVENT(drv_tdls_recv_channel_switch, 2639 TP_PROTO(struct ieee80211_local *local, 2640 struct ieee80211_sub_if_data *sdata, 2641 struct ieee80211_tdls_ch_sw_params *params), 2642 2643 TP_ARGS(local, sdata, params), 2644 2645 TP_STRUCT__entry( 2646 LOCAL_ENTRY 2647 VIF_ENTRY 2648 __field(u8, action_code) 2649 STA_ENTRY 2650 CHANDEF_ENTRY 2651 __field(u32, status) 2652 __field(bool, peer_initiator) 2653 __field(u32, timestamp) 2654 __field(u16, switch_time) 2655 __field(u16, switch_timeout) 2656 ), 2657 2658 TP_fast_assign( 2659 LOCAL_ASSIGN; 2660 VIF_ASSIGN; 2661 STA_NAMED_ASSIGN(params->sta); 2662 CHANDEF_ASSIGN(params->chandef) 2663 __entry->peer_initiator = params->sta->tdls_initiator; 2664 __entry->action_code = params->action_code; 2665 __entry->status = params->status; 2666 __entry->timestamp = params->timestamp; 2667 __entry->switch_time = params->switch_time; 2668 __entry->switch_timeout = params->switch_timeout; 2669 ), 2670 2671 TP_printk( 2672 LOCAL_PR_FMT VIF_PR_FMT " received tdls channel switch packet" 2673 " action:%d status:%d time:%d switch time:%d switch" 2674 " timeout:%d initiator: %d chan:" CHANDEF_PR_FMT STA_PR_FMT, 2675 LOCAL_PR_ARG, VIF_PR_ARG, __entry->action_code, __entry->status, 2676 __entry->timestamp, __entry->switch_time, 2677 __entry->switch_timeout, __entry->peer_initiator, 2678 CHANDEF_PR_ARG, STA_PR_ARG 2679 ) 2680 ); 2681 2682 TRACE_EVENT(drv_wake_tx_queue, 2683 TP_PROTO(struct ieee80211_local *local, 2684 struct ieee80211_sub_if_data *sdata, 2685 struct txq_info *txq), 2686 2687 TP_ARGS(local, sdata, txq), 2688 2689 TP_STRUCT__entry( 2690 LOCAL_ENTRY 2691 VIF_ENTRY 2692 STA_ENTRY 2693 __field(u8, ac) 2694 __field(u8, tid) 2695 ), 2696 2697 TP_fast_assign( 2698 struct ieee80211_sta *sta = txq->txq.sta; 2699 2700 LOCAL_ASSIGN; 2701 VIF_ASSIGN; 2702 STA_ASSIGN; 2703 __entry->ac = txq->txq.ac; 2704 __entry->tid = txq->txq.tid; 2705 ), 2706 2707 TP_printk( 2708 LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT " ac:%d tid:%d", 2709 LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG, __entry->ac, __entry->tid 2710 ) 2711 ); 2712 2713 TRACE_EVENT(drv_get_ftm_responder_stats, 2714 TP_PROTO(struct ieee80211_local *local, 2715 struct ieee80211_sub_if_data *sdata, 2716 struct cfg80211_ftm_responder_stats *ftm_stats), 2717 2718 TP_ARGS(local, sdata, ftm_stats), 2719 2720 TP_STRUCT__entry( 2721 LOCAL_ENTRY 2722 VIF_ENTRY 2723 ), 2724 2725 TP_fast_assign( 2726 LOCAL_ASSIGN; 2727 VIF_ASSIGN; 2728 ), 2729 2730 TP_printk( 2731 LOCAL_PR_FMT VIF_PR_FMT, 2732 LOCAL_PR_ARG, VIF_PR_ARG 2733 ) 2734 ); 2735 2736 #endif /* !__MAC80211_DRIVER_TRACE || TRACE_HEADER_MULTI_READ */ 2737 2738 #undef TRACE_INCLUDE_PATH 2739 #define TRACE_INCLUDE_PATH . 2740 #undef TRACE_INCLUDE_FILE 2741 #define TRACE_INCLUDE_FILE trace 2742 #include <trace/define_trace.h> 2743