bdev/crypto: Continue init after AESNI_MB failure
- Continue init of the other crypto devices (mlx5) after failure of rte_vdev_init(AESNI_MB) in vbdev_crypto_init_crypto_drivers(). It simply may not be enabled in DPDK because it requires IPSec_MB>=1.0 installed in the system. Reproduces with --with-dpdk=dpdk/install option used, when the target DPDK is built without control of IPSec version from the SPDK side. - Updated crypto_ut to test the new behavior of error handling from rte_vdev_init(AESNI_MB) in vbdev_crypto_init_crypto_drivers(). Signed-off-by: Yuriy Umanets <yumanets@nvidia.com> Change-Id: Icd4db8877afe87db8166c40d6e7b414cd43c9c25 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/11624 Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com> Community-CI: Mellanox Build Bot Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Paul Luse <paul.e.luse@intel.com> Reviewed-by: Shuhei Matsumoto <smatsumoto@nvidia.com> Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
This commit is contained in:
parent
a837ea37da
commit
8ecf8dfcd7
@ -395,7 +395,7 @@ vbdev_crypto_init_crypto_drivers(void)
|
||||
{
|
||||
uint8_t cdev_count;
|
||||
uint8_t cdev_id;
|
||||
int i, rc = 0;
|
||||
int i, rc;
|
||||
struct vbdev_dev *device;
|
||||
struct vbdev_dev *tmp_dev;
|
||||
struct device_qp *dev_qp;
|
||||
@ -412,8 +412,9 @@ vbdev_crypto_init_crypto_drivers(void)
|
||||
snprintf(aesni_args, sizeof(aesni_args), "max_nb_queue_pairs=%d", AESNI_MB_NUM_QP);
|
||||
rc = rte_vdev_init(AESNI_MB, aesni_args);
|
||||
if (rc) {
|
||||
SPDK_ERRLOG("error creating virtual PMD %s\n", AESNI_MB);
|
||||
return -EINVAL;
|
||||
SPDK_NOTICELOG("Failed to create virtual PMD %s: error %d. "
|
||||
"Possibly %s is not supported by DPDK library. "
|
||||
"Keep going...\n", AESNI_MB, rc, AESNI_MB);
|
||||
}
|
||||
|
||||
/* If we have no crypto devices, there's no reason to continue. */
|
||||
|
@ -874,17 +874,8 @@ test_initdrivers(void)
|
||||
CU_ASSERT(g_session_mp == NULL);
|
||||
CU_ASSERT(g_session_mp_priv == NULL);
|
||||
|
||||
/* Test failure of DPDK dev init. */
|
||||
MOCK_SET(rte_cryptodev_count, 2);
|
||||
MOCK_SET(rte_vdev_init, -1);
|
||||
rc = vbdev_crypto_init_crypto_drivers();
|
||||
CU_ASSERT(rc == -EINVAL);
|
||||
CU_ASSERT(g_mbuf_mp == NULL);
|
||||
CU_ASSERT(g_session_mp == NULL);
|
||||
CU_ASSERT(g_session_mp_priv == NULL);
|
||||
MOCK_SET(rte_vdev_init, 0);
|
||||
|
||||
/* Can't create session pool. */
|
||||
MOCK_SET(rte_cryptodev_count, 2);
|
||||
MOCK_SET(spdk_mempool_create, NULL);
|
||||
rc = vbdev_crypto_init_crypto_drivers();
|
||||
CU_ASSERT(rc == -ENOMEM);
|
||||
@ -964,6 +955,22 @@ test_initdrivers(void)
|
||||
init_cleanup();
|
||||
CU_ASSERT(rc == 0);
|
||||
|
||||
/* Test failure of DPDK dev init. By now it is not longer an error
|
||||
* situation for entire crypto framework. */
|
||||
MOCK_SET(rte_cryptodev_count, 2);
|
||||
MOCK_SET(rte_cryptodev_device_count_by_driver, 2);
|
||||
MOCK_SET(rte_vdev_init, -1);
|
||||
MOCK_CLEARED_ASSERT(spdk_mempool_create);
|
||||
MOCK_SET(rte_cryptodev_info_get, MOCK_INFO_GET_1QP_QAT);
|
||||
rc = vbdev_crypto_init_crypto_drivers();
|
||||
CU_ASSERT(rc == 0);
|
||||
CU_ASSERT(g_mbuf_mp != NULL);
|
||||
CU_ASSERT(g_session_mp != NULL);
|
||||
CU_ASSERT(g_session_mp_priv != NULL);
|
||||
init_cleanup();
|
||||
MOCK_SET(rte_vdev_init, 0);
|
||||
MOCK_CLEAR(rte_cryptodev_device_count_by_driver);
|
||||
|
||||
/* restore our initial values. */
|
||||
g_mbuf_mp = orig_mbuf_mp;
|
||||
g_session_mp = orig_session_mp;
|
||||
|
Loading…
Reference in New Issue
Block a user