On Mon, Feb 19, 2018 at 2:56 PM Eric Dumazet <eduma...@google.com> wrote: > Switching TCP to GSO mode, relying on core networking layers > to perform eventual adaptation for dumb devices was overdue.
> 1) Most TCP developments are done with TSO in mind. > 2) Less high-resolution timers needs to be armed for TCP-pacing > 3) GSO can benefit of xmit_more hint > 4) Receiver GRO is more effective (as if TSO was used for real on sender) > -> less ACK packets and overhead. > 5) Write queues have less overhead (one skb holds about 64KB of payload) > 6) SACK coalescing just works. (no payload in skb->head) > 7) rtx rb-tree contains less packets, SACK is cheaper. > 8) Removal of legacy code. Less maintenance hassles. > Note that I have left the sendpage/zerocopy paths, but they probably can > benefit from the same strategy. > Thanks to Oleksandr Natalenko for reporting a performance issue for BBR/fq_codel, > which was the main reason I worked on this patch series. > Eric Dumazet (6): > tcp: switch to GSO being always on > tcp: remove sk_can_gso() use > tcp: remove sk_check_csum_caps() > tcp: tcp_sendmsg() only deals with CHECKSUM_PARTIAL > tcp: remove dead code from tcp_set_skb_tso_segs() > tcp: remove dead code after CHECKSUM_PARTIAL adoption Acked-by: Soheil Hassas Yeganeh <soh...@google.com> Very nice patch-series! Thank you, Eric! > include/net/sock.h | 10 +------- > net/core/sock.c | 2 +- > net/ipv4/tcp.c | 57 ++++++++++++------------------------------- > net/ipv4/tcp_input.c | 3 --- > net/ipv4/tcp_ipv4.c | 13 +++------- > net/ipv4/tcp_output.c | 40 +++++------------------------- > 6 files changed, 26 insertions(+), 99 deletions(-) > -- > 2.16.1.291.g4437f3f132-goog