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 <[email protected]>
> ---
>  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 {

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to