summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/svm/fifo_segment.c6
-rw-r--r--src/vnet/session/application_local.c4
-rw-r--r--src/vnet/session/transport.c8
-rw-r--r--src/vnet/session/transport.h1
-rw-r--r--src/vnet/tcp/tcp_input.c3
5 files changed, 12 insertions, 10 deletions
diff --git a/src/svm/fifo_segment.c b/src/svm/fifo_segment.c
index 8503819f42f..a5ffd4af2ed 100644
--- a/src/svm/fifo_segment.c
+++ b/src/svm/fifo_segment.c
@@ -865,12 +865,6 @@ fifo_segment_alloc_fifo_w_slice (fifo_segment_t * fs, u32 slice_index,
{
fss_fifo_add_active_list (fss, f);
f->flags |= SVM_FIFO_F_LL_TRACKED;
-
- svm_fifo_init_ooo_lookup (f, 0 /* ooo enq */ );
- }
- else
- {
- svm_fifo_init_ooo_lookup (f, 1 /* ooo deq */ );
}
fsh_active_fifos_update (fsh, 1);
diff --git a/src/vnet/session/application_local.c b/src/vnet/session/application_local.c
index 9b0136f95dc..6e0aee2aae3 100644
--- a/src/vnet/session/application_local.c
+++ b/src/vnet/session/application_local.c
@@ -217,10 +217,6 @@ ct_init_accepted_session (app_worker_t * server_wrk,
ls->rx_fifo->segment_index = seg_index;
ls->tx_fifo->segment_index = seg_index;
- /* Disable ooo lookups on the cut-through fifos. TODO remove once init of
- * chunk lookup rbtrees is delegated to transports */
- svm_fifo_free_chunk_lookup (ls->tx_fifo);
-
segment_handle = segment_manager_segment_handle (sm, seg);
if ((rv = app_worker_add_segment_notify (server_wrk, segment_handle)))
{
diff --git a/src/vnet/session/transport.c b/src/vnet/session/transport.c
index 8e5df3f8418..967ff5d9cba 100644
--- a/src/vnet/session/transport.c
+++ b/src/vnet/session/transport.c
@@ -770,6 +770,14 @@ transport_connection_reschedule (transport_connection_t * tc)
}
void
+transport_fifos_init_ooo (transport_connection_t * tc)
+{
+ session_t *s = session_get (tc->s_index, tc->thread_index);
+ svm_fifo_init_ooo_lookup (s->rx_fifo, 0 /* ooo enq */ );
+ svm_fifo_init_ooo_lookup (s->tx_fifo, 1 /* ooo deq */ );
+}
+
+void
transport_update_time (clib_time_type_t time_now, u8 thread_index)
{
transport_proto_vft_t *vft;
diff --git a/src/vnet/session/transport.h b/src/vnet/session/transport.h
index 9c873b12caf..c8d4e27be66 100644
--- a/src/vnet/session/transport.h
+++ b/src/vnet/session/transport.h
@@ -217,6 +217,7 @@ transport_connection_is_cless (transport_connection_t * tc)
}
void transport_connection_reschedule (transport_connection_t * tc);
+void transport_fifos_init_ooo (transport_connection_t * tc);
/**
* Register transport virtual function table.
diff --git a/src/vnet/tcp/tcp_input.c b/src/vnet/tcp/tcp_input.c
index 305e2d34461..0f7006a01fa 100644
--- a/src/vnet/tcp/tcp_input.c
+++ b/src/vnet/tcp/tcp_input.c
@@ -1967,6 +1967,7 @@ tcp46_syn_sent_inline (vlib_main_t * vm, vlib_node_runtime_t * node,
goto cleanup_ho;
}
+ transport_fifos_init_ooo (&new_tc0->connection);
new_tc0->tx_fifo_size =
transport_tx_fifo_size (&new_tc0->connection);
/* Update rtt with the syn-ack sample */
@@ -1990,6 +1991,7 @@ tcp46_syn_sent_inline (vlib_main_t * vm, vlib_node_runtime_t * node,
goto cleanup_ho;
}
+ transport_fifos_init_ooo (&new_tc0->connection);
new_tc0->tx_fifo_size =
transport_tx_fifo_size (&new_tc0->connection);
new_tc0->rtt_ts = 0;
@@ -2646,6 +2648,7 @@ tcp46_listen_inline (vlib_main_t * vm, vlib_node_runtime_t * node,
goto done;
}
+ transport_fifos_init_ooo (&child->connection);
child->tx_fifo_size = transport_tx_fifo_size (&child->connection);
tcp_send_synack (child);