• Eric Dumazet's avatar
    dctcp: more accurate tracking of packets delivery · e3058450
    Eric Dumazet authored
    After commit e21db6f6 ("tcp: track total bytes delivered with ECN CE marks")
    core TCP stack does a very good job tracking ECN signals.
    
    The "sender's best estimate of CE information" Yuchung mentioned in his
    patch is indeed the best we can do.
    
    DCTCP can use tp->delivered_ce and tp->delivered to not duplicate the logic,
    and use the existing best estimate.
    
    This solves some problems, since current DCTCP logic does not deal with losses
    and/or GRO or ack aggregation very well.
    
    This also removes a dubious use of inet_csk(sk)->icsk_ack.rcv_mss
    (this should have been tp->mss_cache), and a 64 bit divide.
    
    Finally, we can see that the DCTCP logic, calling dctcp_update_alpha() for
    every ACK could be done differently, calling it only once per RTT.
    Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
    Cc: Yuchung Cheng <ycheng@google.com>
    Cc: Neal Cardwell <ncardwell@google.com>
    Cc: Soheil Hassas Yeganeh <soheil@google.com>
    Cc: Florian Westphal <fw@strlen.de>
    Cc: Daniel Borkmann <daniel@iogearbox.net>
    Cc: Lawrence Brakmo <brakmo@fb.com>
    Cc: Abdul Kabbani <akabbani@google.com>
    Acked-by: default avatarSoheil Hassas Yeganeh <soheil@google.com>
    Acked-by: default avatarNeal Cardwell <ncardwell@google.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    e3058450
tcp_dctcp.c 7.38 KB