tcp: accept sack reneging as a cc event 08/24108/2
authorFlorin Coras <fcoras@cisco.com>
Sun, 22 Dec 2019 17:20:26 +0000 (09:20 -0800)
committerDave Barach <openvpp@barachs.net>
Mon, 23 Dec 2019 18:52:57 +0000 (18:52 +0000)
Type: fix

Change-Id: Iead1303ca3dec7593eb3ce54f291b82d94c821a4
Signed-off-by: Florin Coras <fcoras@cisco.com>
src/vnet/tcp/tcp_input.c

index c94e5ba..52d7316 100755 (executable)
@@ -1400,6 +1400,10 @@ tcp_cc_handle_event (tcp_connection_t * tc, tcp_rate_sample_t * rs,
 {
   u8 has_sack = tcp_opts_sack_permitted (&tc->rcv_opts);
 
+  /* If reneging, wait for timer based retransmits */
+  if (PREDICT_FALSE (tcp_is_lost_fin (tc) || tc->sack_sb.is_reneging))
+    return;
+
   /*
    * If not in recovery, figure out if we should enter
    */
@@ -1530,10 +1534,6 @@ tcp_ack_is_cc_event (tcp_connection_t * tc, vlib_buffer_t * b,
   *is_dack = tc->sack_sb.last_sacked_bytes
     || tcp_ack_is_dupack (tc, b, prev_snd_wnd, prev_snd_una);
 
-  /* If reneging, wait for timer based retransmits */
-  if (PREDICT_FALSE (tcp_is_lost_fin (tc) || tc->sack_sb.is_reneging))
-    return 0;
-
   return (*is_dack || tcp_in_cong_recovery (tc));
 }