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