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