[PATCH v4 02/10] ethdev: introduce selective Rx
Andrew Rybchenko
andrew.rybchenko at oktetlabs.ru
Mon Jun 1 10:07:47 CEST 2026
On 5/29/26 4:33 PM, Thomas Monjalon wrote:
> From: Gregory Etelson <getelson at nvidia.com>
>
> Receiving an entire packet is not always needed.
> The Rx performance can be improved by receiving only partial data
> and safely discard the rest of the packet data,
> because it reduces the PCI bandwidth and the memory consumption.
>
> Selective Rx allows an application to receive
> only pre-configured packet segments and discard the rest.
> For example:
> - Deliver the first N bytes only.
> - Deliver the last N bytes only.
> - Deliver N1 bytes from offset Off1 and N2 bytes from offset Off2.
>
> Selective Rx is implemented on top of the Rx buffer split API:
> - rte_eth_rxseg_split uses the null mempool for segments
> that should be discarded.
> - the PMD does not create mbuf segments if no data read.
>
> For example: Deliver Ethernet header only
>
> Rx queue segments configuration:
> struct rte_eth_rxseg_split split[2] = {
> {
> .mp = <some mempool>,
> .length = sizeof(struct rte_ether_hdr)
> },
> {
> .mp = NULL, /* discard data */
> .length = 0 /* default to buffer size */
> }
> };
>
> Received mbuf:
> pkt_len = sizeof(struct rte_ether_hdr);
> data_len = sizeof(struct rte_ether_hdr);
> next = NULL; /* The next segment did not deliver data */
>
> After selective Rx, the mbuf packet length reflects only the data
> that was actually received,
> and can be less than the original wire packet length.
>
> A PMD activates the selective Rx capability by setting
> the rte_eth_rxseg_capa.selective_rx bit.
>
> This new capability bit is inserted in a bitmap hole
> of the struct rte_eth_rxseg_capa,
> but it needs to be ignored in the ABI check as libabigail sees a change.
>
> Signed-off-by: Gregory Etelson <getelson at nvidia.com>
> Signed-off-by: Thomas Monjalon <thomas at monjalon.net>
LGTM, thanks
Reviewed-by: Andrew Rybchenko <andrew.rybchenko at oktetlabs.ru>
More information about the dev
mailing list