Re: tcp: Do not apply TSO segment limit to non-TSO packets
From: Eric Dumazet <hidden>
Date: 2015-01-02 18:24:03
On Thu, 2015-01-01 at 00:42 +1100, Herbert Xu wrote:
On Thu, Jan 01, 2015 at 12:39:23AM +1100, Herbert Xu wrote:quoted
Thomas Jarosch reported IPsec TCP stalls when a PMTU event occurs. In fact the problem was completely unrelated to IPsec. The bug is also reproducible if you just disable TSO/GSO.This raises two interesting questions. Firstly not many people test non-TSO code paths anymore so bugs are likely to persist for a long time there. Perhaps it's time to remove the non-TSO code path altogether? The GSO code path should provide enough speed-up in terms of boosting the effective MTU to offset the cost of copying.
Secondly why are we dealing with hardware TSO segment limits by limiting the size of the TSO packet in the TCP stack? Surely in this case GSO is free since there won't be any copying?
It might depends on the device capabilities. Non TSO/GSO path is known to be better for devices unable to perform TX checksumming, as we compute the checksum at the time we copy data from user to kernel (csum_and_copy_from_user() from tcp_sendmsg())). With BQL+TSQ, having to compute the TX hash means bringing data into cpu caches a second time right before ndo_start_xmit() But maybe this gain is very relative in a full blown configuration, with netfilter / complex qdisc being used. Thanks Herbert !