From patchwork Sun Oct 17 16:16:37 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 101911 X-Patchwork-Delegate: gakhil@marvell.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id C639AA0547; Sun, 17 Oct 2021 18:21:31 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 7F6E640E01; Sun, 17 Oct 2021 18:21:28 +0200 (CEST) Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-eopbgr80079.outbound.protection.outlook.com [40.107.8.79]) by mails.dpdk.org (Postfix) with ESMTP id E84114003C for ; Sun, 17 Oct 2021 18:21:25 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MDgLq6pArWrzllK/d9YeBpfxmKW4ipMNQKajj72P743Boypt5Iw3n3fNB6X8b7iG1+VO3bC0Xgn/Bp7yRRqkFwX00YygF/IADJIoG+HumWJ48sHmEvK5MlJiS5KihIMwP5seAcB7f1d/uPEQ/qRfPiUQZ+LqLCLoyLjC60RuUKwNkuMTcGuCdOyyYS70P8d74yk2GmHPhw8LsrW4EiRdQBErs3WJB9U6TLAKBPT92SkddMnW4HK5oHSA8HItn1blIbjPcbPjW8SkycUSIcD2icXNVsSgOKaC7x+Be3WDs84UrxrxWKcIQ4bmajCDVIfoftaBYws5fSzhv2uRqK/PCg== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=D6DI7YxdX6ph5CWGyhZgGIPfhRE7S+giBsnVsBfxDNk=; b=ULDh/S2V100IeU5cT3LRdDnFu0FaegHDrnSPdTPVSH4zC/POVXa/CVqVUzaS4r5GTbXygxLaklLzCwBua1RUC4UZHGlaY+cXHpFgLHSQ6dZz5PRXUhwDHpV8ovDQxUczNvqQ9BBRd31m5Sv0HPaIzdxgVlP6gg1L1GjeIA3sy5moyLgqnSmZMDXbEa6DoS0Niv4g9BvjcG/IQ3szR7EuKksRUIiUfUhwNLzHldk2qqGa9aPEjb52ypIPd72sCaJAlSqP8HBfQ/GeGikt7QefZMSOEXck0uaRykVM+yV182EhUiKxAaWfuCROKCSy6eHkGPjSIEJRUoFQO7Hh9lBlcg== 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=D6DI7YxdX6ph5CWGyhZgGIPfhRE7S+giBsnVsBfxDNk=; b=dMNPiP5y9HHe5X4FfNBLylaj9zaoQ+t6RtMkgKz5HZ5wW/PGl688COcjOqeFDfnd2Er5Xp2cyvPGuiFGLgp+NJGj7sGE8kandny3tB4k9mNZx37iIDwDgSExqzOMno0B2FNtF6WND3Cy05gcTbDySWJI5naW/UsGi4bnHcSTFjQ= Authentication-Results: dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; dmarc=none action=none header.from=nxp.com; Received: from DU2PR04MB8630.eurprd04.prod.outlook.com (2603:10a6:10:2dd::15) by DU2PR04MB8615.eurprd04.prod.outlook.com (2603:10a6:10:2da::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.15; Sun, 17 Oct 2021 16:21:25 +0000 Received: from DU2PR04MB8630.eurprd04.prod.outlook.com ([fe80::945d:e362:712d:1b80]) by DU2PR04MB8630.eurprd04.prod.outlook.com ([fe80::945d:e362:712d:1b80%3]) with mapi id 15.20.4608.018; Sun, 17 Oct 2021 16:21:25 +0000 From: Hemant Agrawal To: dev@dpdk.org, gakhil@marvell.com Cc: konstantin.ananyev@intel.com, roy.fan.zhang@intel.com Date: Sun, 17 Oct 2021 21:46:37 +0530 Message-Id: <20211017161651.9220-2-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211017161651.9220-1-hemant.agrawal@nxp.com> References: <20211013190032.2308-1-hemant.agrawal@nxp.com> <20211017161651.9220-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SI2PR01CA0053.apcprd01.prod.exchangelabs.com (2603:1096:4:193::7) To DU2PR04MB8630.eurprd04.prod.outlook.com (2603:10a6:10:2dd::15) MIME-Version: 1.0 Received: from dpdk-xeon.ap.freescale.net (92.120.0.67) by SI2PR01CA0053.apcprd01.prod.exchangelabs.com (2603:1096:4:193::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.15 via Frontend Transport; Sun, 17 Oct 2021 16:21:23 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e038a2a1-8a5a-4869-2089-08d9918a2a30 X-MS-TrafficTypeDiagnostic: DU2PR04MB8615: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:260; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Xo+1BKdmQ1EPHgtwszNLVDblcBN8lAQ4rQ+pTyqWUFg3TBUmpCHp21Xj2SG/WX19DRXG+D8Fk3JWUKL9ecyX312yjX5WRT5K8pHCm//youm34QmRRcnnK9rFsdUB3HzBnfMaJHaexwtO2A8dELAawRremtVEX7Uyp/zbjj3A5xAV0dQ8tvghs0+4xyAxw4Q+J+Isv63fFXnW5IY4z6Y0h4PrAbFoTo8CZT9zQK9HdSNwubNjS13PoKl48CeU7qoIneOUOQDpcWpfI/0Eo93saRbEJP/neZxy4JdJEuxX0BhHjmx1/h1W1wyChSaY4kmmBKztDnjDtL/kFDXLnrwBvy5M1y6LxHpB6SbrrS68IqkVb6zgNOWJ5+px0IQBK5S1aQfu83MOxM3+86AmuNRbm2VtoHX6a7SUrEOegyS+F7K1iINk2dEHQBzk8v4dXPhnL+Hm2k12JJiz5k/mouSbYpy4KAx7ZtxcyanT/PZMZWATnf80HT9dnYZ3ELZLABm/lXQqITFcI+atUtpepEpcxtm9m8XTuBnQYH76dvFaSubJwlxU4ONeXwgzpUIVuexiuwTurzAGuBfqop/1ErG1mBAhz2o9GvghJAe9MqwzJ2P7wgOtxPbh2PRiCRZRRRLzubIvaaPFaQIe6ljh366JL4QFnc6Y0y35YlPjeau6PePI62xGZkv7Ugg4xfHQdj7V6uC+k44g5pCpsLjP4Uz/0w== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DU2PR04MB8630.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(6486002)(66476007)(8936002)(66556008)(66946007)(86362001)(52116002)(36756003)(5660300002)(38350700002)(8676002)(38100700002)(508600001)(6506007)(26005)(44832011)(4326008)(6512007)(2616005)(83380400001)(6666004)(1076003)(2906002)(316002)(186003)(956004); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: tUmy5dLC1XbrtbGR4IpK30+36EDmNrovNDQUDJbykkt7bvIMBMCDmAJCYsRAdjTbzgxN9an6HpSrHs1kVydbZcExEu/CG2bpu+qliFs+RCC/EYIrXu+RJUPnOSNx9rQbDkTAd16aRCMUDSF47Cugs3plukYGtIdhmwpz0H10UKHgZIJNPuK9rP2J2m61CxztXrtyqxnj8UDnmgJpl+IJo9G7X/jbTfztqBNGGeeNRhGgnF7CLiFhYOj5dH9USDQk2CjozjUoSzcM0z+z1jWUzqEalG6f2fB5doMo+BazADB0Oiriwn7D4fqFDB27ghl6soXD8ucjsi9NEG7wfInt6hbQU66er0e3A9ensR48xfkbRG9naqZ7oJ2AhIy1CX6O1XhCTGKzbUcqVg6zPtfTkjHqSI+6fRMkwk/rRjb8VOFdzcMKJ48WKrZmYGpyHTBv3cxR/IP7FzHtiB32yJGbqtHPdJgRAhr51ZGQQiO4QlUQPAtpVuKX2j+nS2X1+3W/Wg3Fse+4/1OPW8g8faAhzN9g1kyStH1ucQCJW93lrR7jisenZK0qJKdgJjyALqDZL/SPkrX0xGa5JA/GJFwQPv0ufxM78fAERL+0q5fvuUcEmcV4wIu9ml3pARZP9t4cZtbTHYqdyd2GMYf83FrJt6B52yeCB+XvYiW+8LCae+Cd5Zd/7ywvNsD2Z7xXed11P7yyjaNeRvzrFnxDba02tGv97ESgnGQicldB0FIB/SObLHQLP0eydKNQOzPPxpQLdlY2ef4m5l4HU8YbZ1AZBO1DP21tRnulratRQeryXjRv56AcX2GSehu47uQAMFsQUl+0MA+IsTWDkRwcZRYOXUFRUEL4qjfmGwXAufYCuA3amcMXuTQSzZ2qlacYMvH2OB6LrEHvcyM0/47lDfZ55zXpcFK6QTs4c6W/77LOzWbHs+NkKBQP8HLSuM+8vNl10z8mY0SryMgIB7EwcTT+BNwKDJ8FSVG0Q3n2kzg7mB3INPGNbFQP/k79RFSqAb1FlwuCfTXANPej8f68UfAptASc65CTVh4JDZKpgH1qf2I8un8bzsUS1qLrUWpOt1B4EXO8707YKUinQ8DKh6nQD79uWm1LMgmnYVmFEAdgOBkza3iDnUmpMzKT0hdMt+YLWfFLVGvboWe54C83+ZUEGj6K7OwMD4rvgEMHyTKHZN7zLQ7bA2DyVuYG2cbUHdVBa/IA8hRnvEXmXA+Jn93bwmD1L6Q6+gdcXewStAWuxM3ekU8xuyz4uxCCPOyQy07Vn+fQj2AyrjUrWZT5J3VKrLHoHP9foqawhuhnkO14qGPki6ylgsNoomKKe/fCYdLH X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: e038a2a1-8a5a-4869-2089-08d9918a2a30 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2021 16:21:25.0759 (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: RiZI5b4R5ddhixO0ugTp/QPJpbdQpALYDW4Gz6RXEZ314EMUwyUGST3kmj/0KccJaMHfk5nXSiFJ3jpZSS0HvA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8615 Subject: [dpdk-dev] [PATCH v5 01/15] crypto: change sgl to src_sgl in vector 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 Sender: "dev" This patch renames the sgl to src_sgl to help differentiating between source and destination sgl. Signed-off-by: Hemant Agrawal Acked-by: Akhil Goyal Acked-by: Konstantin Ananyev --- app/test/test_cryptodev.c | 6 ++--- drivers/crypto/aesni_gcm/aesni_gcm_pmd.c | 12 +++++----- drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c | 6 ++--- drivers/crypto/qat/qat_sym_hw_dp.c | 27 +++++++++++++--------- lib/cryptodev/rte_crypto_sym.h | 2 +- lib/ipsec/misc.h | 4 ++-- 6 files changed, 31 insertions(+), 26 deletions(-) diff --git a/app/test/test_cryptodev.c b/app/test/test_cryptodev.c index 65b64e1af0..4778dafbe5 100644 --- a/app/test/test_cryptodev.c +++ b/app/test/test_cryptodev.c @@ -232,7 +232,7 @@ process_sym_raw_dp_op(uint8_t dev_id, uint16_t qp_id, digest.va = NULL; sgl.vec = data_vec; vec.num = 1; - vec.sgl = &sgl; + vec.src_sgl = &sgl; vec.iv = &cipher_iv; vec.digest = &digest; vec.aad = &aad_auth_iv; @@ -396,7 +396,7 @@ process_cpu_aead_op(uint8_t dev_id, struct rte_crypto_op *op) sgl.vec = vec; sgl.num = n; - symvec.sgl = &sgl; + symvec.src_sgl = &sgl; symvec.iv = &iv_ptr; symvec.digest = &digest_ptr; symvec.aad = &aad_ptr; @@ -442,7 +442,7 @@ process_cpu_crypt_auth_op(uint8_t dev_id, struct rte_crypto_op *op) sgl.vec = vec; sgl.num = n; - symvec.sgl = &sgl; + symvec.src_sgl = &sgl; symvec.iv = &iv_ptr; symvec.digest = &digest_ptr; symvec.status = &st; diff --git a/drivers/crypto/aesni_gcm/aesni_gcm_pmd.c b/drivers/crypto/aesni_gcm/aesni_gcm_pmd.c index 330aad8157..d0368828e9 100644 --- a/drivers/crypto/aesni_gcm/aesni_gcm_pmd.c +++ b/drivers/crypto/aesni_gcm/aesni_gcm_pmd.c @@ -535,7 +535,7 @@ aesni_gcm_sgl_encrypt(struct aesni_gcm_session *s, processed = 0; for (i = 0; i < vec->num; ++i) { aesni_gcm_process_gcm_sgl_op(s, gdata_ctx, - &vec->sgl[i], vec->iv[i].va, + &vec->src_sgl[i], vec->iv[i].va, vec->aad[i].va); vec->status[i] = aesni_gcm_sgl_op_finalize_encryption(s, gdata_ctx, vec->digest[i].va); @@ -554,7 +554,7 @@ aesni_gcm_sgl_decrypt(struct aesni_gcm_session *s, processed = 0; for (i = 0; i < vec->num; ++i) { aesni_gcm_process_gcm_sgl_op(s, gdata_ctx, - &vec->sgl[i], vec->iv[i].va, + &vec->src_sgl[i], vec->iv[i].va, vec->aad[i].va); vec->status[i] = aesni_gcm_sgl_op_finalize_decryption(s, gdata_ctx, vec->digest[i].va); @@ -572,13 +572,13 @@ aesni_gmac_sgl_generate(struct aesni_gcm_session *s, processed = 0; for (i = 0; i < vec->num; ++i) { - if (vec->sgl[i].num != 1) { + if (vec->src_sgl[i].num != 1) { vec->status[i] = ENOTSUP; continue; } aesni_gcm_process_gmac_sgl_op(s, gdata_ctx, - &vec->sgl[i], vec->iv[i].va); + &vec->src_sgl[i], vec->iv[i].va); vec->status[i] = aesni_gcm_sgl_op_finalize_encryption(s, gdata_ctx, vec->digest[i].va); processed += (vec->status[i] == 0); @@ -595,13 +595,13 @@ aesni_gmac_sgl_verify(struct aesni_gcm_session *s, processed = 0; for (i = 0; i < vec->num; ++i) { - if (vec->sgl[i].num != 1) { + if (vec->src_sgl[i].num != 1) { vec->status[i] = ENOTSUP; continue; } aesni_gcm_process_gmac_sgl_op(s, gdata_ctx, - &vec->sgl[i], vec->iv[i].va); + &vec->src_sgl[i], vec->iv[i].va); vec->status[i] = aesni_gcm_sgl_op_finalize_decryption(s, gdata_ctx, vec->digest[i].va); processed += (vec->status[i] == 0); diff --git a/drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c b/drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c index 60963a8208..2419adc699 100644 --- a/drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c +++ b/drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c @@ -2002,14 +2002,14 @@ aesni_mb_cpu_crypto_process_bulk(struct rte_cryptodev *dev, for (i = 0, j = 0, k = 0; i != vec->num; i++) { - ret = check_crypto_sgl(sofs, vec->sgl + i); + ret = check_crypto_sgl(sofs, vec->src_sgl + i); if (ret != 0) { vec->status[i] = ret; continue; } - buf = vec->sgl[i].vec[0].base; - len = vec->sgl[i].vec[0].len; + buf = vec->src_sgl[i].vec[0].base; + len = vec->src_sgl[i].vec[0].len; job = IMB_GET_NEXT_JOB(mb_mgr); if (job == NULL) { diff --git a/drivers/crypto/qat/qat_sym_hw_dp.c b/drivers/crypto/qat/qat_sym_hw_dp.c index 36d11e0dc9..12825e448b 100644 --- a/drivers/crypto/qat/qat_sym_hw_dp.c +++ b/drivers/crypto/qat/qat_sym_hw_dp.c @@ -181,8 +181,9 @@ qat_sym_dp_enqueue_cipher_jobs(void *qp_data, uint8_t *drv_ctx, (uint8_t *)tx_queue->base_addr + tail); rte_mov128((uint8_t *)req, (const uint8_t *)&(ctx->fw_req)); - data_len = qat_sym_dp_parse_data_vec(qp, req, vec->sgl[i].vec, - vec->sgl[i].num); + data_len = qat_sym_dp_parse_data_vec(qp, req, + vec->src_sgl[i].vec, + vec->src_sgl[i].num); if (unlikely(data_len < 0)) break; req->comn_mid.opaque_data = (uint64_t)(uintptr_t)user_data[i]; @@ -302,8 +303,9 @@ qat_sym_dp_enqueue_auth_jobs(void *qp_data, uint8_t *drv_ctx, (uint8_t *)tx_queue->base_addr + tail); rte_mov128((uint8_t *)req, (const uint8_t *)&(ctx->fw_req)); - data_len = qat_sym_dp_parse_data_vec(qp, req, vec->sgl[i].vec, - vec->sgl[i].num); + data_len = qat_sym_dp_parse_data_vec(qp, req, + vec->src_sgl[i].vec, + vec->src_sgl[i].num); if (unlikely(data_len < 0)) break; req->comn_mid.opaque_data = (uint64_t)(uintptr_t)user_data[i]; @@ -484,14 +486,16 @@ qat_sym_dp_enqueue_chain_jobs(void *qp_data, uint8_t *drv_ctx, (uint8_t *)tx_queue->base_addr + tail); rte_mov128((uint8_t *)req, (const uint8_t *)&(ctx->fw_req)); - data_len = qat_sym_dp_parse_data_vec(qp, req, vec->sgl[i].vec, - vec->sgl[i].num); + data_len = qat_sym_dp_parse_data_vec(qp, req, + vec->src_sgl[i].vec, + vec->src_sgl[i].num); if (unlikely(data_len < 0)) break; req->comn_mid.opaque_data = (uint64_t)(uintptr_t)user_data[i]; - if (unlikely(enqueue_one_chain_job(ctx, req, vec->sgl[i].vec, - vec->sgl[i].num, &vec->iv[i], &vec->digest[i], - &vec->auth_iv[i], ofs, (uint32_t)data_len))) + if (unlikely(enqueue_one_chain_job(ctx, req, + vec->src_sgl[i].vec, vec->src_sgl[i].num, + &vec->iv[i], &vec->digest[i], + &vec->auth_iv[i], ofs, (uint32_t)data_len))) break; tail = (tail + tx_queue->msg_size) & tx_queue->modulo_mask; @@ -688,8 +692,9 @@ qat_sym_dp_enqueue_aead_jobs(void *qp_data, uint8_t *drv_ctx, (uint8_t *)tx_queue->base_addr + tail); rte_mov128((uint8_t *)req, (const uint8_t *)&(ctx->fw_req)); - data_len = qat_sym_dp_parse_data_vec(qp, req, vec->sgl[i].vec, - vec->sgl[i].num); + data_len = qat_sym_dp_parse_data_vec(qp, req, + vec->src_sgl[i].vec, + vec->src_sgl[i].num); if (unlikely(data_len < 0)) break; req->comn_mid.opaque_data = (uint64_t)(uintptr_t)user_data[i]; diff --git a/lib/cryptodev/rte_crypto_sym.h b/lib/cryptodev/rte_crypto_sym.h index 1106ad6201..f8cb2ccca0 100644 --- a/lib/cryptodev/rte_crypto_sym.h +++ b/lib/cryptodev/rte_crypto_sym.h @@ -69,7 +69,7 @@ struct rte_crypto_sym_vec { /** number of operations to perform */ uint32_t num; /** array of SGL vectors */ - struct rte_crypto_sgl *sgl; + struct rte_crypto_sgl *src_sgl; /** array of pointers to cipher IV */ struct rte_crypto_va_iova_ptr *iv; /** array of pointers to digest */ diff --git a/lib/ipsec/misc.h b/lib/ipsec/misc.h index 79b9a20762..58ff538141 100644 --- a/lib/ipsec/misc.h +++ b/lib/ipsec/misc.h @@ -136,7 +136,7 @@ cpu_crypto_bulk(const struct rte_ipsec_session *ss, /* not enough space in vec[] to hold all segments */ if (vcnt < 0) { /* fill the request structure */ - symvec.sgl = &vecpkt[j]; + symvec.src_sgl = &vecpkt[j]; symvec.iv = &iv[j]; symvec.digest = &dgst[j]; symvec.aad = &aad[j]; @@ -160,7 +160,7 @@ cpu_crypto_bulk(const struct rte_ipsec_session *ss, } /* fill the request structure */ - symvec.sgl = &vecpkt[j]; + symvec.src_sgl = &vecpkt[j]; symvec.iv = &iv[j]; symvec.aad = &aad[j]; symvec.digest = &dgst[j]; From patchwork Sun Oct 17 16:16:38 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 101912 X-Patchwork-Delegate: gakhil@marvell.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 56351A0547; Sun, 17 Oct 2021 18:21:39 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E8060410EA; Sun, 17 Oct 2021 18:21:29 +0200 (CEST) Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-eopbgr80075.outbound.protection.outlook.com [40.107.8.75]) by mails.dpdk.org (Postfix) with ESMTP id E9D5A4003C for ; Sun, 17 Oct 2021 18:21:28 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kFJANlhRvLvHGbl9J/F1dwj7jVt2OLKo1MZ4WTqH8lj/gMEqh7CLFfYJKhMeRY5RgcC587/9g37+4JL4bIFJ2LXbgXc4yXUQ2cdQQfPxZo6vmVQhUZc67ZgQWGxFlGOhr69sqYtMgEWzZ5kA0CksAlxj5VN0RleNTDQe135s4Y614utObsuNbmGyrF0fFzea8/UWJZdjnAlbe0dPaNRqVlcjzg67+zj6P1PDNuSASuBMDH1nbezThE2Jb/yRBXqm5ELsTNeCK2LB/e21LqzREA17f0aj6u1ZrV1wPctwg4wsywAaJ/sx04o5/E2kS63dvGE5THM0zT5mJU0vpycr/A== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=PgFTkfyqKXvcLE7ASC0SqLlOUTs2DR7QDk9455Ygq4M=; b=hL2oE2KQa8Ad9mi8OWPlydxOJyWV556x9oZmcHrAk4NYjyUt6eV0UNRm8OCkB8nsx5B0TrANV4CYWSxQd4ViiVmj2xUv/wvSjzOrXGi49fB5uM7VejBAXfr069Plpmbz+14irZd5nC6C5g/ENx9wV1Xmgp+me/YviJkaYiJIAbQ9uUktBSeQa0jkhSndRs0oOaaFIldmTP/BT2MwN/LEEbyQxG4h8AXKe47aV7z9EIT25vH6zXafq7/ORDshRDlOAyYH3uxhnTSStu6xVPcz+/ymHbSPBExfRH9YkP7rEGyPsqpqWtAWdt3dNEQvZHO0L9kdwHVCB/8DKNqgwKcwvg== 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=PgFTkfyqKXvcLE7ASC0SqLlOUTs2DR7QDk9455Ygq4M=; b=UnCkFaaXbO0oQzVZ7fUDE8TAgVIj6swbjqpiJaT8IF0zZif02bNbxYdqnf4R/8hiIQDlfEJuCFSg7XWQ7WLpAet2Wb6F/0rBxl2TSp6WhHnuZkO9771zPTGQjSUNEbJoXg3JVscS3nohouyU59GGt7t0s5SqAmMsx0BwK6JNxZI= Authentication-Results: dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; dmarc=none action=none header.from=nxp.com; Received: from DU2PR04MB8630.eurprd04.prod.outlook.com (2603:10a6:10:2dd::15) by DU2PR04MB8615.eurprd04.prod.outlook.com (2603:10a6:10:2da::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.15; Sun, 17 Oct 2021 16:21:27 +0000 Received: from DU2PR04MB8630.eurprd04.prod.outlook.com ([fe80::945d:e362:712d:1b80]) by DU2PR04MB8630.eurprd04.prod.outlook.com ([fe80::945d:e362:712d:1b80%3]) with mapi id 15.20.4608.018; Sun, 17 Oct 2021 16:21:27 +0000 From: Hemant Agrawal To: dev@dpdk.org, gakhil@marvell.com Cc: konstantin.ananyev@intel.com, roy.fan.zhang@intel.com, Gagandeep Singh Date: Sun, 17 Oct 2021 21:46:38 +0530 Message-Id: <20211017161651.9220-3-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211017161651.9220-1-hemant.agrawal@nxp.com> References: <20211013190032.2308-1-hemant.agrawal@nxp.com> <20211017161651.9220-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SI2PR01CA0053.apcprd01.prod.exchangelabs.com (2603:1096:4:193::7) To DU2PR04MB8630.eurprd04.prod.outlook.com (2603:10a6:10:2dd::15) MIME-Version: 1.0 Received: from dpdk-xeon.ap.freescale.net (92.120.0.67) by SI2PR01CA0053.apcprd01.prod.exchangelabs.com (2603:1096:4:193::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.15 via Frontend Transport; Sun, 17 Oct 2021 16:21:25 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f3dd637d-dbe8-44c7-b154-08d9918a2b81 X-MS-TrafficTypeDiagnostic: DU2PR04MB8615: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:4502; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: IDy5EMA23qJGz/NmpaVUw1Ka7RiKJOq37jwqdaoS4eXjITbJsnNkGa7djFoLLYBNYBWC2Az1LmzwkMoKxlg3KJE9klLHj0mXLKWM/Vd/+hRl5Uydp75S8h7uKr9WvgzAI/pDXWaFWoi/waLDXQjbTn1R0sxiDQrrZ5ycMO42pPaPhTt16XXvB7N4kDMhktYPYPM9v5w+2R+HWmmuhC8gq4wUv0MjJ/snDLday++/mal+kRBlFLkO9Is9Uqzx1fEl9zit0CpdnULqGVDdTXuzJ4QBpBTDgQtIE5L3tQL/Hci0uL95tbHL7VZtkdzNT/F66LZbKWtTTOJ51Fpy0VGtFxT0/9qDheQhVinDw1irAYpIRIyIm9ez0pEc9UoDgQFb4lzEtkefINw9ERJu1yJIOHSGtmQV3DRUSB4FcobHr1jIWjglWfW8OFmVujY5lcayXSHNiZ17CF48260arGMvi82DQVkY4XV7Enuoif6dmrtjaBgYzO1UCJLzph55sUDMe82C0LhTnjXTk+cCrSKVjFudGP53WqZ4UpQOyvGE+WAE6C5K45n3cOt0IGrSMAifjJLqmuDxI7IUG9sWWx9/6uZR4UN/XTH/0pQWWL/OLz5qwzS7GlFFHPFNb+dDRNYG6GDF7GlEeKVtVqoMA5eLKRYe5zppibj80rM0Q8AgOvCukXDSC6NQCMNbFCU1om2h2QHjkkoaVtIBoHs+1bUNTA== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DU2PR04MB8630.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(6486002)(66476007)(8936002)(66556008)(66946007)(86362001)(52116002)(36756003)(5660300002)(38350700002)(8676002)(38100700002)(508600001)(6506007)(26005)(44832011)(4326008)(6512007)(2616005)(83380400001)(6666004)(1076003)(2906002)(316002)(186003)(956004); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: idmppo3KflcreXQ5n5N6wrEzY7jGxF2aJkJyA+eOpjIKtUzK6OMShvJXl3O2cROTDNqWxhcZeX2dhy54HzuuiYkATbpQbcyCU45jlxa9c7nhzQUg7Q0omVydKGIkJyYix7siLyP6QbhEJeZVydZplhPeenzfjes/NbeLCvoTQA2X8etZAHgGEX7FUkeJz3rUWj1ASbzlLWrygrxoL1k56lBppXlZj++OrDwmRREU/isJtam14hrmX6cLghO7x6JegETBqDafoq0CSbEMtFCXS5uIPuTZvN/HWJhT6sNLbHrfmqmOJKFNsMfsN3tJwUriV+oj1BAMME2db5a7HfZoSL4UFwM8NRb8j6TBp0GHmzj2ngaBBvL5Xa/usCPIdYKBXkpHMZqQmdivqOghj8P7hPj3oi0NhiVyXs+ULVTAlKbMo9NwA0mrJfNh5ZwkYkKHNMNtvqSmSEpJ6UcZzp5v0mOgXM882oJEeA3/5pW3hRdNbIPaIVr0xZG1dlhwVaeAWNPuKFJV2fT9TnFWJ0GI8acaexZnaVknMCxIxs7+I+FX8rDR5yItT5TEOHm6L9c9QRxdsnpW/GFqd3sihLCKba88jYr3uf4JdBB1m9JzeNpLA7aFGXUzEs7wkVHC/B0vS9m9vfJzRcHO7dkxKZA0ixRlPmh9BWKqJYIwBgpwe+KdaeWHFI4c77w9vx/Iv7jZiWRoxt2nIKYH7e9VHexKrbuY6KylddAB7EVuSME/ye/v+uxTVeRzAsR7H3qxj/IUv6BkvC3YQ4H98v0Fj7Ue3haMac4sCvqmd6VTig3gJd0bcFtGl7oNl2uROPY/meUceQDZDf/HSHBCMj29sRUyf2rPeWsMFFjty1UBpebNSZoo3ZwOk/sZsO0PNA8ot+VSAgLcL8hozB3wGYYDikMPQv5i1xW3swKttivZVhG4v7sdbYDYl3BnfswRj8hKIxp24lOKZ1jgEoJ27IRB71XZhZFlyGLrbaP9ekEQnId1AL0fAiuw9Bv+I4L9s2NzeeosU+xWcVBeeme4K8OIzHtP5FsbvR5WlUKCWxFlttVC/rV0N6CZg8uMAs/seqMNK6mz08ZQBbiWjmY8oouKHDTtTN1WpOBwmFNo1VnnWUl6wmkPvQ6jnxlZtfvEyumcdYkHCCUynBE5vkW8DOlD8hzjWMHvyCa78VjoDLj4+OKJ5pUEAHPCtvVVfJkATiDMw0T1kqFGzSbprBvqqZZ1tiy3g4td01T76gFNZT4TAFA5gobSRfi/M+wVKgCUUPAgjs4Ef2mgSav4+uYKEhPwKXjTbq5dCdDHAP6IEGOclqRo9Odsvp5BE8GYXWN6hR+3GWf1 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: f3dd637d-dbe8-44c7-b154-08d9918a2b81 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2021 16:21:27.3160 (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: YPd9yJRZuc+eFdYgM3yWvSIcMgc7hT2TEwmniZUAfWahGQmvt+zhaoortVYfhvnMqWDSCFb4u/utvVo6NrQL5g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8615 Subject: [dpdk-dev] [PATCH v5 02/15] crypto: add total raw buffer length 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 Sender: "dev" From: Gagandeep Singh The current crypto raw data vectors is extended to support rte_security usecases, where we need total data length to know how much additional memory space is available in buffer other than data length so that driver/HW can write expanded size data after encryption. Signed-off-by: Gagandeep Singh Acked-by: Akhil Goyal Acked-by: Konstantin Ananyev --- doc/guides/rel_notes/deprecation.rst | 7 ------- doc/guides/rel_notes/release_21_11.rst | 6 ++++++ lib/cryptodev/rte_crypto_sym.h | 4 ++++ 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst index 09b54fdef3..0e04ecf743 100644 --- a/doc/guides/rel_notes/deprecation.rst +++ b/doc/guides/rel_notes/deprecation.rst @@ -179,13 +179,6 @@ Deprecation Notices This field will be null for inplace processing. This change is targeted for DPDK 21.11. -* cryptodev: The structure ``rte_crypto_vec`` would be updated to add - ``tot_len`` to support total buffer length. - This is required for security cases like IPsec and PDCP encryption offload - to know how much additional memory space is available in buffer other than - data length so that driver/HW can write expanded size data after encryption. - This change is targeted for DPDK 21.11. - * cryptodev: Hide structures ``rte_cryptodev_sym_session`` and ``rte_cryptodev_asym_session`` to remove unnecessary indirection between session and the private data of session. An opaque pointer can be exposed diff --git a/doc/guides/rel_notes/release_21_11.rst b/doc/guides/rel_notes/release_21_11.rst index 256037b639..ba036c5b3f 100644 --- a/doc/guides/rel_notes/release_21_11.rst +++ b/doc/guides/rel_notes/release_21_11.rst @@ -232,6 +232,12 @@ API Changes * cryptodev: The field ``dataunit_len`` of the ``struct rte_crypto_cipher_xform`` moved to the end of the structure and extended to ``uint32_t``. +* cryptodev: The structure ``rte_crypto_vec`` updated to add ``tot_len`` to + support total buffer length. This is required for security cases like IPsec + and PDCP encryption offload to know how much additional memory space is + available in buffer other than data length so that driver/HW can write + expanded size data after encryption. + ABI Changes ----------- diff --git a/lib/cryptodev/rte_crypto_sym.h b/lib/cryptodev/rte_crypto_sym.h index f8cb2ccca0..1f2f0a572c 100644 --- a/lib/cryptodev/rte_crypto_sym.h +++ b/lib/cryptodev/rte_crypto_sym.h @@ -37,6 +37,8 @@ struct rte_crypto_vec { rte_iova_t iova; /** length of the data buffer */ uint32_t len; + /** total buffer length */ + uint32_t tot_len; }; /** @@ -963,6 +965,7 @@ rte_crypto_mbuf_to_vec(const struct rte_mbuf *mb, uint32_t ofs, uint32_t len, vec[0].base = rte_pktmbuf_mtod_offset(mb, void *, ofs); vec[0].iova = rte_pktmbuf_iova_offset(mb, ofs); + vec[0].tot_len = mb->buf_len - rte_pktmbuf_headroom(mb) - ofs; /* whole data lies in the first segment */ seglen = mb->data_len - ofs; @@ -978,6 +981,7 @@ rte_crypto_mbuf_to_vec(const struct rte_mbuf *mb, uint32_t ofs, uint32_t len, vec[i].base = rte_pktmbuf_mtod(nseg, void *); vec[i].iova = rte_pktmbuf_iova(nseg); + vec[i].tot_len = mb->buf_len - rte_pktmbuf_headroom(mb) - ofs; seglen = nseg->data_len; if (left <= seglen) { From patchwork Sun Oct 17 16:16:39 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 101913 X-Patchwork-Delegate: gakhil@marvell.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 4196FA0547; Sun, 17 Oct 2021 18:21:45 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id F2240410E1; Sun, 17 Oct 2021 18:21:33 +0200 (CEST) Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-eopbgr60064.outbound.protection.outlook.com [40.107.6.64]) by mails.dpdk.org (Postfix) with ESMTP id 07A3C410EE for ; Sun, 17 Oct 2021 18:21:30 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RGkcVFIGS6SnLXxpdTvnNYxMFPpafbduLON30hkyTfw1XNuI7rsSVF601vpuJp84fciTdtihE5XTGldsoY18KWbM+lLSxLnWJ46lRcRs2UDFQ32NFRc35KISC3Q6OiUIvvC7Pf//nhdPMqbE0TJd3Ce7VMJ4GdmkE7sHrztVGQVNin5DHAMChreSA+mFiue+tYAd3Le3R5bvZb4lKyAXGPPFUbyaRBK4sYhludCJk9iBX7C7U/mBQarB4rHZVEU5ucG34HNgaYztYB9afhU1tZ5IP3PLeGtp7L+r7+tLhwz8OV6UNIO2iuM3VKPOrdgRRXVQO43SO0r0fdsOPOek0A== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=txJ9943CMneMqoFtADNEIvhhHS3vToy6RrcoMDg9aDs=; b=GazUVR9qwd+fU72Q3GgzpWoImYXJPxDPjmrfYnDIlX0DYFLtbx2PpTmTzjriJrXcSJFZVDhDFuYu+Pg1z5tGK0hWpCuiTqu76m2RozQtWb2Lz5Ln5JNw7lYz3FrHsSxIdBmw+c1TAt86DNimfFm7bPkt1UW8YgZ1C6vJlnWTMa0VHzFhsoR3L4CAiW9H7FoGeFgSK7eOvtBmh1OZ1Lly62uIfNfScKqnrk31JlxlK8faeIxp4MStuS3pmAtoVV7/uR0XkURTt0GOaPtPODkw4Gwrm5UgQe+Vx0la+Dbx8Zt+EoQrWxqhwh67rEEOcYWKGv3fF4UdmBzJWHScXrMxfA== 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=txJ9943CMneMqoFtADNEIvhhHS3vToy6RrcoMDg9aDs=; b=drLzy2y+sYt/E36AGomiEInG+PW3NcXzOpcNZzSxcpfcOdL9jG5A8q0td3pg//Qpa1Xr8OWEZXr1j0IBKQzFAnG99vAaSNWeb7y7Xo9BlZw0/7pioH8KUIl2NbLYL65qS/EBIiJmmHXj3iJ47/0BpF9APBC0Mmg5t/mn2t4VAU0= Authentication-Results: dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; dmarc=none action=none header.from=nxp.com; Received: from DU2PR04MB8630.eurprd04.prod.outlook.com (2603:10a6:10:2dd::15) by DU2PR04MB8615.eurprd04.prod.outlook.com (2603:10a6:10:2da::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.15; Sun, 17 Oct 2021 16:21:29 +0000 Received: from DU2PR04MB8630.eurprd04.prod.outlook.com ([fe80::945d:e362:712d:1b80]) by DU2PR04MB8630.eurprd04.prod.outlook.com ([fe80::945d:e362:712d:1b80%3]) with mapi id 15.20.4608.018; Sun, 17 Oct 2021 16:21:29 +0000 From: Hemant Agrawal To: dev@dpdk.org, gakhil@marvell.com Cc: konstantin.ananyev@intel.com, roy.fan.zhang@intel.com Date: Sun, 17 Oct 2021 21:46:39 +0530 Message-Id: <20211017161651.9220-4-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211017161651.9220-1-hemant.agrawal@nxp.com> References: <20211013190032.2308-1-hemant.agrawal@nxp.com> <20211017161651.9220-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SI2PR01CA0053.apcprd01.prod.exchangelabs.com (2603:1096:4:193::7) To DU2PR04MB8630.eurprd04.prod.outlook.com (2603:10a6:10:2dd::15) MIME-Version: 1.0 Received: from dpdk-xeon.ap.freescale.net (92.120.0.67) by SI2PR01CA0053.apcprd01.prod.exchangelabs.com (2603:1096:4:193::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.15 via Frontend Transport; Sun, 17 Oct 2021 16:21:27 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 52ee07d2-b9b2-4ff2-67bd-08d9918a2caf X-MS-TrafficTypeDiagnostic: DU2PR04MB8615: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7219; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 8rL53T/1txl/SG9tYDOLVX5kzzl3pxxuyG22WDqkHbMiaZ8VOUTFq5vXvHrTq2i7T7PkX5+8V9hWfxPh4pqiTdv6S2tIfTMdqATLj0PSK2W1/jQD0NcTYLGRqsRkIDFEJgXQXA01VDgbXm0EdjF801kC+bY4jMcc2pH17EoLSgxDxqx1dOaeHDWk+zVC0yp5l/+N9cyTTu/x79sXdzcIIACYC7fV00gqjuKdtBzmmh2WnQymIOT/+x1U7j5OpEHkoD344RvbdemPe2Jfinmad6Bpz/7nD+cZ40KYMVVN9lcXju+LzEvd3uZ3nmvfet8y8r1fAEQMXbWrZoCNaY6fSDRbqukq2Zwsd5RkpjH981lVBfQCNsoYwuMExCtET345Nel6LM7FHMdXw5T/RsgmvL/EIEWFr0SiVFoYdlQ46xbBzPCZpc84tqAA61hAxG+pesYuHTe7kTKcDrp3bJUUrOIIpO1DQ7OeRCgP3bVgd6jGq0uVvMZvi9JsxXbsEcD1ehxKPPPs0Kv7Mp0MPx2dNFBjHC4uNB1/GFGKmUQVKsuTfdusPGmXwa92k9TkIlL51kIN4a/vkfAaHc2qPPvsW/Nl/9odHZr1IItc8WyKxHuHnH7f7dkuqrjaiO3etOk9o1902mKBIRPEJZzCEVhvGgvdymHyhFFe2TpsOz5LQeA9Xxj0Q33CH7t7BXEdJTWkHyfV9ahaF9hiUoIkzkT6bw== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DU2PR04MB8630.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(6486002)(66476007)(8936002)(66556008)(66946007)(86362001)(52116002)(36756003)(5660300002)(38350700002)(8676002)(38100700002)(508600001)(6506007)(26005)(44832011)(4326008)(6512007)(2616005)(83380400001)(6666004)(1076003)(2906002)(316002)(186003)(956004); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: NPj8dG9Ae35gJ++baQHSS/qS2m0/SGNxD88sgjxe/e8Y0I6MmF33ghQJokGShoocUr7XN7pryROBtmE0T2oCjGh4ZQgfd/vbZKSK7ya/vclNOmooRB86h8hjICzd0TMMLIwzz2NRnCULIsAGCYV9CxqLoT5zszyZNHiCD7ZCzfG9XqkvIBOrehOeFc1H8PrAgkECmbIWcj7viAi11apHd8w2/wlxddn9Ss9DPtcXlKVx2UNoZ+/luBOmbMsCIUcNKzhS4ywLxAm3yPX+ZCR3kDyK7u8yM50CCzDWT2udxayxf8iSjEYnj8RgNiJ2H/1cr18UEBcK1qZ42UbpQopHTNwiF/e3GEXL90D0UvSLPpQUpcr5W7/Cn5eLOgKBnua3ZG8AWczAnk3wEleWWDWZhNYJOyWWorLrnqGhhITIvVAvOmKuwq1Ts3z4H4wOLtlIib30vtlIFhg+dEp55sM/w5IEZb4qKeD6R0C1zkGzA5O55Qpdzo4xk4l7jytwP6xUKmys6BwCknab9vfcYAc3hONaCBhx+FRXSIMDqOPulgb2l1ZWOON2HU/4PhOqLRHMoEV5ecdQ8NU6GA+ouJyao+S0NX52d4SJFj5jak70wlTjKaymw0hxXMuEF96tmL+28BtEJ7uilnO/ihhoJ9dTXVnhmHFA9zCz/rRwmibSbtEYhqyaUtmq8DaaTquTKIQdCYawgiAarkQrD4XoZo71bVYdYPNQo2AaDd4gD4EZrvEF/GykDUycD2H6ebk7I0tkX4m0U8aOwojMRqQE7R3GRDhjjVAml8tz0pADvZoMhOux6jYgosxpa7itDhcgawaNrbzn82NmNMA3/NoMIoZRG3XUhR+ku8c4tCb1PR84uuWT638oMD1T09vuPEbNLZY5w5wVAe8LK36nGSeqeZDXsQpLeTt9tI1gBzGsGaqjrAo+OQK63nC9onTcvxEvwjqOihRed62/j2yyT7hORKu+zqki33UB+Ixpl8JlTVXhEOQd+YBatp0o/zr2f16lyJlxcGOz1me/uo7hC/owsUCCeh7ixwx/awHCuJ8FwZNuiboZy13khLyHbhtJ68+7oJkvJPcA8JVpkIYraaLCACa6FDg17a2ZepIvgefazWh4g1hGcpAvNJ+DVX97ZXs7JcMPkDD7FeFH1VnSPBLkrmSfbc+3CUDzX6Hq0pcUe6xP+NRfv7imtCqSWY7mJDOQYERsmYzQwOaw8+2yq+RxizKgAnrL/kK5LRC9dxe9sEOiZkur3gd1ePT8iR7OUbV6dHhV770WgCwKii3CeOHq9VB7OPrq8LpH0I9wrYT4/aqM31bR5PMUKcA0SkUhmpe8MmRL X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 52ee07d2-b9b2-4ff2-67bd-08d9918a2caf X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2021 16:21:29.2625 (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: ASGQnjmlJ+LrjbzYjz3E/FGjaEKolgXazpVY4wlv8ZLlIOSL8OwVaa9YyP9kBp9zWaNYi8xwfmEyKAaLb1jo9A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8615 Subject: [dpdk-dev] [PATCH v5 03/15] crypto: add dest_sgl in raw vector APIs 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 Sender: "dev" The structure rte_crypto_sym_vec is updated to add dest_sgl to support out of place processing. Signed-off-by: Hemant Agrawal Acked-by: Akhil Goyal Acked-by: Konstantin Ananyev --- doc/guides/rel_notes/deprecation.rst | 5 ----- doc/guides/rel_notes/release_21_11.rst | 5 ++++- lib/cryptodev/rte_crypto_sym.h | 2 ++ 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst index 0e04ecf743..1d743c3a17 100644 --- a/doc/guides/rel_notes/deprecation.rst +++ b/doc/guides/rel_notes/deprecation.rst @@ -174,11 +174,6 @@ Deprecation Notices and ``rte_vhost_driver_set_protocol_features`` functions will be removed and the API functions will be made stable in DPDK 21.11. -* cryptodev: The structure ``rte_crypto_sym_vec`` would be updated to add - ``dest_sgl`` to support out of place processing. - This field will be null for inplace processing. - This change is targeted for DPDK 21.11. - * cryptodev: Hide structures ``rte_cryptodev_sym_session`` and ``rte_cryptodev_asym_session`` to remove unnecessary indirection between session and the private data of session. An opaque pointer can be exposed diff --git a/doc/guides/rel_notes/release_21_11.rst b/doc/guides/rel_notes/release_21_11.rst index ba036c5b3f..6e274a131f 100644 --- a/doc/guides/rel_notes/release_21_11.rst +++ b/doc/guides/rel_notes/release_21_11.rst @@ -232,12 +232,15 @@ API Changes * cryptodev: The field ``dataunit_len`` of the ``struct rte_crypto_cipher_xform`` moved to the end of the structure and extended to ``uint32_t``. -* cryptodev: The structure ``rte_crypto_vec`` updated to add ``tot_len`` to +* cryptodev: The structure ``rte_crypto_vec`` is updated to add ``tot_len`` to support total buffer length. This is required for security cases like IPsec and PDCP encryption offload to know how much additional memory space is available in buffer other than data length so that driver/HW can write expanded size data after encryption. +* cryptodev: The structure ``rte_crypto_sym_vec`` is updated to add ``dest_sgl`` + to support out of place processing. This field will be null for inplace + processing. ABI Changes ----------- diff --git a/lib/cryptodev/rte_crypto_sym.h b/lib/cryptodev/rte_crypto_sym.h index 1f2f0a572c..c907b1646d 100644 --- a/lib/cryptodev/rte_crypto_sym.h +++ b/lib/cryptodev/rte_crypto_sym.h @@ -72,6 +72,8 @@ struct rte_crypto_sym_vec { uint32_t num; /** array of SGL vectors */ struct rte_crypto_sgl *src_sgl; + /** array of SGL vectors for OOP, keep it NULL for inplace*/ + struct rte_crypto_sgl *dest_sgl; /** array of pointers to cipher IV */ struct rte_crypto_va_iova_ptr *iv; /** array of pointers to digest */ From patchwork Sun Oct 17 16:16:40 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 101914 X-Patchwork-Delegate: gakhil@marvell.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id B2D09A0547; Sun, 17 Oct 2021 18:21:51 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E92B4410F7; Sun, 17 Oct 2021 18:21:34 +0200 (CEST) Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-eopbgr60055.outbound.protection.outlook.com [40.107.6.55]) by mails.dpdk.org (Postfix) with ESMTP id AED5040DF7; Sun, 17 Oct 2021 18:21:32 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hpnib2sDDQYRdJHAmMT8rJN7S15xMZ1b1467KCzYSQr6esZrjjKwoxKim9FK5wCXUxva579vMKoDHjethitpyq3KMnaRzC8nKBg25bdO6d31oLDOpn7T/dW7BFB05Lr0LcLQ1we3aTcNeb9z2vV+3rKge95qj6aVOWvKyhjAHpcYRqJHwnARI4UrmUS7l8OhZ6F4eJEuyn6oWOp72iGd3IL6q++h8mpstbkaRo7FuEViqaKj5BrJ+Hvy8pxvz5+X8Au1gDGvCLEJloAWYX65aaopnSrAsK1l3Z21iKM/HJjjjR5WyzCrfHl2WzlewJS2kGa/zme3iW78QInxWnUY0g== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=K8WPPMC0+V/Ogv/jJ8cC9Enk3knEpUmrgebcSYwpGi4=; b=G4dktFCbBIMs+jxcEmVm4OwXbXWG9D/ZxtFoj9j30AQCT/+n08sCDPRiQlD07Bm3tQxs07hzL/JpEmjsZipplHL/PDdQ5I0nJ2AqZDd2WneVZDjqKq+VLoayHuzyU7VrFmkMLlt3u8B+3qxXvzmuRuSEkO79fdF5Qfi2tAty06IW+srvq0xU2sz85IY8wWOZ6FnEiUNoZ5rpKtaTyAFRhMk+P2pbQIMAz7/IjBQZP2Cgbfj2ywM0Lm/XTSAD98FND9Sq9zMHoBxp/o0Y4DWNW1PnpgS45ovkAMC1PAAQYMQcM4vb0JkZCalhqTqkQTXIv1Sgjpr8zmysnPpqswT47A== 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=K8WPPMC0+V/Ogv/jJ8cC9Enk3knEpUmrgebcSYwpGi4=; b=mbDoNL3QfCI/3dCoDZP6xk7NdtNEyber7C3u9UVqhdwRjIbyIEIA8gX056plqHr2FqipZoc5+C+EQn+eJU0e3b6Qs1wx+hBuZPPO+/dEpe9Thu7X96M9nIXti5t/xMEEntlASvZKCV8tBOnbjMuYbcsFV18nGxYfdzrLLWxSDys= Authentication-Results: dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; dmarc=none action=none header.from=nxp.com; Received: from DU2PR04MB8630.eurprd04.prod.outlook.com (2603:10a6:10:2dd::15) by DU2PR04MB8615.eurprd04.prod.outlook.com (2603:10a6:10:2da::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.15; Sun, 17 Oct 2021 16:21:32 +0000 Received: from DU2PR04MB8630.eurprd04.prod.outlook.com ([fe80::945d:e362:712d:1b80]) by DU2PR04MB8630.eurprd04.prod.outlook.com ([fe80::945d:e362:712d:1b80%3]) with mapi id 15.20.4608.018; Sun, 17 Oct 2021 16:21:32 +0000 From: Hemant Agrawal To: dev@dpdk.org, gakhil@marvell.com Cc: konstantin.ananyev@intel.com, roy.fan.zhang@intel.com, Gagandeep Singh , marcinx.smoczynski@intel.com, stable@dpdk.org Date: Sun, 17 Oct 2021 21:46:40 +0530 Message-Id: <20211017161651.9220-5-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211017161651.9220-1-hemant.agrawal@nxp.com> References: <20211013190032.2308-1-hemant.agrawal@nxp.com> <20211017161651.9220-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SI2PR01CA0053.apcprd01.prod.exchangelabs.com (2603:1096:4:193::7) To DU2PR04MB8630.eurprd04.prod.outlook.com (2603:10a6:10:2dd::15) MIME-Version: 1.0 Received: from dpdk-xeon.ap.freescale.net (92.120.0.67) by SI2PR01CA0053.apcprd01.prod.exchangelabs.com (2603:1096:4:193::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.15 via Frontend Transport; Sun, 17 Oct 2021 16:21:29 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: dcef7095-bf78-4e19-55ac-08d9918a2e45 X-MS-TrafficTypeDiagnostic: DU2PR04MB8615: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:2958; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 8D9LEZiXr3c88hTHTkSlVGQntygrJTw8XQyiUQQGeyljY6VCX0PWq/A+TGcRtUr8A9xA6ysqvV0An5KGPB/ov4axs/6ONh1OWdBYGfdyaWFq8KRkZ74ohj8yk04w7wOzbyImJnrixYVarkACzoVFLltnMGHlzcPEKHmt05V5mU9BGUpsWDLauJPW1+J9tQjSFH51QuAQglahSQaCXkqvonNp6iSOTMN6Eu+/Bp3/JI3cYcsdxRcaPBE+LExMqYnB+WsXKQPCGBwyBTH+2+72T+KIw2SArDM0r1MnBmPY6dwrMO3lad/ec52r8i5GA/DCqhnUTadUdPfk5wwemdHvE8F78GES28ZXPtSEUPHnHyzGL5VcIsFgGZhOrJmQXxAjwxpaghd+ERh4PglFDvEYAW1HwH3BesGeP6iYDi06RzbaJ8uDo884e+OM66gakOE57j2OnKmuDsNosE5NAqfmo06LGoP9jfP/NE9I9WCLJ7xj8qBO/VpypnyrOzftXEYtvw1IK92zd4sE6N14Qs+RGWv5SUB4Q9qqHQssvRVwumpWtBZPUFUKEMrPKBGBTHTrPtvlsTnO94MBA3qJkn4gEhTpVILDRaDSbDWko1hFtzhzWnBIM20k4nW1X8aYIrMRXxGp1ogENLc0I3spoQ1E4JTNM7ypaozx5CNDiC8kKdH72UjzD5jiwbCXAvZ56Q9WoRkxI70Wq6rf+q0lzaFGKA== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DU2PR04MB8630.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(6486002)(66476007)(8936002)(66556008)(66946007)(86362001)(52116002)(36756003)(5660300002)(38350700002)(8676002)(38100700002)(508600001)(6506007)(26005)(44832011)(4326008)(6512007)(2616005)(83380400001)(6666004)(1076003)(2906002)(316002)(186003)(956004); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?3nH53yvi7zPHwmMwFrMiHoeaQ3yD?= =?utf-8?q?LRuFn9RTJT8EjBlsAvVqtOCluByv0uvnm8GWKBWGmNJ71/SQlowCqeycsqAp8OA5C?= =?utf-8?q?HQLmE4KW9bGt5FbNZovYrw9jQp9U/a5QCjxpBSOgfYxnbEBHfIhLSXTz4qou3PBbr?= =?utf-8?q?vLmRnM/rlxKBpqG2RMt3fu6ZqYKUnxerW5bRDRTjCXEjVf5ZpgHBlekk0HfWjRdQG?= =?utf-8?q?McjDNDJzoHI7kqgDuPEJd1OsPc7BdtYjmcYwdolElfaz1nJC/saUL+rTlXN6En4yH?= =?utf-8?q?5Lhwi3ow8omQdJXkNmTnGGUbMvqEY1jlSL2dIUs77O8TRQYUSfZm+eq+TbS77jSmV?= =?utf-8?q?MFk0IaFUf07Kg96TGfC+Sm5uQxc+CHsCuXwmJWuDovS8T8D8JzgAkxvs/vBwW+fof?= =?utf-8?q?HVStby14N5BrO3yPUrskQl6UnWjnraK2RDqwDSr3SA2akBVRRy4+/H+NmGHBvN/vO?= =?utf-8?q?kQ9xe8s6qH6AbrnqltlXmHatTl0x43fmpb47bD3sgPrtqpKJafxY8Q+UzC3yA+9PE?= =?utf-8?q?39gyu0XGF01TgS3VTTV/OYy3KfQSF3S0dW9btHuTB37q/39qXC9BQ+Nr4wVo2jTV/?= =?utf-8?q?4fESW27Iia0YqbHgEFBvOPk4SaG2TFJwyVIgYUQcZKmd5MDM3QN6ak8i97tL/WkwF?= =?utf-8?q?REbacSOcecERmowxRYsoJVJ77FUON3/zdLU1usGS8Fx2UIjXYA2GuZeyzMiGBLivw?= =?utf-8?q?4FXlCbvads31WboiRjXkBH1w4p5h7Ef6DvWCkDDaLRPUbwXt9utsR3ECjUwGNZa8F?= =?utf-8?q?xgSq/BEBdG19pnPFVuriuN6QnIJ/AGudoSHWU7buWhw30WoGYKmd00i/CDgFsX2nl?= =?utf-8?q?hDHbE1B0QE2nkSiXclEk2NDI6EuoM1+tzQWAlL5SYV4UhIc0ZSu3IJwzSKsqfbXfL?= =?utf-8?q?YoVx3YoTh4BanykruxuwhCTEZSpyo9dwRC3RgRIOsLiVohdjrindNu5bQAR+ySLVD?= =?utf-8?q?jVQma0Terb10EKSJUJ2w+/XCG+r/LWbII7WqpyUECYvhltLoSGTBc3kXKuoONFS6e?= =?utf-8?q?46nU4kB+GFgDLhDb1Q5w4GCOtsEwRx88O1kKk7sF8x0sbig0hi3PzPA1wOwsZQZOn?= =?utf-8?q?/ZDZQ/2Ga4Gd9n3B9lQstnYalNHlc2Tb0VkOpHdHZ1hEKRfSXgqFgGdXnnJ57GQjB?= =?utf-8?q?JYi5kJltKcuPWuK1Me5HcRZDrBXcAsSVmj/DoBAagux/nGOXh/LaSC2cKy0umndOQ?= =?utf-8?q?Fr3hr4xMuhcsx9VJaqw6L1r7vo/HPuCTOnKcN2voiOnqAuntVdBqE+5Fc1zok9N8V?= =?utf-8?q?HWST67lxLE1DiV/Q?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: dcef7095-bf78-4e19-55ac-08d9918a2e45 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2021 16:21:32.0811 (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: J2HCGI2juLIRZ+3+WvDcrw78AqjzJ2bKlCJ3WS9n9FslBemN6aAAOXjYEiBPAiWG7Yq2zWC0scyMhx6evhRQig== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8615 Subject: [dpdk-dev] [PATCH v5 04/15] crypto: fix raw process for multi-seg case 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 Sender: "dev" From: Gagandeep Singh If no next segment available the “for” loop will fail and it still returns i+1 i.e. 2, which is wrong as it has filled only 1 buffer. Fixes: 7adf992fb9bf ("cryptodev: introduce CPU crypto API") Cc: marcinx.smoczynski@intel.com Cc: stable@dpdk.org Signed-off-by: Gagandeep Singh Acked-by: Konstantin Ananyev --- lib/cryptodev/rte_crypto_sym.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/cryptodev/rte_crypto_sym.h b/lib/cryptodev/rte_crypto_sym.h index c907b1646d..daa090b978 100644 --- a/lib/cryptodev/rte_crypto_sym.h +++ b/lib/cryptodev/rte_crypto_sym.h @@ -990,6 +990,7 @@ rte_crypto_mbuf_to_vec(const struct rte_mbuf *mb, uint32_t ofs, uint32_t len, /* whole requested data is completed */ vec[i].len = left; left = 0; + i++; break; } @@ -999,7 +1000,7 @@ rte_crypto_mbuf_to_vec(const struct rte_mbuf *mb, uint32_t ofs, uint32_t len, } RTE_ASSERT(left == 0); - return i + 1; + return i; } From patchwork Sun Oct 17 16:16:41 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 101915 X-Patchwork-Delegate: gakhil@marvell.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 66B64A0547; Sun, 17 Oct 2021 18:22:00 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 763FE4111C; Sun, 17 Oct 2021 18:21:37 +0200 (CEST) Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-eopbgr80045.outbound.protection.outlook.com [40.107.8.45]) by mails.dpdk.org (Postfix) with ESMTP id E0BFC410FE for ; Sun, 17 Oct 2021 18:21:35 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hBHieiHU+P+PaDUKVeA6JXSj+huu0H0jHC2X4bUSK3ws7479lNsECbeZRiGA+7Iii2La6mfGTQcvnpOpculJtBqdZs0s7e3QNp8R/xStbMyd1tZJEFcODbq1ZqfMrHeBhFbP4eXbsj4cz+Bv8XjTgOH6aRHfSDGNpUU7M/Md4UtSQ9h+T7yVg1oclmH4xXDaohHiRLSikWN/aDFyRT7BX7j0vPfCahvCM5fkjsJ3N83cahw5urpiKpHazyCDflIungg+E45wUzvjwEPnadFuZ1kWyxW7XyeGLp6w2O25mlP8pr+YCmFY22UaiMAfRd4NRPryYTU0lC1Mj6p2UWZBcQ== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=0i9v3HbL8kMMSQNG7tuFoDIA/K6Hz8JEQVBc0z21Ij4=; b=FQo3u1n6JMg5/Z6clqNctIVdw37IhaGPreN9jkx6UIjsXh5DRdaBLIMWqAvCu95YnhgONgDngv7wcIMRe6lpVcP6qHz1QznQwcWIFAjOKeX4dGbbszOdu2jqdzxp6ey6UBY+FZOgYuxodex+FiLQphPB84cRuuBdYgPtvtttCSowC0y50Dma8haTtHdpvenDaViivaWJ0JmcF40f0uOQ2VpZbxAVFmnruDfcuW6NFJYy47W9H1tXpQjrEIT8kDL7VQ2EG6jWXQjbTKh+ajviV0x71e4wyB4SBKFmR08jnAZb47D9pvQ30DHGI0+s3s7Is1Xgl/b3oM4Kno2U6RN2Dw== 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=0i9v3HbL8kMMSQNG7tuFoDIA/K6Hz8JEQVBc0z21Ij4=; b=kjJ0+4MBWyvRXLcdvs4ZZKjrMleWAhmJhxW1TMXpxEKQVrhaKM82FcHtONKPkjK8XjjSxj1FtzG2qj9j6Leed02hrYOjiDJ9MzIx366PE9Wo/WmsinarsVlIzyHGMHALojSXemD70CBtB0Eytx14irhm+DPdZEIdaSgIYq7obu8= Authentication-Results: dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; dmarc=none action=none header.from=nxp.com; Received: from DU2PR04MB8630.eurprd04.prod.outlook.com (2603:10a6:10:2dd::15) by DU2PR04MB8615.eurprd04.prod.outlook.com (2603:10a6:10:2da::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.15; Sun, 17 Oct 2021 16:21:34 +0000 Received: from DU2PR04MB8630.eurprd04.prod.outlook.com ([fe80::945d:e362:712d:1b80]) by DU2PR04MB8630.eurprd04.prod.outlook.com ([fe80::945d:e362:712d:1b80%3]) with mapi id 15.20.4608.018; Sun, 17 Oct 2021 16:21:34 +0000 From: Hemant Agrawal To: dev@dpdk.org, gakhil@marvell.com Cc: konstantin.ananyev@intel.com, roy.fan.zhang@intel.com, Gagandeep Singh Date: Sun, 17 Oct 2021 21:46:41 +0530 Message-Id: <20211017161651.9220-6-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211017161651.9220-1-hemant.agrawal@nxp.com> References: <20211013190032.2308-1-hemant.agrawal@nxp.com> <20211017161651.9220-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SI2PR01CA0053.apcprd01.prod.exchangelabs.com (2603:1096:4:193::7) To DU2PR04MB8630.eurprd04.prod.outlook.com (2603:10a6:10:2dd::15) MIME-Version: 1.0 Received: from dpdk-xeon.ap.freescale.net (92.120.0.67) by SI2PR01CA0053.apcprd01.prod.exchangelabs.com (2603:1096:4:193::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.15 via Frontend Transport; Sun, 17 Oct 2021 16:21:32 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 290d93f1-62cf-4748-c6d4-08d9918a2fac X-MS-TrafficTypeDiagnostic: DU2PR04MB8615: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:4941; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: kix4g4nHvAskQpzktGZHKHpS7DiHWprpHjb6I+1gBAI4zbZkT9VT64iyni4t6QuUO18ypSn+p0/kXa3bfH0ln0tvEMxBeO2SPcEW6B843lc8+Uz9BMfMYWF8kZgSDCP2b6HEJF5m/AfDR1ixEX4iqI0SakbmVH2KTUcgLPZO0dKqITeT9SYNmTwLDMKspVQEAG1GL14ZkbMZ1QMF2HXSDUDaXAxdmr+vQTs4IKJkZ5zFYz00aLl+mkwpAtKtS75nQr41z3SbFnIcEMaLZQbFWrhSOFakqQdmPMyIyehxzv7IycZlWcUq/r+ZpcEsXWgVLNzxPwdTwwJ3DemfxiAwqg0fSdlvbd5tsUAfXPu4VoLAuPOzVNkbZ5N8aHmXBOBIFndSDA+3U0HtOPia7wPFcKrVEoKjZ5csi0iE5tUtYQ50zxJuXHZ6qNgoq9qQ5RLZZcDM1eZwY2X97FF+zL2OVLq6cFj+skp+VB+MChZD9uWZXX/67/YOSW77cwwOwwt7qc4sQs2wtSjfZCvxIbpDWLlXoRmrWnlrssarx378P5AAS3OvGfEKCqCJGZPgyg99sXPnuBDPw7USbNTm79iOctEP5smzxuIl3BHVyR6x+laGVZlbsyHeo5XZEIBEXKdetG4qwhic9YEZbZDQ7BxF2sCos3WofgVyYUdj4QkCjXZ/Uf/64lhduf2g5f7p1DZ1GbY4zwepPcHqWzN3DqtcRA== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DU2PR04MB8630.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(6486002)(66476007)(8936002)(66556008)(66946007)(86362001)(52116002)(36756003)(5660300002)(38350700002)(8676002)(38100700002)(508600001)(6506007)(26005)(44832011)(4326008)(30864003)(6512007)(2616005)(83380400001)(6666004)(1076003)(2906002)(316002)(186003)(956004); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 7wpfkSVXN2MbqL+kRsbtEKtH5DJ97PcJQh6dwNuZ3x4BHpzvalb2uxMu9HpZ2EFlm3XwgBUa0G1a+CqC4uZUa6yeQKlhxLFszS4VyEDCK3t4HUQlQHsIW8iSslXLnDFOafznAiTHRIiSnCksA8Sx7L2bk1LiG1Av90ltOQNu+MzCUE24G4upeXdsVisNoAEWZ3w+ZO/BdpkU5pc0pB3uZbC4g3PZo3PGqoYwEDKRVokw34UCA9skFr3kGgNJ+rvy3uUSj4/FTLf1YUFrUQgoy9jagSSE3Z5Lpaq/3+c7H+muhIegBFgWnbLUMC4pNuf7XrPk+y2HtzD5XsyxaPfn1UlgytzS+KV8y/kcNu0Qi+l05dxVuGlYElbUtDhxa5K4VvYkiXZm0WS71Rew+hYJZKg21UyGUgObGK33g1HPc4ntjL/xGaGYhdOSeSbeRZ8yzDcTiV0p9kvrO+DBhnhwuMUUetNO875fUeJO/1Cn+Xvn597ASvow6tvLTnrP58AbuAA44Hm0CoXXt6rmgCLWMH5gdJi8DLz2M8WcOOpw+vR4tzpKnCuXLAuqp6UOlxgjOw8E7/Gca5HzQAM67rvzj1Qpsjf43j1H3LDEVvU3iYG2/0SqdzdiENBkvCr1u9iPiRauYh9JPQerJima31VlPgZxFj7+ZoStGxP+xoJe6fp1XGPNuPmabioAkScbGHSdadoqHTddSJk2aXupoHg+nmWFLG3suukth1s7rrD6FTnM4f4azG0ODS+HZ8fjSaUGJ2IAkmsWEJxKGWWu6iewSZvbKJzgWafNzgv/jadOl4YGG1zNj6VVAsmf9fYUm2e+pkWI7A29f3VUoKn2WuDco1ragMET0HMqnEbaZFHTR7Z+7YLfdK9u7z5ZIbdud9Nz82ozES+Kky/grkNOu6zboflRMFdcJy7WUWMBCce7Hmjf5gt4kvqjNqTY2AXedodghSUovI1cyQTqgZ28jQMqWHyVNGXTCbt7EUftk0Rv/Ardl5K3BElC6l4UYiHMKpSZ+rRS6rTVHXPM3yJFEUGYNfDTLZhUms6oppVkEBHPAqrbnMSczoAi72CM5Of6FuyU5Vtvn+rj6D65ZnhpbuePSzhg4uipJaFeh1Sf7CYdWR6JOP8e/AkNv9PqlxpbGelfJjo1Y+B1NmCdqAHWUj1xWaAuWjFAi6R4TZNiQYDl2LMl/477pSp9l3azXQ83n1C+nvrOIDNf2ToZMn7uXElrYrTUWZZBqiW70u6JvBZmUcQDaDYjvsiXP8qBa5+ul6wjWHnzRGQrbVp1ThkZfDF86ouyKvTzrdlPlDsS6IhiInDl7vqpW4KXGJvspVL/tfIW X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 290d93f1-62cf-4748-c6d4-08d9918a2fac X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2021 16:21:34.5741 (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: /2aeMhdRymaZjfb+sNn7rc5z1awilCI1GQE9UFrI5A/PPwz1dZX9obc0zD3k7iy+ouWRwr3ehUz689e+slDO4Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8615 Subject: [dpdk-dev] [PATCH v5 05/15] crypto/dpaa2_sec: support raw datapath APIs 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 Sender: "dev" From: Gagandeep Singh This path add framework for raw API support. The initial patch only test cipher only part. Signed-off-by: Hemant Agrawal Signed-off-by: Gagandeep Singh --- doc/guides/rel_notes/release_21_11.rst | 1 + drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c | 13 +- drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h | 60 +- drivers/crypto/dpaa2_sec/dpaa2_sec_raw_dp.c | 595 ++++++++++++++++++++ drivers/crypto/dpaa2_sec/meson.build | 3 +- 5 files changed, 643 insertions(+), 29 deletions(-) create mode 100644 drivers/crypto/dpaa2_sec/dpaa2_sec_raw_dp.c diff --git a/doc/guides/rel_notes/release_21_11.rst b/doc/guides/rel_notes/release_21_11.rst index 6e274a131f..0566aacf19 100644 --- a/doc/guides/rel_notes/release_21_11.rst +++ b/doc/guides/rel_notes/release_21_11.rst @@ -128,6 +128,7 @@ New Features * **Updated NXP dpaa2_sec crypto PMD.** * Added PDCP short MAC-I support. + * Added raw vector datapath API support * **Updated the ACC100 bbdev PMD.** diff --git a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c index dfa72f3f93..4eb3615250 100644 --- a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c +++ b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c @@ -49,15 +49,8 @@ #define FSL_MC_DPSECI_DEVID 3 #define NO_PREFETCH 0 -/* FLE_POOL_NUM_BUFS is set as per the ipsec-secgw application */ -#define FLE_POOL_NUM_BUFS 32000 -#define FLE_POOL_BUF_SIZE 256 -#define FLE_POOL_CACHE_SIZE 512 -#define FLE_SG_MEM_SIZE(num) (FLE_POOL_BUF_SIZE + ((num) * 32)) -#define SEC_FLC_DHR_OUTBOUND -114 -#define SEC_FLC_DHR_INBOUND 0 -static uint8_t cryptodev_driver_id; +uint8_t cryptodev_driver_id; #ifdef RTE_LIB_SECURITY static inline int @@ -3828,6 +3821,9 @@ static struct rte_cryptodev_ops crypto_ops = { .sym_session_get_size = dpaa2_sec_sym_session_get_size, .sym_session_configure = dpaa2_sec_sym_session_configure, .sym_session_clear = dpaa2_sec_sym_session_clear, + /* Raw data-path API related operations */ + .sym_get_raw_dp_ctx_size = dpaa2_sec_get_dp_ctx_size, + .sym_configure_raw_dp_ctx = dpaa2_sec_configure_raw_dp_ctx, }; #ifdef RTE_LIB_SECURITY @@ -3910,6 +3906,7 @@ dpaa2_sec_dev_init(struct rte_cryptodev *cryptodev) RTE_CRYPTODEV_FF_HW_ACCELERATED | RTE_CRYPTODEV_FF_SYM_OPERATION_CHAINING | RTE_CRYPTODEV_FF_SECURITY | + RTE_CRYPTODEV_FF_SYM_RAW_DP | RTE_CRYPTODEV_FF_IN_PLACE_SGL | RTE_CRYPTODEV_FF_OOP_SGL_IN_SGL_OUT | RTE_CRYPTODEV_FF_OOP_SGL_IN_LB_OUT | diff --git a/drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h b/drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h index 8dee0a4bda..e9b888186e 100644 --- a/drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h +++ b/drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h @@ -15,6 +15,16 @@ #define CRYPTODEV_NAME_DPAA2_SEC_PMD crypto_dpaa2_sec /**< NXP DPAA2 - SEC PMD device name */ +extern uint8_t cryptodev_driver_id; + +/* FLE_POOL_NUM_BUFS is set as per the ipsec-secgw application */ +#define FLE_POOL_NUM_BUFS 32000 +#define FLE_POOL_BUF_SIZE 256 +#define FLE_POOL_CACHE_SIZE 512 +#define FLE_SG_MEM_SIZE(num) (FLE_POOL_BUF_SIZE + ((num) * 32)) +#define SEC_FLC_DHR_OUTBOUND -114 +#define SEC_FLC_DHR_INBOUND 0 + #define MAX_QUEUES 64 #define MAX_DESC_SIZE 64 /** private data structure for each DPAA2_SEC device */ @@ -158,6 +168,24 @@ struct dpaa2_pdcp_ctxt { uint32_t hfn_threshold; /*!< HFN Threashold for key renegotiation */ }; #endif + +typedef int (*dpaa2_sec_build_fd_t)( + void *qp, uint8_t *drv_ctx, struct rte_crypto_vec *data_vec, + uint16_t n_data_vecs, union rte_crypto_sym_ofs ofs, + struct rte_crypto_va_iova_ptr *iv, + struct rte_crypto_va_iova_ptr *digest, + struct rte_crypto_va_iova_ptr *aad_or_auth_iv, + void *user_data); + +typedef int (*dpaa2_sec_build_raw_dp_fd_t)(uint8_t *drv_ctx, + struct rte_crypto_sgl *sgl, + struct rte_crypto_va_iova_ptr *iv, + struct rte_crypto_va_iova_ptr *digest, + struct rte_crypto_va_iova_ptr *auth_iv, + union rte_crypto_sym_ofs ofs, + void *userdata, + struct qbman_fd *fd); + typedef struct dpaa2_sec_session_entry { void *ctxt; uint8_t ctxt_type; @@ -165,6 +193,8 @@ typedef struct dpaa2_sec_session_entry { enum rte_crypto_cipher_algorithm cipher_alg; /*!< Cipher Algorithm*/ enum rte_crypto_auth_algorithm auth_alg; /*!< Authentication Algorithm*/ enum rte_crypto_aead_algorithm aead_alg; /*!< AEAD Algorithm*/ + dpaa2_sec_build_fd_t build_fd; + dpaa2_sec_build_raw_dp_fd_t build_raw_dp_fd; union { struct { uint8_t *data; /**< pointer to key data */ @@ -547,26 +577,6 @@ static const struct rte_cryptodev_capabilities dpaa2_sec_capabilities[] = { }, } }, } }, - { /* NULL (CIPHER) */ - .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, - {.sym = { - .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER, - {.cipher = { - .algo = RTE_CRYPTO_CIPHER_NULL, - .block_size = 1, - .key_size = { - .min = 0, - .max = 0, - .increment = 0 - }, - .iv_size = { - .min = 0, - .max = 0, - .increment = 0 - } - }, }, - }, } - }, { /* AES CBC */ .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, {.sym = { @@ -983,4 +993,14 @@ calc_chksum(void *buffer, int len) return result; } +int +dpaa2_sec_configure_raw_dp_ctx(struct rte_cryptodev *dev, uint16_t qp_id, + struct rte_crypto_raw_dp_ctx *raw_dp_ctx, + enum rte_crypto_op_sess_type sess_type, + union rte_cryptodev_session_ctx session_ctx, uint8_t is_update); + +int +dpaa2_sec_get_dp_ctx_size(struct rte_cryptodev *dev); + + #endif /* _DPAA2_SEC_PMD_PRIVATE_H_ */ diff --git a/drivers/crypto/dpaa2_sec/dpaa2_sec_raw_dp.c b/drivers/crypto/dpaa2_sec/dpaa2_sec_raw_dp.c new file mode 100644 index 0000000000..8925c8e938 --- /dev/null +++ b/drivers/crypto/dpaa2_sec/dpaa2_sec_raw_dp.c @@ -0,0 +1,595 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright 2021 NXP + */ + +#include +#include +#include +#include +#include + +#include "dpaa2_sec_priv.h" +#include "dpaa2_sec_logs.h" + +struct dpaa2_sec_raw_dp_ctx { + dpaa2_sec_session *session; + uint32_t tail; + uint32_t head; + uint16_t cached_enqueue; + uint16_t cached_dequeue; +}; + +static int +build_raw_dp_chain_fd(uint8_t *drv_ctx, + struct rte_crypto_sgl *sgl, + struct rte_crypto_va_iova_ptr *iv, + struct rte_crypto_va_iova_ptr *digest, + struct rte_crypto_va_iova_ptr *auth_iv, + union rte_crypto_sym_ofs ofs, + void *userdata, + struct qbman_fd *fd) +{ + RTE_SET_USED(drv_ctx); + RTE_SET_USED(sgl); + RTE_SET_USED(iv); + RTE_SET_USED(digest); + RTE_SET_USED(auth_iv); + RTE_SET_USED(ofs); + RTE_SET_USED(userdata); + RTE_SET_USED(fd); + + return 0; +} + +static int +build_raw_dp_aead_fd(uint8_t *drv_ctx, + struct rte_crypto_sgl *sgl, + struct rte_crypto_va_iova_ptr *iv, + struct rte_crypto_va_iova_ptr *digest, + struct rte_crypto_va_iova_ptr *auth_iv, + union rte_crypto_sym_ofs ofs, + void *userdata, + struct qbman_fd *fd) +{ + RTE_SET_USED(drv_ctx); + RTE_SET_USED(sgl); + RTE_SET_USED(iv); + RTE_SET_USED(digest); + RTE_SET_USED(auth_iv); + RTE_SET_USED(ofs); + RTE_SET_USED(userdata); + RTE_SET_USED(fd); + + return 0; +} + +static int +build_raw_dp_auth_fd(uint8_t *drv_ctx, + struct rte_crypto_sgl *sgl, + struct rte_crypto_va_iova_ptr *iv, + struct rte_crypto_va_iova_ptr *digest, + struct rte_crypto_va_iova_ptr *auth_iv, + union rte_crypto_sym_ofs ofs, + void *userdata, + struct qbman_fd *fd) +{ + RTE_SET_USED(drv_ctx); + RTE_SET_USED(sgl); + RTE_SET_USED(iv); + RTE_SET_USED(digest); + RTE_SET_USED(auth_iv); + RTE_SET_USED(ofs); + RTE_SET_USED(userdata); + RTE_SET_USED(fd); + + return 0; +} + +static int +build_raw_dp_proto_fd(uint8_t *drv_ctx, + struct rte_crypto_sgl *sgl, + struct rte_crypto_va_iova_ptr *iv, + struct rte_crypto_va_iova_ptr *digest, + struct rte_crypto_va_iova_ptr *auth_iv, + union rte_crypto_sym_ofs ofs, + void *userdata, + struct qbman_fd *fd) +{ + RTE_SET_USED(drv_ctx); + RTE_SET_USED(sgl); + RTE_SET_USED(iv); + RTE_SET_USED(digest); + RTE_SET_USED(auth_iv); + RTE_SET_USED(ofs); + RTE_SET_USED(userdata); + RTE_SET_USED(fd); + + return 0; +} + +static int +build_raw_dp_proto_compound_fd(uint8_t *drv_ctx, + struct rte_crypto_sgl *sgl, + struct rte_crypto_va_iova_ptr *iv, + struct rte_crypto_va_iova_ptr *digest, + struct rte_crypto_va_iova_ptr *auth_iv, + union rte_crypto_sym_ofs ofs, + void *userdata, + struct qbman_fd *fd) +{ + RTE_SET_USED(drv_ctx); + RTE_SET_USED(sgl); + RTE_SET_USED(iv); + RTE_SET_USED(digest); + RTE_SET_USED(auth_iv); + RTE_SET_USED(ofs); + RTE_SET_USED(userdata); + RTE_SET_USED(fd); + + return 0; +} + +static int +build_raw_dp_cipher_fd(uint8_t *drv_ctx, + struct rte_crypto_sgl *sgl, + struct rte_crypto_va_iova_ptr *iv, + struct rte_crypto_va_iova_ptr *digest, + struct rte_crypto_va_iova_ptr *auth_iv, + union rte_crypto_sym_ofs ofs, + void *userdata, + struct qbman_fd *fd) +{ + RTE_SET_USED(digest); + RTE_SET_USED(auth_iv); + + dpaa2_sec_session *sess = + ((struct dpaa2_sec_raw_dp_ctx *)drv_ctx)->session; + struct qbman_fle *ip_fle, *op_fle, *sge, *fle; + int total_len = 0, data_len = 0, data_offset; + struct sec_flow_context *flc; + struct ctxt_priv *priv = sess->ctxt; + unsigned int i; + + for (i = 0; i < sgl->num; i++) + total_len += sgl->vec[i].len; + + data_len = total_len - ofs.ofs.cipher.head - ofs.ofs.cipher.tail; + data_offset = ofs.ofs.cipher.head; + + if (sess->cipher_alg == RTE_CRYPTO_CIPHER_SNOW3G_UEA2 || + sess->cipher_alg == RTE_CRYPTO_CIPHER_ZUC_EEA3) { + if ((data_len & 7) || (data_offset & 7)) { + DPAA2_SEC_ERR("CIPHER: len/offset must be full bytes"); + return -ENOTSUP; + } + + data_len = data_len >> 3; + data_offset = data_offset >> 3; + } + + /* first FLE entry used to store mbuf and session ctxt */ + fle = (struct qbman_fle *)rte_malloc(NULL, + FLE_SG_MEM_SIZE(2*sgl->num), + RTE_CACHE_LINE_SIZE); + if (!fle) { + DPAA2_SEC_ERR("RAW CIPHER SG: Memory alloc failed for SGE"); + return -ENOMEM; + } + memset(fle, 0, FLE_SG_MEM_SIZE(2*sgl->num)); + /* first FLE entry used to store userdata and session ctxt */ + DPAA2_SET_FLE_ADDR(fle, (size_t)userdata); + DPAA2_FLE_SAVE_CTXT(fle, (ptrdiff_t)priv); + + op_fle = fle + 1; + ip_fle = fle + 2; + sge = fle + 3; + + flc = &priv->flc_desc[0].flc; + + DPAA2_SEC_DP_DEBUG( + "RAW CIPHER SG: cipher_off: 0x%x/length %d, ivlen=%d\n", + data_offset, + data_len, + sess->iv.length); + + /* o/p fle */ + DPAA2_SET_FLE_ADDR(op_fle, DPAA2_VADDR_TO_IOVA(sge)); + op_fle->length = data_len; + DPAA2_SET_FLE_SG_EXT(op_fle); + + /* o/p 1st seg */ + DPAA2_SET_FLE_ADDR(sge, sgl->vec[0].iova); + DPAA2_SET_FLE_OFFSET(sge, data_offset); + sge->length = sgl->vec[0].len - data_offset; + + /* o/p segs */ + for (i = 1; i < sgl->num; i++) { + sge++; + DPAA2_SET_FLE_ADDR(sge, sgl->vec[i].iova); + DPAA2_SET_FLE_OFFSET(sge, 0); + sge->length = sgl->vec[i].len; + } + DPAA2_SET_FLE_FIN(sge); + + DPAA2_SEC_DP_DEBUG( + "RAW CIPHER SG: 1 - flc = %p, fle = %p FLEaddr = %x-%x, len %d\n", + flc, fle, fle->addr_hi, fle->addr_lo, + fle->length); + + /* i/p fle */ + sge++; + DPAA2_SET_FLE_ADDR(ip_fle, DPAA2_VADDR_TO_IOVA(sge)); + ip_fle->length = sess->iv.length + data_len; + DPAA2_SET_FLE_SG_EXT(ip_fle); + + /* i/p IV */ + DPAA2_SET_FLE_ADDR(sge, iv->iova); + DPAA2_SET_FLE_OFFSET(sge, 0); + sge->length = sess->iv.length; + + sge++; + + /* i/p 1st seg */ + DPAA2_SET_FLE_ADDR(sge, sgl->vec[0].iova); + DPAA2_SET_FLE_OFFSET(sge, data_offset); + sge->length = sgl->vec[0].len - data_offset; + + /* i/p segs */ + for (i = 1; i < sgl->num; i++) { + sge++; + DPAA2_SET_FLE_ADDR(sge, sgl->vec[i].iova); + DPAA2_SET_FLE_OFFSET(sge, 0); + sge->length = sgl->vec[i].len; + } + DPAA2_SET_FLE_FIN(sge); + DPAA2_SET_FLE_FIN(ip_fle); + + /* sg fd */ + DPAA2_SET_FD_ADDR(fd, DPAA2_VADDR_TO_IOVA(op_fle)); + DPAA2_SET_FD_LEN(fd, ip_fle->length); + DPAA2_SET_FD_COMPOUND_FMT(fd); + DPAA2_SET_FD_FLC(fd, DPAA2_VADDR_TO_IOVA(flc)); + + DPAA2_SEC_DP_DEBUG( + "RAW CIPHER SG: fdaddr =%" PRIx64 " off =%d, len =%d\n", + DPAA2_GET_FD_ADDR(fd), + DPAA2_GET_FD_OFFSET(fd), + DPAA2_GET_FD_LEN(fd)); + + return 0; +} + +static __rte_always_inline uint32_t +dpaa2_sec_raw_enqueue_burst(void *qp_data, uint8_t *drv_ctx, + struct rte_crypto_sym_vec *vec, union rte_crypto_sym_ofs ofs, + void *user_data[], int *status) +{ + RTE_SET_USED(user_data); + uint32_t loop; + int32_t ret; + struct qbman_fd fd_arr[MAX_TX_RING_SLOTS]; + uint32_t frames_to_send, retry_count; + struct qbman_eq_desc eqdesc; + struct dpaa2_sec_qp *dpaa2_qp = (struct dpaa2_sec_qp *)qp_data; + dpaa2_sec_session *sess = + ((struct dpaa2_sec_raw_dp_ctx *)drv_ctx)->session; + struct qbman_swp *swp; + uint16_t num_tx = 0; + uint32_t flags[MAX_TX_RING_SLOTS] = {0}; + + if (unlikely(vec->num == 0)) + return 0; + + if (sess == NULL) { + DPAA2_SEC_ERR("sessionless raw crypto not supported"); + return 0; + } + /*Prepare enqueue descriptor*/ + qbman_eq_desc_clear(&eqdesc); + qbman_eq_desc_set_no_orp(&eqdesc, DPAA2_EQ_RESP_ERR_FQ); + qbman_eq_desc_set_response(&eqdesc, 0, 0); + qbman_eq_desc_set_fq(&eqdesc, dpaa2_qp->tx_vq.fqid); + + if (!DPAA2_PER_LCORE_DPIO) { + ret = dpaa2_affine_qbman_swp(); + if (ret) { + DPAA2_SEC_ERR( + "Failed to allocate IO portal, tid: %d\n", + rte_gettid()); + return 0; + } + } + swp = DPAA2_PER_LCORE_PORTAL; + + while (vec->num) { + frames_to_send = (vec->num > dpaa2_eqcr_size) ? + dpaa2_eqcr_size : vec->num; + + for (loop = 0; loop < frames_to_send; loop++) { + /*Clear the unused FD fields before sending*/ + memset(&fd_arr[loop], 0, sizeof(struct qbman_fd)); + ret = sess->build_raw_dp_fd(drv_ctx, + &vec->src_sgl[loop], + &vec->iv[loop], + &vec->digest[loop], + &vec->auth_iv[loop], + ofs, + user_data[loop], + &fd_arr[loop]); + if (ret) { + DPAA2_SEC_ERR("error: Improper packet contents" + " for crypto operation"); + goto skip_tx; + } + status[loop] = 1; + } + + loop = 0; + retry_count = 0; + while (loop < frames_to_send) { + ret = qbman_swp_enqueue_multiple(swp, &eqdesc, + &fd_arr[loop], + &flags[loop], + frames_to_send - loop); + if (unlikely(ret < 0)) { + retry_count++; + if (retry_count > DPAA2_MAX_TX_RETRY_COUNT) { + num_tx += loop; + vec->num -= loop; + goto skip_tx; + } + } else { + loop += ret; + retry_count = 0; + } + } + + num_tx += loop; + vec->num -= loop; + } +skip_tx: + dpaa2_qp->tx_vq.tx_pkts += num_tx; + dpaa2_qp->tx_vq.err_pkts += vec->num; + + return num_tx; +} + +static __rte_always_inline int +dpaa2_sec_raw_enqueue(void *qp_data, uint8_t *drv_ctx, + struct rte_crypto_vec *data_vec, + uint16_t n_data_vecs, union rte_crypto_sym_ofs ofs, + struct rte_crypto_va_iova_ptr *iv, + struct rte_crypto_va_iova_ptr *digest, + struct rte_crypto_va_iova_ptr *aad_or_auth_iv, + void *user_data) +{ + RTE_SET_USED(qp_data); + RTE_SET_USED(drv_ctx); + RTE_SET_USED(data_vec); + RTE_SET_USED(n_data_vecs); + RTE_SET_USED(ofs); + RTE_SET_USED(iv); + RTE_SET_USED(digest); + RTE_SET_USED(aad_or_auth_iv); + RTE_SET_USED(user_data); + + return 0; +} + +static inline void * +sec_fd_to_userdata(const struct qbman_fd *fd) +{ + struct qbman_fle *fle; + void *userdata; + fle = (struct qbman_fle *)DPAA2_IOVA_TO_VADDR(DPAA2_GET_FD_ADDR(fd)); + + DPAA2_SEC_DP_DEBUG("FLE addr = %x - %x, offset = %x\n", + fle->addr_hi, fle->addr_lo, fle->fin_bpid_offset); + userdata = (struct rte_crypto_op *)DPAA2_GET_FLE_ADDR((fle - 1)); + /* free the fle memory */ + rte_free((void *)(fle-1)); + + return userdata; +} + +static __rte_always_inline uint32_t +dpaa2_sec_raw_dequeue_burst(void *qp_data, uint8_t *drv_ctx, + rte_cryptodev_raw_get_dequeue_count_t get_dequeue_count, + uint32_t max_nb_to_dequeue, + rte_cryptodev_raw_post_dequeue_t post_dequeue, + void **out_user_data, uint8_t is_user_data_array, + uint32_t *n_success, int *dequeue_status) +{ + RTE_SET_USED(drv_ctx); + RTE_SET_USED(get_dequeue_count); + + /* Function is responsible to receive frames for a given device and VQ*/ + struct dpaa2_sec_qp *dpaa2_qp = (struct dpaa2_sec_qp *)qp_data; + struct qbman_result *dq_storage; + uint32_t fqid = dpaa2_qp->rx_vq.fqid; + int ret, num_rx = 0; + uint8_t is_last = 0, status; + struct qbman_swp *swp; + const struct qbman_fd *fd; + struct qbman_pull_desc pulldesc; + void *user_data; + uint32_t nb_ops = max_nb_to_dequeue; + + if (!DPAA2_PER_LCORE_DPIO) { + ret = dpaa2_affine_qbman_swp(); + if (ret) { + DPAA2_SEC_ERR( + "Failed to allocate IO portal, tid: %d\n", + rte_gettid()); + return 0; + } + } + swp = DPAA2_PER_LCORE_PORTAL; + dq_storage = dpaa2_qp->rx_vq.q_storage->dq_storage[0]; + + qbman_pull_desc_clear(&pulldesc); + qbman_pull_desc_set_numframes(&pulldesc, + (nb_ops > dpaa2_dqrr_size) ? + dpaa2_dqrr_size : nb_ops); + qbman_pull_desc_set_fq(&pulldesc, fqid); + qbman_pull_desc_set_storage(&pulldesc, dq_storage, + (uint64_t)DPAA2_VADDR_TO_IOVA(dq_storage), + 1); + + /*Issue a volatile dequeue command. */ + while (1) { + if (qbman_swp_pull(swp, &pulldesc)) { + DPAA2_SEC_WARN( + "SEC VDQ command is not issued : QBMAN busy"); + /* Portal was busy, try again */ + continue; + } + break; + }; + + /* Receive the packets till Last Dequeue entry is found with + * respect to the above issues PULL command. + */ + while (!is_last) { + /* Check if the previous issued command is completed. + * Also seems like the SWP is shared between the Ethernet Driver + * and the SEC driver. + */ + while (!qbman_check_command_complete(dq_storage)) + ; + + /* Loop until the dq_storage is updated with + * new token by QBMAN + */ + while (!qbman_check_new_result(dq_storage)) + ; + /* Check whether Last Pull command is Expired and + * setting Condition for Loop termination + */ + if (qbman_result_DQ_is_pull_complete(dq_storage)) { + is_last = 1; + /* Check for valid frame. */ + status = (uint8_t)qbman_result_DQ_flags(dq_storage); + if (unlikely( + (status & QBMAN_DQ_STAT_VALIDFRAME) == 0)) { + DPAA2_SEC_DP_DEBUG("No frame is delivered\n"); + continue; + } + } + + fd = qbman_result_DQ_fd(dq_storage); + user_data = sec_fd_to_userdata(fd); + if (is_user_data_array) + out_user_data[num_rx] = user_data; + else + out_user_data[0] = user_data; + if (unlikely(fd->simple.frc)) { + /* TODO Parse SEC errors */ + DPAA2_SEC_ERR("SEC returned Error - %x", + fd->simple.frc); + status = RTE_CRYPTO_OP_STATUS_ERROR; + } else { + status = RTE_CRYPTO_OP_STATUS_SUCCESS; + } + post_dequeue(user_data, num_rx, status); + + num_rx++; + dq_storage++; + } /* End of Packet Rx loop */ + + dpaa2_qp->rx_vq.rx_pkts += num_rx; + *dequeue_status = 1; + *n_success = num_rx; + + DPAA2_SEC_DP_DEBUG("SEC Received %d Packets\n", num_rx); + /*Return the total number of packets received to DPAA2 app*/ + return num_rx; +} + +static __rte_always_inline void * +dpaa2_sec_raw_dequeue(void *qp_data, uint8_t *drv_ctx, int *dequeue_status, + enum rte_crypto_op_status *op_status) +{ + RTE_SET_USED(qp_data); + RTE_SET_USED(drv_ctx); + RTE_SET_USED(dequeue_status); + RTE_SET_USED(op_status); + + return NULL; +} + +static __rte_always_inline int +dpaa2_sec_raw_enqueue_done(void *qp_data, uint8_t *drv_ctx, uint32_t n) +{ + RTE_SET_USED(qp_data); + RTE_SET_USED(drv_ctx); + RTE_SET_USED(n); + + return 0; +} + +static __rte_always_inline int +dpaa2_sec_raw_dequeue_done(void *qp_data, uint8_t *drv_ctx, uint32_t n) +{ + RTE_SET_USED(qp_data); + RTE_SET_USED(drv_ctx); + RTE_SET_USED(n); + + return 0; +} + +int +dpaa2_sec_configure_raw_dp_ctx(struct rte_cryptodev *dev, uint16_t qp_id, + struct rte_crypto_raw_dp_ctx *raw_dp_ctx, + enum rte_crypto_op_sess_type sess_type, + union rte_cryptodev_session_ctx session_ctx, uint8_t is_update) +{ + dpaa2_sec_session *sess; + struct dpaa2_sec_raw_dp_ctx *dp_ctx; + RTE_SET_USED(qp_id); + + if (!is_update) { + memset(raw_dp_ctx, 0, sizeof(*raw_dp_ctx)); + raw_dp_ctx->qp_data = dev->data->queue_pairs[qp_id]; + } + + if (sess_type == RTE_CRYPTO_OP_SECURITY_SESSION) + sess = (dpaa2_sec_session *)get_sec_session_private_data( + session_ctx.sec_sess); + else if (sess_type == RTE_CRYPTO_OP_WITH_SESSION) + sess = (dpaa2_sec_session *)get_sym_session_private_data( + session_ctx.crypto_sess, cryptodev_driver_id); + else + return -ENOTSUP; + raw_dp_ctx->dequeue_burst = dpaa2_sec_raw_dequeue_burst; + raw_dp_ctx->dequeue = dpaa2_sec_raw_dequeue; + raw_dp_ctx->dequeue_done = dpaa2_sec_raw_dequeue_done; + raw_dp_ctx->enqueue_burst = dpaa2_sec_raw_enqueue_burst; + raw_dp_ctx->enqueue = dpaa2_sec_raw_enqueue; + raw_dp_ctx->enqueue_done = dpaa2_sec_raw_enqueue_done; + + if (sess->ctxt_type == DPAA2_SEC_CIPHER_HASH) + sess->build_raw_dp_fd = build_raw_dp_chain_fd; + else if (sess->ctxt_type == DPAA2_SEC_AEAD) + sess->build_raw_dp_fd = build_raw_dp_aead_fd; + else if (sess->ctxt_type == DPAA2_SEC_AUTH) + sess->build_raw_dp_fd = build_raw_dp_auth_fd; + else if (sess->ctxt_type == DPAA2_SEC_CIPHER) + sess->build_raw_dp_fd = build_raw_dp_cipher_fd; + else if (sess->ctxt_type == DPAA2_SEC_IPSEC) + sess->build_raw_dp_fd = build_raw_dp_proto_fd; + else if (sess->ctxt_type == DPAA2_SEC_PDCP) + sess->build_raw_dp_fd = build_raw_dp_proto_compound_fd; + else + return -ENOTSUP; + dp_ctx = (struct dpaa2_sec_raw_dp_ctx *)raw_dp_ctx->drv_ctx_data; + dp_ctx->session = sess; + + return 0; +} + +int +dpaa2_sec_get_dp_ctx_size(__rte_unused struct rte_cryptodev *dev) +{ + return sizeof(struct dpaa2_sec_raw_dp_ctx); +} diff --git a/drivers/crypto/dpaa2_sec/meson.build b/drivers/crypto/dpaa2_sec/meson.build index ea1d73a13d..e6e5abb3c1 100644 --- a/drivers/crypto/dpaa2_sec/meson.build +++ b/drivers/crypto/dpaa2_sec/meson.build @@ -1,5 +1,5 @@ # SPDX-License-Identifier: BSD-3-Clause -# Copyright 2018 NXP +# Copyright 2018,2021 NXP if not is_linux build = false @@ -9,6 +9,7 @@ endif deps += ['security', 'mempool_dpaa2'] sources = files( 'dpaa2_sec_dpseci.c', + 'dpaa2_sec_raw_dp.c', 'mc/dpseci.c', ) From patchwork Sun Oct 17 16:16:42 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 101916 X-Patchwork-Delegate: gakhil@marvell.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 7DC4DA0547; Sun, 17 Oct 2021 18:22:09 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id CB8D3410E8; Sun, 17 Oct 2021 18:21:40 +0200 (CEST) Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-eopbgr80042.outbound.protection.outlook.com [40.107.8.42]) by mails.dpdk.org (Postfix) with ESMTP id 9C1C241122 for ; Sun, 17 Oct 2021 18:21:37 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=adUk6vRkkLYUNgRAyg39s2HvmEuL7kVZGwi+kRMorgIPu7H1wkWsq/M67RQxRLMZJY1bNeS12U+iKFWs/FItaQ55NwEiAgPNeiHMECoIPBDvIKr8iu3mCz0l/qA43veRFyPqK1M4LJzQmNqLhhNu6bKXHg71rLu0xSae9tSsHxt/CuqCvDF2XkjHMfUknSiklG2VBDBFe/ZpNQ6lj35NdFt0qlfJjihpdHr44sCtMTd98lrbOr/AzNDOObY++da4XA4ioKlIzI5Acanv9WheLt8ohFjYxaJCvnvdSk1fPzmsXH1ej3qagKzmabP82VSXUszYPm0d+HPU+5n4kuisFQ== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=JHkHTOw9GC7O9qEgO7F+uXIPHJEBB+RStE3p/D3Nbrg=; b=Z7JWXIPjml8X79ypF/7Y2xsPwpdnwX6CQRRDgBHqZZVb9ZshutyVBd8T9aAM7wDQBE+B1KbX/PYHafzkxuZknp0NOnEGVrGwaX92CWAXy5mSRzNieofd5szJIwzKSQZq7uEJvuVp9e55qRa/6B16PuEWUXJ1eCui7otJm0e6B9cBJmzNs74OTRiQ2gKa+hFZJQUlNJGSdqriXoXou1MEq+aI3w+kiGJhVYdJMI9lwRZAGAdeVZ06tLgj0JkvjmSdXGX412yLzeeUPUjuZW9R2cmoQQM1K3yeOLVLjE4GktRb2QYcQnAIpUTDeqlGYz2cwlS7p8/scaZOiT9Xn6Z9YA== 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=JHkHTOw9GC7O9qEgO7F+uXIPHJEBB+RStE3p/D3Nbrg=; b=dBxl6b+ZBu1Epnar2aWZJVIbHJgoNciCOuX0YulNtl7azl6Y8/wmx+K/JwZMvedaMHgesXK2WNZgm1nAMRYVC89fsCbL2rCmY+apFnbuiJ24eAVora+0SkXXiRR2VqZqjwscQBvOV/OIlmV3jwqFD2WPuaS6M66ZHxiWe+z08SE= Authentication-Results: dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; dmarc=none action=none header.from=nxp.com; Received: from DU2PR04MB8630.eurprd04.prod.outlook.com (2603:10a6:10:2dd::15) by DU2PR04MB8615.eurprd04.prod.outlook.com (2603:10a6:10:2da::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.15; Sun, 17 Oct 2021 16:21:37 +0000 Received: from DU2PR04MB8630.eurprd04.prod.outlook.com ([fe80::945d:e362:712d:1b80]) by DU2PR04MB8630.eurprd04.prod.outlook.com ([fe80::945d:e362:712d:1b80%3]) with mapi id 15.20.4608.018; Sun, 17 Oct 2021 16:21:36 +0000 From: Hemant Agrawal To: dev@dpdk.org, gakhil@marvell.com Cc: konstantin.ananyev@intel.com, roy.fan.zhang@intel.com, Gagandeep Singh Date: Sun, 17 Oct 2021 21:46:42 +0530 Message-Id: <20211017161651.9220-7-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211017161651.9220-1-hemant.agrawal@nxp.com> References: <20211013190032.2308-1-hemant.agrawal@nxp.com> <20211017161651.9220-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SI2PR01CA0053.apcprd01.prod.exchangelabs.com (2603:1096:4:193::7) To DU2PR04MB8630.eurprd04.prod.outlook.com (2603:10a6:10:2dd::15) MIME-Version: 1.0 Received: from dpdk-xeon.ap.freescale.net (92.120.0.67) by SI2PR01CA0053.apcprd01.prod.exchangelabs.com (2603:1096:4:193::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.15 via Frontend Transport; Sun, 17 Oct 2021 16:21:35 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 53b100e1-5d56-4f6c-52ed-08d9918a3130 X-MS-TrafficTypeDiagnostic: DU2PR04MB8615: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1775; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: kKBbz/GZAjscatBocq4GnNPzCqRQSOd+U/W11oB3Vbm74HVsXLYyF7xwq66OqeDS4UZh7MpHI+efvNTWzgKtRS3m0Hzay4cTRyaYl/QMpQQRJFIIc6FMSNlmkULf97rZhBpp+TVX3PHv/cAFv58vfGAbfsuKEwGfKIQHTI2edd/4l+/AupC/US3kvs7xhCrtbaAyaM3XYl2uUJGq8MjC1D+Kgz4ulKlnw+WVpMxoFMj6yYzR/7YctZD2xBCFU/gi4V0HmqSrLP4BSiOvFB6NWtJrM/Azbapm2yHsrPm5tAfExx+3VSj8JETsAAPxNcflWUVjCIknJozr6zxjIumAjKkZs+mw/2TIvUUqS6xc29W5NNGwTlSUW0efnnEGhIcGOq6otVnb20346DgMy3ryfI1RO0a31/8g5DWCwb+pvh0nG91TWul/vuIPSW9Nw2mWakHgCnrlPSDV0YmtnzeTx77RrNQWBiecBQcbes74CRrB2spsRKuR/Jz2VmcNlnzT8PFc1L9Qg6oYwLLr1POhcwwGfcxjwIra5qYkI+z6lr3NeZ3E43nVY8wGoSNgRSFg1CvPgdRtQO7Qu1ReUvpCQDoVtNNcPUTSI5rr9EmFh36I+AsCot7wxO8hbwG/8+3dPskIAYV/Da7MFzYMROFPua5bI9LaU2975SnBdG+i+WINz0dbhGmmZl91lFF0Me9b6yo5sCaTktJRzhWCHE/DIg== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DU2PR04MB8630.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(6486002)(66476007)(8936002)(66556008)(66946007)(86362001)(52116002)(36756003)(5660300002)(38350700002)(8676002)(38100700002)(508600001)(6506007)(26005)(44832011)(4326008)(6512007)(2616005)(83380400001)(6666004)(1076003)(2906002)(316002)(186003)(956004); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: xEfjihWfKlbw6zBqjQdzadbkR4zSSe9amPUWRdCxQc/FB/ZliFZaMz9lApTJVTWiYWcnRNA+gFP95YVtT7o+X8rVt5mYyvABilo6EU9EQ+yogHovy2laafU41yd/m4TTdCy3vTKoAnupp89PaYxEcyi77dEUtMZweCR1DPmh7Q9OE0l4CQQ1AqX7pjdkYkFOrwmW4AQYQuCF1EmerXPaH0TIveAdXakAZjbO/Wfvn7B8uzxL4j3hzGMgjS93MXKKTvvFkAkJ/5id0DZpfoQdgiRyzC6VJrdvVHdKtbIA5Pd4Yo4WDVmLx0ImxYxVn7YSYCW9cBq24P1CCxBn5wEBGLxRKlhtuZfJtDbAoKVLqEHkIn775oKFGgdvqmuo7z6VSmWcPuCeLyxCSDIXQ8Bi4bdrnjyXKv7kIt4rGHA48NKRJzx0RJ1DyAg59N1vt+NuAj6poaxp4T3JmHnvnVlts25oMCRG/xBtunoiT8tsEcE1G/GjelN7pz/QLO/b6RMnrflquR7Na5u0WrtCmsRBSJ1i9IANSStZ4OQg8XkHVjetJA7O00J0J6lo04JSZ6jjUybKZN4V6ZKAZo3lJElPk30SIe/Q3NoOEeXwgtbopL0FqNB97SKwCbX9p/psmdE68lWIpjyeATkbHlNl2njS1xfZCh3ZFVyMQiXBoanzpahZF/63N4CEPCx0Xz6vCWzMe0epfT0qY+CQ7seDHd0mIi+tp9/jkYZXgvd0kIYwTaP+Fk/iBAjAyuaHSSjT3htBspt92XQultKOpgzMXdzHro/uIU0hK8nLgcutVyPSDvMHomA+AFEKkOt3f3f9MWed1uHHJ+tdVgAkBWgebsRT9bfEl/DM+yGZBKVtZcCfbY6sg5HN7i9BpGW4xCLRu0nwNIJIMp8vo5rjkB2RypmW5A12F2zSnQkXQ8UqTL3edMQYBDiq1EG/66jt9j5AzWN+ZuQI0YPmFhT0MlrXCx4wJcYR480KK/aH5Ua7wZH7zKfHMa5IaN0kRe9JhCq+QT7S33VSmvIlIhq92TSy4fD8uFh1ujmH42UcS8yQKttzUUI10+PAtptsmORMdOU+LjKm1uzx5O5jVh7vz7CxL1PKSqOJGH7utoHMCE6PS6pyWyrveYTESlw3WZ6RJNvx27L0jSw2cxAvsnLqIPHcfTGpDIzGin60WEOCRdaqXOSBPg2An+k41nvxqo5hoZiCkqgZrJVEbEFLtZNw2rnNBZ/z4eDwv3yLahjMoWw2QF/Tej6G/I4MnoEG1l7C4ff750Gm/NYzWge/v8bWHuCEyRxzrY4Tm91eCQuQ/otDwy77i44FO0sE0UCGMJuo174hqGeN X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 53b100e1-5d56-4f6c-52ed-08d9918a3130 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2021 16:21:36.9009 (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: 7eS4OxSa+4TwZkYWmWdJGPKT+l3McBogZ3aJmf+WfvoLcYl8hDN+ibwjrNu62CVeTOwIq0Ol4NB0cJGdVdgXNw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8615 Subject: [dpdk-dev] [PATCH v5 06/15] crypto/dpaa2_sec: support AUTH only with raw buffer APIs 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 Sender: "dev" From: Gagandeep Singh Auth only with raw buffer APIs has been supported in this patch. Signed-off-by: Gagandeep Singh --- drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h | 21 ---- drivers/crypto/dpaa2_sec/dpaa2_sec_raw_dp.c | 114 ++++++++++++++++++-- 2 files changed, 108 insertions(+), 27 deletions(-) diff --git a/drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h b/drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h index e9b888186e..f397b756e8 100644 --- a/drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h +++ b/drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h @@ -231,27 +231,6 @@ typedef struct dpaa2_sec_session_entry { static const struct rte_cryptodev_capabilities dpaa2_sec_capabilities[] = { /* Symmetric capabilities */ - { /* NULL (AUTH) */ - .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, - {.sym = { - .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, - {.auth = { - .algo = RTE_CRYPTO_AUTH_NULL, - .block_size = 1, - .key_size = { - .min = 0, - .max = 0, - .increment = 0 - }, - .digest_size = { - .min = 0, - .max = 0, - .increment = 0 - }, - .iv_size = { 0 } - }, }, - }, }, - }, { /* MD5 */ .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, {.sym = { diff --git a/drivers/crypto/dpaa2_sec/dpaa2_sec_raw_dp.c b/drivers/crypto/dpaa2_sec/dpaa2_sec_raw_dp.c index 8925c8e938..471c81b9e7 100644 --- a/drivers/crypto/dpaa2_sec/dpaa2_sec_raw_dp.c +++ b/drivers/crypto/dpaa2_sec/dpaa2_sec_raw_dp.c @@ -11,6 +11,8 @@ #include "dpaa2_sec_priv.h" #include "dpaa2_sec_logs.h" +#include + struct dpaa2_sec_raw_dp_ctx { dpaa2_sec_session *session; uint32_t tail; @@ -73,14 +75,114 @@ build_raw_dp_auth_fd(uint8_t *drv_ctx, void *userdata, struct qbman_fd *fd) { - RTE_SET_USED(drv_ctx); - RTE_SET_USED(sgl); RTE_SET_USED(iv); - RTE_SET_USED(digest); RTE_SET_USED(auth_iv); - RTE_SET_USED(ofs); - RTE_SET_USED(userdata); - RTE_SET_USED(fd); + + dpaa2_sec_session *sess = + ((struct dpaa2_sec_raw_dp_ctx *)drv_ctx)->session; + struct qbman_fle *fle, *sge, *ip_fle, *op_fle; + struct sec_flow_context *flc; + int total_len = 0, data_len = 0, data_offset; + uint8_t *old_digest; + struct ctxt_priv *priv = sess->ctxt; + unsigned int i; + + for (i = 0; i < sgl->num; i++) + total_len += sgl->vec[i].len; + + data_len = total_len - ofs.ofs.auth.head - ofs.ofs.auth.tail; + data_offset = ofs.ofs.auth.head; + + if (sess->auth_alg == RTE_CRYPTO_AUTH_SNOW3G_UIA2 || + sess->auth_alg == RTE_CRYPTO_AUTH_ZUC_EIA3) { + if ((data_len & 7) || (data_offset & 7)) { + DPAA2_SEC_ERR("AUTH: len/offset must be full bytes"); + return -ENOTSUP; + } + + data_len = data_len >> 3; + data_offset = data_offset >> 3; + } + fle = (struct qbman_fle *)rte_malloc(NULL, + FLE_SG_MEM_SIZE(2 * sgl->num), + RTE_CACHE_LINE_SIZE); + if (unlikely(!fle)) { + DPAA2_SEC_ERR("AUTH SG: Memory alloc failed for SGE"); + return -ENOMEM; + } + memset(fle, 0, FLE_SG_MEM_SIZE(2*sgl->num)); + /* first FLE entry used to store mbuf and session ctxt */ + DPAA2_SET_FLE_ADDR(fle, (size_t)userdata); + DPAA2_FLE_SAVE_CTXT(fle, (ptrdiff_t)priv); + op_fle = fle + 1; + ip_fle = fle + 2; + sge = fle + 3; + + flc = &priv->flc_desc[DESC_INITFINAL].flc; + + /* sg FD */ + DPAA2_SET_FD_FLC(fd, DPAA2_VADDR_TO_IOVA(flc)); + DPAA2_SET_FD_ADDR(fd, DPAA2_VADDR_TO_IOVA(op_fle)); + DPAA2_SET_FD_COMPOUND_FMT(fd); + + /* o/p fle */ + DPAA2_SET_FLE_ADDR(op_fle, + DPAA2_VADDR_TO_IOVA(digest->va)); + op_fle->length = sess->digest_length; + + /* i/p fle */ + DPAA2_SET_FLE_SG_EXT(ip_fle); + DPAA2_SET_FLE_ADDR(ip_fle, DPAA2_VADDR_TO_IOVA(sge)); + ip_fle->length = data_len; + + if (sess->iv.length) { + uint8_t *iv_ptr; + + iv_ptr = rte_crypto_op_ctod_offset(userdata, uint8_t *, + sess->iv.offset); + + if (sess->auth_alg == RTE_CRYPTO_AUTH_SNOW3G_UIA2) { + iv_ptr = conv_to_snow_f9_iv(iv_ptr); + sge->length = 12; + } else if (sess->auth_alg == RTE_CRYPTO_AUTH_ZUC_EIA3) { + iv_ptr = conv_to_zuc_eia_iv(iv_ptr); + sge->length = 8; + } else { + sge->length = sess->iv.length; + } + DPAA2_SET_FLE_ADDR(sge, DPAA2_VADDR_TO_IOVA(iv_ptr)); + ip_fle->length += sge->length; + sge++; + } + /* i/p 1st seg */ + DPAA2_SET_FLE_ADDR(sge, sgl->vec[0].iova); + DPAA2_SET_FLE_OFFSET(sge, data_offset); + + if (data_len <= (int)(sgl->vec[0].len - data_offset)) { + sge->length = data_len; + data_len = 0; + } else { + sge->length = sgl->vec[0].len - data_offset; + for (i = 1; i < sgl->num; i++) { + sge++; + DPAA2_SET_FLE_ADDR(sge, sgl->vec[i].iova); + DPAA2_SET_FLE_OFFSET(sge, 0); + sge->length = sgl->vec[i].len; + } + } + if (sess->dir == DIR_DEC) { + /* Digest verification case */ + sge++; + old_digest = (uint8_t *)(sge + 1); + rte_memcpy(old_digest, digest->va, + sess->digest_length); + DPAA2_SET_FLE_ADDR(sge, DPAA2_VADDR_TO_IOVA(old_digest)); + sge->length = sess->digest_length; + ip_fle->length += sess->digest_length; + } + DPAA2_SET_FLE_FIN(sge); + DPAA2_SET_FLE_FIN(ip_fle); + DPAA2_SET_FD_LEN(fd, ip_fle->length); return 0; } From patchwork Sun Oct 17 16:16:43 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 101917 X-Patchwork-Delegate: gakhil@marvell.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 7DDFEA0547; Sun, 17 Oct 2021 18:22:16 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C479C4112E; Sun, 17 Oct 2021 18:21:41 +0200 (CEST) Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-eopbgr80087.outbound.protection.outlook.com [40.107.8.87]) by mails.dpdk.org (Postfix) with ESMTP id E522240692 for ; Sun, 17 Oct 2021 18:21:39 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ahjbOEprQO6/SYDgzx9/odTqO6ID4OX+30xufOA1adrnmqv07Nekjk4odebkddQl7l0W6Z8Vly6yRSC0LuwnWLW0YMdOElyeJDB+tY7+LPnfj23rx3YdwU4v1uLvDnLc7jQqYgFWkB2D1F5KB188phwOYn4ZOYvt2mZwKG1LxAX8BH7YX3QbUhg/512JIciptmMOYTQzf0pZrLsdfIkCCzQBVF4NbvHNNkGk13ijbZdVDnREWBz1IObsgw6BzAgbWJKoKhfnNmycgOs7RX2u2lejz3LmL0ayxHn9aG2OAw/jsHE+1ZGv5X5Go13/bKosk1JZaPwyx0AZ9yS7bpdDkQ== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=5zzQKmiuou0kaNbTzNaLCDM3bJYBZPoCh/dlUzPWCIg=; b=NR6RaTbBiTNoZ5qZ22wqvHEBDNNoDnouoddbcXlzjDc8CfoZC484zLyGYfc+Hbi5qYnTJco4yH7b0/3yYNjVLEPztDL0wpzJSFFZ8fBS96LamEYVLrfj71kTmWTzKMWdqg8YyNOKt5YNnmo8Sy4KC4G5guomKYDOxXd4FsfK4rrOvpHoZpmxYS3Jimd1C32v/gBcymdYhnVVNEQ7+bzKAzFMiJsTl4nrQ4v9ZSTZjMNIi1Ws2yiiI88nTEK29nS+eweV+Uu6LFC0+Sf8XXthKVB3IwFUr7IshFei7tkEGfK2nszDfI/K0uo2GFrleVQM+Ke+hOYOaKPWu4+75c8JoQ== 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=5zzQKmiuou0kaNbTzNaLCDM3bJYBZPoCh/dlUzPWCIg=; b=b9G05HlAGhfsJvXVAIhdvj0tft6+6Z4ZAmdyqn+TTDkqlQDO58alMnX1gCI6PCd4qt3UGI2rMoE+u0jBddZLMxBEPsXt4DFa4cHkfN1dm0N9/aZ7FYKRdRp0J9t8tt6HC/JPtHwuODwsr9tvAyUQ83hMpyt9PAtNYcnxy2JLWD8= Authentication-Results: dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; dmarc=none action=none header.from=nxp.com; Received: from DU2PR04MB8630.eurprd04.prod.outlook.com (2603:10a6:10:2dd::15) by DU2PR04MB8615.eurprd04.prod.outlook.com (2603:10a6:10:2da::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.15; Sun, 17 Oct 2021 16:21:39 +0000 Received: from DU2PR04MB8630.eurprd04.prod.outlook.com ([fe80::945d:e362:712d:1b80]) by DU2PR04MB8630.eurprd04.prod.outlook.com ([fe80::945d:e362:712d:1b80%3]) with mapi id 15.20.4608.018; Sun, 17 Oct 2021 16:21:39 +0000 From: Hemant Agrawal To: dev@dpdk.org, gakhil@marvell.com Cc: konstantin.ananyev@intel.com, roy.fan.zhang@intel.com, Gagandeep Singh Date: Sun, 17 Oct 2021 21:46:43 +0530 Message-Id: <20211017161651.9220-8-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211017161651.9220-1-hemant.agrawal@nxp.com> References: <20211013190032.2308-1-hemant.agrawal@nxp.com> <20211017161651.9220-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SI2PR01CA0053.apcprd01.prod.exchangelabs.com (2603:1096:4:193::7) To DU2PR04MB8630.eurprd04.prod.outlook.com (2603:10a6:10:2dd::15) MIME-Version: 1.0 Received: from dpdk-xeon.ap.freescale.net (92.120.0.67) by SI2PR01CA0053.apcprd01.prod.exchangelabs.com (2603:1096:4:193::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.15 via Frontend Transport; Sun, 17 Oct 2021 16:21:37 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a0c0c294-94f1-41b0-da4b-08d9918a328a X-MS-TrafficTypeDiagnostic: DU2PR04MB8615: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:2803; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: +DVnPSlVxc8DD9ctaRDRKaYiX0RjAw7NGFckPge/IMp9Hfyfai1/djiNuowwbkPzybvQjk+aAhbeE7qu3sq8jSYwmuCjmHHSMEt63XDURjIi6PhyGryaVaYeTcmBTwAccRqHNwzF5w/LpAdiYEklm4GVa4WRy1cEGMKuja1AJVupvqC5nJSS6KvjJVkGEQYsND6Myf7GNgHCx+OXHBrV8UX+WZA5l9TD3b0268NRt6Rjm9oGr1ZSqOCzk4IrELne1mGIALU5euij7LBT2C82+g8ixStnsCZaLXPrzwxAqnetYuM/D1jVbVYJ/1WtUmFVxzNn7tw1IFtIRRPhO1t2/6vPDa3t31oYfgjYfZmctV5u7qQ8LKu+gMUk7Y02KEySYB9hJHJMYULbQNcACeWfdY6NaGb65ydiMoaItYU5YAU/oY3/YUpIdGnF5sSy/lbSUKteX6U3AhMQcpLDIm+j/3C2o17ikGHnIQ3gJXYx+dVJlqAIkdOpjBn+c8oiEJvWi70gkuAAz5oYLf6FgVwC2PijAptaB5DJoxoIV9dVxQStwFfEOzobYIj5XqQ2i9GllcE6rRL67AcMG7xIbRH+m+VLWJ3TgNfaxtyU05eF4DAqW/8+3M5pRcSLQ5x35obdAt8Vnl93eq2ahtCYGUzcvstw0ecnlemukQPPAOedeI7Fv7tgoXE9nVwNotxPq24NmnrrCFpz6vpqVEJTwDtdvg== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DU2PR04MB8630.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(6486002)(66476007)(8936002)(66556008)(66946007)(86362001)(52116002)(36756003)(5660300002)(38350700002)(8676002)(38100700002)(508600001)(6506007)(26005)(44832011)(4326008)(6512007)(2616005)(83380400001)(6666004)(1076003)(2906002)(316002)(186003)(956004); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: mvOauQ35WceyXLKrfx3qn/WMSnEl3FgCRNgnEyDiGzSY0wnNrqrhSAsYr0rbunWkAXcwRCZSFuTEC/K75ct/5I6oftU2sFYdlfpIT/qljZRWpFMc9bl89205m1EzlEdjQPMGbNfG/0zM9DMiG0plWreVc6bBv5iZZbJ11hmzoGM8TI4u6tXVGjCLEneZ0WFbia8TL7wBLUcZurHZDV0S8ssa8bBtlknA3G/Yya2oXUyZhWb1JhDUYNC97WRhG4GL/JjD1E1gAeA0az3zw3gJKdPxQotPmGdpjOuwkR80D0w0E0KSW1p099PyP569w+dZ+0dgicfrXgmTP7L5INsFqeunrzd4uLmMWPcq+uaT80eQ0KnD8QYVf8Tmg61wq6fUcOpnGnl7BvV/RY8bKPbYnlWkP8qEXo26SgHKJtXS/tFzGGy3FJ6k4uCTOm8LxTsWD1PXDv0p/OTFTejvd7VKdYBdk4oaPxpOOMcsmrZ6bnaTL1/oQkAvPSql4vBpHnw/ZKPu2DF1kV6pgWJEyOSK8oO2DWjXSu5wAYh1xWqX2lm+FAZjB7SG3zpRz5Mrq2z2hhSLcfVAqMuRXRUdX3CLc85V/R2baDEhxTb9eYq1QK/yi7aOJwgl8VrBN3QcKQxtZ+68z2p5lt5hHw7rm3CNLgRwgHPOjWj7VFr8qZoItv3sYBaEyO+pl7CRMHA/R+vAsodirfp7WqUPzB+4fyPggIG7wbqhM1rBKJf6isKIKuUJD0YmkCp+/d+PvXM3u2Yyg3t25vnkxKyWBlm44iJQSAfaXxdWDrA05UvhcLUNY+YYXYvnl6geQ5EI5pp/dDhSGGwMegjvbRCIhGoxO6apjx95c0PqIENeqqd0k6BFlhOQiNh0g4u9JvfH9fhKfaVuJFZT7PkQelPUh31hIJknUUJonFVOHZaeAcd4Rw6XdMTSWVTknAajKp9R57XkwYljDm7rtAu/Sdhe9HdSFk/FqDoPCkPkRYZkFr1AaHJ7gL5FzDFZ0q1s8y8DpRw/2vbDq/a+OA7pP+9HoZzUHJOHVHcDGOr92brKeJErlwX8h3x/i06MgHG5Q4p0Y66/rHaP/LKmrvH6XUX1k4P5KMh7Ry5Nl664jAAOgKtlcHgwTPuFm29/aQHhAUnE0u3wBXYT6WctDSnMI7F40fOGZGZLpod6cLW5LbWjFOQtJ7/iZGvOeHor7MIeXlXOF9kJABKIjxG96B6po6on2yo6o2XaYTUfonk45XIAAbe+LGG94GX90lwSAOnHEtgL31AyKYbwA5YlGIWDxwR9MxpGrQFm0tSpIVxwjEw4CFxAhZS0RSi4OosjoL+2gib0+7YmaWEc X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: a0c0c294-94f1-41b0-da4b-08d9918a328a X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2021 16:21:39.1241 (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: vFV1p5NgA2QC1WvB7NJ0NYg8j26kkPUrCDNWFatFYLgkAZeSYeAB1ju94WVUUaoaxCh8h6oIUKETWzMhq7jusg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8615 Subject: [dpdk-dev] [PATCH v5 07/15] crypto/dpaa2_sec: support AUTHENC with raw buffer APIs 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 Sender: "dev" From: Gagandeep Singh This patch supports AUTHENC with raw buufer APIs Signed-off-by: Gagandeep Singh --- drivers/crypto/dpaa2_sec/dpaa2_sec_raw_dp.c | 128 ++++++++++++++++++-- 1 file changed, 121 insertions(+), 7 deletions(-) diff --git a/drivers/crypto/dpaa2_sec/dpaa2_sec_raw_dp.c b/drivers/crypto/dpaa2_sec/dpaa2_sec_raw_dp.c index 471c81b9e7..565af6dcba 100644 --- a/drivers/crypto/dpaa2_sec/dpaa2_sec_raw_dp.c +++ b/drivers/crypto/dpaa2_sec/dpaa2_sec_raw_dp.c @@ -31,14 +31,128 @@ build_raw_dp_chain_fd(uint8_t *drv_ctx, void *userdata, struct qbman_fd *fd) { - RTE_SET_USED(drv_ctx); - RTE_SET_USED(sgl); - RTE_SET_USED(iv); - RTE_SET_USED(digest); RTE_SET_USED(auth_iv); - RTE_SET_USED(ofs); - RTE_SET_USED(userdata); - RTE_SET_USED(fd); + + dpaa2_sec_session *sess = + ((struct dpaa2_sec_raw_dp_ctx *)drv_ctx)->session; + struct ctxt_priv *priv = sess->ctxt; + struct qbman_fle *fle, *sge, *ip_fle, *op_fle; + struct sec_flow_context *flc; + int data_len = 0, auth_len = 0, cipher_len = 0; + unsigned int i = 0; + uint16_t auth_hdr_len = ofs.ofs.cipher.head - + ofs.ofs.auth.head; + + uint16_t auth_tail_len = ofs.ofs.auth.tail; + uint32_t auth_only_len = (auth_tail_len << 16) | auth_hdr_len; + int icv_len = sess->digest_length; + uint8_t *old_icv; + uint8_t *iv_ptr = iv->va; + + for (i = 0; i < sgl->num; i++) + data_len += sgl->vec[i].len; + + cipher_len = data_len - ofs.ofs.cipher.head - ofs.ofs.cipher.tail; + auth_len = data_len - ofs.ofs.auth.head - ofs.ofs.auth.tail; + /* first FLE entry used to store session ctxt */ + fle = (struct qbman_fle *)rte_malloc(NULL, + FLE_SG_MEM_SIZE(2 * sgl->num), + RTE_CACHE_LINE_SIZE); + if (unlikely(!fle)) { + DPAA2_SEC_ERR("AUTHENC SG: Memory alloc failed for SGE"); + return -ENOMEM; + } + memset(fle, 0, FLE_SG_MEM_SIZE(2 * sgl->num)); + DPAA2_SET_FLE_ADDR(fle, (size_t)userdata); + DPAA2_FLE_SAVE_CTXT(fle, (ptrdiff_t)priv); + + op_fle = fle + 1; + ip_fle = fle + 2; + sge = fle + 3; + + /* Save the shared descriptor */ + flc = &priv->flc_desc[0].flc; + + /* Configure FD as a FRAME LIST */ + DPAA2_SET_FD_ADDR(fd, DPAA2_VADDR_TO_IOVA(op_fle)); + DPAA2_SET_FD_COMPOUND_FMT(fd); + DPAA2_SET_FD_FLC(fd, DPAA2_VADDR_TO_IOVA(flc)); + + /* Configure Output FLE with Scatter/Gather Entry */ + DPAA2_SET_FLE_SG_EXT(op_fle); + DPAA2_SET_FLE_ADDR(op_fle, DPAA2_VADDR_TO_IOVA(sge)); + + if (auth_only_len) + DPAA2_SET_FLE_INTERNAL_JD(op_fle, auth_only_len); + + op_fle->length = (sess->dir == DIR_ENC) ? + (cipher_len + icv_len) : + cipher_len; + + /* Configure Output SGE for Encap/Decap */ + DPAA2_SET_FLE_ADDR(sge, sgl->vec[0].iova); + DPAA2_SET_FLE_OFFSET(sge, ofs.ofs.auth.head); + sge->length = sgl->vec[0].len - ofs.ofs.auth.head; + + /* o/p segs */ + for (i = 1; i < sgl->num; i++) { + sge++; + DPAA2_SET_FLE_ADDR(sge, sgl->vec[i].iova); + DPAA2_SET_FLE_OFFSET(sge, 0); + sge->length = sgl->vec[i].len; + } + + if (sess->dir == DIR_ENC) { + sge++; + DPAA2_SET_FLE_ADDR(sge, + digest->iova); + sge->length = icv_len; + } + DPAA2_SET_FLE_FIN(sge); + + sge++; + + /* Configure Input FLE with Scatter/Gather Entry */ + DPAA2_SET_FLE_ADDR(ip_fle, DPAA2_VADDR_TO_IOVA(sge)); + DPAA2_SET_FLE_SG_EXT(ip_fle); + DPAA2_SET_FLE_FIN(ip_fle); + + ip_fle->length = (sess->dir == DIR_ENC) ? + (auth_len + sess->iv.length) : + (auth_len + sess->iv.length + + icv_len); + + /* Configure Input SGE for Encap/Decap */ + DPAA2_SET_FLE_ADDR(sge, DPAA2_VADDR_TO_IOVA(iv_ptr)); + sge->length = sess->iv.length; + + sge++; + DPAA2_SET_FLE_ADDR(sge, sgl->vec[0].iova); + DPAA2_SET_FLE_OFFSET(sge, ofs.ofs.auth.head); + sge->length = sgl->vec[0].len - ofs.ofs.auth.head; + + for (i = 1; i < sgl->num; i++) { + sge++; + DPAA2_SET_FLE_ADDR(sge, sgl->vec[i].iova); + DPAA2_SET_FLE_OFFSET(sge, 0); + sge->length = sgl->vec[i].len; + } + + if (sess->dir == DIR_DEC) { + sge++; + old_icv = (uint8_t *)(sge + 1); + memcpy(old_icv, digest->va, + icv_len); + DPAA2_SET_FLE_ADDR(sge, DPAA2_VADDR_TO_IOVA(old_icv)); + sge->length = icv_len; + } + + DPAA2_SET_FLE_FIN(sge); + if (auth_only_len) { + DPAA2_SET_FLE_INTERNAL_JD(ip_fle, auth_only_len); + DPAA2_SET_FD_INTERNAL_JD(fd, auth_only_len); + } + DPAA2_SET_FD_LEN(fd, ip_fle->length); return 0; } From patchwork Sun Oct 17 16:16:44 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 101918 X-Patchwork-Delegate: gakhil@marvell.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 0C26BA0547; Sun, 17 Oct 2021 18:22:23 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id DC1B8410F6; Sun, 17 Oct 2021 18:21:45 +0200 (CEST) Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-eopbgr20046.outbound.protection.outlook.com [40.107.2.46]) by mails.dpdk.org (Postfix) with ESMTP id A6D6E41136 for ; Sun, 17 Oct 2021 18:21:42 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=I5WVsLOn2koDPD//pE+wqMuOYn6U+3iBU2lQvFRJrM5vrDfxooMJinqGGSPgXAlUbsRg62suYGTelcEGEKcoZK6sXq//zs2d2myU7BzWsj7hlDKpF0JwADdsJZ3nVEx75RBoXPgI1M8QPH8mWKaVnAkQ96avRP098epxsA98s3T00ndxzKoVvnejtHOgUr7reuM+ZDWLU+Fdzdwyi6bd7GEhGqPy98xiT4sT5/+BPEksE3CfyN//8E28xob0edZdFGuU3lzEXvU/llunc92fiQZ2tI1JY4+zC+ZWSNnX4kq4jqsLaM1icZbah9zOCDqc6BcQPiEXb69Bd5bGRgozbA== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=+UK5bwQfxBf5X+s7rYuIvO4N3Q0epIAaFc4+jekprfQ=; b=mVQ6j8AbPufNfQCDDmbq9SruBrbc7HFwqYVM5khTvwEVAxcxNoEOWpynONU8QyIhHYPO94JbvP6oQ2zuKKz4xxCjcpzsvqB/Vx7Y7/9fHIzZLiqtS7Ao571C5Kp2C1qqKOqjMvlspgStatZHnFBqFu/z+hFhBdu0zBC1HUzRvOvND2mk+aEw7jWJByxu/APvUUHC9Jc46CApdl+klqeRczYDyrrKRLeL8SKQoSlW0MPGWoYr27TXw1eS4FU0ci9pxJR1yJ9F8s8/sYd71oiS+ShcorbptXbMGd417nmOazBXYkLICRanAmasv3U4FAwCcPjZRWVMhj+tTssdbNjd3Q== 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=+UK5bwQfxBf5X+s7rYuIvO4N3Q0epIAaFc4+jekprfQ=; b=edZEKBJerjGG2d7H1p8kfsbaX9qedPtwLk1/lLwg6orNxDTNXSiVd1CZpvlzt2eUvkOoQkpIzehIo6/HPJpAXi4YSZjd+C0gQQPmYVx2l3+y0mLStWGNjHC2P7RaBexnqCC9+LAXRy4gF2MLZr9AwabVjB5ijBWLDXHvZ/bFuCA= Authentication-Results: dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; dmarc=none action=none header.from=nxp.com; Received: from DU2PR04MB8630.eurprd04.prod.outlook.com (2603:10a6:10:2dd::15) by DU2PR04MB8615.eurprd04.prod.outlook.com (2603:10a6:10:2da::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.15; Sun, 17 Oct 2021 16:21:41 +0000 Received: from DU2PR04MB8630.eurprd04.prod.outlook.com ([fe80::945d:e362:712d:1b80]) by DU2PR04MB8630.eurprd04.prod.outlook.com ([fe80::945d:e362:712d:1b80%3]) with mapi id 15.20.4608.018; Sun, 17 Oct 2021 16:21:41 +0000 From: Hemant Agrawal To: dev@dpdk.org, gakhil@marvell.com Cc: konstantin.ananyev@intel.com, roy.fan.zhang@intel.com, Gagandeep Singh Date: Sun, 17 Oct 2021 21:46:44 +0530 Message-Id: <20211017161651.9220-9-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211017161651.9220-1-hemant.agrawal@nxp.com> References: <20211013190032.2308-1-hemant.agrawal@nxp.com> <20211017161651.9220-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SI2PR01CA0053.apcprd01.prod.exchangelabs.com (2603:1096:4:193::7) To DU2PR04MB8630.eurprd04.prod.outlook.com (2603:10a6:10:2dd::15) MIME-Version: 1.0 Received: from dpdk-xeon.ap.freescale.net (92.120.0.67) by SI2PR01CA0053.apcprd01.prod.exchangelabs.com (2603:1096:4:193::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.15 via Frontend Transport; Sun, 17 Oct 2021 16:21:39 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 79642803-54f6-4bad-2728-08d9918a33df X-MS-TrafficTypeDiagnostic: DU2PR04MB8615: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:4941; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: RL32t2PQimyUnPGffMZ6DDQqhfAf0kPQuyjibkT8QlXw8bYSUMIsL21BJs4HdW6Ebx85nnE+Mzv0OJr5LRhBW3UBlDxYcfXmt/pHvb7RuSL2EiQl+YmTmPQly6AHmsjz6VX2xKlG1ExDhvlaKic165NN1KFPQqgGz7+HHwuvVlzfYYQ0ipvfZiKIOlFxuAP/SeAzh2IZT9FZgs1eWBFRkq11QQz4jzczB3lDXdJ1JVH34tXcaKVvlqo9A3A1yJy6amEqpGnMknGzX4vrjK1LT8NNWhUJznWMgKY64lcGkDDNfrW2LrZv/GE2aGHADagB+ta7ariYbC+IBFERKqcz1zi9+Gt4kfXIs7lcPZq32DT9yCRABNvBI+zoYz1oEMA6l6jlaTKwdrS5By7hGvCLO13Fx8aH6DavJwrIt1c2yv6Ta4uOKraFRQkFFQYDyE2/rCie2U1Jfm/ngxaG0OzvVs3HCUBbHUo+VUlZChMtl8LSahXxeHz6T5LIMsrAOYlugZnzq1yr7b6ffXa3dKApui95h5fEeYjKx67run4ftO01bqXTqakdQwntcs/8nBOXw12r/wH/y/lXB9biQjsZFaGR6v3k3VNxDmlgkCP6uSkKzZgeqdwUySp3JeAIgcY1onS5V+/x6zconAWIkMKUXlX9zzvFz3hi8y4Vve3oCZPSDg5aCoAlj65vSJwEco9lXYR+zvhurxLjYL0Bk2lg+A== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DU2PR04MB8630.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(6486002)(66476007)(8936002)(66556008)(66946007)(86362001)(52116002)(36756003)(5660300002)(38350700002)(8676002)(38100700002)(508600001)(6506007)(26005)(44832011)(4326008)(6512007)(2616005)(83380400001)(6666004)(1076003)(2906002)(316002)(186003)(956004); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: CbQLAKy2gFl6JAR5i/ZW6SlMvl+rXB93jhsolJyz5DMMcPzTPQ5ynyWOAl+YVI4dcdAMV8J7e5sL5kJt++1eKsRJ8Y9Ng+ZaojZL6UnnaU55jI3fQfKFOmlsi9E+dZDRON6DIe20npPgOCoc6bdKrfUGxMohhgoccnPodtAsO4YX7wKFgTHiAOkeUpwGt/Kcqf43BohOhsSUofaGmB0ImI+ZdT5WQs9ewjP3NY/jvcfllLQBzgaaFvUOeam6ECNobVrPMTjIF0WNzYHMsLjaxbMx6lAQG8dPDCJUXMY5lAFTWGKcV0j6JslMccyAg5o+fOUjjVuRy7srE7XvF27HZFx1Fru6+ZtUUiGaoUB2SbtwntOHxyuB3XZIQ+qkbAcgqn0aH4KmryNil5eINemXrz6RrkgTnbnQfQFIBnzHm0fUeZEpZMYBoK8IpmHj+plB6HTY4oKLW8Wf1MqF8+iDNltiLY46OZhkTTaVBAnfpZT7vKLGsLWXHMjJ1VXVgJ+k6Lct0CiYRe0Er6hexGNxA2OweArQ5NrA5j+dcdAFIN2rEZ500W/jZS57WI24UNsFgEswD4V5uPJ+J7F5I1f+odfs4iOe9PrZIZt9ggMmYWoH9Sdq7OFZ+uF6uAkjdJVRDHjhRAe+GAQYFOuINqQ1Tnf+Dr0kYrXFlE6yA12HpCbGXIyXe05CXhtygE9FkA/0WOO24pIT/Wxsb5nTnjS0U6qF6ErTMn9iwRGM4/o+08IMPu6eLDlv188NmD/dbli2Y93Ot5djjulf+1vIZ9wsZTNd+cWtLHmewLbC5R8E9w4fET5MBVmC7QFDmYFnoqHdKUEMNUcUgXDbQ8nIh4aD3dhCeNqeBxrOdQ6IRmUHG1wGpS10rT5vhZezNO5Vz48y9R1YRnKSrapqu/4PxTfuFY5PFSh1SMsFhppLpLX/b/Xd2FJZ0QvkDNe3aAl77zvc3StoNt6XU1r3ft++NKqS+3VKAIt26fhbzNmRNc1bGeCmAMM5cc1wmYW7FHQv5W1o53dMkQKfKgsk/lmmc4u3GlDlV5dABti6O1MUmcsLq7mcJ482uUDKp8vZYnERzUwKObNm2N4x+zSQAcEWWKJvHWsQEjjZPamZluAhbaFMSWL1RCg7oY4Ssh6mx3Z0Q63z5SUfn7VGA8xWjxF29DcgMkzunac7Js749o0GtIx8ngQ/KkSr1frHkzgZHMYo+65f/XGnGM/kihY10xrD05uXK4E47ZMT2ahpMs1dphyOllqJMxrYSOdH3STAAl7Er3sHPj3QIXxhhMy4EmUed+Xo1FRtXGDvJW9uAIaEWDg0gAAsrTQkfpbIfokUffK6hhNU X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 79642803-54f6-4bad-2728-08d9918a33df X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2021 16:21:41.3752 (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: H2i+FUswV+AT/5cju5sXxJT/ZAvFwjIBzMnHrMXNIoz9oSH5EhxWitXOM3pjPAf3AQdNeJQy4svJ94cvCPxgaw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8615 Subject: [dpdk-dev] [PATCH v5 08/15] crypto/dpaa2_sec: support AEAD with raw buffer APIs 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 Sender: "dev" From: Gagandeep Singh add raw vector API support for AEAD algos. Signed-off-by: Gagandeep Singh --- drivers/crypto/dpaa2_sec/dpaa2_sec_raw_dp.c | 249 +++++++++++++++++--- 1 file changed, 214 insertions(+), 35 deletions(-) diff --git a/drivers/crypto/dpaa2_sec/dpaa2_sec_raw_dp.c b/drivers/crypto/dpaa2_sec/dpaa2_sec_raw_dp.c index 565af6dcba..5c29c61f9d 100644 --- a/drivers/crypto/dpaa2_sec/dpaa2_sec_raw_dp.c +++ b/drivers/crypto/dpaa2_sec/dpaa2_sec_raw_dp.c @@ -167,14 +167,126 @@ build_raw_dp_aead_fd(uint8_t *drv_ctx, void *userdata, struct qbman_fd *fd) { - RTE_SET_USED(drv_ctx); - RTE_SET_USED(sgl); - RTE_SET_USED(iv); - RTE_SET_USED(digest); - RTE_SET_USED(auth_iv); - RTE_SET_USED(ofs); - RTE_SET_USED(userdata); - RTE_SET_USED(fd); + dpaa2_sec_session *sess = + ((struct dpaa2_sec_raw_dp_ctx *)drv_ctx)->session; + struct ctxt_priv *priv = sess->ctxt; + struct qbman_fle *fle, *sge, *ip_fle, *op_fle; + struct sec_flow_context *flc; + uint32_t auth_only_len = sess->ext_params.aead_ctxt.auth_only_len; + int icv_len = sess->digest_length; + uint8_t *old_icv; + uint8_t *IV_ptr = iv->va; + unsigned int i = 0; + int data_len = 0, aead_len = 0; + + for (i = 0; i < sgl->num; i++) + data_len += sgl->vec[i].len; + + aead_len = data_len - ofs.ofs.cipher.head - ofs.ofs.cipher.tail; + + /* first FLE entry used to store mbuf and session ctxt */ + fle = (struct qbman_fle *)rte_malloc(NULL, + FLE_SG_MEM_SIZE(2 * sgl->num), + RTE_CACHE_LINE_SIZE); + if (unlikely(!fle)) { + DPAA2_SEC_ERR("GCM SG: Memory alloc failed for SGE"); + return -ENOMEM; + } + memset(fle, 0, FLE_SG_MEM_SIZE(2 * sgl->num)); + DPAA2_SET_FLE_ADDR(fle, (size_t)userdata); + DPAA2_FLE_SAVE_CTXT(fle, (ptrdiff_t)priv); + + op_fle = fle + 1; + ip_fle = fle + 2; + sge = fle + 3; + + /* Save the shared descriptor */ + flc = &priv->flc_desc[0].flc; + + /* Configure FD as a FRAME LIST */ + DPAA2_SET_FD_ADDR(fd, DPAA2_VADDR_TO_IOVA(op_fle)); + DPAA2_SET_FD_COMPOUND_FMT(fd); + DPAA2_SET_FD_FLC(fd, DPAA2_VADDR_TO_IOVA(flc)); + + /* Configure Output FLE with Scatter/Gather Entry */ + DPAA2_SET_FLE_SG_EXT(op_fle); + DPAA2_SET_FLE_ADDR(op_fle, DPAA2_VADDR_TO_IOVA(sge)); + + if (auth_only_len) + DPAA2_SET_FLE_INTERNAL_JD(op_fle, auth_only_len); + + op_fle->length = (sess->dir == DIR_ENC) ? + (aead_len + icv_len) : + aead_len; + + /* Configure Output SGE for Encap/Decap */ + DPAA2_SET_FLE_ADDR(sge, sgl->vec[0].iova); + DPAA2_SET_FLE_OFFSET(sge, ofs.ofs.cipher.head); + sge->length = sgl->vec[0].len - ofs.ofs.cipher.head; + + /* o/p segs */ + for (i = 1; i < sgl->num; i++) { + sge++; + DPAA2_SET_FLE_ADDR(sge, sgl->vec[i].iova); + DPAA2_SET_FLE_OFFSET(sge, 0); + sge->length = sgl->vec[i].len; + } + + if (sess->dir == DIR_ENC) { + sge++; + DPAA2_SET_FLE_ADDR(sge, digest->iova); + sge->length = icv_len; + } + DPAA2_SET_FLE_FIN(sge); + + sge++; + + /* Configure Input FLE with Scatter/Gather Entry */ + DPAA2_SET_FLE_ADDR(ip_fle, DPAA2_VADDR_TO_IOVA(sge)); + DPAA2_SET_FLE_SG_EXT(ip_fle); + DPAA2_SET_FLE_FIN(ip_fle); + ip_fle->length = (sess->dir == DIR_ENC) ? + (aead_len + sess->iv.length + auth_only_len) : + (aead_len + sess->iv.length + auth_only_len + + icv_len); + + /* Configure Input SGE for Encap/Decap */ + DPAA2_SET_FLE_ADDR(sge, DPAA2_VADDR_TO_IOVA(IV_ptr)); + sge->length = sess->iv.length; + + sge++; + if (auth_only_len) { + DPAA2_SET_FLE_ADDR(sge, auth_iv->iova); + sge->length = auth_only_len; + sge++; + } + + DPAA2_SET_FLE_ADDR(sge, sgl->vec[0].iova); + DPAA2_SET_FLE_OFFSET(sge, ofs.ofs.cipher.head); + sge->length = sgl->vec[0].len - ofs.ofs.cipher.head; + + /* i/p segs */ + for (i = 1; i < sgl->num; i++) { + sge++; + DPAA2_SET_FLE_ADDR(sge, sgl->vec[i].iova); + DPAA2_SET_FLE_OFFSET(sge, 0); + sge->length = sgl->vec[i].len; + } + + if (sess->dir == DIR_DEC) { + sge++; + old_icv = (uint8_t *)(sge + 1); + memcpy(old_icv, digest->va, icv_len); + DPAA2_SET_FLE_ADDR(sge, DPAA2_VADDR_TO_IOVA(old_icv)); + sge->length = icv_len; + } + + DPAA2_SET_FLE_FIN(sge); + if (auth_only_len) { + DPAA2_SET_FLE_INTERNAL_JD(ip_fle, auth_only_len); + DPAA2_SET_FD_INTERNAL_JD(fd, auth_only_len); + } + DPAA2_SET_FD_LEN(fd, ip_fle->length); return 0; } @@ -311,36 +423,104 @@ build_raw_dp_proto_fd(uint8_t *drv_ctx, void *userdata, struct qbman_fd *fd) { - RTE_SET_USED(drv_ctx); - RTE_SET_USED(sgl); RTE_SET_USED(iv); RTE_SET_USED(digest); RTE_SET_USED(auth_iv); RTE_SET_USED(ofs); - RTE_SET_USED(userdata); - RTE_SET_USED(fd); - return 0; -} + dpaa2_sec_session *sess = + ((struct dpaa2_sec_raw_dp_ctx *)drv_ctx)->session; + struct ctxt_priv *priv = sess->ctxt; + struct qbman_fle *fle, *sge, *ip_fle, *op_fle; + struct sec_flow_context *flc; + uint32_t in_len = 0, out_len = 0, i; -static int -build_raw_dp_proto_compound_fd(uint8_t *drv_ctx, - struct rte_crypto_sgl *sgl, - struct rte_crypto_va_iova_ptr *iv, - struct rte_crypto_va_iova_ptr *digest, - struct rte_crypto_va_iova_ptr *auth_iv, - union rte_crypto_sym_ofs ofs, - void *userdata, - struct qbman_fd *fd) -{ - RTE_SET_USED(drv_ctx); - RTE_SET_USED(sgl); - RTE_SET_USED(iv); - RTE_SET_USED(digest); - RTE_SET_USED(auth_iv); - RTE_SET_USED(ofs); - RTE_SET_USED(userdata); - RTE_SET_USED(fd); + /* first FLE entry used to store mbuf and session ctxt */ + fle = (struct qbman_fle *)rte_malloc(NULL, + FLE_SG_MEM_SIZE(2 * sgl->num), + RTE_CACHE_LINE_SIZE); + if (unlikely(!fle)) { + DPAA2_SEC_DP_ERR("Proto:SG: Memory alloc failed for SGE"); + return -ENOMEM; + } + memset(fle, 0, FLE_SG_MEM_SIZE(2 * sgl->num)); + DPAA2_SET_FLE_ADDR(fle, (size_t)userdata); + DPAA2_FLE_SAVE_CTXT(fle, (ptrdiff_t)priv); + + /* Save the shared descriptor */ + flc = &priv->flc_desc[0].flc; + op_fle = fle + 1; + ip_fle = fle + 2; + sge = fle + 3; + + DPAA2_SET_FD_IVP(fd); + DPAA2_SET_FLE_IVP(op_fle); + DPAA2_SET_FLE_IVP(ip_fle); + + /* Configure FD as a FRAME LIST */ + DPAA2_SET_FD_ADDR(fd, DPAA2_VADDR_TO_IOVA(op_fle)); + DPAA2_SET_FD_COMPOUND_FMT(fd); + DPAA2_SET_FD_FLC(fd, DPAA2_VADDR_TO_IOVA(flc)); + + /* Configure Output FLE with Scatter/Gather Entry */ + DPAA2_SET_FLE_SG_EXT(op_fle); + DPAA2_SET_FLE_ADDR(op_fle, DPAA2_VADDR_TO_IOVA(sge)); + + /* Configure Output SGE for Encap/Decap */ + DPAA2_SET_FLE_ADDR(sge, sgl->vec[0].iova); + DPAA2_SET_FLE_OFFSET(sge, 0); + sge->length = sgl->vec[0].len; + out_len += sge->length; + /* o/p segs */ + for (i = 1; i < sgl->num; i++) { + sge++; + DPAA2_SET_FLE_ADDR(sge, sgl->vec[i].iova); + DPAA2_SET_FLE_OFFSET(sge, 0); + sge->length = sgl->vec[i].len; + out_len += sge->length; + } + sge->length = sgl->vec[i - 1].tot_len; + out_len += sge->length; + + DPAA2_SET_FLE_FIN(sge); + op_fle->length = out_len; + + sge++; + + /* Configure Input FLE with Scatter/Gather Entry */ + DPAA2_SET_FLE_ADDR(ip_fle, DPAA2_VADDR_TO_IOVA(sge)); + DPAA2_SET_FLE_SG_EXT(ip_fle); + DPAA2_SET_FLE_FIN(ip_fle); + + /* Configure input SGE for Encap/Decap */ + DPAA2_SET_FLE_ADDR(sge, sgl->vec[0].iova); + DPAA2_SET_FLE_OFFSET(sge, 0); + sge->length = sgl->vec[0].len; + in_len += sge->length; + /* i/p segs */ + for (i = 1; i < sgl->num; i++) { + sge++; + DPAA2_SET_FLE_ADDR(sge, sgl->vec[i].iova); + DPAA2_SET_FLE_OFFSET(sge, 0); + sge->length = sgl->vec[i].len; + in_len += sge->length; + } + + ip_fle->length = in_len; + DPAA2_SET_FLE_FIN(sge); + + /* In case of PDCP, per packet HFN is stored in + * mbuf priv after sym_op. + */ + if (sess->ctxt_type == DPAA2_SEC_PDCP && sess->pdcp.hfn_ovd) { + uint32_t hfn_ovd = *(uint32_t *)((uint8_t *)userdata + + sess->pdcp.hfn_ovd_offset); + /*enable HFN override override */ + DPAA2_SET_FLE_INTERNAL_JD(ip_fle, hfn_ovd); + DPAA2_SET_FLE_INTERNAL_JD(op_fle, hfn_ovd); + DPAA2_SET_FD_INTERNAL_JD(fd, hfn_ovd); + } + DPAA2_SET_FD_LEN(fd, ip_fle->length); return 0; } @@ -792,10 +972,9 @@ dpaa2_sec_configure_raw_dp_ctx(struct rte_cryptodev *dev, uint16_t qp_id, sess->build_raw_dp_fd = build_raw_dp_auth_fd; else if (sess->ctxt_type == DPAA2_SEC_CIPHER) sess->build_raw_dp_fd = build_raw_dp_cipher_fd; - else if (sess->ctxt_type == DPAA2_SEC_IPSEC) + else if (sess->ctxt_type == DPAA2_SEC_IPSEC || + sess->ctxt_type == DPAA2_SEC_PDCP) sess->build_raw_dp_fd = build_raw_dp_proto_fd; - else if (sess->ctxt_type == DPAA2_SEC_PDCP) - sess->build_raw_dp_fd = build_raw_dp_proto_compound_fd; else return -ENOTSUP; dp_ctx = (struct dpaa2_sec_raw_dp_ctx *)raw_dp_ctx->drv_ctx_data; From patchwork Sun Oct 17 16:16:45 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 101919 X-Patchwork-Delegate: gakhil@marvell.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 4367DA0547; Sun, 17 Oct 2021 18:22:29 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E23B54113F; Sun, 17 Oct 2021 18:21:46 +0200 (CEST) Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-eopbgr80083.outbound.protection.outlook.com [40.107.8.83]) by mails.dpdk.org (Postfix) with ESMTP id 789954003C for ; Sun, 17 Oct 2021 18:21:44 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=N4mmEmWIO1kHYWAmnGXUMjBDuvLnt5ixajpLIVZLrUG35mGbCq9tS6ccPR4bssl+H1xj/78Y3U3vouxC2sRDqIdCZ7mOKiQskA7mms7CAA2MNaQl16agRT29ojh52TGmebq0a6ucfFhbiW180Jk4EI22h5yPKN5pKTHq8CH7nNiYMRUNLjgJRLxXtrLzRVlkk+hfvOZh6AdXxxWK93kJeTYNkvllJfVLTXUdZ5LRiuN4L0lbqNkBui/br1m0at362TINxBIkymNUGMqBlKoREw/TMCKSE3+CJUjSP9HWpm4JfSfHw1wqS6H/wHEwMIujjAjgxRhxTpWRT+RSgwByHg== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=bDzCrvooZf/IECefjBGTAHwjpotedB9NJ8ycBmuYfOA=; b=VICu45y+tsPJrEe+eB68SQPgaTNx5ZAuwAxwoB+Z0YbCTE2yeiva596IgiZa6oD/KIwQYdCXakmk3+D6mXUpcuIcb1ACRKj2VZ92BXRKy/T/1kTLe4ZzTbois56kEy5dEtamYgignymuRlGZO9lHWKG3NG6pnnCwsAJmNMOP6+0ow4w1GSnC+bLuwIaTk9MThLWBirUl14tIuJebIiNHyQ4dnX6eOuj8xFwqdMbjkcQ98zBdDWzHSHKF/hWtylc7rYMAjUpxlsUkG1u5RVQSj9PG2QZJNcF4KSj/olVKsZYDK5rIeO/2x9bOKw17XV7x163OZ6y31o+++n789EZFWw== 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=bDzCrvooZf/IECefjBGTAHwjpotedB9NJ8ycBmuYfOA=; b=BPg6xj2DzgbNXc+GDstP8dzpPCJ7U9HfpCBjK3ljp4zy9+SGtPoo3mY90rKyYxUGAy0mY0WpSZj4JMI891ykmCMkF5ZbiCzONQeLnbY+MMve6rJHROqmU292Bekf68eo5XZ6qaQqe94jOMs6iykgbm4bTQX0tcKKFwZ5UA1sVBw= Authentication-Results: dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; dmarc=none action=none header.from=nxp.com; Received: from DU2PR04MB8630.eurprd04.prod.outlook.com (2603:10a6:10:2dd::15) by DU2PR04MB8615.eurprd04.prod.outlook.com (2603:10a6:10:2da::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.15; Sun, 17 Oct 2021 16:21:43 +0000 Received: from DU2PR04MB8630.eurprd04.prod.outlook.com ([fe80::945d:e362:712d:1b80]) by DU2PR04MB8630.eurprd04.prod.outlook.com ([fe80::945d:e362:712d:1b80%3]) with mapi id 15.20.4608.018; Sun, 17 Oct 2021 16:21:43 +0000 From: Hemant Agrawal To: dev@dpdk.org, gakhil@marvell.com Cc: konstantin.ananyev@intel.com, roy.fan.zhang@intel.com, Gagandeep Singh Date: Sun, 17 Oct 2021 21:46:45 +0530 Message-Id: <20211017161651.9220-10-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211017161651.9220-1-hemant.agrawal@nxp.com> References: <20211013190032.2308-1-hemant.agrawal@nxp.com> <20211017161651.9220-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SI2PR01CA0053.apcprd01.prod.exchangelabs.com (2603:1096:4:193::7) To DU2PR04MB8630.eurprd04.prod.outlook.com (2603:10a6:10:2dd::15) MIME-Version: 1.0 Received: from dpdk-xeon.ap.freescale.net (92.120.0.67) by SI2PR01CA0053.apcprd01.prod.exchangelabs.com (2603:1096:4:193::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.15 via Frontend Transport; Sun, 17 Oct 2021 16:21:41 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 29373efe-9a2a-466e-39d8-08d9918a3539 X-MS-TrafficTypeDiagnostic: DU2PR04MB8615: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:534; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: oWR+/lGnBiF10bUFwXpoexRWCFbtBILRkqSE9RaHv8NmbhZ/qJ5cv2W9UGs4nsocBmTRGU8WwjduvyBtVer0Srk9LYw3HD3c2j6TwSu1rcRwZu78FQ+WlmGJqHhjR97kHfqZGULip/qiEQQl7atKRN/i3R2g2ED0IMSMyhl0DsJDxjq5Pji0zBu75yiwXFOUFBzl9nzWlxnqJlYq66QwMa6VUyLRDVow7SuE9NwaN8V/6D4Dwpowh4w86Zu/QWeYTaScleLmINhPoFF5Pev1RICAOmPEYlZOUoLacGC0YBK/TEEwWWaksbASg4tB6s9LBoLNrg6U8JW0OA7YDhOi5Ykf2to+PIJ5YlLIN/35VmoQ0sIYBCK1HNnin8UavTjY6sqMHnKB4hFVsVJ0WaONFpc7YX0sbfyN6Zbyzw1XtObhqU65jhUvYFv9Q106UNQj2IBeIzmK3aiHlJDFTGpUUm8sJG9iPyWZQIxxiKDvdatgklDaUJkwgETqA10F5BhuDdj6dYTcARhLDvEPtuUMsUaGiXE3sEh65NN/Wcfihcl75KpWCj/p8GLmGpni2KUCT/pPuXJebEJFSho4NrbtpHOsIHvTRmaOnvq2e7GxnhoykW3L8ILhW5o92zGfny4goH0aXdD5T5GKjUY42DU6IvMLNOMvh6NPo06ab1TBaiMZG6bruHi1EHoRRaJqYomNS1znyrbJN5kmMJzs2pwL8Q== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DU2PR04MB8630.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(6486002)(66476007)(8936002)(66556008)(66946007)(86362001)(52116002)(36756003)(5660300002)(38350700002)(8676002)(38100700002)(508600001)(6506007)(26005)(44832011)(4326008)(6512007)(2616005)(83380400001)(1076003)(2906002)(316002)(186003)(956004); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: vmOuMVNFV9QJNkRt62/kBseZVUiEpulYoXhjpDWlEYO7PnVCFQD022tTXyV795XP/Jl4g8XhSVptDeqj0kiv6eHHErthF2sItzbbDjKCrgZIKVBtL1lwYLT23I/UKvM6mYr+Wbm7bGmmrf6wxyMJjNaFOLqe8B3ijqDB3V3AVcRQdkEDqLo8Kgxos2wY7bF3wocpMmrRNyu9jjY0oXoyPO7ceSF/DH23Q0gg/wlMH1tMESlt3idp73eEGHWr0lUg/TCThLGcUcq9SdI3vMm/c316Y8iSQ2HkcnWm6SAqq1ZsdHUqDwhQaDAT056HMwMrIofxPcwSxlLqNS/DcmZyGg8biZ4fT8F+gTnWmPvTWCJOKUV2l7aHUgJjqNNxfJylX8P4/BmphErzvdmnHzpTJWQbSngb7FHq362PFEDh8F8C0QawmjWb6ajgkuvno3BAVLsN0ahZ7rZZuLKXbD8HGG3tSgB0VcH7tzjDZDdYIylkD2/CQWRvEKipHQMb5iw5An8p88aMnRLN6GUPfOj/s/pChuL9K2astHkpN0RQanpQ6poEglRKX/Gx2r0obO4i0HuSLB3VfiVk9mm2KaoRwdRj/hALTWm5x8Fn1L9/se8W7ZSTalubDXBaThbVqUNgw7mnnuzc4Q2Yu1Zh8lwDsiUbwuQyJp/sh0OHaIZn1w8s9AOILXfnJDWXozKW9Kw3ctIdD5u/Mocl4cTjY9xHPYMMTiPjlYtyCSFXG1LCxl2zjXkstc+ok8LJAO3S61WL5uGQHtHAuu8zfMNb/HWlCYj2KC+yiwisAf35t0QzUjx8BTRYK38wSQDnwR8MpdRUWhc44l/gu6BAwP2uimzKlW6YgXV0mT8ydOu3TyoH5Oa2MgWe47+36/Zs2tfQE/4J5fyEnZQLtOigklDSeafquYXsPc94Vd6zBiZjvzYP3au/vNikBwHuq4AS1C2hD/ckQqkFjLbj3sEztDwKP8OB5Zg75Z9wa52jGrlVRMgJbAul5TDNXRlw0qhKiKXtfQe1J/0wC6QEAzg932deZRGZG8GqpDN3bZVVDtIRUhEdo4RHpO3XC2LmUGMgCWyR0QE4HYHoquL0TAJo9LrqFPYFt6tjSwaiEAaWPfQ/+W+h/fjprmDO24ZHgZfpPVPeRGZXNXjA3zgMu+5uXSv4WN5nTXY/OO0IgrBnKMFEp7wkYEoFcGgkmVbm/niJ5JNq9Vc3O+MNNsQu7tyX0sjdMbOpt8WjrDqMd6c+K6pnmnKBFv3FBtOro45+o1+RtmwcBeCGk/+69ItjYZCeEfFrTDiRIGCCJPPJBOrgAZ+oRaymD14Nd74x71NLkkTYCIqvHvlv X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 29373efe-9a2a-466e-39d8-08d9918a3539 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2021 16:21:43.6024 (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: jAaGhiWrzojqI1mhRR+p9Smhc5uel4gcu2Q6iRbDfKmPWQEU/L1PRCp5sn1Z1i+u+djSJW+IyRzrYwNjyLXfiQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8615 Subject: [dpdk-dev] [PATCH v5 09/15] crypto/dpaa2_sec: support OOP with raw buffer API 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 Sender: "dev" From: Gagandeep Singh add support for out of order processing with raw vector APIs. Signed-off-by: Gagandeep Singh --- drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h | 1 + drivers/crypto/dpaa2_sec/dpaa2_sec_raw_dp.c | 156 +++++++++++++++----- 2 files changed, 116 insertions(+), 41 deletions(-) diff --git a/drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h b/drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h index f397b756e8..05bd7c0736 100644 --- a/drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h +++ b/drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h @@ -179,6 +179,7 @@ typedef int (*dpaa2_sec_build_fd_t)( typedef int (*dpaa2_sec_build_raw_dp_fd_t)(uint8_t *drv_ctx, struct rte_crypto_sgl *sgl, + struct rte_crypto_sgl *dest_sgl, struct rte_crypto_va_iova_ptr *iv, struct rte_crypto_va_iova_ptr *digest, struct rte_crypto_va_iova_ptr *auth_iv, diff --git a/drivers/crypto/dpaa2_sec/dpaa2_sec_raw_dp.c b/drivers/crypto/dpaa2_sec/dpaa2_sec_raw_dp.c index 5c29c61f9d..4f78cef9c0 100644 --- a/drivers/crypto/dpaa2_sec/dpaa2_sec_raw_dp.c +++ b/drivers/crypto/dpaa2_sec/dpaa2_sec_raw_dp.c @@ -24,6 +24,7 @@ struct dpaa2_sec_raw_dp_ctx { static int build_raw_dp_chain_fd(uint8_t *drv_ctx, struct rte_crypto_sgl *sgl, + struct rte_crypto_sgl *dest_sgl, struct rte_crypto_va_iova_ptr *iv, struct rte_crypto_va_iova_ptr *digest, struct rte_crypto_va_iova_ptr *auth_iv, @@ -89,17 +90,33 @@ build_raw_dp_chain_fd(uint8_t *drv_ctx, (cipher_len + icv_len) : cipher_len; - /* Configure Output SGE for Encap/Decap */ - DPAA2_SET_FLE_ADDR(sge, sgl->vec[0].iova); - DPAA2_SET_FLE_OFFSET(sge, ofs.ofs.auth.head); - sge->length = sgl->vec[0].len - ofs.ofs.auth.head; + /* OOP */ + if (dest_sgl) { + /* Configure Output SGE for Encap/Decap */ + DPAA2_SET_FLE_ADDR(sge, dest_sgl->vec[0].iova); + DPAA2_SET_FLE_OFFSET(sge, ofs.ofs.cipher.head); + sge->length = dest_sgl->vec[0].len - ofs.ofs.cipher.head; - /* o/p segs */ - for (i = 1; i < sgl->num; i++) { - sge++; - DPAA2_SET_FLE_ADDR(sge, sgl->vec[i].iova); - DPAA2_SET_FLE_OFFSET(sge, 0); - sge->length = sgl->vec[i].len; + /* o/p segs */ + for (i = 1; i < dest_sgl->num; i++) { + sge++; + DPAA2_SET_FLE_ADDR(sge, dest_sgl->vec[i].iova); + DPAA2_SET_FLE_OFFSET(sge, 0); + sge->length = dest_sgl->vec[i].len; + } + } else { + /* Configure Output SGE for Encap/Decap */ + DPAA2_SET_FLE_ADDR(sge, sgl->vec[0].iova); + DPAA2_SET_FLE_OFFSET(sge, ofs.ofs.cipher.head); + sge->length = sgl->vec[0].len - ofs.ofs.cipher.head; + + /* o/p segs */ + for (i = 1; i < sgl->num; i++) { + sge++; + DPAA2_SET_FLE_ADDR(sge, sgl->vec[i].iova); + DPAA2_SET_FLE_OFFSET(sge, 0); + sge->length = sgl->vec[i].len; + } } if (sess->dir == DIR_ENC) { @@ -160,6 +177,7 @@ build_raw_dp_chain_fd(uint8_t *drv_ctx, static int build_raw_dp_aead_fd(uint8_t *drv_ctx, struct rte_crypto_sgl *sgl, + struct rte_crypto_sgl *dest_sgl, struct rte_crypto_va_iova_ptr *iv, struct rte_crypto_va_iova_ptr *digest, struct rte_crypto_va_iova_ptr *auth_iv, @@ -219,17 +237,33 @@ build_raw_dp_aead_fd(uint8_t *drv_ctx, (aead_len + icv_len) : aead_len; - /* Configure Output SGE for Encap/Decap */ - DPAA2_SET_FLE_ADDR(sge, sgl->vec[0].iova); - DPAA2_SET_FLE_OFFSET(sge, ofs.ofs.cipher.head); - sge->length = sgl->vec[0].len - ofs.ofs.cipher.head; + /* OOP */ + if (dest_sgl) { + /* Configure Output SGE for Encap/Decap */ + DPAA2_SET_FLE_ADDR(sge, dest_sgl->vec[0].iova); + DPAA2_SET_FLE_OFFSET(sge, ofs.ofs.cipher.head); + sge->length = dest_sgl->vec[0].len - ofs.ofs.cipher.head; - /* o/p segs */ - for (i = 1; i < sgl->num; i++) { - sge++; - DPAA2_SET_FLE_ADDR(sge, sgl->vec[i].iova); - DPAA2_SET_FLE_OFFSET(sge, 0); - sge->length = sgl->vec[i].len; + /* o/p segs */ + for (i = 1; i < dest_sgl->num; i++) { + sge++; + DPAA2_SET_FLE_ADDR(sge, dest_sgl->vec[i].iova); + DPAA2_SET_FLE_OFFSET(sge, 0); + sge->length = dest_sgl->vec[i].len; + } + } else { + /* Configure Output SGE for Encap/Decap */ + DPAA2_SET_FLE_ADDR(sge, sgl->vec[0].iova); + DPAA2_SET_FLE_OFFSET(sge, ofs.ofs.cipher.head); + sge->length = sgl->vec[0].len - ofs.ofs.cipher.head; + + /* o/p segs */ + for (i = 1; i < sgl->num; i++) { + sge++; + DPAA2_SET_FLE_ADDR(sge, sgl->vec[i].iova); + DPAA2_SET_FLE_OFFSET(sge, 0); + sge->length = sgl->vec[i].len; + } } if (sess->dir == DIR_ENC) { @@ -294,6 +328,7 @@ build_raw_dp_aead_fd(uint8_t *drv_ctx, static int build_raw_dp_auth_fd(uint8_t *drv_ctx, struct rte_crypto_sgl *sgl, + struct rte_crypto_sgl *dest_sgl, struct rte_crypto_va_iova_ptr *iv, struct rte_crypto_va_iova_ptr *digest, struct rte_crypto_va_iova_ptr *auth_iv, @@ -303,6 +338,7 @@ build_raw_dp_auth_fd(uint8_t *drv_ctx, { RTE_SET_USED(iv); RTE_SET_USED(auth_iv); + RTE_SET_USED(dest_sgl); dpaa2_sec_session *sess = ((struct dpaa2_sec_raw_dp_ctx *)drv_ctx)->session; @@ -416,6 +452,7 @@ build_raw_dp_auth_fd(uint8_t *drv_ctx, static int build_raw_dp_proto_fd(uint8_t *drv_ctx, struct rte_crypto_sgl *sgl, + struct rte_crypto_sgl *dest_sgl, struct rte_crypto_va_iova_ptr *iv, struct rte_crypto_va_iova_ptr *digest, struct rte_crypto_va_iova_ptr *auth_iv, @@ -466,20 +503,39 @@ build_raw_dp_proto_fd(uint8_t *drv_ctx, DPAA2_SET_FLE_SG_EXT(op_fle); DPAA2_SET_FLE_ADDR(op_fle, DPAA2_VADDR_TO_IOVA(sge)); - /* Configure Output SGE for Encap/Decap */ - DPAA2_SET_FLE_ADDR(sge, sgl->vec[0].iova); - DPAA2_SET_FLE_OFFSET(sge, 0); - sge->length = sgl->vec[0].len; - out_len += sge->length; - /* o/p segs */ - for (i = 1; i < sgl->num; i++) { - sge++; - DPAA2_SET_FLE_ADDR(sge, sgl->vec[i].iova); + /* OOP */ + if (dest_sgl) { + /* Configure Output SGE for Encap/Decap */ + DPAA2_SET_FLE_ADDR(sge, dest_sgl->vec[0].iova); DPAA2_SET_FLE_OFFSET(sge, 0); - sge->length = sgl->vec[i].len; + sge->length = dest_sgl->vec[0].len; + out_len += sge->length; + /* o/p segs */ + for (i = 1; i < dest_sgl->num; i++) { + sge++; + DPAA2_SET_FLE_ADDR(sge, dest_sgl->vec[i].iova); + DPAA2_SET_FLE_OFFSET(sge, 0); + sge->length = dest_sgl->vec[i].len; + out_len += sge->length; + } + sge->length = dest_sgl->vec[i - 1].tot_len; + + } else { + /* Configure Output SGE for Encap/Decap */ + DPAA2_SET_FLE_ADDR(sge, sgl->vec[0].iova); + DPAA2_SET_FLE_OFFSET(sge, 0); + sge->length = sgl->vec[0].len; out_len += sge->length; + /* o/p segs */ + for (i = 1; i < sgl->num; i++) { + sge++; + DPAA2_SET_FLE_ADDR(sge, sgl->vec[i].iova); + DPAA2_SET_FLE_OFFSET(sge, 0); + sge->length = sgl->vec[i].len; + out_len += sge->length; + } + sge->length = sgl->vec[i - 1].tot_len; } - sge->length = sgl->vec[i - 1].tot_len; out_len += sge->length; DPAA2_SET_FLE_FIN(sge); @@ -528,6 +584,7 @@ build_raw_dp_proto_fd(uint8_t *drv_ctx, static int build_raw_dp_cipher_fd(uint8_t *drv_ctx, struct rte_crypto_sgl *sgl, + struct rte_crypto_sgl *dest_sgl, struct rte_crypto_va_iova_ptr *iv, struct rte_crypto_va_iova_ptr *digest, struct rte_crypto_va_iova_ptr *auth_iv, @@ -593,17 +650,33 @@ build_raw_dp_cipher_fd(uint8_t *drv_ctx, op_fle->length = data_len; DPAA2_SET_FLE_SG_EXT(op_fle); - /* o/p 1st seg */ - DPAA2_SET_FLE_ADDR(sge, sgl->vec[0].iova); - DPAA2_SET_FLE_OFFSET(sge, data_offset); - sge->length = sgl->vec[0].len - data_offset; + /* OOP */ + if (dest_sgl) { + /* o/p 1st seg */ + DPAA2_SET_FLE_ADDR(sge, dest_sgl->vec[0].iova); + DPAA2_SET_FLE_OFFSET(sge, data_offset); + sge->length = dest_sgl->vec[0].len - data_offset; - /* o/p segs */ - for (i = 1; i < sgl->num; i++) { - sge++; - DPAA2_SET_FLE_ADDR(sge, sgl->vec[i].iova); - DPAA2_SET_FLE_OFFSET(sge, 0); - sge->length = sgl->vec[i].len; + /* o/p segs */ + for (i = 1; i < dest_sgl->num; i++) { + sge++; + DPAA2_SET_FLE_ADDR(sge, dest_sgl->vec[i].iova); + DPAA2_SET_FLE_OFFSET(sge, 0); + sge->length = dest_sgl->vec[i].len; + } + } else { + /* o/p 1st seg */ + DPAA2_SET_FLE_ADDR(sge, sgl->vec[0].iova); + DPAA2_SET_FLE_OFFSET(sge, data_offset); + sge->length = sgl->vec[0].len - data_offset; + + /* o/p segs */ + for (i = 1; i < sgl->num; i++) { + sge++; + DPAA2_SET_FLE_ADDR(sge, sgl->vec[i].iova); + DPAA2_SET_FLE_OFFSET(sge, 0); + sge->length = sgl->vec[i].len; + } } DPAA2_SET_FLE_FIN(sge); @@ -706,6 +779,7 @@ dpaa2_sec_raw_enqueue_burst(void *qp_data, uint8_t *drv_ctx, memset(&fd_arr[loop], 0, sizeof(struct qbman_fd)); ret = sess->build_raw_dp_fd(drv_ctx, &vec->src_sgl[loop], + &vec->dest_sgl[loop], &vec->iv[loop], &vec->digest[loop], &vec->auth_iv[loop], From patchwork Sun Oct 17 16:16:46 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 101920 X-Patchwork-Delegate: gakhil@marvell.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 0F102A0547; Sun, 17 Oct 2021 18:22:38 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 45CFC41152; Sun, 17 Oct 2021 18:21:49 +0200 (CEST) Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-eopbgr60079.outbound.protection.outlook.com [40.107.6.79]) by mails.dpdk.org (Postfix) with ESMTP id 6E6ED4113D for ; Sun, 17 Oct 2021 18:21:46 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cbDKwVtLDvdmJqJq/dfQI+GBnTC2JYq/CWj8l7FjbpSMkmkspk8KZRT39aSvzb1JlgkDGzlOgb43cfmeTxGb7QK9aNXDrlMm7/Dr+gxuj+gqBrRflMz2s3X4Fz7maguzTD6CihI5qX1FIZn7QD3OtZy3a1byFRh8uqDAVtc/8H/fWexYsfnq3HrxmmwOgjWgXgZjjQMwoDwLuiUOkxf9LAwVbfa/oblDCELA1q1iKlkohZoDrVLNgvkC5rKArnyfHg5fumRz82bfRi4dN/cNns3n9JfBa4eRU7Eo6+DRzV6d29eMyDtl5eqiYtXv0TcvjIrlJ0VK2Uh4iaS9YYn6Zg== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=hM1YExVC9ypiO1YsXFiAyDaTqzgZZszZZhcVa+m2EoY=; b=a52DKCtzG1GBrgneZ7WPjdEqMk0gxWfnkn4jhh88MC6vcho+moFSy9KssFQZSE3WzG+X2rq39DcFO3z5pkXr++itITj7NeoiHR9ajIlU+SUSFqfG31aFEY+BjzEFEH7DOAwqqdsUt8wymV6akvBPO3OS64umQQparGsK6FDFqY8ChC2GVrePSIPB2dGPTSBbLd7QC0WQ3pl9Al27PcIxyLn3ZixrV2imHy8PKn3ZQmqNaSPBEKRbhniJcw+PhnMHOZpQfthIS638twT0K4JtPRLslCEynssFo9P9DUw5k/P83jcTgMNUnpGMhx5BZhaQdCxLEeMFG4XjMgyiolFSmQ== 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=hM1YExVC9ypiO1YsXFiAyDaTqzgZZszZZhcVa+m2EoY=; b=E4+Wr9CE6Nx7Mxb5q9cBcukfLrdgH/f0MQ9yzKF4U9bDakyKlyGQ5hjkYANLnbzrfBPWj++7xpEMS9fR0bcZnsVi25VEQS2ilVzIW0SSgaZhN5MIH3MNRR3A980lV4SygBgqNziDovnRq2BgnSfjdZLPLZ84My9KE32xu8yPn/g= Authentication-Results: dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; dmarc=none action=none header.from=nxp.com; Received: from DU2PR04MB8630.eurprd04.prod.outlook.com (2603:10a6:10:2dd::15) by DU2PR04MB8615.eurprd04.prod.outlook.com (2603:10a6:10:2da::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.15; Sun, 17 Oct 2021 16:21:45 +0000 Received: from DU2PR04MB8630.eurprd04.prod.outlook.com ([fe80::945d:e362:712d:1b80]) by DU2PR04MB8630.eurprd04.prod.outlook.com ([fe80::945d:e362:712d:1b80%3]) with mapi id 15.20.4608.018; Sun, 17 Oct 2021 16:21:45 +0000 From: Hemant Agrawal To: dev@dpdk.org, gakhil@marvell.com Cc: konstantin.ananyev@intel.com, roy.fan.zhang@intel.com, Gagandeep Singh Date: Sun, 17 Oct 2021 21:46:46 +0530 Message-Id: <20211017161651.9220-11-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211017161651.9220-1-hemant.agrawal@nxp.com> References: <20211013190032.2308-1-hemant.agrawal@nxp.com> <20211017161651.9220-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SI2PR01CA0053.apcprd01.prod.exchangelabs.com (2603:1096:4:193::7) To DU2PR04MB8630.eurprd04.prod.outlook.com (2603:10a6:10:2dd::15) MIME-Version: 1.0 Received: from dpdk-xeon.ap.freescale.net (92.120.0.67) by SI2PR01CA0053.apcprd01.prod.exchangelabs.com (2603:1096:4:193::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.15 via Frontend Transport; Sun, 17 Oct 2021 16:21:43 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: fc4d30a1-ebba-4cfa-1ede-08d9918a3689 X-MS-TrafficTypeDiagnostic: DU2PR04MB8615: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1051; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: An1Itq9wHhytK3l+SWRQCfS/BGtksLrqRc6Qykj0gqa5A2q2bdZdZFsQAP4o1IZsw5q4B8lIuwPobOU5Ec9Z5ujv3VYIOIca6yYmn1XX9Zri9RsH62b6Ap5KF4cBHtY6vP6amKLRWBIYgqQoeItgCI7dM4PoSULyHRWg0LrZ6ZrDc3btE2Yw58g8Tbnj7zW/jMltM8QiIkeH6g+Ezi4XPxNlj4J9hwqy0+CG6nmF+/b40IVFNQUNYssmUD2D5gAQHNiss+V1YuWNj2yTjdorMnvAPbR3jQ970QuL6CgwVb1Zvss9ngd43/4uHq+MwPx/IfUhrNSCGZMUHkusG5fUuqjtGQDmpRPEBqOQN3DBLAMVygCtDwCeGSy2pr05XJoFhN8qbEtu4xdQtmvtLK5oFkBKjRP8vWzSWBSw/KW7hD7opHPSmTBCJNdf+1en+YVsUFCizEdJiK6J+WiG8Ek8QeS2LRTQjUUtMvVU8mWMeSmoihMUKrO0BaChN6PSlUPOq/n1VzC9Y0fLUxGApEQpTIofECzxwTQdM+h7QfHuCe0YOZi06qS8GIzMZoVs/i87tgD8ZCpapv+/gz6xwGIYrmfAp7O65cBLDcbwR51vV5VXWmV6W/vrCOc81Z1FpATiIx40ra0A9FIcwZ/60wv67m9KbWgC0hauk/ALarV286yRH8j+jAbGPUgXiDgXCj8dwMJNGYCBgGwoPTAdX1j8eg== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DU2PR04MB8630.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(6486002)(66476007)(8936002)(66556008)(66946007)(86362001)(52116002)(36756003)(5660300002)(38350700002)(8676002)(38100700002)(508600001)(6506007)(26005)(44832011)(4326008)(6512007)(2616005)(83380400001)(1076003)(2906002)(316002)(186003)(956004); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: zcC5naNTRW2/Jl9Ta9RjXDZHL7mfahAR7D7tXlh+XQuCZ8EOpRQCgK35I2b5X1GQToRJgCgHMpoPFH9E9dts5Wey2CUHMf4wS03eaxC0ZTnNmLtE5/5FIFYJ5YUyQTX2l5QovUZYs0Ka9ds8/AHtapSKKoJc+rUSFg0Gn0k1H5ke4gvkiLCSfo8dnag/69ZbIsKr7t6MifU2PnyHavzmIeYrpqVlVzr205bV22z9l/Vo6KZeluP+t3aCawa30a0U4Bou7Ztq4VTC+GV2QGRATLD51X0oIRcvgcZ/PUkUG6/nuf7BqM0Bi0srQPeaYH2Z14hTx/emWzuINRIKSTKsGTZhCa0Uzr0qS4yCQP4CBdtYBWxo2DuVTnVq2nLdSZykT8RU16ubuRzpbXhFZeoNaSNmWSZkDmXFfZkeOyAn4pYUAh8i+jjIXEa1iu1aqVRkWCKOMj0+XBBlDNGCFvEFbCk1kdyHqrIuQ4rdqvfRhf/RZ/TatlUt7ajb/Y7pwJE2VwRh9yLS3vJa7UfZ2ueRhVqp9c6N7ZG3Xlp2Cqp4slygLaGg3eOmMwc6pw5YxRDK65s7L2ECNPOBXGv69u4LQ+qd5sXX56h5CFd451/xqD4O9C0q78OqJyoy9Zj3ZBZx6htcZ1qN1BK7Buf5tRTCBuXsLC2hf3nVG50fbIL4TM80S1Us1UNWEVg2zm63lnDTEcLiGX+6GzsaA8AXcC+ax/RSNTR6oHfyw2yfEohtqz045nXhvFPQ5aKsioKB5Wky+nLqBtN9zzbJiRqZurkizYCm7XB5L73FIbaYUimv9kUre3K+Y+u3P+bxMINldS617C3uTA9M2MQAEJuX3S2UK4nXJYJVgwM9Oi3fTtXKBFBHzGtMoESgsocPTT8LS8YS9GZegkx0ugqJbsnY7NpZudaMH39ei0oz4mRt4G3q8ZRVXuDpg6LKnPkIF73DvvnKpn0J4WWb3mQCMhiaFGn+OkSHKl6gjcsD3Ls80aZ7erZp3Mylarv70RKqQ5xasx8VfWBZdBmZ9gn0YNTPcTnvYeF6Yg5PkmRj8y5fGpaaxmJe8bbJb/JiovauWPRPhT4eGxbL67tpv4V2L3sWyXZN8IiKoZZ4HZAQ3jx2NXsWzYReuOG09TwPsSBQALej9uDBWr1KejFqrNDcwemReelBS6mqWtL4gXXxHsOyFCt0HQJIbXpLPOLhIDA14O8vh7+YyL9uDijr/4Zsz/s4hGc2zG/auN3EKmuL79o/XQQBjzVCbTNUi0NOPAJD1XYNNk4PO493+qTDSxOdmPnagVrGMIbF1aCVL1lBA+NaNWkP7JKJD78DggaJzcxCUVkR9Gd5 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: fc4d30a1-ebba-4cfa-1ede-08d9918a3689 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2021 16:21:45.7987 (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: T1/GfT3xdsbWod/3uYq2Ih4dH3DqkVSlElaclNSAK48XmDgQN7yRibbWs3hsGzMybA7xa/rBS1GjbmysvXlm1A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8615 Subject: [dpdk-dev] [PATCH v5 10/15] crypto/dpaa2_sec: enhance error checks with raw buffer APIs 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 Sender: "dev" From: Gagandeep Singh This patch improves error conditions and support of Wireless algos with raw buffers. Signed-off-by: Gagandeep Singh --- drivers/crypto/dpaa2_sec/dpaa2_sec_raw_dp.c | 31 ++++----------------- 1 file changed, 6 insertions(+), 25 deletions(-) diff --git a/drivers/crypto/dpaa2_sec/dpaa2_sec_raw_dp.c b/drivers/crypto/dpaa2_sec/dpaa2_sec_raw_dp.c index 4f78cef9c0..a2ffc6c02f 100644 --- a/drivers/crypto/dpaa2_sec/dpaa2_sec_raw_dp.c +++ b/drivers/crypto/dpaa2_sec/dpaa2_sec_raw_dp.c @@ -355,16 +355,7 @@ build_raw_dp_auth_fd(uint8_t *drv_ctx, data_len = total_len - ofs.ofs.auth.head - ofs.ofs.auth.tail; data_offset = ofs.ofs.auth.head; - if (sess->auth_alg == RTE_CRYPTO_AUTH_SNOW3G_UIA2 || - sess->auth_alg == RTE_CRYPTO_AUTH_ZUC_EIA3) { - if ((data_len & 7) || (data_offset & 7)) { - DPAA2_SEC_ERR("AUTH: len/offset must be full bytes"); - return -ENOTSUP; - } - - data_len = data_len >> 3; - data_offset = data_offset >> 3; - } + /* For SNOW3G and ZUC, lengths in bits only supported */ fle = (struct qbman_fle *)rte_malloc(NULL, FLE_SG_MEM_SIZE(2 * sgl->num), RTE_CACHE_LINE_SIZE); @@ -609,17 +600,7 @@ build_raw_dp_cipher_fd(uint8_t *drv_ctx, data_len = total_len - ofs.ofs.cipher.head - ofs.ofs.cipher.tail; data_offset = ofs.ofs.cipher.head; - if (sess->cipher_alg == RTE_CRYPTO_CIPHER_SNOW3G_UEA2 || - sess->cipher_alg == RTE_CRYPTO_CIPHER_ZUC_EEA3) { - if ((data_len & 7) || (data_offset & 7)) { - DPAA2_SEC_ERR("CIPHER: len/offset must be full bytes"); - return -ENOTSUP; - } - - data_len = data_len >> 3; - data_offset = data_offset >> 3; - } - + /* For SNOW3G and ZUC, lengths in bits only supported */ /* first FLE entry used to store mbuf and session ctxt */ fle = (struct qbman_fle *)rte_malloc(NULL, FLE_SG_MEM_SIZE(2*sgl->num), @@ -878,7 +859,7 @@ dpaa2_sec_raw_dequeue_burst(void *qp_data, uint8_t *drv_ctx, struct qbman_result *dq_storage; uint32_t fqid = dpaa2_qp->rx_vq.fqid; int ret, num_rx = 0; - uint8_t is_last = 0, status; + uint8_t is_last = 0, status, is_success = 0; struct qbman_swp *swp; const struct qbman_fd *fd; struct qbman_pull_desc pulldesc; @@ -957,11 +938,11 @@ dpaa2_sec_raw_dequeue_burst(void *qp_data, uint8_t *drv_ctx, /* TODO Parse SEC errors */ DPAA2_SEC_ERR("SEC returned Error - %x", fd->simple.frc); - status = RTE_CRYPTO_OP_STATUS_ERROR; + is_success = false; } else { - status = RTE_CRYPTO_OP_STATUS_SUCCESS; + is_success = true; } - post_dequeue(user_data, num_rx, status); + post_dequeue(user_data, num_rx, is_success); num_rx++; dq_storage++; From patchwork Sun Oct 17 16:16:47 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 101921 X-Patchwork-Delegate: gakhil@marvell.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 1A0BEA0547; Sun, 17 Oct 2021 18:22:44 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 5835941154; Sun, 17 Oct 2021 18:21:51 +0200 (CEST) Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-eopbgr80075.outbound.protection.outlook.com [40.107.8.75]) by mails.dpdk.org (Postfix) with ESMTP id 0B547410E9 for ; Sun, 17 Oct 2021 18:21:49 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dxmVXOPdhPQxzRxhWUbE6zYCNBy2Rgp0AdT5FptvGFv/YDn6K93oo8F5AIl6im5eFkctyY0BUMmdaV81sVnbHc/n0BouEVurzhEMrfou1QgRj52NfrFrccE8afpy51TdqO7IMab8QfDUtnMLH2Y+qlAVv4hGM9n62/xYSl/G1FqTgYhml+ILRq3rgmhbKohYf+aOVmfoUNDSTM+5o5qnbIt4AFm9q5bgvPb1dT1S6FPLrotGYAmHQLnD2uxKQAoSoWixNk6IWF5H+J806gv/nA/6OxfGL0WMkR9r+OhfdK6gAIn9Z/hLRIDuoVyhHavT3oXikwV1WuOuLvE3QGLk0g== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=v8Xh3rPVVym+1TBWVHwvXKHuP4Pyc2LGlFVuD8Ci+fk=; b=E2RKZ8Pk8O3nxlw7AcrNjnKD8FilT/nT6R5tCkcSHYdbVDqzPL4Ul33WOC3KGkw1c1ExhkFWEmy/CFgm2NibFlnl8kvTZB1Y5Y8jgEhNhEa5Dls/Jk6MvAJ+3DKJJEqIXJqBuEBW4kUyhpie9RFqv2SCtdUOnvM77UFPp9LWOC6iXJWkNB++458f+HCPAiiWJAPVaC0grteUT8yA6sl1V2hkSNxLbGFFUiY1+kEU6ubnnfHZtD2x+K8Mw7EOTYk/D9a5XOcwjH2goKshufb4CMxVTIEbAClBML3s7qJAEkCRAcOtQQp/i/RmsNNGqkrEhJLnvSnnBXv+SdsO9afpJQ== 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=v8Xh3rPVVym+1TBWVHwvXKHuP4Pyc2LGlFVuD8Ci+fk=; b=EgrU7YVBoEjGQY7FhVW/WSFgRzy7zHRRTS8fjnAqCK4rOHoXoUS5NLXWGfoXSkQuKQgB0obAv57mMWKMuLi5aLRG3P4g/PRFNtHtEZegXodo0tEADBFAb9xg7M3HpyYk4Imd5AVj6AkpKclK2rxdxUaT4+NKYhvK3yvQM3/wrRk= Authentication-Results: dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; dmarc=none action=none header.from=nxp.com; Received: from DU2PR04MB8630.eurprd04.prod.outlook.com (2603:10a6:10:2dd::15) by DU2PR04MB8615.eurprd04.prod.outlook.com (2603:10a6:10:2da::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.15; Sun, 17 Oct 2021 16:21:48 +0000 Received: from DU2PR04MB8630.eurprd04.prod.outlook.com ([fe80::945d:e362:712d:1b80]) by DU2PR04MB8630.eurprd04.prod.outlook.com ([fe80::945d:e362:712d:1b80%3]) with mapi id 15.20.4608.018; Sun, 17 Oct 2021 16:21:48 +0000 From: Hemant Agrawal To: dev@dpdk.org, gakhil@marvell.com Cc: konstantin.ananyev@intel.com, roy.fan.zhang@intel.com, Gagandeep Singh Date: Sun, 17 Oct 2021 21:46:47 +0530 Message-Id: <20211017161651.9220-12-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211017161651.9220-1-hemant.agrawal@nxp.com> References: <20211013190032.2308-1-hemant.agrawal@nxp.com> <20211017161651.9220-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SI2PR01CA0053.apcprd01.prod.exchangelabs.com (2603:1096:4:193::7) To DU2PR04MB8630.eurprd04.prod.outlook.com (2603:10a6:10:2dd::15) MIME-Version: 1.0 Received: from dpdk-xeon.ap.freescale.net (92.120.0.67) by SI2PR01CA0053.apcprd01.prod.exchangelabs.com (2603:1096:4:193::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.15 via Frontend Transport; Sun, 17 Oct 2021 16:21:46 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ef21c7d8-490f-425b-3125-08d9918a37d7 X-MS-TrafficTypeDiagnostic: DU2PR04MB8615: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:4502; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ACCY28QRgGh6ynauTv5THc5/a7Zn6SmBnhsRHe4AKE//AAEC5HZFTQXO+YhFFX+UyoshOMB8o480tP1HezxFIbbgl01T2k2dCyRuDuwqlRFZsoEIUmeaZWYxy4mNQnBfXKSGqHJuuU339gNih94CUC5iO8u0LK/alEm8SONu3MyHu79ULpH/MnJdE87guLvbuzLw1Ret3zQWpcTmP7+2ZQ4XvbJZWlhshcFhGfl0EFYqKV1juwdU66aovsUxgNVQy61F0oeSCwlolDIPhgfD075bt2Kphg/jy+PfMNBsr4cNLPDhtBkBMgfeX89cKjBZDFIfFQIE2Gmd0RdFz8Bm1svTUaeJP5rOPr/NkJyhyma5azc19Bt4mOemIa1R0Ngy2ceM/nGBhEv+Jj0F8aeixwKOQFLcND5asEWJGu9Y+6VEnIhDTbz8sKs0Cok8jnb2x//OFDk3DVbEVda8qmWf4kUev3VU5FT1C/Cv8nAwSfxyCsd7G4uCyTbF+7JBv7qgKU+Br/FjU354t1rBbOR9WWMppGrXui5i9S9H9xrJqcBk5KnoebT5q78RpwpgkjcNwKF5IA0oO5kvT194LZs1KE16BMd2MXdflS56szgRfEJ2LKmXmLEHgkZV2XlInhTZpTjkIL1lzMFm6p9CEShQ6dYfPUHITDZ/SxBMuELmQCMSb2B2zTp+4mtelyPAza9uMKF8ZPZ6hGOxAC4laPMgrA== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DU2PR04MB8630.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(6486002)(66476007)(8936002)(66556008)(66946007)(86362001)(52116002)(36756003)(5660300002)(38350700002)(8676002)(38100700002)(508600001)(6506007)(26005)(44832011)(4326008)(30864003)(6512007)(2616005)(83380400001)(1076003)(2906002)(316002)(186003)(956004); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: eQssL1zp9ErCmJ5lLN7B2Khm5XIr3PjrmwyYmy0+aJ4n9IHLVi+OkB8VBHWtPUPkUkt4FG02l4BCAJAWWcawS7f+bnQwHTQTYbyR5xsq65u6S9tNBC6/OwMDkYbhuLQoClq0PnxIo3eS+3V5yB0OxzTY9ajSM6NgfGP1DmAfwz88R7oBEV1SHUTrBgzrPEPeK9kW1Dk+qVMWy7r6xjwVidqVLYTFiQIiK1Cl42ese2IQ4eUAV1TObLU4wR77ycBscbwFtGB7hvU/XlEtsPyn9tkQiQ+jwLYPIT9E6dBhJ++SBcxOrCrcLvNu936GfJX1zHLgctv6xwO8nyQ1KJDwDGkePyJA82GnwZbjprDvk3x8WnLna4b0Qtev1KkHFOuNbPLxkSDn5k+5/Yfev3huPsVxpTlECtF9bKEabSXLMB3zwqwBNI/FKxp7hVV86HzQB7SH/QrDrAo/gros7wbeWUzLDffZDY+FI3CeCNrUPG0hUA7pWNohNdpIFrTqE0mgYMlmMcTXxSl1FcbgQzj6tPYPqxPRa9B0yxtDfDczLtO4sEf5IziytvoxV2QRwLUpLXNtRpUbNOevpBVX+6lodpA6ADEwS/gnXgT6oymrapllToxDAG/kvUm9vdQ5npbxyT+RtFBJvYlxmolap8ig1YYoJnjQr0cI19CJgzI6iRJ6o37VFEdoD4+/g7p48mJaBkG/U4pG3I16lkK38MQpBQC8TpZMYxbTScwgx8QcGFLKU0Y/yO0GA2LNJRpWX1CFe46xGVLJWrjod8+InsEE3/X3klP27mRYAu0qipOIZY7USsXJRUiYi/SvHhv09CEJXwBv7Aaj8ehWF2y3MTVdjgFoAdIAuhGYLYdlSt0E9lNUV4wMjVVCfFnCgF81mhFFvyDc83ukl+fJKJSS143/AnH3D/v644HvrKiwBPRtK7O9fmI+X1SoaDccaCwLl5qhfEa+zSW/OHm5M4XS6ejhh6jf7mTW9lgthHHWBHC8cNG3yyw4sLegax0TjBQN1ty5k6V8RpdPVcucHAOV+Eie0ViFPzA/QzB9T31WXkYVXPXNoJNAscJFxH95L3SHpIta3YI5JucdEPnTeI3A5yyeNDbtCaRIcBXwjR8zJCtldV1MmuGvsEGoPRifwZKEyEm/Yie0M5l7ONHq+9We2fwpv465QaacdThTvIXlQcKZmnTlv2+9V46rV8nf8mM/AOY8Sl97P0/ZvTqkcDhjbSvuYXPDxcg+u4dABcS03FzvPH09FeDa9gBrpFqGk5Yuhr0KZCZCFAVyJxEKJgTC0W3iQ4LdHIlz/A64z0i+a0AWmVUkp8jS9H7eknYlVXCOANRo X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: ef21c7d8-490f-425b-3125-08d9918a37d7 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2021 16:21:48.0070 (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: cfYACPcmMLL8woiRTl3ueA/mbD1phzjoa2Xm5XwYJ1s/1QciPfk+sDEV9mqk6m0cinkJwrNhp79uY4GUolM5KA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8615 Subject: [dpdk-dev] [PATCH v5 11/15] crypto/dpaa_sec: support raw datapath APIs 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 Sender: "dev" From: Gagandeep Singh This patch add raw vector API framework for dpaa_sec driver. Signed-off-by: Gagandeep Singh --- doc/guides/rel_notes/release_21_11.rst | 1 + drivers/crypto/dpaa_sec/dpaa_sec.c | 23 +- drivers/crypto/dpaa_sec/dpaa_sec.h | 39 +- drivers/crypto/dpaa_sec/dpaa_sec_raw_dp.c | 485 ++++++++++++++++++++++ drivers/crypto/dpaa_sec/meson.build | 4 +- 5 files changed, 538 insertions(+), 14 deletions(-) create mode 100644 drivers/crypto/dpaa_sec/dpaa_sec_raw_dp.c diff --git a/doc/guides/rel_notes/release_21_11.rst b/doc/guides/rel_notes/release_21_11.rst index 0566aacf19..885630eae9 100644 --- a/doc/guides/rel_notes/release_21_11.rst +++ b/doc/guides/rel_notes/release_21_11.rst @@ -124,6 +124,7 @@ New Features * Added DES-CBC, AES-XCBC-MAC, AES-CMAC and non-HMAC algo support. * Added PDCP short MAC-I support. + * Added raw vector datapath API support * **Updated NXP dpaa2_sec crypto PMD.** diff --git a/drivers/crypto/dpaa_sec/dpaa_sec.c b/drivers/crypto/dpaa_sec/dpaa_sec.c index d5aa2748d6..c7ef1c7b0f 100644 --- a/drivers/crypto/dpaa_sec/dpaa_sec.c +++ b/drivers/crypto/dpaa_sec/dpaa_sec.c @@ -45,10 +45,7 @@ #include #include -static uint8_t cryptodev_driver_id; - -static int -dpaa_sec_attach_sess_q(struct dpaa_sec_qp *qp, dpaa_sec_session *sess); +uint8_t dpaa_cryptodev_driver_id; static inline void dpaa_sec_op_ending(struct dpaa_sec_op_ctx *ctx) @@ -1787,8 +1784,8 @@ dpaa_sec_enqueue_burst(void *qp, struct rte_crypto_op **ops, case RTE_CRYPTO_OP_WITH_SESSION: ses = (dpaa_sec_session *) get_sym_session_private_data( - op->sym->session, - cryptodev_driver_id); + op->sym->session, + dpaa_cryptodev_driver_id); break; #ifdef RTE_LIB_SECURITY case RTE_CRYPTO_OP_SECURITY_SESSION: @@ -2400,7 +2397,7 @@ dpaa_sec_detach_rxq(struct dpaa_sec_dev_private *qi, struct qman_fq *fq) return -1; } -static int +int dpaa_sec_attach_sess_q(struct dpaa_sec_qp *qp, dpaa_sec_session *sess) { int ret; @@ -3216,7 +3213,7 @@ dpaa_sec_dev_infos_get(struct rte_cryptodev *dev, info->feature_flags = dev->feature_flags; info->capabilities = dpaa_sec_capabilities; info->sym.max_nb_sessions = internals->max_nb_sessions; - info->driver_id = cryptodev_driver_id; + info->driver_id = dpaa_cryptodev_driver_id; } } @@ -3412,7 +3409,10 @@ static struct rte_cryptodev_ops crypto_ops = { .queue_pair_release = dpaa_sec_queue_pair_release, .sym_session_get_size = dpaa_sec_sym_session_get_size, .sym_session_configure = dpaa_sec_sym_session_configure, - .sym_session_clear = dpaa_sec_sym_session_clear + .sym_session_clear = dpaa_sec_sym_session_clear, + /* Raw data-path API related operations */ + .sym_get_raw_dp_ctx_size = dpaa_sec_get_dp_ctx_size, + .sym_configure_raw_dp_ctx = dpaa_sec_configure_raw_dp_ctx, }; #ifdef RTE_LIB_SECURITY @@ -3463,7 +3463,7 @@ dpaa_sec_dev_init(struct rte_cryptodev *cryptodev) PMD_INIT_FUNC_TRACE(); - cryptodev->driver_id = cryptodev_driver_id; + cryptodev->driver_id = dpaa_cryptodev_driver_id; cryptodev->dev_ops = &crypto_ops; cryptodev->enqueue_burst = dpaa_sec_enqueue_burst; @@ -3472,6 +3472,7 @@ dpaa_sec_dev_init(struct rte_cryptodev *cryptodev) RTE_CRYPTODEV_FF_HW_ACCELERATED | RTE_CRYPTODEV_FF_SYM_OPERATION_CHAINING | RTE_CRYPTODEV_FF_SECURITY | + RTE_CRYPTODEV_FF_SYM_RAW_DP | RTE_CRYPTODEV_FF_IN_PLACE_SGL | RTE_CRYPTODEV_FF_OOP_SGL_IN_SGL_OUT | RTE_CRYPTODEV_FF_OOP_SGL_IN_LB_OUT | @@ -3637,5 +3638,5 @@ static struct cryptodev_driver dpaa_sec_crypto_drv; RTE_PMD_REGISTER_DPAA(CRYPTODEV_NAME_DPAA_SEC_PMD, rte_dpaa_sec_driver); RTE_PMD_REGISTER_CRYPTO_DRIVER(dpaa_sec_crypto_drv, rte_dpaa_sec_driver.driver, - cryptodev_driver_id); + dpaa_cryptodev_driver_id); RTE_LOG_REGISTER(dpaa_logtype_sec, pmd.crypto.dpaa, NOTICE); diff --git a/drivers/crypto/dpaa_sec/dpaa_sec.h b/drivers/crypto/dpaa_sec/dpaa_sec.h index 503047879e..77288cd1eb 100644 --- a/drivers/crypto/dpaa_sec/dpaa_sec.h +++ b/drivers/crypto/dpaa_sec/dpaa_sec.h @@ -19,6 +19,8 @@ #define AES_CTR_IV_LEN 16 #define AES_GCM_IV_LEN 12 +extern uint8_t dpaa_cryptodev_driver_id; + #define DPAA_IPv6_DEFAULT_VTC_FLOW 0x60000000 /* Minimum job descriptor consists of a oneword job descriptor HEADER and @@ -117,6 +119,24 @@ struct sec_pdcp_ctxt { uint32_t hfn_threshold; /*!< HFN Threashold for key renegotiation */ }; #endif + +typedef int (*dpaa_sec_build_fd_t)( + void *qp, uint8_t *drv_ctx, struct rte_crypto_vec *data_vec, + uint16_t n_data_vecs, union rte_crypto_sym_ofs ofs, + struct rte_crypto_va_iova_ptr *iv, + struct rte_crypto_va_iova_ptr *digest, + struct rte_crypto_va_iova_ptr *aad_or_auth_iv, + void *user_data); + +typedef struct dpaa_sec_job* (*dpaa_sec_build_raw_dp_fd_t)(uint8_t *drv_ctx, + struct rte_crypto_sgl *sgl, + struct rte_crypto_sgl *dest_sgl, + struct rte_crypto_va_iova_ptr *iv, + struct rte_crypto_va_iova_ptr *digest, + struct rte_crypto_va_iova_ptr *auth_iv, + union rte_crypto_sym_ofs ofs, + void *userdata); + typedef struct dpaa_sec_session_entry { struct sec_cdb cdb; /**< cmd block associated with qp */ struct dpaa_sec_qp *qp[MAX_DPAA_CORES]; @@ -129,6 +149,8 @@ typedef struct dpaa_sec_session_entry { #ifdef RTE_LIB_SECURITY enum rte_security_session_protocol proto_alg; /*!< Security Algorithm*/ #endif + dpaa_sec_build_fd_t build_fd; + dpaa_sec_build_raw_dp_fd_t build_raw_dp_fd; union { struct { uint8_t *data; /**< pointer to key data */ @@ -211,7 +233,10 @@ struct dpaa_sec_job { #define DPAA_MAX_NB_MAX_DIGEST 32 struct dpaa_sec_op_ctx { struct dpaa_sec_job job; - struct rte_crypto_op *op; + union { + struct rte_crypto_op *op; + void *userdata; + }; struct rte_mempool *ctx_pool; /* mempool pointer for dpaa_sec_op_ctx */ uint32_t fd_status; int64_t vtop_offset; @@ -1001,4 +1026,16 @@ calc_chksum(void *buffer, int len) return result; } +int +dpaa_sec_configure_raw_dp_ctx(struct rte_cryptodev *dev, uint16_t qp_id, + struct rte_crypto_raw_dp_ctx *raw_dp_ctx, + enum rte_crypto_op_sess_type sess_type, + union rte_cryptodev_session_ctx session_ctx, uint8_t is_update); + +int +dpaa_sec_get_dp_ctx_size(struct rte_cryptodev *dev); + +int +dpaa_sec_attach_sess_q(struct dpaa_sec_qp *qp, dpaa_sec_session *sess); + #endif /* _DPAA_SEC_H_ */ diff --git a/drivers/crypto/dpaa_sec/dpaa_sec_raw_dp.c b/drivers/crypto/dpaa_sec/dpaa_sec_raw_dp.c new file mode 100644 index 0000000000..7376da4cbc --- /dev/null +++ b/drivers/crypto/dpaa_sec/dpaa_sec_raw_dp.c @@ -0,0 +1,485 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright 2021 NXP + */ + +#include +#include +#include +#include +#include +#ifdef RTE_LIB_SECURITY +#include +#endif + +/* RTA header files */ +#include + +#include +#include +#include + +struct dpaa_sec_raw_dp_ctx { + dpaa_sec_session *session; + uint32_t tail; + uint32_t head; + uint16_t cached_enqueue; + uint16_t cached_dequeue; +}; + +static __rte_always_inline int +dpaa_sec_raw_enqueue_done(void *qp_data, uint8_t *drv_ctx, uint32_t n) +{ + RTE_SET_USED(qp_data); + RTE_SET_USED(drv_ctx); + RTE_SET_USED(n); + + return 0; +} + +static __rte_always_inline int +dpaa_sec_raw_dequeue_done(void *qp_data, uint8_t *drv_ctx, uint32_t n) +{ + RTE_SET_USED(qp_data); + RTE_SET_USED(drv_ctx); + RTE_SET_USED(n); + + return 0; +} + +static inline struct dpaa_sec_op_ctx * +dpaa_sec_alloc_raw_ctx(dpaa_sec_session *ses, int sg_count) +{ + struct dpaa_sec_op_ctx *ctx; + int i, retval; + + retval = rte_mempool_get( + ses->qp[rte_lcore_id() % MAX_DPAA_CORES]->ctx_pool, + (void **)(&ctx)); + if (!ctx || retval) { + DPAA_SEC_DP_WARN("Alloc sec descriptor failed!"); + return NULL; + } + /* + * Clear SG memory. There are 16 SG entries of 16 Bytes each. + * one call to dcbz_64() clear 64 bytes, hence calling it 4 times + * to clear all the SG entries. dpaa_sec_alloc_ctx() is called for + * each packet, memset is costlier than dcbz_64(). + */ + for (i = 0; i < sg_count && i < MAX_JOB_SG_ENTRIES; i += 4) + dcbz_64(&ctx->job.sg[i]); + + ctx->ctx_pool = ses->qp[rte_lcore_id() % MAX_DPAA_CORES]->ctx_pool; + ctx->vtop_offset = (size_t) ctx - rte_mempool_virt2iova(ctx); + + return ctx; +} + +static struct dpaa_sec_job * +build_dpaa_raw_dp_auth_fd(uint8_t *drv_ctx, + struct rte_crypto_sgl *sgl, + struct rte_crypto_sgl *dest_sgl, + struct rte_crypto_va_iova_ptr *iv, + struct rte_crypto_va_iova_ptr *digest, + struct rte_crypto_va_iova_ptr *auth_iv, + union rte_crypto_sym_ofs ofs, + void *userdata) +{ + RTE_SET_USED(drv_ctx); + RTE_SET_USED(sgl); + RTE_SET_USED(dest_sgl); + RTE_SET_USED(iv); + RTE_SET_USED(digest); + RTE_SET_USED(auth_iv); + RTE_SET_USED(ofs); + RTE_SET_USED(userdata); + + return NULL; +} + +static struct dpaa_sec_job * +build_dpaa_raw_dp_cipher_fd(uint8_t *drv_ctx, + struct rte_crypto_sgl *sgl, + struct rte_crypto_sgl *dest_sgl, + struct rte_crypto_va_iova_ptr *iv, + struct rte_crypto_va_iova_ptr *digest, + struct rte_crypto_va_iova_ptr *auth_iv, + union rte_crypto_sym_ofs ofs, + void *userdata) +{ + RTE_SET_USED(digest); + RTE_SET_USED(auth_iv); + dpaa_sec_session *ses = + ((struct dpaa_sec_raw_dp_ctx *)drv_ctx)->session; + struct dpaa_sec_job *cf; + struct dpaa_sec_op_ctx *ctx; + struct qm_sg_entry *sg, *out_sg, *in_sg; + unsigned int i; + uint8_t *IV_ptr = iv->va; + int data_len, total_len = 0, data_offset; + + for (i = 0; i < sgl->num; i++) + total_len += sgl->vec[i].len; + + data_len = total_len - ofs.ofs.cipher.head - ofs.ofs.cipher.tail; + data_offset = ofs.ofs.cipher.head; + + /* Support lengths in bits only for SNOW3G and ZUC */ + if (sgl->num > MAX_SG_ENTRIES) { + DPAA_SEC_DP_ERR("Cipher: Max sec segs supported is %d", + MAX_SG_ENTRIES); + return NULL; + } + + ctx = dpaa_sec_alloc_raw_ctx(ses, sgl->num * 2 + 3); + if (!ctx) + return NULL; + + cf = &ctx->job; + ctx->userdata = (void *)userdata; + + /* output */ + out_sg = &cf->sg[0]; + out_sg->extension = 1; + out_sg->length = data_len; + qm_sg_entry_set64(out_sg, rte_dpaa_mem_vtop(&cf->sg[2])); + cpu_to_hw_sg(out_sg); + + if (dest_sgl) { + /* 1st seg */ + sg = &cf->sg[2]; + qm_sg_entry_set64(sg, dest_sgl->vec[0].iova); + sg->length = dest_sgl->vec[0].len - data_offset; + sg->offset = data_offset; + + /* Successive segs */ + for (i = 1; i < dest_sgl->num; i++) { + cpu_to_hw_sg(sg); + sg++; + qm_sg_entry_set64(sg, dest_sgl->vec[i].iova); + sg->length = dest_sgl->vec[i].len; + } + } else { + /* 1st seg */ + sg = &cf->sg[2]; + qm_sg_entry_set64(sg, sgl->vec[0].iova); + sg->length = sgl->vec[0].len - data_offset; + sg->offset = data_offset; + + /* Successive segs */ + for (i = 1; i < sgl->num; i++) { + cpu_to_hw_sg(sg); + sg++; + qm_sg_entry_set64(sg, sgl->vec[i].iova); + sg->length = sgl->vec[i].len; + } + + } + sg->final = 1; + cpu_to_hw_sg(sg); + + /* input */ + in_sg = &cf->sg[1]; + in_sg->extension = 1; + in_sg->final = 1; + in_sg->length = data_len + ses->iv.length; + + sg++; + qm_sg_entry_set64(in_sg, rte_dpaa_mem_vtop(sg)); + cpu_to_hw_sg(in_sg); + + /* IV */ + qm_sg_entry_set64(sg, rte_dpaa_mem_vtop(IV_ptr)); + sg->length = ses->iv.length; + cpu_to_hw_sg(sg); + + /* 1st seg */ + sg++; + qm_sg_entry_set64(sg, sgl->vec[0].iova); + sg->length = sgl->vec[0].len - data_offset; + sg->offset = data_offset; + + /* Successive segs */ + for (i = 1; i < sgl->num; i++) { + cpu_to_hw_sg(sg); + sg++; + qm_sg_entry_set64(sg, sgl->vec[i].iova); + sg->length = sgl->vec[i].len; + } + sg->final = 1; + cpu_to_hw_sg(sg); + + return cf; +} + +static uint32_t +dpaa_sec_raw_enqueue_burst(void *qp_data, uint8_t *drv_ctx, + struct rte_crypto_sym_vec *vec, union rte_crypto_sym_ofs ofs, + void *user_data[], int *status) +{ + /* Function to transmit the frames to given device and queuepair */ + uint32_t loop; + struct dpaa_sec_qp *dpaa_qp = (struct dpaa_sec_qp *)qp_data; + uint16_t num_tx = 0; + struct qm_fd fds[DPAA_SEC_BURST], *fd; + uint32_t frames_to_send; + struct dpaa_sec_job *cf; + dpaa_sec_session *ses = + ((struct dpaa_sec_raw_dp_ctx *)drv_ctx)->session; + uint32_t flags[DPAA_SEC_BURST] = {0}; + struct qman_fq *inq[DPAA_SEC_BURST]; + + if (unlikely(!DPAA_PER_LCORE_PORTAL)) { + if (rte_dpaa_portal_init((void *)0)) { + DPAA_SEC_ERR("Failure in affining portal"); + return 0; + } + } + + while (vec->num) { + frames_to_send = (vec->num > DPAA_SEC_BURST) ? + DPAA_SEC_BURST : vec->num; + for (loop = 0; loop < frames_to_send; loop++) { + if (unlikely(!ses->qp[rte_lcore_id() % MAX_DPAA_CORES])) { + if (dpaa_sec_attach_sess_q(dpaa_qp, ses)) { + frames_to_send = loop; + goto send_pkts; + } + } else if (unlikely(ses->qp[rte_lcore_id() % + MAX_DPAA_CORES] != dpaa_qp)) { + DPAA_SEC_DP_ERR("Old:sess->qp = %p" + " New qp = %p\n", + ses->qp[rte_lcore_id() % + MAX_DPAA_CORES], dpaa_qp); + frames_to_send = loop; + goto send_pkts; + } + + /*Clear the unused FD fields before sending*/ + fd = &fds[loop]; + memset(fd, 0, sizeof(struct qm_fd)); + cf = ses->build_raw_dp_fd(drv_ctx, + &vec->src_sgl[loop], + &vec->dest_sgl[loop], + &vec->iv[loop], + &vec->digest[loop], + &vec->auth_iv[loop], + ofs, + user_data[loop]); + if (!cf) { + DPAA_SEC_ERR("error: Improper packet contents" + " for crypto operation"); + goto skip_tx; + } + inq[loop] = ses->inq[rte_lcore_id() % MAX_DPAA_CORES]; + fd->opaque_addr = 0; + fd->cmd = 0; + qm_fd_addr_set64(fd, rte_dpaa_mem_vtop(cf->sg)); + fd->_format1 = qm_fd_compound; + fd->length29 = 2 * sizeof(struct qm_sg_entry); + + status[loop] = 1; + } +send_pkts: + loop = 0; + while (loop < frames_to_send) { + loop += qman_enqueue_multi_fq(&inq[loop], &fds[loop], + &flags[loop], frames_to_send - loop); + } + vec->num -= frames_to_send; + num_tx += frames_to_send; + } + +skip_tx: + dpaa_qp->tx_pkts += num_tx; + dpaa_qp->tx_errs += vec->num - num_tx; + + return num_tx; +} + +static int +dpaa_sec_deq_raw(struct dpaa_sec_qp *qp, void **out_user_data, + uint8_t is_user_data_array, + rte_cryptodev_raw_post_dequeue_t post_dequeue, + int nb_ops) +{ + struct qman_fq *fq; + unsigned int pkts = 0; + int num_rx_bufs, ret; + struct qm_dqrr_entry *dq; + uint32_t vdqcr_flags = 0; + uint8_t is_success = 0; + + fq = &qp->outq; + /* + * Until request for four buffers, we provide exact number of buffers. + * Otherwise we do not set the QM_VDQCR_EXACT flag. + * Not setting QM_VDQCR_EXACT flag can provide two more buffers than + * requested, so we request two less in this case. + */ + if (nb_ops < 4) { + vdqcr_flags = QM_VDQCR_EXACT; + num_rx_bufs = nb_ops; + } else { + num_rx_bufs = nb_ops > DPAA_MAX_DEQUEUE_NUM_FRAMES ? + (DPAA_MAX_DEQUEUE_NUM_FRAMES - 2) : (nb_ops - 2); + } + ret = qman_set_vdq(fq, num_rx_bufs, vdqcr_flags); + if (ret) + return 0; + + do { + const struct qm_fd *fd; + struct dpaa_sec_job *job; + struct dpaa_sec_op_ctx *ctx; + + dq = qman_dequeue(fq); + if (!dq) + continue; + + fd = &dq->fd; + /* sg is embedded in an op ctx, + * sg[0] is for output + * sg[1] for input + */ + job = rte_dpaa_mem_ptov(qm_fd_addr_get64(fd)); + + ctx = container_of(job, struct dpaa_sec_op_ctx, job); + ctx->fd_status = fd->status; + if (is_user_data_array) + out_user_data[pkts] = ctx->userdata; + else + out_user_data[0] = ctx->userdata; + + if (!ctx->fd_status) { + is_success = true; + } else { + is_success = false; + DPAA_SEC_DP_WARN("SEC return err:0x%x", ctx->fd_status); + } + post_dequeue(ctx->op, pkts, is_success); + pkts++; + + /* report op status to sym->op and then free the ctx memory */ + rte_mempool_put(ctx->ctx_pool, (void *)ctx); + + qman_dqrr_consume(fq, dq); + } while (fq->flags & QMAN_FQ_STATE_VDQCR); + + return pkts; +} + + +static __rte_always_inline uint32_t +dpaa_sec_raw_dequeue_burst(void *qp_data, uint8_t *drv_ctx, + rte_cryptodev_raw_get_dequeue_count_t get_dequeue_count, + uint32_t max_nb_to_dequeue, + rte_cryptodev_raw_post_dequeue_t post_dequeue, + void **out_user_data, uint8_t is_user_data_array, + uint32_t *n_success, int *dequeue_status) +{ + RTE_SET_USED(drv_ctx); + RTE_SET_USED(get_dequeue_count); + uint16_t num_rx; + struct dpaa_sec_qp *dpaa_qp = (struct dpaa_sec_qp *)qp_data; + uint32_t nb_ops = max_nb_to_dequeue; + + if (unlikely(!DPAA_PER_LCORE_PORTAL)) { + if (rte_dpaa_portal_init((void *)0)) { + DPAA_SEC_ERR("Failure in affining portal"); + return 0; + } + } + + num_rx = dpaa_sec_deq_raw(dpaa_qp, out_user_data, + is_user_data_array, post_dequeue, nb_ops); + + dpaa_qp->rx_pkts += num_rx; + *dequeue_status = 1; + *n_success = num_rx; + + DPAA_SEC_DP_DEBUG("SEC Received %d Packets\n", num_rx); + + return num_rx; +} + +static __rte_always_inline int +dpaa_sec_raw_enqueue(void *qp_data, uint8_t *drv_ctx, + struct rte_crypto_vec *data_vec, + uint16_t n_data_vecs, union rte_crypto_sym_ofs ofs, + struct rte_crypto_va_iova_ptr *iv, + struct rte_crypto_va_iova_ptr *digest, + struct rte_crypto_va_iova_ptr *aad_or_auth_iv, + void *user_data) +{ + RTE_SET_USED(qp_data); + RTE_SET_USED(drv_ctx); + RTE_SET_USED(data_vec); + RTE_SET_USED(n_data_vecs); + RTE_SET_USED(ofs); + RTE_SET_USED(iv); + RTE_SET_USED(digest); + RTE_SET_USED(aad_or_auth_iv); + RTE_SET_USED(user_data); + + return 0; +} + +static __rte_always_inline void * +dpaa_sec_raw_dequeue(void *qp_data, uint8_t *drv_ctx, int *dequeue_status, + enum rte_crypto_op_status *op_status) +{ + RTE_SET_USED(qp_data); + RTE_SET_USED(drv_ctx); + RTE_SET_USED(dequeue_status); + RTE_SET_USED(op_status); + + return NULL; +} + +int +dpaa_sec_configure_raw_dp_ctx(struct rte_cryptodev *dev, uint16_t qp_id, + struct rte_crypto_raw_dp_ctx *raw_dp_ctx, + enum rte_crypto_op_sess_type sess_type, + union rte_cryptodev_session_ctx session_ctx, uint8_t is_update) +{ + dpaa_sec_session *sess; + struct dpaa_sec_raw_dp_ctx *dp_ctx; + RTE_SET_USED(qp_id); + + if (!is_update) { + memset(raw_dp_ctx, 0, sizeof(*raw_dp_ctx)); + raw_dp_ctx->qp_data = dev->data->queue_pairs[qp_id]; + } + + if (sess_type == RTE_CRYPTO_OP_SECURITY_SESSION) + sess = (dpaa_sec_session *)get_sec_session_private_data( + session_ctx.sec_sess); + else if (sess_type == RTE_CRYPTO_OP_WITH_SESSION) + sess = (dpaa_sec_session *)get_sym_session_private_data( + session_ctx.crypto_sess, dpaa_cryptodev_driver_id); + else + return -ENOTSUP; + raw_dp_ctx->dequeue_burst = dpaa_sec_raw_dequeue_burst; + raw_dp_ctx->dequeue = dpaa_sec_raw_dequeue; + raw_dp_ctx->dequeue_done = dpaa_sec_raw_dequeue_done; + raw_dp_ctx->enqueue_burst = dpaa_sec_raw_enqueue_burst; + raw_dp_ctx->enqueue = dpaa_sec_raw_enqueue; + raw_dp_ctx->enqueue_done = dpaa_sec_raw_enqueue_done; + + if (sess->ctxt == DPAA_SEC_CIPHER) + sess->build_raw_dp_fd = build_dpaa_raw_dp_cipher_fd; + else if (sess->ctxt == DPAA_SEC_AUTH) + sess->build_raw_dp_fd = build_dpaa_raw_dp_auth_fd; + else + return -ENOTSUP; + dp_ctx = (struct dpaa_sec_raw_dp_ctx *)raw_dp_ctx->drv_ctx_data; + dp_ctx->session = sess; + + return 0; +} + +int +dpaa_sec_get_dp_ctx_size(__rte_unused struct rte_cryptodev *dev) +{ + return sizeof(struct dpaa_sec_raw_dp_ctx); +} diff --git a/drivers/crypto/dpaa_sec/meson.build b/drivers/crypto/dpaa_sec/meson.build index 44fd60e5ae..f87ad6c7e7 100644 --- a/drivers/crypto/dpaa_sec/meson.build +++ b/drivers/crypto/dpaa_sec/meson.build @@ -1,5 +1,5 @@ # SPDX-License-Identifier: BSD-3-Clause -# Copyright 2018 NXP +# Copyright 2018-2021 NXP if not is_linux build = false @@ -7,7 +7,7 @@ if not is_linux endif deps += ['bus_dpaa', 'mempool_dpaa', 'security'] -sources = files('dpaa_sec.c') +sources = files('dpaa_sec.c', 'dpaa_sec_raw_dp.c') includes += include_directories('../../bus/dpaa/include') includes += include_directories('../../common/dpaax') From patchwork Sun Oct 17 16:16:48 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 101922 X-Patchwork-Delegate: gakhil@marvell.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 8257BA0547; Sun, 17 Oct 2021 18:22:52 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id CA50340DF7; Sun, 17 Oct 2021 18:21:53 +0200 (CEST) Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-eopbgr60081.outbound.protection.outlook.com [40.107.6.81]) by mails.dpdk.org (Postfix) with ESMTP id 12C914114D for ; Sun, 17 Oct 2021 18:21:51 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BPuep8zf3F+7XHw7ftkCZIBmZSvS1sJrRJCGdEqEFmK9dwxnQA7eSavjyjcK5P4nZZ6DiVhpO1k+fUCt2EaaJL2BKQVP5VSF9Uue/mTTOS1letOEtnNuYkwf4HgT2diRqIk1W7EXcEbqEyY9wFum4gHcDjrc+qbdCqZHWT20V8McIEo4TAKMy7cv5Eb/5ts3TBwMR4cuAcQGW11/JUU+9nH2PIbTgWtTglFEhrcmRK0CH+YoWI0VDPrj8NR29Ck746B0DnwBMPl0vPgIEyreNL+HN9JF7+FNi9RgvMM2fe/UqzIDz+jlfv0S5vs4Hy/UyHZNYaXy4PDUqlO3A6G7Dg== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=gZF9HvvJlmtT/G/a1as9QOFYMcXCFjtfKaHS1PryomE=; b=WYdLGpHC33UfwtnJKwe4OGW4BnMt7HfNTGlR0h1tqrk9+y29sx2E5bi9VDbMtxYm8TuemE/etdvPn3UbAbYDcum2P2L0JPif9CDSa23s7UNWrzzc5PVSCAd7YdjhpjwiF5NSM28I/RK8WNe42KUT2GCsgiYIAsHMgwLeCJUgnbVjyhgwK2DHeLG6ddvflz9bePtFd47vrUq5TaKRhfHI4K8FBSAbB0xHqmoDYmplZ5077MncTzmcNJO5ruttVf8FwSeCZS790SUA/1+hhlcGFKFQwuENhuiEY2g4kzYATcPXynOlVBFoh8Vkv1fCE+ZOVGiDtw2G9fuySgeOZ07fxQ== 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=gZF9HvvJlmtT/G/a1as9QOFYMcXCFjtfKaHS1PryomE=; b=lK20fpBexSWIRbE2Q/kqD/wSjT0udZJdWdVD02KlabYl6jNgu3XaChzxZaq2SOH++Usw3izjMcYHIRht96bHo7xJnNKnrmJNBKt6IHwjSqUjkqCyrpXPAcPYl6mOJ5bAxT00WDazmgemgVwsMb7WWVjTiF/0zdeMxLjy8J41WHg= Authentication-Results: dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; dmarc=none action=none header.from=nxp.com; Received: from DU2PR04MB8630.eurprd04.prod.outlook.com (2603:10a6:10:2dd::15) by DU2PR04MB8615.eurprd04.prod.outlook.com (2603:10a6:10:2da::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.15; Sun, 17 Oct 2021 16:21:50 +0000 Received: from DU2PR04MB8630.eurprd04.prod.outlook.com ([fe80::945d:e362:712d:1b80]) by DU2PR04MB8630.eurprd04.prod.outlook.com ([fe80::945d:e362:712d:1b80%3]) with mapi id 15.20.4608.018; Sun, 17 Oct 2021 16:21:50 +0000 From: Hemant Agrawal To: dev@dpdk.org, gakhil@marvell.com Cc: konstantin.ananyev@intel.com, roy.fan.zhang@intel.com, Gagandeep Singh Date: Sun, 17 Oct 2021 21:46:48 +0530 Message-Id: <20211017161651.9220-13-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211017161651.9220-1-hemant.agrawal@nxp.com> References: <20211013190032.2308-1-hemant.agrawal@nxp.com> <20211017161651.9220-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SI2PR01CA0053.apcprd01.prod.exchangelabs.com (2603:1096:4:193::7) To DU2PR04MB8630.eurprd04.prod.outlook.com (2603:10a6:10:2dd::15) MIME-Version: 1.0 Received: from dpdk-xeon.ap.freescale.net (92.120.0.67) by SI2PR01CA0053.apcprd01.prod.exchangelabs.com (2603:1096:4:193::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.15 via Frontend Transport; Sun, 17 Oct 2021 16:21:48 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f620b167-c428-44af-b51b-08d9918a392c X-MS-TrafficTypeDiagnostic: DU2PR04MB8615: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1443; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 5djg6JGdEUaVKgbRYEdI2B4sT8YaUE72X2smH9T3TD9JTXgTMBFKb2ht5eL6TsZWCCiDshRgZYtlEhIMpnttuF6Rv7bhJ165eGfWmYo3sJoGMzrUtIP4Fi8bJsrp9YjQQ8JyhqaKNVTFQ1lvzOner0LmQCkqq4xCW1LN27aB9Xyljra7WcZHI7yrl5FmpVHHoXt9AG9SaWml0pAJxQysMgDdNS8zCZRgqGefSifQsGVw3TIwVfCGQ91PTIEo75MxWcbfvB5D+gscgQL1MXyqaXbnGutq1IDd3fecwIqjOz0J8c2ynQWtKzjj2+n85HqB93uCykBHjkHVh6z+akD3rVmhlydFmONvlujjjBluijZJ6g54HNdNDojW03tgwZcLib0VQPlebxzymYWEWPRiU4m+olRd6Uf6COh8nW6x57AK7ZQRPl83AZ/a4JbQ55pXLCoEnI3ctLLfdKHgZMFOg2Kt7iU9Bh1ibaByN+wnGdaQpSUb6Gs4C+TerIdG4Ds5PZLX/l1thwUzEHeNBlZU9hbVIk3lkPzbb362VnhAjRkCjJFFSCWXNkc3bTemLk07kz7CrYTjszZk4PFoQ78GRrbNix/7gOoc0dBSYbxdgrpK3o5+U4vfBTEtxy3GhYzsNGh0qQFX1KCoX/pf1qZQnn8RBdJJztmeBMO0c9SuTDJe0K3u9ON/QFn4tn7B9C7qGFe9avaaoCPi45WaWQxW2w== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DU2PR04MB8630.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(6486002)(66476007)(8936002)(66556008)(66946007)(86362001)(52116002)(36756003)(5660300002)(38350700002)(8676002)(38100700002)(508600001)(6506007)(26005)(44832011)(4326008)(6512007)(2616005)(83380400001)(1076003)(2906002)(316002)(186003)(956004); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 46wajNb/vTC7ZigjNjP54QUrfZXRrTGEBkowsmDJZLVwR4Xlqz/hYnGUgx1tovdY09BOVsYZyDNjkn5GjR7AGyjGZB3CedJdBiQfrBvVUMSoGZLLyaqg4F2dliexmL19ZmtedelLp88RYsU3rB4zTDzU5+bHKw1UZmvO+IXkEsAuA/cAomqDQd4QS7NDGvpoNQNsHnHyDbQd08DfUdB28MfEjCH5fWF3FlL3PA0FQc233ZGqn49LtNJ/UmHOqFv1gcv9UDWUv1y33S8E8mrOoTFwCCd0YzH6T4VHOsTVwuvQRUfxjqgshSjISDd7CGPE1mJMPHyT5wiEx0yGmNwfFbXPoidQh4PrijOxvkOnWXxXnpfG5waLqJrV69Ej5Te1dk6+kT9ZO9rPRSAu2LWWu0rZBDJDBZARE9x1OtcVwhR+D0nBKyPHx7vx4y02LSibB+03QreQeMDbyPCQ/CGtM1p1LDbLCii/1zoW+5dn6avzwvY9lqbkEqNuMKch6nlROVWrg74va4vkh2BXEYRjhIbIHfbqAZ0uXieu2uONvXoovNM1WlrLHcNejO9sOrIluJUPOQ0CgO6zS9pveLrJyAN2U8Pyvzub9JBoT7DntmLjPQQR7qDe4l7dk/AIXcJx581vghBD3Rgkjf5Og91JzNel/qjzpoEuHEUQDU03x3siHvh7lILHUYNQ/Jy2yoEa2wfEPDaGo4QsM7WXFdr4r3GCtJDcC/PIMefLIl4OZKFL7ugKkaTut/r4uGnaZBkaZ7vEGISlxV6+Z649R7oYY8EoIhhlLiahcXVqwsNx6bftkqZrfZcdyjZjnc2cwWhLCTErstS/pvrWdlOvGrOZ/r7u4RJbVp0F4hG4KYvs7XKBsvlH2bHjIn/RiArCrIHRsggYOUQtjF9KUc6HzABMgZuDApZvPUgWluPO/VqKEyIR1Ff4gZeaoiOTaJ7AbRKJ4Z1F6EL8Aet5oHZrk30PsTnpl1VJSqOzVnk2U+/q5kCf7Jqwl+uxMguc2NcM4brzz+NB+8bYmx8aOt6mPzHDkM6g6JohBTWiG63VkWHsIKci/yvGjdI+wSNkcE31jYfO2McXWnSkpkCWlfvSOArT+deYxTL1VVRSDkhsZnNDXPTjjeQwyZ9z3aMMK/2wEN3Ta+pl1PDBkRJ7ukOOsjgCDUUbGdZNqCVmS8tJUN25Lv+35iURtqS4H+An0bZumdHUcM4jVAy6THKVyhBkebXVMNx0b9gYAXCTKN/G4z0TrvCNCrZ97MFq1zSntvlAvQ0/mL0LnNutyBVBZ2Q/qsKsGdJosNy0vrxw1vQ5+YTrW28YXJqGNrlJWHsT53GNWCjL X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: f620b167-c428-44af-b51b-08d9918a392c X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2021 16:21:50.2233 (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: pZpD0rRJaOpMey5gB2f4mS7lytrMFM/AwiAumVLlD6IJwGhXg8a2k1k25Z4bUROj/pfS9OJbNNAXSIE8PYMmSg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8615 Subject: [dpdk-dev] [PATCH v5 12/15] crypto/dpaa_sec: support authonly and chain with raw APIs 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 Sender: "dev" From: Gagandeep Singh This patch improves the raw vector support in dpaa_sec driver for authonly and chain usecase. Signed-off-by: Gagandeep Singh --- drivers/crypto/dpaa_sec/dpaa_sec.h | 3 +- drivers/crypto/dpaa_sec/dpaa_sec_raw_dp.c | 296 +++++++++++++++++++++- 2 files changed, 287 insertions(+), 12 deletions(-) diff --git a/drivers/crypto/dpaa_sec/dpaa_sec.h b/drivers/crypto/dpaa_sec/dpaa_sec.h index 77288cd1eb..7890687828 100644 --- a/drivers/crypto/dpaa_sec/dpaa_sec.h +++ b/drivers/crypto/dpaa_sec/dpaa_sec.h @@ -135,7 +135,8 @@ typedef struct dpaa_sec_job* (*dpaa_sec_build_raw_dp_fd_t)(uint8_t *drv_ctx, struct rte_crypto_va_iova_ptr *digest, struct rte_crypto_va_iova_ptr *auth_iv, union rte_crypto_sym_ofs ofs, - void *userdata); + void *userdata, + struct qm_fd *fd); typedef struct dpaa_sec_session_entry { struct sec_cdb cdb; /**< cmd block associated with qp */ diff --git a/drivers/crypto/dpaa_sec/dpaa_sec_raw_dp.c b/drivers/crypto/dpaa_sec/dpaa_sec_raw_dp.c index 7376da4cbc..03ce21e53f 100644 --- a/drivers/crypto/dpaa_sec/dpaa_sec_raw_dp.c +++ b/drivers/crypto/dpaa_sec/dpaa_sec_raw_dp.c @@ -12,6 +12,7 @@ #endif /* RTA header files */ +#include #include #include @@ -26,6 +27,17 @@ struct dpaa_sec_raw_dp_ctx { uint16_t cached_dequeue; }; +static inline int +is_encode(dpaa_sec_session *ses) +{ + return ses->dir == DIR_ENC; +} + +static inline int is_decode(dpaa_sec_session *ses) +{ + return ses->dir == DIR_DEC; +} + static __rte_always_inline int dpaa_sec_raw_enqueue_done(void *qp_data, uint8_t *drv_ctx, uint32_t n) { @@ -82,18 +94,276 @@ build_dpaa_raw_dp_auth_fd(uint8_t *drv_ctx, struct rte_crypto_va_iova_ptr *digest, struct rte_crypto_va_iova_ptr *auth_iv, union rte_crypto_sym_ofs ofs, - void *userdata) + void *userdata, + struct qm_fd *fd) { - RTE_SET_USED(drv_ctx); - RTE_SET_USED(sgl); RTE_SET_USED(dest_sgl); RTE_SET_USED(iv); - RTE_SET_USED(digest); RTE_SET_USED(auth_iv); - RTE_SET_USED(ofs); - RTE_SET_USED(userdata); + RTE_SET_USED(fd); - return NULL; + dpaa_sec_session *ses = + ((struct dpaa_sec_raw_dp_ctx *)drv_ctx)->session; + struct dpaa_sec_job *cf; + struct dpaa_sec_op_ctx *ctx; + struct qm_sg_entry *sg, *out_sg, *in_sg; + phys_addr_t start_addr; + uint8_t *old_digest, extra_segs; + int data_len, data_offset, total_len = 0; + unsigned int i; + + for (i = 0; i < sgl->num; i++) + total_len += sgl->vec[i].len; + + data_len = total_len - ofs.ofs.auth.head - ofs.ofs.auth.tail; + data_offset = ofs.ofs.auth.head; + + /* Support only length in bits for SNOW3G and ZUC */ + + if (is_decode(ses)) + extra_segs = 3; + else + extra_segs = 2; + + if (sgl->num > MAX_SG_ENTRIES) { + DPAA_SEC_DP_ERR("Auth: Max sec segs supported is %d", + MAX_SG_ENTRIES); + return NULL; + } + ctx = dpaa_sec_alloc_raw_ctx(ses, sgl->num * 2 + extra_segs); + if (!ctx) + return NULL; + + cf = &ctx->job; + ctx->userdata = (void *)userdata; + old_digest = ctx->digest; + + /* output */ + out_sg = &cf->sg[0]; + qm_sg_entry_set64(out_sg, digest->iova); + out_sg->length = ses->digest_length; + cpu_to_hw_sg(out_sg); + + /* input */ + in_sg = &cf->sg[1]; + /* need to extend the input to a compound frame */ + in_sg->extension = 1; + in_sg->final = 1; + in_sg->length = data_len; + qm_sg_entry_set64(in_sg, rte_dpaa_mem_vtop(&cf->sg[2])); + + /* 1st seg */ + sg = in_sg + 1; + + if (ses->iv.length) { + uint8_t *iv_ptr; + + iv_ptr = rte_crypto_op_ctod_offset(userdata, uint8_t *, + ses->iv.offset); + + if (ses->auth_alg == RTE_CRYPTO_AUTH_SNOW3G_UIA2) { + iv_ptr = conv_to_snow_f9_iv(iv_ptr); + sg->length = 12; + } else if (ses->auth_alg == RTE_CRYPTO_AUTH_ZUC_EIA3) { + iv_ptr = conv_to_zuc_eia_iv(iv_ptr); + sg->length = 8; + } else { + sg->length = ses->iv.length; + } + qm_sg_entry_set64(sg, rte_dpaa_mem_vtop(iv_ptr)); + in_sg->length += sg->length; + cpu_to_hw_sg(sg); + sg++; + } + + qm_sg_entry_set64(sg, sgl->vec[0].iova); + sg->offset = data_offset; + + if (data_len <= (int)(sgl->vec[0].len - data_offset)) { + sg->length = data_len; + } else { + sg->length = sgl->vec[0].len - data_offset; + + /* remaining i/p segs */ + for (i = 1; i < sgl->num; i++) { + cpu_to_hw_sg(sg); + sg++; + qm_sg_entry_set64(sg, sgl->vec[i].iova); + if (data_len > (int)sgl->vec[i].len) + sg->length = sgl->vec[0].len; + else + sg->length = data_len; + + data_len = data_len - sg->length; + if (data_len < 1) + break; + } + } + + if (is_decode(ses)) { + /* Digest verification case */ + cpu_to_hw_sg(sg); + sg++; + rte_memcpy(old_digest, digest->va, + ses->digest_length); + start_addr = rte_dpaa_mem_vtop(old_digest); + qm_sg_entry_set64(sg, start_addr); + sg->length = ses->digest_length; + in_sg->length += ses->digest_length; + } + sg->final = 1; + cpu_to_hw_sg(sg); + cpu_to_hw_sg(in_sg); + + return cf; +} + +static inline struct dpaa_sec_job * +build_dpaa_raw_dp_chain_fd(uint8_t *drv_ctx, + struct rte_crypto_sgl *sgl, + struct rte_crypto_sgl *dest_sgl, + struct rte_crypto_va_iova_ptr *iv, + struct rte_crypto_va_iova_ptr *digest, + struct rte_crypto_va_iova_ptr *auth_iv, + union rte_crypto_sym_ofs ofs, + void *userdata, + struct qm_fd *fd) +{ + RTE_SET_USED(auth_iv); + + dpaa_sec_session *ses = + ((struct dpaa_sec_raw_dp_ctx *)drv_ctx)->session; + struct dpaa_sec_job *cf; + struct dpaa_sec_op_ctx *ctx; + struct qm_sg_entry *sg, *out_sg, *in_sg; + uint8_t *IV_ptr = iv->va; + unsigned int i; + uint16_t auth_hdr_len = ofs.ofs.cipher.head - + ofs.ofs.auth.head; + uint16_t auth_tail_len = ofs.ofs.auth.tail; + uint32_t auth_only_len = (auth_tail_len << 16) | auth_hdr_len; + int data_len = 0, auth_len = 0, cipher_len = 0; + + for (i = 0; i < sgl->num; i++) + data_len += sgl->vec[i].len; + + cipher_len = data_len - ofs.ofs.cipher.head - ofs.ofs.cipher.tail; + auth_len = data_len - ofs.ofs.auth.head - ofs.ofs.auth.tail; + + if (sgl->num > MAX_SG_ENTRIES) { + DPAA_SEC_DP_ERR("Cipher-Auth: Max sec segs supported is %d", + MAX_SG_ENTRIES); + return NULL; + } + + ctx = dpaa_sec_alloc_raw_ctx(ses, sgl->num * 2 + 4); + if (!ctx) + return NULL; + + cf = &ctx->job; + ctx->userdata = (void *)userdata; + + rte_prefetch0(cf->sg); + + /* output */ + out_sg = &cf->sg[0]; + out_sg->extension = 1; + if (is_encode(ses)) + out_sg->length = cipher_len + ses->digest_length; + else + out_sg->length = cipher_len; + + /* output sg entries */ + sg = &cf->sg[2]; + qm_sg_entry_set64(out_sg, rte_dpaa_mem_vtop(sg)); + cpu_to_hw_sg(out_sg); + + /* 1st seg */ + if (dest_sgl) { + qm_sg_entry_set64(sg, dest_sgl->vec[0].iova); + sg->length = dest_sgl->vec[0].len - ofs.ofs.cipher.head; + sg->offset = ofs.ofs.cipher.head; + + /* Successive segs */ + for (i = 1; i < dest_sgl->num; i++) { + cpu_to_hw_sg(sg); + sg++; + qm_sg_entry_set64(sg, dest_sgl->vec[i].iova); + sg->length = dest_sgl->vec[i].len; + } + } else { + qm_sg_entry_set64(sg, sgl->vec[0].iova); + sg->length = sgl->vec[0].len - ofs.ofs.cipher.head; + sg->offset = ofs.ofs.cipher.head; + + /* Successive segs */ + for (i = 1; i < sgl->num; i++) { + cpu_to_hw_sg(sg); + sg++; + qm_sg_entry_set64(sg, sgl->vec[i].iova); + sg->length = sgl->vec[i].len; + } + } + + if (is_encode(ses)) { + cpu_to_hw_sg(sg); + /* set auth output */ + sg++; + qm_sg_entry_set64(sg, digest->iova); + sg->length = ses->digest_length; + } + sg->final = 1; + cpu_to_hw_sg(sg); + + /* input */ + in_sg = &cf->sg[1]; + in_sg->extension = 1; + in_sg->final = 1; + if (is_encode(ses)) + in_sg->length = ses->iv.length + auth_len; + else + in_sg->length = ses->iv.length + auth_len + + ses->digest_length; + + /* input sg entries */ + sg++; + qm_sg_entry_set64(in_sg, rte_dpaa_mem_vtop(sg)); + cpu_to_hw_sg(in_sg); + + /* 1st seg IV */ + qm_sg_entry_set64(sg, rte_dpaa_mem_vtop(IV_ptr)); + sg->length = ses->iv.length; + cpu_to_hw_sg(sg); + + /* 2 seg */ + sg++; + qm_sg_entry_set64(sg, sgl->vec[0].iova); + sg->length = sgl->vec[0].len - ofs.ofs.auth.head; + sg->offset = ofs.ofs.auth.head; + + /* Successive segs */ + for (i = 1; i < sgl->num; i++) { + cpu_to_hw_sg(sg); + sg++; + qm_sg_entry_set64(sg, sgl->vec[i].iova); + sg->length = sgl->vec[i].len; + } + + if (is_decode(ses)) { + cpu_to_hw_sg(sg); + sg++; + memcpy(ctx->digest, digest->va, + ses->digest_length); + qm_sg_entry_set64(sg, rte_dpaa_mem_vtop(ctx->digest)); + sg->length = ses->digest_length; + } + sg->final = 1; + cpu_to_hw_sg(sg); + + if (auth_only_len) + fd->cmd = 0x80000000 | auth_only_len; + + return cf; } static struct dpaa_sec_job * @@ -104,10 +374,13 @@ build_dpaa_raw_dp_cipher_fd(uint8_t *drv_ctx, struct rte_crypto_va_iova_ptr *digest, struct rte_crypto_va_iova_ptr *auth_iv, union rte_crypto_sym_ofs ofs, - void *userdata) + void *userdata, + struct qm_fd *fd) { RTE_SET_USED(digest); RTE_SET_USED(auth_iv); + RTE_SET_USED(fd); + dpaa_sec_session *ses = ((struct dpaa_sec_raw_dp_ctx *)drv_ctx)->session; struct dpaa_sec_job *cf; @@ -264,15 +537,14 @@ dpaa_sec_raw_enqueue_burst(void *qp_data, uint8_t *drv_ctx, &vec->digest[loop], &vec->auth_iv[loop], ofs, - user_data[loop]); + user_data[loop], + fd); if (!cf) { DPAA_SEC_ERR("error: Improper packet contents" " for crypto operation"); goto skip_tx; } inq[loop] = ses->inq[rte_lcore_id() % MAX_DPAA_CORES]; - fd->opaque_addr = 0; - fd->cmd = 0; qm_fd_addr_set64(fd, rte_dpaa_mem_vtop(cf->sg)); fd->_format1 = qm_fd_compound; fd->length29 = 2 * sizeof(struct qm_sg_entry); @@ -470,6 +742,8 @@ dpaa_sec_configure_raw_dp_ctx(struct rte_cryptodev *dev, uint16_t qp_id, sess->build_raw_dp_fd = build_dpaa_raw_dp_cipher_fd; else if (sess->ctxt == DPAA_SEC_AUTH) sess->build_raw_dp_fd = build_dpaa_raw_dp_auth_fd; + else if (sess->ctxt == DPAA_SEC_CIPHER_HASH) + sess->build_raw_dp_fd = build_dpaa_raw_dp_chain_fd; else return -ENOTSUP; dp_ctx = (struct dpaa_sec_raw_dp_ctx *)raw_dp_ctx->drv_ctx_data; From patchwork Sun Oct 17 16:16:49 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 101923 X-Patchwork-Delegate: gakhil@marvell.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id C4207A0547; Sun, 17 Oct 2021 18:22:58 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E21DB4115F; Sun, 17 Oct 2021 18:21:54 +0200 (CEST) Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-eopbgr20050.outbound.protection.outlook.com [40.107.2.50]) by mails.dpdk.org (Postfix) with ESMTP id 2F5074115C for ; Sun, 17 Oct 2021 18:21:53 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ToYwDYIEZtPDS1OLT8a6+7lAix72XASPtliwk3etCGRuArt2YFMH8Y3LUwIDNh3GTd3BFPu+eqmvdZhCBJvLRfWsKIVU6DLMOaS20OrSKwY5Y+eD7iG7r2WNqiunfaaUNxrwpJA8JoiMG1etNEFHOpavB9XXlWnLVpcPHkORClzeRXM9YJF+O0I9Xy7Vi2mif/CUKLJHcLzh7XY/1o10tX2FDdhbG7r8deH1pYmXg+j5fAbQUu6/iTbMfNAdWqpMVvl7kJSUN4FDiCzZKbEmdD/Bj2s3xKZEzWzojHTfvUs0ZwOzIhJfXrHjaqOssXoHuUSb4EQbcAoymm2SL68RPw== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=fRB07/gO/99NUNz+t4hLwZuh1YkVBu8sAP7e1JJLKfM=; b=fKGle9r+62o28erbKGDIBcHELjYFv0NKQ0LNcizGwiBkXRS4jN3HhASD1KK3raBuoLdUx2+09NHlq2KHOHrer41qUUZ8QLjtIvgkIIw3bvRmFoi1lYOieGdH7lAe9XLLWrT3HDYE8Ky4QWUgcDAUS9OjBRfZaOMb4SYEGFMoKS++Cd6iTA16e0gHY373uROsGRIAzXozZ/0Mrmxdthc7SEgs4xehbAgO2E1QHNdrLiTJyQWZZ8N1DSnnMZoxiuO/J9+aJQlH1a+sMW8bXBGo6RuBrKfbNm2UEdYVTeHOY/GqQnd7Y6BVy8d10AwXk5hg2295R4vpYOmB12BCehPqmw== 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=fRB07/gO/99NUNz+t4hLwZuh1YkVBu8sAP7e1JJLKfM=; b=f5GyR6iKCzR0seXYTTBCwti7jYHfIU/VkDci1SxnuimJhcCoJh7aPK4eh55wiGaDv8yPF7X0ARPQoZpS61jrJ6lJcenMZuScNJVEZJt8DAXvnHGHNXe4GSR/PI2X18YsA6xH1rMpElf2zJC/8dvBah4j9JVH4f9U1N2XyJjZnq8= Authentication-Results: dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; dmarc=none action=none header.from=nxp.com; Received: from DU2PR04MB8630.eurprd04.prod.outlook.com (2603:10a6:10:2dd::15) by DU2PR04MB8615.eurprd04.prod.outlook.com (2603:10a6:10:2da::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.15; Sun, 17 Oct 2021 16:21:52 +0000 Received: from DU2PR04MB8630.eurprd04.prod.outlook.com ([fe80::945d:e362:712d:1b80]) by DU2PR04MB8630.eurprd04.prod.outlook.com ([fe80::945d:e362:712d:1b80%3]) with mapi id 15.20.4608.018; Sun, 17 Oct 2021 16:21:52 +0000 From: Hemant Agrawal To: dev@dpdk.org, gakhil@marvell.com Cc: konstantin.ananyev@intel.com, roy.fan.zhang@intel.com, Gagandeep Singh Date: Sun, 17 Oct 2021 21:46:49 +0530 Message-Id: <20211017161651.9220-14-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211017161651.9220-1-hemant.agrawal@nxp.com> References: <20211013190032.2308-1-hemant.agrawal@nxp.com> <20211017161651.9220-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SI2PR01CA0053.apcprd01.prod.exchangelabs.com (2603:1096:4:193::7) To DU2PR04MB8630.eurprd04.prod.outlook.com (2603:10a6:10:2dd::15) MIME-Version: 1.0 Received: from dpdk-xeon.ap.freescale.net (92.120.0.67) by SI2PR01CA0053.apcprd01.prod.exchangelabs.com (2603:1096:4:193::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.15 via Frontend Transport; Sun, 17 Oct 2021 16:21:50 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c1bf1187-60eb-4729-256d-08d9918a3a7c X-MS-TrafficTypeDiagnostic: DU2PR04MB8615: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:169; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: THXHYpR9mqLr76n0Zl6Ipol6BG1OQw503z7poVvtNyNUft2CO1TOnTsRwXaPopPTcsnzN7/32NJFQC5nADbIukevnvlEduVYpBrzMXYr64JOJQjt7SJKxT+J0YzSwVlyo6R4Yrohbrq1ZoV4C4Lk3ZrMuNcdtJLsKSp1tYEoI2aUXX4tqvQ/VvzwkLcz3w3xEVwTPu3JWXwIMtoOpVNzKdFRzZOVEq0VxxGBKwSTu4RJX/ucptPEob2x7iRVxHIYDz3hZhks5X6UgfmAey9k53cwFQFn3XLfKcCopdMLxzcdfMJqk8ZwBCiQO7/16ypQcYRnjHJnjF64x1npVfO+25pk7vKPJv0yqpJxpqWBPVX7pvAX9c/wse4qj9vfiCgPtwMiMzZjGuasJQZtanh4eFQppZNRMreiIAkb5pafGI1rCfuEDkrIBz66LaiTP5fqbXeWZ8c7jg+CRSnpP38/uaA4FG970HA9dLPidjvmJ28+LrSLKMpk7FKSiAW9RqG+qya6pMPojvEWJhfdDmW5mYv7yDJozX5hwUH6ZjKJrZuo8XRSW3wh/xFqiLwl4KR8jBUWOwpR7lQnXQrzFTsoRrGtgcsgAkn7LfyMc5npi/Lc/lwyA9crNSj/PyQJVQ3v4nJxC2cdL/+fC7JbJPcGRv8nqscWMJ2SySgqqqnkRpidlCHKtd0QxyNimQwhPRcalk8GAYD0Zct15segGlezqQ== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DU2PR04MB8630.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(6486002)(66476007)(8936002)(66556008)(66946007)(86362001)(52116002)(36756003)(5660300002)(38350700002)(8676002)(38100700002)(508600001)(6506007)(26005)(44832011)(4326008)(6512007)(2616005)(83380400001)(1076003)(2906002)(316002)(186003)(956004); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: zsP/FG7reAlMvEcYtChVQH4EmGC+r0rVN7yebvDXgxmtyn95RrixNVRUuaVdJCYx6BvF8sA7LU5cpu0CizOr3hbPR2zPJ8PjA1H3YztCIh5hC7vS54aQwsDnz6FWzS1oaks1XoIZX4TFUne7YxZ0lzu44SGuP6bKIutOXIzLLuu0sM6aaRQrAI5MagdhVg2VRddjv/JBKAJ9x7BTbGjWybrNGjCuelRnMs1K0yRA+shF0LPH/7Fi7BFDn9QM+9OIOUU+ZmuT/BExYsYOZf5kB7B5Ubmq2vi48bGK8khbjDWQXAqk+dveAxRFOpoFVd1znaJXtCMOiOEbCtF3ywwrSHeojvC8NQXy6XUgPafZT7vlXsOUy2awxExPqaIHbw7DExk4ETMHN8EDH5kelQEg5ZK9gsjVM0dHxh6neg24ZnIoIMkbmdHKxDQcOHLhmKgN2RC3cwOolFhSUTmoV96aIs6Xo10EbADYt/SWBf3bPQo8+WZxB7UFBEHOYemERG9bIz1QPCFrovlfM8w7hpyUJChzsQlFWSL5S0bqF6EYW5iCoNpDEVqw3IXuLLr7l8usGw9O8HigLz04DkYBQh0Zj1KQGdlIDBoLyicRxD7ar1bDc1HNKcvE72i6VA4/0PMXOrZI+6P3r9reSUqQvJ1Ltisz8jPysjg5gK5ABQHFGS3DPKCCqHZtT+2aYH/3Y5ON4quJcDOdQSk6gk1M4sQsI6J11gOii1lhF7zMlnPYnWF7KddPPzrwFVEVOWvXz4QlZCjxk0gIqKPoKEiEIFvaIjZ3R+Ik228b9xllcKnFQ00JXUeeQMxpaoocSfH4oU752K8qoOpi8YYt3W5/W4647A8PLHHm6AHe8XJfx/mSUGihgiPtr90gl1NSw9zIbYXYxu95DJ6pyXD/0x32+luP8aX2OpLaTda/BI7In53RQ921umZ+88aXgtCEdO3ZpY0PtDWXipYVMTSpgelNM2u4ovRJO0LKJfrerSP9e9kl4UdcGjo4fEvnWInTqysRUJkLSfefLua21kPuqr3XNsBfhQ0jPJMQtZvFEs+/VxFN/q2G5YwGFcUOocB1mlewOl/zsJObKg1rim1ygQpofWgtcGVR3uVkIU9Bl4mkxhBad2mjHkraq//ffTDI1Jf4y9TneiG40q2Lza15HbIg8Npvelb7jB7ojreE0oR0oDf8GrFCkiBD4vZkpps5jMGVRtIRMovX3Jhty7VvQBwlBPXQ+8bG/Tkx1MRrCl+G+Qs+9jCQ4hB4iHTlN7Guz003j7+fOPaxpMtgft1ztsrUAwQTHyuNamUWNg7qJQ6HW3U0FW5qP55ioymqJrbrDCH/sxOe X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: c1bf1187-60eb-4729-256d-08d9918a3a7c X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2021 16:21:52.4296 (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: EdCk96z3vr8MV7/QQ4MfKG+p22INfSezRyGRxgIaweDvewEpdXF5nhBXUtvsnPYZ/eBTt9qLfjWZhA9hgaGiJg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8615 Subject: [dpdk-dev] [PATCH v5 13/15] crypto/dpaa_sec: support AEAD and proto with raw APIs 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 Sender: "dev" From: Gagandeep Singh This add support for AEAD and proto offload with raw APIs for dpaa_sec driver. Signed-off-by: Gagandeep Singh --- drivers/crypto/dpaa_sec/dpaa_sec_raw_dp.c | 293 ++++++++++++++++++++++ 1 file changed, 293 insertions(+) diff --git a/drivers/crypto/dpaa_sec/dpaa_sec_raw_dp.c b/drivers/crypto/dpaa_sec/dpaa_sec_raw_dp.c index 03ce21e53f..522685f8cf 100644 --- a/drivers/crypto/dpaa_sec/dpaa_sec_raw_dp.c +++ b/drivers/crypto/dpaa_sec/dpaa_sec_raw_dp.c @@ -218,6 +218,163 @@ build_dpaa_raw_dp_auth_fd(uint8_t *drv_ctx, return cf; } +static inline struct dpaa_sec_job * +build_raw_cipher_auth_gcm_sg(uint8_t *drv_ctx, + struct rte_crypto_sgl *sgl, + struct rte_crypto_sgl *dest_sgl, + struct rte_crypto_va_iova_ptr *iv, + struct rte_crypto_va_iova_ptr *digest, + struct rte_crypto_va_iova_ptr *auth_iv, + union rte_crypto_sym_ofs ofs, + void *userdata, + struct qm_fd *fd) +{ + dpaa_sec_session *ses = + ((struct dpaa_sec_raw_dp_ctx *)drv_ctx)->session; + struct dpaa_sec_job *cf; + struct dpaa_sec_op_ctx *ctx; + struct qm_sg_entry *sg, *out_sg, *in_sg; + uint8_t extra_req_segs; + uint8_t *IV_ptr = iv->va; + int data_len = 0, aead_len = 0; + unsigned int i; + + for (i = 0; i < sgl->num; i++) + data_len += sgl->vec[i].len; + + extra_req_segs = 4; + aead_len = data_len - ofs.ofs.cipher.head - ofs.ofs.cipher.tail; + + if (ses->auth_only_len) + extra_req_segs++; + + if (sgl->num > MAX_SG_ENTRIES) { + DPAA_SEC_DP_ERR("AEAD: Max sec segs supported is %d", + MAX_SG_ENTRIES); + return NULL; + } + + ctx = dpaa_sec_alloc_raw_ctx(ses, sgl->num * 2 + extra_req_segs); + if (!ctx) + return NULL; + + cf = &ctx->job; + ctx->userdata = (void *)userdata; + + rte_prefetch0(cf->sg); + + /* output */ + out_sg = &cf->sg[0]; + out_sg->extension = 1; + if (is_encode(ses)) + out_sg->length = aead_len + ses->digest_length; + else + out_sg->length = aead_len; + + /* output sg entries */ + sg = &cf->sg[2]; + qm_sg_entry_set64(out_sg, rte_dpaa_mem_vtop(sg)); + cpu_to_hw_sg(out_sg); + + if (dest_sgl) { + /* 1st seg */ + qm_sg_entry_set64(sg, dest_sgl->vec[0].iova); + sg->length = dest_sgl->vec[0].len - ofs.ofs.cipher.head; + sg->offset = ofs.ofs.cipher.head; + + /* Successive segs */ + for (i = 1; i < dest_sgl->num; i++) { + cpu_to_hw_sg(sg); + sg++; + qm_sg_entry_set64(sg, dest_sgl->vec[i].iova); + sg->length = dest_sgl->vec[i].len; + } + } else { + /* 1st seg */ + qm_sg_entry_set64(sg, sgl->vec[0].iova); + sg->length = sgl->vec[0].len - ofs.ofs.cipher.head; + sg->offset = ofs.ofs.cipher.head; + + /* Successive segs */ + for (i = 1; i < sgl->num; i++) { + cpu_to_hw_sg(sg); + sg++; + qm_sg_entry_set64(sg, sgl->vec[i].iova); + sg->length = sgl->vec[i].len; + } + + } + + if (is_encode(ses)) { + cpu_to_hw_sg(sg); + /* set auth output */ + sg++; + qm_sg_entry_set64(sg, digest->iova); + sg->length = ses->digest_length; + } + sg->final = 1; + cpu_to_hw_sg(sg); + + /* input */ + in_sg = &cf->sg[1]; + in_sg->extension = 1; + in_sg->final = 1; + if (is_encode(ses)) + in_sg->length = ses->iv.length + aead_len + + ses->auth_only_len; + else + in_sg->length = ses->iv.length + aead_len + + ses->auth_only_len + ses->digest_length; + + /* input sg entries */ + sg++; + qm_sg_entry_set64(in_sg, rte_dpaa_mem_vtop(sg)); + cpu_to_hw_sg(in_sg); + + /* 1st seg IV */ + qm_sg_entry_set64(sg, rte_dpaa_mem_vtop(IV_ptr)); + sg->length = ses->iv.length; + cpu_to_hw_sg(sg); + + /* 2 seg auth only */ + if (ses->auth_only_len) { + sg++; + qm_sg_entry_set64(sg, auth_iv->iova); + sg->length = ses->auth_only_len; + cpu_to_hw_sg(sg); + } + + /* 3rd seg */ + sg++; + qm_sg_entry_set64(sg, sgl->vec[0].iova); + sg->length = sgl->vec[0].len - ofs.ofs.cipher.head; + sg->offset = ofs.ofs.cipher.head; + + /* Successive segs */ + for (i = 1; i < sgl->num; i++) { + cpu_to_hw_sg(sg); + sg++; + qm_sg_entry_set64(sg, sgl->vec[i].iova); + sg->length = sgl->vec[i].len; + } + + if (is_decode(ses)) { + cpu_to_hw_sg(sg); + sg++; + memcpy(ctx->digest, digest->va, + ses->digest_length); + qm_sg_entry_set64(sg, rte_dpaa_mem_vtop(ctx->digest)); + sg->length = ses->digest_length; + } + sg->final = 1; + cpu_to_hw_sg(sg); + + if (ses->auth_only_len) + fd->cmd = 0x80000000 | ses->auth_only_len; + + return cf; +} + static inline struct dpaa_sec_job * build_dpaa_raw_dp_chain_fd(uint8_t *drv_ctx, struct rte_crypto_sgl *sgl, @@ -484,6 +641,135 @@ build_dpaa_raw_dp_cipher_fd(uint8_t *drv_ctx, return cf; } +#ifdef RTE_LIBRTE_SECURITY +static inline struct dpaa_sec_job * +build_dpaa_raw_proto_sg(uint8_t *drv_ctx, + struct rte_crypto_sgl *sgl, + struct rte_crypto_sgl *dest_sgl, + struct rte_crypto_va_iova_ptr *iv, + struct rte_crypto_va_iova_ptr *digest, + struct rte_crypto_va_iova_ptr *auth_iv, + union rte_crypto_sym_ofs ofs, + void *userdata, + struct qm_fd *fd) +{ + RTE_SET_USED(iv); + RTE_SET_USED(digest); + RTE_SET_USED(auth_iv); + RTE_SET_USED(ofs); + + dpaa_sec_session *ses = + ((struct dpaa_sec_raw_dp_ctx *)drv_ctx)->session; + struct dpaa_sec_job *cf; + struct dpaa_sec_op_ctx *ctx; + struct qm_sg_entry *sg, *out_sg, *in_sg; + uint32_t in_len = 0, out_len = 0; + unsigned int i; + + if (sgl->num > MAX_SG_ENTRIES) { + DPAA_SEC_DP_ERR("Proto: Max sec segs supported is %d", + MAX_SG_ENTRIES); + return NULL; + } + + ctx = dpaa_sec_alloc_raw_ctx(ses, sgl->num * 2 + 4); + if (!ctx) + return NULL; + cf = &ctx->job; + ctx->userdata = (void *)userdata; + /* output */ + out_sg = &cf->sg[0]; + out_sg->extension = 1; + qm_sg_entry_set64(out_sg, rte_dpaa_mem_vtop(&cf->sg[2])); + + if (dest_sgl) { + /* 1st seg */ + sg = &cf->sg[2]; + qm_sg_entry_set64(sg, dest_sgl->vec[0].iova); + sg->offset = 0; + sg->length = dest_sgl->vec[0].len; + out_len += sg->length; + + for (i = 1; i < dest_sgl->num; i++) { + /* Successive segs */ + cpu_to_hw_sg(sg); + sg++; + qm_sg_entry_set64(sg, dest_sgl->vec[i].iova); + sg->offset = 0; + sg->length = dest_sgl->vec[i].len; + out_len += sg->length; + } + sg->length = dest_sgl->vec[i - 1].tot_len; + } else { + /* 1st seg */ + sg = &cf->sg[2]; + qm_sg_entry_set64(sg, sgl->vec[0].iova); + sg->offset = 0; + sg->length = sgl->vec[0].len; + out_len += sg->length; + + for (i = 1; i < sgl->num; i++) { + /* Successive segs */ + cpu_to_hw_sg(sg); + sg++; + qm_sg_entry_set64(sg, sgl->vec[i].iova); + sg->offset = 0; + sg->length = sgl->vec[i].len; + out_len += sg->length; + } + sg->length = sgl->vec[i - 1].tot_len; + + } + out_len += sg->length; + sg->final = 1; + cpu_to_hw_sg(sg); + + out_sg->length = out_len; + cpu_to_hw_sg(out_sg); + + /* input */ + in_sg = &cf->sg[1]; + in_sg->extension = 1; + in_sg->final = 1; + in_len = sgl->vec[0].len; + + sg++; + qm_sg_entry_set64(in_sg, rte_dpaa_mem_vtop(sg)); + + /* 1st seg */ + qm_sg_entry_set64(sg, sgl->vec[0].iova); + sg->length = sgl->vec[0].len; + sg->offset = 0; + + /* Successive segs */ + for (i = 1; i < sgl->num; i++) { + cpu_to_hw_sg(sg); + sg++; + qm_sg_entry_set64(sg, sgl->vec[i].iova); + sg->length = sgl->vec[i].len; + sg->offset = 0; + in_len += sg->length; + } + sg->final = 1; + cpu_to_hw_sg(sg); + + in_sg->length = in_len; + cpu_to_hw_sg(in_sg); + + if ((ses->ctxt == DPAA_SEC_PDCP) && ses->pdcp.hfn_ovd) { + fd->cmd = 0x80000000 | + *((uint32_t *)((uint8_t *)userdata + + ses->pdcp.hfn_ovd_offset)); + DPAA_SEC_DP_DEBUG("Per packet HFN: %x, ovd:%u\n", + *((uint32_t *)((uint8_t *)userdata + + ses->pdcp.hfn_ovd_offset)), + ses->pdcp.hfn_ovd); + } + + return cf; +} +#endif + static uint32_t dpaa_sec_raw_enqueue_burst(void *qp_data, uint8_t *drv_ctx, struct rte_crypto_sym_vec *vec, union rte_crypto_sym_ofs ofs, @@ -744,6 +1030,13 @@ dpaa_sec_configure_raw_dp_ctx(struct rte_cryptodev *dev, uint16_t qp_id, sess->build_raw_dp_fd = build_dpaa_raw_dp_auth_fd; else if (sess->ctxt == DPAA_SEC_CIPHER_HASH) sess->build_raw_dp_fd = build_dpaa_raw_dp_chain_fd; + else if (sess->ctxt == DPAA_SEC_AEAD) + sess->build_raw_dp_fd = build_raw_cipher_auth_gcm_sg; +#ifdef RTE_LIBRTE_SECURITY + else if (sess->ctxt == DPAA_SEC_IPSEC || + sess->ctxt == DPAA_SEC_PDCP) + sess->build_raw_dp_fd = build_dpaa_raw_proto_sg; +#endif else return -ENOTSUP; dp_ctx = (struct dpaa_sec_raw_dp_ctx *)raw_dp_ctx->drv_ctx_data; From patchwork Sun Oct 17 16:16:50 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 101924 X-Patchwork-Delegate: gakhil@marvell.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 0165AA0547; Sun, 17 Oct 2021 18:23:06 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 8437C4114D; Sun, 17 Oct 2021 18:21:58 +0200 (CEST) Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-eopbgr80081.outbound.protection.outlook.com [40.107.8.81]) by mails.dpdk.org (Postfix) with ESMTP id 6FA4641162 for ; Sun, 17 Oct 2021 18:21:55 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ap3TO6jZ+Po1uSf3r+yWp8KUFQpiF9kbA7SJ0Gz9FRyngd/nhp0x8I+8+I/JxwHxgfcKrEcurFW6KBKQ2SoM4XtWAgEGeSd/Fv5GhofLU2dPaFzfn5rMhPTDDW0qJuzaqAUL2OhGPQ05i1QgsJzCgcGOKYDo4Kr/wgV9G/4DqPTPw2dU+dt1rMQH8HxXWibBg9uG8tR2abi6amkwDrp9us764MPu335KMQc/z0a+MMRxUMdNsNbQCxWJKkqRsCqT6s//7JWgbXipk4oma1HijLe55c3KuEToYGuT+RafrDed6jTKZh7PVMr+SInRd58VVQpO2Y00OqQ8A0zNLQyMZw== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=W2YLv0uyxyAbQiTeTxMq6ywrj909iVkIJSNzqNanqK8=; b=l+f4A70RaGsK2+oTyqKop/BucRIdh+yzjcD6NlX539GmWfXnC+/4YAg3vBtsmhK3ghdz1L2ulfia+vgDv//2kuuaUO5RcsdsaoA8u/ST6TxSMvhIGSlTpffTNZH1m6KF+LYk3/7xLmTsrIUC2SqJ/5H+BjKT46eeODybePcEEwa8oCxbC23wy3gBzYeUzElTTxi9TAo15Llkotnp6IkpFPnTYC/XndsdYqM4bMgIMa3j7BjE9UmwsYiNjVEBRGZ+E++YwgKbehNlnV1jXlmzKw8bZePHuSN2m1LPYFbmyVW1SocbpwNp33pHJUOdZCSEksIuCmZJYsCFSY+8SUNLmg== 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=W2YLv0uyxyAbQiTeTxMq6ywrj909iVkIJSNzqNanqK8=; b=i90VsEqpFMClqYepeUeiOoqqci8WfgGy0d1HWAvUj1DTe/UpIDQyePzOSoLx62v+59zeZXipXA5jg+YTXbQkm5W4MOrFpxQ4huWB/k7vDWkyX3SuhcMZZqr0vCCiMVPuRlfscscdvC30TS2VAerfyKxiGl+jWKxvevoG927ySSs= Authentication-Results: dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; dmarc=none action=none header.from=nxp.com; Received: from DU2PR04MB8630.eurprd04.prod.outlook.com (2603:10a6:10:2dd::15) by DU2PR04MB8615.eurprd04.prod.outlook.com (2603:10a6:10:2da::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.15; Sun, 17 Oct 2021 16:21:54 +0000 Received: from DU2PR04MB8630.eurprd04.prod.outlook.com ([fe80::945d:e362:712d:1b80]) by DU2PR04MB8630.eurprd04.prod.outlook.com ([fe80::945d:e362:712d:1b80%3]) with mapi id 15.20.4608.018; Sun, 17 Oct 2021 16:21:54 +0000 From: Hemant Agrawal To: dev@dpdk.org, gakhil@marvell.com Cc: konstantin.ananyev@intel.com, roy.fan.zhang@intel.com, Gagandeep Singh Date: Sun, 17 Oct 2021 21:46:50 +0530 Message-Id: <20211017161651.9220-15-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211017161651.9220-1-hemant.agrawal@nxp.com> References: <20211013190032.2308-1-hemant.agrawal@nxp.com> <20211017161651.9220-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SI2PR01CA0053.apcprd01.prod.exchangelabs.com (2603:1096:4:193::7) To DU2PR04MB8630.eurprd04.prod.outlook.com (2603:10a6:10:2dd::15) MIME-Version: 1.0 Received: from dpdk-xeon.ap.freescale.net (92.120.0.67) by SI2PR01CA0053.apcprd01.prod.exchangelabs.com (2603:1096:4:193::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.15 via Frontend Transport; Sun, 17 Oct 2021 16:21:52 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 0edc318f-4d99-49bc-0092-08d9918a3bc9 X-MS-TrafficTypeDiagnostic: DU2PR04MB8615: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:469; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: rwvpA23AqGiDRT53mW99fpQiy6EblyVdMwdsJ3rYas0dshaIQAYNYnGYutcKqthCj2h43KlxVuFzWcN95LU9mTcJScuR3Q64O01qOAcUykSfn4X/18KcXAZP5jhI2z356BY93m9XYPF9h+eHJ9If63t8LvCfILPTnG3sndqiQ4Sldwwv+XfIl9br48RupJN0TLoRCtjhUX1eNYD18P2QbuxyMOvlk1diC1upFMwo/dK30bHUgHMZyEvfdBri0OeVUkpPjkhIFYu3Y9XD9l/hAeNxaHtzXd3xcIPO4McJ3QWOuzCcq8/GUhHU4TrhtdJ7OlxjCe4eGK5vD8K73Rb+Yej1jmQihLdvqS54D7DTgxBzcCTlBeu8MRNrXZSsuvQzdnrxx/AWwPl2F1URKcawGxuIF8W01mHJEjVoBl/xoiozgU7wUL775pg6Onb0+a7/Xjx+2956g5MmlTgRw2gx5uK985Cz14RknSNHObIGbLwT5xP9B5AAuoPSkZojKScjsfmfL1Vwd+LudkvIiM3u2D7FyirxA2DayNi8xrPam4AvVhcKAQI0Tt1ncd1j+Yf/qw80tUXvzSWVLcqJh1apmeQKywu3x7HXxQx2lP+9phToX27eFe2Vk1o8zGE+t71GIERoY1ahBTE+8rTFTFR+kxxAPWJEHjUl1jAG7n7bQjRiFFC1VvT8Sy3k4CPRbxYMUVDG0jIRLW4J3c62GnVeYA== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DU2PR04MB8630.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(6486002)(66476007)(8936002)(66556008)(66946007)(86362001)(52116002)(36756003)(5660300002)(38350700002)(8676002)(38100700002)(508600001)(6506007)(26005)(44832011)(4326008)(6512007)(2616005)(83380400001)(1076003)(2906002)(316002)(186003)(956004); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 0BtTq2MVU5gVsEqbNnYDp9MSFtCLwxG7Vekn+lO8cHhv05UMIId4esi6A/mWfljF7G8q9GFSBH5vk4QAcPPFFq9elpcxaZCfu7wXr7G4Uc3M19zKwz63BxokE4ZnhyWA8iKCyswc7UeEGxk2SQALnCgtobGWLvjN6AUTa/Om7TpoYoBz3dW+R0VJgghI8w8ET1AlyXffV/l8D4nxVKfbUAotz6P3z90kNrDbN8JrXmYAcOAC5eQULgCiuWDh8Lglvj1MYpwWm+3/+AbLTC+/L0vfwe6lgqopE2sphGRa3gFnKiGIHdBK7RBbV7NywYb/el6nErPYcCexpMtJNOVcUvVPIXeCQhROz4CvKgUBWXu36JA6H13qo+ZvzmXkyXB3O0CgFdWEvqbk3596LuWmJ5wXelxbuB10BLdlsyxI6fmFrJCQ1iIABUPywwi1CAii5gUvrSD8mko2CWH8gnwi/S8QvQn+b6MlfSYSNZJyekE1BhPXHrbbbfj4D68DdTBFkj08Et3EdnjCbCn9DlpRPA1BJ08VkuN08bUzrpa4sKPau3TSK/e2+LbTOLYk6WEaYQlFtbo3HIMInQRCrXjbufj6re/mdzkoWmNrb+NDwe9UgCmn/cf3TyHXDpfElrle0LmNN6rPwlDJpI84hghrhoZd2UZBOCWSvLEseOFALTsGiG2BwspiKCI760CO2kG61nOKceaFQFQLIK/v97etqm6eIwVdyP461xEaFHAvFYY8N3+dR177vVwhOT74o7sey/qXR6Y5DGUB3v9Y7DOeIPng24GSMwlsnMYOIT+ld/kMqyNLB/OmJGJik6boRI2fFectYPixBtTKJot/b/H02h8UV49ErIbn1rxPoYYj1gvNItwRJKMwKTKmO+BAtqH0YAk499Oy+1vUQsXuYuJgBj8F6ev/oSGTZJsxcGPzj+yDBoVJz09Rlbqp/++4ON8g+geWKbRy07SMQl1ege6ivHLF93Tvgk8+yiWUwKdUA874N4S57IebZcEAdUxOAoir8wth2GmMuiwIJ7LKu6y2Dk0gq/MaTg7C/w6v3mjs00wX2csseHGSyHRJyWx+JqCyrkVKwP9pSLbbhWESctPXHLrHqSEbd2ygis0QDmBf/ECvAwzmWWTveoob2PgK45yi20tLYvx83NTLdN9A6/JSp1UyeLmHapiqBUdiYGkmg2LIcRLHPBT/fH+/EkeGNwlnljSph88S+U4laq82gcHyGgvQvHgNVg3vxNTZeK2g+U8JpALTwuxO9aR1e8FdnIiUZO1guUhk3a/Qifi+hoTeLk2tdbvufJSZNPEmoTM2kU+BMIUmtX5D7ILFc2NWMsC+ X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0edc318f-4d99-49bc-0092-08d9918a3bc9 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2021 16:21:54.5931 (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: IVpXxVzwcc9XiwjB4rPDRXUS4sSkT8dCCwZv5f3qrQBlz2Z8d5df2r8UpADLI0FLRa6DxO48pgFQk1BjEIR7CA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8615 Subject: [dpdk-dev] [PATCH v5 14/15] test/crypto: add raw API test for dpaax 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 Sender: "dev" This patch add support for raw API tests for dpaa_sec and dpaa2_sec platforms. Signed-off-by: Gagandeep Singh Signed-off-by: Hemant Agrawal --- app/test/test_cryptodev.c | 116 +++++++++++++++++++++++++++++++++++--- 1 file changed, 109 insertions(+), 7 deletions(-) diff --git a/app/test/test_cryptodev.c b/app/test/test_cryptodev.c index 4778dafbe5..73c64301f7 100644 --- a/app/test/test_cryptodev.c +++ b/app/test/test_cryptodev.c @@ -186,11 +186,11 @@ process_sym_raw_dp_op(uint8_t dev_id, uint16_t qp_id, { struct rte_crypto_sym_op *sop = op->sym; struct rte_crypto_op *ret_op = NULL; - struct rte_crypto_vec data_vec[UINT8_MAX]; + struct rte_crypto_vec data_vec[UINT8_MAX], dest_data_vec[UINT8_MAX]; struct rte_crypto_va_iova_ptr cipher_iv, digest, aad_auth_iv; union rte_crypto_sym_ofs ofs; struct rte_crypto_sym_vec vec; - struct rte_crypto_sgl sgl; + struct rte_crypto_sgl sgl, dest_sgl; uint32_t max_len; union rte_cryptodev_session_ctx sess; uint32_t count = 0; @@ -326,6 +326,19 @@ process_sym_raw_dp_op(uint8_t dev_id, uint16_t qp_id, } sgl.num = n; + /* Out of place */ + if (sop->m_dst != NULL) { + dest_sgl.vec = dest_data_vec; + vec.dest_sgl = &dest_sgl; + n = rte_crypto_mbuf_to_vec(sop->m_dst, 0, max_len, + dest_data_vec, RTE_DIM(dest_data_vec)); + if (n < 0 || n > sop->m_dst->nb_segs) { + op->status = RTE_CRYPTO_OP_STATUS_ERROR; + goto exit; + } + dest_sgl.num = n; + } else + vec.dest_sgl = NULL; if (rte_cryptodev_raw_enqueue_burst(ctx, &vec, ofs, (void **)&op, &enqueue_status) < 1) { @@ -8381,10 +8394,21 @@ test_pdcp_proto_SGL(int i, int oop, int to_trn_tbl[16]; int segs = 1; unsigned int trn_data = 0; + struct rte_cryptodev_info dev_info; + uint64_t feat_flags; struct rte_security_ctx *ctx = (struct rte_security_ctx *) rte_cryptodev_get_sec_ctx( ts_params->valid_devs[0]); + struct rte_mbuf *temp_mbuf; + + rte_cryptodev_info_get(ts_params->valid_devs[0], &dev_info); + feat_flags = dev_info.feature_flags; + if ((global_api_test_type == CRYPTODEV_RAW_API_TEST) && + (!(feat_flags & RTE_CRYPTODEV_FF_SYM_RAW_DP))) { + printf("Device does not support RAW data-path APIs.\n"); + return -ENOTSUP; + } /* Verify the capabilities */ struct rte_security_capability_idx sec_cap_idx; @@ -8568,8 +8592,23 @@ test_pdcp_proto_SGL(int i, int oop, ut_params->op->sym->m_dst = ut_params->obuf; /* Process crypto operation */ - if (process_crypto_request(ts_params->valid_devs[0], ut_params->op) - == NULL) { + temp_mbuf = ut_params->op->sym->m_src; + if (global_api_test_type == CRYPTODEV_RAW_API_TEST) { + /* filling lengths */ + while (temp_mbuf) { + ut_params->op->sym->cipher.data.length + += temp_mbuf->pkt_len; + ut_params->op->sym->auth.data.length + += temp_mbuf->pkt_len; + temp_mbuf = temp_mbuf->next; + } + process_sym_raw_dp_op(ts_params->valid_devs[0], 0, + ut_params->op, 1, 1, 0, 0); + } else { + ut_params->op = process_crypto_request(ts_params->valid_devs[0], + ut_params->op); + } + if (ut_params->op == NULL) { printf("TestCase %s()-%d line %d failed %s: ", __func__, i, __LINE__, "failed to process sym crypto op"); @@ -10450,6 +10489,7 @@ test_authenticated_encryption_oop(const struct aead_test_data *tdata) int retval; uint8_t *ciphertext, *auth_tag; uint16_t plaintext_pad_len; + struct rte_cryptodev_info dev_info; /* Verify the capabilities */ struct rte_cryptodev_sym_capability_idx cap_idx; @@ -10459,7 +10499,11 @@ test_authenticated_encryption_oop(const struct aead_test_data *tdata) &cap_idx) == NULL) return TEST_SKIPPED; - if (global_api_test_type == CRYPTODEV_RAW_API_TEST) + rte_cryptodev_info_get(ts_params->valid_devs[0], &dev_info); + uint64_t feat_flags = dev_info.feature_flags; + + if ((global_api_test_type == CRYPTODEV_RAW_API_TEST) && + (!(feat_flags & RTE_CRYPTODEV_FF_SYM_RAW_DP))) return TEST_SKIPPED; /* not supported with CPU crypto */ @@ -10496,7 +10540,11 @@ test_authenticated_encryption_oop(const struct aead_test_data *tdata) ut_params->op->sym->m_dst = ut_params->obuf; /* Process crypto operation */ - TEST_ASSERT_NOT_NULL(process_crypto_request(ts_params->valid_devs[0], + if (global_api_test_type == CRYPTODEV_RAW_API_TEST) + process_sym_raw_dp_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"); TEST_ASSERT_EQUAL(ut_params->op->status, RTE_CRYPTO_OP_STATUS_SUCCESS, @@ -10542,6 +10590,10 @@ test_authenticated_decryption_oop(const struct aead_test_data *tdata) int retval; uint8_t *plaintext; + struct rte_cryptodev_info dev_info; + + rte_cryptodev_info_get(ts_params->valid_devs[0], &dev_info); + uint64_t feat_flags = dev_info.feature_flags; /* Verify the capabilities */ struct rte_cryptodev_sym_capability_idx cap_idx; @@ -10556,6 +10608,12 @@ test_authenticated_decryption_oop(const struct aead_test_data *tdata) global_api_test_type == CRYPTODEV_RAW_API_TEST) return TEST_SKIPPED; + if ((global_api_test_type == CRYPTODEV_RAW_API_TEST) && + (!(feat_flags & RTE_CRYPTODEV_FF_SYM_RAW_DP))) { + printf("Device does not support RAW data-path APIs.\n"); + return TEST_SKIPPED; + } + /* Create AEAD session */ retval = create_aead_session(ts_params->valid_devs[0], tdata->algo, @@ -10586,7 +10644,11 @@ test_authenticated_decryption_oop(const struct aead_test_data *tdata) ut_params->op->sym->m_dst = ut_params->obuf; /* Process crypto operation */ - TEST_ASSERT_NOT_NULL(process_crypto_request(ts_params->valid_devs[0], + if (global_api_test_type == CRYPTODEV_RAW_API_TEST) + process_sym_raw_dp_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"); TEST_ASSERT_EQUAL(ut_params->op->status, RTE_CRYPTO_OP_STATUS_SUCCESS, @@ -15434,6 +15496,46 @@ test_cryptodev_cn10k(void) return run_cryptodev_testsuite(RTE_STR(CRYPTODEV_NAME_CN10K_PMD)); } +static int +test_cryptodev_dpaa2_sec_raw_api(void) +{ + static const char *pmd_name = RTE_STR(CRYPTODEV_NAME_DPAA2_SEC_PMD); + int ret; + + ret = require_feature_flag(pmd_name, RTE_CRYPTODEV_FF_SYM_RAW_DP, + "RAW API"); + if (ret) + return ret; + + global_api_test_type = CRYPTODEV_RAW_API_TEST; + ret = run_cryptodev_testsuite(pmd_name); + global_api_test_type = CRYPTODEV_API_TEST; + + return ret; +} + +static int +test_cryptodev_dpaa_sec_raw_api(void) +{ + static const char *pmd_name = RTE_STR(CRYPTODEV_NAME_DPAA2_SEC_PMD); + int ret; + + ret = require_feature_flag(pmd_name, RTE_CRYPTODEV_FF_SYM_RAW_DP, + "RAW API"); + if (ret) + return ret; + + global_api_test_type = CRYPTODEV_RAW_API_TEST; + ret = run_cryptodev_testsuite(pmd_name); + global_api_test_type = CRYPTODEV_API_TEST; + + return ret; +} + +REGISTER_TEST_COMMAND(cryptodev_dpaa2_sec_raw_api_autotest, + test_cryptodev_dpaa2_sec_raw_api); +REGISTER_TEST_COMMAND(cryptodev_dpaa_sec_raw_api_autotest, + test_cryptodev_dpaa_sec_raw_api); REGISTER_TEST_COMMAND(cryptodev_qat_raw_api_autotest, test_cryptodev_qat_raw_api); REGISTER_TEST_COMMAND(cryptodev_qat_autotest, test_cryptodev_qat); From patchwork Sun Oct 17 16:16:51 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 101925 X-Patchwork-Delegate: gakhil@marvell.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 5A3F3A0547; Sun, 17 Oct 2021 18:23:11 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 97C754116A; Sun, 17 Oct 2021 18:21:59 +0200 (CEST) Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-eopbgr60089.outbound.protection.outlook.com [40.107.6.89]) by mails.dpdk.org (Postfix) with ESMTP id 7A2D5410F4 for ; Sun, 17 Oct 2021 18:21:57 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AvhlQtl47dDhq9Of2E0Pf8vM1Z45+QvzXe3oLNuFBzi6z3ICNLmHtgktWkb7+HRRBeFu67fW2XQ17edMJYXhfkSudywUCZLYDi5MJZL6kYymrE+Ufm5W+aeQnYG1XpckjU+4oxQ3sGXVr9HNkSS4mMiSWYF5amoEtro3KB/H/OKwEOFG3usWgni/S/Vi3/IbLajyF1cM564gN9Ro82dfcROAQboTtRmcz3XJjZpBy6SARKLskk9w4OuKdt0R8A2tkJA62vl1ro4XLXoBtvwPfzcAqbqnaYdZt3ufTxdQBUnxTLEHUchuyu+6qFPgP21wQgcorpwZm1Pj6/UAgzs4Tg== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Bsb7RaSB12hNW/Nu1/Mp+ovEPD3tQ09Ew74CnTYOyz0=; b=MyB9YGsIOn/6SZALx+iwYBt2zSkbtUqP40PK4OVVJ+XXnZcarmcQevdRE3ulvnhUi7SH8MMkA0xzuz9KnaMcNmuUz/tasBkUj6R0Ur08qPopqgpUD7sg5N7i953R6naHTEimynnHPD45mTMWyDy3vEygUWco4o5XQU7csBl7z2p5MiEEqLvuML/zgxvZLf1FhWt/tnl4AKZ4XFlIGDuApkyHezl3p2QTOwdkgTd4G8ZN0ei8+gvSjpfGuBM5p39vzAsjGbhYpKEKlZaAbveMiqns+6WFVR7YsrmlbTF9YX8tLD5e+51KVr61UNiN1nH4Pah5+79DLzk3aKb0vPuHfQ== 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=Bsb7RaSB12hNW/Nu1/Mp+ovEPD3tQ09Ew74CnTYOyz0=; b=G9jACop6wjEFPvhVoVcPLBOElvrFfS2r1asFlju+mSoXVVScKHOzQxx3E8d5YZ73R9P3pkN1WTOGNvhnZ4tdMpJmtcQbq/cajot5KdUk0jEDHE8amvAJPTHAFpB3ymIjScF3UMIUM6Rw6DTq5ZwombdLZn5rqE/QrZuGxTWfvh4= Authentication-Results: dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; dmarc=none action=none header.from=nxp.com; Received: from DU2PR04MB8630.eurprd04.prod.outlook.com (2603:10a6:10:2dd::15) by DU2PR04MB8615.eurprd04.prod.outlook.com (2603:10a6:10:2da::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.15; Sun, 17 Oct 2021 16:21:56 +0000 Received: from DU2PR04MB8630.eurprd04.prod.outlook.com ([fe80::945d:e362:712d:1b80]) by DU2PR04MB8630.eurprd04.prod.outlook.com ([fe80::945d:e362:712d:1b80%3]) with mapi id 15.20.4608.018; Sun, 17 Oct 2021 16:21:56 +0000 From: Hemant Agrawal To: dev@dpdk.org, gakhil@marvell.com Cc: konstantin.ananyev@intel.com, roy.fan.zhang@intel.com, Gagandeep Singh Date: Sun, 17 Oct 2021 21:46:51 +0530 Message-Id: <20211017161651.9220-16-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211017161651.9220-1-hemant.agrawal@nxp.com> References: <20211013190032.2308-1-hemant.agrawal@nxp.com> <20211017161651.9220-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SI2PR01CA0053.apcprd01.prod.exchangelabs.com (2603:1096:4:193::7) To DU2PR04MB8630.eurprd04.prod.outlook.com (2603:10a6:10:2dd::15) MIME-Version: 1.0 Received: from dpdk-xeon.ap.freescale.net (92.120.0.67) by SI2PR01CA0053.apcprd01.prod.exchangelabs.com (2603:1096:4:193::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.15 via Frontend Transport; Sun, 17 Oct 2021 16:21:54 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c213077b-2a87-4201-dbbd-08d9918a3d15 X-MS-TrafficTypeDiagnostic: DU2PR04MB8615: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:5516; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: oiiWQPS7kVAl2LHHhWQ1oXRvmMFq6VY/hlM+VDSn6u25QFlVtJ8ylocsoMqj7esYiEyoInKy+yPjSTndx58GATXn7sNYCzxg/EUzvrlkDBHI1jCohcKKiEH8ypbzAhA2v1Yu6fLvxI5JYYTqlqoC9J62GeyqirRxgUR7YV+g0GftqOk9SaVivvURAu9c/PB5EjEG5t0Wg7iBpf2BvNhgNW7sSdwdCI25n9LVLNjgbpv9TuB4iwxUYh/h+zBBlXiP2ydFN/ELa1y7vimeuxbszA3o1g8t/MStIBgF5pWZXK/zHBf+wOvjd4pnw2mtVarJPLPOGQJIdXVOExEE/LiKA0BvNDpG834beP3BVgBeV2UeP9eby33jn37sr2MrGJFTVMaegACK0ynmEMdzS5gnhSmX+yS1WOW2bdumy12fQS2Ogwey2jGhlwgTdIRiXAiSjUxHMtLOqfOlAu9OVKPCGTmVDV0m2qYsK6wPLFKgALt1WP4nuWbtK6tsdJmgrfyNkhMeU3SDkEuCENr5iMYsTfBu6kZTSgap4BeBalqpCpXvQHbAzzUBIrw5qT6FgwUchXhx2eEDl23faYQT3+tXxUD5233stnELYY5C+Q5RxZK5kwx08IDlsFxt0xc0E22Pl6I7BytMf1/4m7PFHDBV4aMmF42o8fAKLizGT2RQb6p9g6PSF7/Z12hgbw+FGkFH/n6lCFz6o3Jy3Rvial9UNw== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DU2PR04MB8630.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(6486002)(66476007)(8936002)(66556008)(66946007)(86362001)(52116002)(36756003)(5660300002)(38350700002)(8676002)(38100700002)(508600001)(6506007)(26005)(44832011)(4326008)(6512007)(2616005)(83380400001)(6666004)(1076003)(2906002)(316002)(186003)(956004); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: C2qZcBjbe38rt5BDlOuzlbh+glRIOEqtP3dQNwEvScYbL0w0Ej20Uelgiv1E9YUQgJSX1W9yFA1/ZDtXF5KXepW7iJeOm5wmcko3vFOTEIyLEe4s1nonOINqd2BW03v9ZdEzGE4hM1l4FWKq2+2ueIxl8FJNA6emexrVCEw9/127duN2yDHBNgJDp1HcYtRvtmwi8Jo03BMsR55ChAONM0wNqBG25VggBm/hlnI6ZSDEgxpcrJYMjjzyQaUUDe8lYdESPXqXG95yocrlF8Iknpydx7nEztzoF5n9MULr7HfFPcyieIcqkLj7DBGoJ0TblF6SpQV/q0HnfHOCyNo350yDBHVUYCSFXqmsuHAP0Z1tWc4JnHRp8mGcz6FtU5FnbnOK55pZ8IOqqB3AIIlYtVlfBUq91XyIwnTWSBbUlCvv5ok6jK2R4U0+5pbAFyUkx9TtE/aH3TbeUm8CvfvclbyjAP6rcjHJ/ZJDqpqRsC3zekKSHHybWPqPs4ByJUBSbu4HF8dqaiUbufr15IpKEaDeC2g74ADWNqKOpQstlclEwRwNP53hkLiCkq5c6oj5ZDgSSf28T++c2Ru+S6pYFhRZdjd1a4/ohKAXCelmyRA4kS7+4TdeGJ9Ug/AgKEodU284JqGJoeOnh53kNfQPS46bYzaUREJsnKvlkMU28MxsaOK3hTi3lNk1vLnngRj9g27naovNOcDTQUMkX4cS/CtU3OdhPb0vk4Hc2Bk66DZwNAvbyh2dbaV3FMy06EtZWtelQKZuBgYw6na9Mn5xkt7USwLaigOseBsGmmiDBx2ZYgvCC+8y4gsEEEca1zTUGgjTXPj2qUyiSgA0639DUbx5WD2mQyIjbQftIBWtOOKzYZ+zQWRvutOAoZ2Us7/qLmoiwfI4a84MJU07FYMlorHFlDLyDXO2WXLMmmm/7AC5aGcA/Z3i6PcphmNoIMmYFhmck425FEDv8uYWoSHtYshKoBHDZ7i0B4J2KPbgqESxd35PQlI8O8qyfbNbKlB0a0utzxW3RINCc768vPlirGsk6GIqkvQmJ2O3pUfq+obatCbcyMus83J6XFOLoHyD/+xrTP+2XCK9ZCY7dND2Mw1N72badwgSYM5/0ocoxsOOXe45Apy6k7IZRPGOD6pS5ENqYIn/VSl4b14556wK0MNQvYhFFGdyQQ0nTTcsfB8pIvllO4Wc1jQB/WkJuoALWO+njnrZB9eDOwelWywwgpE+smG1HYovTaGzXBUliEcDpJn4j0JWrVKJrTSrYAq1grmaXhWSBa1cHDhpb5avzjDRkQP12aJ/eLzQHoKhOlTuW9zXuQTX6iOCT+RxPIix X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: c213077b-2a87-4201-dbbd-08d9918a3d15 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2021 16:21:56.8282 (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: K5tLh0QSItakE7AoYNQbgtjZnOsUMEe6GK6rC4Je9F5ymYsVUTfQzv3iIyOAesZNfNbFATPeWqEoCdc25gz1jg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8615 Subject: [dpdk-dev] [PATCH v5 15/15] test/crypto: add raw API support in 5G algos 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 Sender: "dev" This patch add support for RAW API testing with ZUC and SNOW test cases. Signed-off-by: Gagandeep Singh Signed-off-by: Hemant Agrawal --- app/test/test_cryptodev.c | 57 ++++++++++++++++++++++++++++++++++----- 1 file changed, 51 insertions(+), 6 deletions(-) diff --git a/app/test/test_cryptodev.c b/app/test/test_cryptodev.c index 73c64301f7..01af4cfbd2 100644 --- a/app/test/test_cryptodev.c +++ b/app/test/test_cryptodev.c @@ -379,6 +379,7 @@ process_sym_raw_dp_op(uint8_t dev_id, uint16_t qp_id, } op->status = (count == MAX_RAW_DEQUEUE_COUNT + 1 || ret_op != op || + ret_op->status == RTE_CRYPTO_OP_STATUS_ERROR || n_success < 1) ? RTE_CRYPTO_OP_STATUS_ERROR : RTE_CRYPTO_OP_STATUS_SUCCESS; @@ -4210,6 +4211,16 @@ test_snow3g_encryption_oop(const struct snow3g_test_data *tdata) int retval; unsigned plaintext_pad_len; unsigned plaintext_len; + struct rte_cryptodev_info dev_info; + + rte_cryptodev_info_get(ts_params->valid_devs[0], &dev_info); + uint64_t feat_flags = dev_info.feature_flags; + + if ((global_api_test_type == CRYPTODEV_RAW_API_TEST) && + (!(feat_flags & RTE_CRYPTODEV_FF_SYM_RAW_DP))) { + printf("Device does not support RAW data-path APIs.\n"); + return -ENOTSUP; + } /* Verify the capabilities */ struct rte_cryptodev_sym_capability_idx cap_idx; @@ -4265,7 +4276,11 @@ test_snow3g_encryption_oop(const struct snow3g_test_data *tdata) if (retval < 0) return retval; - ut_params->op = process_crypto_request(ts_params->valid_devs[0], + if (global_api_test_type == CRYPTODEV_RAW_API_TEST) + process_sym_raw_dp_op(ts_params->valid_devs[0], 0, + ut_params->op, 1, 0, 1, tdata->cipher_iv.len); + else + ut_params->op = process_crypto_request(ts_params->valid_devs[0], ut_params->op); TEST_ASSERT_NOT_NULL(ut_params->op, "failed to retrieve obuf"); @@ -4325,6 +4340,12 @@ test_snow3g_encryption_oop_sgl(const struct snow3g_test_data *tdata) return TEST_SKIPPED; } + if ((global_api_test_type == CRYPTODEV_RAW_API_TEST) && + (!(feat_flags & RTE_CRYPTODEV_FF_SYM_RAW_DP))) { + printf("Device does not support RAW data-path APIs.\n"); + return -ENOTSUP; + } + /* Create SNOW 3G session */ retval = create_wireless_algo_cipher_session(ts_params->valid_devs[0], RTE_CRYPTO_CIPHER_OP_ENCRYPT, @@ -4359,7 +4380,11 @@ test_snow3g_encryption_oop_sgl(const struct snow3g_test_data *tdata) if (retval < 0) return retval; - ut_params->op = process_crypto_request(ts_params->valid_devs[0], + if (global_api_test_type == CRYPTODEV_RAW_API_TEST) + process_sym_raw_dp_op(ts_params->valid_devs[0], 0, + ut_params->op, 1, 0, 1, tdata->cipher_iv.len); + else + ut_params->op = process_crypto_request(ts_params->valid_devs[0], ut_params->op); TEST_ASSERT_NOT_NULL(ut_params->op, "failed to retrieve obuf"); @@ -4486,7 +4511,11 @@ test_snow3g_encryption_offset_oop(const struct snow3g_test_data *tdata) if (retval < 0) return retval; - ut_params->op = process_crypto_request(ts_params->valid_devs[0], + if (global_api_test_type == CRYPTODEV_RAW_API_TEST) + process_sym_raw_dp_op(ts_params->valid_devs[0], 0, + ut_params->op, 1, 0, 1, tdata->cipher_iv.len); + else + ut_params->op = process_crypto_request(ts_params->valid_devs[0], ut_params->op); TEST_ASSERT_NOT_NULL(ut_params->op, "failed to retrieve obuf"); @@ -4617,7 +4646,16 @@ static int test_snow3g_decryption_oop(const struct snow3g_test_data *tdata) uint8_t *plaintext, *ciphertext; unsigned ciphertext_pad_len; unsigned ciphertext_len; + struct rte_cryptodev_info dev_info; + + rte_cryptodev_info_get(ts_params->valid_devs[0], &dev_info); + uint64_t feat_flags = dev_info.feature_flags; + if ((global_api_test_type == CRYPTODEV_RAW_API_TEST) && + (!(feat_flags & RTE_CRYPTODEV_FF_SYM_RAW_DP))) { + printf("Device does not support RAW data-path APIs.\n"); + return -ENOTSUP; + } /* Verify the capabilities */ struct rte_cryptodev_sym_capability_idx cap_idx; cap_idx.type = RTE_CRYPTO_SYM_XFORM_CIPHER; @@ -4675,7 +4713,11 @@ static int test_snow3g_decryption_oop(const struct snow3g_test_data *tdata) if (retval < 0) return retval; - ut_params->op = process_crypto_request(ts_params->valid_devs[0], + if (global_api_test_type == CRYPTODEV_RAW_API_TEST) + process_sym_raw_dp_op(ts_params->valid_devs[0], 0, + ut_params->op, 1, 0, 1, tdata->cipher_iv.len); + else + ut_params->op = 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 = ut_params->op->sym->m_dst; @@ -12997,10 +13039,13 @@ test_authentication_verify_fail_when_data_corruption( else { ut_params->op = process_crypto_request(ts_params->valid_devs[0], ut_params->op); - TEST_ASSERT_NULL(ut_params->op, "authentication not failed"); } + if (ut_params->op == NULL) + return 0; + else if (ut_params->op->status != RTE_CRYPTO_OP_STATUS_SUCCESS) + return 0; - return 0; + return -1; } static int