diff options
Diffstat (limited to 'src/vlib')
-rw-r--r-- | src/vlib/threads.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/vlib/threads.c b/src/vlib/threads.c index ef2c5616f21..fa8d949d549 100644 --- a/src/vlib/threads.c +++ b/src/vlib/threads.c @@ -282,6 +282,11 @@ vlib_thread_init (vlib_main_t * vm) tr->first_index = first_index; first_index += tr->count; n_vlib_mains += (tr->no_data_structure_clone == 0) ? tr->count : 0; + if (n_vlib_mains >= FRAME_QUEUE_MAX_NELTS) + return clib_error_return (0, + "configured amount of workers %u is" + " greater than VPP_MAX_WORKERS (%u)", + n_vlib_mains, FRAME_QUEUE_MAX_NELTS); /* construct coremask */ if (tr->use_pthreads || !tr->count) @@ -1070,6 +1075,13 @@ vlib_worker_thread_node_refork (void) VLIB_NODE_RUNTIME_DATA_SIZE); } + for (j = vec_len (old_rt); + j < vec_len (nm_clone->nodes_by_type[VLIB_NODE_TYPE_INPUT]); j++) + { + rt = &nm_clone->nodes_by_type[VLIB_NODE_TYPE_INPUT][j]; + nm_clone->input_node_counts_by_state[rt->state] += 1; + } + vec_free (old_rt); /* re-clone pre-input nodes */ |