From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id EE3254404B; Thu, 23 May 2024 14:48:49 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id BAFC2402E2; Thu, 23 May 2024 14:48:49 +0200 (CEST) Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) by mails.dpdk.org (Postfix) with ESMTP id CDB824026C; Thu, 23 May 2024 14:48:47 +0200 (CEST) Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 44N4de3r004171; Thu, 23 May 2024 05:48:47 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=pfpt0220; bh=D E6P6TNl36QeJ8QYCKvwe/jj0rVDnSvnvLiiIe/s/wg=; b=V4yQ28fpTs3nBzetN VAFD9iDcihG5fpbJBNq0Si0uibed0zaNsjtOb3sQUFhjK/7/fdd9kmTvsI4QSmSe tTmZmsXKNXNBsT7eq8HlEAiEijjPQdMvsHH+EssLpJD+2cD/t4Zesoqeh/Sm16yC 5Cd0tSoGRcYt0J3AQOoLLOaeMD4fGvFqlun1wri53ERgxn+HQCeb4XwqSKP+X6XM jjizcU1eurcv9iJXn89lu4tHIaFmOjnN5FKEmC9JjEKszkZYWZZFkxAUsgxH31jr Uq+lZUvOgqJDcUDXDzHWMfZ7zN3US3uRHql9QB0hPUPuMaIq/NzhGbd9jXpMJpNb ruKLw== Received: from dc6wp-exch02.marvell.com ([4.21.29.225]) by mx0a-0016f401.pphosted.com (PPS) with ESMTPS id 3y9xy7scpg-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 23 May 2024 05:48:46 -0700 (PDT) Received: from DC6WP-EXCH02.marvell.com (10.76.176.209) by DC6WP-EXCH02.marvell.com (10.76.176.209) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4; Thu, 23 May 2024 05:48:45 -0700 Received: from maili.marvell.com (10.69.176.80) by DC6WP-EXCH02.marvell.com (10.76.176.209) with Microsoft SMTP Server id 15.2.1544.4 via Frontend Transport; Thu, 23 May 2024 05:48:45 -0700 Received: from localhost.localdomain (unknown [10.28.36.102]) by maili.marvell.com (Postfix) with ESMTP id 512D53F7073; Thu, 23 May 2024 05:48:42 -0700 (PDT) From: Akhil Goyal To: CC: , , , , Akhil Goyal , Subject: [PATCH v2] test/crypto: fix enqueue dequeue callback case Date: Thu, 23 May 2024 18:18:38 +0530 Message-ID: <20240523124838.3474899-1-gakhil@marvell.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240522134835.3453044-1-gakhil@marvell.com> References: <20240522134835.3453044-1-gakhil@marvell.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Proofpoint-ORIG-GUID: zgZxyRzeTnDp9ox109V-xpC6QwE-G9O8 X-Proofpoint-GUID: zgZxyRzeTnDp9ox109V-xpC6QwE-G9O8 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1039,Hydra:6.0.650,FMLib:17.12.28.16 definitions=2024-05-23_07,2024-05-23_01,2024-05-17_01 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org 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 --- 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(); 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