vlib: poll pre_input nodes only on main thread 38/5738/2
authorDamjan Marion <damarion@cisco.com>
Tue, 14 Mar 2017 10:10:00 +0000 (11:10 +0100)
committerDave Barach <openvpp@barachs.net>
Tue, 14 Mar 2017 12:03:07 +0000 (12:03 +0000)
Change-Id: I61464fd1610a9754693f31edd72f9fa1b6926511
Signed-off-by: Damjan Marion <damarion@cisco.com>
src/vlib/main.c

index 9176070..58e88fc 100644 (file)
@@ -1468,12 +1468,13 @@ vlib_main_or_worker_loop (vlib_main_t * vm, int is_main)
        }
 
       /* Process pre-input nodes. */
        }
 
       /* Process pre-input nodes. */
-      vec_foreach (n, nm->nodes_by_type[VLIB_NODE_TYPE_PRE_INPUT])
-       cpu_time_now = dispatch_node (vm, n,
-                                     VLIB_NODE_TYPE_PRE_INPUT,
-                                     VLIB_NODE_STATE_POLLING,
-                                     /* frame */ 0,
-                                     cpu_time_now);
+      if (is_main)
+       vec_foreach (n, nm->nodes_by_type[VLIB_NODE_TYPE_PRE_INPUT])
+         cpu_time_now = dispatch_node (vm, n,
+                                       VLIB_NODE_TYPE_PRE_INPUT,
+                                       VLIB_NODE_STATE_POLLING,
+                                       /* frame */ 0,
+                                       cpu_time_now);
 
       /* Next process input nodes. */
       vec_foreach (n, nm->nodes_by_type[VLIB_NODE_TYPE_INPUT])
 
       /* Next process input nodes. */
       vec_foreach (n, nm->nodes_by_type[VLIB_NODE_TYPE_INPUT])