lkml.org 
[lkml]   [2013]   [Oct]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Date
    Subject[PATCH 3.2 005/149] tcp: cubic: fix bug in bictcp_acked()
    3.2.52-rc1 review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Eric Dumazet <edumazet@google.com>

    [ Upstream commit cd6b423afd3c08b27e1fed52db828ade0addbc6b ]

    While investigating about strange increase of retransmit rates
    on hosts ~24 days after boot, Van found hystart was disabled
    if ca->epoch_start was 0, as following condition is true
    when tcp_time_stamp high order bit is set.

    (s32)(tcp_time_stamp - ca->epoch_start) < HZ

    Quoting Van :

    At initialization & after every loss ca->epoch_start is set to zero so
    I believe that the above line will turn off hystart as soon as the 2^31
    bit is set in tcp_time_stamp & hystart will stay off for 24 days.
    I think we've observed that cubic's restart is too aggressive without
    hystart so this might account for the higher drop rate we observe.

    Diagnosed-by: Van Jacobson <vanj@google.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Neal Cardwell <ncardwell@google.com>
    Cc: Yuchung Cheng <ycheng@google.com>
    Acked-by: Neal Cardwell <ncardwell@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    ---
    net/ipv4/tcp_cubic.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    diff --git a/net/ipv4/tcp_cubic.c b/net/ipv4/tcp_cubic.c
    index b9d22e6..b78eac2 100644
    --- a/net/ipv4/tcp_cubic.c
    +++ b/net/ipv4/tcp_cubic.c
    @@ -414,7 +414,7 @@ static void bictcp_acked(struct sock *sk, u32 cnt, s32 rtt_us)
    return;

    /* Discard delay samples right after fast recovery */
    - if ((s32)(tcp_time_stamp - ca->epoch_start) < HZ)
    + if (ca->epoch_start && (s32)(tcp_time_stamp - ca->epoch_start) < HZ)
    return;

    delay = (rtt_us << 3) / USEC_PER_MSEC;


    \
     
     \ /
      Last update: 2013-10-21 11:21    [W:3.855 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site