xref: /openbmc/linux/include/trace/events/xdp.h (revision a67edbf4fb6deadcfe57a04a134abed4a5ba3bb5)
1*a67edbf4SDaniel Borkmann #undef TRACE_SYSTEM
2*a67edbf4SDaniel Borkmann #define TRACE_SYSTEM xdp
3*a67edbf4SDaniel Borkmann 
4*a67edbf4SDaniel Borkmann #if !defined(_TRACE_XDP_H) || defined(TRACE_HEADER_MULTI_READ)
5*a67edbf4SDaniel Borkmann #define _TRACE_XDP_H
6*a67edbf4SDaniel Borkmann 
7*a67edbf4SDaniel Borkmann #include <linux/netdevice.h>
8*a67edbf4SDaniel Borkmann #include <linux/filter.h>
9*a67edbf4SDaniel Borkmann #include <linux/tracepoint.h>
10*a67edbf4SDaniel Borkmann 
11*a67edbf4SDaniel Borkmann #define __XDP_ACT_MAP(FN)	\
12*a67edbf4SDaniel Borkmann 	FN(ABORTED)		\
13*a67edbf4SDaniel Borkmann 	FN(DROP)		\
14*a67edbf4SDaniel Borkmann 	FN(PASS)		\
15*a67edbf4SDaniel Borkmann 	FN(TX)
16*a67edbf4SDaniel Borkmann 
17*a67edbf4SDaniel Borkmann #define __XDP_ACT_TP_FN(x)	\
18*a67edbf4SDaniel Borkmann 	TRACE_DEFINE_ENUM(XDP_##x);
19*a67edbf4SDaniel Borkmann #define __XDP_ACT_SYM_FN(x)	\
20*a67edbf4SDaniel Borkmann 	{ XDP_##x, #x },
21*a67edbf4SDaniel Borkmann #define __XDP_ACT_SYM_TAB	\
22*a67edbf4SDaniel Borkmann 	__XDP_ACT_MAP(__XDP_ACT_SYM_FN) { -1, 0 }
23*a67edbf4SDaniel Borkmann __XDP_ACT_MAP(__XDP_ACT_TP_FN)
24*a67edbf4SDaniel Borkmann 
25*a67edbf4SDaniel Borkmann TRACE_EVENT(xdp_exception,
26*a67edbf4SDaniel Borkmann 
27*a67edbf4SDaniel Borkmann 	TP_PROTO(const struct net_device *dev,
28*a67edbf4SDaniel Borkmann 		 const struct bpf_prog *xdp, u32 act),
29*a67edbf4SDaniel Borkmann 
30*a67edbf4SDaniel Borkmann 	TP_ARGS(dev, xdp, act),
31*a67edbf4SDaniel Borkmann 
32*a67edbf4SDaniel Borkmann 	TP_STRUCT__entry(
33*a67edbf4SDaniel Borkmann 		__string(name, dev->name)
34*a67edbf4SDaniel Borkmann 		__array(u8, prog_tag, 8)
35*a67edbf4SDaniel Borkmann 		__field(u32, act)
36*a67edbf4SDaniel Borkmann 	),
37*a67edbf4SDaniel Borkmann 
38*a67edbf4SDaniel Borkmann 	TP_fast_assign(
39*a67edbf4SDaniel Borkmann 		BUILD_BUG_ON(sizeof(__entry->prog_tag) != sizeof(xdp->tag));
40*a67edbf4SDaniel Borkmann 		memcpy(__entry->prog_tag, xdp->tag, sizeof(xdp->tag));
41*a67edbf4SDaniel Borkmann 		__assign_str(name, dev->name);
42*a67edbf4SDaniel Borkmann 		__entry->act = act;
43*a67edbf4SDaniel Borkmann 	),
44*a67edbf4SDaniel Borkmann 
45*a67edbf4SDaniel Borkmann 	TP_printk("prog=%s device=%s action=%s",
46*a67edbf4SDaniel Borkmann 		  __print_hex_str(__entry->prog_tag, 8),
47*a67edbf4SDaniel Borkmann 		  __get_str(name),
48*a67edbf4SDaniel Borkmann 		  __print_symbolic(__entry->act, __XDP_ACT_SYM_TAB))
49*a67edbf4SDaniel Borkmann );
50*a67edbf4SDaniel Borkmann 
51*a67edbf4SDaniel Borkmann #endif /* _TRACE_XDP_H */
52*a67edbf4SDaniel Borkmann 
53*a67edbf4SDaniel Borkmann #include <trace/define_trace.h>
54