On Wed, 24 Jun 2020 17:33:55 +0200 Lorenzo Bianconi <lorenzo@xxxxxxxxxx> wrote: > diff --git a/include/net/xdp.h b/include/net/xdp.h > index 83b9e0142b52..5be0d4d65b94 100644 > --- a/include/net/xdp.h > +++ b/include/net/xdp.h > @@ -99,6 +99,7 @@ struct xdp_frame { > }; > > struct xdp_cpumap_stats { > + unsigned int redirect; > unsigned int pass; > unsigned int drop; > }; > diff --git a/include/trace/events/xdp.h b/include/trace/events/xdp.h > index e2c99f5bee39..cd24e8a59529 100644 > --- a/include/trace/events/xdp.h > +++ b/include/trace/events/xdp.h > @@ -190,6 +190,7 @@ TRACE_EVENT(xdp_cpumap_kthread, > __field(int, sched) > __field(unsigned int, xdp_pass) > __field(unsigned int, xdp_drop) > + __field(unsigned int, xdp_redirect) > ), > > TP_fast_assign( > @@ -201,18 +202,19 @@ TRACE_EVENT(xdp_cpumap_kthread, > __entry->sched = sched; > __entry->xdp_pass = xdp_stats->pass; > __entry->xdp_drop = xdp_stats->drop; > + __entry->xdp_redirect = xdp_stats->redirect; > ), Let me stress, that I think can do this in a followup patch (but before a release). I'm considering that we should store/give a pointer to xdp_stats (struct xdp_cpumap_stats) and let the BPF tracing program do the "decoding"/struct access to get these values. (We will go from storing 12 bytes to 8 bytes (on 64-bit), so I don't expect much gain). > TP_printk("kthread" > " cpu=%d map_id=%d action=%s" > " processed=%u drops=%u" > " sched=%d" > - " xdp_pass=%u xdp_drop=%u", > + " xdp_pass=%u xdp_drop=%u xdp_redirect=%u", > __entry->cpu, __entry->map_id, > __print_symbolic(__entry->act, __XDP_ACT_SYM_TAB), > __entry->processed, __entry->drops, > __entry->sched, > - __entry->xdp_pass, __entry->xdp_drop) > + __entry->xdp_pass, __entry->xdp_drop, __entry->xdp_redirect) > ); > -- Best regards, Jesper Dangaard Brouer MSc.CS, Principal Kernel Engineer at Red Hat LinkedIn: http://www.linkedin.com/in/brouer