> > > If UFO is in use it should not silently disable UDP checksums. > > > > > > If you cannot support UFO with proper checksumming, then you cannot > > > enable support for that feature. > > > > According Cadence Gigabit Ethernet MAC documentation: > > > > "Hardware will not calculate the UDP checksum or modify the UDP > > checksum field. Therefore software must set a value of zero in the > > checksum field in the UDP header (in the first payload buffer) to indicate > > to the receiver that the UDP datagram does not include a checksum." > > > > It is hardware requirement. > > I do not doubt that it is a hardware restriction. > > But I am saying that you cannot enable this feature under Linux if this is > how it operates on your hardware.
Would it be good to enable UFO conditionally with some internal define? Ex.: +#ifdef MACB_ENABLE_UFO +#define MACB_NETIF_LSO (NETIF_F_TSO | NETIF_F_UFO) +#else +#define MACB_NETIF_LSO (NETIF_F_TSO) +#endif I could add precise comment here that ufo is possible only without checksum. Or maybe I could enable it from module_params or device-tree (like: drivers/net/ethernet/neterion/s2io.c).