Skip to content

Commit

Permalink
netdev-dpdk: Disable outer UDP checksum offload for ice/i40e driver.
Browse files Browse the repository at this point in the history
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: 084c808 ("userspace: Support VXLAN and GENEVE TSO.")
Reported-at: openvswitch/ovs-issues#321
Signed-off-by: Jun Wang <[email protected]>
Signed-off-by: Ilya Maximets <[email protected]>
  • Loading branch information
wangjun0728 authored and igsilya committed Mar 22, 2024
1 parent 3ddb31f commit 6f93d8e
Showing 1 changed file with 12 additions and 0 deletions.
12 changes: 12 additions & 0 deletions lib/netdev-dpdk.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down

0 comments on commit 6f93d8e

Please sign in to comment.