diff options
Diffstat (limited to 'src/vlib')
-rw-r--r-- | src/vlib/main.c | 8 | ||||
-rw-r--r-- | src/vlib/node.c | 3 | ||||
-rw-r--r-- | src/vlib/threads.c | 6 |
3 files changed, 14 insertions, 3 deletions
diff --git a/src/vlib/main.c b/src/vlib/main.c index c5cb155b1ee..4dcf63e0f9c 100644 --- a/src/vlib/main.c +++ b/src/vlib/main.c @@ -91,10 +91,11 @@ vlib_frame_find_magic (vlib_frame_t * f, vlib_node_t * node) return p; } -static vlib_frame_size_t * +static inline vlib_frame_size_t * get_frame_size_info (vlib_node_main_t * nm, u32 n_scalar_bytes, u32 n_vector_bytes) { +#ifdef VLIB_SUPPORTS_ARBITRARY_SCALAR_SIZES uword key = (n_scalar_bytes << 16) | n_vector_bytes; uword *p, i; @@ -109,6 +110,11 @@ get_frame_size_info (vlib_node_main_t * nm, } return vec_elt_at_index (nm->frame_sizes, i); +#else + ASSERT (vlib_frame_bytes (n_scalar_bytes, n_vector_bytes) + == (vlib_frame_bytes (0, 4))); + return vec_elt_at_index (nm->frame_sizes, 0); +#endif } static u32 diff --git a/src/vlib/node.c b/src/vlib/node.c index 69f505143b2..af323c4d63c 100644 --- a/src/vlib/node.c +++ b/src/vlib/node.c @@ -635,7 +635,10 @@ vlib_node_main_init (vlib_main_t * vm) vlib_node_t *n; uword ni; + nm->frame_sizes = vec_new (vlib_frame_size_t, 1); +#ifdef VLIB_SUPPORTS_ARBITRARY_SCALAR_SIZES nm->frame_size_hash = hash_create (0, sizeof (uword)); +#endif nm->flags |= VLIB_NODE_MAIN_RUNTIME_STARTED; /* Generate sibling relationships */ diff --git a/src/vlib/threads.c b/src/vlib/threads.c index e2f7d2634b9..7d17c7b37cc 100644 --- a/src/vlib/threads.c +++ b/src/vlib/threads.c @@ -866,9 +866,11 @@ start_workers (vlib_main_t * vm) nm_clone->processes = vec_dup_aligned (nm->processes, CLIB_CACHE_LINE_BYTES); - /* zap the (per worker) frame freelists, etc */ - nm_clone->frame_sizes = 0; + /* Create per-thread frame freelist */ + nm_clone->frame_sizes = vec_new (vlib_frame_size_t, 1); +#ifdef VLIB_SUPPORTS_ARBITRARY_SCALAR_SIZES nm_clone->frame_size_hash = hash_create (0, sizeof (uword)); +#endif /* Packet trace buffers are guaranteed to be empty, nothing to do here */ |