tcp: honor snd_wnd in fast rxt 90/20990/2
authorFlorin Coras <fcoras@cisco.com>
Wed, 31 Jul 2019 21:11:05 +0000 (14:11 -0700)
committerDave Barach <openvpp@barachs.net>
Thu, 1 Aug 2019 11:52:51 +0000 (11:52 +0000)
Type:fix

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

index 58d2167..010397b 100644 (file)
@@ -1769,11 +1769,14 @@ static int
 tcp_fast_retransmit_unsent (tcp_worker_ctx_t * wrk, tcp_connection_t * tc,
                            u32 burst_size)
 {
-  u32 offset, n_segs = 0, n_written, bi;
+  u32 offset, n_segs = 0, n_written, bi, available_wnd;
   vlib_main_t *vm = wrk->vm;
   vlib_buffer_t *b = 0;
 
   offset = tc->snd_nxt - tc->snd_una;
+  available_wnd = tc->snd_wnd - offset;
+  burst_size = clib_min (burst_size, available_wnd / tc->snd_mss);
+
   while (n_segs < burst_size)
     {
       n_written = tcp_prepare_segment (wrk, tc, offset, tc->snd_mss, &b);