xref: /OK3568_Linux_fs/kernel/net/mac802154/trace.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */
2*4882a593Smuzhiyun /* Based on net/mac80211/trace.h */
3*4882a593Smuzhiyun 
4*4882a593Smuzhiyun #undef TRACE_SYSTEM
5*4882a593Smuzhiyun #define TRACE_SYSTEM mac802154
6*4882a593Smuzhiyun 
7*4882a593Smuzhiyun #if !defined(__MAC802154_DRIVER_TRACE) || defined(TRACE_HEADER_MULTI_READ)
8*4882a593Smuzhiyun #define __MAC802154_DRIVER_TRACE
9*4882a593Smuzhiyun 
10*4882a593Smuzhiyun #include <linux/tracepoint.h>
11*4882a593Smuzhiyun 
12*4882a593Smuzhiyun #include <net/mac802154.h>
13*4882a593Smuzhiyun #include "ieee802154_i.h"
14*4882a593Smuzhiyun 
15*4882a593Smuzhiyun #define MAXNAME		32
16*4882a593Smuzhiyun #define LOCAL_ENTRY	__array(char, wpan_phy_name, MAXNAME)
17*4882a593Smuzhiyun #define LOCAL_ASSIGN	strlcpy(__entry->wpan_phy_name, \
18*4882a593Smuzhiyun 				wpan_phy_name(local->hw.phy), MAXNAME)
19*4882a593Smuzhiyun #define LOCAL_PR_FMT	"%s"
20*4882a593Smuzhiyun #define LOCAL_PR_ARG	__entry->wpan_phy_name
21*4882a593Smuzhiyun 
22*4882a593Smuzhiyun #define CCA_ENTRY __field(enum nl802154_cca_modes, cca_mode) \
23*4882a593Smuzhiyun 		  __field(enum nl802154_cca_opts, cca_opt)
24*4882a593Smuzhiyun #define CCA_ASSIGN \
25*4882a593Smuzhiyun 	do {                                     \
26*4882a593Smuzhiyun 		(__entry->cca_mode) = cca->mode; \
27*4882a593Smuzhiyun 		(__entry->cca_opt) = cca->opt;   \
28*4882a593Smuzhiyun 	} while (0)
29*4882a593Smuzhiyun #define CCA_PR_FMT "cca_mode: %d, cca_opt: %d"
30*4882a593Smuzhiyun #define CCA_PR_ARG __entry->cca_mode, __entry->cca_opt
31*4882a593Smuzhiyun 
32*4882a593Smuzhiyun #define BOOL_TO_STR(bo) (bo) ? "true" : "false"
33*4882a593Smuzhiyun 
34*4882a593Smuzhiyun /* Tracing for driver callbacks */
35*4882a593Smuzhiyun 
36*4882a593Smuzhiyun DECLARE_EVENT_CLASS(local_only_evt4,
37*4882a593Smuzhiyun 	TP_PROTO(struct ieee802154_local *local),
38*4882a593Smuzhiyun 	TP_ARGS(local),
39*4882a593Smuzhiyun 	TP_STRUCT__entry(
40*4882a593Smuzhiyun 		LOCAL_ENTRY
41*4882a593Smuzhiyun 	),
42*4882a593Smuzhiyun 	TP_fast_assign(
43*4882a593Smuzhiyun 		LOCAL_ASSIGN;
44*4882a593Smuzhiyun 	),
45*4882a593Smuzhiyun 	TP_printk(LOCAL_PR_FMT, LOCAL_PR_ARG)
46*4882a593Smuzhiyun );
47*4882a593Smuzhiyun 
48*4882a593Smuzhiyun DEFINE_EVENT(local_only_evt4, 802154_drv_return_void,
49*4882a593Smuzhiyun 	TP_PROTO(struct ieee802154_local *local),
50*4882a593Smuzhiyun 	TP_ARGS(local)
51*4882a593Smuzhiyun );
52*4882a593Smuzhiyun 
53*4882a593Smuzhiyun TRACE_EVENT(802154_drv_return_int,
54*4882a593Smuzhiyun 	TP_PROTO(struct ieee802154_local *local, int ret),
55*4882a593Smuzhiyun 	TP_ARGS(local, ret),
56*4882a593Smuzhiyun 	TP_STRUCT__entry(
57*4882a593Smuzhiyun 		LOCAL_ENTRY
58*4882a593Smuzhiyun 		__field(int, ret)
59*4882a593Smuzhiyun 	),
60*4882a593Smuzhiyun 	TP_fast_assign(
61*4882a593Smuzhiyun 		LOCAL_ASSIGN;
62*4882a593Smuzhiyun 		__entry->ret = ret;
63*4882a593Smuzhiyun 	),
64*4882a593Smuzhiyun 	TP_printk(LOCAL_PR_FMT ", returned: %d", LOCAL_PR_ARG,
65*4882a593Smuzhiyun 		  __entry->ret)
66*4882a593Smuzhiyun );
67*4882a593Smuzhiyun 
68*4882a593Smuzhiyun DEFINE_EVENT(local_only_evt4, 802154_drv_start,
69*4882a593Smuzhiyun 	TP_PROTO(struct ieee802154_local *local),
70*4882a593Smuzhiyun 	TP_ARGS(local)
71*4882a593Smuzhiyun );
72*4882a593Smuzhiyun 
73*4882a593Smuzhiyun DEFINE_EVENT(local_only_evt4, 802154_drv_stop,
74*4882a593Smuzhiyun 	TP_PROTO(struct ieee802154_local *local),
75*4882a593Smuzhiyun 	TP_ARGS(local)
76*4882a593Smuzhiyun );
77*4882a593Smuzhiyun 
78*4882a593Smuzhiyun TRACE_EVENT(802154_drv_set_channel,
79*4882a593Smuzhiyun 	TP_PROTO(struct ieee802154_local *local, u8 page, u8 channel),
80*4882a593Smuzhiyun 	TP_ARGS(local, page, channel),
81*4882a593Smuzhiyun 	TP_STRUCT__entry(
82*4882a593Smuzhiyun 		LOCAL_ENTRY
83*4882a593Smuzhiyun 		__field(u8, page)
84*4882a593Smuzhiyun 		__field(u8, channel)
85*4882a593Smuzhiyun 	),
86*4882a593Smuzhiyun 	TP_fast_assign(
87*4882a593Smuzhiyun 		LOCAL_ASSIGN;
88*4882a593Smuzhiyun 		__entry->page = page;
89*4882a593Smuzhiyun 		__entry->channel = channel;
90*4882a593Smuzhiyun 	),
91*4882a593Smuzhiyun 	TP_printk(LOCAL_PR_FMT ", page: %d, channel: %d", LOCAL_PR_ARG,
92*4882a593Smuzhiyun 		  __entry->page, __entry->channel)
93*4882a593Smuzhiyun );
94*4882a593Smuzhiyun 
95*4882a593Smuzhiyun TRACE_EVENT(802154_drv_set_cca_mode,
96*4882a593Smuzhiyun 	TP_PROTO(struct ieee802154_local *local,
97*4882a593Smuzhiyun 		 const struct wpan_phy_cca *cca),
98*4882a593Smuzhiyun 	TP_ARGS(local, cca),
99*4882a593Smuzhiyun 	TP_STRUCT__entry(
100*4882a593Smuzhiyun 		LOCAL_ENTRY
101*4882a593Smuzhiyun 		CCA_ENTRY
102*4882a593Smuzhiyun 	),
103*4882a593Smuzhiyun 	TP_fast_assign(
104*4882a593Smuzhiyun 		LOCAL_ASSIGN;
105*4882a593Smuzhiyun 		CCA_ASSIGN;
106*4882a593Smuzhiyun 	),
107*4882a593Smuzhiyun 	TP_printk(LOCAL_PR_FMT ", " CCA_PR_FMT, LOCAL_PR_ARG,
108*4882a593Smuzhiyun 		  CCA_PR_ARG)
109*4882a593Smuzhiyun );
110*4882a593Smuzhiyun 
111*4882a593Smuzhiyun TRACE_EVENT(802154_drv_set_cca_ed_level,
112*4882a593Smuzhiyun 	TP_PROTO(struct ieee802154_local *local, s32 mbm),
113*4882a593Smuzhiyun 	TP_ARGS(local, mbm),
114*4882a593Smuzhiyun 	TP_STRUCT__entry(
115*4882a593Smuzhiyun 		LOCAL_ENTRY
116*4882a593Smuzhiyun 		__field(s32, mbm)
117*4882a593Smuzhiyun 	),
118*4882a593Smuzhiyun 	TP_fast_assign(
119*4882a593Smuzhiyun 		LOCAL_ASSIGN;
120*4882a593Smuzhiyun 		__entry->mbm = mbm;
121*4882a593Smuzhiyun 	),
122*4882a593Smuzhiyun 	TP_printk(LOCAL_PR_FMT ", ed level: %d", LOCAL_PR_ARG,
123*4882a593Smuzhiyun 		  __entry->mbm)
124*4882a593Smuzhiyun );
125*4882a593Smuzhiyun 
126*4882a593Smuzhiyun TRACE_EVENT(802154_drv_set_tx_power,
127*4882a593Smuzhiyun 	TP_PROTO(struct ieee802154_local *local, s32 power),
128*4882a593Smuzhiyun 	TP_ARGS(local, power),
129*4882a593Smuzhiyun 	TP_STRUCT__entry(
130*4882a593Smuzhiyun 		LOCAL_ENTRY
131*4882a593Smuzhiyun 		__field(s32, power)
132*4882a593Smuzhiyun 	),
133*4882a593Smuzhiyun 	TP_fast_assign(
134*4882a593Smuzhiyun 		LOCAL_ASSIGN;
135*4882a593Smuzhiyun 		__entry->power = power;
136*4882a593Smuzhiyun 	),
137*4882a593Smuzhiyun 	TP_printk(LOCAL_PR_FMT ", mbm: %d", LOCAL_PR_ARG,
138*4882a593Smuzhiyun 		 __entry->power)
139*4882a593Smuzhiyun );
140*4882a593Smuzhiyun 
141*4882a593Smuzhiyun TRACE_EVENT(802154_drv_set_lbt_mode,
142*4882a593Smuzhiyun 	TP_PROTO(struct ieee802154_local *local, bool mode),
143*4882a593Smuzhiyun 	TP_ARGS(local, mode),
144*4882a593Smuzhiyun 	TP_STRUCT__entry(
145*4882a593Smuzhiyun 		LOCAL_ENTRY
146*4882a593Smuzhiyun 		__field(bool, mode)
147*4882a593Smuzhiyun 	),
148*4882a593Smuzhiyun 	TP_fast_assign(
149*4882a593Smuzhiyun 		LOCAL_ASSIGN;
150*4882a593Smuzhiyun 		__entry->mode = mode;
151*4882a593Smuzhiyun 	),
152*4882a593Smuzhiyun 	TP_printk(LOCAL_PR_FMT ", lbt mode: %s", LOCAL_PR_ARG,
153*4882a593Smuzhiyun 		  BOOL_TO_STR(__entry->mode))
154*4882a593Smuzhiyun );
155*4882a593Smuzhiyun 
156*4882a593Smuzhiyun TRACE_EVENT(802154_drv_set_short_addr,
157*4882a593Smuzhiyun 	TP_PROTO(struct ieee802154_local *local, __le16 short_addr),
158*4882a593Smuzhiyun 	TP_ARGS(local, short_addr),
159*4882a593Smuzhiyun 	TP_STRUCT__entry(
160*4882a593Smuzhiyun 		LOCAL_ENTRY
161*4882a593Smuzhiyun 		__field(__le16, short_addr)
162*4882a593Smuzhiyun 	),
163*4882a593Smuzhiyun 	TP_fast_assign(
164*4882a593Smuzhiyun 		LOCAL_ASSIGN;
165*4882a593Smuzhiyun 		__entry->short_addr = short_addr;
166*4882a593Smuzhiyun 	),
167*4882a593Smuzhiyun 	TP_printk(LOCAL_PR_FMT ", short addr: 0x%04x", LOCAL_PR_ARG,
168*4882a593Smuzhiyun 		  le16_to_cpu(__entry->short_addr))
169*4882a593Smuzhiyun );
170*4882a593Smuzhiyun 
171*4882a593Smuzhiyun TRACE_EVENT(802154_drv_set_pan_id,
172*4882a593Smuzhiyun 	TP_PROTO(struct ieee802154_local *local, __le16 pan_id),
173*4882a593Smuzhiyun 	TP_ARGS(local, pan_id),
174*4882a593Smuzhiyun 	TP_STRUCT__entry(
175*4882a593Smuzhiyun 		LOCAL_ENTRY
176*4882a593Smuzhiyun 		__field(__le16, pan_id)
177*4882a593Smuzhiyun 	),
178*4882a593Smuzhiyun 	TP_fast_assign(
179*4882a593Smuzhiyun 		LOCAL_ASSIGN;
180*4882a593Smuzhiyun 		__entry->pan_id = pan_id;
181*4882a593Smuzhiyun 	),
182*4882a593Smuzhiyun 	TP_printk(LOCAL_PR_FMT ", pan id: 0x%04x", LOCAL_PR_ARG,
183*4882a593Smuzhiyun 		  le16_to_cpu(__entry->pan_id))
184*4882a593Smuzhiyun );
185*4882a593Smuzhiyun 
186*4882a593Smuzhiyun TRACE_EVENT(802154_drv_set_extended_addr,
187*4882a593Smuzhiyun 	TP_PROTO(struct ieee802154_local *local, __le64 extended_addr),
188*4882a593Smuzhiyun 	TP_ARGS(local, extended_addr),
189*4882a593Smuzhiyun 	TP_STRUCT__entry(
190*4882a593Smuzhiyun 		LOCAL_ENTRY
191*4882a593Smuzhiyun 		__field(__le64, extended_addr)
192*4882a593Smuzhiyun 	),
193*4882a593Smuzhiyun 	TP_fast_assign(
194*4882a593Smuzhiyun 		LOCAL_ASSIGN;
195*4882a593Smuzhiyun 		__entry->extended_addr = extended_addr;
196*4882a593Smuzhiyun 	),
197*4882a593Smuzhiyun 	TP_printk(LOCAL_PR_FMT ", extended addr: 0x%llx", LOCAL_PR_ARG,
198*4882a593Smuzhiyun 		  le64_to_cpu(__entry->extended_addr))
199*4882a593Smuzhiyun );
200*4882a593Smuzhiyun 
201*4882a593Smuzhiyun TRACE_EVENT(802154_drv_set_pan_coord,
202*4882a593Smuzhiyun 	TP_PROTO(struct ieee802154_local *local, bool is_coord),
203*4882a593Smuzhiyun 	TP_ARGS(local, is_coord),
204*4882a593Smuzhiyun 	TP_STRUCT__entry(
205*4882a593Smuzhiyun 		LOCAL_ENTRY
206*4882a593Smuzhiyun 		__field(bool, is_coord)
207*4882a593Smuzhiyun 	),
208*4882a593Smuzhiyun 	TP_fast_assign(
209*4882a593Smuzhiyun 		LOCAL_ASSIGN;
210*4882a593Smuzhiyun 		__entry->is_coord = is_coord;
211*4882a593Smuzhiyun 	),
212*4882a593Smuzhiyun 	TP_printk(LOCAL_PR_FMT ", is_coord: %s", LOCAL_PR_ARG,
213*4882a593Smuzhiyun 		  BOOL_TO_STR(__entry->is_coord))
214*4882a593Smuzhiyun );
215*4882a593Smuzhiyun 
216*4882a593Smuzhiyun TRACE_EVENT(802154_drv_set_csma_params,
217*4882a593Smuzhiyun 	TP_PROTO(struct ieee802154_local *local, u8 min_be, u8 max_be,
218*4882a593Smuzhiyun 		 u8 max_csma_backoffs),
219*4882a593Smuzhiyun 	TP_ARGS(local, min_be, max_be, max_csma_backoffs),
220*4882a593Smuzhiyun 	TP_STRUCT__entry(
221*4882a593Smuzhiyun 		LOCAL_ENTRY
222*4882a593Smuzhiyun 		__field(u8, min_be)
223*4882a593Smuzhiyun 		__field(u8, max_be)
224*4882a593Smuzhiyun 		__field(u8, max_csma_backoffs)
225*4882a593Smuzhiyun 	),
226*4882a593Smuzhiyun 	TP_fast_assign(
227*4882a593Smuzhiyun 		LOCAL_ASSIGN,
228*4882a593Smuzhiyun 		__entry->min_be = min_be;
229*4882a593Smuzhiyun 		__entry->max_be = max_be;
230*4882a593Smuzhiyun 		__entry->max_csma_backoffs = max_csma_backoffs;
231*4882a593Smuzhiyun 	),
232*4882a593Smuzhiyun 	TP_printk(LOCAL_PR_FMT ", min be: %d, max be: %d, max csma backoffs: %d",
233*4882a593Smuzhiyun 		  LOCAL_PR_ARG, __entry->min_be, __entry->max_be,
234*4882a593Smuzhiyun 		  __entry->max_csma_backoffs)
235*4882a593Smuzhiyun );
236*4882a593Smuzhiyun 
237*4882a593Smuzhiyun TRACE_EVENT(802154_drv_set_max_frame_retries,
238*4882a593Smuzhiyun 	TP_PROTO(struct ieee802154_local *local, s8 max_frame_retries),
239*4882a593Smuzhiyun 	TP_ARGS(local, max_frame_retries),
240*4882a593Smuzhiyun 	TP_STRUCT__entry(
241*4882a593Smuzhiyun 		LOCAL_ENTRY
242*4882a593Smuzhiyun 		__field(s8, max_frame_retries)
243*4882a593Smuzhiyun 	),
244*4882a593Smuzhiyun 	TP_fast_assign(
245*4882a593Smuzhiyun 		LOCAL_ASSIGN;
246*4882a593Smuzhiyun 		__entry->max_frame_retries = max_frame_retries;
247*4882a593Smuzhiyun 	),
248*4882a593Smuzhiyun 	TP_printk(LOCAL_PR_FMT ", max frame retries: %d", LOCAL_PR_ARG,
249*4882a593Smuzhiyun 		  __entry->max_frame_retries)
250*4882a593Smuzhiyun );
251*4882a593Smuzhiyun 
252*4882a593Smuzhiyun TRACE_EVENT(802154_drv_set_promiscuous_mode,
253*4882a593Smuzhiyun 	TP_PROTO(struct ieee802154_local *local, bool on),
254*4882a593Smuzhiyun 	TP_ARGS(local, on),
255*4882a593Smuzhiyun 	TP_STRUCT__entry(
256*4882a593Smuzhiyun 		LOCAL_ENTRY
257*4882a593Smuzhiyun 		__field(bool, on)
258*4882a593Smuzhiyun 	),
259*4882a593Smuzhiyun 	TP_fast_assign(
260*4882a593Smuzhiyun 		LOCAL_ASSIGN;
261*4882a593Smuzhiyun 		__entry->on = on;
262*4882a593Smuzhiyun 	),
263*4882a593Smuzhiyun 	TP_printk(LOCAL_PR_FMT ", promiscuous mode: %s", LOCAL_PR_ARG,
264*4882a593Smuzhiyun 		  BOOL_TO_STR(__entry->on))
265*4882a593Smuzhiyun );
266*4882a593Smuzhiyun 
267*4882a593Smuzhiyun #endif /* !__MAC802154_DRIVER_TRACE || TRACE_HEADER_MULTI_READ */
268*4882a593Smuzhiyun 
269*4882a593Smuzhiyun #undef TRACE_INCLUDE_PATH
270*4882a593Smuzhiyun #define TRACE_INCLUDE_PATH .
271*4882a593Smuzhiyun #undef TRACE_INCLUDE_FILE
272*4882a593Smuzhiyun #define TRACE_INCLUDE_FILE trace
273*4882a593Smuzhiyun #include <trace/define_trace.h>
274