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