[dpdk-dev] [PATCH v2 1/4] crypto/mrvl: add mrvl crypto pmd driver

De Lara Guarch, Pablo pablo.de.lara.guarch at intel.com
Thu Oct 5 17:01:33 CEST 2017


Hi Tomasz,

> -----Original Message-----
> From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of Tomasz Duszynski
> Sent: Thursday, September 28, 2017 11:23 AM
> To: dev at dpdk.org
> Cc: mw at semihalf.com; dima at marvell.com; nsamsono at marvell.com;
> Jianbo.liu at linaro.org; Tomasz Duszynski <tdu at semihalf.com>; Jacek Siuda
> <jck at semihalf.com>
> Subject: [dpdk-dev] [PATCH v2 1/4] crypto/mrvl: add mrvl crypto pmd
> driver
> 
> Add support for the Marvell Security Crypto Accelerator EIP197.
> Driver is based on external, publicly available, Marvell MUSDK
> library that provides access to the hardware with minimum overhead
> and high performance.
> 
> Driver comes with support for the following features:
> 
> * Symmetric crypto
> * Sym operation chaining
> * AES CBC (128)
> * AES CBC (192)
> * AES CBC (256)
> * AES CTR (128)
> * AES CTR (192)
> * AES CTR (256)
> * 3DES CBC
> * 3DES CTR
> * MD5
> * MD5 HMAC
> * SHA1
> * SHA1 HMAC
> * SHA256
> * SHA256 HMAC
> * SHA384
> * SHA384 HMAC
> * SHA512
> * SHA512 HMAC
> * AES GCM (128)
> 
> Driver was engineered cooperatively by Semihalf and Marvell teams.
> 
> Semihalf:
> Jacek Siuda <jck at semihalf.com>
> Tomasz Duszynski <tdu at semihalf.com>
> 
> Marvell:
> Dmitri Epshtein <dima at marvell.com>
> Natalie Samsonov <nsamsono at marvell.com>
> 
> Signed-off-by: Jacek Siuda <jck at semihalf.com>
> Signed-off-by: Tomasz Duszynski <tdu at semihalf.com>

If the guys in Marvell has contributed with the code,
they should sign off too. Up to you.

There is a script to test compilation (devtools/test-build.sh).
You should also modify it to include the dependency with LIBMUSDK.

...

> diff --git a/drivers/crypto/mrvl/rte_mrvl_pmd.c
> b/drivers/crypto/mrvl/rte_mrvl_pmd.c
> new file mode 100644
> index 0000000..63f8daa
> --- /dev/null
> +++ b/drivers/crypto/mrvl/rte_mrvl_pmd.c

...

> +
> +/* Register the driver in constructor. */
> +RTE_PMD_REGISTER_VDEV(CRYPTODEV_NAME_MRVL_PMD,
> cryptodev_mrvl_pmd_drv);
> +RTE_PMD_REGISTER_ALIAS(CRYPTODEV_NAME_MRVL_PMD,
> cryptodev_mrvl_pmd);

You can remove this alias, as this is a new PMD,
we should be using the primary convention "crypto_mrvl".


> +RTE_PMD_REGISTER_PARAM_STRING(CRYPTODEV_NAME_MRVL_PMD,
> +	"max_nb_queue_pairs=<int> "
> +	"max_nb_sessions=<int> "
> +	"socket_id=<int>");
> +RTE_PMD_REGISTER_CRYPTO_DRIVER(cryptodev_mrvl_pmd_drv,
> cryptodev_driver_id);
> diff --git a/drivers/crypto/mrvl/rte_mrvl_pmd_ops.c
> b/drivers/crypto/mrvl/rte_mrvl_pmd_ops.c
> new file mode 100644
> index 0000000..f7374f8
> --- /dev/null
> +++ b/drivers/crypto/mrvl/rte_mrvl_pmd_ops.c

...

> + */
> +static const struct rte_cryptodev_capabilities
> +	mrvl_crypto_pmd_capabilities[] = {
> +	{	/* MD5 HMAC */
> +		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
> +		{.sym = {
> +			.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
> +			{.auth = {
> +				.algo = RTE_CRYPTO_AUTH_MD5_HMAC,
> +				.block_size = 64,
> +				.key_size = {
> +					.min = 64,
> +					.max = 64,
> +					.increment = 0
> +				},
> +				.digest_size = {
> +					.min = 16,
> +					.max = 16,
> +					.increment = 0
> +				},
> +				.aad_size = { 0 }

You can remove this aad_size, as it is only applicable to AEAD algorithms (GCM in your case).

> +			}, }
> +		}, }
> +	},

...

> +	{	/* SHA1 HMAC */
> +		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
> +			{.sym = {
> +				.xform_type =
> RTE_CRYPTO_SYM_XFORM_AUTH,
> +				{.auth = {
> +					.algo =
> RTE_CRYPTO_AUTH_SHA1_HMAC,
> +					.block_size = 64,
> +					.key_size = {
> +						.min = 16,
> +						.max = 128,
> +						.increment = 0

If min and max values are different, increment cannot be 0.


More information about the dev mailing list