net/i40e: fix forward outer IPv6 VXLAN
authorJie Wang <jie1x.wang@intel.com>
Fri, 5 Nov 2021 03:37:05 +0000 (11:37 +0800)
committerQi Zhang <qi.z.zhang@intel.com>
Fri, 5 Nov 2021 04:31:22 +0000 (05:31 +0100)
Testpmd forwards packets in checksum mode that it need to calculate
the checksum of each layer's protocol. Then it will fill flags and
header length into mbuf.

In process_outer_cksums, HW calculates the outer checksum if
tx_offloads contains outer UDP checksum otherwise SW calculates
the outer checksum.

When tx_offloads contains outer UDP checksum or outer IPv4 checksum,
mbuf will be filled with correct header length.

This patch added outer UDP checksum in tx_offload_capa and
I40E_TX_OFFLOAD_MASK, when we set csum hw outer-udp on that the
engine can forward outer IPv6 VXLAN packets.

Fixes: 7497d3e2f777 ("net/i40e: convert to new Tx offloads API")
Cc: stable@dpdk.org
Signed-off-by: Jie Wang <jie1x.wang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
drivers/net/i40e/i40e_ethdev.c
drivers/net/i40e/i40e_rxtx.c

index 9ea5f30..344cbd2 100644 (file)
@@ -3746,6 +3746,7 @@ i40e_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
                RTE_ETH_TX_OFFLOAD_IPIP_TNL_TSO |
                RTE_ETH_TX_OFFLOAD_GENEVE_TNL_TSO |
                RTE_ETH_TX_OFFLOAD_MULTI_SEGS |
+               RTE_ETH_TX_OFFLOAD_OUTER_UDP_CKSUM |
                dev_info->tx_queue_offload_capa;
        dev_info->dev_capa =
                RTE_ETH_DEV_CAPA_RUNTIME_RX_QUEUE_SETUP |
index 6ccb598..41fe3bf 100644 (file)
@@ -65,6 +65,7 @@
                RTE_MBUF_F_TX_QINQ |       \
                RTE_MBUF_F_TX_VLAN |    \
                RTE_MBUF_F_TX_TUNNEL_MASK |     \
+               RTE_MBUF_F_TX_OUTER_UDP_CKSUM | \
                I40E_TX_IEEE1588_TMST)
 
 #define I40E_TX_OFFLOAD_NOTSUP_MASK \