Hi all, Also, a possible solution for libvirt may look like this: https://github.com/daynix/libvirt/tree/RSS_eBPF (WIP)
On Fri, May 12, 2023 at 3:47 PM Andrew Melnychenko <and...@daynix.com> wrote: > > This series of patches provides the ability to retrieve eBPF program > through qmp, so management application may load bpf blob with proper > capabilities. > Now, virtio-net devices can accept eBPF programs and maps through properties > as external file descriptors. Access to the eBPF map is direct through mmap() > call, so it should not require additional capabilities to bpf* calls. > eBPF file descriptors can be passed to QEMU from parent process or by unix > socket with sendfd() qmp command. > > Changes since v1: > * refactored code. > * eBPF program ids implemented as enums > > Andrew Melnychenko (6): > ebpf: Added eBPF map update through mmap. > ebpf: Added eBPF initialization by fds. > virtio-net: Added property to load eBPF RSS with fds. > ebpf: Added declaration/initialization routines. > qmp: Added new command to retrieve eBPF blob. > ebpf: Updated eBPF program and skeleton. > > ebpf/ebpf.c | 54 ++ > ebpf/ebpf.h | 31 + > ebpf/ebpf_rss-stub.c | 6 + > ebpf/ebpf_rss.c | 149 +++- > ebpf/ebpf_rss.h | 10 + > ebpf/meson.build | 1 + > ebpf/rss.bpf.skeleton.h | 1469 ++++++++++++++++---------------- > hw/net/virtio-net.c | 55 +- > include/hw/virtio/virtio-net.h | 1 + > monitor/qmp-cmds.c | 16 + > qapi/misc.json | 38 + > tools/ebpf/rss.bpf.c | 2 +- > 12 files changed, 1073 insertions(+), 759 deletions(-) > create mode 100644 ebpf/ebpf.c > create mode 100644 ebpf/ebpf.h > > -- > 2.39.1 >