>>> That way for things like GSO_PARTIAL we can update after segmentation >>> since there are only going to be 2 segments most likely instead of >>> multiple MSS sized segments. >> >> I don't quite follow. Which two segments? > > When we do GSO partial we end up with 2 segments. One really big one > that is a multiple of MSS and the remainder assuming the frame is odd > sized. The idea is we can just replicate all of the headers from the > outer IP header to the inner transport header in hardware so we do all > the updates based on that assumption and then we do the standard > segmentation update on the tail skb.
Thanks for the explanation. That is a very cool feature. I clearly hadn't read the GSO_PARTIAL code closely enough yet.