Hello,

On Tue, Apr 26, 2022 at 10:34 AM Björn Svensson A
<bjorn.a.svens...@est.tech> wrote:
>
> Hi all,
> I hope this is the correct maillist for this topic.

Yes it is.
I copied the maintainer and people that might be interested in this topic.


>
> DPDK provides the nice library `librte_bpf` to load and execute eBPF bytecode
> and we would like to broaden our usage of this library.
>
> Today there are hints that this library might have been purpose built to 
> enable inspection or modification of packets;
> for example the eBPF program is expected to only use a single input argument, 
> pointing to data of some sort.
> We believe it would be beneficial to be able to use this library to run 
> generic eBPF programs as well,
> as an alternative to run them as RX- TX-port/queue callbacks (i.e. generic 
> programs which only uses supported features)
>
> I have seen some discussions regarding moving towards using a common library 
> with the kernel implementation of bpf,
> but I couldn't figure out the outcome.

I don't think there was progress on this.


> My question is if there any plans to evolve this library or would 
> improvements possibly be accepted?
>
> Here are some improvements we are interested to look into:
>
> * Add additional API for loading eBPF code.
>   Today it's possible to load eBPF code from an ELF file, but having an API 
> to load code from an ELF image from memory
>   would open up for other ways to manage eBPF code.
>
>   Example of the new API:
>     struct rte_bpf *
>     rte_bpf_elf_image_load(const struct rte_bpf_prm *prm, char *image,
>                            size_t size, const char *sname);
>
> * Add support of more than a single input argument.
>   There are cases when additional information is needed. Being able to use 
> more than a single input argument
>   would help when running generic eBPF programs.
>
>   Example of change:
>        struct rte_bpf_prm {
>        ...
>     -    struct rte_bpf_arg prog_arg; /**< eBPF program input arg description 
> */
>     +    uint32_t nb_args;
>     +    struct rte_bpf_arg prog_args[EBPF_FUNC_MAX_ARGS]; /**< eBPF program 
> input args */
>        };

All I can tell, is that this proposal breaks ABI.
This is a blocker to get it accepted until next ABI breakage window opens.


-- 
David Marchand

Reply via email to