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.

