From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by dpdk.org (Postfix) with ESMTP id C3BDFDE5 for ; Mon, 16 Jan 2017 17:01:04 +0100 (CET) Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga104.fm.intel.com with ESMTP; 16 Jan 2017 08:01:03 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.33,239,1477983600"; d="scan'208";a="31206202" Received: from dwdohert-dpdk.ir.intel.com ([163.33.210.152]) by orsmga002.jf.intel.com with ESMTP; 16 Jan 2017 08:01:01 -0800 To: Fan Zhang , dev@dpdk.org References: <1484231320-139083-2-git-send-email-roy.fan.zhang@intel.com> <1484576095-233208-1-git-send-email-roy.fan.zhang@intel.com> <1484576095-233208-3-git-send-email-roy.fan.zhang@intel.com> Cc: pablo.de.lara.guarch@intel.com From: Declan Doherty Message-ID: <448b4357-e412-3e70-a1c2-3767163d1b83@intel.com> Date: Mon, 16 Jan 2017 16:01:35 +0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0 MIME-Version: 1.0 In-Reply-To: <1484576095-233208-3-git-send-email-roy.fan.zhang@intel.com> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [dpdk-dev] [PATCH v3 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: , X-List-Received-Date: Mon, 16 Jan 2017 16:01:05 -0000 On 16/01/17 14:14, Fan Zhang wrote: > 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 > Acked-by: Declan Doherty