{
vlib_node_runtime_t *n;
n = vec_elt_at_index (nm->nodes_by_type[nt], int_num);
+ if (n->stop_timer_handle_plus_1)
+ vlib_node_unschedule (vm, n->node_index);
cpu_time_now = dispatch_node (
vm, n, nt,
/* frame */ 0, VLIB_NODE_DISPATCH_REASON_INTERRUPT,
{
vlib_node_runtime_t *nr =
vlib_node_get_runtime (vm, n->index);
- nr->stop_timer_handle_plus_1 = 0;
- cpu_time_now = dispatch_node (
- vm, nr, VLIB_NODE_TYPE_SCHED,
- /* frame */ 0, VLIB_NODE_DISPATCH_REASON_SCHED,
- cpu_time_now);
+ if (nr->stop_timer_handle_plus_1)
+ {
+ nr->stop_timer_handle_plus_1 = 0;
+ cpu_time_now = dispatch_node (
+ vm, nr, VLIB_NODE_TYPE_SCHED,
+ /* frame */ 0, VLIB_NODE_DISPATCH_REASON_SCHED,
+ cpu_time_now);
+ }
}
}
vec_reset_length (nm->sched_node_pending);