1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */ 20ecc4e68SVarka Bhadram /* Based on net/mac80211/trace.h */ 30ecc4e68SVarka Bhadram 40ecc4e68SVarka Bhadram #undef TRACE_SYSTEM 50ecc4e68SVarka Bhadram #define TRACE_SYSTEM mac802154 60ecc4e68SVarka Bhadram 70ecc4e68SVarka Bhadram #if !defined(__MAC802154_DRIVER_TRACE) || defined(TRACE_HEADER_MULTI_READ) 80ecc4e68SVarka Bhadram #define __MAC802154_DRIVER_TRACE 90ecc4e68SVarka Bhadram 100ecc4e68SVarka Bhadram #include <linux/tracepoint.h> 110ecc4e68SVarka Bhadram 120ecc4e68SVarka Bhadram #include <net/mac802154.h> 130ecc4e68SVarka Bhadram #include "ieee802154_i.h" 140ecc4e68SVarka Bhadram 150ecc4e68SVarka Bhadram #define MAXNAME 32 160ecc4e68SVarka Bhadram #define LOCAL_ENTRY __array(char, wpan_phy_name, MAXNAME) 17*cd912503SAzeem Shaikh #define LOCAL_ASSIGN strscpy(__entry->wpan_phy_name, \ 180ecc4e68SVarka Bhadram wpan_phy_name(local->hw.phy), MAXNAME) 190ecc4e68SVarka Bhadram #define LOCAL_PR_FMT "%s" 200ecc4e68SVarka Bhadram #define LOCAL_PR_ARG __entry->wpan_phy_name 210ecc4e68SVarka Bhadram 220ecc4e68SVarka Bhadram #define CCA_ENTRY __field(enum nl802154_cca_modes, cca_mode) \ 230ecc4e68SVarka Bhadram __field(enum nl802154_cca_opts, cca_opt) 240ecc4e68SVarka Bhadram #define CCA_ASSIGN \ 250ecc4e68SVarka Bhadram do { \ 260ecc4e68SVarka Bhadram (__entry->cca_mode) = cca->mode; \ 270ecc4e68SVarka Bhadram (__entry->cca_opt) = cca->opt; \ 280ecc4e68SVarka Bhadram } while (0) 290ecc4e68SVarka Bhadram #define CCA_PR_FMT "cca_mode: %d, cca_opt: %d" 300ecc4e68SVarka Bhadram #define CCA_PR_ARG __entry->cca_mode, __entry->cca_opt 310ecc4e68SVarka Bhadram 320ecc4e68SVarka Bhadram #define BOOL_TO_STR(bo) (bo) ? "true" : "false" 330ecc4e68SVarka Bhadram 340ecc4e68SVarka Bhadram /* Tracing for driver callbacks */ 350ecc4e68SVarka Bhadram 3614624a93SAlexei Starovoitov DECLARE_EVENT_CLASS(local_only_evt4, 370ecc4e68SVarka Bhadram TP_PROTO(struct ieee802154_local *local), 380ecc4e68SVarka Bhadram TP_ARGS(local), 390ecc4e68SVarka Bhadram TP_STRUCT__entry( 400ecc4e68SVarka Bhadram LOCAL_ENTRY 410ecc4e68SVarka Bhadram ), 420ecc4e68SVarka Bhadram TP_fast_assign( 430ecc4e68SVarka Bhadram LOCAL_ASSIGN; 440ecc4e68SVarka Bhadram ), 450ecc4e68SVarka Bhadram TP_printk(LOCAL_PR_FMT, LOCAL_PR_ARG) 460ecc4e68SVarka Bhadram ); 470ecc4e68SVarka Bhadram 4814624a93SAlexei Starovoitov DEFINE_EVENT(local_only_evt4, 802154_drv_return_void, 490ecc4e68SVarka Bhadram TP_PROTO(struct ieee802154_local *local), 500ecc4e68SVarka Bhadram TP_ARGS(local) 510ecc4e68SVarka Bhadram ); 520ecc4e68SVarka Bhadram 530ecc4e68SVarka Bhadram TRACE_EVENT(802154_drv_return_int, 540ecc4e68SVarka Bhadram TP_PROTO(struct ieee802154_local *local, int ret), 550ecc4e68SVarka Bhadram TP_ARGS(local, ret), 560ecc4e68SVarka Bhadram TP_STRUCT__entry( 570ecc4e68SVarka Bhadram LOCAL_ENTRY 580ecc4e68SVarka Bhadram __field(int, ret) 590ecc4e68SVarka Bhadram ), 600ecc4e68SVarka Bhadram TP_fast_assign( 610ecc4e68SVarka Bhadram LOCAL_ASSIGN; 620ecc4e68SVarka Bhadram __entry->ret = ret; 630ecc4e68SVarka Bhadram ), 640ecc4e68SVarka Bhadram TP_printk(LOCAL_PR_FMT ", returned: %d", LOCAL_PR_ARG, 650ecc4e68SVarka Bhadram __entry->ret) 660ecc4e68SVarka Bhadram ); 670ecc4e68SVarka Bhadram 6814624a93SAlexei Starovoitov DEFINE_EVENT(local_only_evt4, 802154_drv_start, 690ecc4e68SVarka Bhadram TP_PROTO(struct ieee802154_local *local), 700ecc4e68SVarka Bhadram TP_ARGS(local) 710ecc4e68SVarka Bhadram ); 720ecc4e68SVarka Bhadram 7314624a93SAlexei Starovoitov DEFINE_EVENT(local_only_evt4, 802154_drv_stop, 740ecc4e68SVarka Bhadram TP_PROTO(struct ieee802154_local *local), 750ecc4e68SVarka Bhadram TP_ARGS(local) 760ecc4e68SVarka Bhadram ); 770ecc4e68SVarka Bhadram 780ecc4e68SVarka Bhadram TRACE_EVENT(802154_drv_set_channel, 790ecc4e68SVarka Bhadram TP_PROTO(struct ieee802154_local *local, u8 page, u8 channel), 800ecc4e68SVarka Bhadram TP_ARGS(local, page, channel), 810ecc4e68SVarka Bhadram TP_STRUCT__entry( 820ecc4e68SVarka Bhadram LOCAL_ENTRY 830ecc4e68SVarka Bhadram __field(u8, page) 840ecc4e68SVarka Bhadram __field(u8, channel) 850ecc4e68SVarka Bhadram ), 860ecc4e68SVarka Bhadram TP_fast_assign( 870ecc4e68SVarka Bhadram LOCAL_ASSIGN; 880ecc4e68SVarka Bhadram __entry->page = page; 890ecc4e68SVarka Bhadram __entry->channel = channel; 900ecc4e68SVarka Bhadram ), 910ecc4e68SVarka Bhadram TP_printk(LOCAL_PR_FMT ", page: %d, channel: %d", LOCAL_PR_ARG, 920ecc4e68SVarka Bhadram __entry->page, __entry->channel) 930ecc4e68SVarka Bhadram ); 940ecc4e68SVarka Bhadram 950ecc4e68SVarka Bhadram TRACE_EVENT(802154_drv_set_cca_mode, 960ecc4e68SVarka Bhadram TP_PROTO(struct ieee802154_local *local, 970ecc4e68SVarka Bhadram const struct wpan_phy_cca *cca), 980ecc4e68SVarka Bhadram TP_ARGS(local, cca), 990ecc4e68SVarka Bhadram TP_STRUCT__entry( 1000ecc4e68SVarka Bhadram LOCAL_ENTRY 1010ecc4e68SVarka Bhadram CCA_ENTRY 1020ecc4e68SVarka Bhadram ), 1030ecc4e68SVarka Bhadram TP_fast_assign( 1040ecc4e68SVarka Bhadram LOCAL_ASSIGN; 1050ecc4e68SVarka Bhadram CCA_ASSIGN; 1060ecc4e68SVarka Bhadram ), 1070ecc4e68SVarka Bhadram TP_printk(LOCAL_PR_FMT ", " CCA_PR_FMT, LOCAL_PR_ARG, 1080ecc4e68SVarka Bhadram CCA_PR_ARG) 1090ecc4e68SVarka Bhadram ); 1100ecc4e68SVarka Bhadram 1110ecc4e68SVarka Bhadram TRACE_EVENT(802154_drv_set_cca_ed_level, 1120ecc4e68SVarka Bhadram TP_PROTO(struct ieee802154_local *local, s32 mbm), 1130ecc4e68SVarka Bhadram TP_ARGS(local, mbm), 1140ecc4e68SVarka Bhadram TP_STRUCT__entry( 1150ecc4e68SVarka Bhadram LOCAL_ENTRY 1160ecc4e68SVarka Bhadram __field(s32, mbm) 1170ecc4e68SVarka Bhadram ), 1180ecc4e68SVarka Bhadram TP_fast_assign( 1190ecc4e68SVarka Bhadram LOCAL_ASSIGN; 1200ecc4e68SVarka Bhadram __entry->mbm = mbm; 1210ecc4e68SVarka Bhadram ), 1220ecc4e68SVarka Bhadram TP_printk(LOCAL_PR_FMT ", ed level: %d", LOCAL_PR_ARG, 1230ecc4e68SVarka Bhadram __entry->mbm) 1240ecc4e68SVarka Bhadram ); 1250ecc4e68SVarka Bhadram 1260ecc4e68SVarka Bhadram TRACE_EVENT(802154_drv_set_tx_power, 1270ecc4e68SVarka Bhadram TP_PROTO(struct ieee802154_local *local, s32 power), 1280ecc4e68SVarka Bhadram TP_ARGS(local, power), 1290ecc4e68SVarka Bhadram TP_STRUCT__entry( 1300ecc4e68SVarka Bhadram LOCAL_ENTRY 1310ecc4e68SVarka Bhadram __field(s32, power) 1320ecc4e68SVarka Bhadram ), 1330ecc4e68SVarka Bhadram TP_fast_assign( 1340ecc4e68SVarka Bhadram LOCAL_ASSIGN; 1350ecc4e68SVarka Bhadram __entry->power = power; 1360ecc4e68SVarka Bhadram ), 1370ecc4e68SVarka Bhadram TP_printk(LOCAL_PR_FMT ", mbm: %d", LOCAL_PR_ARG, 1380ecc4e68SVarka Bhadram __entry->power) 1390ecc4e68SVarka Bhadram ); 1400ecc4e68SVarka Bhadram 1410ecc4e68SVarka Bhadram TRACE_EVENT(802154_drv_set_lbt_mode, 1420ecc4e68SVarka Bhadram TP_PROTO(struct ieee802154_local *local, bool mode), 1430ecc4e68SVarka Bhadram TP_ARGS(local, mode), 1440ecc4e68SVarka Bhadram TP_STRUCT__entry( 1450ecc4e68SVarka Bhadram LOCAL_ENTRY 1460ecc4e68SVarka Bhadram __field(bool, mode) 1470ecc4e68SVarka Bhadram ), 1480ecc4e68SVarka Bhadram TP_fast_assign( 1490ecc4e68SVarka Bhadram LOCAL_ASSIGN; 1500ecc4e68SVarka Bhadram __entry->mode = mode; 1510ecc4e68SVarka Bhadram ), 1520ecc4e68SVarka Bhadram TP_printk(LOCAL_PR_FMT ", lbt mode: %s", LOCAL_PR_ARG, 1530ecc4e68SVarka Bhadram BOOL_TO_STR(__entry->mode)) 1540ecc4e68SVarka Bhadram ); 1550ecc4e68SVarka Bhadram 1560ecc4e68SVarka Bhadram TRACE_EVENT(802154_drv_set_short_addr, 1570ecc4e68SVarka Bhadram TP_PROTO(struct ieee802154_local *local, __le16 short_addr), 1580ecc4e68SVarka Bhadram TP_ARGS(local, short_addr), 1590ecc4e68SVarka Bhadram TP_STRUCT__entry( 1600ecc4e68SVarka Bhadram LOCAL_ENTRY 1610ecc4e68SVarka Bhadram __field(__le16, short_addr) 1620ecc4e68SVarka Bhadram ), 1630ecc4e68SVarka Bhadram TP_fast_assign( 1640ecc4e68SVarka Bhadram LOCAL_ASSIGN; 1650ecc4e68SVarka Bhadram __entry->short_addr = short_addr; 1660ecc4e68SVarka Bhadram ), 1670ecc4e68SVarka Bhadram TP_printk(LOCAL_PR_FMT ", short addr: 0x%04x", LOCAL_PR_ARG, 1680ecc4e68SVarka Bhadram le16_to_cpu(__entry->short_addr)) 1690ecc4e68SVarka Bhadram ); 1700ecc4e68SVarka Bhadram 1710ecc4e68SVarka Bhadram TRACE_EVENT(802154_drv_set_pan_id, 1720ecc4e68SVarka Bhadram TP_PROTO(struct ieee802154_local *local, __le16 pan_id), 1730ecc4e68SVarka Bhadram TP_ARGS(local, pan_id), 1740ecc4e68SVarka Bhadram TP_STRUCT__entry( 1750ecc4e68SVarka Bhadram LOCAL_ENTRY 1760ecc4e68SVarka Bhadram __field(__le16, pan_id) 1770ecc4e68SVarka Bhadram ), 1780ecc4e68SVarka Bhadram TP_fast_assign( 1790ecc4e68SVarka Bhadram LOCAL_ASSIGN; 1800ecc4e68SVarka Bhadram __entry->pan_id = pan_id; 1810ecc4e68SVarka Bhadram ), 1820ecc4e68SVarka Bhadram TP_printk(LOCAL_PR_FMT ", pan id: 0x%04x", LOCAL_PR_ARG, 1830ecc4e68SVarka Bhadram le16_to_cpu(__entry->pan_id)) 1840ecc4e68SVarka Bhadram ); 1850ecc4e68SVarka Bhadram 1860ecc4e68SVarka Bhadram TRACE_EVENT(802154_drv_set_extended_addr, 1870ecc4e68SVarka Bhadram TP_PROTO(struct ieee802154_local *local, __le64 extended_addr), 1880ecc4e68SVarka Bhadram TP_ARGS(local, extended_addr), 1890ecc4e68SVarka Bhadram TP_STRUCT__entry( 1900ecc4e68SVarka Bhadram LOCAL_ENTRY 1910ecc4e68SVarka Bhadram __field(__le64, extended_addr) 1920ecc4e68SVarka Bhadram ), 1930ecc4e68SVarka Bhadram TP_fast_assign( 1940ecc4e68SVarka Bhadram LOCAL_ASSIGN; 1950ecc4e68SVarka Bhadram __entry->extended_addr = extended_addr; 1960ecc4e68SVarka Bhadram ), 1970ecc4e68SVarka Bhadram TP_printk(LOCAL_PR_FMT ", extended addr: 0x%llx", LOCAL_PR_ARG, 1980ecc4e68SVarka Bhadram le64_to_cpu(__entry->extended_addr)) 1990ecc4e68SVarka Bhadram ); 2000ecc4e68SVarka Bhadram 2010ecc4e68SVarka Bhadram TRACE_EVENT(802154_drv_set_pan_coord, 2020ecc4e68SVarka Bhadram TP_PROTO(struct ieee802154_local *local, bool is_coord), 2030ecc4e68SVarka Bhadram TP_ARGS(local, is_coord), 2040ecc4e68SVarka Bhadram TP_STRUCT__entry( 2050ecc4e68SVarka Bhadram LOCAL_ENTRY 2060ecc4e68SVarka Bhadram __field(bool, is_coord) 2070ecc4e68SVarka Bhadram ), 2080ecc4e68SVarka Bhadram TP_fast_assign( 2090ecc4e68SVarka Bhadram LOCAL_ASSIGN; 2100ecc4e68SVarka Bhadram __entry->is_coord = is_coord; 2110ecc4e68SVarka Bhadram ), 2120ecc4e68SVarka Bhadram TP_printk(LOCAL_PR_FMT ", is_coord: %s", LOCAL_PR_ARG, 2130ecc4e68SVarka Bhadram BOOL_TO_STR(__entry->is_coord)) 2140ecc4e68SVarka Bhadram ); 2150ecc4e68SVarka Bhadram 2160ecc4e68SVarka Bhadram TRACE_EVENT(802154_drv_set_csma_params, 2170ecc4e68SVarka Bhadram TP_PROTO(struct ieee802154_local *local, u8 min_be, u8 max_be, 2180ecc4e68SVarka Bhadram u8 max_csma_backoffs), 2190ecc4e68SVarka Bhadram TP_ARGS(local, min_be, max_be, max_csma_backoffs), 2200ecc4e68SVarka Bhadram TP_STRUCT__entry( 2210ecc4e68SVarka Bhadram LOCAL_ENTRY 2220ecc4e68SVarka Bhadram __field(u8, min_be) 2230ecc4e68SVarka Bhadram __field(u8, max_be) 2240ecc4e68SVarka Bhadram __field(u8, max_csma_backoffs) 2250ecc4e68SVarka Bhadram ), 2260ecc4e68SVarka Bhadram TP_fast_assign( 2270ecc4e68SVarka Bhadram LOCAL_ASSIGN, 2280ecc4e68SVarka Bhadram __entry->min_be = min_be; 2290ecc4e68SVarka Bhadram __entry->max_be = max_be; 2300ecc4e68SVarka Bhadram __entry->max_csma_backoffs = max_csma_backoffs; 2310ecc4e68SVarka Bhadram ), 2320ecc4e68SVarka Bhadram TP_printk(LOCAL_PR_FMT ", min be: %d, max be: %d, max csma backoffs: %d", 2330ecc4e68SVarka Bhadram LOCAL_PR_ARG, __entry->min_be, __entry->max_be, 2340ecc4e68SVarka Bhadram __entry->max_csma_backoffs) 2350ecc4e68SVarka Bhadram ); 2360ecc4e68SVarka Bhadram 2370ecc4e68SVarka Bhadram TRACE_EVENT(802154_drv_set_max_frame_retries, 2380ecc4e68SVarka Bhadram TP_PROTO(struct ieee802154_local *local, s8 max_frame_retries), 2390ecc4e68SVarka Bhadram TP_ARGS(local, max_frame_retries), 2400ecc4e68SVarka Bhadram TP_STRUCT__entry( 2410ecc4e68SVarka Bhadram LOCAL_ENTRY 2420ecc4e68SVarka Bhadram __field(s8, max_frame_retries) 2430ecc4e68SVarka Bhadram ), 2440ecc4e68SVarka Bhadram TP_fast_assign( 2450ecc4e68SVarka Bhadram LOCAL_ASSIGN; 2460ecc4e68SVarka Bhadram __entry->max_frame_retries = max_frame_retries; 2470ecc4e68SVarka Bhadram ), 2480ecc4e68SVarka Bhadram TP_printk(LOCAL_PR_FMT ", max frame retries: %d", LOCAL_PR_ARG, 2490ecc4e68SVarka Bhadram __entry->max_frame_retries) 2500ecc4e68SVarka Bhadram ); 2510ecc4e68SVarka Bhadram 2520ecc4e68SVarka Bhadram TRACE_EVENT(802154_drv_set_promiscuous_mode, 2530ecc4e68SVarka Bhadram TP_PROTO(struct ieee802154_local *local, bool on), 2540ecc4e68SVarka Bhadram TP_ARGS(local, on), 2550ecc4e68SVarka Bhadram TP_STRUCT__entry( 2560ecc4e68SVarka Bhadram LOCAL_ENTRY 2570ecc4e68SVarka Bhadram __field(bool, on) 2580ecc4e68SVarka Bhadram ), 2590ecc4e68SVarka Bhadram TP_fast_assign( 2600ecc4e68SVarka Bhadram LOCAL_ASSIGN; 2610ecc4e68SVarka Bhadram __entry->on = on; 2620ecc4e68SVarka Bhadram ), 2630ecc4e68SVarka Bhadram TP_printk(LOCAL_PR_FMT ", promiscuous mode: %s", LOCAL_PR_ARG, 2640ecc4e68SVarka Bhadram BOOL_TO_STR(__entry->on)) 2650ecc4e68SVarka Bhadram ); 2660ecc4e68SVarka Bhadram 267e29e3c7cSDavid Girault TRACE_EVENT(802154_new_scan_event, 268e29e3c7cSDavid Girault TP_PROTO(struct ieee802154_coord_desc *desc), 269e29e3c7cSDavid Girault TP_ARGS(desc), 270e29e3c7cSDavid Girault TP_STRUCT__entry( 271e29e3c7cSDavid Girault __field(__le16, pan_id) 272e29e3c7cSDavid Girault __field(__le64, addr) 273e29e3c7cSDavid Girault __field(u8, channel) 274e29e3c7cSDavid Girault __field(u8, page) 275e29e3c7cSDavid Girault ), 276e29e3c7cSDavid Girault TP_fast_assign( 277e29e3c7cSDavid Girault __entry->page = desc->page; 278e29e3c7cSDavid Girault __entry->channel = desc->channel; 279e29e3c7cSDavid Girault __entry->pan_id = desc->addr.pan_id; 280e29e3c7cSDavid Girault __entry->addr = desc->addr.extended_addr; 281e29e3c7cSDavid Girault ), 282e29e3c7cSDavid Girault TP_printk("panid: %u, coord_addr: 0x%llx, page: %u, channel: %u", 283e29e3c7cSDavid Girault __le16_to_cpu(__entry->pan_id), __le64_to_cpu(__entry->addr), 284e29e3c7cSDavid Girault __entry->page, __entry->channel) 285e29e3c7cSDavid Girault ); 286e29e3c7cSDavid Girault 287e29e3c7cSDavid Girault DEFINE_EVENT(802154_new_scan_event, 802154_scan_event, 288e29e3c7cSDavid Girault TP_PROTO(struct ieee802154_coord_desc *desc), 289e29e3c7cSDavid Girault TP_ARGS(desc) 290e29e3c7cSDavid Girault ); 291e29e3c7cSDavid Girault 2920ecc4e68SVarka Bhadram #endif /* !__MAC802154_DRIVER_TRACE || TRACE_HEADER_MULTI_READ */ 2930ecc4e68SVarka Bhadram 2940ecc4e68SVarka Bhadram #undef TRACE_INCLUDE_PATH 2950ecc4e68SVarka Bhadram #define TRACE_INCLUDE_PATH . 2960ecc4e68SVarka Bhadram #undef TRACE_INCLUDE_FILE 2970ecc4e68SVarka Bhadram #define TRACE_INCLUDE_FILE trace 2980ecc4e68SVarka Bhadram #include <trace/define_trace.h> 299