brintos

brintos / linux-shallow public Read only

0
0
Text · 9.1 KiB · 07696b6 Raw
393 lines · c
1/* SPDX-License-Identifier: GPL-2.0-only */2/*3 * Copyright (C) 2014 Felix Fietkau <nbd@openwrt.org>4 * Copyright (C) 2015 Jakub Kicinski <kubakici@wp.pl>5 */6 7#if !defined(__MT7601U_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)8#define __MT7601U_TRACE_H9 10#include <linux/tracepoint.h>11#include "mt7601u.h"12#include "mac.h"13 14#undef TRACE_SYSTEM15#define TRACE_SYSTEM mt7601u16 17#define MAXNAME		3218#define DEV_ENTRY	__array(char, wiphy_name, 32)19#define DEV_ASSIGN	strscpy(__entry->wiphy_name,			\20				wiphy_name(dev->hw->wiphy), MAXNAME)21#define DEV_PR_FMT	"%s "22#define DEV_PR_ARG	__entry->wiphy_name23 24#define REG_ENTRY	__field(u32, reg) __field(u32, val)25#define REG_ASSIGN	__entry->reg = reg; __entry->val = val26#define REG_PR_FMT	"%04x=%08x"27#define REG_PR_ARG	__entry->reg, __entry->val28 29DECLARE_EVENT_CLASS(dev_reg_evtu,30	TP_PROTO(struct mt7601u_dev *dev, u32 reg, u32 val),31	TP_ARGS(dev, reg, val),32	TP_STRUCT__entry(33		DEV_ENTRY34		REG_ENTRY35	),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_ARG43	)44);45 46DEFINE_EVENT(dev_reg_evtu, reg_read,47	TP_PROTO(struct mt7601u_dev *dev, u32 reg, u32 val),48	TP_ARGS(dev, reg, val)49);50 51DEFINE_EVENT(dev_reg_evtu, reg_write,52	TP_PROTO(struct mt7601u_dev *dev, u32 reg, u32 val),53	TP_ARGS(dev, reg, val)54);55 56TRACE_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 78TRACE_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_ENTRY84		__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 98TRACE_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_ENTRY104		__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_FMT120		  "%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 126TRACE_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_ENTRY131		__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 141DECLARE_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_ENTRY146		__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->val158	)159);160 161DEFINE_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 166DEFINE_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 171DECLARE_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_ENTRY176		__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->val186	)187);188 189DEFINE_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 194DEFINE_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 199DECLARE_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_ENTRY204		__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->val212	)213);214 215DEFINE_EVENT(dev_simple_evt, temp_mode,216	TP_PROTO(struct mt7601u_dev *dev, u8 val),217	TP_ARGS(dev, val)218);219 220DEFINE_EVENT(dev_simple_evt, read_temp,221	TP_PROTO(struct mt7601u_dev *dev, u8 val),222	TP_ARGS(dev, val)223);224 225DEFINE_EVENT(dev_simple_evt, freq_cal_adjust,226	TP_PROTO(struct mt7601u_dev *dev, u8 val),227	TP_ARGS(dev, val)228);229 230TRACE_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_ENTRY235		__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 247TRACE_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_ENTRY252		__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 277TRACE_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_ENTRY283		__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 302TRACE_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_ENTRY307		__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 316TRACE_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_ENTRY321		__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 330TRACE_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_ENTRY335		__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 346TRACE_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_ENTRY351		__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 363DEFINE_EVENT(dev_simple_evt, set_key,364	TP_PROTO(struct mt7601u_dev *dev, u8 val),365	TP_ARGS(dev, val)366);367 368TRACE_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_ENTRY373		__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#endif386 387#undef TRACE_INCLUDE_PATH388#define TRACE_INCLUDE_PATH .389#undef TRACE_INCLUDE_FILE390#define TRACE_INCLUDE_FILE trace391 392#include <trace/define_trace.h>393