tcp: push last buffered sequence 90/29790/11
authorFlorin Coras <fcoras@cisco.com>
Fri, 6 Nov 2020 03:01:44 +0000 (19:01 -0800)
committerDave Barach <openvpp@barachs.net>
Thu, 12 Nov 2020 16:31:29 +0000 (16:31 +0000)
Type: improvement

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

src/vnet/tcp/tcp_input.c
src/vnet/tcp/tcp_output.c

index 912b193..0a3d315 100644 (file)
@@ -582,12 +582,6 @@ tcp_handle_postponed_dequeues (tcp_worker_ctx_t * wrk)
       session_tx_fifo_dequeue_drop (&tc->connection, tc->burst_acked);
       tcp_validate_txf_size (tc, tc->snd_nxt - tc->snd_una);
 
-      if (PREDICT_FALSE (tc->flags & TCP_CONN_PSH_PENDING))
-       {
-         if (seq_leq (tc->psh_seq, tc->snd_una))
-           tc->flags &= ~TCP_CONN_PSH_PENDING;
-       }
-
       if (tcp_is_descheduled (tc))
        tcp_reschedule (tc);
 
index 1343228..e2c2b23 100644 (file)
@@ -323,6 +323,13 @@ tcp_update_burst_snd_vars (tcp_connection_t * tc)
       tcp_cc_event (tc, TCP_CC_EVT_START_TX);
       tcp_connection_tx_pacer_reset (tc, tc->cwnd, TRANSPORT_PACER_MIN_BURST);
     }
+
+  if (tc->flags & TCP_CONN_PSH_PENDING)
+    {
+      u32 max_deq = transport_max_tx_dequeue (&tc->connection);
+      /* Last byte marked for push */
+      tc->psh_seq = tc->snd_una + max_deq - 1;
+    }
 }
 
 #endif /* CLIB_MARCH_VARIANT */