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);
|
static TAILQ_HEAD(, vbdev_crypto) g_vbdev_crypto = TAILQ_HEAD_INITIALIZER(g_vbdev_crypto);
|
||||||
|
|
||||||
/* Shared mempools between all devices on this system */
|
/* 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 spdk_mempool *g_mbuf_mp = NULL; /* mbuf mempool */
|
||||||
static struct rte_mempool *g_crypto_op_mp = NULL; /* crypto operations, must be rte* 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;
|
struct device_qp *dev_qp = NULL;
|
||||||
unsigned int max_sess_size = 0, sess_size;
|
unsigned int max_sess_size = 0, sess_size;
|
||||||
uint16_t num_lcores = rte_lcore_count();
|
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. */
|
/* Only the first call, via RPC or module init should init the crypto drivers. */
|
||||||
if (g_session_mp != NULL) {
|
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,
|
cache_size = spdk_min(RTE_MEMPOOL_CACHE_MAX_SIZE, NUM_SESSIONS / 2 / num_lcores);
|
||||||
SPDK_MEMPOOL_DEFAULT_CACHE_SIZE,
|
g_session_mp = rte_mempool_create("session_mp", NUM_SESSIONS, max_sess_size, cache_size,
|
||||||
SPDK_ENV_SOCKET_ID_ANY);
|
0, NULL, NULL, NULL, NULL, SOCKET_ID_ANY, 0);
|
||||||
if (g_session_mp == NULL) {
|
if (g_session_mp == NULL) {
|
||||||
SPDK_ERRLOG("Cannot create session pool max size 0x%x\n", max_sess_size);
|
SPDK_ERRLOG("Cannot create session pool max size 0x%x\n", max_sess_size);
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
@ -321,7 +322,7 @@ vbdev_crypto_init_crypto_drivers(void)
|
|||||||
*/
|
*/
|
||||||
for (j = 0; j < device->cdev_info.max_nb_queue_pairs; j++) {
|
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,
|
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) {
|
if (rc < 0) {
|
||||||
SPDK_ERRLOG("Failed to setup queue pair %u on "
|
SPDK_ERRLOG("Failed to setup queue pair %u on "
|
||||||
@ -375,7 +376,7 @@ error_create_op:
|
|||||||
spdk_mempool_free(g_mbuf_mp);
|
spdk_mempool_free(g_mbuf_mp);
|
||||||
g_mbuf_mp = NULL;
|
g_mbuf_mp = NULL;
|
||||||
error_create_mbuf:
|
error_create_mbuf:
|
||||||
spdk_mempool_free(g_session_mp);
|
rte_mempool_free(g_session_mp);
|
||||||
g_session_mp = NULL;
|
g_session_mp = NULL;
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
@ -1324,7 +1325,7 @@ vbdev_crypto_finish(void)
|
|||||||
|
|
||||||
rte_mempool_free(g_crypto_op_mp);
|
rte_mempool_free(g_crypto_op_mp);
|
||||||
spdk_mempool_free(g_mbuf_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
|
/* 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. */
|
/* 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) {
|
if (NULL == vbdev->session_encrypt) {
|
||||||
SPDK_ERRLOG("ERROR trying to create crypto session!\n");
|
SPDK_ERRLOG("ERROR trying to create crypto session!\n");
|
||||||
rc = -EINVAL;
|
rc = -EINVAL;
|
||||||
goto error_session_en_create;
|
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) {
|
if (NULL == vbdev->session_decrypt) {
|
||||||
SPDK_ERRLOG("ERROR trying to create crypto session!\n");
|
SPDK_ERRLOG("ERROR trying to create crypto session!\n");
|
||||||
rc = -EINVAL;
|
rc = -EINVAL;
|
||||||
@ -1530,7 +1531,7 @@ vbdev_crypto_claim(struct spdk_bdev *bdev)
|
|||||||
vbdev->cipher_xform.cipher.op = RTE_CRYPTO_CIPHER_OP_ENCRYPT;
|
vbdev->cipher_xform.cipher.op = RTE_CRYPTO_CIPHER_OP_ENCRYPT;
|
||||||
rc = rte_cryptodev_sym_session_init(device->cdev_id, vbdev->session_encrypt,
|
rc = rte_cryptodev_sym_session_init(device->cdev_id, vbdev->session_encrypt,
|
||||||
&vbdev->cipher_xform,
|
&vbdev->cipher_xform,
|
||||||
(struct rte_mempool *)g_session_mp);
|
g_session_mp);
|
||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
SPDK_ERRLOG("ERROR trying to init encrypt session!\n");
|
SPDK_ERRLOG("ERROR trying to init encrypt session!\n");
|
||||||
rc = -EINVAL;
|
rc = -EINVAL;
|
||||||
@ -1540,7 +1541,7 @@ vbdev_crypto_claim(struct spdk_bdev *bdev)
|
|||||||
vbdev->cipher_xform.cipher.op = RTE_CRYPTO_CIPHER_OP_DECRYPT;
|
vbdev->cipher_xform.cipher.op = RTE_CRYPTO_CIPHER_OP_DECRYPT;
|
||||||
rc = rte_cryptodev_sym_session_init(device->cdev_id, vbdev->session_decrypt,
|
rc = rte_cryptodev_sym_session_init(device->cdev_id, vbdev->session_decrypt,
|
||||||
&vbdev->cipher_xform,
|
&vbdev->cipher_xform,
|
||||||
(struct rte_mempool *)g_session_mp);
|
g_session_mp);
|
||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
SPDK_ERRLOG("ERROR trying to init decrypt session!\n");
|
SPDK_ERRLOG("ERROR trying to init decrypt session!\n");
|
||||||
rc = -EINVAL;
|
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_cryptodev_count, uint8_t, (void), 0);
|
||||||
DEFINE_STUB(rte_eal_get_configuration, struct rte_config *, (void), NULL);
|
DEFINE_STUB(rte_eal_get_configuration, struct rte_config *, (void), NULL);
|
||||||
DEFINE_STUB_V(rte_mempool_free, (struct rte_mempool *mp));
|
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_socket_id, unsigned, (void), 0);
|
||||||
DEFINE_STUB(rte_crypto_op_pool_create, struct rte_mempool *,
|
DEFINE_STUB(rte_crypto_op_pool_create, struct rte_mempool *,
|
||||||
(const char *name, enum rte_crypto_op_type type, unsigned nb_elts,
|
(const char *name, enum rte_crypto_op_type type, unsigned nb_elts,
|
||||||
@ -684,7 +690,7 @@ test_initdrivers(void)
|
|||||||
{
|
{
|
||||||
int rc;
|
int rc;
|
||||||
static struct spdk_mempool *orig_mbuf_mp;
|
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
|
/* 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_mbuf_mp != NULL);
|
||||||
CU_ASSERT(g_session_mp != NULL);
|
CU_ASSERT(g_session_mp != NULL);
|
||||||
spdk_mempool_free(g_mbuf_mp);
|
spdk_mempool_free(g_mbuf_mp);
|
||||||
spdk_mempool_free(g_session_mp);
|
rte_mempool_free(g_session_mp);
|
||||||
CU_ASSERT(rc == 0);
|
CU_ASSERT(rc == 0);
|
||||||
|
|
||||||
/* restore our initial values. */
|
/* restore our initial values. */
|
||||||
|
Loading…
Reference in New Issue
Block a user