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