xref: /openbmc/linux/net/mac802154/trace.h (revision 1ac731c529cd4d6adbce134754b51ff7d822b145)
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