On 8/30/24 09:55, Jun Wang via discuss wrote:
> Hi,team.
>  
> I am currently adapting a new network card, Wangxun, with the txgbe driver.
> Unfortunately, I discovered that it incorrectly enables 
> |RTE_ETH_TX_OFFLOAD_TCP_CKSUM|.
> After explicitly modifying it with |info->tx_offload_capa &= 
> ~RTE_ETH_TX_OFFLOAD_TCP_CKSUM|,
> the outer UDP checksum became correct.
> I have also found that this issue exists with other cards like X710/E810,
> although it has been correctly fixed in later DPDK versions for the E810.
> However, are we left with the option of fixing the incorrect enabling for 
> each network card
> on the OVS side as we discover them? Should we consider a better approach? 
> Does anyone
> have any good ideas regarding this issue?

Yeah, I'd expect DPDK project to test drivers before advertising capabilities.
This is clearly not happening.  On OVS side we don't really have HW to test
the drivers, and it's not really OVS'es job to do so.

Unfortunately, for now we're left with manual disabling of broken features
when users find them.

One thing we could consider is to add a generic way to turn off certain offload
flags for a particular OVS interface.  This way we'll not need to change the
code every time a new broken DPDK driver is discovered, but users would be able
to just turn off features and move on.  It sounds a little tricky though since
we'll have to track what new features DPDK adds in new releases and what are the
dependencies between different offload capabilities.  And we'll also have 
certain
popular NICs like i40e broken by default, so users will have to somehow know 
that
specific offload is not working on a specific card in order to turn it off.

Alternative would be to just turn off offloading for all the cards, unless we
know that it is working and being actually tested by DPDK project.  This is
also not very user-friendly, since most of the drivers will never get offload
enabled this way, even if it actually works.

In the end, the real solution is for DPDK project to test drivers it ships, but
maybe having a knob that turns off all the offloading per interface would be
useful.  Maybe two knobs - one for all the tunnel offload and one for all the
other offload.  But I don't think going more granular makes sense, as we'll
drown in inter-dependencies between offload flags.

Best regards, Ilya Maximets.

>  
> https://bugs.dpdk.org/show_bug.cgi?id=1529
>  
>     if (!strcmp(info->driver_name, "net_i40e")
>         || !strcmp(info->driver_name, "net_iavf")
>         || !strcmp(info->driver_name, "net_txgbe")) {
>         /* 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/i40e or net/iavf or net_txgbe port.",
>                   netdev_get_name(&dev->up));
>         info->tx_offload_capa &= ~RTE_ETH_TX_OFFLOAD_OUTER_UDP_CKSUM;
>     }

_______________________________________________
discuss mailing list
disc...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-discuss

Reply via email to