summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFlorin Coras <fcoras@cisco.com>2018-06-09 06:49:59 -0700
committerChris Luke <chris_luke@comcast.com>2018-06-10 18:27:37 +0000
commit887b7ba8ad000a535ad4b7d730c6f07c0ee65165 (patch)
treeb68c175a3437be3ec4070b73176dee9c608e479d
parent70a745d96653c2d3e72ba1704c29aaa946ed9a92 (diff)
tcp: fix timer based recovery exit condition
Change-Id: I3f36e5760fd2935cc29d22601d4c0a1d2a22ba84 Signed-off-by: Florin Coras <fcoras@cisco.com>
-rw-r--r--src/vnet/tcp/tcp_input.c1
-rw-r--r--src/vnet/tcp/tcp_output.c3
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;