xref: /linux/include/trace/events/napi.h (revision c532de5a67a70f8533d495f8f2aaa9a0491c3ad0)
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #undef TRACE_SYSTEM
3 #define TRACE_SYSTEM napi
4 
5 #if !defined(_TRACE_NAPI_H) || defined(TRACE_HEADER_MULTI_READ)
6 #define _TRACE_NAPI_H
7 
8 #include <linux/netdevice.h>
9 #include <linux/tracepoint.h>
10 #include <linux/ftrace.h>
11 
12 #define NO_DEV "(no_device)"
13 
14 TRACE_EVENT(napi_poll,
15 
16 	TP_PROTO(struct napi_struct *napi, int work, int budget),
17 
18 	TP_ARGS(napi, work, budget),
19 
20 	TP_STRUCT__entry(
21 		__field(	struct napi_struct *,	napi)
22 		__string(	dev_name, napi->dev ? napi->dev->name : NO_DEV)
23 		__field(	int,			work)
24 		__field(	int,			budget)
25 	),
26 
27 	TP_fast_assign(
28 		__entry->napi = napi;
29 		__assign_str(dev_name);
30 		__entry->work = work;
31 		__entry->budget = budget;
32 	),
33 
34 	TP_printk("napi poll on napi struct %p for device %s work %d budget %d",
35 		  __entry->napi, __get_str(dev_name),
36 		  __entry->work, __entry->budget)
37 );
38 
39 TRACE_EVENT(dql_stall_detected,
40 
41 	TP_PROTO(unsigned short thrs, unsigned int len,
42 		 unsigned long last_reap, unsigned long hist_head,
43 		 unsigned long now, unsigned long *hist),
44 
45 	TP_ARGS(thrs, len, last_reap, hist_head, now, hist),
46 
47 	TP_STRUCT__entry(
48 		__field(	unsigned short,		thrs)
49 		__field(	unsigned int,		len)
50 		__field(	unsigned long,		last_reap)
51 		__field(	unsigned long,		hist_head)
52 		__field(	unsigned long,		now)
53 		__array(	unsigned long,		hist, 4)
54 	),
55 
56 	TP_fast_assign(
57 		__entry->thrs = thrs;
58 		__entry->len = len;
59 		__entry->last_reap = last_reap;
60 		__entry->hist_head = hist_head * BITS_PER_LONG;
61 		__entry->now = now;
62 		memcpy(__entry->hist, hist, sizeof(entry->hist));
63 	),
64 
65 	TP_printk("thrs %u  len %u  last_reap %lu  hist_head %lu  now %lu  hist %016lx %016lx %016lx %016lx",
66 		  __entry->thrs, __entry->len,
67 		  __entry->last_reap, __entry->hist_head, __entry->now,
68 		  __entry->hist[0], __entry->hist[1],
69 		  __entry->hist[2], __entry->hist[3])
70 );
71 
72 #undef NO_DEV
73 
74 #endif /* _TRACE_NAPI_H */
75 
76 /* This part must be outside protection */
77 #include <trace/define_trace.h>
78