dpdk: fix compile
Type: fix Since DPDK is now compiled by meson but some compiles in VPP is missing. This patch fixes that. - Fixes QAT PMD not compiled. QAT meson compile, even for sym crypto PMD, is happened in drive/compress/qat. Originally all PMDs in compressdev is disabled by default. This patch fixes that. - Fixes DPDK plugin version detection. DPDK meson build generates rte_build_config.h, which containing all version information in build-dpdk instead of rte_config.h in make. This patch uses the file to detect version data. - Removed SW crypto PMD auto-creation in cryptodev engine. In case the AESNI-MB PMD required shared library is missing. Signed-off-by: Fan Zhang <roy.fan.zhang@intel.com> Change-Id: I7cd91abb5de303ff5e4c55cd05e011b57f883524
This commit is contained in:
Vendored
+3
-1
@@ -39,7 +39,9 @@ endif
|
||||
DPDK_DRIVERS_DISABLED := baseband/\*, \
|
||||
bus/dpaa, \
|
||||
bus/ifpga, \
|
||||
compress/\*, \
|
||||
compress/isal, \
|
||||
compress/octeontx, \
|
||||
compress/zlib, \
|
||||
crypto/ccp, \
|
||||
crypto/dpaa_sec, \
|
||||
crypto/openssl, \
|
||||
|
||||
@@ -31,11 +31,11 @@ endif()
|
||||
##############################################################################
|
||||
# Parse DPDK config and version header files
|
||||
##############################################################################
|
||||
|
||||
file(STRINGS ${DPDK_INCLUDE_DIR}/rte_config.h rte_config)
|
||||
file(STRINGS ${DPDK_INCLUDE_DIR}/rte_version.h rte_version)
|
||||
file(STRINGS ${DPDK_INCLUDE_DIR}/rte_build_config.h rte_build_config)
|
||||
|
||||
foreach(l ${rte_config} ${rte_version})
|
||||
foreach(l ${rte_config} ${rte_build_config} ${rte_version}})
|
||||
if (l MATCHES "^#define[\t ]*RTE_")
|
||||
STRING(REGEX REPLACE "^#define[\t ]*([A-Z1-9_]+)[\t ]*(.+)" "\\1;\\2" v "${l}")
|
||||
list(GET v 0 name)
|
||||
|
||||
@@ -1079,6 +1079,9 @@ cryptodev_count_queue (u32 numa)
|
||||
"as %u, ignored", info.device->name, numa);
|
||||
continue;
|
||||
}
|
||||
/* only device support symmetric crypto is used */
|
||||
if (!(info.feature_flags & RTE_CRYPTODEV_FF_SYMMETRIC_CRYPTO))
|
||||
continue;
|
||||
q_count += info.max_nb_queue_pairs;
|
||||
}
|
||||
|
||||
@@ -1096,13 +1099,17 @@ cryptodev_configure (vlib_main_t *vm, uint32_t cryptodev_id)
|
||||
u32 i;
|
||||
int ret;
|
||||
|
||||
cdev = rte_cryptodev_pmd_get_dev (cryptodev_id);
|
||||
rte_cryptodev_info_get (cryptodev_id, &info);
|
||||
|
||||
/* do not configure the device that does not support symmetric crypto */
|
||||
if (!(info.feature_flags & RTE_CRYPTODEV_FF_SYMMETRIC_CRYPTO))
|
||||
return 0;
|
||||
|
||||
ret = check_cryptodev_alg_support (cryptodev_id);
|
||||
if (ret != 0)
|
||||
return ret;
|
||||
|
||||
cdev = rte_cryptodev_pmd_get_dev (cryptodev_id);
|
||||
/** If the device is already started, we reuse it, otherwise configure
|
||||
* both the device and queue pair.
|
||||
**/
|
||||
@@ -1136,7 +1143,7 @@ cryptodev_configure (vlib_main_t *vm, uint32_t cryptodev_id)
|
||||
rte_cryptodev_start (i);
|
||||
}
|
||||
|
||||
for (i = 0; i < info.max_nb_queue_pairs; i++)
|
||||
for (i = 0; i < cdev->data->nb_queue_pairs; i++)
|
||||
{
|
||||
cryptodev_inst_t *cdev_inst;
|
||||
vec_add2(cmt->cryptodev_inst, cdev_inst, 1);
|
||||
@@ -1151,38 +1158,6 @@ cryptodev_configure (vlib_main_t *vm, uint32_t cryptodev_id)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
cryptodev_create_device (vlib_main_t *vm, u32 n_queues)
|
||||
{
|
||||
char name[RTE_CRYPTODEV_NAME_MAX_LEN], args[128];
|
||||
u32 dev_id = 0;
|
||||
int ret;
|
||||
|
||||
/* find an unused name to create the device */
|
||||
while (dev_id < RTE_CRYPTO_MAX_DEVS)
|
||||
{
|
||||
snprintf (name, RTE_CRYPTODEV_NAME_MAX_LEN - 1, "%s%u",
|
||||
RTE_STR (CRYPTODEV_DEF_DRIVE), dev_id);
|
||||
if (rte_cryptodev_get_dev_id (name) < 0)
|
||||
break;
|
||||
dev_id++;
|
||||
}
|
||||
|
||||
if (dev_id == RTE_CRYPTO_MAX_DEVS)
|
||||
return -1;
|
||||
|
||||
snprintf (args, 127, "socket_id=%u,max_nb_queue_pairs=%u",
|
||||
vm->numa_node, n_queues);
|
||||
|
||||
ret = rte_vdev_init(name, args);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
clib_warning ("Created cryptodev device %s (%s)", name, args);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
cryptodev_cmp (void *v1, void *v2)
|
||||
{
|
||||
@@ -1204,14 +1179,9 @@ cryptodev_probe (vlib_main_t *vm, u32 n_workers)
|
||||
u32 i;
|
||||
int ret;
|
||||
|
||||
/* create an AESNI_MB PMD so the service is available */
|
||||
/* If there is not enough queues, exit */
|
||||
if (n_queues < n_workers)
|
||||
{
|
||||
u32 q_num = max_pow2 (n_workers - n_queues);
|
||||
ret = cryptodev_create_device (vm, q_num);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
return -1;
|
||||
|
||||
for (i = 0; i < rte_cryptodev_count (); i++)
|
||||
{
|
||||
@@ -1229,17 +1199,11 @@ static int
|
||||
cryptodev_get_session_sz (vlib_main_t *vm, uint32_t n_workers)
|
||||
{
|
||||
u32 sess_data_sz = 0, i;
|
||||
int ret;
|
||||
|
||||
if (rte_cryptodev_count () == 0)
|
||||
{
|
||||
clib_warning ("No cryptodev device available, creating...");
|
||||
ret = cryptodev_create_device (vm, max_pow2 (n_workers));
|
||||
if (ret < 0)
|
||||
{
|
||||
clib_warning ("Failed");
|
||||
return ret;
|
||||
}
|
||||
clib_warning ("No cryptodev device available");
|
||||
return -1;
|
||||
}
|
||||
|
||||
for (i = 0; i < rte_cryptodev_count (); i++)
|
||||
|
||||
Reference in New Issue
Block a user