tcp: fix timer based recovery exit condition 75/12975/3
authorFlorin Coras <fcoras@cisco.com>
Sat, 9 Jun 2018 13:49:59 +0000 (06:49 -0700)
committerChris Luke <chris_luke@comcast.com>
Sun, 10 Jun 2018 18:27:37 +0000 (18:27 +0000)
Change-Id: I3f36e5760fd2935cc29d22601d4c0a1d2a22ba84
Signed-off-by: Florin Coras <fcoras@cisco.com>
src/vnet/tcp/tcp_input.c
src/vnet/tcp/tcp_output.c

index 19ecc7d..04612f8 100644 (file)
@@ -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;
     }
index a036287..91c0e90 100644 (file)
@@ -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;