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.