[PATCH] ethdev: revert reject conflicting TX offloads configuration

Morten Brørup mb at smartsharesystems.com
Mon Oct 20 14:33:26 CEST 2025


This reverts commit fdb840367cf0d6abeb17b05623679b8d1ea4c902

The Tech Board has decided that the co-existence of fast mbuf release and
multi segments is unclear, and new restrictions should not be imposed
until this has been clarified.

Fixes: fdb840367cf0 ("ethdev: reject conflicting Tx offload configurations")

Signed-off-by: Morten Brørup <mb at smartsharesystems.com>
---
 lib/ethdev/rte_ethdev.c | 37 -------------------------------------
 1 file changed, 37 deletions(-)

diff --git a/lib/ethdev/rte_ethdev.c b/lib/ethdev/rte_ethdev.c
index f22139cb38..32686d99a9 100644
--- a/lib/ethdev/rte_ethdev.c
+++ b/lib/ethdev/rte_ethdev.c
@@ -1534,18 +1534,6 @@ rte_eth_dev_configure(uint16_t port_id, uint16_t nb_rx_q, uint16_t nb_tx_q,
 		goto rollback;
 	}
 
-	/* MBUF_FAST_FREE preconditions conflict with MULTI_SEGS support. */
-	if ((dev_conf->txmode.offloads & RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE) &&
-	    (dev_conf->txmode.offloads & RTE_ETH_TX_OFFLOAD_MULTI_SEGS)) {
-		RTE_ETHDEV_LOG_LINE(ERR,
-			"id=%d offload clash, %s vs %s",
-			port_id,
-			rte_eth_dev_tx_offload_name(RTE_ETH_TX_OFFLOAD_MULTI_SEGS),
-			rte_eth_dev_tx_offload_name(RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE));
-		ret = -EINVAL;
-		goto rollback;
-	}
-
 	dev->data->dev_conf.rx_adv_conf.rss_conf.rss_hf =
 		rte_eth_rss_hf_refine(dev_conf->rx_adv_conf.rss_conf.rss_hf);
 
@@ -2724,31 +2712,6 @@ rte_eth_tx_queue_setup(uint16_t port_id, uint16_t tx_queue_id,
 		return -EINVAL;
 	}
 
-	/*
-	 * If the driver uses a Tx function with MBUF_FAST_FREE preconditions,
-	 * per-queue MULTI_SEGS support is not possible.
-	 */
-	if ((dev->data->dev_conf.txmode.offloads & RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE) &&
-			(local_conf.offloads & RTE_ETH_TX_OFFLOAD_MULTI_SEGS)) {
-		RTE_ETHDEV_LOG_LINE(ERR,
-			"id=%d txq=%d offload clash, per-queue %s vs per-port %s",
-			port_id, tx_queue_id,
-			rte_eth_dev_tx_offload_name(RTE_ETH_TX_OFFLOAD_MULTI_SEGS),
-			rte_eth_dev_tx_offload_name(RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE));
-		return -EINVAL;
-	}
-	/*
-	 * If the driver uses a Tx function with MULTI_SEGS support,
-	 * runtime support for per-queue MBUF_FAST_FREE optimization depends on the driver.
-	 */
-	if ((dev->data->dev_conf.txmode.offloads & RTE_ETH_TX_OFFLOAD_MULTI_SEGS) &&
-			(local_conf.offloads & RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE))
-		RTE_ETHDEV_LOG_LINE(DEBUG,
-			"id=%d txq=%d potential offload clash, per-queue %s vs per-port %s: PMD to decide",
-			port_id, tx_queue_id,
-			rte_eth_dev_tx_offload_name(RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE),
-			rte_eth_dev_tx_offload_name(RTE_ETH_TX_OFFLOAD_MULTI_SEGS));
-
 	rte_ethdev_trace_txq_setup(port_id, tx_queue_id, nb_tx_desc, tx_conf);
 	return eth_err(port_id, dev->dev_ops->tx_queue_setup(dev,
 		       tx_queue_id, nb_tx_desc, socket_id, &local_conf));
-- 
2.43.0



More information about the dev mailing list