Re: [PATCH v4 35/35] net/idpf: enable simple Tx function
From: Medvedkin, Vladimir <hidden>
Date: 2026-02-09 23:20:20
On 2/9/2026 4:45 PM, Bruce Richardson wrote:
The common "simple Tx" function - in some ways a scalar version of the vector Tx functions - can be used by the idpf driver as well as i40e and ice, so add support for it to the driver. Signed-off-by: Bruce Richardson <redacted> --- drivers/net/intel/idpf/idpf_common_device.h | 2 ++ drivers/net/intel/idpf/idpf_common_rxtx.c | 19 +++++++++++++++ drivers/net/intel/idpf/idpf_common_rxtx.h | 3 +++ drivers/net/intel/idpf/idpf_rxtx.c | 26 ++++++++++++++++++++- 4 files changed, 49 insertions(+), 1 deletion(-)
<snip>
quoted hunk ↗ jump to hunk
diff --git a/drivers/net/intel/idpf/idpf_rxtx.c b/drivers/net/intel/idpf/idpf_rxtx.c index 9420200f6d..f2e202d57d 100644 --- a/drivers/net/intel/idpf/idpf_rxtx.c +++ b/drivers/net/intel/idpf/idpf_rxtx.c@@ -509,6 +509,22 @@ idpf_tx_queue_setup(struct rte_eth_dev *dev, uint16_t queue_idx, txq->q_set = true; dev->data->tx_queues[queue_idx] = txq; + /* Set tx_simple_allowed flag based on queue configuration. + * For queue 0: explicitly set the flag based on its configuration. + * For other queues: only set to false if this queue cannot use simple_tx. + */ + if (vport->txq_model == VIRTCHNL2_QUEUE_MODEL_SPLIT) + goto out; + + /* for first queue, default to true, disable later if any queue can't meet conditions */
There are no restrictions in which queue order user may call rte_eth_tx_queue_setup(). If user called queue_setup() for queue #1 w/o RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE, and then for queue #0 with RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE, there could be inconsistencies.
+ if (queue_idx == 0) + adapter->tx_simple_allowed = true; + + if ((txq->offloads != (txq->offloads & RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE)) || + txq->tx_rs_thresh < IDPF_VPMD_TX_MAX_BURST) + adapter->tx_simple_allowed = false; + +out: return 0; err_complq_setup:
<snip>
/* The primary process selects the tx path for all processes. */
-- Regards, Vladimir