[PATCH v2] rust: support raw DPDK API
Etelson, Gregory
getelson at nvidia.com
Fri Mar 14 20:12:53 CET 2025
<snip>
>
> Looking at the above parts of "Port abstraction in Rust", I'm not sure it really adds anything.
> It feels a bit "middle of the road" (aka, adding some "abstraction", but not going far enough).
>
Current helloword example is a POC for the raw module usage.
It content can (should) be updated once the API will be more stable.
> What if we took an even smaller step: remove the Rust struct concepts, and just call the "dpdk::raw::*" unsafe
> functions directly, as if they were C code. No "struct Port, impl Port", and no "Iterator<DpdkPort" concepts at all.
> That would show "correct" usage of the raw generated bindings, and provide raw API unit-tests.
In cases when helloworld is activated with more than 1 port, dedicated structure helps to keep track of resources.
Maybe that example was not the best choice for "helloworld" introduction.
>
> In a future patch, we can start to build "Safe Rust" essential-basics of EAL, and Ethdev. This is to abstract over the
> "dpdk::raw::*" APIs, "compiles == correct", end-user documentation, etc all as is normal in Rust ecosystem. Example:
>
> Today: V2 patch (note the "Port" struct in Rust):
> pub unsafe fn init_port_config(port: &mut Port) { ... }
>
> Future Raw API (note the raw u16 like C APIs):
> unsafe fn init_port_config(port: u16) { ... }
>
> Future Safe API (mockup, this needs thought):
> let ports = eal.get_eth_ports();
> for p in &mut ports {
> p.initialize(rxqs, txqs, ...)?;
> }
>
> Thoughts?
The raw API links rust application directly with DPDK libraries.
Such application can achieve the same performance as C application.
DPDK can have additional rust module - dpdk::native, for genuine rust
interfaces.
With 2 rust modules, DPDK users will have time to build application logic
while DPDK developers can safely experiment with new API.
I see the raw module as a temporal solution before DPDK will have native rust
API.
Regards,
Gregory
More information about the dev
mailing list