xref: /linux/net/ieee802154/trace.h (revision 91afb7c373e881d5038a78e1206a0f6469440ec3)
1 /* Based on net/wireless/trace.h */
2 
3 #undef TRACE_SYSTEM
4 #define TRACE_SYSTEM cfg802154
5 
6 #if !defined(__RDEV_CFG802154_OPS_TRACE) || defined(TRACE_HEADER_MULTI_READ)
7 #define __RDEV_CFG802154_OPS_TRACE
8 
9 #include <linux/tracepoint.h>
10 
11 #include <net/cfg802154.h>
12 
13 #define MAXNAME		32
14 #define WPAN_PHY_ENTRY	__array(char, wpan_phy_name, MAXNAME)
15 #define WPAN_PHY_ASSIGN	strlcpy(__entry->wpan_phy_name,	 \
16 				wpan_phy_name(wpan_phy), \
17 				MAXNAME)
18 #define WPAN_PHY_PR_FMT	"%s"
19 #define WPAN_PHY_PR_ARG	__entry->wpan_phy_name
20 
21 #define WPAN_DEV_ENTRY	__field(u32, identifier)
22 #define WPAN_DEV_ASSIGN	(__entry->identifier) = (!IS_ERR_OR_NULL(wpan_dev) \
23 					 ? wpan_dev->identifier : 0)
24 #define WPAN_DEV_PR_FMT	"wpan_dev(%u)"
25 #define WPAN_DEV_PR_ARG	(__entry->identifier)
26 
27 #define WPAN_CCA_ENTRY	__field(enum nl802154_cca_modes, cca_mode) \
28 			__field(enum nl802154_cca_opts, cca_opt)
29 #define WPAN_CCA_ASSIGN \
30 	do {					 \
31 		(__entry->cca_mode) = cca->mode; \
32 		(__entry->cca_opt) = cca->opt;	 \
33 	} while (0)
34 #define WPAN_CCA_PR_FMT	"cca_mode: %d, cca_opt: %d"
35 #define WPAN_CCA_PR_ARG __entry->cca_mode, __entry->cca_opt
36 
37 #define BOOL_TO_STR(bo) (bo) ? "true" : "false"
38 
39 /*************************************************************
40  *			rdev->ops traces		     *
41  *************************************************************/
42 
43 DECLARE_EVENT_CLASS(wpan_phy_only_evt,
44 	TP_PROTO(struct wpan_phy *wpan_phy),
45 	TP_ARGS(wpan_phy),
46 	TP_STRUCT__entry(
47 		WPAN_PHY_ENTRY
48 	),
49 	TP_fast_assign(
50 		WPAN_PHY_ASSIGN;
51 	),
52 	TP_printk(WPAN_PHY_PR_FMT, WPAN_PHY_PR_ARG)
53 );
54 
55 DEFINE_EVENT(wpan_phy_only_evt, 802154_rdev_suspend,
56 	TP_PROTO(struct wpan_phy *wpan_phy),
57 	TP_ARGS(wpan_phy)
58 );
59 
60 DEFINE_EVENT(wpan_phy_only_evt, 802154_rdev_resume,
61 	TP_PROTO(struct wpan_phy *wpan_phy),
62 	TP_ARGS(wpan_phy)
63 );
64 
65 TRACE_EVENT(802154_rdev_add_virtual_intf,
66 	TP_PROTO(struct wpan_phy *wpan_phy, char *name,
67 		 enum nl802154_iftype type, __le64 extended_addr),
68 	TP_ARGS(wpan_phy, name, type, extended_addr),
69 	TP_STRUCT__entry(
70 		WPAN_PHY_ENTRY
71 		__string(vir_intf_name, name ? name : "<noname>")
72 		__field(enum nl802154_iftype, type)
73 		__field(__le64, extended_addr)
74 	),
75 	TP_fast_assign(
76 		WPAN_PHY_ASSIGN;
77 		__assign_str(vir_intf_name, name ? name : "<noname>");
78 		__entry->type = type;
79 		__entry->extended_addr = extended_addr;
80 	),
81 	TP_printk(WPAN_PHY_PR_FMT ", virtual intf name: %s, type: %d, extended addr: 0x%llx",
82 		  WPAN_PHY_PR_ARG, __get_str(vir_intf_name), __entry->type,
83 		  __le64_to_cpu(__entry->extended_addr))
84 );
85 
86 TRACE_EVENT(802154_rdev_del_virtual_intf,
87 	TP_PROTO(struct wpan_phy *wpan_phy, struct wpan_dev *wpan_dev),
88 	TP_ARGS(wpan_phy, wpan_dev),
89 	TP_STRUCT__entry(
90 		WPAN_PHY_ENTRY
91 		WPAN_DEV_ENTRY
92 	),
93 	TP_fast_assign(
94 		WPAN_PHY_ASSIGN;
95 		WPAN_DEV_ASSIGN;
96 	),
97 	TP_printk(WPAN_PHY_PR_FMT ", " WPAN_DEV_PR_FMT, WPAN_PHY_PR_ARG,
98 		  WPAN_DEV_PR_ARG)
99 );
100 
101 TRACE_EVENT(802154_rdev_set_channel,
102 	TP_PROTO(struct wpan_phy *wpan_phy, u8 page, u8 channel),
103 	TP_ARGS(wpan_phy, page, channel),
104 	TP_STRUCT__entry(
105 		WPAN_PHY_ENTRY
106 		__field(u8, page)
107 		__field(u8, channel)
108 	),
109 	TP_fast_assign(
110 		WPAN_PHY_ASSIGN;
111 		__entry->page = page;
112 		__entry->channel = channel;
113 	),
114 	TP_printk(WPAN_PHY_PR_FMT ", page: %d, channel: %d", WPAN_PHY_PR_ARG,
115 		  __entry->page, __entry->channel)
116 );
117 
118 TRACE_EVENT(802154_rdev_set_tx_power,
119 	TP_PROTO(struct wpan_phy *wpan_phy, s32 power),
120 	TP_ARGS(wpan_phy, power),
121 	TP_STRUCT__entry(
122 		WPAN_PHY_ENTRY
123 		__field(s32, power)
124 	),
125 	TP_fast_assign(
126 		WPAN_PHY_ASSIGN;
127 		__entry->power = power;
128 	),
129 	TP_printk(WPAN_PHY_PR_FMT ", mbm: %d", WPAN_PHY_PR_ARG,
130 		  __entry->power)
131 );
132 
133 TRACE_EVENT(802154_rdev_set_cca_mode,
134 	TP_PROTO(struct wpan_phy *wpan_phy, const struct wpan_phy_cca *cca),
135 	TP_ARGS(wpan_phy, cca),
136 	TP_STRUCT__entry(
137 		WPAN_PHY_ENTRY
138 		WPAN_CCA_ENTRY
139 	),
140 	TP_fast_assign(
141 		WPAN_PHY_ASSIGN;
142 		WPAN_CCA_ASSIGN;
143 	),
144 	TP_printk(WPAN_PHY_PR_FMT ", " WPAN_CCA_PR_FMT, WPAN_PHY_PR_ARG,
145 		  WPAN_CCA_PR_ARG)
146 );
147 
148 TRACE_EVENT(802154_rdev_set_cca_ed_level,
149 	TP_PROTO(struct wpan_phy *wpan_phy, s32 ed_level),
150 	TP_ARGS(wpan_phy, ed_level),
151 	TP_STRUCT__entry(
152 		WPAN_PHY_ENTRY
153 		__field(s32, ed_level)
154 	),
155 	TP_fast_assign(
156 		WPAN_PHY_ASSIGN;
157 		__entry->ed_level = ed_level;
158 	),
159 	TP_printk(WPAN_PHY_PR_FMT ", ed level: %d", WPAN_PHY_PR_ARG,
160 		  __entry->ed_level)
161 );
162 
163 DECLARE_EVENT_CLASS(802154_le16_template,
164 	TP_PROTO(struct wpan_phy *wpan_phy, struct wpan_dev *wpan_dev,
165 		 __le16 le16arg),
166 	TP_ARGS(wpan_phy, wpan_dev, le16arg),
167 	TP_STRUCT__entry(
168 		WPAN_PHY_ENTRY
169 		WPAN_DEV_ENTRY
170 		__field(__le16, le16arg)
171 	),
172 	TP_fast_assign(
173 		WPAN_PHY_ASSIGN;
174 		WPAN_DEV_ASSIGN;
175 		__entry->le16arg = le16arg;
176 	),
177 	TP_printk(WPAN_PHY_PR_FMT ", " WPAN_DEV_PR_FMT ", pan id: 0x%04x",
178 		  WPAN_PHY_PR_ARG, WPAN_DEV_PR_ARG,
179 		  __le16_to_cpu(__entry->le16arg))
180 );
181 
182 DEFINE_EVENT(802154_le16_template, 802154_rdev_set_pan_id,
183 	TP_PROTO(struct wpan_phy *wpan_phy, struct wpan_dev *wpan_dev,
184 		 __le16 le16arg),
185 	TP_ARGS(wpan_phy, wpan_dev, le16arg)
186 );
187 
188 DEFINE_EVENT_PRINT(802154_le16_template, 802154_rdev_set_short_addr,
189 	TP_PROTO(struct wpan_phy *wpan_phy, struct wpan_dev *wpan_dev,
190 		 __le16 le16arg),
191 	TP_ARGS(wpan_phy, wpan_dev, le16arg),
192 	TP_printk(WPAN_PHY_PR_FMT ", " WPAN_DEV_PR_FMT ", short addr: 0x%04x",
193 		  WPAN_PHY_PR_ARG, WPAN_DEV_PR_ARG,
194 		  __le16_to_cpu(__entry->le16arg))
195 );
196 
197 TRACE_EVENT(802154_rdev_set_backoff_exponent,
198 	TP_PROTO(struct wpan_phy *wpan_phy, struct wpan_dev *wpan_dev,
199 		 u8 min_be, u8 max_be),
200 	TP_ARGS(wpan_phy, wpan_dev, min_be, max_be),
201 	TP_STRUCT__entry(
202 		WPAN_PHY_ENTRY
203 		WPAN_DEV_ENTRY
204 		__field(u8, min_be)
205 		__field(u8, max_be)
206 	),
207 	TP_fast_assign(
208 		WPAN_PHY_ASSIGN;
209 		WPAN_DEV_ASSIGN;
210 		__entry->min_be = min_be;
211 		__entry->max_be = max_be;
212 	),
213 
214 	TP_printk(WPAN_PHY_PR_FMT ", " WPAN_DEV_PR_FMT
215 		  ", min be: %d, max be: %d", WPAN_PHY_PR_ARG,
216 		  WPAN_DEV_PR_ARG, __entry->min_be, __entry->max_be)
217 );
218 
219 TRACE_EVENT(802154_rdev_set_csma_backoffs,
220 	TP_PROTO(struct wpan_phy *wpan_phy, struct wpan_dev *wpan_dev,
221 		 u8 max_csma_backoffs),
222 	TP_ARGS(wpan_phy, wpan_dev, max_csma_backoffs),
223 	TP_STRUCT__entry(
224 		WPAN_PHY_ENTRY
225 		WPAN_DEV_ENTRY
226 		__field(u8, max_csma_backoffs)
227 	),
228 	TP_fast_assign(
229 		WPAN_PHY_ASSIGN;
230 		WPAN_DEV_ASSIGN;
231 		__entry->max_csma_backoffs = max_csma_backoffs;
232 	),
233 
234 	TP_printk(WPAN_PHY_PR_FMT ", " WPAN_DEV_PR_FMT
235 		  ", max csma backoffs: %d", WPAN_PHY_PR_ARG,
236 		  WPAN_DEV_PR_ARG, __entry->max_csma_backoffs)
237 );
238 
239 TRACE_EVENT(802154_rdev_set_max_frame_retries,
240 	TP_PROTO(struct wpan_phy *wpan_phy, struct wpan_dev *wpan_dev,
241 		 s8 max_frame_retries),
242 	TP_ARGS(wpan_phy, wpan_dev, max_frame_retries),
243 	TP_STRUCT__entry(
244 		WPAN_PHY_ENTRY
245 		WPAN_DEV_ENTRY
246 		__field(s8, max_frame_retries)
247 	),
248 	TP_fast_assign(
249 		WPAN_PHY_ASSIGN;
250 		WPAN_DEV_ASSIGN;
251 		__entry->max_frame_retries = max_frame_retries;
252 	),
253 
254 	TP_printk(WPAN_PHY_PR_FMT ", " WPAN_DEV_PR_FMT
255 		  ", max frame retries: %d", WPAN_PHY_PR_ARG,
256 		  WPAN_DEV_PR_ARG, __entry->max_frame_retries)
257 );
258 
259 TRACE_EVENT(802154_rdev_set_lbt_mode,
260 	TP_PROTO(struct wpan_phy *wpan_phy, struct wpan_dev *wpan_dev,
261 		 bool mode),
262 	TP_ARGS(wpan_phy, wpan_dev, mode),
263 	TP_STRUCT__entry(
264 		WPAN_PHY_ENTRY
265 		WPAN_DEV_ENTRY
266 		__field(bool, mode)
267 	),
268 	TP_fast_assign(
269 		WPAN_PHY_ASSIGN;
270 		WPAN_DEV_ASSIGN;
271 		__entry->mode = mode;
272 	),
273 	TP_printk(WPAN_PHY_PR_FMT ", " WPAN_DEV_PR_FMT
274 		", lbt mode: %s", WPAN_PHY_PR_ARG,
275 		WPAN_DEV_PR_ARG, BOOL_TO_STR(__entry->mode))
276 );
277 
278 TRACE_EVENT(802154_rdev_set_ackreq_default,
279 	TP_PROTO(struct wpan_phy *wpan_phy, struct wpan_dev *wpan_dev,
280 		 bool ackreq),
281 	TP_ARGS(wpan_phy, wpan_dev, ackreq),
282 	TP_STRUCT__entry(
283 		WPAN_PHY_ENTRY
284 		WPAN_DEV_ENTRY
285 		__field(bool, ackreq)
286 	),
287 	TP_fast_assign(
288 		WPAN_PHY_ASSIGN;
289 		WPAN_DEV_ASSIGN;
290 		__entry->ackreq = ackreq;
291 	),
292 	TP_printk(WPAN_PHY_PR_FMT ", " WPAN_DEV_PR_FMT
293 		", ackreq default: %s", WPAN_PHY_PR_ARG,
294 		WPAN_DEV_PR_ARG, BOOL_TO_STR(__entry->ackreq))
295 );
296 
297 TRACE_EVENT(802154_rdev_return_int,
298 	TP_PROTO(struct wpan_phy *wpan_phy, int ret),
299 	TP_ARGS(wpan_phy, ret),
300 	TP_STRUCT__entry(
301 		WPAN_PHY_ENTRY
302 		__field(int, ret)
303 	),
304 	TP_fast_assign(
305 		WPAN_PHY_ASSIGN;
306 		__entry->ret = ret;
307 	),
308 	TP_printk(WPAN_PHY_PR_FMT ", returned: %d", WPAN_PHY_PR_ARG,
309 		  __entry->ret)
310 );
311 
312 #endif /* !__RDEV_CFG802154_OPS_TRACE || TRACE_HEADER_MULTI_READ */
313 
314 #undef TRACE_INCLUDE_PATH
315 #define TRACE_INCLUDE_PATH .
316 #undef TRACE_INCLUDE_FILE
317 #define TRACE_INCLUDE_FILE trace
318 #include <trace/define_trace.h>
319