0001
0002
0003
0004
0005
0006
0007 #if !defined(__MT7601U_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
0008 #define __MT7601U_TRACE_H
0009
0010 #include <linux/tracepoint.h>
0011 #include "mt7601u.h"
0012 #include "mac.h"
0013
0014 #undef TRACE_SYSTEM
0015 #define TRACE_SYSTEM mt7601u
0016
0017 #define MAXNAME 32
0018 #define DEV_ENTRY __array(char, wiphy_name, 32)
0019 #define DEV_ASSIGN strlcpy(__entry->wiphy_name, \
0020 wiphy_name(dev->hw->wiphy), MAXNAME)
0021 #define DEV_PR_FMT "%s "
0022 #define DEV_PR_ARG __entry->wiphy_name
0023
0024 #define REG_ENTRY __field(u32, reg) __field(u32, val)
0025 #define REG_ASSIGN __entry->reg = reg; __entry->val = val
0026 #define REG_PR_FMT "%04x=%08x"
0027 #define REG_PR_ARG __entry->reg, __entry->val
0028
0029 DECLARE_EVENT_CLASS(dev_reg_evtu,
0030 TP_PROTO(struct mt7601u_dev *dev, u32 reg, u32 val),
0031 TP_ARGS(dev, reg, val),
0032 TP_STRUCT__entry(
0033 DEV_ENTRY
0034 REG_ENTRY
0035 ),
0036 TP_fast_assign(
0037 DEV_ASSIGN;
0038 REG_ASSIGN;
0039 ),
0040 TP_printk(
0041 DEV_PR_FMT REG_PR_FMT,
0042 DEV_PR_ARG, REG_PR_ARG
0043 )
0044 );
0045
0046 DEFINE_EVENT(dev_reg_evtu, reg_read,
0047 TP_PROTO(struct mt7601u_dev *dev, u32 reg, u32 val),
0048 TP_ARGS(dev, reg, val)
0049 );
0050
0051 DEFINE_EVENT(dev_reg_evtu, reg_write,
0052 TP_PROTO(struct mt7601u_dev *dev, u32 reg, u32 val),
0053 TP_ARGS(dev, reg, val)
0054 );
0055
0056 TRACE_EVENT(mt_submit_urb,
0057 TP_PROTO(struct mt7601u_dev *dev, struct urb *u),
0058 TP_ARGS(dev, u),
0059 TP_STRUCT__entry(
0060 DEV_ENTRY __field(unsigned, pipe) __field(u32, len)
0061 ),
0062 TP_fast_assign(
0063 DEV_ASSIGN;
0064 __entry->pipe = u->pipe;
0065 __entry->len = u->transfer_buffer_length;
0066 ),
0067 TP_printk(DEV_PR_FMT "p:%08x len:%u",
0068 DEV_PR_ARG, __entry->pipe, __entry->len)
0069 );
0070
0071 #define trace_mt_submit_urb_sync(__dev, __pipe, __len) ({ \
0072 struct urb u; \
0073 u.pipe = __pipe; \
0074 u.transfer_buffer_length = __len; \
0075 trace_mt_submit_urb(__dev, &u); \
0076 })
0077
0078 TRACE_EVENT(mt_mcu_msg_send,
0079 TP_PROTO(struct mt7601u_dev *dev,
0080 struct sk_buff *skb, u32 csum, bool resp),
0081 TP_ARGS(dev, skb, csum, resp),
0082 TP_STRUCT__entry(
0083 DEV_ENTRY
0084 __field(u32, info)
0085 __field(u32, csum)
0086 __field(bool, resp)
0087 ),
0088 TP_fast_assign(
0089 DEV_ASSIGN;
0090 __entry->info = *(u32 *)skb->data;
0091 __entry->csum = csum;
0092 __entry->resp = resp;
0093 ),
0094 TP_printk(DEV_PR_FMT "i:%08x c:%08x r:%d",
0095 DEV_PR_ARG, __entry->info, __entry->csum, __entry->resp)
0096 );
0097
0098 TRACE_EVENT(mt_vend_req,
0099 TP_PROTO(struct mt7601u_dev *dev, unsigned pipe, u8 req, u8 req_type,
0100 u16 val, u16 offset, void *buf, size_t buflen, int ret),
0101 TP_ARGS(dev, pipe, req, req_type, val, offset, buf, buflen, ret),
0102 TP_STRUCT__entry(
0103 DEV_ENTRY
0104 __field(unsigned, pipe) __field(u8, req) __field(u8, req_type)
0105 __field(u16, val) __field(u16, offset) __field(void*, buf)
0106 __field(int, buflen) __field(int, ret)
0107 ),
0108 TP_fast_assign(
0109 DEV_ASSIGN;
0110 __entry->pipe = pipe;
0111 __entry->req = req;
0112 __entry->req_type = req_type;
0113 __entry->val = val;
0114 __entry->offset = offset;
0115 __entry->buf = buf;
0116 __entry->buflen = buflen;
0117 __entry->ret = ret;
0118 ),
0119 TP_printk(DEV_PR_FMT
0120 "%d p:%08x req:%02hhx %02hhx val:%04hx %04hx buf:%d %d",
0121 DEV_PR_ARG, __entry->ret, __entry->pipe, __entry->req,
0122 __entry->req_type, __entry->val, __entry->offset,
0123 !!__entry->buf, __entry->buflen)
0124 );
0125
0126 TRACE_EVENT(ee_read,
0127 TP_PROTO(struct mt7601u_dev *dev, int offset, u16 val),
0128 TP_ARGS(dev, offset, val),
0129 TP_STRUCT__entry(
0130 DEV_ENTRY
0131 __field(int, o) __field(u16, v)
0132 ),
0133 TP_fast_assign(
0134 DEV_ASSIGN;
0135 __entry->o = offset;
0136 __entry->v = val;
0137 ),
0138 TP_printk(DEV_PR_FMT "%04x=%04x", DEV_PR_ARG, __entry->o, __entry->v)
0139 );
0140
0141 DECLARE_EVENT_CLASS(dev_rf_reg_evt,
0142 TP_PROTO(struct mt7601u_dev *dev, u8 bank, u8 reg, u8 val),
0143 TP_ARGS(dev, bank, reg, val),
0144 TP_STRUCT__entry(
0145 DEV_ENTRY
0146 __field(u8, bank)
0147 __field(u8, reg)
0148 __field(u8, val)
0149 ),
0150 TP_fast_assign(
0151 DEV_ASSIGN;
0152 REG_ASSIGN;
0153 __entry->bank = bank;
0154 ),
0155 TP_printk(
0156 DEV_PR_FMT "%02hhx:%02hhx=%02hhx",
0157 DEV_PR_ARG, __entry->bank, __entry->reg, __entry->val
0158 )
0159 );
0160
0161 DEFINE_EVENT(dev_rf_reg_evt, rf_read,
0162 TP_PROTO(struct mt7601u_dev *dev, u8 bank, u8 reg, u8 val),
0163 TP_ARGS(dev, bank, reg, val)
0164 );
0165
0166 DEFINE_EVENT(dev_rf_reg_evt, rf_write,
0167 TP_PROTO(struct mt7601u_dev *dev, u8 bank, u8 reg, u8 val),
0168 TP_ARGS(dev, bank, reg, val)
0169 );
0170
0171 DECLARE_EVENT_CLASS(dev_bbp_reg_evt,
0172 TP_PROTO(struct mt7601u_dev *dev, u8 reg, u8 val),
0173 TP_ARGS(dev, reg, val),
0174 TP_STRUCT__entry(
0175 DEV_ENTRY
0176 __field(u8, reg)
0177 __field(u8, val)
0178 ),
0179 TP_fast_assign(
0180 DEV_ASSIGN;
0181 REG_ASSIGN;
0182 ),
0183 TP_printk(
0184 DEV_PR_FMT "%02hhx=%02hhx",
0185 DEV_PR_ARG, __entry->reg, __entry->val
0186 )
0187 );
0188
0189 DEFINE_EVENT(dev_bbp_reg_evt, bbp_read,
0190 TP_PROTO(struct mt7601u_dev *dev, u8 reg, u8 val),
0191 TP_ARGS(dev, reg, val)
0192 );
0193
0194 DEFINE_EVENT(dev_bbp_reg_evt, bbp_write,
0195 TP_PROTO(struct mt7601u_dev *dev, u8 reg, u8 val),
0196 TP_ARGS(dev, reg, val)
0197 );
0198
0199 DECLARE_EVENT_CLASS(dev_simple_evt,
0200 TP_PROTO(struct mt7601u_dev *dev, u8 val),
0201 TP_ARGS(dev, val),
0202 TP_STRUCT__entry(
0203 DEV_ENTRY
0204 __field(u8, val)
0205 ),
0206 TP_fast_assign(
0207 DEV_ASSIGN;
0208 __entry->val = val;
0209 ),
0210 TP_printk(
0211 DEV_PR_FMT "%02hhx", DEV_PR_ARG, __entry->val
0212 )
0213 );
0214
0215 DEFINE_EVENT(dev_simple_evt, temp_mode,
0216 TP_PROTO(struct mt7601u_dev *dev, u8 val),
0217 TP_ARGS(dev, val)
0218 );
0219
0220 DEFINE_EVENT(dev_simple_evt, read_temp,
0221 TP_PROTO(struct mt7601u_dev *dev, u8 val),
0222 TP_ARGS(dev, val)
0223 );
0224
0225 DEFINE_EVENT(dev_simple_evt, freq_cal_adjust,
0226 TP_PROTO(struct mt7601u_dev *dev, u8 val),
0227 TP_ARGS(dev, val)
0228 );
0229
0230 TRACE_EVENT(freq_cal_offset,
0231 TP_PROTO(struct mt7601u_dev *dev, u8 phy_mode, s8 freq_off),
0232 TP_ARGS(dev, phy_mode, freq_off),
0233 TP_STRUCT__entry(
0234 DEV_ENTRY
0235 __field(u8, phy_mode)
0236 __field(s8, freq_off)
0237 ),
0238 TP_fast_assign(
0239 DEV_ASSIGN;
0240 __entry->phy_mode = phy_mode;
0241 __entry->freq_off = freq_off;
0242 ),
0243 TP_printk(DEV_PR_FMT "phy:%02hhx off:%02hhx",
0244 DEV_PR_ARG, __entry->phy_mode, __entry->freq_off)
0245 );
0246
0247 TRACE_EVENT(mt_rx,
0248 TP_PROTO(struct mt7601u_dev *dev, struct mt7601u_rxwi *rxwi, u32 f),
0249 TP_ARGS(dev, rxwi, f),
0250 TP_STRUCT__entry(
0251 DEV_ENTRY
0252 __field_struct(struct mt7601u_rxwi, rxwi)
0253 __field(u32, fce_info)
0254 ),
0255 TP_fast_assign(
0256 DEV_ASSIGN;
0257 __entry->rxwi = *rxwi;
0258 __entry->fce_info = f;
0259 ),
0260 TP_printk(DEV_PR_FMT "rxi:%08x ctl:%08x frag_sn:%04hx rate:%04hx "
0261 "uknw:%02hhx z:%02hhx%02hhx%02hhx snr:%02hhx "
0262 "ant:%02hhx gain:%02hhx freq_o:%02hhx "
0263 "r:%08x ea:%08x fce:%08x", DEV_PR_ARG,
0264 le32_to_cpu(__entry->rxwi.rxinfo),
0265 le32_to_cpu(__entry->rxwi.ctl),
0266 le16_to_cpu(__entry->rxwi.frag_sn),
0267 le16_to_cpu(__entry->rxwi.rate),
0268 __entry->rxwi.unknown,
0269 __entry->rxwi.zero[0], __entry->rxwi.zero[1],
0270 __entry->rxwi.zero[2],
0271 __entry->rxwi.snr, __entry->rxwi.ant,
0272 __entry->rxwi.gain, __entry->rxwi.freq_off,
0273 __entry->rxwi.resv2, __entry->rxwi.expert_ant,
0274 __entry->fce_info)
0275 );
0276
0277 TRACE_EVENT(mt_tx,
0278 TP_PROTO(struct mt7601u_dev *dev, struct sk_buff *skb,
0279 struct mt76_sta *sta, struct mt76_txwi *h),
0280 TP_ARGS(dev, skb, sta, h),
0281 TP_STRUCT__entry(
0282 DEV_ENTRY
0283 __field_struct(struct mt76_txwi, h)
0284 __field(struct sk_buff *, skb)
0285 __field(struct mt76_sta *, sta)
0286 ),
0287 TP_fast_assign(
0288 DEV_ASSIGN;
0289 __entry->h = *h;
0290 __entry->skb = skb;
0291 __entry->sta = sta;
0292 ),
0293 TP_printk(DEV_PR_FMT "skb:%p sta:%p flg:%04hx rate_ctl:%04hx "
0294 "ack:%02hhx wcid:%02hhx len_ctl:%05hx", DEV_PR_ARG,
0295 __entry->skb, __entry->sta,
0296 le16_to_cpu(__entry->h.flags),
0297 le16_to_cpu(__entry->h.rate_ctl),
0298 __entry->h.ack_ctl, __entry->h.wcid,
0299 le16_to_cpu(__entry->h.len_ctl))
0300 );
0301
0302 TRACE_EVENT(mt_tx_dma_done,
0303 TP_PROTO(struct mt7601u_dev *dev, struct sk_buff *skb),
0304 TP_ARGS(dev, skb),
0305 TP_STRUCT__entry(
0306 DEV_ENTRY
0307 __field(struct sk_buff *, skb)
0308 ),
0309 TP_fast_assign(
0310 DEV_ASSIGN;
0311 __entry->skb = skb;
0312 ),
0313 TP_printk(DEV_PR_FMT "%p", DEV_PR_ARG, __entry->skb)
0314 );
0315
0316 TRACE_EVENT(mt_tx_status_cleaned,
0317 TP_PROTO(struct mt7601u_dev *dev, int cleaned),
0318 TP_ARGS(dev, cleaned),
0319 TP_STRUCT__entry(
0320 DEV_ENTRY
0321 __field(int, cleaned)
0322 ),
0323 TP_fast_assign(
0324 DEV_ASSIGN;
0325 __entry->cleaned = cleaned;
0326 ),
0327 TP_printk(DEV_PR_FMT "%d", DEV_PR_ARG, __entry->cleaned)
0328 );
0329
0330 TRACE_EVENT(mt_tx_status,
0331 TP_PROTO(struct mt7601u_dev *dev, u32 stat1, u32 stat2),
0332 TP_ARGS(dev, stat1, stat2),
0333 TP_STRUCT__entry(
0334 DEV_ENTRY
0335 __field(u32, stat1) __field(u32, stat2)
0336 ),
0337 TP_fast_assign(
0338 DEV_ASSIGN;
0339 __entry->stat1 = stat1;
0340 __entry->stat2 = stat2;
0341 ),
0342 TP_printk(DEV_PR_FMT "%08x %08x",
0343 DEV_PR_ARG, __entry->stat1, __entry->stat2)
0344 );
0345
0346 TRACE_EVENT(mt_rx_dma_aggr,
0347 TP_PROTO(struct mt7601u_dev *dev, int cnt, bool paged),
0348 TP_ARGS(dev, cnt, paged),
0349 TP_STRUCT__entry(
0350 DEV_ENTRY
0351 __field(u8, cnt)
0352 __field(bool, paged)
0353 ),
0354 TP_fast_assign(
0355 DEV_ASSIGN;
0356 __entry->cnt = cnt;
0357 __entry->paged = paged;
0358 ),
0359 TP_printk(DEV_PR_FMT "cnt:%d paged:%d",
0360 DEV_PR_ARG, __entry->cnt, __entry->paged)
0361 );
0362
0363 DEFINE_EVENT(dev_simple_evt, set_key,
0364 TP_PROTO(struct mt7601u_dev *dev, u8 val),
0365 TP_ARGS(dev, val)
0366 );
0367
0368 TRACE_EVENT(set_shared_key,
0369 TP_PROTO(struct mt7601u_dev *dev, u8 vid, u8 key),
0370 TP_ARGS(dev, vid, key),
0371 TP_STRUCT__entry(
0372 DEV_ENTRY
0373 __field(u8, vid)
0374 __field(u8, key)
0375 ),
0376 TP_fast_assign(
0377 DEV_ASSIGN;
0378 __entry->vid = vid;
0379 __entry->key = key;
0380 ),
0381 TP_printk(DEV_PR_FMT "phy:%02hhx off:%02hhx",
0382 DEV_PR_ARG, __entry->vid, __entry->key)
0383 );
0384
0385 #endif
0386
0387 #undef TRACE_INCLUDE_PATH
0388 #define TRACE_INCLUDE_PATH .
0389 #undef TRACE_INCLUDE_FILE
0390 #define TRACE_INCLUDE_FILE trace
0391
0392 #include <trace/define_trace.h>