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