Fixing the issue of incorrect outer UDP checksum in packets sent by E810 or
X710.
We disable RTE_ETH_TX_OFFLOAD_OUTER_UDP_CKSUM,but also disable all the dependent
offloads like RTE_ETH_TX_OFFLOAD_VXLAN_TNL_TSO and
RTE_ETH_TX_OFFLOAD_GENEVE_TNL_TSO.
Fixes: 084c8087292c ("userspace: Support VXLAN and GENEVE TSO.")
Reported-at: https://github.com/openvswitch/ovs-issues/issues/321
Signed-off-by: Jun Wang <[email protected]>
---
v2: Modify the format
v3: Add Fixes and Reported
v4: Modify Signed-off-by
v5: Add disbale i40e driver and vxlan/geneve tso offload
---
lib/netdev-dpdk.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c
index 29a6bf0..2111f77 100644
--- a/lib/netdev-dpdk.c
+++ b/lib/netdev-dpdk.c
@@ -1354,6 +1354,18 @@ dpdk_eth_dev_init(struct netdev_dpdk *dev)
info.tx_offload_capa &= ~RTE_ETH_TX_OFFLOAD_TCP_CKSUM;
}
+ if (!strcmp(info.driver_name, "net_ice")
+ || !strcmp(info.driver_name, "net_i40e")) {
+ /* FIXME: Driver advertises the capability but doesn't seem
+ * to actually support it correctly. Can remove this once
+ * the driver is fixed on DPDK side. */
+ VLOG_INFO("%s: disabled Tx outer udp checksum offloads for a "
+ "net/ice or net/i40e port.", netdev_get_name(&dev->up));
+ info.tx_offload_capa &= ~RTE_ETH_TX_OFFLOAD_OUTER_UDP_CKSUM;
+ info.tx_offload_capa &= ~RTE_ETH_TX_OFFLOAD_VXLAN_TNL_TSO;
+ info.tx_offload_capa &= ~RTE_ETH_TX_OFFLOAD_GENEVE_TNL_TSO;
+ }
+
if (info.tx_offload_capa & RTE_ETH_TX_OFFLOAD_IPV4_CKSUM) {
dev->hw_ol_features |= NETDEV_TX_IPV4_CKSUM_OFFLOAD;
} else {
--
1.8.3.1
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev