xdp: Add tracepoint for bulk XDP_TX
authorToshiaki Makita <toshiaki.makita1@gmail.com>
Thu, 13 Jun 2019 09:39:58 +0000 (18:39 +0900)
committerDaniel Borkmann <daniel@iogearbox.net>
Tue, 25 Jun 2019 12:26:50 +0000 (14:26 +0200)
This is introduced for admins to check what is happening on XDP_TX when
bulk XDP_TX is in use, which will be first introduced in veth in next
commit.

v3:
- Add act field to be in line with other XDP tracepoints.

Signed-off-by: Toshiaki Makita <toshiaki.makita1@gmail.com>
Acked-by: Jesper Dangaard Brouer <brouer@redhat.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
include/trace/events/xdp.h
kernel/bpf/core.c

index bb5e380e2ef32a634604349aa59f54f04781273b..81e708c4b5138c35cd5b35c51d2fe0ec113de998 100644 (file)
@@ -50,6 +50,35 @@ TRACE_EVENT(xdp_exception,
                  __entry->ifindex)
 );
 
+TRACE_EVENT(xdp_bulk_tx,
+
+       TP_PROTO(const struct net_device *dev,
+                int sent, int drops, int err),
+
+       TP_ARGS(dev, sent, drops, err),
+
+       TP_STRUCT__entry(
+               __field(int, ifindex)
+               __field(u32, act)
+               __field(int, drops)
+               __field(int, sent)
+               __field(int, err)
+       ),
+
+       TP_fast_assign(
+               __entry->ifindex        = dev->ifindex;
+               __entry->act            = XDP_TX;
+               __entry->drops          = drops;
+               __entry->sent           = sent;
+               __entry->err            = err;
+       ),
+
+       TP_printk("ifindex=%d action=%s sent=%d drops=%d err=%d",
+                 __entry->ifindex,
+                 __print_symbolic(__entry->act, __XDP_ACT_SYM_TAB),
+                 __entry->sent, __entry->drops, __entry->err)
+);
+
 DECLARE_EVENT_CLASS(xdp_redirect_template,
 
        TP_PROTO(const struct net_device *dev,
index ad3be85f1411be766f43c96123ec51b6053f1981..561ed07d30074bd079ad77ff34c8ff7103f9ea1a 100644 (file)
@@ -2101,3 +2101,4 @@ EXPORT_SYMBOL(bpf_stats_enabled_key);
 #include <linux/bpf_trace.h>
 
 EXPORT_TRACEPOINT_SYMBOL_GPL(xdp_exception);
+EXPORT_TRACEPOINT_SYMBOL_GPL(xdp_bulk_tx);