From dde163d96f5051582e2e5b88b9c78169a827370c Mon Sep 17 00:00:00 2001 From: Maxime Peim Date: Thu, 15 Apr 2021 13:52:12 +0200 Subject: [PATCH] vlib: fix adaptive mode flag unset on nodes reforking The adaptive mode flag is being unset on nodes reforking. The flag is copied in order to avoid this issue. Old flags are copied for all nodes. Type: fix Signed-off-by: Maxime Peim Change-Id: Ic29b20fc0e4454ce4b3765c478f55bf650b4572a --- src/vlib/threads.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/vlib/threads.c b/src/vlib/threads.c index c65460e3234..7c796f5d0ea 100644 --- a/src/vlib/threads.c +++ b/src/vlib/threads.c @@ -1101,6 +1101,7 @@ vlib_worker_thread_node_refork (void) /* keep previous node state */ new_n_clone->state = old_n_clone->state; + new_n_clone->flags = old_n_clone->flags; } vec_add1 (nm_clone->nodes, new_n_clone); new_n_clone++; @@ -1132,6 +1133,7 @@ vlib_worker_thread_node_refork (void) { rt = vlib_node_get_runtime (vm_clone, old_rt[j].node_index); rt->state = old_rt[j].state; + rt->flags = old_rt[j].flags; clib_memcpy_fast (rt->runtime_data, old_rt[j].runtime_data, VLIB_NODE_RUNTIME_DATA_SIZE); } @@ -1162,6 +1164,7 @@ vlib_worker_thread_node_refork (void) { rt = vlib_node_get_runtime (vm_clone, old_rt[j].node_index); rt->state = old_rt[j].state; + rt->flags = old_rt[j].flags; clib_memcpy_fast (rt->runtime_data, old_rt[j].runtime_data, VLIB_NODE_RUNTIME_DATA_SIZE); } @@ -1189,6 +1192,7 @@ vlib_worker_thread_node_refork (void) { rt = vlib_node_get_runtime (vm_clone, old_rt[j].node_index); rt->state = old_rt[j].state; + rt->flags = old_rt[j].flags; clib_memcpy_fast (rt->runtime_data, old_rt[j].runtime_data, VLIB_NODE_RUNTIME_DATA_SIZE); } -- 2.16.6