xref: /openbmc/linux/include/trace/events/xdp.h (revision 315ec3990efd71f87e556cf7827a1ac2d565d5e8)
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)		\
155acaee0aSJohn Fastabend 	FN(TX)			\
165acaee0aSJohn 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 		__array(u8, prog_tag, 8)
35a67edbf4SDaniel Borkmann 		__field(u32, act)
36*315ec399SJesper Dangaard Brouer 		__field(int, ifindex)
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 		__entry->act		= act;
43*315ec399SJesper Dangaard Brouer 		__entry->ifindex	= dev->ifindex;
44a67edbf4SDaniel Borkmann 	),
45a67edbf4SDaniel Borkmann 
46*315ec399SJesper Dangaard Brouer 	TP_printk("prog=%s action=%s ifindex=%d",
47a67edbf4SDaniel Borkmann 		  __print_hex_str(__entry->prog_tag, 8),
48*315ec399SJesper Dangaard Brouer 		  __print_symbolic(__entry->act, __XDP_ACT_SYM_TAB),
49*315ec399SJesper Dangaard Brouer 		  __entry->ifindex)
50a67edbf4SDaniel Borkmann );
51a67edbf4SDaniel Borkmann 
525acaee0aSJohn Fastabend TRACE_EVENT(xdp_redirect,
535acaee0aSJohn Fastabend 
54a8735855SJesper Dangaard Brouer 	TP_PROTO(const struct net_device *dev,
55a8735855SJesper Dangaard Brouer 		 const struct bpf_prog *xdp, u32 act,
56a8735855SJesper Dangaard Brouer 		 int to_index, int err),
575acaee0aSJohn Fastabend 
58a8735855SJesper Dangaard Brouer 	TP_ARGS(dev, xdp, act, to_index, err),
595acaee0aSJohn Fastabend 
605acaee0aSJohn Fastabend 	TP_STRUCT__entry(
615acaee0aSJohn Fastabend 		__array(u8, prog_tag, 8)
625acaee0aSJohn Fastabend 		__field(u32, act)
63a8735855SJesper Dangaard Brouer 		__field(int, ifindex)
64a8735855SJesper Dangaard Brouer 		__field(int, to_index)
654c03bdd7SJesper Dangaard Brouer 		__field(int, err)
665acaee0aSJohn Fastabend 	),
675acaee0aSJohn Fastabend 
685acaee0aSJohn Fastabend 	TP_fast_assign(
695acaee0aSJohn Fastabend 		BUILD_BUG_ON(sizeof(__entry->prog_tag) != sizeof(xdp->tag));
705acaee0aSJohn Fastabend 		memcpy(__entry->prog_tag, xdp->tag, sizeof(xdp->tag));
715acaee0aSJohn Fastabend 		__entry->act		= act;
72a8735855SJesper Dangaard Brouer 		__entry->ifindex	= dev->ifindex;
73a8735855SJesper Dangaard Brouer 		__entry->to_index	= to_index;
744c03bdd7SJesper Dangaard Brouer 		__entry->err		= err;
755acaee0aSJohn Fastabend 	),
765acaee0aSJohn Fastabend 
77a8735855SJesper Dangaard Brouer 	TP_printk("prog=%s action=%s ifindex=%d to_index=%d err=%d",
785acaee0aSJohn Fastabend 		  __print_hex_str(__entry->prog_tag, 8),
794c03bdd7SJesper Dangaard Brouer 		  __print_symbolic(__entry->act, __XDP_ACT_SYM_TAB),
80a8735855SJesper Dangaard Brouer 		  __entry->ifindex, __entry->to_index,
814c03bdd7SJesper Dangaard Brouer 		  __entry->err)
825acaee0aSJohn Fastabend );
83a67edbf4SDaniel Borkmann #endif /* _TRACE_XDP_H */
84a67edbf4SDaniel Borkmann 
85a67edbf4SDaniel Borkmann #include <trace/define_trace.h>
86