aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/vnet/session/application.c2
-rw-r--r--src/vnet/session/application_worker.c1
-rw-r--r--src/vnet/session/segment_manager.c28
-rw-r--r--src/vnet/session/segment_manager.h1
4 files changed, 22 insertions, 10 deletions
diff --git a/src/vnet/session/application.c b/src/vnet/session/application.c
index 0b5c951fd70..c62496e1d5f 100644
--- a/src/vnet/session/application.c
+++ b/src/vnet/session/application.c
@@ -711,7 +711,7 @@ application_alloc_worker_and_init (application_t * app, app_worker_t ** wrk)
sm = segment_manager_alloc ();
sm->app_wrk_index = app_wrk->wrk_index;
- if ((rv = segment_manager_init (sm)))
+ if ((rv = segment_manager_init_first (sm)))
{
app_worker_free (app_wrk);
return rv;
diff --git a/src/vnet/session/application_worker.c b/src/vnet/session/application_worker.c
index 2b2cc344f05..c332f1983ca 100644
--- a/src/vnet/session/application_worker.c
+++ b/src/vnet/session/application_worker.c
@@ -186,6 +186,7 @@ app_worker_alloc_segment_manager (app_worker_t * app_wrk)
sm = segment_manager_alloc ();
}
sm->app_wrk_index = app_wrk->wrk_index;
+ segment_manager_init (sm);
return sm;
}
diff --git a/src/vnet/session/segment_manager.c b/src/vnet/session/segment_manager.c
index d734d64172e..53be0bfdd76 100644
--- a/src/vnet/session/segment_manager.c
+++ b/src/vnet/session/segment_manager.c
@@ -333,21 +333,12 @@ segment_manager_alloc (void)
return sm;
}
-/**
- * Initializes segment manager based on options provided.
- * Returns error if ssvm segment(s) allocation fails.
- */
int
segment_manager_init (segment_manager_t * sm)
{
segment_manager_props_t *props;
- uword first_seg_size;
- fifo_segment_t *fs;
- int fs_index, i;
props = segment_manager_properties_get (sm);
- first_seg_size = clib_max (props->segment_size,
- sm_main.default_segment_size);
sm->max_fifo_size = props->max_fifo_size ?
props->max_fifo_size : sm_main.default_max_fifo_size;
@@ -356,6 +347,25 @@ segment_manager_init (segment_manager_t * sm)
segment_manager_set_watermarks (sm,
props->high_watermark,
props->low_watermark);
+ return 0;
+}
+
+/**
+ * Initializes segment manager based on options provided.
+ * Returns error if ssvm segment(s) allocation fails.
+ */
+int
+segment_manager_init_first (segment_manager_t * sm)
+{
+ segment_manager_props_t *props;
+ uword first_seg_size;
+ fifo_segment_t *fs;
+ int fs_index, i;
+
+ segment_manager_init (sm);
+ props = segment_manager_properties_get (sm);
+ first_seg_size = clib_max (props->segment_size,
+ sm_main.default_segment_size);
if (props->prealloc_fifos)
{
diff --git a/src/vnet/session/segment_manager.h b/src/vnet/session/segment_manager.h
index 1e6b14d2586..f4dacdde849 100644
--- a/src/vnet/session/segment_manager.h
+++ b/src/vnet/session/segment_manager.h
@@ -88,6 +88,7 @@ typedef struct segment_manager_main_init_args_
segment_manager_t *segment_manager_alloc (void);
int segment_manager_init (segment_manager_t * sm);
+int segment_manager_init_first (segment_manager_t * sm);
/**
* Cleanup segment manager