From patchwork Wed Jan 11 17:13:06 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Fan Zhang X-Patchwork-Id: 19149 X-Patchwork-Delegate: pablo.de.lara.guarch@intel.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id 46D35F936; Wed, 11 Jan 2017 18:13:07 +0100 (CET) Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by dpdk.org (Postfix) with ESMTP id 24A9AF91C for ; Wed, 11 Jan 2017 18:12:57 +0100 (CET) Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga103.fm.intel.com with ESMTP; 11 Jan 2017 09:12:51 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.33,346,1477983600"; d="scan'208";a="47875517" Received: from silpixa00381633.ir.intel.com (HELO silpixa00381633.ger.corp.intel.com) ([10.237.222.114]) by orsmga004.jf.intel.com with ESMTP; 11 Jan 2017 09:12:50 -0800 From: Fan Zhang To: dev@dpdk.org Cc: pablo.de.lara.guarch@intel.com Date: Wed, 11 Jan 2017 17:13:06 +0000 Message-Id: <1484154786-91531-3-git-send-email-roy.fan.zhang@intel.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1484154786-91531-1-git-send-email-roy.fan.zhang@intel.com> References: <1484154786-91531-1-git-send-email-roy.fan.zhang@intel.com> Subject: [dpdk-dev] [PATCH 2/2] crypto: add user defined name initializing parameter parsing to software PMDs X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" This patch adds user defined name parsing feature to software PMDs. Signed-off-by: Fan Zhang --- drivers/crypto/aesni_gcm/aesni_gcm_pmd.c | 58 ++++++++++------------------ drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c | 61 ++++++++++-------------------- drivers/crypto/kasumi/rte_kasumi_pmd.c | 58 +++++++++++----------------- drivers/crypto/null/null_crypto_pmd.c | 55 ++++++++++----------------- drivers/crypto/openssl/rte_openssl_pmd.c | 55 ++++++++++----------------- drivers/crypto/snow3g/rte_snow3g_pmd.c | 59 +++++++++++------------------ drivers/crypto/zuc/rte_zuc_pmd.c | 59 +++++++++++------------------ 7 files changed, 148 insertions(+), 257 deletions(-) diff --git a/drivers/crypto/aesni_gcm/aesni_gcm_pmd.c b/drivers/crypto/aesni_gcm/aesni_gcm_pmd.c index dba5e15..ddb2e0e 100644 --- a/drivers/crypto/aesni_gcm/aesni_gcm_pmd.c +++ b/drivers/crypto/aesni_gcm/aesni_gcm_pmd.c @@ -43,27 +43,6 @@ #include "aesni_gcm_pmd_private.h" -/** - * Global static parameter used to create a unique name for each AES-NI multi - * buffer crypto device. - */ -static unsigned unique_name_id; - -static inline int -create_unique_device_name(char *name, size_t size) -{ - int ret; - - if (name == NULL) - return -EINVAL; - - ret = snprintf(name, size, "%s_%u", RTE_STR(CRYPTODEV_NAME_AESNI_GCM_PMD), - unique_name_id++); - if (ret < 0) - return ret; - return 0; -} - static int aesni_gcm_calculate_hash_sub_key(uint8_t *hsubkey, unsigned hsubkey_length, uint8_t *aeskey, unsigned aeskey_length) @@ -407,14 +386,23 @@ aesni_gcm_pmd_dequeue_burst(void *queue_pair, static int aesni_gcm_remove(const char *name); static int -aesni_gcm_create(const char *name, - struct rte_crypto_vdev_init_params *init_params) +aesni_gcm_create(struct rte_crypto_vdev_init_params *init_params) { struct rte_cryptodev *dev; - char crypto_dev_name[RTE_CRYPTODEV_NAME_MAX_LEN]; struct aesni_gcm_private *internals; enum aesni_gcm_vector_mode vector_mode; + if (init_params->name[0] == '\0') { + int ret = rte_cryptodev_pmd_create_dev_name( + init_params->name, + RTE_STR(CRYPTODEV_NAME_AESNI_GCM_PMD)); + + if (ret < 0) { + GCM_LOG_ERR("failed to create unique name"); + return ret; + } + } + /* Check CPU for support for AES instruction set */ if (!rte_cpu_get_flag_enabled(RTE_CPUFLAG_AES)) { GCM_LOG_ERR("AES instructions not supported by CPU"); @@ -433,15 +421,7 @@ aesni_gcm_create(const char *name, return -EFAULT; } - /* create a unique device name */ - if (create_unique_device_name(crypto_dev_name, - RTE_CRYPTODEV_NAME_MAX_LEN) != 0) { - GCM_LOG_ERR("failed to create unique cryptodev name"); - return -EINVAL; - } - - - dev = rte_cryptodev_pmd_virtual_dev_init(crypto_dev_name, + dev = rte_cryptodev_pmd_virtual_dev_init(init_params->name, sizeof(struct aesni_gcm_private), init_params->socket_id); if (dev == NULL) { GCM_LOG_ERR("failed to create cryptodev vdev"); @@ -484,9 +464,9 @@ aesni_gcm_create(const char *name, return 0; init_error: - GCM_LOG_ERR("driver %s: create failed", name); + GCM_LOG_ERR("driver %s: create failed", init_params->name); - aesni_gcm_remove(crypto_dev_name); + aesni_gcm_remove(init_params->name); return -EFAULT; } @@ -496,19 +476,23 @@ aesni_gcm_probe(const char *name, const char *input_args) struct rte_crypto_vdev_init_params init_params = { RTE_CRYPTODEV_VDEV_DEFAULT_MAX_NB_QUEUE_PAIRS, RTE_CRYPTODEV_VDEV_DEFAULT_MAX_NB_SESSIONS, - rte_socket_id() + rte_socket_id(), + {0} }; rte_cryptodev_parse_vdev_init_params(&init_params, input_args); RTE_LOG(INFO, PMD, "Initialising %s on NUMA node %d\n", name, init_params.socket_id); + if (init_params.name[0] != '\0') + RTE_LOG(INFO, PMD, " User defined name = %s\n", + init_params.name); RTE_LOG(INFO, PMD, " Max number of queue pairs = %d\n", init_params.max_nb_queue_pairs); RTE_LOG(INFO, PMD, " Max number of sessions = %d\n", init_params.max_nb_sessions); - return aesni_gcm_create(name, &init_params); + return aesni_gcm_create(&init_params); } static int diff --git a/drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c b/drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c index f07cd07..26dc05e 100644 --- a/drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c +++ b/drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c @@ -40,27 +40,6 @@ #include "rte_aesni_mb_pmd_private.h" -/** - * Global static parameter used to create a unique name for each AES-NI multi - * buffer crypto device. - */ -static unsigned unique_name_id; - -static inline int -create_unique_device_name(char *name, size_t size) -{ - int ret; - - if (name == NULL) - return -EINVAL; - - ret = snprintf(name, size, "%s_%u", RTE_STR(CRYPTODEV_NAME_AESNI_MB_PMD), - unique_name_id++); - if (ret < 0) - return ret; - return 0; -} - typedef void (*hash_one_block_t)(void *data, void *digest); typedef void (*aes_keyexp_t)(void *key, void *enc_exp_keys, void *dec_exp_keys); @@ -598,18 +577,21 @@ aesni_mb_pmd_dequeue_burst(void *queue_pair, struct rte_crypto_op **ops, static int cryptodev_aesni_mb_remove(const char *name); static int -cryptodev_aesni_mb_create(const char *name, - struct rte_crypto_vdev_init_params *init_params) +cryptodev_aesni_mb_create(struct rte_crypto_vdev_init_params *init_params) { struct rte_cryptodev *dev; - char crypto_dev_name[RTE_CRYPTODEV_NAME_MAX_LEN]; struct aesni_mb_private *internals; enum aesni_mb_vector_mode vector_mode; - /* Check CPU for support for AES instruction set */ - if (!rte_cpu_get_flag_enabled(RTE_CPUFLAG_AES)) { - MB_LOG_ERR("AES instructions not supported by CPU"); - return -EFAULT; + if (init_params->name[0] == '\0') { + int ret = rte_cryptodev_pmd_create_dev_name( + init_params->name, + RTE_STR(CRYPTODEV_NAME_AESNI_MB_PMD)); + + if (ret < 0) { + MB_LOG_ERR("failed to create unique name"); + return ret; + } } /* Check CPU for supported vector instruction set */ @@ -624,15 +606,7 @@ cryptodev_aesni_mb_create(const char *name, return -EFAULT; } - /* create a unique device name */ - if (create_unique_device_name(crypto_dev_name, - RTE_CRYPTODEV_NAME_MAX_LEN) != 0) { - MB_LOG_ERR("failed to create unique cryptodev name"); - return -EINVAL; - } - - - dev = rte_cryptodev_pmd_virtual_dev_init(crypto_dev_name, + dev = rte_cryptodev_pmd_virtual_dev_init(init_params->name, sizeof(struct aesni_mb_private), init_params->socket_id); if (dev == NULL) { MB_LOG_ERR("failed to create cryptodev vdev"); @@ -673,9 +647,10 @@ cryptodev_aesni_mb_create(const char *name, return 0; init_error: - MB_LOG_ERR("driver %s: cryptodev_aesni_create failed", name); + MB_LOG_ERR("driver %s: cryptodev_aesni_create failed", + init_params->name); - cryptodev_aesni_mb_remove(crypto_dev_name); + cryptodev_aesni_mb_remove(init_params->name); return -EFAULT; } @@ -687,19 +662,23 @@ cryptodev_aesni_mb_probe(const char *name, struct rte_crypto_vdev_init_params init_params = { RTE_CRYPTODEV_VDEV_DEFAULT_MAX_NB_QUEUE_PAIRS, RTE_CRYPTODEV_VDEV_DEFAULT_MAX_NB_SESSIONS, - rte_socket_id() + rte_socket_id(), + "" }; rte_cryptodev_parse_vdev_init_params(&init_params, input_args); RTE_LOG(INFO, PMD, "Initialising %s on NUMA node %d\n", name, init_params.socket_id); + if (init_params.name[0] != '\0') + RTE_LOG(INFO, PMD, " User defined name = %s\n", + init_params.name); RTE_LOG(INFO, PMD, " Max number of queue pairs = %d\n", init_params.max_nb_queue_pairs); RTE_LOG(INFO, PMD, " Max number of sessions = %d\n", init_params.max_nb_sessions); - return cryptodev_aesni_mb_create(name, &init_params); + return cryptodev_aesni_mb_create(&init_params); } static int diff --git a/drivers/crypto/kasumi/rte_kasumi_pmd.c b/drivers/crypto/kasumi/rte_kasumi_pmd.c index b119da2..c38c851 100644 --- a/drivers/crypto/kasumi/rte_kasumi_pmd.c +++ b/drivers/crypto/kasumi/rte_kasumi_pmd.c @@ -47,27 +47,6 @@ #define KASUMI_MAX_BURST 4 #define BYTE_LEN 8 -/** - * Global static parameter used to create a unique name for each KASUMI - * crypto device. - */ -static unsigned unique_name_id; - -static inline int -create_unique_device_name(char *name, size_t size) -{ - int ret; - - if (name == NULL) - return -EINVAL; - - ret = snprintf(name, size, "%s_%u", RTE_STR(CRYPTODEV_NAME_KASUMI_PMD), - unique_name_id++); - if (ret < 0) - return ret; - return 0; -} - /** Get xform chain order. */ static enum kasumi_operation kasumi_get_mode(const struct rte_crypto_sym_xform *xform) @@ -559,14 +538,23 @@ kasumi_pmd_dequeue_burst(void *queue_pair, static int cryptodev_kasumi_remove(const char *name); static int -cryptodev_kasumi_create(const char *name, - struct rte_crypto_vdev_init_params *init_params) +cryptodev_kasumi_create(struct rte_crypto_vdev_init_params *init_params) { struct rte_cryptodev *dev; - char crypto_dev_name[RTE_CRYPTODEV_NAME_MAX_LEN]; struct kasumi_private *internals; uint64_t cpu_flags = 0; + if (init_params->name[0] == '\0') { + int ret = rte_cryptodev_pmd_create_dev_name( + init_params->name, + RTE_STR(CRYPTODEV_NAME_KASUMI_PMD)); + + if (ret < 0) { + KASUMI_LOG_ERR("failed to create unique name"); + return ret; + } + } + /* Check CPU for supported vector instruction set */ if (rte_cpu_get_flag_enabled(RTE_CPUFLAG_AVX)) cpu_flags |= RTE_CRYPTODEV_FF_CPU_AVX; @@ -577,14 +565,7 @@ cryptodev_kasumi_create(const char *name, return -EFAULT; } - /* Create a unique device name. */ - if (create_unique_device_name(crypto_dev_name, - RTE_CRYPTODEV_NAME_MAX_LEN) != 0) { - KASUMI_LOG_ERR("failed to create unique cryptodev name"); - return -EINVAL; - } - - dev = rte_cryptodev_pmd_virtual_dev_init(crypto_dev_name, + dev = rte_cryptodev_pmd_virtual_dev_init(init_params->name, sizeof(struct kasumi_private), init_params->socket_id); if (dev == NULL) { KASUMI_LOG_ERR("failed to create cryptodev vdev"); @@ -609,9 +590,10 @@ cryptodev_kasumi_create(const char *name, return 0; init_error: - KASUMI_LOG_ERR("driver %s: cryptodev_kasumi_create failed", name); + KASUMI_LOG_ERR("driver %s: cryptodev_kasumi_create failed", + init_params->name); - cryptodev_kasumi_remove(crypto_dev_name); + cryptodev_kasumi_remove(init_params->name); return -EFAULT; } @@ -622,19 +604,23 @@ cryptodev_kasumi_probe(const char *name, struct rte_crypto_vdev_init_params init_params = { RTE_CRYPTODEV_VDEV_DEFAULT_MAX_NB_QUEUE_PAIRS, RTE_CRYPTODEV_VDEV_DEFAULT_MAX_NB_SESSIONS, - rte_socket_id() + rte_socket_id(), + {0} }; rte_cryptodev_parse_vdev_init_params(&init_params, input_args); RTE_LOG(INFO, PMD, "Initialising %s on NUMA node %d\n", name, init_params.socket_id); + if (init_params.name[0] != '\0') + RTE_LOG(INFO, PMD, " User defined name = %s\n", + init_params.name); RTE_LOG(INFO, PMD, " Max number of queue pairs = %d\n", init_params.max_nb_queue_pairs); RTE_LOG(INFO, PMD, " Max number of sessions = %d\n", init_params.max_nb_sessions); - return cryptodev_kasumi_create(name, &init_params); + return cryptodev_kasumi_create(&init_params); } static int diff --git a/drivers/crypto/null/null_crypto_pmd.c b/drivers/crypto/null/null_crypto_pmd.c index c69606b..ce60470 100644 --- a/drivers/crypto/null/null_crypto_pmd.c +++ b/drivers/crypto/null/null_crypto_pmd.c @@ -38,27 +38,6 @@ #include "null_crypto_pmd_private.h" -/** - * Global static parameter used to create a unique name for each crypto device. - */ -static unsigned unique_name_id; - -static inline int -create_unique_device_name(char *name, size_t size) -{ - int ret; - - if (name == NULL) - return -EINVAL; - - ret = snprintf(name, size, "%s_%u", RTE_STR(CRYPTODEV_NAME_NULL_PMD), - unique_name_id++); - if (ret < 0) - return ret; - return 0; -} - - /** verify and set session parameters */ int null_crypto_set_session_parameters( @@ -186,21 +165,24 @@ static int cryptodev_null_remove(const char *name); /** Create crypto device */ static int -cryptodev_null_create(const char *name, - struct rte_crypto_vdev_init_params *init_params) +cryptodev_null_create(struct rte_crypto_vdev_init_params *init_params) { struct rte_cryptodev *dev; - char crypto_dev_name[RTE_CRYPTODEV_NAME_MAX_LEN]; struct null_crypto_private *internals; - /* create a unique device name */ - if (create_unique_device_name(crypto_dev_name, - RTE_CRYPTODEV_NAME_MAX_LEN) != 0) { - NULL_CRYPTO_LOG_ERR("failed to create unique cryptodev name"); - return -EINVAL; + if (init_params->name[0] == '\0') { + int ret = rte_cryptodev_pmd_create_dev_name( + init_params->name, + RTE_STR(CRYPTODEV_NAME_NULL_PMD)); + + if (ret < 0) { + NULL_CRYPTO_LOG_ERR("failed to create unique " + "name"); + return ret; + } } - dev = rte_cryptodev_pmd_virtual_dev_init(crypto_dev_name, + dev = rte_cryptodev_pmd_virtual_dev_init(init_params->name, sizeof(struct null_crypto_private), init_params->socket_id); if (dev == NULL) { @@ -226,8 +208,9 @@ cryptodev_null_create(const char *name, return 0; init_error: - NULL_CRYPTO_LOG_ERR("driver %s: cryptodev_null_create failed", name); - cryptodev_null_remove(crypto_dev_name); + NULL_CRYPTO_LOG_ERR("driver %s: cryptodev_null_create failed", + init_params->name); + cryptodev_null_remove(init_params->name); return -EFAULT; } @@ -240,19 +223,23 @@ cryptodev_null_probe(const char *name, struct rte_crypto_vdev_init_params init_params = { RTE_CRYPTODEV_VDEV_DEFAULT_MAX_NB_QUEUE_PAIRS, RTE_CRYPTODEV_VDEV_DEFAULT_MAX_NB_SESSIONS, - rte_socket_id() + rte_socket_id(), + {0} }; rte_cryptodev_parse_vdev_init_params(&init_params, input_args); RTE_LOG(INFO, PMD, "Initialising %s on NUMA node %d\n", name, init_params.socket_id); + if (init_params.name[0] != '\0') + RTE_LOG(INFO, PMD, " User defined name = %s\n", + init_params.name); RTE_LOG(INFO, PMD, " Max number of queue pairs = %d\n", init_params.max_nb_queue_pairs); RTE_LOG(INFO, PMD, " Max number of sessions = %d\n", init_params.max_nb_sessions); - return cryptodev_null_create(name, &init_params); + return cryptodev_null_create(&init_params); } /** Uninitialise null crypto device */ diff --git a/drivers/crypto/openssl/rte_openssl_pmd.c b/drivers/crypto/openssl/rte_openssl_pmd.c index 5f8fa33..c556a9e 100644 --- a/drivers/crypto/openssl/rte_openssl_pmd.c +++ b/drivers/crypto/openssl/rte_openssl_pmd.c @@ -47,28 +47,6 @@ static int cryptodev_openssl_remove(const char *name); /*----------------------------------------------------------------------------*/ /** - * Global static parameter used to create a unique name for each - * OPENSSL crypto device. - */ -static unsigned int unique_name_id; - -static inline int -create_unique_device_name(char *name, size_t size) -{ - int ret; - - if (name == NULL) - return -EINVAL; - - ret = snprintf(name, size, "%s_%u", - RTE_STR(CRYPTODEV_NAME_OPENSSL_PMD), - unique_name_id++); - if (ret < 0) - return ret; - return 0; -} - -/** * Increment counter by 1 * Counter is 64 bit array, big-endian */ @@ -964,21 +942,23 @@ openssl_pmd_dequeue_burst(void *queue_pair, struct rte_crypto_op **ops, /** Create OPENSSL crypto device */ static int -cryptodev_openssl_create(const char *name, - struct rte_crypto_vdev_init_params *init_params) +cryptodev_openssl_create(struct rte_crypto_vdev_init_params *init_params) { struct rte_cryptodev *dev; - char crypto_dev_name[RTE_CRYPTODEV_NAME_MAX_LEN]; struct openssl_private *internals; - /* create a unique device name */ - if (create_unique_device_name(crypto_dev_name, - RTE_CRYPTODEV_NAME_MAX_LEN) != 0) { - OPENSSL_LOG_ERR("failed to create unique cryptodev name"); - return -EINVAL; + if (init_params->name[0] == '\0') { + int ret = rte_cryptodev_pmd_create_dev_name( + init_params->name, + RTE_STR(CRYPTODEV_NAME_OPENSSL_PMD)); + + if (ret < 0) { + OPENSSL_LOG_ERR("failed to create unique name"); + return ret; + } } - dev = rte_cryptodev_pmd_virtual_dev_init(crypto_dev_name, + dev = rte_cryptodev_pmd_virtual_dev_init(init_params->name, sizeof(struct openssl_private), init_params->socket_id); if (dev == NULL) { @@ -1006,9 +986,10 @@ cryptodev_openssl_create(const char *name, return 0; init_error: - OPENSSL_LOG_ERR("driver %s: cryptodev_openssl_create failed", name); + OPENSSL_LOG_ERR("driver %s: cryptodev_openssl_create failed", + init_params->name); - cryptodev_openssl_remove(crypto_dev_name); + cryptodev_openssl_remove(init_params->name); return -EFAULT; } @@ -1020,19 +1001,23 @@ cryptodev_openssl_probe(const char *name, struct rte_crypto_vdev_init_params init_params = { RTE_CRYPTODEV_VDEV_DEFAULT_MAX_NB_QUEUE_PAIRS, RTE_CRYPTODEV_VDEV_DEFAULT_MAX_NB_SESSIONS, - rte_socket_id() + rte_socket_id(), + {0} }; rte_cryptodev_parse_vdev_init_params(&init_params, input_args); RTE_LOG(INFO, PMD, "Initialising %s on NUMA node %d\n", name, init_params.socket_id); + if (init_params.name[0] != '\0') + RTE_LOG(INFO, PMD, " User defined name = %s\n", + init_params.name); RTE_LOG(INFO, PMD, " Max number of queue pairs = %d\n", init_params.max_nb_queue_pairs); RTE_LOG(INFO, PMD, " Max number of sessions = %d\n", init_params.max_nb_sessions); - return cryptodev_openssl_create(name, &init_params); + return cryptodev_openssl_create(&init_params); } /** Uninitialise OPENSSL crypto device */ diff --git a/drivers/crypto/snow3g/rte_snow3g_pmd.c b/drivers/crypto/snow3g/rte_snow3g_pmd.c index 3b4292a..4a70f06 100644 --- a/drivers/crypto/snow3g/rte_snow3g_pmd.c +++ b/drivers/crypto/snow3g/rte_snow3g_pmd.c @@ -46,27 +46,6 @@ #define SNOW3G_MAX_BURST 8 #define BYTE_LEN 8 -/** - * Global static parameter used to create a unique name for each SNOW 3G - * crypto device. - */ -static unsigned unique_name_id; - -static inline int -create_unique_device_name(char *name, size_t size) -{ - int ret; - - if (name == NULL) - return -EINVAL; - - ret = snprintf(name, size, "%s_%u", RTE_STR(CRYPTODEV_NAME_SNOW3G_PMD), - unique_name_id++); - if (ret < 0) - return ret; - return 0; -} - /** Get xform chain order. */ static enum snow3g_operation snow3g_get_mode(const struct rte_crypto_sym_xform *xform) @@ -548,14 +527,23 @@ snow3g_pmd_dequeue_burst(void *queue_pair, static int cryptodev_snow3g_remove(const char *name); static int -cryptodev_snow3g_create(const char *name, - struct rte_crypto_vdev_init_params *init_params) +cryptodev_snow3g_create(struct rte_crypto_vdev_init_params *init_params) { struct rte_cryptodev *dev; - char crypto_dev_name[RTE_CRYPTODEV_NAME_MAX_LEN]; struct snow3g_private *internals; uint64_t cpu_flags = 0; + if (init_params->name[0] == '\0') { + int ret = rte_cryptodev_pmd_create_dev_name( + init_params->name, + RTE_STR(CRYPTODEV_NAME_SNOW3G_PMD)); + + if (ret < 0) { + SNOW3G_LOG_ERR("failed to create unique name"); + return ret; + } + } + /* Check CPU for supported vector instruction set */ if (rte_cpu_get_flag_enabled(RTE_CPUFLAG_SSE4_1)) cpu_flags |= RTE_CRYPTODEV_FF_CPU_SSE; @@ -564,15 +552,7 @@ cryptodev_snow3g_create(const char *name, return -EFAULT; } - - /* Create a unique device name. */ - if (create_unique_device_name(crypto_dev_name, - RTE_CRYPTODEV_NAME_MAX_LEN) != 0) { - SNOW3G_LOG_ERR("failed to create unique cryptodev name"); - return -EINVAL; - } - - dev = rte_cryptodev_pmd_virtual_dev_init(crypto_dev_name, + dev = rte_cryptodev_pmd_virtual_dev_init(init_params->name, sizeof(struct snow3g_private), init_params->socket_id); if (dev == NULL) { SNOW3G_LOG_ERR("failed to create cryptodev vdev"); @@ -597,9 +577,10 @@ cryptodev_snow3g_create(const char *name, return 0; init_error: - SNOW3G_LOG_ERR("driver %s: cryptodev_snow3g_create failed", name); + SNOW3G_LOG_ERR("driver %s: cryptodev_snow3g_create failed", + init_params->name); - cryptodev_snow3g_remove(crypto_dev_name); + cryptodev_snow3g_remove(init_params->name); return -EFAULT; } @@ -610,19 +591,23 @@ cryptodev_snow3g_probe(const char *name, struct rte_crypto_vdev_init_params init_params = { RTE_CRYPTODEV_VDEV_DEFAULT_MAX_NB_QUEUE_PAIRS, RTE_CRYPTODEV_VDEV_DEFAULT_MAX_NB_SESSIONS, - rte_socket_id() + rte_socket_id(), + {0} }; rte_cryptodev_parse_vdev_init_params(&init_params, input_args); RTE_LOG(INFO, PMD, "Initialising %s on NUMA node %d\n", name, init_params.socket_id); + if (init_params.name[0] != '\0') + RTE_LOG(INFO, PMD, " User defined name = %s\n", + init_params.name); RTE_LOG(INFO, PMD, " Max number of queue pairs = %d\n", init_params.max_nb_queue_pairs); RTE_LOG(INFO, PMD, " Max number of sessions = %d\n", init_params.max_nb_sessions); - return cryptodev_snow3g_create(name, &init_params); + return cryptodev_snow3g_create(&init_params); } static int diff --git a/drivers/crypto/zuc/rte_zuc_pmd.c b/drivers/crypto/zuc/rte_zuc_pmd.c index 3849119..062cfff 100644 --- a/drivers/crypto/zuc/rte_zuc_pmd.c +++ b/drivers/crypto/zuc/rte_zuc_pmd.c @@ -45,27 +45,6 @@ #define ZUC_MAX_BURST 8 #define BYTE_LEN 8 -/** - * Global static parameter used to create a unique name for each ZUC - * crypto device. - */ -static unsigned unique_name_id; - -static inline int -create_unique_device_name(char *name, size_t size) -{ - int ret; - - if (name == NULL) - return -EINVAL; - - ret = snprintf(name, size, "%s_%u", RTE_STR(CRYPTODEV_NAME_ZUC_PMD), - unique_name_id++); - if (ret < 0) - return ret; - return 0; -} - /** Get xform chain order. */ static enum zuc_operation zuc_get_mode(const struct rte_crypto_sym_xform *xform) @@ -448,14 +427,23 @@ zuc_pmd_dequeue_burst(void *queue_pair, static int cryptodev_zuc_remove(const char *name); static int -cryptodev_zuc_create(const char *name, - struct rte_crypto_vdev_init_params *init_params) +cryptodev_zuc_create(struct rte_crypto_vdev_init_params *init_params) { struct rte_cryptodev *dev; - char crypto_dev_name[RTE_CRYPTODEV_NAME_MAX_LEN]; struct zuc_private *internals; uint64_t cpu_flags = 0; + if (init_params->name[0] == '\0') { + int ret = rte_cryptodev_pmd_create_dev_name( + init_params->name, + RTE_STR(CRYPTODEV_NAME_ZUC_PMD)); + + if (ret < 0) { + ZUC_LOG_ERR("failed to create unique name"); + return ret; + } + } + /* Check CPU for supported vector instruction set */ if (rte_cpu_get_flag_enabled(RTE_CPUFLAG_SSE4_1)) cpu_flags |= RTE_CRYPTODEV_FF_CPU_SSE; @@ -464,15 +452,7 @@ cryptodev_zuc_create(const char *name, return -EFAULT; } - - /* Create a unique device name. */ - if (create_unique_device_name(crypto_dev_name, - RTE_CRYPTODEV_NAME_MAX_LEN) != 0) { - ZUC_LOG_ERR("failed to create unique cryptodev name"); - return -EINVAL; - } - - dev = rte_cryptodev_pmd_virtual_dev_init(crypto_dev_name, + dev = rte_cryptodev_pmd_virtual_dev_init(init_params->name, sizeof(struct zuc_private), init_params->socket_id); if (dev == NULL) { ZUC_LOG_ERR("failed to create cryptodev vdev"); @@ -497,9 +477,10 @@ cryptodev_zuc_create(const char *name, return 0; init_error: - ZUC_LOG_ERR("driver %s: cryptodev_zuc_create failed", name); + ZUC_LOG_ERR("driver %s: cryptodev_zuc_create failed", + init_params->name); - cryptodev_zuc_remove(crypto_dev_name); + cryptodev_zuc_remove(init_params->name); return -EFAULT; } @@ -510,19 +491,23 @@ cryptodev_zuc_probe(const char *name, struct rte_crypto_vdev_init_params init_params = { RTE_CRYPTODEV_VDEV_DEFAULT_MAX_NB_QUEUE_PAIRS, RTE_CRYPTODEV_VDEV_DEFAULT_MAX_NB_SESSIONS, - rte_socket_id() + rte_socket_id(), + {0} }; rte_cryptodev_parse_vdev_init_params(&init_params, input_args); RTE_LOG(INFO, PMD, "Initialising %s on NUMA node %d\n", name, init_params.socket_id); + if (init_params.name[0] != '\0') + RTE_LOG(INFO, PMD, " User defined name = %s\n", + init_params.name); RTE_LOG(INFO, PMD, " Max number of queue pairs = %d\n", init_params.max_nb_queue_pairs); RTE_LOG(INFO, PMD, " Max number of sessions = %d\n", init_params.max_nb_sessions); - return cryptodev_zuc_create(name, &init_params); + return cryptodev_zuc_create(&init_params); } static int