#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;
#define EMPTY_STRUCT {0}
+#define NUM_CRYPTO_MBUFS 16384
static void
algos_init (u32 n_mains)
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;
}
pool_name = format (0, "crypto_pool_numa%u%c", numa, 0);
- mp =
- rte_mempool_create ((char *) pool_name,
- conf->num_mbufs,
- crypto_op_len (), 512, pool_priv_size, NULL, NULL,
- crypto_op_init, NULL, numa, 0);
+ if (conf->num_crypto_mbufs == 0)
+ conf->num_crypto_mbufs = NUM_CRYPTO_MBUFS;
+
+ mp = rte_mempool_create ((char *) pool_name, conf->num_crypto_mbufs,
+ crypto_op_len (), 512, pool_priv_size, NULL, NULL,
+ crypto_op_init, NULL, numa, 0);
vec_free (pool_name);
}
- ipsec_register_esp_backend (vm, im, "dpdk backend",
- "dpdk-esp4-encrypt",
- "dpdk-esp4-decrypt",
- "dpdk-esp6-encrypt",
- "dpdk-esp6-decrypt",
- dpdk_ipsec_check_support, add_del_sa_session);
+ u32 idx = ipsec_register_esp_backend (vm, im, "dpdk backend",
+ "dpdk-esp4-encrypt",
+ "dpdk-esp4-decrypt",
+ "dpdk-esp6-encrypt",
+ "dpdk-esp6-decrypt",
+ dpdk_ipsec_check_support,
+ add_del_sa_session);
+ int rv = ipsec_select_esp_backend (im, idx);
+ ASSERT (rv == 0);
vlib_node_t *node = vlib_get_node_by_name (vm, (u8 *) "dpdk-crypto-input");
ASSERT (node);