UPSTREAM: bpf: cpumap: Add the possibility to attach an eBPF program to cpumap
Introduce the capability to attach an eBPF program to cpumap entries. The idea behind this feature is to add the possibility to define on which CPU run the eBPF program if the underlying hw does not support RSS. Current supported verdicts are XDP_DROP and XDP_PASS. This patch has been tested on Marvell ESPRESSObin using xdp_redirect_cpu sample available in the kernel tree to identify possible performance regressions. Results show there are no observable differences in packet-per-second: $./xdp_redirect_cpu --progname xdp_cpu_map0 --dev eth0 --cpu 1 rx: 354.8 Kpps rx: 356.0 Kpps rx: 356.8 Kpps rx: 356.3 Kpps rx: 356.6 Kpps rx: 356.6 Kpps rx: 356.7 Kpps rx: 355.8 Kpps rx: 356.8 Kpps rx: 356.8 Kpps Co-developed-by: Jesper Dangaard Brouer <brouer@redhat.com> Change-Id: Iada1f8af4d7a68db203944869c48528f2c4ec969 Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com> Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> Acked-by: Jesper Dangaard Brouer <brouer@redhat.com> Link: https://lore.kernel.org/bpf/5c9febdf903d810b3415732e5cd98491d7d9067a.1594734381.git.lorenzo@kernel.org
This commit is contained in:
1 parent
a65eca11d6
commit
74fd7b4ffc
7 files changed
+149
-17
No files matched your search
@@ -177,9 +177,9 @@ DEFINE_EVENT(xdp_redirect_template, xdp_redirect_map_err,
|
||||
TRACE_EVENT(xdp_cpumap_kthread,
|
||||
|
||||
TP_PROTO(int map_id, unsigned int processed, unsigned int drops,
|
||||
int sched),
|
||||
int sched, struct xdp_cpumap_stats *xdp_stats),
|
||||
|
||||
TP_ARGS(map_id, processed, drops, sched),
|
||||
TP_ARGS(map_id, processed, drops, sched, xdp_stats),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__field(int, map_id)
|
||||
@@ -188,6 +188,8 @@ TRACE_EVENT(xdp_cpumap_kthread,
|
||||
__field(unsigned int, drops)
|
||||
__field(unsigned int, processed)
|
||||
__field(int, sched)
|
||||
__field(unsigned int, xdp_pass)
|
||||
__field(unsigned int, xdp_drop)
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
@@ -197,16 +199,20 @@ TRACE_EVENT(xdp_cpumap_kthread,
|
||||
__entry->drops = drops;
|
||||
__entry->processed = processed;
|
||||
__entry->sched = sched;
|
||||
__entry->xdp_pass = xdp_stats->pass;
|
||||
__entry->xdp_drop = xdp_stats->drop;
|
||||
),
|
||||
|
||||
TP_printk("kthread"
|
||||
" cpu=%d map_id=%d action=%s"
|
||||
" processed=%u drops=%u"
|
||||
" sched=%d",
|
||||
" sched=%d"
|
||||
" xdp_pass=%u xdp_drop=%u",
|
||||
__entry->cpu, __entry->map_id,
|
||||
__print_symbolic(__entry->act, __XDP_ACT_SYM_TAB),
|
||||
__entry->processed, __entry->drops,
|
||||
__entry->sched)
|
||||
__entry->sched,
|
||||
__entry->xdp_pass, __entry->xdp_drop)
|
||||
);
|
||||
|
||||
TRACE_EVENT(xdp_cpumap_enqueue,
|
||||
|
||||
Reference in new issue
Block a user