• Eric Dumazet's avatar
    tcp: lack of available data can also cause TSO defer · 4465b31b
    Eric Dumazet authored
    commit f9bfe4e6 upstream.
    tcp_tso_should_defer() can return true in three different cases :
     1) We are cwnd-limited
     2) We are rwnd-limited
     3) We are application limited.
    Neal pointed out that my recent fix went too far, since
    it assumed that if we were not in 1) case, we must be rwnd-limited
    Fix this by properly populating the is_cwnd_limited and
    is_rwnd_limited booleans.
    After this change, we can finally move the silly check for FIN
    flag only for the application-limited case.
    The same move for EOR bit will be handled in net-next,
    since commit 1c09f7d0 ("tcp: do not try to defer skbs
    with eor mark (MSG_EOR)") is scheduled for linux-4.21
    Tested by running 200 concurrent netperf -t TCP_RR -- -r 60000,100
    and checking none of them was rwnd_limited in the chrono_stat
    output from "ss -ti" command.
    Fixes: 41727549
     ("tcp: Do not underestimate rwnd_limited")
    Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
tcp_output.c 108 KB