diff options
author | Mohammed Hawari <mohammed@hawari.fr> | 2022-05-18 10:08:47 +0200 |
---|---|---|
committer | Damjan Marion <dmarion@me.com> | 2022-05-24 14:03:00 +0000 |
commit | e71492655fab8a70285b3dcf1419420a337750f9 (patch) | |
tree | ef0a37b531ddcd32d04a205b789f4928c4a2cb2c /src/vlib/threads.c | |
parent | 9a8d3d71071ca82c139dae5aa45cb0d4620ca9e3 (diff) |
vlib: implement aux data handoff
Type: improvement
Change-Id: I20b41537a249a55f01004e45392b34adaa8fd792
Signed-off-by: Mohammed Hawari <mohammed@hawari.fr>
Diffstat (limited to 'src/vlib/threads.c')
-rw-r--r-- | src/vlib/threads.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/vlib/threads.c b/src/vlib/threads.c index 57ba39a00d8..6c39e688b72 100644 --- a/src/vlib/threads.c +++ b/src/vlib/threads.c @@ -1587,12 +1587,18 @@ VLIB_REGISTER_THREAD (worker_thread_reg, static) = { }; /* *INDENT-ON* */ +extern clib_march_fn_registration + *vlib_frame_queue_dequeue_with_aux_fn_march_fn_registrations; +extern clib_march_fn_registration + *vlib_frame_queue_dequeue_fn_march_fn_registrations; u32 vlib_frame_queue_main_init (u32 node_index, u32 frame_queue_nelts) { vlib_thread_main_t *tm = vlib_get_thread_main (); + vlib_main_t *vm = vlib_get_main (); vlib_frame_queue_main_t *fqm; vlib_frame_queue_t *fq; + vlib_node_t *node; int i; u32 num_threads; @@ -1604,6 +1610,19 @@ vlib_frame_queue_main_init (u32 node_index, u32 frame_queue_nelts) vec_add2 (tm->frame_queue_mains, fqm, 1); + node = vlib_get_node (vm, fqm->node_index); + ASSERT (node); + if (node->aux_offset) + { + fqm->frame_queue_dequeue_fn = + CLIB_MARCH_FN_VOID_POINTER (vlib_frame_queue_dequeue_with_aux_fn); + } + else + { + fqm->frame_queue_dequeue_fn = + CLIB_MARCH_FN_VOID_POINTER (vlib_frame_queue_dequeue_fn); + } + fqm->node_index = node_index; fqm->frame_queue_nelts = frame_queue_nelts; |