xref: /wlan-driver/qca-wifi-host-cmn/qdf/linux/src/qdf_tracepoint_defs.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1*5113495bSYour Name /*
2*5113495bSYour Name  * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
3*5113495bSYour Name  *
4*5113495bSYour Name  * Permission to use, copy, modify, and/or distribute this software for
5*5113495bSYour Name  * any purpose with or without fee is hereby granted, provided that the
6*5113495bSYour Name  * above copyright notice and this permission notice appear in all
7*5113495bSYour Name  * copies.
8*5113495bSYour Name  *
9*5113495bSYour Name  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
10*5113495bSYour Name  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
11*5113495bSYour Name  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
12*5113495bSYour Name  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
13*5113495bSYour Name  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
14*5113495bSYour Name  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
15*5113495bSYour Name  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
16*5113495bSYour Name  * PERFORMANCE OF THIS SOFTWARE.
17*5113495bSYour Name  */
18*5113495bSYour Name 
19*5113495bSYour Name /**
20*5113495bSYour Name  * DOC: qdf_tracepoint_defs.h
21*5113495bSYour Name  * This file provides OS abstraction for function tracing.
22*5113495bSYour Name  */
23*5113495bSYour Name 
24*5113495bSYour Name #if  !defined(_QDF_TRACEPOINT_DEFS_H) || defined(TRACE_HEADER_MULTI_READ)
25*5113495bSYour Name #define _QDF_TRACEPOINT_DEFS_H
26*5113495bSYour Name 
27*5113495bSYour Name #include <linux/tracepoint.h>
28*5113495bSYour Name #include <linux/skbuff.h>
29*5113495bSYour Name 
30*5113495bSYour Name #undef TRACE_SYSTEM
31*5113495bSYour Name #define TRACE_SYSTEM wlan
32*5113495bSYour Name 
33*5113495bSYour Name #ifndef WLAN_TRACEPOINTS
34*5113495bSYour Name #undef TRACE_EVENT
35*5113495bSYour Name #define TRACE_EVENT(name, proto, args, tstruct, assign, print) \
36*5113495bSYour Name 	static inline void trace_##name(proto) {}              \
37*5113495bSYour Name 	static inline bool trace_##name##_enabled(void)        \
38*5113495bSYour Name 	{                                                      \
39*5113495bSYour Name 		return false;                                  \
40*5113495bSYour Name 	}
41*5113495bSYour Name 
42*5113495bSYour Name #undef DECLARE_EVENT_CLASS
43*5113495bSYour Name #define DECLARE_EVENT_CLASS(name, proto, args, tstruct, assign, print)
44*5113495bSYour Name 
45*5113495bSYour Name #undef DEFINE_EVENT
46*5113495bSYour Name #define DEFINE_EVENT(evt_class, name, proto, args)      \
47*5113495bSYour Name 	static inline void trace_##name(proto) {}       \
48*5113495bSYour Name 	static inline bool trace_##name##_enabled(void) \
49*5113495bSYour Name 	{                                               \
50*5113495bSYour Name 		return false;                           \
51*5113495bSYour Name 	}
52*5113495bSYour Name #endif /* WLAN_TRACEPOINTS */
53*5113495bSYour Name 
54*5113495bSYour Name DECLARE_EVENT_CLASS(dp_trace_tcp_pkt_class,
55*5113495bSYour Name 		    TP_PROTO(struct sk_buff *skb, uint32_t tcp_seq_num,
56*5113495bSYour Name 			     uint32_t tcp_ack_num, uint16_t srcport,
57*5113495bSYour Name 			     uint16_t dstport, uint64_t tdelta),
58*5113495bSYour Name 		    TP_ARGS(skb, tcp_seq_num, tcp_ack_num, srcport,
59*5113495bSYour Name 			    dstport, tdelta),
60*5113495bSYour Name 		    TP_STRUCT__entry(
61*5113495bSYour Name 			__field(void *, skb)
62*5113495bSYour Name 			__field(uint32_t, tcp_seq_num)
63*5113495bSYour Name 			__field(uint32_t, tcp_ack_num)
64*5113495bSYour Name 			__field(uint16_t, srcport)
65*5113495bSYour Name 			__field(uint16_t, dstport)
66*5113495bSYour Name 			__field(uint64_t, tdelta)
67*5113495bSYour Name 		    ),
68*5113495bSYour Name 		    TP_fast_assign(
69*5113495bSYour Name 			__entry->skb = skb;
70*5113495bSYour Name 			__entry->tcp_seq_num = tcp_seq_num;
71*5113495bSYour Name 			__entry->tcp_ack_num = tcp_ack_num;
72*5113495bSYour Name 			__entry->srcport = srcport;
73*5113495bSYour Name 			__entry->dstport = dstport;
74*5113495bSYour Name 			__entry->tdelta = tdelta;
75*5113495bSYour Name 		    ),
76*5113495bSYour Name 		    TP_printk("skb=%pK seqnum=%u acknum=%u srcport=%u dstport=%u latency(us)=%llu",
77*5113495bSYour Name 			      __entry->skb, __entry->tcp_seq_num,
78*5113495bSYour Name 			      __entry->tcp_ack_num, __entry->srcport,
79*5113495bSYour Name 			      __entry->dstport, __entry->tdelta)
80*5113495bSYour Name );
81*5113495bSYour Name 
82*5113495bSYour Name DEFINE_EVENT(dp_trace_tcp_pkt_class, dp_rx_tcp_pkt,
83*5113495bSYour Name 	     TP_PROTO(struct sk_buff *skb, uint32_t tcp_seq_num,
84*5113495bSYour Name 		      uint32_t tcp_ack_num, uint16_t srcport,
85*5113495bSYour Name 		      uint16_t dstport, uint64_t tdelta),
86*5113495bSYour Name 	     TP_ARGS(skb, tcp_seq_num, tcp_ack_num, srcport, dstport, tdelta)
87*5113495bSYour Name );
88*5113495bSYour Name 
89*5113495bSYour Name DEFINE_EVENT(dp_trace_tcp_pkt_class, dp_tx_comp_tcp_pkt,
90*5113495bSYour Name 	     TP_PROTO(struct sk_buff *skb, uint32_t tcp_seq_num,
91*5113495bSYour Name 		      uint32_t tcp_ack_num, uint16_t srcport,
92*5113495bSYour Name 		      uint16_t dstport, uint64_t tdelta),
93*5113495bSYour Name 	     TP_ARGS(skb, tcp_seq_num, tcp_ack_num, srcport, dstport, tdelta)
94*5113495bSYour Name );
95*5113495bSYour Name 
96*5113495bSYour Name DECLARE_EVENT_CLASS(dp_trace_udp_pkt_class,
97*5113495bSYour Name 		    TP_PROTO(struct sk_buff *skb, uint16_t ip_id,
98*5113495bSYour Name 			     uint16_t srcport, uint16_t dstport,
99*5113495bSYour Name 			     uint64_t tdelta),
100*5113495bSYour Name 		    TP_ARGS(skb, ip_id, srcport, dstport, tdelta),
101*5113495bSYour Name 		    TP_STRUCT__entry(
102*5113495bSYour Name 			__field(void *, skb)
103*5113495bSYour Name 			__field(uint16_t, ip_id)
104*5113495bSYour Name 			__field(uint16_t, srcport)
105*5113495bSYour Name 			__field(uint16_t, dstport)
106*5113495bSYour Name 			__field(uint64_t, tdelta)
107*5113495bSYour Name 		    ),
108*5113495bSYour Name 		    TP_fast_assign(
109*5113495bSYour Name 			__entry->skb = skb;
110*5113495bSYour Name 			__entry->ip_id = ip_id;
111*5113495bSYour Name 			__entry->srcport = srcport;
112*5113495bSYour Name 			__entry->dstport = dstport;
113*5113495bSYour Name 			__entry->tdelta = tdelta;
114*5113495bSYour Name 		    ),
115*5113495bSYour Name 		    TP_printk("skb=%pK ip_id=%u srcport=%u dstport=%d latency(us)=%llu",
116*5113495bSYour Name 			      __entry->skb, __entry->ip_id,
117*5113495bSYour Name 			      __entry->srcport, __entry->dstport,
118*5113495bSYour Name 			      __entry->tdelta)
119*5113495bSYour Name );
120*5113495bSYour Name 
121*5113495bSYour Name DEFINE_EVENT(dp_trace_udp_pkt_class, dp_rx_udp_pkt,
122*5113495bSYour Name 	     TP_PROTO(struct sk_buff *skb, uint16_t ip_id, uint16_t srcport,
123*5113495bSYour Name 		      uint16_t dstport, uint64_t tdelta),
124*5113495bSYour Name 	     TP_ARGS(skb, ip_id, srcport, dstport, tdelta)
125*5113495bSYour Name );
126*5113495bSYour Name 
127*5113495bSYour Name DEFINE_EVENT(dp_trace_udp_pkt_class, dp_tx_comp_udp_pkt,
128*5113495bSYour Name 	     TP_PROTO(struct sk_buff *skb, uint16_t ip_id, uint16_t srcport,
129*5113495bSYour Name 		      uint16_t dstport, uint64_t tdelta),
130*5113495bSYour Name 	     TP_ARGS(skb, ip_id, srcport, dstport, tdelta)
131*5113495bSYour Name );
132*5113495bSYour Name 
133*5113495bSYour Name DECLARE_EVENT_CLASS(dp_trace_generic_ip_pkt_class,
134*5113495bSYour Name 		    TP_PROTO(struct sk_buff *skb, uint8_t ip_proto,
135*5113495bSYour Name 			     uint16_t ip_id, uint32_t trans_hdr_4_bytes,
136*5113495bSYour Name 			     uint64_t tdelta),
137*5113495bSYour Name 		    TP_ARGS(skb, ip_proto, ip_id,
138*5113495bSYour Name 			    trans_hdr_4_bytes, tdelta),
139*5113495bSYour Name 		    TP_STRUCT__entry(
140*5113495bSYour Name 			__field(void *, skb)
141*5113495bSYour Name 			__field(uint8_t, ip_proto)
142*5113495bSYour Name 			__field(uint16_t, ip_id)
143*5113495bSYour Name 			__field(uint32_t, trans_hdr_4_bytes)
144*5113495bSYour Name 			__field(uint64_t, tdelta)
145*5113495bSYour Name 		    ),
146*5113495bSYour Name 		    TP_fast_assign(
147*5113495bSYour Name 			__entry->skb = skb;
148*5113495bSYour Name 			__entry->ip_proto = ip_proto;
149*5113495bSYour Name 			__entry->ip_id = ip_id;
150*5113495bSYour Name 			__entry->trans_hdr_4_bytes = trans_hdr_4_bytes;
151*5113495bSYour Name 			__entry->tdelta = tdelta;
152*5113495bSYour Name 		    ),
153*5113495bSYour Name 		    TP_printk("skb=%pK ip_proto=0x%x ip_id=0x%x, transport_hdr[4]:0x%08x, latency(us)=%llu",
154*5113495bSYour Name 			      __entry->skb, __entry->ip_proto,
155*5113495bSYour Name 			      __entry->ip_id,  __entry->trans_hdr_4_bytes,
156*5113495bSYour Name 			      __entry->tdelta)
157*5113495bSYour Name );
158*5113495bSYour Name 
159*5113495bSYour Name DEFINE_EVENT(dp_trace_generic_ip_pkt_class, dp_rx_generic_ip_pkt,
160*5113495bSYour Name 	     TP_PROTO(struct sk_buff *skb, uint8_t ip_proto,
161*5113495bSYour Name 		      uint16_t ip_id, uint32_t trans_hdr_4_bytes,
162*5113495bSYour Name 		      uint64_t tdelta),
163*5113495bSYour Name 	     TP_ARGS(skb, ip_proto, ip_id,
164*5113495bSYour Name 		     trans_hdr_4_bytes,
165*5113495bSYour Name 		     tdelta)
166*5113495bSYour Name );
167*5113495bSYour Name 
168*5113495bSYour Name DEFINE_EVENT(dp_trace_generic_ip_pkt_class, dp_tx_comp_generic_ip_pkt,
169*5113495bSYour Name 	     TP_PROTO(struct sk_buff *skb, uint8_t ip_proto,
170*5113495bSYour Name 		      uint16_t ip_id, uint32_t trans_hdr_4_bytes,
171*5113495bSYour Name 		      uint64_t tdelta),
172*5113495bSYour Name 	     TP_ARGS(skb, ip_proto, ip_id,
173*5113495bSYour Name 		     trans_hdr_4_bytes,
174*5113495bSYour Name 		     tdelta)
175*5113495bSYour Name );
176*5113495bSYour Name 
177*5113495bSYour Name DECLARE_EVENT_CLASS(dp_trace_pkt_class,
178*5113495bSYour Name 		    TP_PROTO(struct sk_buff *skb, uint16_t ether_type,
179*5113495bSYour Name 			     uint64_t tdelta),
180*5113495bSYour Name 		    TP_ARGS(skb, ether_type, tdelta),
181*5113495bSYour Name 		    TP_STRUCT__entry(
182*5113495bSYour Name 			__field(void *, skb)
183*5113495bSYour Name 			__field(uint16_t, ether_type)
184*5113495bSYour Name 			__field(uint64_t, tdelta)
185*5113495bSYour Name 		    ),
186*5113495bSYour Name 		    TP_fast_assign(
187*5113495bSYour Name 			__entry->skb = skb;
188*5113495bSYour Name 			__entry->ether_type = ether_type;
189*5113495bSYour Name 			__entry->tdelta = tdelta;
190*5113495bSYour Name 		    ),
191*5113495bSYour Name 		    TP_printk("skb=%pK ether_type=0x%x latency(us)=%llu",
192*5113495bSYour Name 			      __entry->skb, __entry->ether_type,
193*5113495bSYour Name 			      __entry->tdelta)
194*5113495bSYour Name );
195*5113495bSYour Name 
196*5113495bSYour Name DEFINE_EVENT(dp_trace_pkt_class, dp_rx_pkt,
197*5113495bSYour Name 	     TP_PROTO(struct sk_buff *skb, uint16_t ether_type,
198*5113495bSYour Name 		      uint64_t tdelta),
199*5113495bSYour Name 	     TP_ARGS(skb, ether_type, tdelta)
200*5113495bSYour Name );
201*5113495bSYour Name 
202*5113495bSYour Name DEFINE_EVENT(dp_trace_pkt_class, dp_tx_comp_pkt,
203*5113495bSYour Name 	     TP_PROTO(struct sk_buff *skb, uint16_t ether_type,
204*5113495bSYour Name 		      uint64_t tdelta),
205*5113495bSYour Name 	     TP_ARGS(skb, ether_type, tdelta)
206*5113495bSYour Name );
207*5113495bSYour Name 
208*5113495bSYour Name TRACE_EVENT(dp_del_reg_write,
209*5113495bSYour Name 	    TP_PROTO(uint8_t srng_id, uint32_t enq_val, uint32_t deq_val,
210*5113495bSYour Name 		     uint64_t enq_time, uint64_t deq_time),
211*5113495bSYour Name 	    TP_ARGS(srng_id, enq_val, deq_val, enq_time, deq_time),
212*5113495bSYour Name 	    TP_STRUCT__entry(
213*5113495bSYour Name 		__field(uint8_t, srng_id)
214*5113495bSYour Name 		__field(uint32_t, enq_val)
215*5113495bSYour Name 		__field(uint32_t, deq_val)
216*5113495bSYour Name 		__field(uint64_t, enq_time)
217*5113495bSYour Name 		__field(uint64_t, deq_time)
218*5113495bSYour Name 	    ),
219*5113495bSYour Name 	    TP_fast_assign(
220*5113495bSYour Name 		__entry->srng_id = srng_id;
221*5113495bSYour Name 		__entry->enq_val = enq_val;
222*5113495bSYour Name 		__entry->deq_val = deq_val;
223*5113495bSYour Name 		__entry->enq_time = enq_time;
224*5113495bSYour Name 		__entry->deq_time = deq_time;
225*5113495bSYour Name 	    ),
226*5113495bSYour Name 	    TP_printk("srng_id=%u enq_val=%u deq_val=%u enq_time=0x%llx deq_time=0x%llx",
227*5113495bSYour Name 		      __entry->srng_id, __entry->enq_val, __entry->deq_val,
228*5113495bSYour Name 		      __entry->enq_time, __entry->deq_time)
229*5113495bSYour Name );
230*5113495bSYour Name 
231*5113495bSYour Name TRACE_EVENT(dp_ce_tasklet_sched_latency,
232*5113495bSYour Name 	    TP_PROTO(uint8_t ce_id, uint64_t sched_latency),
233*5113495bSYour Name 	    TP_ARGS(ce_id, sched_latency),
234*5113495bSYour Name 	    TP_STRUCT__entry(
235*5113495bSYour Name 		__field(uint8_t, ce_id)
236*5113495bSYour Name 		__field(uint64_t, sched_latency)
237*5113495bSYour Name 	    ),
238*5113495bSYour Name 	    TP_fast_assign(
239*5113495bSYour Name 		__entry->ce_id = ce_id;
240*5113495bSYour Name 		__entry->sched_latency = sched_latency;
241*5113495bSYour Name 	    ),
242*5113495bSYour Name 	    TP_printk("ce_id=%u latency(ns)=%llu", __entry->ce_id,
243*5113495bSYour Name 		      __entry->sched_latency)
244*5113495bSYour Name );
245*5113495bSYour Name #endif /* _QDF_TRACEPOINT_DEFS_H */
246*5113495bSYour Name 
247*5113495bSYour Name /* Below should be outside the protection */
248*5113495bSYour Name #undef TRACE_INCLUDE_PATH
249*5113495bSYour Name #define TRACE_INCLUDE_PATH .
250*5113495bSYour Name #undef TRACE_INCLUDE_FILE
251*5113495bSYour Name #define TRACE_INCLUDE_FILE qdf_tracepoint_defs
252*5113495bSYour Name #include <trace/define_trace.h>
253