[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