GNU Linux-libre 4.19.264-gnu1
[releases.git] / drivers / net / wireless / mediatek / mt76 / mt76x2_trace.h
1 /*
2  * Copyright (C) 2016 Felix Fietkau <nbd@nbd.name>
3  *
4  * Permission to use, copy, modify, and/or distribute this software for any
5  * purpose with or without fee is hereby granted, provided that the above
6  * copyright notice and this permission notice appear in all copies.
7  *
8  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15  */
16
17 #if !defined(__MT76x2_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
18 #define __MT76x2_TRACE_H
19
20 #include <linux/tracepoint.h>
21 #include "mt76x2.h"
22
23 #undef TRACE_SYSTEM
24 #define TRACE_SYSTEM mt76x2
25
26 #define MAXNAME         32
27 #define DEV_ENTRY       __array(char, wiphy_name, 32)
28 #define DEV_ASSIGN      strlcpy(__entry->wiphy_name, wiphy_name(mt76_hw(dev)->wiphy), MAXNAME)
29 #define DEV_PR_FMT      "%s"
30 #define DEV_PR_ARG      __entry->wiphy_name
31
32 #define TXID_ENTRY      __field(u8, wcid) __field(u8, pktid)
33 #define TXID_ASSIGN     __entry->wcid = wcid; __entry->pktid = pktid
34 #define TXID_PR_FMT     " [%d:%d]"
35 #define TXID_PR_ARG     __entry->wcid, __entry->pktid
36
37 DECLARE_EVENT_CLASS(dev_evt,
38         TP_PROTO(struct mt76x2_dev *dev),
39         TP_ARGS(dev),
40         TP_STRUCT__entry(
41                 DEV_ENTRY
42         ),
43         TP_fast_assign(
44                 DEV_ASSIGN;
45         ),
46         TP_printk(DEV_PR_FMT, DEV_PR_ARG)
47 );
48
49 DECLARE_EVENT_CLASS(dev_txid_evt,
50         TP_PROTO(struct mt76x2_dev *dev, u8 wcid, u8 pktid),
51         TP_ARGS(dev, wcid, pktid),
52         TP_STRUCT__entry(
53                 DEV_ENTRY
54                 TXID_ENTRY
55         ),
56         TP_fast_assign(
57                 DEV_ASSIGN;
58                 TXID_ASSIGN;
59         ),
60         TP_printk(
61                 DEV_PR_FMT TXID_PR_FMT,
62                 DEV_PR_ARG, TXID_PR_ARG
63         )
64 );
65
66 DEFINE_EVENT(dev_evt, mac_txstat_poll,
67         TP_PROTO(struct mt76x2_dev *dev),
68         TP_ARGS(dev)
69 );
70
71 DEFINE_EVENT(dev_txid_evt, mac_txdone_add,
72         TP_PROTO(struct mt76x2_dev *dev, u8 wcid, u8 pktid),
73         TP_ARGS(dev, wcid, pktid)
74 );
75
76 TRACE_EVENT(mac_txstat_fetch,
77         TP_PROTO(struct mt76x2_dev *dev,
78                  struct mt76x2_tx_status *stat),
79
80         TP_ARGS(dev, stat),
81
82         TP_STRUCT__entry(
83                 DEV_ENTRY
84                 TXID_ENTRY
85                 __field(bool, success)
86                 __field(bool, aggr)
87                 __field(bool, ack_req)
88                 __field(u16, rate)
89                 __field(u8, retry)
90         ),
91
92         TP_fast_assign(
93                 DEV_ASSIGN;
94                 __entry->success = stat->success;
95                 __entry->aggr = stat->aggr;
96                 __entry->ack_req = stat->ack_req;
97                 __entry->wcid = stat->wcid;
98                 __entry->pktid = stat->pktid;
99                 __entry->rate = stat->rate;
100                 __entry->retry = stat->retry;
101         ),
102
103         TP_printk(
104                 DEV_PR_FMT TXID_PR_FMT
105                 " success:%d aggr:%d ack_req:%d"
106                 " rate:%04x retry:%d",
107                 DEV_PR_ARG, TXID_PR_ARG,
108                 __entry->success, __entry->aggr, __entry->ack_req,
109                 __entry->rate, __entry->retry
110         )
111 );
112
113
114 TRACE_EVENT(dev_irq,
115         TP_PROTO(struct mt76x2_dev *dev, u32 val, u32 mask),
116
117         TP_ARGS(dev, val, mask),
118
119         TP_STRUCT__entry(
120                 DEV_ENTRY
121                 __field(u32, val)
122                 __field(u32, mask)
123         ),
124
125         TP_fast_assign(
126                 DEV_ASSIGN;
127                 __entry->val = val;
128                 __entry->mask = mask;
129         ),
130
131         TP_printk(
132                 DEV_PR_FMT " %08x & %08x",
133                 DEV_PR_ARG, __entry->val, __entry->mask
134         )
135 );
136
137 #endif
138
139 #undef TRACE_INCLUDE_PATH
140 #define TRACE_INCLUDE_PATH .
141 #undef TRACE_INCLUDE_FILE
142 #define TRACE_INCLUDE_FILE mt76x2_trace
143
144 #include <trace/define_trace.h>