tcp: limit persist segment size if window available 51/35651/3
authorFlorin Coras <fcoras@cisco.com>
Tue, 15 Mar 2022 21:24:59 +0000 (14:24 -0700)
committerDamjan Marion <dmarion@me.com>
Tue, 12 Apr 2022 08:06:02 +0000 (08:06 +0000)
Type: improvement

Signed-off-by: Florin Coras <fcoras@cisco.com>
Change-Id: Ie1ae401d5105aa42761d3cac5dfbe523f3995c87

src/vnet/tcp/tcp_output.c

index 88cd913..f503500 100644 (file)
@@ -1565,8 +1565,10 @@ tcp_timer_persist_handler (tcp_connection_t * tc)
 
   tcp_validate_txf_size (tc, offset);
   tc->snd_opts_len = tcp_make_options (tc, &tc->snd_opts, tc->state);
-  max_snd_bytes = clib_min (tc->snd_mss,
+  max_snd_bytes = clib_min (clib_min (tc->snd_mss, available_bytes),
                            tm->bytes_per_buffer - TRANSPORT_MAX_HDRS_LEN);
+  if (tc->snd_wnd > 0)
+    max_snd_bytes = clib_min (tc->snd_wnd, max_snd_bytes);
   n_bytes = session_tx_fifo_peek_bytes (&tc->connection, data, offset,
                                        max_snd_bytes);
   b->current_length = n_bytes;