From: "Kundapura, Ganapati" <ganapati.kundapura@intel.com>
To: Akhil Goyal <gakhil@marvell.com>, "dev@dpdk.org" <dev@dpdk.org>
Cc: "Gujjar, Abhinandan S" <abhinandan.gujjar@intel.com>,
"fanzhang.oss@gmail.com" <fanzhang.oss@gmail.com>,
"anoobj@marvell.com" <anoobj@marvell.com>,
"stable@dpdk.org" <stable@dpdk.org>
Subject: RE: [PATCH v2] test/crypto: fix enqueue dequeue callback case
Date: Thu, 23 May 2024 17:30:39 +0000 [thread overview]
Message-ID: <MW4PR11MB591166FBAECED4606085D78487F42@MW4PR11MB5911.namprd11.prod.outlook.com> (raw)
In-Reply-To: <20240523124838.3474899-1-gakhil@marvell.com>
Hi,
> -----Original Message-----
> From: Akhil Goyal <gakhil@marvell.com>
> Sent: Thursday, May 23, 2024 6:19 PM
> To: dev@dpdk.org
> Cc: Kundapura, Ganapati <ganapati.kundapura@intel.com>; Gujjar,
> Abhinandan S <abhinandan.gujjar@intel.com>; fanzhang.oss@gmail.com;
> anoobj@marvell.com; Akhil Goyal <gakhil@marvell.com>; stable@dpdk.org
> Subject: [PATCH v2] test/crypto: fix enqueue dequeue callback case
>
> The enqueue/dequeue callback test cases were using the
> test_null_burst_operation() for doing enqueue/dequeue.
> But this function is only designed to be run for NULL PMD.
> Hence for other PMDs, the callback was not getting called.
> Now, used a function test_AES_CBC_HMAC_SHA1_encrypt_digest()
> which is normally supported by most of the PMDs.
> Also added a check on a global static variable to verify that the callback is
> actually called and fail the case if it is not getting called.
>
> Fixes: 5523a75af539 ("test/crypto: add case for enqueue/dequeue callbacks")
> Cc: stable@dpdk.org
>
> Signed-off-by: Akhil Goyal <gakhil@marvell.com>
> ---
> app/test/test_cryptodev.c | 48
> ++++++++++++++++++++++++++++++++++++++-
> 1 file changed, 47 insertions(+), 1 deletion(-)
>
> diff --git a/app/test/test_cryptodev.c b/app/test/test_cryptodev.c index
> 1703ebccf1..87ffde6a8b 100644
> --- a/app/test/test_cryptodev.c
> +++ b/app/test/test_cryptodev.c
> @@ -199,6 +199,8 @@ post_process_raw_dp_op(void *user_data,
> uint32_t index __rte_unused,
> static struct crypto_testsuite_params testsuite_params = { NULL }; struct
> crypto_testsuite_params *p_testsuite_params = &testsuite_params; static
> struct crypto_unittest_params unittest_params;
> +static bool enq_cb_called;
> +static bool deq_cb_called;
>
> int
> process_sym_raw_dp_op(uint8_t dev_id, uint16_t qp_id, @@ -14556,6
> +14558,7 @@ test_enq_callback(uint16_t dev_id, uint16_t qp_id, struct
> rte_crypto_op **ops,
> RTE_SET_USED(ops);
> RTE_SET_USED(user_param);
>
> + enq_cb_called = true;
> printf("crypto enqueue callback called\n");
> return nb_ops;
> }
> @@ -14569,6 +14572,7 @@ test_deq_callback(uint16_t dev_id, uint16_t
> qp_id, struct rte_crypto_op **ops,
> RTE_SET_USED(ops);
> RTE_SET_USED(user_param);
>
> + deq_cb_called = true;
> printf("crypto dequeue callback called\n");
> return nb_ops;
> }
> @@ -14583,7 +14587,7 @@ test_enqdeq_callback_thread(void *arg)
> /* DP thread calls rte_cryptodev_enqueue_burst()/
> * rte_cryptodev_dequeue_burst() and invokes callback.
> */
> - test_null_burst_operation();
> + test_AES_CBC_HMAC_SHA1_encrypt_digest();
With this change cryptodev_null_autotest is skipping test_enq_callback_setup and test_deq_callback_setup tests as NULL PMD doesn't support
RTE_CRYPTO_SYM_XFORM_AUTH and RTE_CRYPTO_AUTH_SHA1_HMAC capabilities.
Would be better if it works for both NULL PMD and other PMD's.
> return 0;
> }
>
> @@ -14591,6 +14595,7 @@ static int
> test_enq_callback_setup(void)
> {
> struct crypto_testsuite_params *ts_params = &testsuite_params;
> + struct rte_cryptodev_sym_capability_idx cap_idx;
> struct rte_cryptodev_info dev_info;
> struct rte_cryptodev_qp_conf qp_conf = {
> .nb_descriptors = MAX_NUM_OPS_INFLIGHT @@ -14598,6
> +14603,19 @@ test_enq_callback_setup(void)
>
> struct rte_cryptodev_cb *cb;
> uint16_t qp_id = 0;
> + int j = 0;
> +
> + /* Verify the crypto capabilities for which enqueue/dequeue is done.
> */
> + cap_idx.type = RTE_CRYPTO_SYM_XFORM_AUTH;
> + cap_idx.algo.auth = RTE_CRYPTO_AUTH_SHA1_HMAC;
> + if (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],
> + &cap_idx) == NULL)
> + return TEST_SKIPPED;
> + cap_idx.type = RTE_CRYPTO_SYM_XFORM_CIPHER;
> + cap_idx.algo.cipher = RTE_CRYPTO_CIPHER_AES_CBC;
> + if (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],
> + &cap_idx) == NULL)
> + return TEST_SKIPPED;
>
> /* Stop the device in case it's started so it can be configured */
> rte_cryptodev_stop(ts_params->valid_devs[0]);
> @@ -14621,6 +14639,7 @@ test_enq_callback_setup(void)
> qp_conf.nb_descriptors, qp_id,
> ts_params->valid_devs[0]);
>
> + enq_cb_called = false;
> /* Test with invalid crypto device */
> cb = rte_cryptodev_add_enq_callback(RTE_CRYPTO_MAX_DEVS,
> qp_id, test_enq_callback, NULL);
> @@ -14660,6 +14679,10 @@ test_enq_callback_setup(void)
> /* Wait until reader exited. */
> rte_eal_mp_wait_lcore();
>
> + /* Wait until callback not called. */
> + while (!enq_cb_called && (j++ < 10))
> + rte_delay_ms(10);
> +
> /* Test with invalid crypto device */
> TEST_ASSERT_FAIL(rte_cryptodev_remove_enq_callback(
> RTE_CRYPTO_MAX_DEVS, qp_id, cb),
> @@ -14683,6 +14706,8 @@ test_enq_callback_setup(void)
> "qp %u on cryptodev %u",
> qp_id, ts_params->valid_devs[0]);
>
> + TEST_ASSERT(enq_cb_called == true, "Crypto enqueue callback not
> +called");
> +
> return TEST_SUCCESS;
> }
>
> @@ -14690,6 +14715,7 @@ static int
> test_deq_callback_setup(void)
> {
> struct crypto_testsuite_params *ts_params = &testsuite_params;
> + struct rte_cryptodev_sym_capability_idx cap_idx;
> struct rte_cryptodev_info dev_info;
> struct rte_cryptodev_qp_conf qp_conf = {
> .nb_descriptors = MAX_NUM_OPS_INFLIGHT @@ -14697,6
> +14723,19 @@ test_deq_callback_setup(void)
>
> struct rte_cryptodev_cb *cb;
> uint16_t qp_id = 0;
> + int j = 0;
> +
> + /* Verify the crypto capabilities for which enqueue/dequeue is done.
> */
> + cap_idx.type = RTE_CRYPTO_SYM_XFORM_AUTH;
> + cap_idx.algo.auth = RTE_CRYPTO_AUTH_SHA1_HMAC;
> + if (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],
> + &cap_idx) == NULL)
> + return TEST_SKIPPED;
> + cap_idx.type = RTE_CRYPTO_SYM_XFORM_CIPHER;
> + cap_idx.algo.cipher = RTE_CRYPTO_CIPHER_AES_CBC;
> + if (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],
> + &cap_idx) == NULL)
> + return TEST_SKIPPED;
>
> /* Stop the device in case it's started so it can be configured */
> rte_cryptodev_stop(ts_params->valid_devs[0]);
> @@ -14720,6 +14759,7 @@ test_deq_callback_setup(void)
> qp_conf.nb_descriptors, qp_id,
> ts_params->valid_devs[0]);
>
> + deq_cb_called = false;
> /* Test with invalid crypto device */
> cb = rte_cryptodev_add_deq_callback(RTE_CRYPTO_MAX_DEVS,
> qp_id, test_deq_callback, NULL);
> @@ -14759,6 +14799,10 @@ test_deq_callback_setup(void)
> /* Wait until reader exited. */
> rte_eal_mp_wait_lcore();
>
> + /* Wait until callback not called. */
> + while (!deq_cb_called && (j++ < 10))
> + rte_delay_ms(10);
> +
> /* Test with invalid crypto device */
> TEST_ASSERT_FAIL(rte_cryptodev_remove_deq_callback(
> RTE_CRYPTO_MAX_DEVS, qp_id, cb),
> @@ -14782,6 +14826,8 @@ test_deq_callback_setup(void)
> "qp %u on cryptodev %u",
> qp_id, ts_params->valid_devs[0]);
>
> + TEST_ASSERT(deq_cb_called == true, "Crypto dequeue callback not
> +called");
> +
> return TEST_SUCCESS;
> }
>
> --
> 2.25.1
next prev parent reply other threads:[~2024-05-23 17:30 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-05-22 13:48 [PATCH] " Akhil Goyal
2024-05-23 12:48 ` [PATCH v2] " Akhil Goyal
2024-05-23 17:30 ` Kundapura, Ganapati [this message]
2024-05-24 17:13 ` [PATCH v3] " Akhil Goyal
2024-05-27 10:48 ` Kundapura, Ganapati
2024-05-30 9:27 ` Akhil Goyal
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=MW4PR11MB591166FBAECED4606085D78487F42@MW4PR11MB5911.namprd11.prod.outlook.com \
--to=ganapati.kundapura@intel.com \
--cc=abhinandan.gujjar@intel.com \
--cc=anoobj@marvell.com \
--cc=dev@dpdk.org \
--cc=fanzhang.oss@gmail.com \
--cc=gakhil@marvell.com \
--cc=stable@dpdk.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).