1 /* SPDX-License-Identifier: GPL-2.0 */
3 #define TRACE_SYSTEM napi
5 #if !defined(_TRACE_NAPI_H) || defined(TRACE_HEADER_MULTI_READ)
8 #include <linux/netdevice.h>
9 #include <linux/tracepoint.h>
10 #include <linux/ftrace.h>
12 #define NO_DEV "(no_device)"
14 TRACE_EVENT(napi_poll
,
16 TP_PROTO(struct napi_struct
*napi
, int work
, int budget
),
18 TP_ARGS(napi
, work
, budget
),
21 __field( struct napi_struct
*, napi
)
22 __string( dev_name
, napi
->dev
? napi
->dev
->name
: NO_DEV
)
29 __assign_str(dev_name
);
31 __entry
->budget
= budget
;
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
)
39 TRACE_EVENT(dql_stall_detected
,
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
),
45 TP_ARGS(thrs
, len
, last_reap
, hist_head
, now
, hist
),
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)
59 __entry
->last_reap
= last_reap
;
60 __entry
->hist_head
= hist_head
* BITS_PER_LONG
;
62 memcpy(__entry
->hist
, hist
, sizeof(entry
->hist
));
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])
74 #endif /* _TRACE_NAPI_H */
76 /* This part must be outside protection */
77 #include <trace/define_trace.h>