[dpdk-dev] [PATCH 1/2] test/crypto: add capability check

Dybkowski, AdamX adamx.dybkowski at intel.com
Wed Apr 15 11:23:06 CEST 2020


One more thing:

> -----Original Message-----
> From: dev <dev-bounces at dpdk.org> On Behalf Of Pablo de Lara
> Sent: Tuesday, 14 April, 2020 12:23
> To: Doherty, Declan <declan.doherty at intel.com>; akhil.goyal at nxp.com;
> Zhang, Roy Fan <roy.fan.zhang at intel.com>; thomas at monjalon.net
> Cc: dev at dpdk.org; De Lara Guarch, Pablo <pablo.de.lara.guarch at intel.com>
> Subject: [dpdk-dev] [PATCH 1/2] test/crypto: add capability check
> 
> Check if test case is supported by the crypto device, including algorithm and
> some of its parameter, such as key length, IV length, etc, using the
> capabilities API.
> If it is not supported, test case is skipped.
> 
> Signed-off-by: Pablo de Lara <pablo.de.lara.guarch at intel.com>
> ---
>  app/test/test_cryptodev_blockcipher.c | 49
> +++++++++++++++++++++++++++++++++++
>  1 file changed, 49 insertions(+)
> 
> diff --git a/app/test/test_cryptodev_blockcipher.c
> b/app/test/test_cryptodev_blockcipher.c
> index 2ff7fc9..b0e53ee 100644
> --- a/app/test/test_cryptodev_blockcipher.c
> +++ b/app/test/test_cryptodev_blockcipher.c
> @@ -21,6 +21,47 @@
>  #include "test_cryptodev_hash_test_vectors.h"
> 
>  static int
> +verify_algo_support(const struct blockcipher_test_case *t,
> +		const uint8_t dev_id, const uint32_t digest_len) {
> +	int ret;
> +	const struct blockcipher_test_data *tdata = t->test_data;
> +	struct rte_cryptodev_sym_capability_idx cap_idx;
> +	const struct rte_cryptodev_symmetric_capability *capability;
> +
> +	if (t->op_mask & BLOCKCIPHER_TEST_OP_CIPHER) {
> +		cap_idx.type = RTE_CRYPTO_SYM_XFORM_CIPHER;
> +		cap_idx.algo.cipher = tdata->crypto_algo;
> +		capability = rte_cryptodev_sym_capability_get(dev_id,
> &cap_idx);
> +		if (capability == NULL)
> +			return -1;
> +
> +		ret = rte_cryptodev_sym_capability_check_cipher(capability,
> +							tdata-
> >cipher_key.len,
> +							tdata->iv.len);
> +		if (ret != 0)
> +			return -1;
> +	}
> +
> +	if (t->op_mask & BLOCKCIPHER_TEST_OP_AUTH) {
> +		cap_idx.type = RTE_CRYPTO_SYM_XFORM_AUTH;
> +		cap_idx.algo.auth = tdata->auth_algo;
> +		capability = rte_cryptodev_sym_capability_get(dev_id,
> &cap_idx);
> +		if (capability == NULL)
> +			return -1;
> +
> +		ret = rte_cryptodev_sym_capability_check_auth(capability,
> +							tdata->auth_key.len,
> +							digest_len,
> +							0);
> +		if (ret != 0)
> +			return -1;
> +	}
> +
> +        return 0;
> +}
> +
> +static int
>  test_blockcipher_one_case(const struct blockcipher_test_case *t,
>  	struct rte_mempool *mbuf_pool,
>  	struct rte_mempool *op_mpool,
> @@ -112,6 +153,14 @@ test_blockcipher_one_case(const struct
> blockcipher_test_case *t,
>  		nb_segs = 3;
>  	}
> 
> +        /* Check if PMD is capable of performing that test */
> +        if (verify_algo_support(t, dev_id, digest_len) < 0) {
> +		 RTE_LOG(DEBUG, USER1,
> +			"Device is not capable of performing this algorithm."
> +			"Test Skipped.\n");

Pablo, please explain why did you use RTE_LOG here? All strings in this source code file are shown using printf. This is the only place with RTE_LOG call now.

Adam


More information about the dev mailing list