[PATCH 6/6] net/i40e: derive Rx/Tx offload capabilities from path masks

Ciara Loftus ciara.loftus at intel.com
Thu Sep 24 15:13:46 CEST 2026


The Rx and Tx offload capability masks duplicated the offload lists already
maintained for tracking the offloads enabled on the various scalar and
vector Rx and Tx paths. Instead of defining explicit lists for the offload
capabilities masks, instead derive the capabilities from the path masks.

A benefit of this is that if an offload is ever added to a path, it is
automatically reflected in the advertised capabilities too, instead of
relying on the capabilities masks in dev_info being kept manually in sync.
Some overlap will be present when masking the masks but it is kept because
relying on one path's offload mask always being a superset of another's is
fragile.

Signed-off-by: Ciara Loftus <ciara.loftus at intel.com>
---
 drivers/net/intel/i40e/i40e_ethdev.c | 29 +++-------------------------
 1 file changed, 3 insertions(+), 26 deletions(-)

diff --git a/drivers/net/intel/i40e/i40e_ethdev.c b/drivers/net/intel/i40e/i40e_ethdev.c
index defdff0378f..5d6102cae7b 100644
--- a/drivers/net/intel/i40e/i40e_ethdev.c
+++ b/drivers/net/intel/i40e/i40e_ethdev.c
@@ -3865,35 +3865,12 @@ i40e_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
 	dev_info->max_mtu = dev_info->max_rx_pktlen - I40E_ETH_OVERHEAD;
 	dev_info->min_mtu = RTE_ETHER_MIN_MTU;
 	dev_info->rx_queue_offload_capa = 0;
-	dev_info->rx_offload_capa =
-		RTE_ETH_RX_OFFLOAD_VLAN_STRIP |
-		RTE_ETH_RX_OFFLOAD_QINQ_STRIP |
-		RTE_ETH_RX_OFFLOAD_IPV4_CKSUM |
-		RTE_ETH_RX_OFFLOAD_UDP_CKSUM |
-		RTE_ETH_RX_OFFLOAD_TCP_CKSUM |
-		RTE_ETH_RX_OFFLOAD_OUTER_IPV4_CKSUM |
-		RTE_ETH_RX_OFFLOAD_KEEP_CRC |
-		RTE_ETH_RX_OFFLOAD_SCATTER |
-		RTE_ETH_RX_OFFLOAD_VLAN_EXTEND |
-		RTE_ETH_RX_OFFLOAD_VLAN_FILTER |
-		RTE_ETH_RX_OFFLOAD_RSS_HASH;
+	dev_info->rx_offload_capa = I40E_RX_SCALAR_OFFLOADS | I40E_RX_VECTOR_OFFLOADS;
 
 	dev_info->tx_queue_offload_capa = RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE;
 	dev_info->tx_offload_capa =
-		RTE_ETH_TX_OFFLOAD_VLAN_INSERT |
-		RTE_ETH_TX_OFFLOAD_QINQ_INSERT |
-		RTE_ETH_TX_OFFLOAD_IPV4_CKSUM |
-		RTE_ETH_TX_OFFLOAD_UDP_CKSUM |
-		RTE_ETH_TX_OFFLOAD_TCP_CKSUM |
-		RTE_ETH_TX_OFFLOAD_SCTP_CKSUM |
-		RTE_ETH_TX_OFFLOAD_OUTER_IPV4_CKSUM |
-		RTE_ETH_TX_OFFLOAD_TCP_TSO |
-		RTE_ETH_TX_OFFLOAD_VXLAN_TNL_TSO |
-		RTE_ETH_TX_OFFLOAD_GRE_TNL_TSO |
-		RTE_ETH_TX_OFFLOAD_IPIP_TNL_TSO |
-		RTE_ETH_TX_OFFLOAD_GENEVE_TNL_TSO |
-		RTE_ETH_TX_OFFLOAD_MULTI_SEGS |
-		dev_info->tx_queue_offload_capa;
+		(I40E_TX_SCALAR_OFFLOADS | I40E_TX_VECTOR_OFFLOADS) &
+		~RTE_ETH_TX_OFFLOAD_OUTER_UDP_CKSUM;
 	if (hw->mac.type == I40E_MAC_X722) {
 		dev_info->tx_offload_capa |=
 			RTE_ETH_TX_OFFLOAD_OUTER_UDP_CKSUM;
-- 
2.43.0



More information about the dev mailing list