This patchset introduces an extensible load API for the BPF library in DPDK, addressing current limitations regarding ABI stability and feature constraints.
Currently, `rte_bpf_load` relies on a fixed `struct rte_bpf_prm`, which makes it difficult to add new loading options or parameters without breaking the ABI. To resolve these issues, this series introduces `rte_bpf_load_ex` taking `struct rte_bpf_prm_ex`. The new parameter structure includes a `sz` field for backward compatibility, allowing future extensions. Taking advantage of the new extensible API, this patchset also adds several new features: * Support for loading and executing BPF programs with up to 5 arguments. * Support for loading classic BPF (cBPF) directly. * Support for loading ELF files directly from memory buffers. * New API functions (`rte_bpf_eth_rx_install` and `rte_bpf_eth_tx_install`) to install an already loaded BPF program as a port callback, decoupling the loading phase from the installation phase. Marat Khalili (10): bpf: make logging prefixes more consistent bpf: introduce extensible load API bpf: support up to 5 arguments bpf: add cBPF origin to rte_bpf_load_ex bpf: support rte_bpf_prm_ex with port callbacks bpf: support loading ELF files from memory test/bpf: test loading cBPF directly test/bpf: test loading ELF file from memory doc: add release notes for new extensible BPF API doc: add load API to BPF programmer's guide app/test/test_bpf.c | 325 +++++++++++++++---------- doc/guides/prog_guide/bpf_lib.rst | 75 +++++- doc/guides/rel_notes/release_26_07.rst | 20 ++ lib/bpf/bpf.c | 32 ++- lib/bpf/bpf_convert.c | 97 +++++++- lib/bpf/bpf_exec.c | 126 +++++++++- lib/bpf/bpf_impl.h | 53 +++- lib/bpf/bpf_jit_arm64.c | 18 +- lib/bpf/bpf_jit_x86.c | 10 +- lib/bpf/bpf_load.c | 200 +++++++++++++-- lib/bpf/bpf_load_elf.c | 189 +++++++++----- lib/bpf/bpf_pkt.c | 65 +++-- lib/bpf/bpf_stub.c | 46 ---- lib/bpf/bpf_validate.c | 94 ++++--- lib/bpf/meson.build | 15 +- lib/bpf/rte_bpf.h | 195 ++++++++++++++- lib/bpf/rte_bpf_ethdev.h | 54 ++++ 17 files changed, 1245 insertions(+), 369 deletions(-) delete mode 100644 lib/bpf/bpf_stub.c -- 2.43.0

