bdev/crypto: use rte_mempool for g_session_mp
DPDK 19.02 requires this mempool to be allocated via crypto-specific function which returns rte_mempool. To keep the amount of #ifs minimal, we'll use rte_mempool unconditionally. Change-Id: I3a09de41e237e168580bb92b574854e291e68a74 Signed-off-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com> Reviewed-on: https://review.gerrithub.io/c/443785 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
parent
40240f7e9d
commit
1a150069e1
@ -160,7 +160,7 @@ struct vbdev_crypto {
|
||||
static TAILQ_HEAD(, vbdev_crypto) g_vbdev_crypto = TAILQ_HEAD_INITIALIZER(g_vbdev_crypto);
|
||||
|
||||
/* Shared mempools between all devices on this system */
|
||||
static struct spdk_mempool *g_session_mp = NULL; /* session mempool */
|
||||
static struct rte_mempool *g_session_mp = NULL; /* session mempool */
|
||||
static struct spdk_mempool *g_mbuf_mp = NULL; /* mbuf mempool */
|
||||
static struct rte_mempool *g_crypto_op_mp = NULL; /* crypto operations, must be rte* mempool */
|
||||
|
||||
@ -207,6 +207,7 @@ vbdev_crypto_init_crypto_drivers(void)
|
||||
struct device_qp *dev_qp = NULL;
|
||||
unsigned int max_sess_size = 0, sess_size;
|
||||
uint16_t num_lcores = rte_lcore_count();
|
||||
uint32_t cache_size;
|
||||
|
||||
/* Only the first call, via RPC or module init should init the crypto drivers. */
|
||||
if (g_session_mp != NULL) {
|
||||
@ -240,9 +241,9 @@ vbdev_crypto_init_crypto_drivers(void)
|
||||
}
|
||||
}
|
||||
|
||||
g_session_mp = spdk_mempool_create("session_mp", NUM_SESSIONS, max_sess_size,
|
||||
SPDK_MEMPOOL_DEFAULT_CACHE_SIZE,
|
||||
SPDK_ENV_SOCKET_ID_ANY);
|
||||
cache_size = spdk_min(RTE_MEMPOOL_CACHE_MAX_SIZE, NUM_SESSIONS / 2 / num_lcores);
|
||||
g_session_mp = rte_mempool_create("session_mp", NUM_SESSIONS, max_sess_size, cache_size,
|
||||
0, NULL, NULL, NULL, NULL, SOCKET_ID_ANY, 0);
|
||||
if (g_session_mp == NULL) {
|
||||
SPDK_ERRLOG("Cannot create session pool max size 0x%x\n", max_sess_size);
|
||||
return -ENOMEM;
|
||||
@ -321,7 +322,7 @@ vbdev_crypto_init_crypto_drivers(void)
|
||||
*/
|
||||
for (j = 0; j < device->cdev_info.max_nb_queue_pairs; j++) {
|
||||
rc = rte_cryptodev_queue_pair_setup(cdev_id, j, &qp_conf, SOCKET_ID_ANY,
|
||||
(struct rte_mempool *)g_session_mp);
|
||||
g_session_mp);
|
||||
|
||||
if (rc < 0) {
|
||||
SPDK_ERRLOG("Failed to setup queue pair %u on "
|
||||
@ -375,7 +376,7 @@ error_create_op:
|
||||
spdk_mempool_free(g_mbuf_mp);
|
||||
g_mbuf_mp = NULL;
|
||||
error_create_mbuf:
|
||||
spdk_mempool_free(g_session_mp);
|
||||
rte_mempool_free(g_session_mp);
|
||||
g_session_mp = NULL;
|
||||
return rc;
|
||||
}
|
||||
@ -1324,7 +1325,7 @@ vbdev_crypto_finish(void)
|
||||
|
||||
rte_mempool_free(g_crypto_op_mp);
|
||||
spdk_mempool_free(g_mbuf_mp);
|
||||
spdk_mempool_free(g_session_mp);
|
||||
rte_mempool_free(g_session_mp);
|
||||
}
|
||||
|
||||
/* During init we'll be asked how much memory we'd like passed to us
|
||||
@ -1505,14 +1506,14 @@ vbdev_crypto_claim(struct spdk_bdev *bdev)
|
||||
}
|
||||
|
||||
/* Get sessions. */
|
||||
vbdev->session_encrypt = rte_cryptodev_sym_session_create((struct rte_mempool *)g_session_mp);
|
||||
vbdev->session_encrypt = rte_cryptodev_sym_session_create(g_session_mp);
|
||||
if (NULL == vbdev->session_encrypt) {
|
||||
SPDK_ERRLOG("ERROR trying to create crypto session!\n");
|
||||
rc = -EINVAL;
|
||||
goto error_session_en_create;
|
||||
}
|
||||
|
||||
vbdev->session_decrypt = rte_cryptodev_sym_session_create((struct rte_mempool *)g_session_mp);
|
||||
vbdev->session_decrypt = rte_cryptodev_sym_session_create(g_session_mp);
|
||||
if (NULL == vbdev->session_decrypt) {
|
||||
SPDK_ERRLOG("ERROR trying to create crypto session!\n");
|
||||
rc = -EINVAL;
|
||||
@ -1530,7 +1531,7 @@ vbdev_crypto_claim(struct spdk_bdev *bdev)
|
||||
vbdev->cipher_xform.cipher.op = RTE_CRYPTO_CIPHER_OP_ENCRYPT;
|
||||
rc = rte_cryptodev_sym_session_init(device->cdev_id, vbdev->session_encrypt,
|
||||
&vbdev->cipher_xform,
|
||||
(struct rte_mempool *)g_session_mp);
|
||||
g_session_mp);
|
||||
if (rc < 0) {
|
||||
SPDK_ERRLOG("ERROR trying to init encrypt session!\n");
|
||||
rc = -EINVAL;
|
||||
@ -1540,7 +1541,7 @@ vbdev_crypto_claim(struct spdk_bdev *bdev)
|
||||
vbdev->cipher_xform.cipher.op = RTE_CRYPTO_CIPHER_OP_DECRYPT;
|
||||
rc = rte_cryptodev_sym_session_init(device->cdev_id, vbdev->session_decrypt,
|
||||
&vbdev->cipher_xform,
|
||||
(struct rte_mempool *)g_session_mp);
|
||||
g_session_mp);
|
||||
if (rc < 0) {
|
||||
SPDK_ERRLOG("ERROR trying to init decrypt session!\n");
|
||||
rc = -EINVAL;
|
||||
|
@ -170,6 +170,12 @@ DEFINE_STUB(spdk_env_get_socket_id, uint32_t, (uint32_t core), 0);
|
||||
DEFINE_STUB(rte_cryptodev_count, uint8_t, (void), 0);
|
||||
DEFINE_STUB(rte_eal_get_configuration, struct rte_config *, (void), NULL);
|
||||
DEFINE_STUB_V(rte_mempool_free, (struct rte_mempool *mp));
|
||||
DEFINE_STUB(rte_mempool_create, struct rte_mempool *, (const char *name, unsigned n,
|
||||
unsigned elt_size,
|
||||
unsigned cache_size, unsigned private_data_size,
|
||||
rte_mempool_ctor_t *mp_init, void *mp_init_arg,
|
||||
rte_mempool_obj_cb_t *obj_init, void *obj_init_arg,
|
||||
int socket_id, unsigned flags), (struct rte_mempool *)1);
|
||||
DEFINE_STUB(rte_socket_id, unsigned, (void), 0);
|
||||
DEFINE_STUB(rte_crypto_op_pool_create, struct rte_mempool *,
|
||||
(const char *name, enum rte_crypto_op_type type, unsigned nb_elts,
|
||||
@ -684,7 +690,7 @@ test_initdrivers(void)
|
||||
{
|
||||
int rc;
|
||||
static struct spdk_mempool *orig_mbuf_mp;
|
||||
static struct spdk_mempool *orig_session_mp;
|
||||
static struct rte_mempool *orig_session_mp;
|
||||
|
||||
|
||||
/* These tests will alloc and free our g_mbuf_mp
|
||||
@ -770,7 +776,7 @@ test_initdrivers(void)
|
||||
CU_ASSERT(g_mbuf_mp != NULL);
|
||||
CU_ASSERT(g_session_mp != NULL);
|
||||
spdk_mempool_free(g_mbuf_mp);
|
||||
spdk_mempool_free(g_session_mp);
|
||||
rte_mempool_free(g_session_mp);
|
||||
CU_ASSERT(rc == 0);
|
||||
|
||||
/* restore our initial values. */
|
||||
|
Loading…
Reference in New Issue
Block a user