X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvlib%2Fnode.h;h=f7155aeda866af209c2aa21e72654ba1d3cf9e52;hb=1da08197eb4e3eba9e795ee14bcac8417506378b;hp=1bdb3bb7797e625a6d6e16574c657e554bf5298c;hpb=ef58758286e84d227377c447c7cf8fae82bdca94;p=vpp.git diff --git a/src/vlib/node.h b/src/vlib/node.h index 1bdb3bb7797..f7155aeda86 100644 --- a/src/vlib/node.h +++ b/src/vlib/node.h @@ -235,9 +235,6 @@ typedef struct u64 calls, vectors, clocks, suspends; u64 max_clock; u64 max_clock_n; - u64 perf_counter0_ticks; - u64 perf_counter1_ticks; - u64 perf_counter_vectors; } vlib_node_stats_t; #define foreach_vlib_node_state \ @@ -471,10 +468,6 @@ typedef struct vlib_node_runtime_t vlib_error_t *errors; /**< Vector of errors for this node. */ -#if __SIZEOF_POINTER__ == 4 - u8 pad[8]; -#endif - u32 clocks_since_last_overflow; /**< Number of clock cycles. */ u32 max_clock; /**< Maximum clock cycle for an @@ -488,10 +481,6 @@ typedef struct vlib_node_runtime_t u32 vectors_since_last_overflow; /**< Number of vector elements processed by this node. */ - u32 perf_counter0_ticks_since_last_overflow; /**< Perf counter 0 ticks */ - u32 perf_counter1_ticks_since_last_overflow; /**< Perf counter 1 ticks */ - u32 perf_counter_vectors_since_last_overflow; /**< Perf counter vectors */ - u32 next_frame_index; /**< Start of next frames for this node. */ @@ -512,6 +501,10 @@ typedef struct vlib_node_runtime_t u16 state; /**< Input node state. */ + u32 interrupt_data; /**< Data passed together with interrupt. + Valid only when state is + VLIB_NODE_STATE_INTERRUPT */ + u16 n_next_nodes; u16 cached_next_index; /**< Next frame index that vector @@ -674,6 +667,12 @@ vlib_timing_wheel_data_get_index (u32 d) return d / 2; } +typedef struct +{ + u32 node_runtime_index; + u32 data; +} vlib_node_interrupt_t; + typedef struct { /* Public nodes. */ @@ -690,7 +689,9 @@ typedef struct vlib_node_runtime_t *nodes_by_type[VLIB_N_NODE_TYPE]; /* Node runtime indices for input nodes with pending interrupts. */ - u32 *pending_interrupt_node_runtime_indices; + vlib_node_interrupt_t *pending_local_interrupts; + vlib_node_interrupt_t *pending_remote_interrupts; + volatile u32 *pending_remote_interrupts_notify; clib_spinlock_t pending_interrupt_lock; /* Input nodes are switched from/to interrupt to/from polling mode