From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 854BDA04C8; Fri, 18 Sep 2020 22:03:21 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id E18801DAFC; Fri, 18 Sep 2020 22:03:20 +0200 (CEST) Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-eopbgr140053.outbound.protection.outlook.com [40.107.14.53]) by dpdk.org (Postfix) with ESMTP id E6C8D1DAEB for ; Fri, 18 Sep 2020 22:03:19 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=S2Ux4TaZ8P3reU1z3kG7O+fWPnZqfn6xv636jIOeBtUX2lkd7OedY+ufCF4FesdZ44mRLfi5uTwxgfzuZzv7sk9r0dRw9icbmSoLP5DytD/q6RbOul3WVzHvnIcQGrooT3QG8Nb4Ak93Ht/sSZ6mhMiVAewomYbziXhhEqxD2J8DCjhCuZzxNtJwpFtUPxXG/L56FEJR1Uy8hLohQakXgdMrVNV8fDhClFtlmJfshfea2sdV6Vo/2SDE1Nu77N6xYTrsJk8UuzdshgkAqhF09k9f2SkQVzdg5C9hr3OSl/+2Zn+hFe2HnIOE55jniSa3l83l/T8x5m6IVHGk9sa+Lg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=bzmpWuFc8MZdt9m5sfn0FQB7va7G1pbiFen2+96S/ic=; b=UPZlCLIuHu01SJkbd4mfBPnN5Yp9H/FQcLuMLK8gsQXhWRS0webP5e2VJjtT24Yu7n8gFHkCbYlkBb5WE88iIdTGFhfeqS4ILPSJ33FMobQC47j33Ls1BrTphIAXDZnqYW8nP8NqXLDMsjdSTIU4hetB6bZCYHL5A/+7D3PaE3CKgRl+hsyYGZg3jLs1ygRL9zPlZyHvdJwbxYJtpDxLTkgd5x8Dsv171Nmcsvk6PWbqwDNyi1aY84pzS7j+emSKIKiHP8JX/3Tr7rNJ4S1dX5e9gA6UUKAIptfBsCKw2DnHtMpgdFB0sfRg4tgG5mX/mR3qfbl7Cg1vW4wtLDBwow== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=bzmpWuFc8MZdt9m5sfn0FQB7va7G1pbiFen2+96S/ic=; b=KwvuBfmEmeHf13vDvrNL9eTNCBhPV90yGf7JYyz9feEKMRuTzzBDWAvEbr6FS+j9vi2hGtCAvwrcDTWlpqhiKDpGMuDSnBv00HMUfqf6n0erp1EB50/8f0sBZB+yPk+X5ljLq6dLtsdiIu9o8FpvhC7uocMDs1ScHiWtLjSZLYA= Received: from VI1PR04MB3168.eurprd04.prod.outlook.com (2603:10a6:802:6::10) by VI1PR04MB3007.eurprd04.prod.outlook.com (2603:10a6:802:9::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3370.18; Fri, 18 Sep 2020 20:03:17 +0000 Received: from VI1PR04MB3168.eurprd04.prod.outlook.com ([fe80::9513:3b55:931f:216e]) by VI1PR04MB3168.eurprd04.prod.outlook.com ([fe80::9513:3b55:931f:216e%4]) with mapi id 15.20.3391.013; Fri, 18 Sep 2020 20:03:17 +0000 From: Akhil Goyal To: Fan Zhang , "dev@dpdk.org" CC: "fiona.trahe@intel.com" , "arkadiuszx.kusztal@intel.com" , "adamx.dybkowski@intel.com" Thread-Topic: [dpdk-dev v9 3/4] test/crypto: add unit-test for cryptodev direct APIs Thread-Index: AQHWhbwS3DP5K1CHa0ux5GLyS6VA5qlu0wnQ Date: Fri, 18 Sep 2020 20:03:16 +0000 Message-ID: References: <20200904152539.20608-1-roy.fan.zhang@intel.com> <20200908084253.81022-1-roy.fan.zhang@intel.com> <20200908084253.81022-4-roy.fan.zhang@intel.com> In-Reply-To: <20200908084253.81022-4-roy.fan.zhang@intel.com> Accept-Language: en-IN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=nxp.com; x-originating-ip: [122.162.67.38] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 25078577-cea9-496c-f8a7-08d85c0de213 x-ms-traffictypediagnostic: VI1PR04MB3007: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:4125; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: icsL9awaYd29ldKi8oLCOYSJ8wK+ownXtD+Nbu+zgJ1NPXRcrefXcbI6IBg6iQJ4xCjkp9/DBHXNcI3ZeFs0qxZd+x6WqHu1qeOUTuiXta8QhXwOZvWNFBn0vcIIdQtuC14P+i/rPSR6lK6ES09EFHxh0laeYg1N9TNE3QwBbshgA84XvtwYGK4ZBfbab0lILxAkTo2WqyINaBx+3oQylCvk1X94Q8sAqLfybmo2ujvGCQq9FzN2rEXAQuI56JEZ4AsFYxDhONkQ8pTHG3J8T50BAPioKZ1okHjT5UtfzSGx6+WIHP9YMRViXeXVxGJziIRBCRrtiFsaLF5XfVCqpVXVxBlsy9VrQ6m89FA5vbX/e0kP11U5T5ZsYXlCeNxK x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VI1PR04MB3168.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(136003)(346002)(376002)(39860400002)(366004)(396003)(64756008)(4326008)(9686003)(76116006)(55016002)(66446008)(33656002)(66556008)(66476007)(478600001)(30864003)(8936002)(66946007)(86362001)(8676002)(5660300002)(110136005)(83380400001)(2906002)(52536014)(54906003)(44832011)(6506007)(316002)(7696005)(26005)(186003)(71200400001)(559001)(579004); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: uAKcWt293kM93V62H+OlAOpZg9TFZ0oLrKKBLivqLTX9aA0HlmS7ITOpN2Z07FJE8U9uSjWJhFOmnV/xSn3aF9oNzWVwK1H5n2qRm6eMVij2jrfB29Avys5nqiUUOvcBhLbD898LVSAQUOGYH/OQnVmegU/fjidvhBxcihg4YA5xtp3iOXnsgP5C7s2imSENC4v5Su74z0Q2SXCLd4s7NlAr/VoIkuxGdpuX+Li8PDmo0L2bSLSmYvTLeG5QaLaf519nSrI02+DHoUe6HyIidWupgTAJsDCEQp24cAEhvvEcFMDAac5HBG5SOMp5SePkz2ZetH/nxUJXBnVV5ZYkvvSkrR6CqV/sDFmTZpiA2fTYm4xO67plvUrtnxieHpQ/5291HL8NeL/j7T6QlTofiK39hVf7AH5L40QGxivJsK8ow4Uc4rHd5iJQZKAvP6Cv5m8B3jd+QLMN9X+kT03WR36YuPnbmEvs/p3XG+2isQJESCX1KWDtCeISPMopVp2MKjTSd6A7bcqwxVWYjHJhG46ozhGZJli9bSns3XARjNdlOOf7MB81bcOi1P9ZZp9q8DW5PQbVm42zHoC/j3/Jop5ivNNUCPX4MMn04bQxEMHnb3oXZ1WYfxNOonuwBsltNgRXldnZ+4g7O9a56JoIBQ== x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: VI1PR04MB3168.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 25078577-cea9-496c-f8a7-08d85c0de213 X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Sep 2020 20:03:16.8746 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: oGmph0EQx9r7p9Q0W9iC5+MDnVoCZzCU3Jl0iFM/EN+mkRM2/8NGzkNTFzMgAPCvj2oYGYEX3HPDrOn/UEXifQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB3007 Subject: Re: [dpdk-dev] [dpdk-dev v9 3/4] test/crypto: add unit-test for cryptodev direct APIs X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Hi Fan, > Subject: [dpdk-dev v9 3/4] test/crypto: add unit-test for cryptodev direc= t APIs >=20 > This patch adds the QAT test to use cryptodev symmetric crypto > direct APIs. >=20 > Signed-off-by: Fan Zhang > --- > app/test/test_cryptodev.c | 461 +++++++++++++++++++++++--- > app/test/test_cryptodev.h | 7 + > app/test/test_cryptodev_blockcipher.c | 51 ++- > 3 files changed, 456 insertions(+), 63 deletions(-) >=20 > diff --git a/app/test/test_cryptodev.c b/app/test/test_cryptodev.c > index 70bf6fe2c..13f642e0e 100644 > --- a/app/test/test_cryptodev.c > +++ b/app/test/test_cryptodev.c > @@ -49,6 +49,8 @@ > #define VDEV_ARGS_SIZE 100 > #define MAX_NB_SESSIONS 4 >=20 > +#define MAX_DRV_SERVICE_CTX_SIZE 256 > + > #define IN_PLACE 0 > #define OUT_OF_PLACE 1 >=20 > @@ -57,6 +59,8 @@ static int gbl_driver_id; > static enum rte_security_session_action_type gbl_action_type =3D > RTE_SECURITY_ACTION_TYPE_NONE; >=20 > +int cryptodev_dp_test; > + Why do we need this? We should make decision based on Feature flag of crypt= o device. > struct crypto_testsuite_params { > struct rte_mempool *mbuf_pool; > struct rte_mempool *large_mbuf_pool; > @@ -147,6 +151,182 @@ ceil_byte_length(uint32_t num_bits) > return (num_bits >> 3); > } >=20 > +void > +process_sym_hw_api_op(uint8_t dev_id, uint16_t qp_id, struct rte_crypto_= op > *op, > + uint8_t is_cipher, uint8_t is_auth, uint8_t len_in_bits, > + uint8_t cipher_iv_len) > +{ > + int32_t n; > + struct rte_crypto_sym_op *sop; > + struct rte_crypto_op *ret_op =3D NULL; > + struct rte_crypto_vec data_vec[UINT8_MAX]; > + union rte_crypto_sym_additional_data a_data; > + union rte_crypto_sym_ofs ofs; > + int32_t status; > + uint32_t max_len; > + union rte_cryptodev_session_ctx sess; > + enum rte_crypto_dp_service service_type; > + uint32_t count =3D 0; > + uint8_t service_data[MAX_DRV_SERVICE_CTX_SIZE] =3D {0}; > + struct rte_crypto_dp_service_ctx *ctx =3D (void *)service_data; > + uint32_t cipher_offset =3D 0, cipher_len =3D 0, auth_offset =3D 0, > + auth_len =3D 0; > + int ctx_service_size; > + > + sop =3D op->sym; > + > + sess.crypto_sess =3D sop->session; > + > + if (is_cipher && is_auth) { > + service_type =3D RTE_CRYPTO_DP_SYM_CHAIN; > + cipher_offset =3D sop->cipher.data.offset; > + cipher_len =3D sop->cipher.data.length; > + auth_offset =3D sop->auth.data.offset; > + auth_len =3D sop->auth.data.length; > + max_len =3D RTE_MAX(cipher_offset + cipher_len, > + auth_offset + auth_len); > + } else if (is_cipher) { > + service_type =3D RTE_CRYPTO_DP_SYM_CIPHER_ONLY; > + cipher_offset =3D sop->cipher.data.offset; > + cipher_len =3D sop->cipher.data.length; > + max_len =3D cipher_len + cipher_offset; > + } else if (is_auth) { > + service_type =3D RTE_CRYPTO_DP_SYM_AUTH_ONLY; > + auth_offset =3D sop->auth.data.offset; > + auth_len =3D sop->auth.data.length; > + max_len =3D auth_len + auth_offset; > + } else { /* aead */ > + service_type =3D RTE_CRYPTO_DP_SYM_AEAD; > + cipher_offset =3D sop->aead.data.offset; > + cipher_len =3D sop->aead.data.length; > + max_len =3D cipher_len + cipher_offset; > + } > + > + if (len_in_bits) { > + max_len =3D max_len >> 3; > + cipher_offset =3D cipher_offset >> 3; > + auth_offset =3D auth_offset >> 3; > + cipher_len =3D cipher_len >> 3; > + auth_len =3D auth_len >> 3; > + } > + > + ctx_service_size =3D rte_cryptodev_dp_get_service_ctx_data_size(dev_id)= ; > + assert(ctx_service_size <=3D MAX_DRV_SERVICE_CTX_SIZE && > + ctx_service_size > 0); > + > + if (rte_cryptodev_dp_configure_service(dev_id, qp_id, service_type, > + RTE_CRYPTO_OP_WITH_SESSION, sess, ctx, 0) < 0) { > + op->status =3D RTE_CRYPTO_OP_STATUS_ERROR; > + return; > + } **_dp_configure_service does not provide context of the API. What does serv= ice mean here? Can we rename it to rte_cryptodev_configure_raw_dp? This gives better readability to have an API to configure crypto device for= raw data path. > + > + /* test update service */ > + if (rte_cryptodev_dp_configure_service(dev_id, qp_id, service_type, > + RTE_CRYPTO_OP_WITH_SESSION, sess, ctx, 1) < 0) { Do we really need an extra parameter to specify update? Can we not call aga= in same API for update? Anyway the implementation will be copying the complete informat= ion from the sess. > + op->status =3D RTE_CRYPTO_OP_STATUS_ERROR; > + return; > + } > + > + n =3D rte_crypto_mbuf_to_vec(sop->m_src, 0, max_len, > + data_vec, RTE_DIM(data_vec)); > + if (n < 0 || n > sop->m_src->nb_segs) { > + op->status =3D RTE_CRYPTO_OP_STATUS_ERROR; > + return; > + } > + > + ofs.raw =3D 0; > + > + switch (service_type) { > + case RTE_CRYPTO_DP_SYM_AEAD: > + ofs.ofs.cipher.head =3D cipher_offset; > + ofs.ofs.cipher.tail =3D max_len - cipher_offset - cipher_len; > + a_data.aead.iv_ptr =3D rte_crypto_op_ctod_offset(op, void *, > + IV_OFFSET); > + a_data.aead.iv_iova =3D rte_crypto_op_ctophys_offset(op, > + IV_OFFSET); > + a_data.aead.aad_ptr =3D (void *)sop->aead.aad.data; > + a_data.aead.aad_iova =3D sop->aead.aad.phys_addr; > + a_data.aead.digest_ptr =3D (void *)sop->aead.digest.data; > + a_data.aead.digest_iova =3D sop->aead.digest.phys_addr; > + break; > + case RTE_CRYPTO_DP_SYM_CIPHER_ONLY: > + ofs.ofs.cipher.head =3D cipher_offset; > + ofs.ofs.cipher.tail =3D max_len - cipher_offset - cipher_len; > + a_data.cipher_auth.cipher_iv_ptr =3D rte_crypto_op_ctod_offset( > + op, void *, IV_OFFSET); > + a_data.cipher_auth.cipher_iv_iova =3D > + rte_crypto_op_ctophys_offset(op, IV_OFFSET); > + break; > + case RTE_CRYPTO_DP_SYM_AUTH_ONLY: > + ofs.ofs.auth.head =3D auth_offset; > + ofs.ofs.auth.tail =3D max_len - auth_offset - auth_len; > + a_data.cipher_auth.auth_iv_ptr =3D rte_crypto_op_ctod_offset( > + op, void *, IV_OFFSET + cipher_iv_len); > + a_data.cipher_auth.auth_iv_iova =3D > + rte_crypto_op_ctophys_offset(op, IV_OFFSET + > + cipher_iv_len); > + a_data.cipher_auth.digest_ptr =3D (void *)sop->auth.digest.data; > + a_data.cipher_auth.digest_iova =3D sop->auth.digest.phys_addr; > + break; > + case RTE_CRYPTO_DP_SYM_CHAIN: > + ofs.ofs.cipher.head =3D cipher_offset; > + ofs.ofs.cipher.tail =3D max_len - cipher_offset - cipher_len; > + ofs.ofs.auth.head =3D auth_offset; > + ofs.ofs.auth.tail =3D max_len - auth_offset - auth_len; > + a_data.cipher_auth.cipher_iv_ptr =3D rte_crypto_op_ctod_offset( > + op, void *, IV_OFFSET); > + a_data.cipher_auth.cipher_iv_iova =3D > + rte_crypto_op_ctophys_offset(op, IV_OFFSET); > + a_data.cipher_auth.auth_iv_ptr =3D rte_crypto_op_ctod_offset( > + op, void *, IV_OFFSET + cipher_iv_len); > + a_data.cipher_auth.auth_iv_iova =3D > + rte_crypto_op_ctophys_offset(op, IV_OFFSET + > + cipher_iv_len); > + a_data.cipher_auth.digest_ptr =3D (void *)sop->auth.digest.data; > + a_data.cipher_auth.digest_iova =3D sop->auth.digest.phys_addr; Instead of cipher_auth, it should be chain. Can we also support "hash then = cipher" case also? > + break; > + default: > + break; > + } > + > + status =3D rte_cryptodev_dp_sym_submit_single_job(ctx, data_vec, n, ofs= , > + &a_data, (void *)op); > + if (status < 0) { > + op->status =3D RTE_CRYPTO_OP_STATUS_ERROR; > + return; > + } > + > + status =3D rte_cryptodev_dp_sym_submit_done(ctx, 1); > + if (status < 0) { > + op->status =3D RTE_CRYPTO_OP_STATUS_ERROR; > + return; > + } > + > + > + status =3D -1; > + while (count++ < 65535 && status =3D=3D -1) { > + status =3D rte_cryptodev_dp_sym_dequeue_single_job(ctx, > + (void **)&ret_op); > + if (status =3D=3D -1) > + rte_pause(); > + } > + > + if (status !=3D -1) { > + if (rte_cryptodev_dp_sym_dequeue_done(ctx, 1) < 0) { > + op->status =3D RTE_CRYPTO_OP_STATUS_ERROR; > + return; > + } > + } > + > + if (count =3D=3D 65536 || status !=3D 1 || ret_op !=3D op) { Remove hardcode 65536 > + op->status =3D RTE_CRYPTO_OP_STATUS_ERROR; > + return; > + } > + > + op->status =3D status =3D=3D 1 ? RTE_CRYPTO_OP_STATUS_SUCCESS : > + RTE_CRYPTO_OP_STATUS_ERROR; > +} > + > static void > process_cpu_aead_op(uint8_t dev_id, struct rte_crypto_op *op) > { > @@ -1656,6 +1836,9 @@ > test_AES_CBC_HMAC_SHA512_decrypt_perform(struct > rte_cryptodev_sym_session *sess, > if (gbl_action_type =3D=3D RTE_SECURITY_ACTION_TYPE_CPU_CRYPTO) > process_cpu_crypt_auth_op(ts_params->valid_devs[0], > ut_params->op); > + else if (cryptodev_dp_test) > + process_sym_hw_api_op(ts_params->valid_devs[0], 0, > + ut_params->op, 1, 1, 0, 0); Can we rename process_sym_hw_api_op to process_sym_hw_raw_op? > else > TEST_ASSERT_NOT_NULL( > process_crypto_request(ts_params- > >valid_devs[0], > @@ -1710,12 +1893,18 @@ test_AES_cipheronly_all(void) > static int > test_AES_docsis_all(void) > { > + /* Data-path service does not support DOCSIS yet */ > + if (cryptodev_dp_test) > + return -ENOTSUP; > return test_blockcipher(BLKCIPHER_AES_DOCSIS_TYPE); > } >=20 > static int > test_DES_docsis_all(void) > { > + /* Data-path service does not support DOCSIS yet */ > + if (cryptodev_dp_test) > + return -ENOTSUP; > return test_blockcipher(BLKCIPHER_DES_DOCSIS_TYPE); > } >=20 > @@ -2470,7 +2659,11 @@ test_snow3g_authentication(const struct > snow3g_hash_test_data *tdata) > if (retval < 0) > return retval; >=20 > - ut_params->op =3D process_crypto_request(ts_params->valid_devs[0], > + if (cryptodev_dp_test) > + process_sym_hw_api_op(ts_params->valid_devs[0], 0, > + ut_params->op, 0, 1, 1, 0); > + else > + ut_params->op =3D process_crypto_request(ts_params- > >valid_devs[0], > ut_params->op); > ut_params->obuf =3D ut_params->op->sym->m_src; > TEST_ASSERT_NOT_NULL(ut_params->op, "failed to retrieve obuf"); > @@ -2549,7 +2742,11 @@ test_snow3g_authentication_verify(const struct > snow3g_hash_test_data *tdata) > if (retval < 0) > return retval; >=20 > - ut_params->op =3D process_crypto_request(ts_params->valid_devs[0], > + if (cryptodev_dp_test) > + process_sym_hw_api_op(ts_params->valid_devs[0], 0, > + ut_params->op, 0, 1, 1, 0); > + else > + ut_params->op =3D process_crypto_request(ts_params- > >valid_devs[0], > ut_params->op); > TEST_ASSERT_NOT_NULL(ut_params->op, "failed to retrieve obuf"); > ut_params->obuf =3D ut_params->op->sym->m_src; > @@ -2619,6 +2816,9 @@ test_kasumi_authentication(const struct > kasumi_hash_test_data *tdata) > if (gbl_action_type =3D=3D RTE_SECURITY_ACTION_TYPE_CPU_CRYPTO) > process_cpu_crypt_auth_op(ts_params->valid_devs[0], > ut_params->op); > + else if (cryptodev_dp_test) > + process_sym_hw_api_op(ts_params->valid_devs[0], 0, > + ut_params->op, 0, 1, 1, 0); > else > ut_params->op =3D process_crypto_request(ts_params- > >valid_devs[0], > ut_params->op); > @@ -2690,7 +2890,11 @@ test_kasumi_authentication_verify(const struct > kasumi_hash_test_data *tdata) > if (retval < 0) > return retval; >=20 > - ut_params->op =3D process_crypto_request(ts_params->valid_devs[0], > + if (cryptodev_dp_test) > + process_sym_hw_api_op(ts_params->valid_devs[0], 0, > + ut_params->op, 0, 1, 1, 0); > + else > + ut_params->op =3D process_crypto_request(ts_params- > >valid_devs[0], > ut_params->op); > TEST_ASSERT_NOT_NULL(ut_params->op, "failed to retrieve obuf"); > ut_params->obuf =3D ut_params->op->sym->m_src; > @@ -2897,8 +3101,12 @@ test_kasumi_encryption(const struct > kasumi_test_data *tdata) > if (retval < 0) > return retval; >=20 > - ut_params->op =3D process_crypto_request(ts_params->valid_devs[0], > - ut_params->op); > + if (cryptodev_dp_test) > + process_sym_hw_api_op(ts_params->valid_devs[0], 0, > + ut_params->op, 1, 0, 1, tdata->cipher_iv.len); > + else > + ut_params->op =3D process_crypto_request(ts_params- > >valid_devs[0], > + ut_params->op); > TEST_ASSERT_NOT_NULL(ut_params->op, "failed to retrieve obuf"); >=20 > ut_params->obuf =3D ut_params->op->sym->m_dst; > @@ -2983,7 +3191,11 @@ test_kasumi_encryption_sgl(const struct > kasumi_test_data *tdata) > if (retval < 0) > return retval; >=20 > - ut_params->op =3D process_crypto_request(ts_params->valid_devs[0], > + if (cryptodev_dp_test) > + process_sym_hw_api_op(ts_params->valid_devs[0], 0, > + ut_params->op, 1, 0, 1, tdata->cipher_iv.len); > + else > + ut_params->op =3D process_crypto_request(ts_params- > >valid_devs[0], > ut_params->op); > TEST_ASSERT_NOT_NULL(ut_params->op, "failed to retrieve obuf"); >=20 > @@ -3026,8 +3238,9 @@ test_kasumi_encryption_oop(const struct > kasumi_test_data *tdata) > struct rte_cryptodev_sym_capability_idx cap_idx; > cap_idx.type =3D RTE_CRYPTO_SYM_XFORM_CIPHER; > cap_idx.algo.cipher =3D RTE_CRYPTO_CIPHER_KASUMI_F8; > + /* Data-path service does not support OOP */ > if (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0], > - &cap_idx) =3D=3D NULL) > + &cap_idx) =3D=3D NULL || cryptodev_dp_test) > return -ENOTSUP; >=20 > /* Create KASUMI session */ > @@ -3107,8 +3320,9 @@ test_kasumi_encryption_oop_sgl(const struct > kasumi_test_data *tdata) > struct rte_cryptodev_sym_capability_idx cap_idx; > cap_idx.type =3D RTE_CRYPTO_SYM_XFORM_CIPHER; > cap_idx.algo.cipher =3D RTE_CRYPTO_CIPHER_KASUMI_F8; > + /* Data-path service does not support OOP */ > if (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0], > - &cap_idx) =3D=3D NULL) > + &cap_idx) =3D=3D NULL || cryptodev_dp_test) > return -ENOTSUP; >=20 > rte_cryptodev_info_get(ts_params->valid_devs[0], &dev_info); > @@ -3192,8 +3406,9 @@ test_kasumi_decryption_oop(const struct > kasumi_test_data *tdata) > struct rte_cryptodev_sym_capability_idx cap_idx; > cap_idx.type =3D RTE_CRYPTO_SYM_XFORM_CIPHER; > cap_idx.algo.cipher =3D RTE_CRYPTO_CIPHER_KASUMI_F8; > + /* Data-path service does not support OOP */ > if (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0], > - &cap_idx) =3D=3D NULL) > + &cap_idx) =3D=3D NULL || cryptodev_dp_test) > return -ENOTSUP; >=20 > /* Create KASUMI session */ > @@ -3306,7 +3521,11 @@ test_kasumi_decryption(const struct > kasumi_test_data *tdata) > if (retval < 0) > return retval; >=20 > - ut_params->op =3D process_crypto_request(ts_params->valid_devs[0], > + if (cryptodev_dp_test) > + process_sym_hw_api_op(ts_params->valid_devs[0], 0, > + ut_params->op, 1, 0, 1, 0); > + else > + ut_params->op =3D process_crypto_request(ts_params- > >valid_devs[0], > ut_params->op); > TEST_ASSERT_NOT_NULL(ut_params->op, "failed to retrieve obuf"); >=20 > @@ -3381,7 +3600,11 @@ test_snow3g_encryption(const struct > snow3g_test_data *tdata) > if (retval < 0) > return retval; >=20 > - ut_params->op =3D process_crypto_request(ts_params->valid_devs[0], > + if (cryptodev_dp_test) > + process_sym_hw_api_op(ts_params->valid_devs[0], 0, > + ut_params->op, 1, 0, 1, tdata->cipher_iv.len); > + else > + ut_params->op =3D process_crypto_request(ts_params- > >valid_devs[0], > ut_params->op); > TEST_ASSERT_NOT_NULL(ut_params->op, "failed to retrieve obuf"); >=20 > @@ -3419,7 +3642,7 @@ test_snow3g_encryption_oop(const struct > snow3g_test_data *tdata) > cap_idx.type =3D RTE_CRYPTO_SYM_XFORM_CIPHER; > cap_idx.algo.cipher =3D RTE_CRYPTO_CIPHER_SNOW3G_UEA2; > if (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0], > - &cap_idx) =3D=3D NULL) > + &cap_idx) =3D=3D NULL || cryptodev_dp_test) > return -ENOTSUP; >=20 > /* Create SNOW 3G session */ > @@ -3502,7 +3725,7 @@ test_snow3g_encryption_oop_sgl(const struct > snow3g_test_data *tdata) > cap_idx.type =3D RTE_CRYPTO_SYM_XFORM_CIPHER; > cap_idx.algo.cipher =3D RTE_CRYPTO_CIPHER_SNOW3G_UEA2; > if (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0], > - &cap_idx) =3D=3D NULL) > + &cap_idx) =3D=3D NULL || cryptodev_dp_test) > return -ENOTSUP; >=20 > rte_cryptodev_info_get(ts_params->valid_devs[0], &dev_info); > @@ -3621,7 +3844,7 @@ test_snow3g_encryption_offset_oop(const struct > snow3g_test_data *tdata) > cap_idx.type =3D RTE_CRYPTO_SYM_XFORM_CIPHER; > cap_idx.algo.cipher =3D RTE_CRYPTO_CIPHER_SNOW3G_UEA2; > if (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0], > - &cap_idx) =3D=3D NULL) > + &cap_idx) =3D=3D NULL || cryptodev_dp_test) > return -ENOTSUP; >=20 > /* Create SNOW 3G session */ > @@ -3756,7 +3979,11 @@ static int test_snow3g_decryption(const struct > snow3g_test_data *tdata) > if (retval < 0) > return retval; >=20 > - ut_params->op =3D process_crypto_request(ts_params->valid_devs[0], > + if (cryptodev_dp_test) > + process_sym_hw_api_op(ts_params->valid_devs[0], 0, > + ut_params->op, 1, 0, 1, tdata->cipher_iv.len); > + else > + ut_params->op =3D process_crypto_request(ts_params- > >valid_devs[0], > ut_params->op); > TEST_ASSERT_NOT_NULL(ut_params->op, "failed to retrieve obuf"); > ut_params->obuf =3D ut_params->op->sym->m_dst; > @@ -3791,7 +4018,7 @@ static int test_snow3g_decryption_oop(const struct > snow3g_test_data *tdata) > cap_idx.type =3D RTE_CRYPTO_SYM_XFORM_CIPHER; > cap_idx.algo.cipher =3D RTE_CRYPTO_CIPHER_SNOW3G_UEA2; > if (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0], > - &cap_idx) =3D=3D NULL) > + &cap_idx) =3D=3D NULL || cryptodev_dp_test) > return -ENOTSUP; >=20 > /* Create SNOW 3G session */ > @@ -3924,7 +4151,11 @@ test_zuc_cipher_auth(const struct > wireless_test_data *tdata) > if (retval < 0) > return retval; >=20 > - ut_params->op =3D process_crypto_request(ts_params->valid_devs[0], > + if (cryptodev_dp_test) > + process_sym_hw_api_op(ts_params->valid_devs[0], 0, > + ut_params->op, 1, 1, 1, tdata->cipher_iv.len); > + else > + ut_params->op =3D process_crypto_request(ts_params- > >valid_devs[0], > ut_params->op); > TEST_ASSERT_NOT_NULL(ut_params->op, "failed to retrieve obuf"); > ut_params->obuf =3D ut_params->op->sym->m_src; > @@ -4019,7 +4250,11 @@ test_snow3g_cipher_auth(const struct > snow3g_test_data *tdata) > if (retval < 0) > return retval; >=20 > - ut_params->op =3D process_crypto_request(ts_params->valid_devs[0], > + if (cryptodev_dp_test) > + process_sym_hw_api_op(ts_params->valid_devs[0], 0, > + ut_params->op, 1, 1, 1, tdata->cipher_iv.len); > + else > + ut_params->op =3D process_crypto_request(ts_params- > >valid_devs[0], > ut_params->op); > TEST_ASSERT_NOT_NULL(ut_params->op, "failed to retrieve obuf"); > ut_params->obuf =3D ut_params->op->sym->m_src; > @@ -4087,6 +4322,8 @@ test_snow3g_auth_cipher(const struct > snow3g_test_data *tdata, > printf("Device doesn't support digest encrypted.\n"); > return -ENOTSUP; > } > + if (cryptodev_dp_test) > + return -ENOTSUP; > } >=20 > /* Create SNOW 3G session */ > @@ -4155,7 +4392,11 @@ test_snow3g_auth_cipher(const struct > snow3g_test_data *tdata, > if (retval < 0) > return retval; >=20 > - ut_params->op =3D process_crypto_request(ts_params->valid_devs[0], > + if (cryptodev_dp_test) > + process_sym_hw_api_op(ts_params->valid_devs[0], 0, > + ut_params->op, 1, 1, 1, tdata->cipher_iv.len); > + else > + ut_params->op =3D process_crypto_request(ts_params- > >valid_devs[0], > ut_params->op); >=20 > TEST_ASSERT_NOT_NULL(ut_params->op, "failed to retrieve obuf"); > @@ -4266,6 +4507,8 @@ test_snow3g_auth_cipher_sgl(const struct > snow3g_test_data *tdata, > return -ENOTSUP; > } > } else { > + if (cryptodev_dp_test) > + return -ENOTSUP; > if (!(feat_flags & RTE_CRYPTODEV_FF_OOP_SGL_IN_SGL_OUT)) > { > printf("Device doesn't support out-of-place scatter- > gather " > "in both input and output mbufs.\n"); > @@ -4344,7 +4587,11 @@ test_snow3g_auth_cipher_sgl(const struct > snow3g_test_data *tdata, > if (retval < 0) > return retval; >=20 > - ut_params->op =3D process_crypto_request(ts_params->valid_devs[0], > + if (cryptodev_dp_test) > + process_sym_hw_api_op(ts_params->valid_devs[0], 0, > + ut_params->op, 1, 1, 1, tdata->cipher_iv.len); > + else > + ut_params->op =3D process_crypto_request(ts_params- > >valid_devs[0], > ut_params->op); >=20 > TEST_ASSERT_NOT_NULL(ut_params->op, "failed to retrieve obuf"); > @@ -4453,6 +4700,8 @@ test_kasumi_auth_cipher(const struct > kasumi_test_data *tdata, > uint64_t feat_flags =3D dev_info.feature_flags; >=20 > if (op_mode =3D=3D OUT_OF_PLACE) { > + if (cryptodev_dp_test) > + return -ENOTSUP; > if (!(feat_flags & RTE_CRYPTODEV_FF_DIGEST_ENCRYPTED)) { > printf("Device doesn't support digest encrypted.\n"); > return -ENOTSUP; > @@ -4526,7 +4775,11 @@ test_kasumi_auth_cipher(const struct > kasumi_test_data *tdata, > if (retval < 0) > return retval; >=20 > - ut_params->op =3D process_crypto_request(ts_params->valid_devs[0], > + if (cryptodev_dp_test) > + process_sym_hw_api_op(ts_params->valid_devs[0], 0, > + ut_params->op, 1, 1, 1, tdata->cipher_iv.len); > + else > + ut_params->op =3D process_crypto_request(ts_params- > >valid_devs[0], > ut_params->op); >=20 > TEST_ASSERT_NOT_NULL(ut_params->op, "failed to retrieve obuf"); > @@ -4638,6 +4891,8 @@ test_kasumi_auth_cipher_sgl(const struct > kasumi_test_data *tdata, > return -ENOTSUP; > } > } else { > + if (cryptodev_dp_test) > + return -ENOTSUP; > if (!(feat_flags & RTE_CRYPTODEV_FF_OOP_SGL_IN_SGL_OUT)) > { > printf("Device doesn't support out-of-place scatter- > gather " > "in both input and output mbufs.\n"); > @@ -4716,7 +4971,11 @@ test_kasumi_auth_cipher_sgl(const struct > kasumi_test_data *tdata, > if (retval < 0) > return retval; >=20 > - ut_params->op =3D process_crypto_request(ts_params->valid_devs[0], > + if (cryptodev_dp_test) > + process_sym_hw_api_op(ts_params->valid_devs[0], 0, > + ut_params->op, 1, 1, 1, tdata->cipher_iv.len); > + else > + ut_params->op =3D process_crypto_request(ts_params- > >valid_devs[0], > ut_params->op); >=20 > TEST_ASSERT_NOT_NULL(ut_params->op, "failed to retrieve obuf"); > @@ -4857,7 +5116,11 @@ test_kasumi_cipher_auth(const struct > kasumi_test_data *tdata) > if (retval < 0) > return retval; >=20 > - ut_params->op =3D process_crypto_request(ts_params->valid_devs[0], > + if (cryptodev_dp_test) > + process_sym_hw_api_op(ts_params->valid_devs[0], 0, > + ut_params->op, 1, 1, 1, tdata->cipher_iv.len); > + else > + ut_params->op =3D process_crypto_request(ts_params- > >valid_devs[0], > ut_params->op); > TEST_ASSERT_NOT_NULL(ut_params->op, "failed to retrieve obuf"); >=20 > @@ -4944,7 +5207,11 @@ test_zuc_encryption(const struct wireless_test_dat= a > *tdata) > if (retval < 0) > return retval; >=20 > - ut_params->op =3D process_crypto_request(ts_params->valid_devs[0], > + if (cryptodev_dp_test) > + process_sym_hw_api_op(ts_params->valid_devs[0], 0, > + ut_params->op, 1, 0, 1, tdata->cipher_iv.len); > + else > + ut_params->op =3D process_crypto_request(ts_params- > >valid_devs[0], > ut_params->op); > TEST_ASSERT_NOT_NULL(ut_params->op, "failed to retrieve obuf"); >=20 > @@ -5031,7 +5298,11 @@ test_zuc_encryption_sgl(const struct > wireless_test_data *tdata) > if (retval < 0) > return retval; >=20 > - ut_params->op =3D process_crypto_request(ts_params->valid_devs[0], > + if (cryptodev_dp_test) > + process_sym_hw_api_op(ts_params->valid_devs[0], 0, > + ut_params->op, 1, 0, 1, tdata->cipher_iv.len); > + else > + ut_params->op =3D process_crypto_request(ts_params- > >valid_devs[0], > ut_params->op); > TEST_ASSERT_NOT_NULL(ut_params->op, "failed to retrieve obuf"); >=20 > @@ -5119,7 +5390,11 @@ test_zuc_authentication(const struct > wireless_test_data *tdata) > if (retval < 0) > return retval; >=20 > - ut_params->op =3D process_crypto_request(ts_params->valid_devs[0], > + if (cryptodev_dp_test) > + process_sym_hw_api_op(ts_params->valid_devs[0], 0, > + ut_params->op, 0, 1, 1, 0); > + else > + ut_params->op =3D process_crypto_request(ts_params- > >valid_devs[0], > ut_params->op); > ut_params->obuf =3D ut_params->op->sym->m_src; > TEST_ASSERT_NOT_NULL(ut_params->op, "failed to retrieve obuf"); > @@ -5177,6 +5452,8 @@ test_zuc_auth_cipher(const struct wireless_test_dat= a > *tdata, > return -ENOTSUP; > } > } else { > + if (cryptodev_dp_test) > + return -ENOTSUP; > if (!(feat_flags & RTE_CRYPTODEV_FF_OOP_SGL_IN_SGL_OUT)) > { > printf("Device doesn't support out-of-place scatter- > gather " > "in both input and output mbufs.\n"); > @@ -5251,7 +5528,11 @@ test_zuc_auth_cipher(const struct > wireless_test_data *tdata, > if (retval < 0) > return retval; >=20 > - ut_params->op =3D process_crypto_request(ts_params->valid_devs[0], > + if (cryptodev_dp_test) > + process_sym_hw_api_op(ts_params->valid_devs[0], 0, > + ut_params->op, 1, 1, 1, tdata->cipher_iv.len); > + else > + ut_params->op =3D process_crypto_request(ts_params- > >valid_devs[0], > ut_params->op); >=20 > TEST_ASSERT_NOT_NULL(ut_params->op, "failed to retrieve obuf"); > @@ -5359,6 +5640,8 @@ test_zuc_auth_cipher_sgl(const struct > wireless_test_data *tdata, > return -ENOTSUP; > } > } else { > + if (cryptodev_dp_test) > + return -ENOTSUP; > if (!(feat_flags & RTE_CRYPTODEV_FF_OOP_SGL_IN_SGL_OUT)) > { > printf("Device doesn't support out-of-place scatter- > gather " > "in both input and output mbufs.\n"); > @@ -5437,7 +5720,11 @@ test_zuc_auth_cipher_sgl(const struct > wireless_test_data *tdata, > if (retval < 0) > return retval; >=20 > - ut_params->op =3D process_crypto_request(ts_params->valid_devs[0], > + if (cryptodev_dp_test) > + process_sym_hw_api_op(ts_params->valid_devs[0], 0, > + ut_params->op, 1, 1, 1, tdata->cipher_iv.len); > + else > + ut_params->op =3D process_crypto_request(ts_params- > >valid_devs[0], > ut_params->op); >=20 > TEST_ASSERT_NOT_NULL(ut_params->op, "failed to retrieve obuf"); > @@ -5580,6 +5867,9 @@ test_kasumi_decryption_test_case_2(void) > static int > test_kasumi_decryption_test_case_3(void) > { > + /* rte_crypto_mbuf_to_vec does not support incomplete mbuf build */ > + if (cryptodev_dp_test) > + return -ENOTSUP; > return test_kasumi_decryption(&kasumi_test_case_3); > } >=20 > @@ -5779,6 +6069,9 @@ test_snow3g_auth_cipher_part_digest_enc_oop(void) > static int > test_snow3g_auth_cipher_test_case_3_sgl(void) > { > + /* rte_crypto_mbuf_to_vec does not support incomplete mbuf build */ > + if (cryptodev_dp_test) > + return -ENOTSUP; > return test_snow3g_auth_cipher_sgl( > &snow3g_auth_cipher_test_case_3, IN_PLACE, 0); > } > @@ -5793,6 +6086,9 @@ test_snow3g_auth_cipher_test_case_3_oop_sgl(void) > static int > test_snow3g_auth_cipher_part_digest_enc_sgl(void) > { > + /* rte_crypto_mbuf_to_vec does not support incomplete mbuf build */ > + if (cryptodev_dp_test) > + return -ENOTSUP; > return test_snow3g_auth_cipher_sgl( > &snow3g_auth_cipher_partial_digest_encryption, > IN_PLACE, 0); > @@ -6146,10 +6442,9 @@ test_mixed_auth_cipher(const struct > mixed_cipher_auth_test_data *tdata, > unsigned int ciphertext_len; >=20 > struct rte_cryptodev_info dev_info; > - struct rte_crypto_op *op; >=20 > /* Check if device supports particular algorithms separately */ > - if (test_mixed_check_if_unsupported(tdata)) > + if (test_mixed_check_if_unsupported(tdata) || cryptodev_dp_test) > return -ENOTSUP; >=20 > rte_cryptodev_info_get(ts_params->valid_devs[0], &dev_info); > @@ -6161,6 +6456,9 @@ test_mixed_auth_cipher(const struct > mixed_cipher_auth_test_data *tdata, > return -ENOTSUP; > } >=20 > + if (op_mode =3D=3D OUT_OF_PLACE) > + return -ENOTSUP; > + > /* Create the session */ > if (verify) > retval =3D create_wireless_algo_cipher_auth_session( > @@ -6192,9 +6490,11 @@ test_mixed_auth_cipher(const struct > mixed_cipher_auth_test_data *tdata, > /* clear mbuf payload */ > memset(rte_pktmbuf_mtod(ut_params->ibuf, uint8_t *), 0, > rte_pktmbuf_tailroom(ut_params->ibuf)); > - if (op_mode =3D=3D OUT_OF_PLACE) > + if (op_mode =3D=3D OUT_OF_PLACE) { > + > memset(rte_pktmbuf_mtod(ut_params->obuf, uint8_t *), 0, > rte_pktmbuf_tailroom(ut_params->obuf)); > + } Unnecessary change. >=20 > ciphertext_len =3D ceil_byte_length(tdata->ciphertext.len_bits); > plaintext_len =3D ceil_byte_length(tdata->plaintext.len_bits); > @@ -6235,18 +6535,17 @@ test_mixed_auth_cipher(const struct > mixed_cipher_auth_test_data *tdata, > if (retval < 0) > return retval; >=20 > - op =3D process_crypto_request(ts_params->valid_devs[0], > + ut_params->op =3D process_crypto_request(ts_params->valid_devs[0], > ut_params->op); >=20 > /* Check if the op failed because the device doesn't */ > /* support this particular combination of algorithms */ > - if (op =3D=3D NULL && ut_params->op->status =3D=3D > + if (ut_params->op =3D=3D NULL && ut_params->op->status =3D=3D > RTE_CRYPTO_OP_STATUS_INVALID_SESSION) { > printf("Device doesn't support this mixed combination. " > "Test Skipped.\n"); > return -ENOTSUP; > } > - ut_params->op =3D op; Unnecessary change >=20 > TEST_ASSERT_NOT_NULL(ut_params->op, "failed to retrieve obuf"); >=20 > @@ -6337,10 +6636,9 @@ test_mixed_auth_cipher_sgl(const struct > mixed_cipher_auth_test_data *tdata, > uint8_t digest_buffer[10000]; >=20 > struct rte_cryptodev_info dev_info; > - struct rte_crypto_op *op; >=20 > /* Check if device supports particular algorithms */ > - if (test_mixed_check_if_unsupported(tdata)) > + if (test_mixed_check_if_unsupported(tdata) || cryptodev_dp_test) > return -ENOTSUP; >=20 > rte_cryptodev_info_get(ts_params->valid_devs[0], &dev_info); > @@ -6440,20 +6738,18 @@ test_mixed_auth_cipher_sgl(const struct > mixed_cipher_auth_test_data *tdata, > if (retval < 0) > return retval; >=20 > - op =3D process_crypto_request(ts_params->valid_devs[0], > + ut_params->op =3D process_crypto_request(ts_params->valid_devs[0], > ut_params->op); >=20 > /* Check if the op failed because the device doesn't */ > /* support this particular combination of algorithms */ > - if (op =3D=3D NULL && ut_params->op->status =3D=3D > + if (ut_params->op =3D=3D NULL && ut_params->op->status =3D=3D > RTE_CRYPTO_OP_STATUS_INVALID_SESSION) { > printf("Device doesn't support this mixed combination. " > "Test Skipped.\n"); > return -ENOTSUP; > } Unnecessary change >=20 > - ut_params->op =3D op; > - > TEST_ASSERT_NOT_NULL(ut_params->op, "failed to retrieve obuf"); >=20 > ut_params->obuf =3D (op_mode =3D=3D IN_PLACE ? > @@ -7043,6 +7339,9 @@ test_authenticated_encryption(const struct > aead_test_data *tdata) > /* Process crypto operation */ > if (gbl_action_type =3D=3D RTE_SECURITY_ACTION_TYPE_CPU_CRYPTO) > process_cpu_aead_op(ts_params->valid_devs[0], ut_params- > >op); > + else if (cryptodev_dp_test) > + process_sym_hw_api_op(ts_params->valid_devs[0], 0, > + ut_params->op, 0, 0, 0, 0); > else > TEST_ASSERT_NOT_NULL( > process_crypto_request(ts_params->valid_devs[0], > @@ -8540,6 +8839,9 @@ test_authenticated_decryption(const struct > aead_test_data *tdata) > /* Process crypto operation */ > if (gbl_action_type =3D=3D RTE_SECURITY_ACTION_TYPE_CPU_CRYPTO) > process_cpu_aead_op(ts_params->valid_devs[0], ut_params- > >op); > + else if (cryptodev_dp_test) > + process_sym_hw_api_op(ts_params->valid_devs[0], 0, > + ut_params->op, 0, 0, 0, 0); > else > TEST_ASSERT_NOT_NULL( > process_crypto_request(ts_params->valid_devs[0], > @@ -8833,6 +9135,9 @@ test_authenticated_encryption_oop(const struct > aead_test_data *tdata) > if (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0], > &cap_idx) =3D=3D NULL) > return -ENOTSUP; > + /* Data-path service does not support OOP */ > + if (cryptodev_dp_test) > + return -ENOTSUP; >=20 > /* not supported with CPU crypto */ > if (gbl_action_type =3D=3D RTE_SECURITY_ACTION_TYPE_CPU_CRYPTO) > @@ -8923,8 +9228,9 @@ test_authenticated_decryption_oop(const struct > aead_test_data *tdata) > &cap_idx) =3D=3D NULL) > return -ENOTSUP; >=20 > - /* not supported with CPU crypto */ > - if (gbl_action_type =3D=3D RTE_SECURITY_ACTION_TYPE_CPU_CRYPTO) > + /* not supported with CPU crypto and data-path service*/ > + if (gbl_action_type =3D=3D RTE_SECURITY_ACTION_TYPE_CPU_CRYPTO || > + cryptodev_dp_test) > return -ENOTSUP; >=20 > /* Create AEAD session */ > @@ -9151,8 +9457,13 @@ test_authenticated_decryption_sessionless( > "crypto op session type not sessionless"); >=20 > /* Process crypto operation */ > - TEST_ASSERT_NOT_NULL(process_crypto_request(ts_params- > >valid_devs[0], > - ut_params->op), "failed to process sym crypto op"); > + if (cryptodev_dp_test) > + process_sym_hw_api_op(ts_params->valid_devs[0], 0, > + ut_params->op, 0, 0, 0, 0); > + else > + TEST_ASSERT_NOT_NULL(process_crypto_request( > + ts_params->valid_devs[0], ut_params->op), > + "failed to process sym crypto op"); >=20 > TEST_ASSERT_NOT_NULL(ut_params->op, "failed crypto process"); >=20 > @@ -9472,6 +9783,9 @@ test_MD5_HMAC_generate(const struct > HMAC_MD5_vector *test_case) > if (gbl_action_type =3D=3D RTE_SECURITY_ACTION_TYPE_CPU_CRYPTO) > process_cpu_crypt_auth_op(ts_params->valid_devs[0], > ut_params->op); > + else if (cryptodev_dp_test) > + process_sym_hw_api_op(ts_params->valid_devs[0], 0, > + ut_params->op, 0, 1, 0, 0); > else > TEST_ASSERT_NOT_NULL( > process_crypto_request(ts_params->valid_devs[0], > @@ -9530,6 +9844,9 @@ test_MD5_HMAC_verify(const struct > HMAC_MD5_vector *test_case) > if (gbl_action_type =3D=3D RTE_SECURITY_ACTION_TYPE_CPU_CRYPTO) > process_cpu_crypt_auth_op(ts_params->valid_devs[0], > ut_params->op); > + else if (cryptodev_dp_test) > + process_sym_hw_api_op(ts_params->valid_devs[0], 0, > + ut_params->op, 0, 1, 0, 0); > else > TEST_ASSERT_NOT_NULL( > process_crypto_request(ts_params->valid_devs[0], > @@ -10098,6 +10415,9 @@ test_AES_GMAC_authentication(const struct > gmac_test_data *tdata) > if (gbl_action_type =3D=3D RTE_SECURITY_ACTION_TYPE_CPU_CRYPTO) > process_cpu_crypt_auth_op(ts_params->valid_devs[0], > ut_params->op); > + else if (cryptodev_dp_test) > + process_sym_hw_api_op(ts_params->valid_devs[0], 0, > + ut_params->op, 0, 1, 0, 0); > else > TEST_ASSERT_NOT_NULL( > process_crypto_request(ts_params->valid_devs[0], > @@ -10215,6 +10535,9 @@ test_AES_GMAC_authentication_verify(const > struct gmac_test_data *tdata) > if (gbl_action_type =3D=3D RTE_SECURITY_ACTION_TYPE_CPU_CRYPTO) > process_cpu_crypt_auth_op(ts_params->valid_devs[0], > ut_params->op); > + else if (cryptodev_dp_test) > + process_sym_hw_api_op(ts_params->valid_devs[0], 0, > + ut_params->op, 0, 1, 0, 0); > else > TEST_ASSERT_NOT_NULL( > process_crypto_request(ts_params->valid_devs[0], > @@ -10780,7 +11103,10 @@ > test_authentication_verify_fail_when_data_corruption( > TEST_ASSERT_NOT_EQUAL(ut_params->op->status, > RTE_CRYPTO_OP_STATUS_SUCCESS, > "authentication not failed"); > - } else { > + } else if (cryptodev_dp_test) > + process_sym_hw_api_op(ts_params->valid_devs[0], 0, > + ut_params->op, 0, 1, 0, 0); > + else { > ut_params->op =3D process_crypto_request(ts_params- > >valid_devs[0], > ut_params->op); > TEST_ASSERT_NULL(ut_params->op, "authentication not > failed"); > @@ -10851,7 +11177,10 @@ > test_authentication_verify_GMAC_fail_when_corruption( > TEST_ASSERT_NOT_EQUAL(ut_params->op->status, > RTE_CRYPTO_OP_STATUS_SUCCESS, > "authentication not failed"); > - } else { > + } else if (cryptodev_dp_test) > + process_sym_hw_api_op(ts_params->valid_devs[0], 0, > + ut_params->op, 0, 1, 0, 0); > + else { > ut_params->op =3D process_crypto_request(ts_params- > >valid_devs[0], > ut_params->op); > TEST_ASSERT_NULL(ut_params->op, "authentication not > failed"); > @@ -10926,7 +11255,10 @@ > test_authenticated_decryption_fail_when_corruption( > TEST_ASSERT_NOT_EQUAL(ut_params->op->status, > RTE_CRYPTO_OP_STATUS_SUCCESS, > "authentication not failed"); > - } else { > + } else if (cryptodev_dp_test) > + process_sym_hw_api_op(ts_params->valid_devs[0], 0, > + ut_params->op, 1, 1, 0, 0); > + else { > ut_params->op =3D process_crypto_request(ts_params- > >valid_devs[0], > ut_params->op); > TEST_ASSERT_NULL(ut_params->op, "authentication not > failed"); > @@ -11021,6 +11353,9 @@ test_authenticated_encryt_with_esn( > if (gbl_action_type =3D=3D RTE_SECURITY_ACTION_TYPE_CPU_CRYPTO) > process_cpu_crypt_auth_op(ts_params->valid_devs[0], > ut_params->op); > + else if (cryptodev_dp_test) > + process_sym_hw_api_op(ts_params->valid_devs[0], 0, > + ut_params->op, 1, 1, 0, 0); > else > ut_params->op =3D process_crypto_request( > ts_params->valid_devs[0], ut_params->op); > @@ -11141,6 +11476,9 @@ test_authenticated_decrypt_with_esn( > if (gbl_action_type =3D=3D RTE_SECURITY_ACTION_TYPE_CPU_CRYPTO) > process_cpu_crypt_auth_op(ts_params->valid_devs[0], > ut_params->op); > + else if (cryptodev_dp_test) > + process_sym_hw_api_op(ts_params->valid_devs[0], 0, > + ut_params->op, 1, 1, 0, 0); > else > ut_params->op =3D process_crypto_request(ts_params- > >valid_devs[0], > ut_params->op); > @@ -11285,6 +11623,9 @@ test_authenticated_encryption_SGL(const struct > aead_test_data *tdata, > unsigned int sgl_in =3D fragsz < tdata->plaintext.len; > unsigned int sgl_out =3D (fragsz_oop ? fragsz_oop : fragsz) < > tdata->plaintext.len; > + /* Data path service does not support OOP */ > + if (cryptodev_dp_test) > + return -ENOTSUP; > if (sgl_in && !sgl_out) { > if (!(dev_info.feature_flags & >=20 > RTE_CRYPTODEV_FF_OOP_SGL_IN_LB_OUT)) > @@ -11480,6 +11821,9 @@ test_authenticated_encryption_SGL(const struct > aead_test_data *tdata, > if (oop =3D=3D IN_PLACE && > gbl_action_type =3D=3D > RTE_SECURITY_ACTION_TYPE_CPU_CRYPTO) > process_cpu_aead_op(ts_params->valid_devs[0], ut_params- > >op); > + else if (cryptodev_dp_test) > + process_sym_hw_api_op(ts_params->valid_devs[0], 0, > + ut_params->op, 0, 0, 0, 0); > else > TEST_ASSERT_NOT_NULL( > process_crypto_request(ts_params->valid_devs[0], > @@ -13041,6 +13385,29 @@ test_cryptodev_nitrox(void) > return unit_test_suite_runner(&cryptodev_nitrox_testsuite); > } >=20 > +static int > +test_qat_sym_direct_api(void /*argv __rte_unused, int argc __rte_unused*= /) > +{ > + int ret; > + > + gbl_driver_id =3D rte_cryptodev_driver_id_get( > + RTE_STR(CRYPTODEV_NAME_QAT_SYM_PMD)); > + > + if (gbl_driver_id =3D=3D -1) { > + RTE_LOG(ERR, USER1, "QAT PMD must be loaded. Check that > both " > + "CONFIG_RTE_LIBRTE_PMD_QAT and > CONFIG_RTE_LIBRTE_PMD_QAT_SYM " > + "are enabled in config file to run this testsuite.\n"); > + return TEST_SKIPPED; > + } > + > + cryptodev_dp_test =3D 1; Cryptodev_dp_test cannot be set blindly. You should check for feature flag= of the device If the feature is supported or not. Can we also rename this flag as "test_raw_crypto_dp" > + ret =3D unit_test_suite_runner(&cryptodev_testsuite); > + cryptodev_dp_test =3D 0; > + > + return ret; > +} > + > +REGISTER_TEST_COMMAND(cryptodev_qat_sym_api_autotest, > test_qat_sym_direct_api); It would be better to name the test string as test_cryptodev_qat_raw_dp > REGISTER_TEST_COMMAND(cryptodev_qat_autotest, test_cryptodev_qat); > REGISTER_TEST_COMMAND(cryptodev_aesni_mb_autotest, > test_cryptodev_aesni_mb); > REGISTER_TEST_COMMAND(cryptodev_cpu_aesni_mb_autotest, > diff --git a/app/test/test_cryptodev.h b/app/test/test_cryptodev.h > index 41542e055..e4e4c7626 100644 > --- a/app/test/test_cryptodev.h > +++ b/app/test/test_cryptodev.h > @@ -71,6 +71,8 @@ > #define CRYPTODEV_NAME_CAAM_JR_PMD crypto_caam_jr > #define CRYPTODEV_NAME_NITROX_PMD crypto_nitrox_sym >=20 > +extern int cryptodev_dp_test; > + > /** > * Write (spread) data from buffer to mbuf data > * > @@ -209,4 +211,9 @@ create_segmented_mbuf(struct rte_mempool > *mbuf_pool, int pkt_len, > return NULL; > } >=20 > +void > +process_sym_hw_api_op(uint8_t dev_id, uint16_t qp_id, struct rte_crypto_= op > *op, > + uint8_t is_cipher, uint8_t is_auth, uint8_t len_in_bits, > + uint8_t cipher_iv_len); > + > #endif /* TEST_CRYPTODEV_H_ */ > diff --git a/app/test/test_cryptodev_blockcipher.c > b/app/test/test_cryptodev_blockcipher.c > index 221262341..311b34c15 100644 > --- a/app/test/test_cryptodev_blockcipher.c > +++ b/app/test/test_cryptodev_blockcipher.c > @@ -462,25 +462,44 @@ test_blockcipher_one_case(const struct > blockcipher_test_case *t, > } >=20 > /* Process crypto operation */ > - if (rte_cryptodev_enqueue_burst(dev_id, 0, &op, 1) !=3D 1) { > - snprintf(test_msg, BLOCKCIPHER_TEST_MSG_LEN, > - "line %u FAILED: %s", > - __LINE__, "Error sending packet for encryption"); > - status =3D TEST_FAILED; > - goto error_exit; > - } > + if (cryptodev_dp_test) { > + uint8_t is_cipher =3D 0, is_auth =3D 0; >=20 > - op =3D NULL; > + if (t->feature_mask & BLOCKCIPHER_TEST_FEATURE_OOP) { > + RTE_LOG(DEBUG, USER1, > + "QAT direct API does not support OOP, Test > Skipped.\n"); > + snprintf(test_msg, BLOCKCIPHER_TEST_MSG_LEN, > "SKIPPED"); > + status =3D TEST_SUCCESS; > + goto error_exit; > + } > + if (t->op_mask & BLOCKCIPHER_TEST_OP_CIPHER) > + is_cipher =3D 1; > + if (t->op_mask & BLOCKCIPHER_TEST_OP_AUTH) > + is_auth =3D 1; >=20 > - while (rte_cryptodev_dequeue_burst(dev_id, 0, &op, 1) =3D=3D 0) > - rte_pause(); > + process_sym_hw_api_op(dev_id, 0, op, is_cipher, is_auth, 0, > + tdata->iv.len); > + } else { > + if (rte_cryptodev_enqueue_burst(dev_id, 0, &op, 1) !=3D 1) { > + snprintf(test_msg, BLOCKCIPHER_TEST_MSG_LEN, > + "line %u FAILED: %s", > + __LINE__, "Error sending packet for > encryption"); > + status =3D TEST_FAILED; > + goto error_exit; > + } >=20 > - if (!op) { > - snprintf(test_msg, BLOCKCIPHER_TEST_MSG_LEN, > - "line %u FAILED: %s", > - __LINE__, "Failed to process sym crypto op"); > - status =3D TEST_FAILED; > - goto error_exit; > + op =3D NULL; > + > + while (rte_cryptodev_dequeue_burst(dev_id, 0, &op, 1) =3D=3D 0) > + rte_pause(); > + > + if (!op) { > + snprintf(test_msg, BLOCKCIPHER_TEST_MSG_LEN, > + "line %u FAILED: %s", > + __LINE__, "Failed to process sym crypto op"); > + status =3D TEST_FAILED; > + goto error_exit; > + } > } >=20 > debug_hexdump(stdout, "m_src(after):", > -- > 2.20.1