• E
    tcp: tsq: restore minimal amount of queueing · 98e09386
    Eric Dumazet 提交于
    After commit c9eeec26 ("tcp: TSQ can use a dynamic limit"), several
    users reported throughput regressions, notably on mvneta and wifi
    adapters.
    
    802.11 AMPDU requires a fair amount of queueing to be effective.
    
    This patch partially reverts the change done in tcp_write_xmit()
    so that the minimal amount is sysctl_tcp_limit_output_bytes.
    
    It also remove the use of this sysctl while building skb stored
    in write queue, as TSO autosizing does the right thing anyway.
    
    Users with well behaving NICS and correct qdisc (like sch_fq),
    can then lower the default sysctl_tcp_limit_output_bytes value from
    128KB to 8KB.
    
    This new usage of sysctl_tcp_limit_output_bytes permits each driver
    authors to check how their driver performs when/if the value is set
    to a minimum of 4KB.
    
    Normally, line rate for a single TCP flow should be possible,
    but some drivers rely on timers to perform TX completion and
    too long TX completion delays prevent reaching full throughput.
    
    Fixes: c9eeec26 ("tcp: TSQ can use a dynamic limit")
    Signed-off-by: NEric Dumazet <edumazet@google.com>
    Reported-by: NSujith Manoharan <sujith@msujith.org>
    Reported-by: NArnaud Ebalard <arno@natisbad.org>
    Tested-by: NSujith Manoharan <sujith@msujith.org>
    Cc: Felix Fietkau <nbd@openwrt.org>
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    98e09386
tcp.c 81.6 KB