[dpdk-dev] [PATCH 2/3] ethdev: fail if Tx queue offload is not supported at all

Andrew Rybchenko arybchenko at solarflare.com
Fri May 11 18:25:54 CEST 2018


Do not allow to request unsupported Tx offload since all checks
are removed from PMDs because of consistency check in ethdev.
Otherwise application may rely on offload which is not actually
supported and send traffic with, for example, wrong checksums,
truncated packets or packets with garbage.

Fixes: d04dd6d4ed67 ("ethdev: new Rx/Tx offloads API")

Signed-off-by: Andrew Rybchenko <arybchenko at solarflare.com>
---
 lib/librte_ethdev/rte_ethdev.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/lib/librte_ethdev/rte_ethdev.c b/lib/librte_ethdev/rte_ethdev.c
index dd36e6270..60577efcf 100644
--- a/lib/librte_ethdev/rte_ethdev.c
+++ b/lib/librte_ethdev/rte_ethdev.c
@@ -1744,6 +1744,16 @@ rte_eth_tx_queue_setup(uint16_t port_id, uint16_t tx_queue_id,
 				local_conf.offloads,
 				dev_info.tx_queue_offload_capa,
 				__func__);
+		/*
+		 * Applications which are not converted yet to the new
+		 * Tx offload API may request device level offloads on
+		 * queue level (and nothing is requested on device level).
+		 * However, if the offload is not supported at all Tx
+		 * queue setup must fail.
+		 */
+		if ((local_conf.offloads & dev_info.tx_offload_capa) !=
+		    local_conf.offloads)
+			return -EINVAL;
 	}
 
 	return eth_err(port_id, (*dev->dev_ops->tx_queue_setup)(dev,
-- 
2.17.0



More information about the dev mailing list