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