On Mon, Jul 2, 2018 at 1:30 AM Boris Pismenny <bor...@mellanox.com> wrote: > > > > On 7/2/2018 4:45 AM, Willem de Bruijn wrote: > >>> I've noticed that we could get cleaner code in our driver if we remove > >>> these two lines from net/ipv4/udp_offload.c: > >>> if (skb_is_gso(segs)) > >>> mss *= skb_shinfo(segs)->gso_segs; > >>> > >>> I think that this is correct in case of GSO_PARTIAL segmentation for the > >>> following reasons: > >>> 1. After this change the UDP payload field is consistent with the IP > >>> header payload length field. Currently, IPv4 length is 1500 and UDP > >>> total length is the full unsegmented length. > > > > How does this simplify the driver? Does it currently have to > > change the udph->length field to the mss on the wire, because the > > device only splits + replicates the headers + computes the csum? > > Yes, this is the code I have at the moment. > > The device's limitation is more subtle than this. It could adjust the > length, but then the checksum would be wrong.
I see. We do have to keep in mind other devices. Alexander's ixgbe RFC patch does not have this logic, so that device must update the field directly. https://patchwork.ozlabs.org/patch/908396/