From da78c5abc8a862d33ebd9b0e89ae781f1ea37532 Mon Sep 17 00:00:00 2001 From: Florin Coras Date: Wed, 9 Jun 2021 14:55:24 -0700 Subject: session: optimize ct fifo segment allocations Allocate per app pair segments with space for more than one fifo. Type: feature Signed-off-by: Florin Coras Change-Id: Ib96fe12b899cb14ff20c0be607814011e2c3fc6a --- src/vnet/session/segment_manager.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'src/vnet/session/segment_manager.c') diff --git a/src/vnet/session/segment_manager.c b/src/vnet/session/segment_manager.c index 103f89ecfa8..a7ce989e8e3 100644 --- a/src/vnet/session/segment_manager.c +++ b/src/vnet/session/segment_manager.c @@ -498,8 +498,8 @@ sm_free_w_index_helper (void *arg) segment_manager_free (sm); } -static void -segment_manager_free_safe (segment_manager_t * sm) +void +segment_manager_free_safe (segment_manager_t *sm) { if (!vlib_thread_is_main_w_barrier ()) { @@ -738,16 +738,16 @@ segment_manager_alloc_session_fifos (segment_manager_t * sm, segment_manager_segment_reader_lock (sm); - /* *INDENT-OFF* */ pool_foreach (cur, sm->segments) { - free_bytes = fifo_segment_available_bytes (cur); - if (free_bytes > max_free_bytes) - { - max_free_bytes = free_bytes; - fs = cur; - } + if (fifo_segment_flags (cur) & FIFO_SEGMENT_F_CUSTOM_USE) + continue; + free_bytes = fifo_segment_available_bytes (cur); + if (free_bytes > max_free_bytes) + { + max_free_bytes = free_bytes; + fs = cur; + } } - /* *INDENT-ON* */ if (fs) { -- cgit 1.2.3-korg