#include <vnet/ethernet/ethernet.h>
#include <vnet/ipsec/ipsec.h>
+#include <dpdk/buffer.h>
#include <dpdk/device/dpdk.h>
#include <dpdk/device/dpdk_priv.h>
#include <dpdk/ipsec/ipsec.h>
}
static_always_inline void
-dpdk_crypto_check_check_op (vlib_main_t * vm, vlib_node_runtime_t * node,
+dpdk_crypto_input_check_op (vlib_main_t * vm, vlib_node_runtime_t * node,
struct rte_crypto_op *op0, u16 * next)
{
if (PREDICT_FALSE (op0->status != RTE_CRYPTO_OP_STATUS_SUCCESS))
res->qp_id + outbound,
ops, VLIB_FRAME_SIZE);
+ /* no op dequeued, do not proceed */
+ if (n_deq == 0)
+ return 0;
+
res->inflights[outbound] -= n_ops;
dpdk_crypto_input_trace (vm, node, ops, n_deq);
CLIB_PREFETCH (ops[6], CLIB_CACHE_LINE_BYTES, LOAD);
CLIB_PREFETCH (ops[7], CLIB_CACHE_LINE_BYTES, LOAD);
- CLIB_PREFETCH (crypto_op_get_priv (ops[4]), CLIB_CACHE_LINE_BYTES,
- LOAD);
- CLIB_PREFETCH (crypto_op_get_priv (ops[5]), CLIB_CACHE_LINE_BYTES,
- LOAD);
- CLIB_PREFETCH (crypto_op_get_priv (ops[6]), CLIB_CACHE_LINE_BYTES,
- LOAD);
- CLIB_PREFETCH (crypto_op_get_priv (ops[7]), CLIB_CACHE_LINE_BYTES,
- LOAD);
+ CLIB_PREFETCH (crypto_op_get_priv (ops[4]),
+ CLIB_CACHE_LINE_BYTES, LOAD);
+ CLIB_PREFETCH (crypto_op_get_priv (ops[5]),
+ CLIB_CACHE_LINE_BYTES, LOAD);
+ CLIB_PREFETCH (crypto_op_get_priv (ops[6]),
+ CLIB_CACHE_LINE_BYTES, LOAD);
+ CLIB_PREFETCH (crypto_op_get_priv (ops[7]),
+ CLIB_CACHE_LINE_BYTES, LOAD);
}
op0 = ops[0];
next[2] = crypto_op_get_priv (op2)->next;
next[3] = crypto_op_get_priv (op3)->next;
- dpdk_crypto_check_check_op (vm, node, op0, next + 0);
- dpdk_crypto_check_check_op (vm, node, op0, next + 1);
- dpdk_crypto_check_check_op (vm, node, op0, next + 2);
- dpdk_crypto_check_check_op (vm, node, op0, next + 3);
+ dpdk_crypto_input_check_op (vm, node, op0, next + 0);
+ dpdk_crypto_input_check_op (vm, node, op1, next + 1);
+ dpdk_crypto_input_check_op (vm, node, op2, next + 2);
+ dpdk_crypto_input_check_op (vm, node, op3, next + 3);
b0 = vlib_buffer_from_rte_mbuf (op0->sym[0].m_src);
b1 = vlib_buffer_from_rte_mbuf (op1->sym[0].m_src);
next[0] = crypto_op_get_priv (op0)->next;
- dpdk_crypto_check_check_op (vm, node, op0, next + 0);
+ dpdk_crypto_input_check_op (vm, node, op0, next + 0);
/* XXX store bi0 and next0 in op0 private? */
b0 = vlib_buffer_from_rte_mbuf (op0->sym[0].m_src);