| .. | .. |
|---|
| 1 | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
|---|
| 2 | 2 | /* |
|---|
| 3 | 3 | * Portions of this file |
|---|
| 4 | | -* Copyright(c) 2016 Intel Deutschland GmbH |
|---|
| 5 | | -* Copyright (C) 2018 Intel Corporation |
|---|
| 4 | +* Copyright(c) 2016-2017 Intel Deutschland GmbH |
|---|
| 5 | +* Copyright (C) 2018 - 2019 Intel Corporation |
|---|
| 6 | 6 | */ |
|---|
| 7 | 7 | |
|---|
| 8 | 8 | #if !defined(__MAC80211_DRIVER_TRACE) || defined(TRACE_HEADER_MULTI_READ) |
|---|
| .. | .. |
|---|
| 22 | 22 | #define LOCAL_PR_ARG __entry->wiphy_name |
|---|
| 23 | 23 | |
|---|
| 24 | 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)) |
|---|
| 25 | +#define STA_ASSIGN (sta ? memcpy(__entry->sta_addr, sta->addr, ETH_ALEN) : \ |
|---|
| 26 | + eth_zero_addr(__entry->sta_addr)) |
|---|
| 26 | 27 | #define STA_NAMED_ASSIGN(s) memcpy(__entry->sta_addr, (s)->addr, ETH_ALEN) |
|---|
| 27 | 28 | #define STA_PR_FMT " sta:%pM" |
|---|
| 28 | 29 | #define STA_PR_ARG __entry->sta_addr |
|---|
| .. | .. |
|---|
| 37 | 38 | #define VIF_PR_ARG __get_str(vif_name), __entry->vif_type, __entry->p2p ? "/p2p" : "" |
|---|
| 38 | 39 | |
|---|
| 39 | 40 | #define CHANDEF_ENTRY __field(u32, control_freq) \ |
|---|
| 41 | + __field(u32, freq_offset) \ |
|---|
| 40 | 42 | __field(u32, chan_width) \ |
|---|
| 41 | 43 | __field(u32, center_freq1) \ |
|---|
| 44 | + __field(u32, freq1_offset) \ |
|---|
| 42 | 45 | __field(u32, center_freq2) |
|---|
| 43 | 46 | #define CHANDEF_ASSIGN(c) \ |
|---|
| 44 | 47 | __entry->control_freq = (c) ? ((c)->chan ? (c)->chan->center_freq : 0) : 0; \ |
|---|
| 48 | + __entry->freq_offset = (c) ? ((c)->chan ? (c)->chan->freq_offset : 0) : 0; \ |
|---|
| 45 | 49 | __entry->chan_width = (c) ? (c)->width : 0; \ |
|---|
| 46 | 50 | __entry->center_freq1 = (c) ? (c)->center_freq1 : 0; \ |
|---|
| 51 | + __entry->freq1_offset = (c) ? (c)->freq1_offset : 0; \ |
|---|
| 47 | 52 | __entry->center_freq2 = (c) ? (c)->center_freq2 : 0; |
|---|
| 48 | | -#define CHANDEF_PR_FMT " control:%d MHz width:%d center: %d/%d MHz" |
|---|
| 49 | | -#define CHANDEF_PR_ARG __entry->control_freq, __entry->chan_width, \ |
|---|
| 50 | | - __entry->center_freq1, __entry->center_freq2 |
|---|
| 53 | +#define CHANDEF_PR_FMT " control:%d.%03d MHz width:%d center: %d.%03d/%d MHz" |
|---|
| 54 | +#define CHANDEF_PR_ARG __entry->control_freq, __entry->freq_offset, __entry->chan_width, \ |
|---|
| 55 | + __entry->center_freq1, __entry->freq1_offset, __entry->center_freq2 |
|---|
| 51 | 56 | |
|---|
| 52 | 57 | #define MIN_CHANDEF_ENTRY \ |
|---|
| 53 | 58 | __field(u32, min_control_freq) \ |
|---|
| 59 | + __field(u32, min_freq_offset) \ |
|---|
| 54 | 60 | __field(u32, min_chan_width) \ |
|---|
| 55 | 61 | __field(u32, min_center_freq1) \ |
|---|
| 62 | + __field(u32, min_freq1_offset) \ |
|---|
| 56 | 63 | __field(u32, min_center_freq2) |
|---|
| 57 | 64 | |
|---|
| 58 | 65 | #define MIN_CHANDEF_ASSIGN(c) \ |
|---|
| 59 | 66 | __entry->min_control_freq = (c)->chan ? (c)->chan->center_freq : 0; \ |
|---|
| 67 | + __entry->min_freq_offset = (c)->chan ? (c)->chan->freq_offset : 0; \ |
|---|
| 60 | 68 | __entry->min_chan_width = (c)->width; \ |
|---|
| 61 | 69 | __entry->min_center_freq1 = (c)->center_freq1; \ |
|---|
| 70 | + __entry->min_freq1_offset = (c)->freq1_offset; \ |
|---|
| 62 | 71 | __entry->min_center_freq2 = (c)->center_freq2; |
|---|
| 63 | | -#define MIN_CHANDEF_PR_FMT " min_control:%d MHz min_width:%d min_center: %d/%d MHz" |
|---|
| 64 | | -#define MIN_CHANDEF_PR_ARG __entry->min_control_freq, __entry->min_chan_width, \ |
|---|
| 65 | | - __entry->min_center_freq1, __entry->min_center_freq2 |
|---|
| 72 | +#define MIN_CHANDEF_PR_FMT " min_control:%d.%03d MHz min_width:%d min_center: %d.%03d/%d MHz" |
|---|
| 73 | +#define MIN_CHANDEF_PR_ARG __entry->min_control_freq, __entry->min_freq_offset, \ |
|---|
| 74 | + __entry->min_chan_width, \ |
|---|
| 75 | + __entry->min_center_freq1, __entry->min_freq1_offset, \ |
|---|
| 76 | + __entry->min_center_freq2 |
|---|
| 66 | 77 | |
|---|
| 67 | 78 | #define CHANCTX_ENTRY CHANDEF_ENTRY \ |
|---|
| 68 | 79 | MIN_CHANDEF_ENTRY \ |
|---|
| .. | .. |
|---|
| 408 | 419 | __field(u32, basic_rates) |
|---|
| 409 | 420 | __array(int, mcast_rate, NUM_NL80211_BANDS) |
|---|
| 410 | 421 | __field(u16, ht_operation_mode) |
|---|
| 411 | | - __field(s32, cqm_rssi_thold); |
|---|
| 412 | | - __field(s32, cqm_rssi_hyst); |
|---|
| 413 | | - __field(u32, channel_width); |
|---|
| 414 | | - __field(u32, channel_cfreq1); |
|---|
| 422 | + __field(s32, cqm_rssi_thold) |
|---|
| 423 | + __field(s32, cqm_rssi_hyst) |
|---|
| 424 | + __field(u32, channel_width) |
|---|
| 425 | + __field(u32, channel_cfreq1) |
|---|
| 426 | + __field(u32, channel_cfreq1_offset) |
|---|
| 415 | 427 | __dynamic_array(u32, arp_addr_list, |
|---|
| 416 | 428 | info->arp_addr_cnt > IEEE80211_BSS_ARP_ADDR_LIST_LEN ? |
|---|
| 417 | 429 | IEEE80211_BSS_ARP_ADDR_LIST_LEN : |
|---|
| 418 | | - info->arp_addr_cnt); |
|---|
| 419 | | - __field(int, arp_addr_cnt); |
|---|
| 420 | | - __field(bool, qos); |
|---|
| 421 | | - __field(bool, idle); |
|---|
| 422 | | - __field(bool, ps); |
|---|
| 423 | | - __dynamic_array(u8, ssid, info->ssid_len); |
|---|
| 424 | | - __field(bool, hidden_ssid); |
|---|
| 430 | + info->arp_addr_cnt) |
|---|
| 431 | + __field(int, arp_addr_cnt) |
|---|
| 432 | + __field(bool, qos) |
|---|
| 433 | + __field(bool, idle) |
|---|
| 434 | + __field(bool, ps) |
|---|
| 435 | + __dynamic_array(u8, ssid, info->ssid_len) |
|---|
| 436 | + __field(bool, hidden_ssid) |
|---|
| 425 | 437 | __field(int, txpower) |
|---|
| 426 | 438 | __field(u8, p2p_oppps_ctwindow) |
|---|
| 427 | 439 | ), |
|---|
| .. | .. |
|---|
| 452 | 464 | __entry->cqm_rssi_hyst = info->cqm_rssi_hyst; |
|---|
| 453 | 465 | __entry->channel_width = info->chandef.width; |
|---|
| 454 | 466 | __entry->channel_cfreq1 = info->chandef.center_freq1; |
|---|
| 467 | + __entry->channel_cfreq1_offset = info->chandef.freq1_offset; |
|---|
| 455 | 468 | __entry->arp_addr_cnt = info->arp_addr_cnt; |
|---|
| 456 | 469 | memcpy(__get_dynamic_array(arp_addr_list), info->arp_addr_list, |
|---|
| 457 | 470 | sizeof(u32) * (info->arp_addr_cnt > IEEE80211_BSS_ARP_ADDR_LIST_LEN ? |
|---|
| .. | .. |
|---|
| 828 | 841 | ) |
|---|
| 829 | 842 | ); |
|---|
| 830 | 843 | |
|---|
| 844 | +TRACE_EVENT(drv_sta_set_txpwr, |
|---|
| 845 | + TP_PROTO(struct ieee80211_local *local, |
|---|
| 846 | + struct ieee80211_sub_if_data *sdata, |
|---|
| 847 | + struct ieee80211_sta *sta), |
|---|
| 848 | + |
|---|
| 849 | + TP_ARGS(local, sdata, sta), |
|---|
| 850 | + |
|---|
| 851 | + TP_STRUCT__entry( |
|---|
| 852 | + LOCAL_ENTRY |
|---|
| 853 | + VIF_ENTRY |
|---|
| 854 | + STA_ENTRY |
|---|
| 855 | + __field(s16, txpwr) |
|---|
| 856 | + __field(u8, type) |
|---|
| 857 | + ), |
|---|
| 858 | + |
|---|
| 859 | + TP_fast_assign( |
|---|
| 860 | + LOCAL_ASSIGN; |
|---|
| 861 | + VIF_ASSIGN; |
|---|
| 862 | + STA_ASSIGN; |
|---|
| 863 | + __entry->txpwr = sta->txpwr.power; |
|---|
| 864 | + __entry->type = sta->txpwr.type; |
|---|
| 865 | + ), |
|---|
| 866 | + |
|---|
| 867 | + TP_printk( |
|---|
| 868 | + LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT " txpwr: %d type %d", |
|---|
| 869 | + LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG, |
|---|
| 870 | + __entry->txpwr, __entry->type |
|---|
| 871 | + ) |
|---|
| 872 | +); |
|---|
| 873 | + |
|---|
| 831 | 874 | TRACE_EVENT(drv_sta_rc_update, |
|---|
| 832 | 875 | TP_PROTO(struct ieee80211_local *local, |
|---|
| 833 | 876 | struct ieee80211_sub_if_data *sdata, |
|---|
| .. | .. |
|---|
| 1052 | 1095 | ); |
|---|
| 1053 | 1096 | |
|---|
| 1054 | 1097 | TRACE_EVENT(drv_get_survey, |
|---|
| 1055 | | - TP_PROTO(struct ieee80211_local *local, int idx, |
|---|
| 1098 | + TP_PROTO(struct ieee80211_local *local, int _idx, |
|---|
| 1056 | 1099 | struct survey_info *survey), |
|---|
| 1057 | 1100 | |
|---|
| 1058 | | - TP_ARGS(local, idx, survey), |
|---|
| 1101 | + TP_ARGS(local, _idx, survey), |
|---|
| 1059 | 1102 | |
|---|
| 1060 | 1103 | TP_STRUCT__entry( |
|---|
| 1061 | 1104 | LOCAL_ENTRY |
|---|
| .. | .. |
|---|
| 1064 | 1107 | |
|---|
| 1065 | 1108 | TP_fast_assign( |
|---|
| 1066 | 1109 | LOCAL_ASSIGN; |
|---|
| 1067 | | - __entry->idx = idx; |
|---|
| 1110 | + __entry->idx = _idx; |
|---|
| 1068 | 1111 | ), |
|---|
| 1069 | 1112 | |
|---|
| 1070 | 1113 | TP_printk( |
|---|
| .. | .. |
|---|
| 1193 | 1236 | LOCAL_ENTRY |
|---|
| 1194 | 1237 | VIF_ENTRY |
|---|
| 1195 | 1238 | __field(int, center_freq) |
|---|
| 1239 | + __field(int, freq_offset) |
|---|
| 1196 | 1240 | __field(unsigned int, duration) |
|---|
| 1197 | 1241 | __field(u32, type) |
|---|
| 1198 | 1242 | ), |
|---|
| .. | .. |
|---|
| 1201 | 1245 | LOCAL_ASSIGN; |
|---|
| 1202 | 1246 | VIF_ASSIGN; |
|---|
| 1203 | 1247 | __entry->center_freq = chan->center_freq; |
|---|
| 1248 | + __entry->freq_offset = chan->freq_offset; |
|---|
| 1204 | 1249 | __entry->duration = duration; |
|---|
| 1205 | 1250 | __entry->type = type; |
|---|
| 1206 | 1251 | ), |
|---|
| 1207 | 1252 | |
|---|
| 1208 | 1253 | TP_printk( |
|---|
| 1209 | | - LOCAL_PR_FMT VIF_PR_FMT " freq:%dMHz duration:%dms type=%d", |
|---|
| 1254 | + LOCAL_PR_FMT VIF_PR_FMT " freq:%d.%03dMHz duration:%dms type=%d", |
|---|
| 1210 | 1255 | LOCAL_PR_ARG, VIF_PR_ARG, |
|---|
| 1211 | | - __entry->center_freq, __entry->duration, __entry->type |
|---|
| 1256 | + __entry->center_freq, __entry->freq_offset, |
|---|
| 1257 | + __entry->duration, __entry->type |
|---|
| 1212 | 1258 | ) |
|---|
| 1213 | 1259 | ); |
|---|
| 1214 | 1260 | |
|---|
| 1215 | | -DEFINE_EVENT(local_only_evt, drv_cancel_remain_on_channel, |
|---|
| 1216 | | - TP_PROTO(struct ieee80211_local *local), |
|---|
| 1217 | | - TP_ARGS(local) |
|---|
| 1261 | +DEFINE_EVENT(local_sdata_evt, drv_cancel_remain_on_channel, |
|---|
| 1262 | + TP_PROTO(struct ieee80211_local *local, |
|---|
| 1263 | + struct ieee80211_sub_if_data *sdata), |
|---|
| 1264 | + TP_ARGS(local, sdata) |
|---|
| 1218 | 1265 | ); |
|---|
| 1219 | 1266 | |
|---|
| 1220 | 1267 | TRACE_EVENT(drv_set_ringparam, |
|---|
| .. | .. |
|---|
| 1515 | 1562 | |
|---|
| 1516 | 1563 | struct trace_chandef_entry { |
|---|
| 1517 | 1564 | u32 control_freq; |
|---|
| 1565 | + u32 freq_offset; |
|---|
| 1518 | 1566 | u32 chan_width; |
|---|
| 1519 | 1567 | u32 center_freq1; |
|---|
| 1568 | + u32 freq1_offset; |
|---|
| 1520 | 1569 | u32 center_freq2; |
|---|
| 1521 | 1570 | } __packed; |
|---|
| 1522 | 1571 | |
|---|
| .. | .. |
|---|
| 1566 | 1615 | sizeof(local_vifs[i].vif.vif_name)); |
|---|
| 1567 | 1616 | SWITCH_ENTRY_ASSIGN(old_chandef.control_freq, |
|---|
| 1568 | 1617 | old_ctx->def.chan->center_freq); |
|---|
| 1618 | + SWITCH_ENTRY_ASSIGN(old_chandef.freq_offset, |
|---|
| 1619 | + old_ctx->def.chan->freq_offset); |
|---|
| 1569 | 1620 | SWITCH_ENTRY_ASSIGN(old_chandef.chan_width, |
|---|
| 1570 | 1621 | old_ctx->def.width); |
|---|
| 1571 | 1622 | SWITCH_ENTRY_ASSIGN(old_chandef.center_freq1, |
|---|
| 1572 | 1623 | old_ctx->def.center_freq1); |
|---|
| 1624 | + SWITCH_ENTRY_ASSIGN(old_chandef.freq1_offset, |
|---|
| 1625 | + old_ctx->def.freq1_offset); |
|---|
| 1573 | 1626 | SWITCH_ENTRY_ASSIGN(old_chandef.center_freq2, |
|---|
| 1574 | 1627 | old_ctx->def.center_freq2); |
|---|
| 1575 | 1628 | SWITCH_ENTRY_ASSIGN(new_chandef.control_freq, |
|---|
| 1576 | 1629 | new_ctx->def.chan->center_freq); |
|---|
| 1630 | + SWITCH_ENTRY_ASSIGN(new_chandef.freq_offset, |
|---|
| 1631 | + new_ctx->def.chan->freq_offset); |
|---|
| 1577 | 1632 | SWITCH_ENTRY_ASSIGN(new_chandef.chan_width, |
|---|
| 1578 | 1633 | new_ctx->def.width); |
|---|
| 1579 | 1634 | SWITCH_ENTRY_ASSIGN(new_chandef.center_freq1, |
|---|
| 1580 | 1635 | new_ctx->def.center_freq1); |
|---|
| 1636 | + SWITCH_ENTRY_ASSIGN(new_chandef.freq1_offset, |
|---|
| 1637 | + new_ctx->def.freq1_offset); |
|---|
| 1581 | 1638 | SWITCH_ENTRY_ASSIGN(new_chandef.center_freq2, |
|---|
| 1582 | 1639 | new_ctx->def.center_freq2); |
|---|
| 1583 | 1640 | } |
|---|
| .. | .. |
|---|
| 1641 | 1698 | VIF_ENTRY |
|---|
| 1642 | 1699 | __field(u8, dtimper) |
|---|
| 1643 | 1700 | __field(u16, bcnint) |
|---|
| 1644 | | - __dynamic_array(u8, ssid, info->ssid_len); |
|---|
| 1645 | | - __field(bool, hidden_ssid); |
|---|
| 1701 | + __dynamic_array(u8, ssid, info->ssid_len) |
|---|
| 1702 | + __field(bool, hidden_ssid) |
|---|
| 1646 | 1703 | ), |
|---|
| 1647 | 1704 | |
|---|
| 1648 | 1705 | TP_fast_assign( |
|---|
| .. | .. |
|---|
| 1708 | 1765 | VIF_ENTRY |
|---|
| 1709 | 1766 | __field(u8, dtimper) |
|---|
| 1710 | 1767 | __field(u16, bcnint) |
|---|
| 1711 | | - __dynamic_array(u8, ssid, info->ssid_len); |
|---|
| 1768 | + __dynamic_array(u8, ssid, info->ssid_len) |
|---|
| 1712 | 1769 | ), |
|---|
| 1713 | 1770 | |
|---|
| 1714 | 1771 | TP_fast_assign( |
|---|
| .. | .. |
|---|
| 1880 | 1937 | ", instance_id: %u", |
|---|
| 1881 | 1938 | LOCAL_PR_ARG, VIF_PR_ARG, __entry->instance_id |
|---|
| 1882 | 1939 | ) |
|---|
| 1940 | +); |
|---|
| 1941 | + |
|---|
| 1942 | +DEFINE_EVENT(local_sdata_evt, drv_start_pmsr, |
|---|
| 1943 | + TP_PROTO(struct ieee80211_local *local, |
|---|
| 1944 | + struct ieee80211_sub_if_data *sdata), |
|---|
| 1945 | + TP_ARGS(local, sdata) |
|---|
| 1946 | +); |
|---|
| 1947 | + |
|---|
| 1948 | +DEFINE_EVENT(local_sdata_evt, drv_abort_pmsr, |
|---|
| 1949 | + TP_PROTO(struct ieee80211_local *local, |
|---|
| 1950 | + struct ieee80211_sub_if_data *sdata), |
|---|
| 1951 | + TP_ARGS(local, sdata) |
|---|
| 1883 | 1952 | ); |
|---|
| 1884 | 1953 | |
|---|
| 1885 | 1954 | /* |
|---|
| .. | .. |
|---|
| 2440 | 2509 | TP_ARGS(local, sdata) |
|---|
| 2441 | 2510 | ); |
|---|
| 2442 | 2511 | |
|---|
| 2512 | +DEFINE_EVENT(local_sdata_evt, drv_abort_channel_switch, |
|---|
| 2513 | + TP_PROTO(struct ieee80211_local *local, |
|---|
| 2514 | + struct ieee80211_sub_if_data *sdata), |
|---|
| 2515 | + TP_ARGS(local, sdata) |
|---|
| 2516 | +); |
|---|
| 2517 | + |
|---|
| 2518 | +TRACE_EVENT(drv_channel_switch_rx_beacon, |
|---|
| 2519 | + TP_PROTO(struct ieee80211_local *local, |
|---|
| 2520 | + struct ieee80211_sub_if_data *sdata, |
|---|
| 2521 | + struct ieee80211_channel_switch *ch_switch), |
|---|
| 2522 | + |
|---|
| 2523 | + TP_ARGS(local, sdata, ch_switch), |
|---|
| 2524 | + |
|---|
| 2525 | + TP_STRUCT__entry( |
|---|
| 2526 | + LOCAL_ENTRY |
|---|
| 2527 | + VIF_ENTRY |
|---|
| 2528 | + CHANDEF_ENTRY |
|---|
| 2529 | + __field(u64, timestamp) |
|---|
| 2530 | + __field(u32, device_timestamp) |
|---|
| 2531 | + __field(bool, block_tx) |
|---|
| 2532 | + __field(u8, count) |
|---|
| 2533 | + ), |
|---|
| 2534 | + |
|---|
| 2535 | + TP_fast_assign( |
|---|
| 2536 | + LOCAL_ASSIGN; |
|---|
| 2537 | + VIF_ASSIGN; |
|---|
| 2538 | + CHANDEF_ASSIGN(&ch_switch->chandef) |
|---|
| 2539 | + __entry->timestamp = ch_switch->timestamp; |
|---|
| 2540 | + __entry->device_timestamp = ch_switch->device_timestamp; |
|---|
| 2541 | + __entry->block_tx = ch_switch->block_tx; |
|---|
| 2542 | + __entry->count = ch_switch->count; |
|---|
| 2543 | + ), |
|---|
| 2544 | + |
|---|
| 2545 | + TP_printk( |
|---|
| 2546 | + LOCAL_PR_FMT VIF_PR_FMT |
|---|
| 2547 | + " received a channel switch beacon to " |
|---|
| 2548 | + CHANDEF_PR_FMT " count:%d block_tx:%d timestamp:%llu", |
|---|
| 2549 | + LOCAL_PR_ARG, VIF_PR_ARG, CHANDEF_PR_ARG, __entry->count, |
|---|
| 2550 | + __entry->block_tx, __entry->timestamp |
|---|
| 2551 | + ) |
|---|
| 2552 | +); |
|---|
| 2553 | + |
|---|
| 2443 | 2554 | TRACE_EVENT(drv_get_txpower, |
|---|
| 2444 | 2555 | TP_PROTO(struct ieee80211_local *local, |
|---|
| 2445 | 2556 | struct ieee80211_sub_if_data *sdata, |
|---|
| .. | .. |
|---|
| 2600 | 2711 | ) |
|---|
| 2601 | 2712 | ); |
|---|
| 2602 | 2713 | |
|---|
| 2714 | +TRACE_EVENT(drv_get_ftm_responder_stats, |
|---|
| 2715 | + TP_PROTO(struct ieee80211_local *local, |
|---|
| 2716 | + struct ieee80211_sub_if_data *sdata, |
|---|
| 2717 | + struct cfg80211_ftm_responder_stats *ftm_stats), |
|---|
| 2718 | + |
|---|
| 2719 | + TP_ARGS(local, sdata, ftm_stats), |
|---|
| 2720 | + |
|---|
| 2721 | + TP_STRUCT__entry( |
|---|
| 2722 | + LOCAL_ENTRY |
|---|
| 2723 | + VIF_ENTRY |
|---|
| 2724 | + ), |
|---|
| 2725 | + |
|---|
| 2726 | + TP_fast_assign( |
|---|
| 2727 | + LOCAL_ASSIGN; |
|---|
| 2728 | + VIF_ASSIGN; |
|---|
| 2729 | + ), |
|---|
| 2730 | + |
|---|
| 2731 | + TP_printk( |
|---|
| 2732 | + LOCAL_PR_FMT VIF_PR_FMT, |
|---|
| 2733 | + LOCAL_PR_ARG, VIF_PR_ARG |
|---|
| 2734 | + ) |
|---|
| 2735 | +); |
|---|
| 2736 | + |
|---|
| 2737 | +DEFINE_EVENT(local_sdata_addr_evt, drv_update_vif_offload, |
|---|
| 2738 | + TP_PROTO(struct ieee80211_local *local, |
|---|
| 2739 | + struct ieee80211_sub_if_data *sdata), |
|---|
| 2740 | + TP_ARGS(local, sdata) |
|---|
| 2741 | +); |
|---|
| 2742 | + |
|---|
| 2743 | +TRACE_EVENT(drv_sta_set_4addr, |
|---|
| 2744 | + TP_PROTO(struct ieee80211_local *local, |
|---|
| 2745 | + struct ieee80211_sub_if_data *sdata, |
|---|
| 2746 | + struct ieee80211_sta *sta, bool enabled), |
|---|
| 2747 | + |
|---|
| 2748 | + TP_ARGS(local, sdata, sta, enabled), |
|---|
| 2749 | + |
|---|
| 2750 | + TP_STRUCT__entry( |
|---|
| 2751 | + LOCAL_ENTRY |
|---|
| 2752 | + VIF_ENTRY |
|---|
| 2753 | + STA_ENTRY |
|---|
| 2754 | + __field(bool, enabled) |
|---|
| 2755 | + ), |
|---|
| 2756 | + |
|---|
| 2757 | + TP_fast_assign( |
|---|
| 2758 | + LOCAL_ASSIGN; |
|---|
| 2759 | + VIF_ASSIGN; |
|---|
| 2760 | + STA_ASSIGN; |
|---|
| 2761 | + __entry->enabled = enabled; |
|---|
| 2762 | + ), |
|---|
| 2763 | + |
|---|
| 2764 | + TP_printk( |
|---|
| 2765 | + LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT " enabled:%d", |
|---|
| 2766 | + LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG, __entry->enabled |
|---|
| 2767 | + ) |
|---|
| 2768 | +); |
|---|
| 2769 | + |
|---|
| 2603 | 2770 | #endif /* !__MAC80211_DRIVER_TRACE || TRACE_HEADER_MULTI_READ */ |
|---|
| 2604 | 2771 | |
|---|
| 2605 | 2772 | #undef TRACE_INCLUDE_PATH |
|---|