From 887b7ba8ad000a535ad4b7d730c6f07c0ee65165 Mon Sep 17 00:00:00 2001 From: Florin Coras Date: Sat, 9 Jun 2018 06:49:59 -0700 Subject: [PATCH] tcp: fix timer based recovery exit condition Change-Id: I3f36e5760fd2935cc29d22601d4c0a1d2a22ba84 Signed-off-by: Florin Coras --- src/vnet/tcp/tcp_input.c | 1 - src/vnet/tcp/tcp_output.c | 3 ++- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/vnet/tcp/tcp_input.c b/src/vnet/tcp/tcp_input.c index 19ecc7deef8..04612f885f2 100644 --- a/src/vnet/tcp/tcp_input.c +++ b/src/vnet/tcp/tcp_input.c @@ -1006,7 +1006,6 @@ tcp_cc_recover (tcp_connection_t * tc) ASSERT (tcp_in_cong_recovery (tc)); if (tcp_cc_is_spurious_retransmit (tc)) { - clib_warning ("here"); tcp_cc_congestion_undo (tc); return 1; } diff --git a/src/vnet/tcp/tcp_output.c b/src/vnet/tcp/tcp_output.c index a036287a51c..91c0e90bb35 100644 --- a/src/vnet/tcp/tcp_output.c +++ b/src/vnet/tcp/tcp_output.c @@ -1399,7 +1399,8 @@ tcp_timer_retransmit_handler_i (u32 index, u8 is_syn) } /* Shouldn't be here */ - if (seq_geq (tc->snd_una, tc->snd_congestion)) + if ((tc->rto_boff == 0 && tc->snd_una == tc->snd_una_max) + || (tc->rto_boff > 0 && seq_geq (tc->snd_una, tc->snd_congestion))) { tcp_recovery_off (tc); return; -- 2.16.6