xref: /openbmc/linux/net/ieee802154/trace.h (revision 99b7e93c)
1 /* Based on net/wireless/tracing.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 TRACE_EVENT(802154_rdev_add_virtual_intf,
44 	TP_PROTO(struct wpan_phy *wpan_phy, char *name,
45 		 enum nl802154_iftype type, __le64 extended_addr),
46 	TP_ARGS(wpan_phy, name, type, extended_addr),
47 	TP_STRUCT__entry(
48 		WPAN_PHY_ENTRY
49 		__string(vir_intf_name, name ? name : "<noname>")
50 		__field(enum nl802154_iftype, type)
51 		__field(__le64, extended_addr)
52 	),
53 	TP_fast_assign(
54 		WPAN_PHY_ASSIGN;
55 		__assign_str(vir_intf_name, name ? name : "<noname>");
56 		__entry->type = type;
57 		__entry->extended_addr = extended_addr;
58 	),
59 	TP_printk(WPAN_PHY_PR_FMT ", virtual intf name: %s, type: %d, ea %llx",
60 		  WPAN_PHY_PR_ARG, __get_str(vir_intf_name), __entry->type,
61 		  __le64_to_cpu(__entry->extended_addr))
62 );
63 
64 TRACE_EVENT(802154_rdev_del_virtual_intf,
65 	TP_PROTO(struct wpan_phy *wpan_phy, struct wpan_dev *wpan_dev),
66 	TP_ARGS(wpan_phy, wpan_dev),
67 	TP_STRUCT__entry(
68 		WPAN_PHY_ENTRY
69 		WPAN_DEV_ENTRY
70 	),
71 	TP_fast_assign(
72 		WPAN_PHY_ASSIGN;
73 		WPAN_DEV_ASSIGN;
74 	),
75 	TP_printk(WPAN_PHY_PR_FMT ", " WPAN_DEV_PR_FMT, WPAN_PHY_PR_ARG,
76 		  WPAN_DEV_PR_ARG)
77 );
78 
79 TRACE_EVENT(802154_rdev_set_channel,
80 	TP_PROTO(struct wpan_phy *wpan_phy, u8 page, u8 channel),
81 	TP_ARGS(wpan_phy, page, channel),
82 	TP_STRUCT__entry(
83 		WPAN_PHY_ENTRY
84 		__field(u8, page)
85 		__field(u8, channel)
86 	),
87 	TP_fast_assign(
88 		WPAN_PHY_ASSIGN;
89 		__entry->page = page;
90 		__entry->channel = channel;
91 	),
92 	TP_printk(WPAN_PHY_PR_FMT ", page: %d, channel: %d", WPAN_PHY_PR_ARG,
93 		  __entry->page, __entry->channel)
94 );
95 
96 TRACE_EVENT(802154_rdev_set_cca_mode,
97 	TP_PROTO(struct wpan_phy *wpan_phy, const struct wpan_phy_cca *cca),
98 	TP_ARGS(wpan_phy, cca),
99 	TP_STRUCT__entry(
100 		WPAN_PHY_ENTRY
101 		WPAN_CCA_ENTRY
102 	),
103 	TP_fast_assign(
104 		WPAN_PHY_ASSIGN;
105 		WPAN_CCA_ASSIGN;
106 	),
107 	TP_printk(WPAN_PHY_PR_FMT ", " WPAN_CCA_PR_FMT, WPAN_PHY_PR_ARG,
108 		  WPAN_CCA_PR_ARG)
109 );
110 
111 DECLARE_EVENT_CLASS(802154_le16_template,
112 	TP_PROTO(struct wpan_phy *wpan_phy, struct wpan_dev *wpan_dev,
113 		 __le16 le16arg),
114 	TP_ARGS(wpan_phy, wpan_dev, le16arg),
115 	TP_STRUCT__entry(
116 		WPAN_PHY_ENTRY
117 		WPAN_DEV_ENTRY
118 		__field(__le16, le16arg)
119 	),
120 	TP_fast_assign(
121 		WPAN_PHY_ASSIGN;
122 		WPAN_DEV_ASSIGN;
123 		__entry->le16arg = le16arg;
124 	),
125 	TP_printk(WPAN_PHY_PR_FMT ", " WPAN_DEV_PR_FMT ", pan id: 0x%04x",
126 		  WPAN_PHY_PR_ARG, WPAN_DEV_PR_ARG,
127 		  __le16_to_cpu(__entry->le16arg))
128 );
129 
130 DEFINE_EVENT(802154_le16_template, 802154_rdev_set_pan_id,
131 	TP_PROTO(struct wpan_phy *wpan_phy, struct wpan_dev *wpan_dev,
132 		 __le16 le16arg),
133 	TP_ARGS(wpan_phy, wpan_dev, le16arg)
134 );
135 
136 DEFINE_EVENT_PRINT(802154_le16_template, 802154_rdev_set_short_addr,
137 	TP_PROTO(struct wpan_phy *wpan_phy, struct wpan_dev *wpan_dev,
138 		 __le16 le16arg),
139 	TP_ARGS(wpan_phy, wpan_dev, le16arg),
140 	TP_printk(WPAN_PHY_PR_FMT ", " WPAN_DEV_PR_FMT ", sa: 0x%04x",
141 		  WPAN_PHY_PR_ARG, WPAN_DEV_PR_ARG,
142 		  __le16_to_cpu(__entry->le16arg))
143 );
144 
145 TRACE_EVENT(802154_rdev_set_backoff_exponent,
146 	TP_PROTO(struct wpan_phy *wpan_phy, struct wpan_dev *wpan_dev,
147 		 u8 min_be, u8 max_be),
148 	TP_ARGS(wpan_phy, wpan_dev, min_be, max_be),
149 	TP_STRUCT__entry(
150 		WPAN_PHY_ENTRY
151 		WPAN_DEV_ENTRY
152 		__field(u8, min_be)
153 		__field(u8, max_be)
154 	),
155 	TP_fast_assign(
156 		WPAN_PHY_ASSIGN;
157 		WPAN_DEV_ASSIGN;
158 		__entry->min_be = min_be;
159 		__entry->max_be = max_be;
160 	),
161 
162 	TP_printk(WPAN_PHY_PR_FMT ", " WPAN_DEV_PR_FMT
163 		  ", min be: %d, max_be: %d", WPAN_PHY_PR_ARG,
164 		  WPAN_DEV_PR_ARG, __entry->min_be, __entry->max_be)
165 );
166 
167 TRACE_EVENT(802154_rdev_set_csma_backoffs,
168 	TP_PROTO(struct wpan_phy *wpan_phy, struct wpan_dev *wpan_dev,
169 		 u8 max_csma_backoffs),
170 	TP_ARGS(wpan_phy, wpan_dev, max_csma_backoffs),
171 	TP_STRUCT__entry(
172 		WPAN_PHY_ENTRY
173 		WPAN_DEV_ENTRY
174 		__field(u8, max_csma_backoffs)
175 	),
176 	TP_fast_assign(
177 		WPAN_PHY_ASSIGN;
178 		WPAN_DEV_ASSIGN;
179 		__entry->max_csma_backoffs = max_csma_backoffs;
180 	),
181 
182 	TP_printk(WPAN_PHY_PR_FMT ", " WPAN_DEV_PR_FMT
183 		  ", max csma backoffs: %d", WPAN_PHY_PR_ARG,
184 		  WPAN_DEV_PR_ARG, __entry->max_csma_backoffs)
185 );
186 
187 TRACE_EVENT(802154_rdev_set_max_frame_retries,
188 	TP_PROTO(struct wpan_phy *wpan_phy, struct wpan_dev *wpan_dev,
189 		 s8 max_frame_retries),
190 	TP_ARGS(wpan_phy, wpan_dev, max_frame_retries),
191 	TP_STRUCT__entry(
192 		WPAN_PHY_ENTRY
193 		WPAN_DEV_ENTRY
194 		__field(s8, max_frame_retries)
195 	),
196 	TP_fast_assign(
197 		WPAN_PHY_ASSIGN;
198 		WPAN_DEV_ASSIGN;
199 		__entry->max_frame_retries = max_frame_retries;
200 	),
201 
202 	TP_printk(WPAN_PHY_PR_FMT ", " WPAN_DEV_PR_FMT
203 		  ", max frame retries: %d", WPAN_PHY_PR_ARG,
204 		  WPAN_DEV_PR_ARG, __entry->max_frame_retries)
205 );
206 
207 TRACE_EVENT(802154_rdev_set_lbt_mode,
208 	TP_PROTO(struct wpan_phy *wpan_phy, struct wpan_dev *wpan_dev,
209 		 bool mode),
210 	TP_ARGS(wpan_phy, wpan_dev, mode),
211 	TP_STRUCT__entry(
212 		WPAN_PHY_ENTRY
213 		WPAN_DEV_ENTRY
214 		__field(bool, mode)
215 	),
216 	TP_fast_assign(
217 		WPAN_PHY_ASSIGN;
218 		WPAN_DEV_ASSIGN;
219 		__entry->mode = mode;
220 	),
221 	TP_printk(WPAN_PHY_PR_FMT ", " WPAN_DEV_PR_FMT
222 		", lbt mode: %s", WPAN_PHY_PR_ARG,
223 		WPAN_DEV_PR_ARG, BOOL_TO_STR(__entry->mode))
224 );
225 
226 TRACE_EVENT(802154_rdev_return_int,
227 	TP_PROTO(struct wpan_phy *wpan_phy, int ret),
228 	TP_ARGS(wpan_phy, ret),
229 	TP_STRUCT__entry(
230 		WPAN_PHY_ENTRY
231 		__field(int, ret)
232 	),
233 	TP_fast_assign(
234 		WPAN_PHY_ASSIGN;
235 		__entry->ret = ret;
236 	),
237 	TP_printk(WPAN_PHY_PR_FMT ", returned: %d", WPAN_PHY_PR_ARG,
238 		  __entry->ret)
239 );
240 
241 #endif /* !__RDEV_CFG802154_OPS_TRACE || TRACE_HEADER_MULTI_READ */
242 
243 #undef TRACE_INCLUDE_PATH
244 #define TRACE_INCLUDE_PATH .
245 #undef TRACE_INCLUDE_FILE
246 #define TRACE_INCLUDE_FILE trace
247 #include <trace/define_trace.h>
248