- u32 bi0, next0;
- vlib_buffer_t *b0 = 0;
- struct rte_crypto_op *cop;
- struct rte_crypto_sym_op *sym_cop;
-
- cop = cops[0];
- cops += 1;
- n_cops -= 1;
- n_left_to_next -= 1;
-
- next0 = def_next_index;
-
- if (PREDICT_FALSE (cop->status != RTE_CRYPTO_OP_STATUS_SUCCESS))
- {
- next0 = DPDK_CRYPTO_INPUT_NEXT_DROP;
- vlib_node_increment_counter (vm, dpdk_crypto_input_node.index,
- DPDK_CRYPTO_INPUT_ERROR_COP_FAILED,
- 1);
- }
- cop->status = RTE_CRYPTO_OP_STATUS_NOT_PROCESSED;
-
- sym_cop = (struct rte_crypto_sym_op *) (cop + 1);
- b0 = vlib_buffer_from_rte_mbuf (sym_cop->m_src);
- bi0 = vlib_get_buffer_index (vm, b0);
-
- to_next[0] = bi0;
- to_next += 1;
-
- if (PREDICT_FALSE (b0->flags & VLIB_BUFFER_IS_TRACED))
- {
- vlib_trace_next_frame (vm, node, next0);
- dpdk_crypto_input_trace_t *tr =
- vlib_add_trace (vm, node, b0, sizeof (*tr));
- tr->cdev = qpd->dev_id;
- tr->qp = qpd->qp_id;
- tr->status = cop->status;
- tr->next_index = next0;
- tr->sa_idx = vnet_buffer (b0)->ipsec.sad_index;
- }
-
- vlib_validate_buffer_enqueue_x1 (vm, node, next_index, to_next,
- n_left_to_next, bi0, next0);
+ CLIB_PREFETCH (ops[4], CLIB_CACHE_LINE_BYTES, LOAD);
+ CLIB_PREFETCH (ops[5], CLIB_CACHE_LINE_BYTES, LOAD);
+ 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);