[PATCH 3/6] net/iavf: fix Rx path selection for scalar flex bulk alloc

Bruce Richardson bruce.richardson at intel.com
Tue Oct 14 16:33:28 CEST 2025


On Tue, Oct 14, 2025 at 08:45:14AM +0000, Ciara Loftus wrote:
> The scalar bulk alloc rx burst function supports both legacy and
> flexible rx descriptors. The rx path selection infrastructure introduced
> in commit 91e3205d72d8 ("net/iavf: use common Rx path selection
> infrastructure") cannot define a path that supports both descriptor
> formats. To solve this problem, have two rx path definitions which both
> point to the same rx burst function but report different descriptor
> formats. This allows the rx path selection function to choose the
> correct path.
> 
> Fixes: 91e3205d72d8 ("net/iavf: use common Rx path selection infrastructure")
> Cc: stable at dpdk.org
> 
> Signed-off-by: Ciara Loftus <ciara.loftus at intel.com>

I find it strange that both point to the one function but have different
offload capabilities. However, I realise that the code path bifurcates
again later in the function, so doing it this way is correct!

Acked-by: Bruce Richardson <bruce.richardson at intel.com>


> ---
>  drivers/net/intel/iavf/iavf.h      | 1 +
>  drivers/net/intel/iavf/iavf_rxtx.c | 3 +++
>  2 files changed, 4 insertions(+)
> 
> diff --git a/drivers/net/intel/iavf/iavf.h b/drivers/net/intel/iavf/iavf.h
> index 435902fbc2..4e76162337 100644
> --- a/drivers/net/intel/iavf/iavf.h
> +++ b/drivers/net/intel/iavf/iavf.h
> @@ -327,6 +327,7 @@ enum iavf_rx_func_type {
>  	IAVF_RX_FLEX_RXD,
>  	IAVF_RX_SCATTERED_FLEX_RXD,
>  	IAVF_RX_BULK_ALLOC,
> +	IAVF_RX_BULK_ALLOC_FLEX_RXD,
>  	IAVF_RX_SSE,
>  	IAVF_RX_SSE_SCATTERED,
>  	IAVF_RX_SSE_FLEX_RXD,
> diff --git a/drivers/net/intel/iavf/iavf_rxtx.c b/drivers/net/intel/iavf/iavf_rxtx.c
> index 67c73f9ad6..bbf3a1737e 100644
> --- a/drivers/net/intel/iavf/iavf_rxtx.c
> +++ b/drivers/net/intel/iavf/iavf_rxtx.c
> @@ -3734,6 +3734,9 @@ static const struct ci_rx_path_info iavf_rx_path_infos[] = {
>  				{.scattered = true, .flex_desc = true}}},
>  	[IAVF_RX_BULK_ALLOC] = {iavf_recv_pkts_bulk_alloc, "Scalar Bulk Alloc",
>  		{IAVF_RX_SCALAR_OFFLOADS, RTE_VECT_SIMD_DISABLED, {.bulk_alloc = true}}},
> +	[IAVF_RX_BULK_ALLOC_FLEX_RXD] = {iavf_recv_pkts_bulk_alloc, "Scalar Bulk Alloc Flex",
> +			{IAVF_RX_SCALAR_FLEX_OFFLOADS, RTE_VECT_SIMD_DISABLED,
> +			{.flex_desc = true, .bulk_alloc = true}}},
>  #ifdef RTE_ARCH_X86
>  	[IAVF_RX_SSE] = {iavf_recv_pkts_vec, "Vector SSE",
>  		{IAVF_RX_VECTOR_OFFLOAD_OFFLOADS, RTE_VECT_SIMD_128, {.bulk_alloc = true}}},
> -- 
> 2.34.1
> 


More information about the dev mailing list