diff mbox series

[ovs-dev,v4] netdev-dpdk: Disable outer udp checksum offload for ice driver.

Message ID 1710991038-3539-1-git-send-email-junwang01@cestc.cn
State Changes Requested
Headers show
Series [ovs-dev,v4] netdev-dpdk: Disable outer udp checksum offload for ice driver. | expand

Checks

Context Check Description
ovsrobot/apply-robot success apply and check: success
ovsrobot/github-robot-_Build_and_Test success github build: passed
ovsrobot/intel-ovs-compilation success test: success

Commit Message

Jun Wang March 21, 2024, 3:17 a.m. UTC
Fixing the issue of incorrect outer UDP checksum in packets sent by E810.

Fixes: 084c8087292c ("userspace: Support VXLAN and GENEVE TSO.")
Reported-at: https://github.com/openvswitch/ovs-issues/issues/321

Signed-off-by: Jun Wang <junwang01@cestc.cn>
---
 lib/netdev-dpdk.c | 6 ++++++
 1 file changed, 6 insertions(+)

Comments

Ilya Maximets March 21, 2024, 10:17 p.m. UTC | #1
On 3/21/24 04:17, Jun Wang wrote:
> Fixing the issue of incorrect outer UDP checksum in packets sent by E810.
> 
> Fixes: 084c8087292c ("userspace: Support VXLAN and GENEVE TSO.")
> Reported-at: https://github.com/openvswitch/ovs-issues/issues/321
> 
> Signed-off-by: Jun Wang <junwang01@cestc.cn>
> ---
>  lib/netdev-dpdk.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c
> index 29a6bf0..1820163 100644
> --- a/lib/netdev-dpdk.c
> +++ b/lib/netdev-dpdk.c
> @@ -1354,6 +1354,12 @@ 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")) {

I'd suggest to add a following comment here:

        /* 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 port.", netdev_get_name(&dev->up));
> +        info.tx_offload_capa &= ~RTE_ETH_TX_OFFLOAD_OUTER_UDP_CKSUM;

As per my comment in the github issue, could you, please, also clear
all the flags that depend on this one?  i.e. also turn off:

   RTE_ETH_TX_OFFLOAD_VXLAN_TNL_TSO
   RTE_ETH_TX_OFFLOAD_GENEVE_TNL_TSO

Devices should not advertise features that depend on features that
are not supported.  Some other parts of the code check only for
tunnel TSO and do not check UDP checksum offloading assuming that it
is supported always if tunnel TSO is supported.

> +    }
> +
>      if (info.tx_offload_capa & RTE_ETH_TX_OFFLOAD_IPV4_CKSUM) {
>          dev->hw_ol_features |= NETDEV_TX_IPV4_CKSUM_OFFLOAD;
>      } else {
diff mbox series

Patch

diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c
index 29a6bf0..1820163 100644
--- a/lib/netdev-dpdk.c
+++ b/lib/netdev-dpdk.c
@@ -1354,6 +1354,12 @@  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")) {
+        VLOG_INFO("%s: disabled Tx outer udp checksum offloads for a "
+                  "net/ice port.", netdev_get_name(&dev->up));
+        info.tx_offload_capa &= ~RTE_ETH_TX_OFFLOAD_OUTER_UDP_CKSUM;
+    }
+
     if (info.tx_offload_capa & RTE_ETH_TX_OFFLOAD_IPV4_CKSUM) {
         dev->hw_ol_features |= NETDEV_TX_IPV4_CKSUM_OFFLOAD;
     } else {