We're talking past each other, but I'm happy to hear that for
sure your code does the right thing :-)
Right now only TSO capable hardware sets the TSO capable bit,
except perhaps for the XEN netfront driver.
What Herbert and I want to do is basically turn on TSO for
devices that can't do it in hardware, and rely upon the GSO
framework to do the segmenting in software right before we
hit the device.
This only makes sense for devices which can 1) scatter-gather
and 2) checksum on transmit. Otherwise we make too many
copies and/or passes over the data.
And we can only get the full benefit if we can pass all the
sub-segments down to the driver in one ->hard_start_xmit()
call.
UDP apps spraying data tend to naturally batch well and load balance
amongst themselves because each socket fills up to it's socket send
buffer limit, then sleeps, and we then get a stream from the next UDP
socket up to it's limit, and so on and so forth.
UDP is too easy a test case in fact :-)
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html