From 6af82438144fca93af4df4c2808827dbbc392699 Mon Sep 17 00:00:00 2001 From: John Lo Date: Fri, 24 May 2019 07:16:12 -0400 Subject: Fix congestion recovery check Change-Id: Ia9347c8cb6175c6bec3f9c27a7e0a71c4e58fe28 Signed-off-by: John Lo --- src/vnet/tcp/tcp_input.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/vnet/tcp/tcp_input.c b/src/vnet/tcp/tcp_input.c index 392d694030e..b345e40d4c0 100644 --- a/src/vnet/tcp/tcp_input.c +++ b/src/vnet/tcp/tcp_input.c @@ -1526,8 +1526,10 @@ tcp_rcv_ack (tcp_worker_ctx_t * wrk, tcp_connection_t * tc, vlib_buffer_t * b, /* When we entered cong recovery, we reset snd_nxt to snd_una. Seems * peer still has the data so accept the ack */ if (tcp_in_cong_recovery (tc) - && seq_leq (vnet_buffer (b)->tcp.ack_number, - tc->snd_una + tc->snd_wnd)) + && (seq_leq (vnet_buffer (b)->tcp.ack_number, + tc->snd_una + tc->snd_wnd) + || seq_leq (vnet_buffer (b)->tcp.ack_number, + tc->snd_congestion))) { tc->snd_nxt = vnet_buffer (b)->tcp.ack_number; if (seq_gt (tc->snd_nxt, tc->snd_una_max)) -- cgit 1.2.3-korg