18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */
28c2ecf20Sopenharmony_ci/*
38c2ecf20Sopenharmony_ci * Copyright (C) 2014 Felix Fietkau <nbd@openwrt.org>
48c2ecf20Sopenharmony_ci * Copyright (C) 2015 Jakub Kicinski <kubakici@wp.pl>
58c2ecf20Sopenharmony_ci */
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_ci#if !defined(__MT7601U_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
88c2ecf20Sopenharmony_ci#define __MT7601U_TRACE_H
98c2ecf20Sopenharmony_ci
108c2ecf20Sopenharmony_ci#include <linux/tracepoint.h>
118c2ecf20Sopenharmony_ci#include "mt7601u.h"
128c2ecf20Sopenharmony_ci#include "mac.h"
138c2ecf20Sopenharmony_ci
148c2ecf20Sopenharmony_ci#undef TRACE_SYSTEM
158c2ecf20Sopenharmony_ci#define TRACE_SYSTEM mt7601u
168c2ecf20Sopenharmony_ci
178c2ecf20Sopenharmony_ci#define MAXNAME		32
188c2ecf20Sopenharmony_ci#define DEV_ENTRY	__array(char, wiphy_name, 32)
198c2ecf20Sopenharmony_ci#define DEV_ASSIGN	strlcpy(__entry->wiphy_name,			\
208c2ecf20Sopenharmony_ci				wiphy_name(dev->hw->wiphy), MAXNAME)
218c2ecf20Sopenharmony_ci#define DEV_PR_FMT	"%s "
228c2ecf20Sopenharmony_ci#define DEV_PR_ARG	__entry->wiphy_name
238c2ecf20Sopenharmony_ci
248c2ecf20Sopenharmony_ci#define REG_ENTRY	__field(u32, reg) __field(u32, val)
258c2ecf20Sopenharmony_ci#define REG_ASSIGN	__entry->reg = reg; __entry->val = val
268c2ecf20Sopenharmony_ci#define REG_PR_FMT	"%04x=%08x"
278c2ecf20Sopenharmony_ci#define REG_PR_ARG	__entry->reg, __entry->val
288c2ecf20Sopenharmony_ci
298c2ecf20Sopenharmony_ciDECLARE_EVENT_CLASS(dev_reg_evtu,
308c2ecf20Sopenharmony_ci	TP_PROTO(struct mt7601u_dev *dev, u32 reg, u32 val),
318c2ecf20Sopenharmony_ci	TP_ARGS(dev, reg, val),
328c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
338c2ecf20Sopenharmony_ci		DEV_ENTRY
348c2ecf20Sopenharmony_ci		REG_ENTRY
358c2ecf20Sopenharmony_ci	),
368c2ecf20Sopenharmony_ci	TP_fast_assign(
378c2ecf20Sopenharmony_ci		DEV_ASSIGN;
388c2ecf20Sopenharmony_ci		REG_ASSIGN;
398c2ecf20Sopenharmony_ci	),
408c2ecf20Sopenharmony_ci	TP_printk(
418c2ecf20Sopenharmony_ci		DEV_PR_FMT REG_PR_FMT,
428c2ecf20Sopenharmony_ci		DEV_PR_ARG, REG_PR_ARG
438c2ecf20Sopenharmony_ci	)
448c2ecf20Sopenharmony_ci);
458c2ecf20Sopenharmony_ci
468c2ecf20Sopenharmony_ciDEFINE_EVENT(dev_reg_evtu, reg_read,
478c2ecf20Sopenharmony_ci	TP_PROTO(struct mt7601u_dev *dev, u32 reg, u32 val),
488c2ecf20Sopenharmony_ci	TP_ARGS(dev, reg, val)
498c2ecf20Sopenharmony_ci);
508c2ecf20Sopenharmony_ci
518c2ecf20Sopenharmony_ciDEFINE_EVENT(dev_reg_evtu, reg_write,
528c2ecf20Sopenharmony_ci	TP_PROTO(struct mt7601u_dev *dev, u32 reg, u32 val),
538c2ecf20Sopenharmony_ci	TP_ARGS(dev, reg, val)
548c2ecf20Sopenharmony_ci);
558c2ecf20Sopenharmony_ci
568c2ecf20Sopenharmony_ciTRACE_EVENT(mt_submit_urb,
578c2ecf20Sopenharmony_ci	TP_PROTO(struct mt7601u_dev *dev, struct urb *u),
588c2ecf20Sopenharmony_ci	TP_ARGS(dev, u),
598c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
608c2ecf20Sopenharmony_ci		DEV_ENTRY __field(unsigned, pipe) __field(u32, len)
618c2ecf20Sopenharmony_ci	),
628c2ecf20Sopenharmony_ci	TP_fast_assign(
638c2ecf20Sopenharmony_ci		DEV_ASSIGN;
648c2ecf20Sopenharmony_ci		__entry->pipe = u->pipe;
658c2ecf20Sopenharmony_ci		__entry->len = u->transfer_buffer_length;
668c2ecf20Sopenharmony_ci	),
678c2ecf20Sopenharmony_ci	TP_printk(DEV_PR_FMT "p:%08x len:%u",
688c2ecf20Sopenharmony_ci		  DEV_PR_ARG, __entry->pipe, __entry->len)
698c2ecf20Sopenharmony_ci);
708c2ecf20Sopenharmony_ci
718c2ecf20Sopenharmony_ci#define trace_mt_submit_urb_sync(__dev, __pipe, __len) ({	\
728c2ecf20Sopenharmony_ci	struct urb u;					\
738c2ecf20Sopenharmony_ci	u.pipe = __pipe;				\
748c2ecf20Sopenharmony_ci	u.transfer_buffer_length = __len;		\
758c2ecf20Sopenharmony_ci	trace_mt_submit_urb(__dev, &u);			\
768c2ecf20Sopenharmony_ci})
778c2ecf20Sopenharmony_ci
788c2ecf20Sopenharmony_ciTRACE_EVENT(mt_mcu_msg_send,
798c2ecf20Sopenharmony_ci	TP_PROTO(struct mt7601u_dev *dev,
808c2ecf20Sopenharmony_ci		 struct sk_buff *skb, u32 csum, bool resp),
818c2ecf20Sopenharmony_ci	TP_ARGS(dev, skb, csum, resp),
828c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
838c2ecf20Sopenharmony_ci		DEV_ENTRY
848c2ecf20Sopenharmony_ci		__field(u32, info)
858c2ecf20Sopenharmony_ci		__field(u32, csum)
868c2ecf20Sopenharmony_ci		__field(bool, resp)
878c2ecf20Sopenharmony_ci	),
888c2ecf20Sopenharmony_ci	TP_fast_assign(
898c2ecf20Sopenharmony_ci		DEV_ASSIGN;
908c2ecf20Sopenharmony_ci		__entry->info = *(u32 *)skb->data;
918c2ecf20Sopenharmony_ci		__entry->csum = csum;
928c2ecf20Sopenharmony_ci		__entry->resp = resp;
938c2ecf20Sopenharmony_ci	),
948c2ecf20Sopenharmony_ci	TP_printk(DEV_PR_FMT "i:%08x c:%08x r:%d",
958c2ecf20Sopenharmony_ci		  DEV_PR_ARG, __entry->info, __entry->csum, __entry->resp)
968c2ecf20Sopenharmony_ci);
978c2ecf20Sopenharmony_ci
988c2ecf20Sopenharmony_ciTRACE_EVENT(mt_vend_req,
998c2ecf20Sopenharmony_ci	TP_PROTO(struct mt7601u_dev *dev, unsigned pipe, u8 req, u8 req_type,
1008c2ecf20Sopenharmony_ci		 u16 val, u16 offset, void *buf, size_t buflen, int ret),
1018c2ecf20Sopenharmony_ci	TP_ARGS(dev, pipe, req, req_type, val, offset, buf, buflen, ret),
1028c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
1038c2ecf20Sopenharmony_ci		DEV_ENTRY
1048c2ecf20Sopenharmony_ci		__field(unsigned, pipe) __field(u8, req) __field(u8, req_type)
1058c2ecf20Sopenharmony_ci		__field(u16, val) __field(u16, offset) __field(void*, buf)
1068c2ecf20Sopenharmony_ci		__field(int, buflen) __field(int, ret)
1078c2ecf20Sopenharmony_ci	),
1088c2ecf20Sopenharmony_ci	TP_fast_assign(
1098c2ecf20Sopenharmony_ci		DEV_ASSIGN;
1108c2ecf20Sopenharmony_ci		__entry->pipe = pipe;
1118c2ecf20Sopenharmony_ci		__entry->req = req;
1128c2ecf20Sopenharmony_ci		__entry->req_type = req_type;
1138c2ecf20Sopenharmony_ci		__entry->val = val;
1148c2ecf20Sopenharmony_ci		__entry->offset = offset;
1158c2ecf20Sopenharmony_ci		__entry->buf = buf;
1168c2ecf20Sopenharmony_ci		__entry->buflen = buflen;
1178c2ecf20Sopenharmony_ci		__entry->ret = ret;
1188c2ecf20Sopenharmony_ci	),
1198c2ecf20Sopenharmony_ci	TP_printk(DEV_PR_FMT
1208c2ecf20Sopenharmony_ci		  "%d p:%08x req:%02hhx %02hhx val:%04hx %04hx buf:%d %d",
1218c2ecf20Sopenharmony_ci		  DEV_PR_ARG, __entry->ret, __entry->pipe, __entry->req,
1228c2ecf20Sopenharmony_ci		  __entry->req_type, __entry->val, __entry->offset,
1238c2ecf20Sopenharmony_ci		  !!__entry->buf, __entry->buflen)
1248c2ecf20Sopenharmony_ci);
1258c2ecf20Sopenharmony_ci
1268c2ecf20Sopenharmony_ciTRACE_EVENT(ee_read,
1278c2ecf20Sopenharmony_ci	TP_PROTO(struct mt7601u_dev *dev, int offset, u16 val),
1288c2ecf20Sopenharmony_ci	TP_ARGS(dev, offset, val),
1298c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
1308c2ecf20Sopenharmony_ci		DEV_ENTRY
1318c2ecf20Sopenharmony_ci		__field(int, o) __field(u16, v)
1328c2ecf20Sopenharmony_ci	),
1338c2ecf20Sopenharmony_ci	TP_fast_assign(
1348c2ecf20Sopenharmony_ci		DEV_ASSIGN;
1358c2ecf20Sopenharmony_ci		__entry->o = offset;
1368c2ecf20Sopenharmony_ci		__entry->v = val;
1378c2ecf20Sopenharmony_ci	),
1388c2ecf20Sopenharmony_ci	TP_printk(DEV_PR_FMT "%04x=%04x", DEV_PR_ARG, __entry->o, __entry->v)
1398c2ecf20Sopenharmony_ci);
1408c2ecf20Sopenharmony_ci
1418c2ecf20Sopenharmony_ciDECLARE_EVENT_CLASS(dev_rf_reg_evt,
1428c2ecf20Sopenharmony_ci	TP_PROTO(struct mt7601u_dev *dev, u8 bank, u8 reg, u8 val),
1438c2ecf20Sopenharmony_ci	TP_ARGS(dev, bank, reg, val),
1448c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
1458c2ecf20Sopenharmony_ci		DEV_ENTRY
1468c2ecf20Sopenharmony_ci		__field(u8, bank)
1478c2ecf20Sopenharmony_ci		__field(u8, reg)
1488c2ecf20Sopenharmony_ci		__field(u8, val)
1498c2ecf20Sopenharmony_ci	),
1508c2ecf20Sopenharmony_ci	TP_fast_assign(
1518c2ecf20Sopenharmony_ci		DEV_ASSIGN;
1528c2ecf20Sopenharmony_ci		REG_ASSIGN;
1538c2ecf20Sopenharmony_ci		__entry->bank = bank;
1548c2ecf20Sopenharmony_ci	),
1558c2ecf20Sopenharmony_ci	TP_printk(
1568c2ecf20Sopenharmony_ci		DEV_PR_FMT "%02hhx:%02hhx=%02hhx",
1578c2ecf20Sopenharmony_ci		DEV_PR_ARG, __entry->bank, __entry->reg, __entry->val
1588c2ecf20Sopenharmony_ci	)
1598c2ecf20Sopenharmony_ci);
1608c2ecf20Sopenharmony_ci
1618c2ecf20Sopenharmony_ciDEFINE_EVENT(dev_rf_reg_evt, rf_read,
1628c2ecf20Sopenharmony_ci	TP_PROTO(struct mt7601u_dev *dev, u8 bank, u8 reg, u8 val),
1638c2ecf20Sopenharmony_ci	TP_ARGS(dev, bank, reg, val)
1648c2ecf20Sopenharmony_ci);
1658c2ecf20Sopenharmony_ci
1668c2ecf20Sopenharmony_ciDEFINE_EVENT(dev_rf_reg_evt, rf_write,
1678c2ecf20Sopenharmony_ci	TP_PROTO(struct mt7601u_dev *dev, u8 bank, u8 reg, u8 val),
1688c2ecf20Sopenharmony_ci	TP_ARGS(dev, bank, reg, val)
1698c2ecf20Sopenharmony_ci);
1708c2ecf20Sopenharmony_ci
1718c2ecf20Sopenharmony_ciDECLARE_EVENT_CLASS(dev_bbp_reg_evt,
1728c2ecf20Sopenharmony_ci	TP_PROTO(struct mt7601u_dev *dev, u8 reg, u8 val),
1738c2ecf20Sopenharmony_ci	TP_ARGS(dev, reg, val),
1748c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
1758c2ecf20Sopenharmony_ci		DEV_ENTRY
1768c2ecf20Sopenharmony_ci		__field(u8, reg)
1778c2ecf20Sopenharmony_ci		__field(u8, val)
1788c2ecf20Sopenharmony_ci	),
1798c2ecf20Sopenharmony_ci	TP_fast_assign(
1808c2ecf20Sopenharmony_ci		DEV_ASSIGN;
1818c2ecf20Sopenharmony_ci		REG_ASSIGN;
1828c2ecf20Sopenharmony_ci	),
1838c2ecf20Sopenharmony_ci	TP_printk(
1848c2ecf20Sopenharmony_ci		DEV_PR_FMT "%02hhx=%02hhx",
1858c2ecf20Sopenharmony_ci		DEV_PR_ARG, __entry->reg, __entry->val
1868c2ecf20Sopenharmony_ci	)
1878c2ecf20Sopenharmony_ci);
1888c2ecf20Sopenharmony_ci
1898c2ecf20Sopenharmony_ciDEFINE_EVENT(dev_bbp_reg_evt, bbp_read,
1908c2ecf20Sopenharmony_ci	TP_PROTO(struct mt7601u_dev *dev, u8 reg, u8 val),
1918c2ecf20Sopenharmony_ci	TP_ARGS(dev, reg, val)
1928c2ecf20Sopenharmony_ci);
1938c2ecf20Sopenharmony_ci
1948c2ecf20Sopenharmony_ciDEFINE_EVENT(dev_bbp_reg_evt, bbp_write,
1958c2ecf20Sopenharmony_ci	TP_PROTO(struct mt7601u_dev *dev, u8 reg, u8 val),
1968c2ecf20Sopenharmony_ci	TP_ARGS(dev, reg, val)
1978c2ecf20Sopenharmony_ci);
1988c2ecf20Sopenharmony_ci
1998c2ecf20Sopenharmony_ciDECLARE_EVENT_CLASS(dev_simple_evt,
2008c2ecf20Sopenharmony_ci	TP_PROTO(struct mt7601u_dev *dev, u8 val),
2018c2ecf20Sopenharmony_ci	TP_ARGS(dev, val),
2028c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
2038c2ecf20Sopenharmony_ci		DEV_ENTRY
2048c2ecf20Sopenharmony_ci		__field(u8, val)
2058c2ecf20Sopenharmony_ci	),
2068c2ecf20Sopenharmony_ci	TP_fast_assign(
2078c2ecf20Sopenharmony_ci		DEV_ASSIGN;
2088c2ecf20Sopenharmony_ci		__entry->val = val;
2098c2ecf20Sopenharmony_ci	),
2108c2ecf20Sopenharmony_ci	TP_printk(
2118c2ecf20Sopenharmony_ci		DEV_PR_FMT "%02hhx", DEV_PR_ARG, __entry->val
2128c2ecf20Sopenharmony_ci	)
2138c2ecf20Sopenharmony_ci);
2148c2ecf20Sopenharmony_ci
2158c2ecf20Sopenharmony_ciDEFINE_EVENT(dev_simple_evt, temp_mode,
2168c2ecf20Sopenharmony_ci	TP_PROTO(struct mt7601u_dev *dev, u8 val),
2178c2ecf20Sopenharmony_ci	TP_ARGS(dev, val)
2188c2ecf20Sopenharmony_ci);
2198c2ecf20Sopenharmony_ci
2208c2ecf20Sopenharmony_ciDEFINE_EVENT(dev_simple_evt, read_temp,
2218c2ecf20Sopenharmony_ci	TP_PROTO(struct mt7601u_dev *dev, u8 val),
2228c2ecf20Sopenharmony_ci	TP_ARGS(dev, val)
2238c2ecf20Sopenharmony_ci);
2248c2ecf20Sopenharmony_ci
2258c2ecf20Sopenharmony_ciDEFINE_EVENT(dev_simple_evt, freq_cal_adjust,
2268c2ecf20Sopenharmony_ci	TP_PROTO(struct mt7601u_dev *dev, u8 val),
2278c2ecf20Sopenharmony_ci	TP_ARGS(dev, val)
2288c2ecf20Sopenharmony_ci);
2298c2ecf20Sopenharmony_ci
2308c2ecf20Sopenharmony_ciTRACE_EVENT(freq_cal_offset,
2318c2ecf20Sopenharmony_ci	TP_PROTO(struct mt7601u_dev *dev, u8 phy_mode, s8 freq_off),
2328c2ecf20Sopenharmony_ci	TP_ARGS(dev, phy_mode, freq_off),
2338c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
2348c2ecf20Sopenharmony_ci		DEV_ENTRY
2358c2ecf20Sopenharmony_ci		__field(u8, phy_mode)
2368c2ecf20Sopenharmony_ci		__field(s8, freq_off)
2378c2ecf20Sopenharmony_ci	),
2388c2ecf20Sopenharmony_ci	TP_fast_assign(
2398c2ecf20Sopenharmony_ci		DEV_ASSIGN;
2408c2ecf20Sopenharmony_ci		__entry->phy_mode = phy_mode;
2418c2ecf20Sopenharmony_ci		__entry->freq_off = freq_off;
2428c2ecf20Sopenharmony_ci	),
2438c2ecf20Sopenharmony_ci	TP_printk(DEV_PR_FMT "phy:%02hhx off:%02hhx",
2448c2ecf20Sopenharmony_ci		  DEV_PR_ARG, __entry->phy_mode, __entry->freq_off)
2458c2ecf20Sopenharmony_ci);
2468c2ecf20Sopenharmony_ci
2478c2ecf20Sopenharmony_ciTRACE_EVENT(mt_rx,
2488c2ecf20Sopenharmony_ci	TP_PROTO(struct mt7601u_dev *dev, struct mt7601u_rxwi *rxwi, u32 f),
2498c2ecf20Sopenharmony_ci	TP_ARGS(dev, rxwi, f),
2508c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
2518c2ecf20Sopenharmony_ci		DEV_ENTRY
2528c2ecf20Sopenharmony_ci		__field_struct(struct mt7601u_rxwi, rxwi)
2538c2ecf20Sopenharmony_ci		__field(u32, fce_info)
2548c2ecf20Sopenharmony_ci	),
2558c2ecf20Sopenharmony_ci	TP_fast_assign(
2568c2ecf20Sopenharmony_ci		DEV_ASSIGN;
2578c2ecf20Sopenharmony_ci		__entry->rxwi = *rxwi;
2588c2ecf20Sopenharmony_ci		__entry->fce_info = f;
2598c2ecf20Sopenharmony_ci	),
2608c2ecf20Sopenharmony_ci	TP_printk(DEV_PR_FMT "rxi:%08x ctl:%08x frag_sn:%04hx rate:%04hx "
2618c2ecf20Sopenharmony_ci		  "uknw:%02hhx z:%02hhx%02hhx%02hhx snr:%02hhx "
2628c2ecf20Sopenharmony_ci		  "ant:%02hhx gain:%02hhx freq_o:%02hhx "
2638c2ecf20Sopenharmony_ci		  "r:%08x ea:%08x fce:%08x", DEV_PR_ARG,
2648c2ecf20Sopenharmony_ci		  le32_to_cpu(__entry->rxwi.rxinfo),
2658c2ecf20Sopenharmony_ci		  le32_to_cpu(__entry->rxwi.ctl),
2668c2ecf20Sopenharmony_ci		  le16_to_cpu(__entry->rxwi.frag_sn),
2678c2ecf20Sopenharmony_ci		  le16_to_cpu(__entry->rxwi.rate),
2688c2ecf20Sopenharmony_ci		  __entry->rxwi.unknown,
2698c2ecf20Sopenharmony_ci		  __entry->rxwi.zero[0], __entry->rxwi.zero[1],
2708c2ecf20Sopenharmony_ci		  __entry->rxwi.zero[2],
2718c2ecf20Sopenharmony_ci		  __entry->rxwi.snr, __entry->rxwi.ant,
2728c2ecf20Sopenharmony_ci		  __entry->rxwi.gain, __entry->rxwi.freq_off,
2738c2ecf20Sopenharmony_ci		  __entry->rxwi.resv2, __entry->rxwi.expert_ant,
2748c2ecf20Sopenharmony_ci		  __entry->fce_info)
2758c2ecf20Sopenharmony_ci);
2768c2ecf20Sopenharmony_ci
2778c2ecf20Sopenharmony_ciTRACE_EVENT(mt_tx,
2788c2ecf20Sopenharmony_ci	TP_PROTO(struct mt7601u_dev *dev, struct sk_buff *skb,
2798c2ecf20Sopenharmony_ci		 struct mt76_sta *sta, struct mt76_txwi *h),
2808c2ecf20Sopenharmony_ci	TP_ARGS(dev, skb, sta, h),
2818c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
2828c2ecf20Sopenharmony_ci		DEV_ENTRY
2838c2ecf20Sopenharmony_ci		__field_struct(struct mt76_txwi, h)
2848c2ecf20Sopenharmony_ci		__field(struct sk_buff *, skb)
2858c2ecf20Sopenharmony_ci		__field(struct mt76_sta *, sta)
2868c2ecf20Sopenharmony_ci	),
2878c2ecf20Sopenharmony_ci	TP_fast_assign(
2888c2ecf20Sopenharmony_ci		DEV_ASSIGN;
2898c2ecf20Sopenharmony_ci		__entry->h = *h;
2908c2ecf20Sopenharmony_ci		__entry->skb = skb;
2918c2ecf20Sopenharmony_ci		__entry->sta = sta;
2928c2ecf20Sopenharmony_ci	),
2938c2ecf20Sopenharmony_ci	TP_printk(DEV_PR_FMT "skb:%p sta:%p  flg:%04hx rate_ctl:%04hx "
2948c2ecf20Sopenharmony_ci		  "ack:%02hhx wcid:%02hhx len_ctl:%05hx", DEV_PR_ARG,
2958c2ecf20Sopenharmony_ci		  __entry->skb, __entry->sta,
2968c2ecf20Sopenharmony_ci		  le16_to_cpu(__entry->h.flags),
2978c2ecf20Sopenharmony_ci		  le16_to_cpu(__entry->h.rate_ctl),
2988c2ecf20Sopenharmony_ci		  __entry->h.ack_ctl, __entry->h.wcid,
2998c2ecf20Sopenharmony_ci		  le16_to_cpu(__entry->h.len_ctl))
3008c2ecf20Sopenharmony_ci);
3018c2ecf20Sopenharmony_ci
3028c2ecf20Sopenharmony_ciTRACE_EVENT(mt_tx_dma_done,
3038c2ecf20Sopenharmony_ci	TP_PROTO(struct mt7601u_dev *dev, struct sk_buff *skb),
3048c2ecf20Sopenharmony_ci	TP_ARGS(dev, skb),
3058c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
3068c2ecf20Sopenharmony_ci		DEV_ENTRY
3078c2ecf20Sopenharmony_ci		__field(struct sk_buff *, skb)
3088c2ecf20Sopenharmony_ci	),
3098c2ecf20Sopenharmony_ci	TP_fast_assign(
3108c2ecf20Sopenharmony_ci		DEV_ASSIGN;
3118c2ecf20Sopenharmony_ci		__entry->skb = skb;
3128c2ecf20Sopenharmony_ci	),
3138c2ecf20Sopenharmony_ci	TP_printk(DEV_PR_FMT "%p", DEV_PR_ARG, __entry->skb)
3148c2ecf20Sopenharmony_ci);
3158c2ecf20Sopenharmony_ci
3168c2ecf20Sopenharmony_ciTRACE_EVENT(mt_tx_status_cleaned,
3178c2ecf20Sopenharmony_ci	TP_PROTO(struct mt7601u_dev *dev, int cleaned),
3188c2ecf20Sopenharmony_ci	TP_ARGS(dev, cleaned),
3198c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
3208c2ecf20Sopenharmony_ci		DEV_ENTRY
3218c2ecf20Sopenharmony_ci		__field(int, cleaned)
3228c2ecf20Sopenharmony_ci	),
3238c2ecf20Sopenharmony_ci	TP_fast_assign(
3248c2ecf20Sopenharmony_ci		DEV_ASSIGN;
3258c2ecf20Sopenharmony_ci		__entry->cleaned = cleaned;
3268c2ecf20Sopenharmony_ci	),
3278c2ecf20Sopenharmony_ci	TP_printk(DEV_PR_FMT "%d", DEV_PR_ARG, __entry->cleaned)
3288c2ecf20Sopenharmony_ci);
3298c2ecf20Sopenharmony_ci
3308c2ecf20Sopenharmony_ciTRACE_EVENT(mt_tx_status,
3318c2ecf20Sopenharmony_ci	TP_PROTO(struct mt7601u_dev *dev, u32 stat1, u32 stat2),
3328c2ecf20Sopenharmony_ci	TP_ARGS(dev, stat1, stat2),
3338c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
3348c2ecf20Sopenharmony_ci		DEV_ENTRY
3358c2ecf20Sopenharmony_ci		__field(u32, stat1)	__field(u32, stat2)
3368c2ecf20Sopenharmony_ci	),
3378c2ecf20Sopenharmony_ci	TP_fast_assign(
3388c2ecf20Sopenharmony_ci		DEV_ASSIGN;
3398c2ecf20Sopenharmony_ci		__entry->stat1 = stat1;
3408c2ecf20Sopenharmony_ci		__entry->stat2 = stat2;
3418c2ecf20Sopenharmony_ci	),
3428c2ecf20Sopenharmony_ci	TP_printk(DEV_PR_FMT "%08x %08x",
3438c2ecf20Sopenharmony_ci		  DEV_PR_ARG, __entry->stat1, __entry->stat2)
3448c2ecf20Sopenharmony_ci);
3458c2ecf20Sopenharmony_ci
3468c2ecf20Sopenharmony_ciTRACE_EVENT(mt_rx_dma_aggr,
3478c2ecf20Sopenharmony_ci	TP_PROTO(struct mt7601u_dev *dev, int cnt, bool paged),
3488c2ecf20Sopenharmony_ci	TP_ARGS(dev, cnt, paged),
3498c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
3508c2ecf20Sopenharmony_ci		DEV_ENTRY
3518c2ecf20Sopenharmony_ci		__field(u8, cnt)
3528c2ecf20Sopenharmony_ci		__field(bool, paged)
3538c2ecf20Sopenharmony_ci	),
3548c2ecf20Sopenharmony_ci	TP_fast_assign(
3558c2ecf20Sopenharmony_ci		DEV_ASSIGN;
3568c2ecf20Sopenharmony_ci		__entry->cnt = cnt;
3578c2ecf20Sopenharmony_ci		__entry->paged = paged;
3588c2ecf20Sopenharmony_ci	),
3598c2ecf20Sopenharmony_ci	TP_printk(DEV_PR_FMT "cnt:%d paged:%d",
3608c2ecf20Sopenharmony_ci		  DEV_PR_ARG, __entry->cnt, __entry->paged)
3618c2ecf20Sopenharmony_ci);
3628c2ecf20Sopenharmony_ci
3638c2ecf20Sopenharmony_ciDEFINE_EVENT(dev_simple_evt, set_key,
3648c2ecf20Sopenharmony_ci	TP_PROTO(struct mt7601u_dev *dev, u8 val),
3658c2ecf20Sopenharmony_ci	TP_ARGS(dev, val)
3668c2ecf20Sopenharmony_ci);
3678c2ecf20Sopenharmony_ci
3688c2ecf20Sopenharmony_ciTRACE_EVENT(set_shared_key,
3698c2ecf20Sopenharmony_ci	TP_PROTO(struct mt7601u_dev *dev, u8 vid, u8 key),
3708c2ecf20Sopenharmony_ci	TP_ARGS(dev, vid, key),
3718c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
3728c2ecf20Sopenharmony_ci		DEV_ENTRY
3738c2ecf20Sopenharmony_ci		__field(u8, vid)
3748c2ecf20Sopenharmony_ci		__field(u8, key)
3758c2ecf20Sopenharmony_ci	),
3768c2ecf20Sopenharmony_ci	TP_fast_assign(
3778c2ecf20Sopenharmony_ci		DEV_ASSIGN;
3788c2ecf20Sopenharmony_ci		__entry->vid = vid;
3798c2ecf20Sopenharmony_ci		__entry->key = key;
3808c2ecf20Sopenharmony_ci	),
3818c2ecf20Sopenharmony_ci	TP_printk(DEV_PR_FMT "phy:%02hhx off:%02hhx",
3828c2ecf20Sopenharmony_ci		  DEV_PR_ARG, __entry->vid, __entry->key)
3838c2ecf20Sopenharmony_ci);
3848c2ecf20Sopenharmony_ci
3858c2ecf20Sopenharmony_ci#endif
3868c2ecf20Sopenharmony_ci
3878c2ecf20Sopenharmony_ci#undef TRACE_INCLUDE_PATH
3888c2ecf20Sopenharmony_ci#define TRACE_INCLUDE_PATH .
3898c2ecf20Sopenharmony_ci#undef TRACE_INCLUDE_FILE
3908c2ecf20Sopenharmony_ci#define TRACE_INCLUDE_FILE trace
3918c2ecf20Sopenharmony_ci
3928c2ecf20Sopenharmony_ci#include <trace/define_trace.h>
393