|
FD.io VPP
v21.10.1-2-g0a485f517
Vector Packet Processing
|
Go to the documentation of this file.
22 #define _(sym,str) VNET_CRYPTO_ASYNC_ERROR_##sym,
29 #define _(sym,string) string,
34 #define foreach_crypto_dispatch_next \
35 _(ERR_DROP, "error-drop")
39 #define _(n, s) CRYPTO_DISPATCH_NEXT_##n,
82 u32 enqueue_thread_idx = ~0;
104 if (cf->
elts[
i].
status != VNET_CRYPTO_OP_STATUS_COMPLETED)
106 ct->
nexts[
i + n_cache] = CRYPTO_DISPATCH_NEXT_ERR_DROP;
118 &ct->
nexts, n_cache);
130 if (
b->
flags & VLIB_BUFFER_IS_TRACED)
143 cm->crypto_node_index);
147 enqueue_thread_idx = 0;
148 cf = (hdl) (
vm, &n_elts, &enqueue_thread_idx);
161 u32 n_dispatched = 0, n_cache = 0;
167 n_cache, &n_dispatched);
179 .name =
"crypto-dispatch",
181 .state = VLIB_NODE_STATE_DISABLED,
190 [CRYPTO_DISPATCH_NEXT_##n] = s,
vnet_crypto_async_frame_t *() vnet_crypto_frame_dequeue_t(vlib_main_t *vm, u32 *nb_elts_processed, u32 *enqueue_thread_idx)
static_always_inline void vnet_crypto_async_free_frame(vlib_main_t *vm, vnet_crypto_async_frame_t *frame)
vnet_crypto_async_frame_elt_t elts[VNET_CRYPTO_FRAME_SIZE]
u32 buffer_indices[VNET_CRYPTO_FRAME_SIZE]
#define foreach_crypto_op_status
vlib_main_t vlib_node_runtime_t vlib_frame_t * frame
static vlib_buffer_t * vlib_get_buffer(vlib_main_t *vm, u32 buffer_index)
Translate buffer index into buffer pointer.
vlib_main_t vlib_node_runtime_t * node
static_always_inline u32 crypto_dequeue_frame(vlib_main_t *vm, vlib_node_runtime_t *node, vnet_crypto_thread_t *ct, vnet_crypto_frame_dequeue_t *hdl, u32 n_cache, u32 *n_total)
vlib_main_t * vm
X-connect all packets from the HOST to the PHY.
u16 next_node_index[VNET_CRYPTO_FRAME_SIZE]
vnet_crypto_async_frame_state_t state
#define VNET_CRYPTO_ASYNC_DISPATCH_INTERRUPT
vlib_node_registration_t crypto_dispatch_node
(constructor) VLIB_REGISTER_NODE (crypto_dispatch_node)
static_always_inline void * clib_memcpy_fast(void *restrict dst, const void *restrict src, size_t n)
vnet_crypto_async_op_id_t op
vnet_crypto_op_status_t status
@ VNET_CRYPTO_ASYNC_N_ERROR
#define VLIB_NODE_FN(node)
#define VLIB_NODE_FLAG_TRACE
static_always_inline void vlib_buffer_enqueue_to_next_vec(vlib_main_t *vm, vlib_node_runtime_t *node, u32 **buffers, u16 **nexts, uword count)
#define static_always_inline
static void vlib_node_increment_counter(vlib_main_t *vm, u32 node_index, u32 counter_index, u64 increment)
vnet_feature_config_main_t * cm
#define vec_validate(V, I)
Make sure vector is long enough for given index (no header, unspecified alignment)
#define foreach_crypto_dispatch_next
struct _vlib_node_registration vlib_node_registration_t
vnet_crypto_main_t crypto_main
static u8 * format_crypto_dispatch_trace(u8 *s, va_list *args)
description fragment has unexpected format
static char * vnet_crypto_async_error_strings[]
static void vlib_node_set_interrupt_pending(vlib_main_t *vm, u32 node_index)
@ VNET_CRYPTO_FRAME_STATE_SUCCESS
vnet_crypto_op_status_t op_status
static vlib_main_t * vlib_get_main_by_index(u32 thread_index)
vnet_crypto_async_error_t
static void vnet_crypto_async_add_trace(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_buffer_t *b, vnet_crypto_async_op_id_t op_id, vnet_crypto_op_status_t status)
void * vlib_add_trace(vlib_main_t *vm, vlib_node_runtime_t *r, vlib_buffer_t *b, u32 n_data_bytes)
vnet_crypto_async_op_id_t
vnet_crypto_async_op_id_t op
#define clib_bitmap_foreach(i, ai)
Macro to iterate across set bits in a bitmap.
format_function_t format_vnet_crypto_async_op
format_function_t format_vnet_crypto_op_status
u32 flags
buffer flags: VLIB_BUFFER_FREE_LIST_INDEX_MASK: bits used to store free list index,...
VLIB buffer representation.
#define VLIB_REGISTER_NODE(x,...)