[dpdk-dev] [PATCH v3 2/2] crypto: add user defined name initializing parameter parsing to software PMDs
Declan Doherty
declan.doherty at intel.com
Mon Jan 16 17:01:35 CET 2017
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 <roy.fan.zhang at intel.com>
> ---
> 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 <declan.doherty at intel.com>
More information about the dev
mailing list