[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