xref: /openbmc/linux/include/trace/events/xdp.h (revision 5acaee0a8964c9bab7775ab8bedcd1f66a2a1011)
1a67edbf4SDaniel Borkmann #undef TRACE_SYSTEM
2a67edbf4SDaniel Borkmann #define TRACE_SYSTEM xdp
3a67edbf4SDaniel Borkmann 
4a67edbf4SDaniel Borkmann #if !defined(_TRACE_XDP_H) || defined(TRACE_HEADER_MULTI_READ)
5a67edbf4SDaniel Borkmann #define _TRACE_XDP_H
6a67edbf4SDaniel Borkmann 
7a67edbf4SDaniel Borkmann #include <linux/netdevice.h>
8a67edbf4SDaniel Borkmann #include <linux/filter.h>
9a67edbf4SDaniel Borkmann #include <linux/tracepoint.h>
10a67edbf4SDaniel Borkmann 
11a67edbf4SDaniel Borkmann #define __XDP_ACT_MAP(FN)	\
12a67edbf4SDaniel Borkmann 	FN(ABORTED)		\
13a67edbf4SDaniel Borkmann 	FN(DROP)		\
14a67edbf4SDaniel Borkmann 	FN(PASS)		\
15*5acaee0aSJohn Fastabend 	FN(TX)			\
16*5acaee0aSJohn Fastabend 	FN(REDIRECT)
17a67edbf4SDaniel Borkmann 
18a67edbf4SDaniel Borkmann #define __XDP_ACT_TP_FN(x)	\
19a67edbf4SDaniel Borkmann 	TRACE_DEFINE_ENUM(XDP_##x);
20a67edbf4SDaniel Borkmann #define __XDP_ACT_SYM_FN(x)	\
21a67edbf4SDaniel Borkmann 	{ XDP_##x, #x },
22a67edbf4SDaniel Borkmann #define __XDP_ACT_SYM_TAB	\
23a67edbf4SDaniel Borkmann 	__XDP_ACT_MAP(__XDP_ACT_SYM_FN) { -1, 0 }
24a67edbf4SDaniel Borkmann __XDP_ACT_MAP(__XDP_ACT_TP_FN)
25a67edbf4SDaniel Borkmann 
26a67edbf4SDaniel Borkmann TRACE_EVENT(xdp_exception,
27a67edbf4SDaniel Borkmann 
28a67edbf4SDaniel Borkmann 	TP_PROTO(const struct net_device *dev,
29a67edbf4SDaniel Borkmann 		 const struct bpf_prog *xdp, u32 act),
30a67edbf4SDaniel Borkmann 
31a67edbf4SDaniel Borkmann 	TP_ARGS(dev, xdp, act),
32a67edbf4SDaniel Borkmann 
33a67edbf4SDaniel Borkmann 	TP_STRUCT__entry(
34a67edbf4SDaniel Borkmann 		__string(name, dev->name)
35a67edbf4SDaniel Borkmann 		__array(u8, prog_tag, 8)
36a67edbf4SDaniel Borkmann 		__field(u32, act)
37a67edbf4SDaniel Borkmann 	),
38a67edbf4SDaniel Borkmann 
39a67edbf4SDaniel Borkmann 	TP_fast_assign(
40a67edbf4SDaniel Borkmann 		BUILD_BUG_ON(sizeof(__entry->prog_tag) != sizeof(xdp->tag));
41a67edbf4SDaniel Borkmann 		memcpy(__entry->prog_tag, xdp->tag, sizeof(xdp->tag));
42a67edbf4SDaniel Borkmann 		__assign_str(name, dev->name);
43a67edbf4SDaniel Borkmann 		__entry->act = act;
44a67edbf4SDaniel Borkmann 	),
45a67edbf4SDaniel Borkmann 
46a67edbf4SDaniel Borkmann 	TP_printk("prog=%s device=%s action=%s",
47a67edbf4SDaniel Borkmann 		  __print_hex_str(__entry->prog_tag, 8),
48a67edbf4SDaniel Borkmann 		  __get_str(name),
49a67edbf4SDaniel Borkmann 		  __print_symbolic(__entry->act, __XDP_ACT_SYM_TAB))
50a67edbf4SDaniel Borkmann );
51a67edbf4SDaniel Borkmann 
52*5acaee0aSJohn Fastabend TRACE_EVENT(xdp_redirect,
53*5acaee0aSJohn Fastabend 
54*5acaee0aSJohn Fastabend 	TP_PROTO(const struct net_device *from,
55*5acaee0aSJohn Fastabend 		 const struct net_device *to,
56*5acaee0aSJohn Fastabend 		 const struct bpf_prog *xdp, u32 act),
57*5acaee0aSJohn Fastabend 
58*5acaee0aSJohn Fastabend 	TP_ARGS(from, to, xdp, act),
59*5acaee0aSJohn Fastabend 
60*5acaee0aSJohn Fastabend 	TP_STRUCT__entry(
61*5acaee0aSJohn Fastabend 		__string(name_from, from->name)
62*5acaee0aSJohn Fastabend 		__string(name_to, to->name)
63*5acaee0aSJohn Fastabend 		__array(u8, prog_tag, 8)
64*5acaee0aSJohn Fastabend 		__field(u32, act)
65*5acaee0aSJohn Fastabend 	),
66*5acaee0aSJohn Fastabend 
67*5acaee0aSJohn Fastabend 	TP_fast_assign(
68*5acaee0aSJohn Fastabend 		BUILD_BUG_ON(sizeof(__entry->prog_tag) != sizeof(xdp->tag));
69*5acaee0aSJohn Fastabend 		memcpy(__entry->prog_tag, xdp->tag, sizeof(xdp->tag));
70*5acaee0aSJohn Fastabend 		__assign_str(name_from, from->name);
71*5acaee0aSJohn Fastabend 		__assign_str(name_to, to->name);
72*5acaee0aSJohn Fastabend 		__entry->act = act;
73*5acaee0aSJohn Fastabend 	),
74*5acaee0aSJohn Fastabend 
75*5acaee0aSJohn Fastabend 	TP_printk("prog=%s from=%s to=%s action=%s",
76*5acaee0aSJohn Fastabend 		  __print_hex_str(__entry->prog_tag, 8),
77*5acaee0aSJohn Fastabend 		  __get_str(name_from), __get_str(name_to),
78*5acaee0aSJohn Fastabend 		  __print_symbolic(__entry->act, __XDP_ACT_SYM_TAB))
79*5acaee0aSJohn Fastabend );
80a67edbf4SDaniel Borkmann #endif /* _TRACE_XDP_H */
81a67edbf4SDaniel Borkmann 
82a67edbf4SDaniel Borkmann #include <trace/define_trace.h>
83