On Fri, Dec 12, 2025 at 11:06:23AM +0000, Ciara Loftus wrote:
> Replace the existing complicated logic with the use of the common
> function. Let the primary process select the Tx path to be used by all
> processes using the given device.
> 
> Introduce a new feature "single queue" to the common infrastructure
> which represents whether single or split queue mode is used in the given
> path.
> 
> Signed-off-by: Ciara Loftus <[email protected]>

Acked-by: Bruce Richardson <[email protected]>

> ---
> v2:
> * removed unnecessary tx_vec_allowed
> ---
>  drivers/net/intel/common/tx.h                 |   5 +
>  drivers/net/intel/idpf/idpf_common_device.h   |  10 ++
>  drivers/net/intel/idpf/idpf_common_rxtx.c     |  49 ++++++++
>  drivers/net/intel/idpf/idpf_common_rxtx.h     |  12 ++
>  drivers/net/intel/idpf/idpf_rxtx.c            | 118 ++++++------------
>  drivers/net/intel/idpf/idpf_rxtx_vec_common.h |  10 --
>  6 files changed, 112 insertions(+), 92 deletions(-)
> 
> diff --git a/drivers/net/intel/common/tx.h b/drivers/net/intel/common/tx.h
> index 60b1bd642a..24fcfbe225 100644
> --- a/drivers/net/intel/common/tx.h
> +++ b/drivers/net/intel/common/tx.h
> @@ -124,6 +124,7 @@ struct ci_tx_path_features {
>       bool simple_tx;
>       bool ctx_desc;
>       bool disabled;
> +     bool single_queue;
>  };
>  
>  struct ci_tx_path_info {
> @@ -318,6 +319,10 @@ ci_tx_path_select(const struct ci_tx_path_features 
> *req_features,
>               if (!path_features->ctx_desc && req_features->ctx_desc)
>                       continue;
>  
> +             /* If requested, ensure the path supports single queue TX. */
> +             if (path_features->single_queue != req_features->single_queue)
> +                     continue;
> +
>               /* Ensure the path supports the requested TX offloads. */
>               if ((path_features->tx_offloads & req_features->tx_offloads) !=
>                               req_features->tx_offloads)
> diff --git a/drivers/net/intel/idpf/idpf_common_device.h 
> b/drivers/net/intel/idpf/idpf_common_device.h
> index c32dcfbb12..eff04a83eb 100644
> --- a/drivers/net/intel/idpf/idpf_common_device.h
> +++ b/drivers/net/intel/idpf/idpf_common_device.h
> @@ -75,6 +75,15 @@ enum idpf_rx_func_type {
>       IDPF_RX_MAX
>  };
>  
> +enum idpf_tx_func_type {
> +     IDPF_TX_DEFAULT,
> +     IDPF_TX_SINGLEQ,
> +     IDPF_TX_SINGLEQ_AVX2,
> +     IDPF_TX_AVX512,
> +     IDPF_TX_SINGLEQ_AVX512,
> +     IDPF_TX_MAX

Following up offline with Ciara about the need for this MAX value - it's
necessary due to the fact that the function type array needs to be shared
with the cpfl driver, but array definition itself is in an idpf C file, so
cpfl cannot use RTE_DIM to find the size.
Will add a comment to explain this a little, on apply.

Reply via email to