{
ind = " ";
res = vec_elt_at_index (dcm->resource, res_idx[0]);
- s = format (s, "%s%-20s dev-id %2u inbound-queue %2u outbound-queue %2u\n",
+ s = format (s, "%s%-20s dev-id %2u queue-pair %2u\n",
ind, vec_elt_at_index (dcm->dev, res->dev_id)->name,
- res->dev_id, res->qp_id, res->qp_id + 1);
+ res->dev_id, res->qp_id);
ind = " ";
if (verbose)
* @cliexstart{show dpdk crypto placement}
* vpp# show dpdk crypto placement
* Thread 1 (vpp_wk_0):
- * cryptodev_aesni_mb_p dev-id 0 inbound-queue 0 outbound-queue 1
- * cryptodev_aesni_gcm_ dev-id 1 inbound-queue 0 outbound-queue 1
+ * cryptodev_aesni_mb_p dev-id 0 queue-pair 0
+ * cryptodev_aesni_gcm_ dev-id 1 queue-pair 0
*
* Thread 2 (vpp_wk_1):
- * cryptodev_aesni_mb_p dev-id 0 inbound-queue 2 outbound-queue 3
- * cryptodev_aesni_gcm_ dev-id 1 inbound-queue 2 outbound-queue 3
+ * cryptodev_aesni_mb_p dev-id 0 queue-pair 1
+ * cryptodev_aesni_gcm_ dev-id 1 queue-pair 1
* @cliexend
?*/
/* *INDENT-OFF* */
* @cliexstart{show dpdk crypto placement verbose}
* vpp# show dpdk crypto placement verbose
* Thread 1 (vpp_wk_0):
- * cryptodev_aesni_mb_p dev-id 0 inbound-queue 0 outbound-queue 1
+ * cryptodev_aesni_mb_p dev-id 0 queue-pair 0
* Cipher: aes-cbc-128, aes-cbc-192, aes-cbc-256, aes-ctr-128, aes-ctr-192, aes-ctr-256
* Auth: md5-96, sha1-96, sha-256-128, sha-384-192, sha-512-256
- * cryptodev_aesni_gcm_ dev-id 1 inbound-queue 0 outbound-queue 1
+ * cryptodev_aesni_gcm_ dev-id 1 queue-pair 0
* Cipher: aes-gcm-128, aes-gcm-192, aes-gcm-256
* Auth:
*
* Thread 2 (vpp_wk_1):
- * cryptodev_aesni_mb_p dev-id 0 inbound-queue 2 outbound-queue 3
+ * cryptodev_aesni_mb_p dev-id 0 queue-pair 1
* Cipher: aes-cbc-128, aes-cbc-192, aes-cbc-256, aes-ctr-128, aes-ctr-192, aes-ctr-256
* Auth: md5-96, sha1-96, sha-256-128, sha-384-192, sha-512-256
- * cryptodev_aesni_gcm_ dev-id 1 inbound-queue 2 outbound-queue 3
+ * cryptodev_aesni_gcm_ dev-id 1 queue-pair 1
* Cipher: aes-gcm-128, aes-gcm-192, aes-gcm-256
* Auth:
*
static_always_inline u32
dpdk_crypto_dequeue (vlib_main_t * vm, vlib_node_runtime_t * node,
- crypto_resource_t * res, u8 outbound)
+ crypto_resource_t * res)
{
u32 thread_idx = vlib_get_thread_index ();
u8 numa = rte_socket_id ();
ops = cwm->ops;
n_ops = n_deq = rte_cryptodev_dequeue_burst (res->dev_id,
- res->qp_id + outbound,
+ res->qp_id,
ops, VLIB_FRAME_SIZE);
/* no op dequeued, do not proceed */
if (n_deq == 0)
return 0;
- res->inflights[outbound] -= n_ops;
+ res->inflights -= n_ops;
dpdk_crypto_input_trace (vm, node, ops, n_deq);
{
res = vec_elt_at_index (dcm->resource, res_idx[0]);
- if (res->inflights[0])
- n_deq += dpdk_crypto_dequeue (vm, node, res, 0);
+ if (res->inflights)
+ n_deq += dpdk_crypto_dequeue (vm, node, res);
- if (res->inflights[1])
- n_deq += dpdk_crypto_dequeue (vm, node, res, 1);
-
- if (PREDICT_FALSE (res->remove && !(res->inflights[0] || res->inflights[1])))
+ if (PREDICT_FALSE (res->remove && !(res->inflights)))
vec_add1 (remove, res_idx[0]);
}
/* *INDENT-ON* */
ESP_DECRYPT_ERROR_RX_PKTS,
from_frame->n_vectors);
- crypto_enqueue_ops (vm, cwm, 0, dpdk_esp6_decrypt_node.index,
+ crypto_enqueue_ops (vm, cwm, dpdk_esp6_decrypt_node.index,
ESP_DECRYPT_ERROR_ENQ_FAIL, numa);
}
else
ESP_DECRYPT_ERROR_RX_PKTS,
from_frame->n_vectors);
- crypto_enqueue_ops (vm, cwm, 0, dpdk_esp4_decrypt_node.index,
+ crypto_enqueue_ops (vm, cwm, dpdk_esp4_decrypt_node.index,
ESP_DECRYPT_ERROR_ENQ_FAIL, numa);
}
ESP_ENCRYPT_ERROR_RX_PKTS,
from_frame->n_vectors);
- crypto_enqueue_ops (vm, cwm, 1, dpdk_esp6_encrypt_node.index,
+ crypto_enqueue_ops (vm, cwm, dpdk_esp6_encrypt_node.index,
ESP_ENCRYPT_ERROR_ENQ_FAIL, numa);
}
else
ESP_ENCRYPT_ERROR_RX_PKTS,
from_frame->n_vectors);
- crypto_enqueue_ops (vm, cwm, 1, dpdk_esp4_encrypt_node.index,
+ crypto_enqueue_ops (vm, cwm, dpdk_esp4_encrypt_node.index,
ESP_ENCRYPT_ERROR_ENQ_FAIL, numa);
}
#include <vlib/node_funcs.h>
#include <dpdk/device/dpdk.h>
+#include <dpdk/buffer.h>
#include <dpdk/ipsec/ipsec.h>
dpdk_crypto_main_t dpdk_crypto_main;
continue;
}
- max_res_idx = (dev->max_qp / 2) - 1;
+ max_res_idx = dev->max_qp - 1;
vec_validate (dev->free_resources, max_res_idx);
(crypto_resource_t) EMPTY_STRUCT,
CLIB_CACHE_LINE_BYTES);
- for (j = 0; j <= max_res_idx; j++, res_idx++)
+ for (j = 0; j <= max_res_idx; j++)
{
- vec_elt (dev->free_resources, max_res_idx - j) = res_idx;
- res = &dcm->resource[res_idx];
+ vec_elt (dev->free_resources, max_res_idx - j) = res_idx + j;
+ res = &dcm->resource[res_idx + j];
res->dev_id = i;
res->drv_id = drv_id;
- res->qp_id = j * 2;
+ res->qp_id = j;
res->numa = dev->numa;
res->thread_idx = (u16) ~ 0;
}
u8 dev_id;
u8 numa;
u16 qp_id;
- u16 inflights[2];
+ u16 inflights;
u16 n_ops;
u16 __unused;
struct rte_crypto_op *ops[VLIB_FRAME_SIZE];
}
static_always_inline void
-crypto_enqueue_ops (vlib_main_t * vm, crypto_worker_main_t * cwm, u8 outbound,
+crypto_enqueue_ops (vlib_main_t * vm, crypto_worker_main_t * cwm,
u32 node_index, u32 error, u8 numa)
{
dpdk_crypto_main_t *dcm = &dpdk_crypto_main;
if (!res->n_ops)
continue;
- enq = rte_cryptodev_enqueue_burst (res->dev_id, res->qp_id + outbound,
+ enq = rte_cryptodev_enqueue_burst (res->dev_id, res->qp_id,
res->ops, res->n_ops);
- res->inflights[outbound] += enq;
+ res->inflights += enq;
if (PREDICT_FALSE (enq < res->n_ops))
{