Commit | Line | Data |
---|---|---|
1802d0be | 1 | /* SPDX-License-Identifier: GPL-2.0-only */ |
c869f77d JK |
2 | /* |
3 | * Copyright (C) 2014 Felix Fietkau <nbd@openwrt.org> | |
4 | * Copyright (C) 2015 Jakub Kicinski <kubakici@wp.pl> | |
c869f77d JK |
5 | */ |
6 | ||
7 | #if !defined(__MT7601U_TRACE_H) || defined(TRACE_HEADER_MULTI_READ) | |
8 | #define __MT7601U_TRACE_H | |
9 | ||
10 | #include <linux/tracepoint.h> | |
11 | #include "mt7601u.h" | |
12 | #include "mac.h" | |
13 | ||
14 | #undef TRACE_SYSTEM | |
15 | #define TRACE_SYSTEM mt7601u | |
16 | ||
17 | #define MAXNAME 32 | |
18 | #define DEV_ENTRY __array(char, wiphy_name, 32) | |
19 | #define DEV_ASSIGN strlcpy(__entry->wiphy_name, \ | |
20 | wiphy_name(dev->hw->wiphy), MAXNAME) | |
21 | #define DEV_PR_FMT "%s " | |
22 | #define DEV_PR_ARG __entry->wiphy_name | |
23 | ||
24 | #define REG_ENTRY __field(u32, reg) __field(u32, val) | |
25 | #define REG_ASSIGN __entry->reg = reg; __entry->val = val | |
26 | #define REG_PR_FMT "%04x=%08x" | |
27 | #define REG_PR_ARG __entry->reg, __entry->val | |
28 | ||
d992ee6c | 29 | DECLARE_EVENT_CLASS(dev_reg_evtu, |
c869f77d JK |
30 | TP_PROTO(struct mt7601u_dev *dev, u32 reg, u32 val), |
31 | TP_ARGS(dev, reg, val), | |
32 | TP_STRUCT__entry( | |
33 | DEV_ENTRY | |
34 | REG_ENTRY | |
35 | ), | |
36 | TP_fast_assign( | |
37 | DEV_ASSIGN; | |
38 | REG_ASSIGN; | |
39 | ), | |
40 | TP_printk( | |
41 | DEV_PR_FMT REG_PR_FMT, | |
42 | DEV_PR_ARG, REG_PR_ARG | |
43 | ) | |
44 | ); | |
45 | ||
d992ee6c | 46 | DEFINE_EVENT(dev_reg_evtu, reg_read, |
c869f77d JK |
47 | TP_PROTO(struct mt7601u_dev *dev, u32 reg, u32 val), |
48 | TP_ARGS(dev, reg, val) | |
49 | ); | |
50 | ||
d992ee6c | 51 | DEFINE_EVENT(dev_reg_evtu, reg_write, |
c869f77d JK |
52 | TP_PROTO(struct mt7601u_dev *dev, u32 reg, u32 val), |
53 | TP_ARGS(dev, reg, val) | |
54 | ); | |
55 | ||
56 | TRACE_EVENT(mt_submit_urb, | |
57 | TP_PROTO(struct mt7601u_dev *dev, struct urb *u), | |
58 | TP_ARGS(dev, u), | |
59 | TP_STRUCT__entry( | |
60 | DEV_ENTRY __field(unsigned, pipe) __field(u32, len) | |
61 | ), | |
62 | TP_fast_assign( | |
63 | DEV_ASSIGN; | |
64 | __entry->pipe = u->pipe; | |
65 | __entry->len = u->transfer_buffer_length; | |
66 | ), | |
67 | TP_printk(DEV_PR_FMT "p:%08x len:%u", | |
68 | DEV_PR_ARG, __entry->pipe, __entry->len) | |
69 | ); | |
70 | ||
71 | #define trace_mt_submit_urb_sync(__dev, __pipe, __len) ({ \ | |
72 | struct urb u; \ | |
73 | u.pipe = __pipe; \ | |
74 | u.transfer_buffer_length = __len; \ | |
75 | trace_mt_submit_urb(__dev, &u); \ | |
76 | }) | |
77 | ||
78 | TRACE_EVENT(mt_mcu_msg_send, | |
79 | TP_PROTO(struct mt7601u_dev *dev, | |
80 | struct sk_buff *skb, u32 csum, bool resp), | |
81 | TP_ARGS(dev, skb, csum, resp), | |
82 | TP_STRUCT__entry( | |
83 | DEV_ENTRY | |
84 | __field(u32, info) | |
85 | __field(u32, csum) | |
86 | __field(bool, resp) | |
87 | ), | |
88 | TP_fast_assign( | |
89 | DEV_ASSIGN; | |
90 | __entry->info = *(u32 *)skb->data; | |
91 | __entry->csum = csum; | |
92 | __entry->resp = resp; | |
93 | ), | |
94 | TP_printk(DEV_PR_FMT "i:%08x c:%08x r:%d", | |
95 | DEV_PR_ARG, __entry->info, __entry->csum, __entry->resp) | |
96 | ); | |
97 | ||
98 | TRACE_EVENT(mt_vend_req, | |
99 | TP_PROTO(struct mt7601u_dev *dev, unsigned pipe, u8 req, u8 req_type, | |
100 | u16 val, u16 offset, void *buf, size_t buflen, int ret), | |
101 | TP_ARGS(dev, pipe, req, req_type, val, offset, buf, buflen, ret), | |
102 | TP_STRUCT__entry( | |
103 | DEV_ENTRY | |
104 | __field(unsigned, pipe) __field(u8, req) __field(u8, req_type) | |
105 | __field(u16, val) __field(u16, offset) __field(void*, buf) | |
106 | __field(int, buflen) __field(int, ret) | |
107 | ), | |
108 | TP_fast_assign( | |
109 | DEV_ASSIGN; | |
110 | __entry->pipe = pipe; | |
111 | __entry->req = req; | |
112 | __entry->req_type = req_type; | |
113 | __entry->val = val; | |
114 | __entry->offset = offset; | |
115 | __entry->buf = buf; | |
116 | __entry->buflen = buflen; | |
117 | __entry->ret = ret; | |
118 | ), | |
119 | TP_printk(DEV_PR_FMT | |
120 | "%d p:%08x req:%02hhx %02hhx val:%04hx %04hx buf:%d %d", | |
121 | DEV_PR_ARG, __entry->ret, __entry->pipe, __entry->req, | |
122 | __entry->req_type, __entry->val, __entry->offset, | |
123 | !!__entry->buf, __entry->buflen) | |
124 | ); | |
125 | ||
126 | TRACE_EVENT(ee_read, | |
127 | TP_PROTO(struct mt7601u_dev *dev, int offset, u16 val), | |
128 | TP_ARGS(dev, offset, val), | |
129 | TP_STRUCT__entry( | |
130 | DEV_ENTRY | |
131 | __field(int, o) __field(u16, v) | |
132 | ), | |
133 | TP_fast_assign( | |
134 | DEV_ASSIGN; | |
135 | __entry->o = offset; | |
136 | __entry->v = val; | |
137 | ), | |
138 | TP_printk(DEV_PR_FMT "%04x=%04x", DEV_PR_ARG, __entry->o, __entry->v) | |
139 | ); | |
140 | ||
141 | DECLARE_EVENT_CLASS(dev_rf_reg_evt, | |
142 | TP_PROTO(struct mt7601u_dev *dev, u8 bank, u8 reg, u8 val), | |
143 | TP_ARGS(dev, bank, reg, val), | |
144 | TP_STRUCT__entry( | |
145 | DEV_ENTRY | |
146 | __field(u8, bank) | |
147 | __field(u8, reg) | |
148 | __field(u8, val) | |
149 | ), | |
150 | TP_fast_assign( | |
151 | DEV_ASSIGN; | |
152 | REG_ASSIGN; | |
153 | __entry->bank = bank; | |
154 | ), | |
155 | TP_printk( | |
156 | DEV_PR_FMT "%02hhx:%02hhx=%02hhx", | |
157 | DEV_PR_ARG, __entry->bank, __entry->reg, __entry->val | |
158 | ) | |
159 | ); | |
160 | ||
161 | DEFINE_EVENT(dev_rf_reg_evt, rf_read, | |
162 | TP_PROTO(struct mt7601u_dev *dev, u8 bank, u8 reg, u8 val), | |
163 | TP_ARGS(dev, bank, reg, val) | |
164 | ); | |
165 | ||
166 | DEFINE_EVENT(dev_rf_reg_evt, rf_write, | |
167 | TP_PROTO(struct mt7601u_dev *dev, u8 bank, u8 reg, u8 val), | |
168 | TP_ARGS(dev, bank, reg, val) | |
169 | ); | |
170 | ||
171 | DECLARE_EVENT_CLASS(dev_bbp_reg_evt, | |
172 | TP_PROTO(struct mt7601u_dev *dev, u8 reg, u8 val), | |
173 | TP_ARGS(dev, reg, val), | |
174 | TP_STRUCT__entry( | |
175 | DEV_ENTRY | |
176 | __field(u8, reg) | |
177 | __field(u8, val) | |
178 | ), | |
179 | TP_fast_assign( | |
180 | DEV_ASSIGN; | |
181 | REG_ASSIGN; | |
182 | ), | |
183 | TP_printk( | |
184 | DEV_PR_FMT "%02hhx=%02hhx", | |
185 | DEV_PR_ARG, __entry->reg, __entry->val | |
186 | ) | |
187 | ); | |
188 | ||
189 | DEFINE_EVENT(dev_bbp_reg_evt, bbp_read, | |
190 | TP_PROTO(struct mt7601u_dev *dev, u8 reg, u8 val), | |
191 | TP_ARGS(dev, reg, val) | |
192 | ); | |
193 | ||
194 | DEFINE_EVENT(dev_bbp_reg_evt, bbp_write, | |
195 | TP_PROTO(struct mt7601u_dev *dev, u8 reg, u8 val), | |
196 | TP_ARGS(dev, reg, val) | |
197 | ); | |
198 | ||
199 | DECLARE_EVENT_CLASS(dev_simple_evt, | |
200 | TP_PROTO(struct mt7601u_dev *dev, u8 val), | |
201 | TP_ARGS(dev, val), | |
202 | TP_STRUCT__entry( | |
203 | DEV_ENTRY | |
204 | __field(u8, val) | |
205 | ), | |
206 | TP_fast_assign( | |
207 | DEV_ASSIGN; | |
208 | __entry->val = val; | |
209 | ), | |
210 | TP_printk( | |
211 | DEV_PR_FMT "%02hhx", DEV_PR_ARG, __entry->val | |
212 | ) | |
213 | ); | |
214 | ||
215 | DEFINE_EVENT(dev_simple_evt, temp_mode, | |
216 | TP_PROTO(struct mt7601u_dev *dev, u8 val), | |
217 | TP_ARGS(dev, val) | |
218 | ); | |
219 | ||
220 | DEFINE_EVENT(dev_simple_evt, read_temp, | |
221 | TP_PROTO(struct mt7601u_dev *dev, u8 val), | |
222 | TP_ARGS(dev, val) | |
223 | ); | |
224 | ||
225 | DEFINE_EVENT(dev_simple_evt, freq_cal_adjust, | |
226 | TP_PROTO(struct mt7601u_dev *dev, u8 val), | |
227 | TP_ARGS(dev, val) | |
228 | ); | |
229 | ||
230 | TRACE_EVENT(freq_cal_offset, | |
231 | TP_PROTO(struct mt7601u_dev *dev, u8 phy_mode, s8 freq_off), | |
232 | TP_ARGS(dev, phy_mode, freq_off), | |
233 | TP_STRUCT__entry( | |
234 | DEV_ENTRY | |
235 | __field(u8, phy_mode) | |
236 | __field(s8, freq_off) | |
237 | ), | |
238 | TP_fast_assign( | |
239 | DEV_ASSIGN; | |
240 | __entry->phy_mode = phy_mode; | |
241 | __entry->freq_off = freq_off; | |
242 | ), | |
243 | TP_printk(DEV_PR_FMT "phy:%02hhx off:%02hhx", | |
244 | DEV_PR_ARG, __entry->phy_mode, __entry->freq_off) | |
245 | ); | |
246 | ||
247 | TRACE_EVENT(mt_rx, | |
248 | TP_PROTO(struct mt7601u_dev *dev, struct mt7601u_rxwi *rxwi, u32 f), | |
249 | TP_ARGS(dev, rxwi, f), | |
250 | TP_STRUCT__entry( | |
251 | DEV_ENTRY | |
252 | __field_struct(struct mt7601u_rxwi, rxwi) | |
253 | __field(u32, fce_info) | |
254 | ), | |
255 | TP_fast_assign( | |
256 | DEV_ASSIGN; | |
257 | __entry->rxwi = *rxwi; | |
258 | __entry->fce_info = f; | |
259 | ), | |
260 | TP_printk(DEV_PR_FMT "rxi:%08x ctl:%08x frag_sn:%04hx rate:%04hx " | |
261 | "uknw:%02hhx z:%02hhx%02hhx%02hhx snr:%02hhx " | |
262 | "ant:%02hhx gain:%02hhx freq_o:%02hhx " | |
263 | "r:%08x ea:%08x fce:%08x", DEV_PR_ARG, | |
264 | le32_to_cpu(__entry->rxwi.rxinfo), | |
265 | le32_to_cpu(__entry->rxwi.ctl), | |
266 | le16_to_cpu(__entry->rxwi.frag_sn), | |
267 | le16_to_cpu(__entry->rxwi.rate), | |
268 | __entry->rxwi.unknown, | |
269 | __entry->rxwi.zero[0], __entry->rxwi.zero[1], | |
270 | __entry->rxwi.zero[2], | |
271 | __entry->rxwi.snr, __entry->rxwi.ant, | |
272 | __entry->rxwi.gain, __entry->rxwi.freq_off, | |
273 | __entry->rxwi.resv2, __entry->rxwi.expert_ant, | |
274 | __entry->fce_info) | |
275 | ); | |
276 | ||
277 | TRACE_EVENT(mt_tx, | |
278 | TP_PROTO(struct mt7601u_dev *dev, struct sk_buff *skb, | |
279 | struct mt76_sta *sta, struct mt76_txwi *h), | |
280 | TP_ARGS(dev, skb, sta, h), | |
281 | TP_STRUCT__entry( | |
282 | DEV_ENTRY | |
283 | __field_struct(struct mt76_txwi, h) | |
284 | __field(struct sk_buff *, skb) | |
285 | __field(struct mt76_sta *, sta) | |
286 | ), | |
287 | TP_fast_assign( | |
288 | DEV_ASSIGN; | |
289 | __entry->h = *h; | |
290 | __entry->skb = skb; | |
291 | __entry->sta = sta; | |
292 | ), | |
293 | TP_printk(DEV_PR_FMT "skb:%p sta:%p flg:%04hx rate_ctl:%04hx " | |
294 | "ack:%02hhx wcid:%02hhx len_ctl:%05hx", DEV_PR_ARG, | |
295 | __entry->skb, __entry->sta, | |
296 | le16_to_cpu(__entry->h.flags), | |
297 | le16_to_cpu(__entry->h.rate_ctl), | |
298 | __entry->h.ack_ctl, __entry->h.wcid, | |
299 | le16_to_cpu(__entry->h.len_ctl)) | |
300 | ); | |
301 | ||
302 | TRACE_EVENT(mt_tx_dma_done, | |
303 | TP_PROTO(struct mt7601u_dev *dev, struct sk_buff *skb), | |
304 | TP_ARGS(dev, skb), | |
305 | TP_STRUCT__entry( | |
306 | DEV_ENTRY | |
307 | __field(struct sk_buff *, skb) | |
308 | ), | |
309 | TP_fast_assign( | |
310 | DEV_ASSIGN; | |
311 | __entry->skb = skb; | |
312 | ), | |
313 | TP_printk(DEV_PR_FMT "%p", DEV_PR_ARG, __entry->skb) | |
314 | ); | |
315 | ||
316 | TRACE_EVENT(mt_tx_status_cleaned, | |
317 | TP_PROTO(struct mt7601u_dev *dev, int cleaned), | |
318 | TP_ARGS(dev, cleaned), | |
319 | TP_STRUCT__entry( | |
320 | DEV_ENTRY | |
321 | __field(int, cleaned) | |
322 | ), | |
323 | TP_fast_assign( | |
324 | DEV_ASSIGN; | |
325 | __entry->cleaned = cleaned; | |
326 | ), | |
327 | TP_printk(DEV_PR_FMT "%d", DEV_PR_ARG, __entry->cleaned) | |
328 | ); | |
329 | ||
330 | TRACE_EVENT(mt_tx_status, | |
331 | TP_PROTO(struct mt7601u_dev *dev, u32 stat1, u32 stat2), | |
332 | TP_ARGS(dev, stat1, stat2), | |
333 | TP_STRUCT__entry( | |
334 | DEV_ENTRY | |
335 | __field(u32, stat1) __field(u32, stat2) | |
336 | ), | |
337 | TP_fast_assign( | |
338 | DEV_ASSIGN; | |
339 | __entry->stat1 = stat1; | |
340 | __entry->stat2 = stat2; | |
341 | ), | |
342 | TP_printk(DEV_PR_FMT "%08x %08x", | |
343 | DEV_PR_ARG, __entry->stat1, __entry->stat2) | |
344 | ); | |
345 | ||
346 | TRACE_EVENT(mt_rx_dma_aggr, | |
347 | TP_PROTO(struct mt7601u_dev *dev, int cnt, bool paged), | |
348 | TP_ARGS(dev, cnt, paged), | |
349 | TP_STRUCT__entry( | |
350 | DEV_ENTRY | |
351 | __field(u8, cnt) | |
352 | __field(bool, paged) | |
353 | ), | |
354 | TP_fast_assign( | |
355 | DEV_ASSIGN; | |
356 | __entry->cnt = cnt; | |
357 | __entry->paged = paged; | |
358 | ), | |
359 | TP_printk(DEV_PR_FMT "cnt:%d paged:%d", | |
360 | DEV_PR_ARG, __entry->cnt, __entry->paged) | |
361 | ); | |
362 | ||
363 | DEFINE_EVENT(dev_simple_evt, set_key, | |
364 | TP_PROTO(struct mt7601u_dev *dev, u8 val), | |
365 | TP_ARGS(dev, val) | |
366 | ); | |
367 | ||
368 | TRACE_EVENT(set_shared_key, | |
369 | TP_PROTO(struct mt7601u_dev *dev, u8 vid, u8 key), | |
370 | TP_ARGS(dev, vid, key), | |
371 | TP_STRUCT__entry( | |
372 | DEV_ENTRY | |
373 | __field(u8, vid) | |
374 | __field(u8, key) | |
375 | ), | |
376 | TP_fast_assign( | |
377 | DEV_ASSIGN; | |
378 | __entry->vid = vid; | |
379 | __entry->key = key; | |
380 | ), | |
381 | TP_printk(DEV_PR_FMT "phy:%02hhx off:%02hhx", | |
382 | DEV_PR_ARG, __entry->vid, __entry->key) | |
383 | ); | |
384 | ||
385 | #endif | |
386 | ||
387 | #undef TRACE_INCLUDE_PATH | |
388 | #define TRACE_INCLUDE_PATH . | |
389 | #undef TRACE_INCLUDE_FILE | |
390 | #define TRACE_INCLUDE_FILE trace | |
391 | ||
392 | #include <trace/define_trace.h> |