• Doug Leith's avatar
    tcp: tcp_vegas cong avoid fix · 8d3a564d
    Doug Leith authored
    This patch addresses a book-keeping issue in tcp_vegas.c.  At present
    tcp_vegas does separate book-keeping of cwnd based on packet sequence
    numbers.  A mismatch can develop between this book-keeping and
    tp->snd_cwnd due, for example, to delayed acks acking multiple
    packets.  When vegas transitions to reno operation (e.g. following
    loss), then this mismatch leads to incorrect behaviour (akin to a cwnd
    backoff).  This seems mostly to affect operation at low cwnds where
    delayed acking can lead to a significant fraction of cwnd being
    covered by a single ack, leading to the book-keeping mismatch.  This
    patch modifies the congestion avoidance update to avoid the need for
    separate book-keeping while leaving vegas congestion avoidance
    functionally unchanged.  A secondary advantage of this modification is
    that the use of fixed-point (via V_PARAM_SHIFT) and 64 bit arithmetic
    is no longer necessary, simplifying the code.
    
    Some example test measurements with the patched code (confirming no functional
    change in the congestion avoidance algorithm) can be seen at:
    
    http://www.hamilton.ie/doug/vegaspatch/Signed-off-by: default avatarDoug Leith <doug.leith@nuim.ie>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    8d3a564d
tcp_vegas.c 9.39 KB