From patchwork Wed Oct 13 18:27:06 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 101455 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 353FAA0C55; Wed, 13 Oct 2021 20:31:56 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B1FB941134; Wed, 13 Oct 2021 20:31:52 +0200 (CEST) Received: from EUR03-DB5-obe.outbound.protection.outlook.com (mail-eopbgr40061.outbound.protection.outlook.com [40.107.4.61]) by mails.dpdk.org (Postfix) with ESMTP id 61D564111B for ; Wed, 13 Oct 2021 20:31:51 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nNv93Z5QEJ6JH6DMrqZSYGEUwZlG/8Unuoqib77lrRryUdHgLsjouXv9+YBDaSoo7NE0YIHjVH5hhQeeeZLqA4yRyFRHoJf8K3Tzyx3tMvIgQ/xsPMLYFrRQyPBW7xZODHCc7oaz8RREKxin/hTLd/KHxxmxrAKdDU6hmceQnVk+DHmC0pMG3eSzpno/nodm0WvNrzku2+HPQHo58NfFPHuiTjk7iqdUDAiYI/GSUygyehb2eTu7DBFO6YxE6B8l2kEowuCp3ZFleb55hOXbWek0i1ru57vMZOEA9mZfzlwoC8TkVQ3z0a7FlGFRzwTmU9H92KXB/T/tn3XW83eX/g== 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=t86gKSYUhmZrQeco24Xu6XC8VSDCI3OK7SpU7SxnuJQ=; b=CUJU6fnZ6W6aL17ZpZKhDhiXP1azVNW4frCeNqYtVgHVJ1DNSxBK/NekWyR3RnS0OD3C1Ng8N5yBJgnSEMczxWIN3B5F18ULoHC1WIkK9jMucphrvon4u9wugd1UfMlbAIDA80WRfImWsH8xhtNpL1A9FzZ0vcQoG8lb7By6OEST3Cyah0Zkv1rKkGUVnR3xxpj6Yu2845OLMEb5vAuewYS83WErcHEvRAFn2i4bJA1gqUurkddj9rF+64K1zHqutEhFFIPQZ3i0XnkKq6ZEAM5Gqjs0WdhJYn80TMk90ysBithZWj2yJRHt/7Ng748hdxjb913NG7BVWpcpXOcMiw== 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=t86gKSYUhmZrQeco24Xu6XC8VSDCI3OK7SpU7SxnuJQ=; b=aY81My5+ZvTjDLmWtach7bxmr++y5eIA0TJNn5z+wMRvuS5biJQzKyKHfCIWqe75XvAmKE6ddjrZfBe+ZUfnl4aFys0inQvgEZfTJvRp1L4kYElRDEATbZQWoiSpbzOMY5Q4CPT4LCT8lLnac/MM14644z6B6R2C+2TLQQfaCtQ= 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 DU2PR04MB8597.eurprd04.prod.outlook.com (2603:10a6:10:2d8::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.16; Wed, 13 Oct 2021 18:31: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.4587.026; Wed, 13 Oct 2021 18:31:50 +0000 From: Hemant Agrawal To: dev@dpdk.org, gakhil@marvell.com Cc: roy.fan.zhang@intel.com, konstantin.ananyev@intel.com Date: Wed, 13 Oct 2021 23:57:06 +0530 Message-Id: <20211013182720.32486-2-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211013182720.32486-1-hemant.agrawal@nxp.com> References: <20211013182720.32486-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG3P274CA0016.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:be::28) 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 SG3P274CA0016.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:be::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.15 via Frontend Transport; Wed, 13 Oct 2021 18:31:49 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 9d9b0d52-6a81-4b83-4b74-08d98e77b8ed X-MS-TrafficTypeDiagnostic: DU2PR04MB8597: 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: 77iPlEB1Ax1ADUZlVEdDTzxE8Ft5uLkGu6OxIiTauwroLC+Ceo2ei5ZosXQHn3c2ZTPI5HFXxC0FbYnnZjJtVK39f88c2ZghogiQ1Aiv0wOLTchaTs1hNLrJL/AzSV1cnd+cJZHkRijf75PPq2kFlE7g6IzH9PyYyCf+hW4qrnRNzxtT0xNakABPCLhfvuQZNDVCHzXbjvYoQTYkLusQ5i9JrcX8wHSXEUuG/+kDGS2iSXPR7pne3Z0BjWjQ1oOw6/lcU7gYfbXq7qYKzQ+L78f4RkPhodxk3Y9nTFPflCjNwNZdM5CwBgUZ8DBzaXzFUr/cbW31YGRBUsDxt+5A4HOf9w7BThN1SStGdphAOjN6HwihFb/cv9olz8s4nbM7SCAFqjmvnmiRj1hTrMyPXjCSFDM48tlSi318dChQltu/CrRVohB1C5b9pBzm5zGfsw8MdQR42LF0GA+3g7WsmeMR/1q5IfMs9IDyx17EWl5Qi56teLyfJgfzwoHfnSSvb31tq8VdDTxEIftuhcmtHwvkOio8mKsB8/+hzjKj8myNWXrNMWgo1QqI4Flota7/MuRbt4w0qCpw9D6V+2fMUFbSCrJglweQA5n3AdN/uzLxlv+vzJYmt5w3NEJeHnZ4Dc8Xy8+xvo/E5qo73U0HUWdvoQk9E2afdNKtdagvZR+WihZ/4DEqJP3ejNK8L5Pu0HEGOi567KA/D2y3PCgVJw== 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)(1076003)(2616005)(956004)(66556008)(6512007)(2906002)(83380400001)(5660300002)(508600001)(6666004)(44832011)(36756003)(4326008)(86362001)(6486002)(38350700002)(186003)(6506007)(52116002)(8936002)(38100700002)(26005)(66946007)(8676002)(316002)(66476007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Sww1Bz/Ho1Kp2g0ESQIghgr07+9VMMigJZobWGij/VccrgPKSE0wfryaqMZVI5V6AllZ6kKIZ42yn4IApbZUT4pne0NnVYB+PJfOJ576Y/CobegCq85xVFjnHQBisNUfxQj5d6GIyOI+dormzpMQoMfrFf55Fl0gGxkrBZG45kbS105+URZMnTT9pH4LyEOKIteMAXs2UAb+COGIDOkcXK17u1/TLMAsHAsTrfka5OBpjurC6RxPiv0vvxQIr/I+ORZxU2cJLP2BKc6U8RyK3eo5Wua7wRYgAZ0NCwTzK3uViVCqcM7yzIcBxHWQ5h1BR0SkTpd6UE2vEaoLlbm9dzAf7NmqBLHB/jEk/7X5t4b4AVLkSEc3L6kkDVRSBLo0T8WdRG67fH6H7JZbWr/+6HtYyx7UyzGp4OVPmUJPnUsi1yr3zDv1QkGZleYnhR0GaT9szdqKxjnbSsi4EY3c3N37/5Cpdsa89IDT3dyz6H46am6L29lBw/spo9Y3MtaGDe1MdNl0HbcF8Sm0VZK68F6/1hIjTnw3mBw2K9bmtPQ5U5KQVokmMGY26m43WtV6aq/0Wd377LvDYa77+kUVZtmC74wPz4en9MY7iN7Vg839rnRH0Ur1mheuIoIFzo9LGnX+7m9xiU7iEI9Y+VvbP81s8Sjp1qGJz0JdisllbsALYcsHzxaBZiVNFmWqR5ln1PfSMEzc7JXWaFQl/sgJo8DN4XGhJ1hDfCn3V5GQSU/x9GJYL+weIt6z483axjDj+J/m6SV6W0lVfDTh9crM8FhjkVIWObqAalV3KNWjc6on3A2NhgCKsptJNYzeOEZIldXxtRHn7ZDcefydsA7x4j2zd5jeDgzr6hgCOvRo79gDPZDi5G9sRqKCn8NeYq+wa+vsv+/NT7FRdvtxgpCvBGAwbu5ZoCHdz5lZiFTJFR1X0wgvHmj6WPaxOZuAK+/moGg9Xyq5ueD/yjmQZoNpAKcUjGb21d7OXdgShMjkX9T4xA6UzjOfU030Ib8rl7KQfocKS+Uug6NEOP0ylzZo/hPTmylUgXXE7qtYXk5lC3faUxEgYoUA4hS9ptGVYj4kUP2Fdfg9EOwWG9rgHeP7cIl3ucCkJm8oQ7YUM4AP4UGIBg/P6kh6pceLOK+YDybAs9u+UXd1H7Ge/zirRC8BIU4FsjzJF78NrYj5d09CXi1Wx7V/OzxlkK5Bq+Ojs0/KCp8e7Epq+b8XhAziuW6O8WJaJ3DZpGTQSGun7pTsTn8XliVO8y8lxZjgfrAdbDu8/dg9p6um2LHXnARbGsGWQOG2qLkGqA4D2Vm4ErCAqtV1JprHhnp5hV8yZmePF7/1 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9d9b0d52-6a81-4b83-4b74-08d98e77b8ed X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Oct 2021 18:31:50.6548 (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: AQJ3pW4CaEKCFMCdbE6B/XRHn5a1fjLS6KNBZf1yZyhZ+x5SnP//M6NZYnv4RAsO9Y7SOpo/qQJNP066PLEqZg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8597 Subject: [dpdk-dev] [PATCH v3 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 e6ceeb487f..1e951981c2 100644 --- a/app/test/test_cryptodev.c +++ b/app/test/test_cryptodev.c @@ -230,7 +230,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; @@ -394,7 +394,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; @@ -440,7 +440,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 58c0724743..dcc0bd5933 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 Wed Oct 13 18:27:07 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 101456 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 114DCA0C55; Wed, 13 Oct 2021 20:32:05 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 168294118D; Wed, 13 Oct 2021 20:31:55 +0200 (CEST) Received: from EUR03-DB5-obe.outbound.protection.outlook.com (mail-eopbgr40087.outbound.protection.outlook.com [40.107.4.87]) by mails.dpdk.org (Postfix) with ESMTP id C089541173 for ; Wed, 13 Oct 2021 20:31:53 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DuBN/jszxdKvf6cECG6OJfTfGR1+eBnapLxjEJLlaUT35uU9sqbTvoTjL2JfMUmyOyivSo6Bt8m8xj3t6HMPyt5RRvZUH7bHizUAG1ZA11FtSfpTlSLnnSZzYa7NXhTOCn+ItoEx/j3/JzAVXS4Cxa21E6YR/1EEHm+PGz5OlsC01CyzXapyb97+sSvNUImsI1XrCWfCcg86JyYOOzoOs6Sm3UoPDfP5AU5ogXf0kJUC0dEA+PRA0RrWGHXbGiZ53E85/iOmkCnObHwC0t8laSGnpGMDvihqIm3wyx12/zSn9pqf75+042xSfcJ+x0IEtalUMibk2ShcR5tBCeJz/Q== 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=MQNbT51uEEFPEgJAh7v7/Piz4iyAlMt0g8wrWa0jyOA=; b=ntwmCCna6o7cKp7Z9lszsmj9FjbNpebwIowBvheum1in4ES9GWJrCyQjCYoy2t2A7fI0cBwW3/ssyeYR+C1IWzqBWZA0fozd3tLL9dxeyOI6mRofy52wcQ8e+p8BPrOOmRAL8ikZ3aMXjmfQwtC/bQ2B6lt+WXsp81qKFUq7h07N5ouGWNOhakQzhwJrNAEMZX3rdUv8/3p5iRSy0Vb3YEu0IU/rRc/nUFtuk+hBk6ZvDrTXyfJ7pvkO9S9Asm/1L3hjbfsKpOx5y4Hu9L+SIGKn1YQ1fztf56wmB40N+IAAVfSrJSHC7APYoBl+7+7aVb4P/zYnZwoD24qEIlxWgQ== 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=MQNbT51uEEFPEgJAh7v7/Piz4iyAlMt0g8wrWa0jyOA=; b=VB1x9zhn8PZ0CNIoEHToBcCEAkfYLDU9Lmf3R0YpY1JDVyJw/P5V9Fmm7eD+heSAQNTB7X6IyGr0YphtrZa26L/Rc0UhES5p+bEXJLFvQVRGSNqzs6vkhHCqryCtVk9nmQfNp/Zv9CZYBw5OglOFpbfXczwD7UfbQdJEscsc1wU= 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 DU2PR04MB8597.eurprd04.prod.outlook.com (2603:10a6:10:2d8::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.16; Wed, 13 Oct 2021 18:31:53 +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.4587.026; Wed, 13 Oct 2021 18:31:53 +0000 From: Hemant Agrawal To: dev@dpdk.org, gakhil@marvell.com Cc: roy.fan.zhang@intel.com, konstantin.ananyev@intel.com, Gagandeep Singh Date: Wed, 13 Oct 2021 23:57:07 +0530 Message-Id: <20211013182720.32486-3-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211013182720.32486-1-hemant.agrawal@nxp.com> References: <20211013182720.32486-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG3P274CA0016.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:be::28) 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 SG3P274CA0016.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:be::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.15 via Frontend Transport; Wed, 13 Oct 2021 18:31:51 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 865b212d-9092-4124-12c2-08d98e77ba4c X-MS-TrafficTypeDiagnostic: DU2PR04MB8597: X-MS-Exchange-Transport-Forked: True 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: QXwPdP/UYq3Cjzla1CTcZ4j8UPyGMug2ZyGPQfV+uGBcQ2rhHOf6X+2gLbmGNAq7rwlDkQXAtq2bqmDlxVsN1T/eRKfS+yvjswVNh9LiYrNmA/OYLk4Bkey3OBAqhBmmQqTOfEP1rsmSYRSrtu7j6Fj+U5/iLjKCHrSXtqGwnwZTfkANVo520WtWIK8zmsSMO4M5TzzbEmSPTI3cM4/qKF5X8iwypBW0XxJP41N08oYNeKMNcWLVehYg+c73nazhSNDOFOduE8CkYm/puLiWSwmaWWiMQqxUI1GxxCeWy/IAlKDcTq9a+eIGZY1jwNp76o2slB4TnFqVWX2OlJfmuupg6p+44Bsh7RMj3mZwa6pyMXMYSMusAKD+m0qn2qYZtEYQXfOgcqnDH2MNR5nmE1Y93UOr4lhwotMm7j1bCth9gfHzR7zoP+O7lOHlWjtlUcpzfteATXyHk9WVJPqOsyJCBKEzP1MthZLLMg/eyjSJzqqvUnG/I9K7DysLJi/xNfXtyKhLIX53j5rrc8zJ8SzifMLIgyZxwkNNKfVjN0Mf2XH00UOkWBKt5wckCRXYu5bmJjdwU/bAvapkeWPHu6l/lulVX+Lb/wpn9/JOHnIh99PNUS6PvrpJvl/N3RQB7i9/90CUWYpxtnmncs6RJOyA2cXVFziqXDbCU09wP2jOSueOI51Pw6SFT7HJVvNAwjlQO0eYIev6bm5HB7Eqaw== 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)(1076003)(2616005)(956004)(66556008)(6512007)(2906002)(83380400001)(5660300002)(508600001)(6666004)(44832011)(36756003)(4326008)(86362001)(6486002)(38350700002)(186003)(6506007)(52116002)(8936002)(38100700002)(26005)(66946007)(8676002)(316002)(66476007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 2hqPpZNmDtwDZR+XnxfkLvDte5RYTbFHFoYifECJO3CVEiXmgojDwa+G8hBHi3kVKlOTc83TEEGVlDHjrHvRxhvnf/1N3PO0XJYIOrPiOZH/hLnE6PTr8NQBBt2+XLjOf5ToIXuuCJwIOeSb5eKRew7KwGPLq89kxzrvZlSEMUqjhB79vFtKXz6G/TB4wyK5EqVXISgcmP3yLdvAxMrUUumu1i3NeFFGDwkW2sV6xBBuX4r/i/QDDm+TlUM4YstcT6kZMN3R0ayBBpGo0xlJtE+snQnBsg6h/pRBLjjJw9DOh/MJo7xQW1dEHO3OzArt4YOGMdhYpxOWXkR5BnsaEo/A8GByOcyGkn8qyhbE8jXuLt9Q9YXWb9446KRSDkXolEX50LB05t/F0ARMMX8Wx7Y8Kq4D+HS+jVRftWdcmRg7+qm6skJuIg86Ma64Lz0Bp3lA9RhSnorF00MImdUOAYLm+Uk7YfOfc50N2nBl1wESCXzYwg44NE6cjMzgmIaZeq0WHvfwLuMAQdOLW6HYrh+UmEHeNaDCNFXA6q+tls0o7+zdZ3rLAhAM/O8JOAPTEtSyNgck569Znf4SpiNB0yLl2VNCq0tT8fWGK21FdM9V49PGF1d+dA83xf5SrwH8Rve5kNeCQf0DMmB51YoMNKklCcyjkbJ5v8tk0DPblpeMKYyLM5hquX+zL+I8xY91+gJkVVhQ7fD2s47tSSq/U0zy9IGY4UjfGN56fHAQRle+H4+PHUsxkSDG2CaVUoTefQsb1jlA9ZkVu6Zlw04Ol6ASZvPkdC8GlFPh0V2bbNR02R4Of1VO+f7rJ7T6XnCkgWiro1vbMmOs3KxXkJuJPX8K2t0/2wibe/UdPH1I6v5xK27Q4CwlRLR7sFIAh7pQws5yoc+TV7bxGstGAldIpccaHp30n/jS9usT0wugbNTtkrfSufBoFSyajQ1m4O/f/Y69/L4sIMflJZNd9pnOrwI8+0Kz9Q90qKGDLlPVYm2j5XHOdbXTEQBRwQ3fTWdXn6tdYfdh8pbB7ZFtugapuluyKpLbO1EkrywbX2XTR52VFyDQLUkFesYZHPEzC6DKSvfysu9XUX7Dld4g2GxtlcX+c7aKQ8OsZSqAT8m2L/QGkB9wMAviK2DX6HAV7OvY2a7W0hotLmHGdyTZH8dO0KbKJINHCxaEp7XAvNGm++wKEWqEtUjsZSYJx1lwpxQ4XjtTCh5HtEdbvBKxWNnI8nc9SFD6xjhaaIRKGKjZlohnVj8Os3HxZCG7rGfIThg3mOtI7wBZglEFvVkeDzrgRDexnQ+emfdZuDY8UkQTxBxXlE1tr2qx3OYvimH3Nbyx X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 865b212d-9092-4124-12c2-08d98e77ba4c X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Oct 2021 18:31:52.9088 (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: lP0mtKUgvQ2bta52ANsUoqpayvA6Da8PjBdw4kh1405cxhlG6P7xCdR+qkQmsTkavSC5ebJ13Yv4IkkBrOB+2g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8597 Subject: [dpdk-dev] [PATCH v3 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 --- doc/guides/rel_notes/deprecation.rst | 7 ------- lib/cryptodev/rte_crypto_sym.h | 6 ++++++ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst index f3c998a655..4b26ef6747 100644 --- a/doc/guides/rel_notes/deprecation.rst +++ b/doc/guides/rel_notes/deprecation.rst @@ -211,13 +211,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/lib/cryptodev/rte_crypto_sym.h b/lib/cryptodev/rte_crypto_sym.h index dcc0bd5933..e5cef1fb72 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; }; /** @@ -980,12 +982,14 @@ rte_crypto_mbuf_to_vec(const struct rte_mbuf *mb, uint32_t ofs, uint32_t len, seglen = mb->data_len - ofs; if (len <= seglen) { vec[0].len = len; + vec[0].tot_len = mb->buf_len; return 1; } /* data spread across segments */ vec[0].len = seglen; left = len - seglen; + vec[0].tot_len = mb->buf_len; for (i = 1, nseg = mb->next; nseg != NULL; nseg = nseg->next, i++) { vec[i].base = rte_pktmbuf_mtod(nseg, void *); @@ -995,6 +999,7 @@ rte_crypto_mbuf_to_vec(const struct rte_mbuf *mb, uint32_t ofs, uint32_t len, if (left <= seglen) { /* whole requested data is completed */ vec[i].len = left; + vec[i].tot_len = mb->buf_len; left = 0; break; } @@ -1002,6 +1007,7 @@ rte_crypto_mbuf_to_vec(const struct rte_mbuf *mb, uint32_t ofs, uint32_t len, /* use whole segment */ vec[i].len = seglen; left -= seglen; + vec[i].tot_len = mb->buf_len; } RTE_ASSERT(left == 0); From patchwork Wed Oct 13 18:27:08 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 101457 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 9FF0EA0C55; Wed, 13 Oct 2021 20:32:11 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 327D941178; Wed, 13 Oct 2021 20:31:57 +0200 (CEST) Received: from EUR03-DB5-obe.outbound.protection.outlook.com (mail-eopbgr40084.outbound.protection.outlook.com [40.107.4.84]) by mails.dpdk.org (Postfix) with ESMTP id ACDBA41195 for ; Wed, 13 Oct 2021 20:31:55 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TGuIRr+v/wpQuZnDZjQJkInesF1+ZXUxGasX3GBwaH3Qo7/KNXrfKG58DI5E5WhkwQeTW/ELW4pNHJ14nr5VT0LKD3wHhaERZ5AnE7Ned/J/jooy3nIjbJkTT5dmNxudVvt1ipxKcx9xrHcnxTXlgBkHB27QWkKsVFSxtFa8V2KWBbn6FmODCstjpO0gGlimhFKVPM/16QpJJEnCXOqoM7uHt2AW2bce9VCXDFk97wDGDEmZ/z/cechzAcoGn0e/XHJ3HgTtmJvrFdFnAZxHPdM77CA0XoSeKZ/ovPIB04BATZZvopJYdPLVe1BMj+vwYTad4xSqWjwaadxv+tHWnA== 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=RECo06loss6ffnMXhU0XbdQppD7UUl7i5tGEREkxf3w=; b=LR7vOydNvxBDJEltRx/UrNwXxb2eTh08M+cc0axefJJi8GSlaVTOyKHP7yn+Lc6dvLu4TuurAZayC4oICoVSOzWbP6ViYkr4NfapBgSPboy4gAkKw/oHYHfcjR/lgA8LWdUiACZ79HOHhyHkLpQiLCbN0n5XEiXT3NH92h22l2gUJ3FMvvxZPUFLvrqdtuMABjRKmbxzffYmIED08DHhRKUijtfLpD/HqQjPimr/MkyHCARh08oW7wpx4quz9njAn+k3adPBQWvY5fd3aMRir4CO+uE/OL4qji/ok8N3eeCzbEzzit4w7tvWbGSs3BwspSBEgeVKwcPJmXRIAjl2DQ== 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=RECo06loss6ffnMXhU0XbdQppD7UUl7i5tGEREkxf3w=; b=riFOBeShmS0B1SowGXDZfS5hkJVqF4On2AYy0TtBd5GvKPI+5EaZD7d+FqIyz5o/K7fBlaAoFMAefV0q70KJNQpuwnpSIPho2muyHmdmDwEvoiE7hLAlAygI1g7JLsSw+luGYP4Zc3ExSpo3g9cL6uJSEpWN7WUZ+8Oa7r3FA2g= 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 DU2PR04MB8597.eurprd04.prod.outlook.com (2603:10a6:10:2d8::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.16; Wed, 13 Oct 2021 18:31:55 +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.4587.026; Wed, 13 Oct 2021 18:31:55 +0000 From: Hemant Agrawal To: dev@dpdk.org, gakhil@marvell.com Cc: roy.fan.zhang@intel.com, konstantin.ananyev@intel.com Date: Wed, 13 Oct 2021 23:57:08 +0530 Message-Id: <20211013182720.32486-4-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211013182720.32486-1-hemant.agrawal@nxp.com> References: <20211013182720.32486-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG3P274CA0016.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:be::28) 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 SG3P274CA0016.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:be::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.15 via Frontend Transport; Wed, 13 Oct 2021 18:31:53 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 049ae7d3-b7c3-4535-f5f4-08d98e77bb83 X-MS-TrafficTypeDiagnostic: DU2PR04MB8597: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:6790; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: JbkX//cDCVcUDUxfXKzvQM7kKoEzyRWrVvDeqaI1mrl7CVaBlkOQr2tl+0veg6rafQ2LybG2ZZaY4r8BxS4lBS3sNjvLF3H4bb3vsYZ55dyzefx2uuL+G/MO4RPCb2MzXpGjdpZJi4ZQNHWvvWoWSxpmKCeG8qCNDgxnj7CkdUMPnjha+Y7HtyqP4J5Z2nhTcYKW/gNInOA7ojQwjzz8FJq1+wgkDitys0FGZm3dozlUXUxbTFtaDw/c8bNcTdNHKMZYwIuzensD7pEjfB855yVGmLeB9/6YIT6LMLx+u5JXrz4te5mKhDzhUD5rZLOUECCoIIKy6tARqGBFgI5FiETtnPIsShrGhwD5XHyTC9BSP+rejyj5JGgmPt5cBJEGSNXcJHtqAbbsiOso8C02TsAyTUZMia2uLqH883JUv2/jfn/ZF3Fs9gWogirCxwW4XLgYBGKoBxpd3Vr6w1LH0IjIBgZ18KV/a4l9T6oljmhTS315YTg0hTKsJ9NRHkVVW12K2IMauSBDGrC1iYzraYqj1A7rUQ6Kvp8MM2ypf7gUUgeGR5H3SJUK+UmnUW5ozl6s+1//6TMEttF4/De157h3fboVk7mygJZj/lnHMs2La+IfJfI/ZePerX42wUDr4ENyrl5uiRJp6m7CyeZ6gb31rMH6V2Dgpapu070b4CzQCVeR94xq+tBB6xjYNXSn1SB7KUDAh3w+3L8+Nkd4eg== 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)(1076003)(2616005)(956004)(66556008)(6512007)(2906002)(83380400001)(5660300002)(508600001)(6666004)(44832011)(36756003)(4326008)(86362001)(6486002)(38350700002)(186003)(6506007)(52116002)(8936002)(38100700002)(26005)(66946007)(8676002)(316002)(66476007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 3xNxBve40NIUu7H4Bsx7Mz2OrxdewbvC7EN0GuU08ffR1FIO31njr/saXESiXsGNGylVwuW5LbxMUjDC2LMgWfXgV4d/LfcGgqbT13E5YAoOIX7BCudifzFAbBBirB/pM769zA/MDXZGFOAZri5/lKz6d103L+MvDEOZOFSNsd1wYDjAzBcqmQlCtxFWRImJI8CXokoTA0D5jctAhWsHi9idAfOPwwK3nSi5vi+d7Qzao54+WMEUp9DnlbMOmTfY80tmAuaGizAEfQCcfeAh+fCMFNlR3ID+vHj7D8QEmNbHuAtQznzAXhss4grlCvX9QNmRxLfmJ2BJaDpszqVbTchHJgyDSU0b+BVueMw0ayM7GE4zKzSibOVnPotirmLZ9NNHPc4pjGw/dn/HcL3kDE+NAwepqfSnkIzeTXO7K/L2MBOLnnkznWW8/Ot0gRG0aJ4b/COK0fje+YWZs4I9eptDS5/+1h2cSBkT0oZnadszWZd37hjm5Mwy2bs8kN+kj6B8/KON73Rz0To8I9HcGD32e5ui60K6DM+loVwaiaBIGKcoXf5OT4ncxnRHTjgzZCzKJYjEClgQ96gkLk7UGFCm18vkeDFv6wQPdQyQpX+NrSn30HM8+T6Q5qkaXkMGvGkJBMkP86fH6npqmoOIcYrPSauKfDAeIE+HMwkQmKn0UKBe2tvZ2zSl3TQlqb5gKefxfv4xb4Gl80LNEOaSbHzrURwDq2kBGr6SROGYJDocGlRCZCZXz6cx+ilSsHGKgSXmxzo9IEeVFgkyeiDyjVO5e4VDg7/rsq8z4FzkrhDcJvE0OmGaobVaShoMvefADe/NsuMe2sIBBGJAwslFzsJthyhLnPNZMNKRxHrNgXESr5Lr+Km802ltlr/Gm9J1PKUDoOrje6FzmcXX6jwlY8tHyAfmGtHqxht37YL99JzFOdlJEQZeyp5TnbCZZhTohlECyOSN/CHIF5+HmmbLwB59yGyL3BdYQd7/b9loHH1IEguNVp3itcxffyg1YvYCOapdJD+lfU+jtKnzOt+31nLsJwDaOQ6T7SvvPIJoi8nSMiMykpEx8wv2YnFVIlcdZCgHPvNg4U4V3a4K2iLq0owqI+nofJjiS85yZ6fVXjCRJj2FV249u7Om+VdKQr0H0IQFeEXMqV4szujfgvAbrjpwEmduUU5E6KOFUHzHIZHJDfm7E669OKUVNJwc4I7N8FpuwWIXw7c/hNLBULb04urxyw6dfVQTKmknAJk1E/NKNie2ZpIG67TfHzszwtbIT2VIuRTmmxTaVyO0RjSZsDLOSUrspiKT153S4vGy+uLKGpyjLtGmWih04uzMn4lh X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 049ae7d3-b7c3-4535-f5f4-08d98e77bb83 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Oct 2021 18:31:54.9409 (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: gP/y4y8Z+YUT34vqAGikxM2gt5ViCLAEoSUgZwbdZEvC9xjdcixGupvDdGcjxN8iPVv5Pp4xJ4snW6fd7H7lbw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8597 Subject: [dpdk-dev] [PATCH v3 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 ----- lib/cryptodev/rte_crypto_sym.h | 2 ++ 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst index 4b26ef6747..b978843471 100644 --- a/doc/guides/rel_notes/deprecation.rst +++ b/doc/guides/rel_notes/deprecation.rst @@ -206,11 +206,6 @@ Deprecation Notices has a limited size ``uint16_t``. It will be moved and extended as ``uint32_t`` 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/lib/cryptodev/rte_crypto_sym.h b/lib/cryptodev/rte_crypto_sym.h index e5cef1fb72..978708845f 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 Wed Oct 13 18:27:09 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 101458 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 64C6FA0C55; Wed, 13 Oct 2021 20:32:20 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 7F820411BD; Wed, 13 Oct 2021 20:31:59 +0200 (CEST) Received: from EUR03-DB5-obe.outbound.protection.outlook.com (mail-eopbgr40068.outbound.protection.outlook.com [40.107.4.68]) by mails.dpdk.org (Postfix) with ESMTP id 62315411BD; Wed, 13 Oct 2021 20:31:58 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZNsFfjQ1D3fz5BX17lW/JrCEtCgv7hBZmMWurMRLlBNzAgC64FUHzJTJ8Ee2lfqNmELngVpG4fr1wwMy16pcrHDceb/yeVPVNmjAVqLRViiFXmyTYQ7S0wzB/trgXznQ7CgnGnT5+qTUmS03+lz/CyRMBjlBPgNcnD+4tAvoqmRUovxFC4qsnleN6EkGNUrdzKrFcQpxqRzT/XU+5sV3uO+V6EUxQ2FDbewPvMxuEZ5BLxYzJcIuNYyKeTM4fQhGW/M+plRIWPV013uyzt4C7mq5CI7H+l6xt7GJhiRh5Uy9XBqbbFjcp/3e2vI+ufrF0ooFVHJuFD4WIT5TDfkwZA== 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=3fV331TZzSriimeXyPguybwCyUI5AMS3g+uO0tgL16Q=; b=V/fbfyR6LWhbfC0I/ND4yASJF26xdlNNyVr/vrTpJETGpZDcExuUil4eQ0om8I9w1UelwHPWWKoU4x8HHAR6QmBi4MFBe9CYi9rHaxOrJD5Tmn1w33bwasTdgHEEXKD2L5l+zOUvurQyITVCX4k+N7Cf02WK9bTXM1LKffOyKPC/E99nHUW8R30FbZY9upixl2A7+CsyR/kwh5vYWtzNzNh12OtI085DdKXtOCEqDIFXA/IkvyL+N41Os5bc0Ft5oBHzax6ZI/XcutKqY0fxS352SgIOHZAqLhbXz4pP8rFmkQf2h/24oboz8emiITauGyeAenG91CxQPfHORJWN2Q== 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=3fV331TZzSriimeXyPguybwCyUI5AMS3g+uO0tgL16Q=; b=GqJai0QazSKWOwU8fy4R+8rrQXAeK1Tr60dd/sP+ffJLg64x+sSAIMW/lel0PfwalMxdTZKxP0qSWgomt5GBwsG+ukAgijoa9i7V84IvdkUn8IAiAG3qEor5ookP3MUHeOPsE6ygFM9VaLa6zsPZwY0Dxa7y8iPf+SvIpBRKV3o= 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 DU2PR04MB8597.eurprd04.prod.outlook.com (2603:10a6:10:2d8::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.16; Wed, 13 Oct 2021 18:31:57 +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.4587.026; Wed, 13 Oct 2021 18:31:57 +0000 From: Hemant Agrawal To: dev@dpdk.org, gakhil@marvell.com Cc: roy.fan.zhang@intel.com, konstantin.ananyev@intel.com, Gagandeep Singh , marcinx.smoczynski@intel.com, stable@dpdk.org Date: Wed, 13 Oct 2021 23:57:09 +0530 Message-Id: <20211013182720.32486-5-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211013182720.32486-1-hemant.agrawal@nxp.com> References: <20211013182720.32486-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG3P274CA0016.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:be::28) 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 SG3P274CA0016.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:be::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.15 via Frontend Transport; Wed, 13 Oct 2021 18:31:55 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 120c1183-96fb-415c-6dff-08d98e77bd19 X-MS-TrafficTypeDiagnostic: DU2PR04MB8597: 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: L8eGJnOs8LdV8JFdcd3lD9ithadno/viyDSmuWZhA2Cj8998Tm4B02REgtcyiADfULUXrxsvea/0XvQkw4O07qWKXCh31EFRZr2KFj8wK1FIx8tE7D2fkrMsvTnjiXYUh7XId6lt+00HSQsWNl6Yqld4q8JvVvZae1JF8fMSTkdgwBGtfGP2b9+yKAYXt87YO5fSckuV4vfD7FHBglF7JmDJ2IQd1dFHlb5Braxi8Z7t3p4FjGcerxA+75RLFJvr+/llbofLUthEX4IQZD6dQOC1cBsyMC8hZtw/irZX1omhLx9qWFVaHcZX2vo6V8CtBnwoVx0hBkhblGvO1FjJjRNbsSlx7lro68n5X3aIdAKRZKh1tJf6wAuihvxU3k1WeJWSOFY4Y3cwRliB6P6tW8KBwSZlj0By6tzYeTtbcgrveW+9qGWRmlne7Hpm6dX1x+k8rPGlTbKdhqjhrHfRaJs3N5d9mflGJyLw//IHu52Uxltw3vCBfB7kPMcWhk62O9p1s5niZ4n+dFAQF/FHgviwXGhil0rGegEN9pi7YGgstzFghiO+QBAuhBG7o/ixdGU5B8o5JfA2vZieAjDBwkZH3r/IQNzjH2KorPSS9CI2d8ThZZ9vonTCBSLOos29qTUdtFIwenGwrBGhSlGARxtgzyJ4Zvv9q6DjdEwWHQsnqMffl5eipQSVkizPvkDBSQ9UDuMUUPZyTrFUCclZpg== 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)(1076003)(2616005)(956004)(4744005)(66556008)(6512007)(2906002)(83380400001)(5660300002)(508600001)(6666004)(44832011)(36756003)(4326008)(86362001)(6486002)(38350700002)(186003)(6506007)(52116002)(8936002)(38100700002)(26005)(66946007)(8676002)(316002)(66476007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?YIaqqwTDscs5q2tJ2GZofY5a3QfP?= =?utf-8?q?fgvP/sBJbzPgoEqHfgBIwzjpb5auMQBdoDRTDMxsYTPKMrBox8phRhwmqEHsYQ+XG?= =?utf-8?q?kWXPIFlsn7S8fVO8OewswOAdqXlyKzQ8YlLpa1Heh+zkrIVt4Ydjc19XS0Xzqfmin?= =?utf-8?q?NOC8nZjNKtV5J3jFGBIqLs4ZBhoP9gf+mItya3Lxax0EaT3V4vU+J/kcxEoOJIkOI?= =?utf-8?q?RR2r0pPEO+7qV92GzK436IrkIt7XfRSAxdWywSiZbxzbbaxeFMejdyXPD2oxdl+7d?= =?utf-8?q?S0vKHRo5oet2Tpfd3jm0XYdjMSRUiK45OCSivZM21TOAf1CXC7jYqx6XwtxkU7Ai+?= =?utf-8?q?WAAlA9CqQDxmnGzZuXQ5/uUG5wyRQRUW32qHY7sCzmlzhTJmct04nvR2Hlv+gE7ON?= =?utf-8?q?XZpZPd/FdKMq7fqSGaDW6HZZQ/aKu/AWpanE6D2gDN9U7PB8j3adtcfKwlK4kXDKH?= =?utf-8?q?RaHtw3g/axH8nJbqpmicsckUYVtZ3g6YtULQYm1QXGQ3Rzr+dFc+bAXWhy3szZH9s?= =?utf-8?q?fxG6uyckqSt6TweqBnU6q6SPk7HM/FVCL1ddN8LE4Q0//ebgeoF3sETrnZdkXDoF1?= =?utf-8?q?1t2Bo8+v3xXMF7knAJcyRP8vguBDKLRgtqvq2sXxlW0bdYGLPq3h+XjpwXOGl/1UK?= =?utf-8?q?hoadjelWjcv21uykdVunSWTdO6SVPf5YAZ2MKRtyMNXd/ig/0Pen1MWq6WdpxK1s/?= =?utf-8?q?W/FtKRDXaPh/lIZYzMs7b+JByexvnLegTuDfd8OFGo4nlHOWHfk8u1FZeNZcE7GOg?= =?utf-8?q?9Vf21/BHZ3PqfX5hkltE1UL37qok9OTnMApCzzcw+RlEWwpix38WAcMJnBKpV8ZhC?= =?utf-8?q?ITs7fgsIRYXoCNBeq0PxdOwVzzgHBauXPxGRys2s2lozjn5ZlqJkWLD2XnETx49Bg?= =?utf-8?q?Tt15k0ZcWQh6kIKDl/Pjp5lbzvY+OvFb0EaZMfwEZfSpXFTqjTChpo4i55EwBIn/F?= =?utf-8?q?VIWCMjB6Z+Stxodcwac3Hhkmpwco58k+xw3LEMVf2xkYiKhEMh5C8LuyUAKwEveQ7?= =?utf-8?q?Rlyx0DCWi0QvNUbe1tUQ+3xOXc2eGTsodWEPFkqnqUuSpeSHkk+0pe95283GymKJE?= =?utf-8?q?jVAZiUlaySgeBvfhOfgM4gDoBH8HhLOEpmbYL7j6pbgnkwJScnpUC//7uQkSlGwQe?= =?utf-8?q?tF4X7YQlq4cKqjb6mADMeFjFNrQ/btO1fF7zZaoVVSme6bSQvT9epOgs245uEYZSZ?= =?utf-8?q?CuvVaR3YAa0hWcvF1QKGjOp1a3Uhb+NFibfiF574yb3Qv1xFEmUQJahH/rv9sQsBg?= =?utf-8?q?RhCWUt3QE1sku2SH?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 120c1183-96fb-415c-6dff-08d98e77bd19 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Oct 2021 18:31:57.7136 (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: jjHaecJbKPTSf0jzSQWHxRM6dTq4mtpKK2dJ01iiv9nCLQ88Nt8EVJdB0k+6O3slPE5bdEHL63YDLoli/hTxfw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8597 Subject: [dpdk-dev] [PATCH v3 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 --- 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 978708845f..a48228a646 100644 --- a/lib/cryptodev/rte_crypto_sym.h +++ b/lib/cryptodev/rte_crypto_sym.h @@ -1003,6 +1003,7 @@ rte_crypto_mbuf_to_vec(const struct rte_mbuf *mb, uint32_t ofs, uint32_t len, vec[i].len = left; vec[i].tot_len = mb->buf_len; left = 0; + i++; break; } @@ -1013,7 +1014,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 Wed Oct 13 18:27:10 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 101459 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 E8875A0C55; Wed, 13 Oct 2021 20:32:27 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B051B411A6; Wed, 13 Oct 2021 20:32:02 +0200 (CEST) Received: from EUR03-DB5-obe.outbound.protection.outlook.com (mail-eopbgr40056.outbound.protection.outlook.com [40.107.4.56]) by mails.dpdk.org (Postfix) with ESMTP id 43E66411DB for ; Wed, 13 Oct 2021 20:32:01 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OO3telnEyWY2sAs40w3IqFPYzLo6g18SSM0HkJtlGiwMAyRQcBCZgJHBo8UgEJlaWpbrx1mgBEqA7fj5jUKmmGZ8US7kq/Z1NXrwOSEeQ83wub7QlS8WXJ9Ichsh+RGZTPK0CGlLrRY6Rw2rTDKr/QEGLpbqVx5TKUIycAckQLlc/LSjS0tcVd6W43sOS/F8HB0dTb3tyrA5cwhWgUo8lwfuAMYRs1DKfL71hsV1ZAvbAEX8iBKfrW13O+fBtA4xz6a/FEWdXLp3u/vTLE/yT8vp98oDLMu2yUy6gDUjVsIJpQfR4g/I8AnOhtp+WD/H7wh30SIUNtsENrq53rnIrA== 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=rapCdkjhzgAgbmaJQ/UcFEIO7eCvfLiseZlb/up/OI8=; b=J8afWgazakzyrwcn+SZN6aFS1BHTZYXG5HMIoYsZSKasvMCGrRbZvMQpfAHTKkqnzYR2zJflv2bNfWh4J0tHi1ooR6TVy3TXhIoi5XSO3rn3aLK3cBpeNmzwn1d1OkxTQoMjqEB3zjSH1aIZPma9xIqQE7RYCkZQwf9MY83/iWzHCn4VZ/+HG2ZHZhINMzPxOToFku/LebgJmC9Nw/SHykkvsoOq0ueGwjGgAohsSOVHi5wpHfB/cNR0Bf21MFiCi/V4v+dK3CSpwLnLxnoyjXq3o+ECKetK4dDxdgxCAhkKmKv44RVHoxmOqVuBgMr7RlXrCOboMG5O6tvy1mykBg== 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=rapCdkjhzgAgbmaJQ/UcFEIO7eCvfLiseZlb/up/OI8=; b=KSP230jBp0TvVetkRGogt9/zw4Wkj90pQwmUwKhagPtv9SfNjE6UPk6uZiN8Y+ORiqyNT2ahMmlKuIe0jA9JQauJMVpD5NpMg1kVwg8UT4Ne6Swp97w9GsW+lrz1fG64UsGFlxL45zPG4+58JSPJ7rJhTm8XcSHTc7RrkYNVjm0= 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 DU2PR04MB8597.eurprd04.prod.outlook.com (2603:10a6:10:2d8::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.16; Wed, 13 Oct 2021 18:32:00 +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.4587.026; Wed, 13 Oct 2021 18:32:00 +0000 From: Hemant Agrawal To: dev@dpdk.org, gakhil@marvell.com Cc: roy.fan.zhang@intel.com, konstantin.ananyev@intel.com, Gagandeep Singh Date: Wed, 13 Oct 2021 23:57:10 +0530 Message-Id: <20211013182720.32486-6-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211013182720.32486-1-hemant.agrawal@nxp.com> References: <20211013182720.32486-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG3P274CA0016.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:be::28) 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 SG3P274CA0016.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:be::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.15 via Frontend Transport; Wed, 13 Oct 2021 18:31:58 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 4f3d48d0-fd57-45ac-d0db-08d98e77be78 X-MS-TrafficTypeDiagnostic: DU2PR04MB8597: 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: 44/2dEANIbUxAfLz6RT8pNwiqScxB8/6E9V+8giK2igjbgvl4uxrQewCOIqZ914bjxUduidA1mEUEp+x6sV3+76OuQS/kCd9ciCuKXpiXZFR6xCkZSYE1gryHRw+ELwrbHxpUbFMjDi0RAbR56xg/bU/aRMAIFW/XL6T2e5AA4zRMkVM3E8jKWvAhKKEuuQ7Lo39W1RnEU7hr0WK22UU1Ogz4LpHl0zIdpL79M2pZFARTzZapBiMHSJnNqR14vIRLXW2z+VnoPhmFL6RvTqb08on28JAtZACZDhvVzj5guh+FH9cAABmEP6FP+uyWKQ3iWkwtFewz82MSGu9MDtiCVi0iGW+nhjnAQvIcgGBjdXgdzUGCaFc9RdVYsyF6EXGK9/s9jvxgyvzIUdue9qHgwi5TjGwCZ8FnwfubNfmhCL/f5nmELkXW0GBp7VgtqcABYM+iplTNDw4XSD0n68uBE3fAsPUnDAVs4rk+tv8+kOxVNrjr7cJdwMk7VldSfWgrx3dLjw1S3+m0OmMpP56UKKDS/sJ1DSzawCBVFlME0+QY/N190id7ozI35VXhP0m41DtLSQqOJiCN9OD77FZoBYTZFcVKZcEmT5hrK0BF2bSGdjAOyhEGWUPZu3uT2cM7PHALM67tlFwsTXKunL0YYKH8rQ8P9GlgjAmttHX3ChrarOcrJwBkWErIvfeQEixS8iK06Syd4j4WkPQVXEJ1g== 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)(1076003)(30864003)(2616005)(956004)(66556008)(6512007)(2906002)(83380400001)(5660300002)(508600001)(6666004)(44832011)(36756003)(4326008)(86362001)(6486002)(38350700002)(186003)(6506007)(52116002)(8936002)(38100700002)(26005)(66946007)(8676002)(316002)(66476007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: KcV2i19PVlctvW7T3z8QMh6jxA02M6ib9/juANqggSuwd0gSVqpt0Hu7G2B+KhMV65rZk0V14TPN3NVjAnYH0OSrpmAS7u/Ba3RL1PTYSzhbcCHlb2YZtgvwZ3ENuLrsha76+qT9sQ8P8dumYcoybf085PNznEuPfUVM8Bpqa97ahsdIrNsWs+O+AssnSADCtaH19saN+MxwoEtdQB3lX93m11GV7ghJ/moWgphFiheJK4M8Vg7AR9Z0TXKWVByNAeaxWU5q6EXMjofbtu8eZRojUUkNOaWXpeHbRPf5d1ivKWMYmtiLv/6TjoD0fCCCSMuRpPGFAXGa7/Oa9fijdMHsx3xuZdH3D8aDiVaPjz4G4To88xXMLs7J/A9RtsuO/wqnL8BxMw88nW0ZLZvDremKGIzmEhKUXAvGkmZGzGa5kqMlExH/1DoW83jDi9PTqbkzR7+BevIwkcgv7++YW+gjnkohH0okhrgjK1Tn90tmiAOpSZOcEYBID2qEh4AnYAQE5787CbJcdL2Q4OUav1pN/DK+fkhm0KwWE6z+ddLCCNvQ/+J+BN2ErX0GEpLFvPXB8NhUVRaLvtObpCKctgdGx1tKmII5mTXSzGNMSxwcZCVv5DxUlQ7Cv+vIfQO3T3Jxy1PIinBtcV7Ph9kwa4PRTCvM3tqK02AizXATQCdwSrmBOyRzpGKt2wqolcLBPrW6YoYNHvRhzJjxkBT5RJOSGOxxfhC0/qDW6/X9i8kDl5Oj0253vhMhJOQcghjxHpETduFxXv7XMUIK36hv43kRuZwNPDPe0J1JgU24yFHddjEHs9NDqZ/iE4P+FtnGS8W8ePiWWYxH+9/MppQkEQrKgt24WHQcX6gB9biv9TxtfrXDlED5FpiNoeAaJxmG7j33audl78upzPqhgwa2nwOCPSDjQNWR3h4UuBprGdA5sm71dzz0GHDzbzW/zRpdg3iNugTlI63EUDG6Z6SZTGmOvyUawvp7OYTmnrVRgD/gWwVh3UNXnMCP3xu612uXwi694at1zs0ic4Jlfcbz8fb1TOyGE/OE8fmKEN43zBpEYUUpVLVZnb7gQiYKmRDX9K1Cdyxl8n3+lxTq47TxN7w8YoQ2psudodLm2Ni41qqrW9Fu37wVX0bfD4KBi+D2LMkh85wYmNSclcbw5UtNzApV2yghcV4+06AGYqSCR8U/6oh8liebaxPceseYiBGsLzJaoqwzXshAYAqRZazsULd2Tz8ARZdne9gh27a2p/+uJp5QPHmx1ErOhslRZo2tVeyCY9meALBz0ezQ4MqSnzMpKTvwaW3AEQH5qzfXphmlED1ddbOB6kEwoLX4afx9 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4f3d48d0-fd57-45ac-d0db-08d98e77be78 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Oct 2021 18:32:00.0593 (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: BhTIvHCRnobzHEWe7z7YCQ6nQWPFayLM/k5I7L/dUp02co8tEojGXE9v3mP7CqX6HQ2aTNkl3EfKjt8p9QbgAA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8597 Subject: [dpdk-dev] [PATCH v3 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 a8900a3079..b1049a92e3 100644 --- a/doc/guides/rel_notes/release_21_11.rst +++ b/doc/guides/rel_notes/release_21_11.rst @@ -106,6 +106,7 @@ New Features * **Updated NXP dpaa2_sec crypto PMD.** * Added PDCP short MAC-I support. + * Added raw vector datapath API support * **Updated the turbo_sw 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 Wed Oct 13 18:27:11 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 101460 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 5B54DA0C55; Wed, 13 Oct 2021 20:32:36 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 237E4411EC; Wed, 13 Oct 2021 20:32:04 +0200 (CEST) Received: from EUR03-DB5-obe.outbound.protection.outlook.com (mail-eopbgr40081.outbound.protection.outlook.com [40.107.4.81]) by mails.dpdk.org (Postfix) with ESMTP id 1D826411DE for ; Wed, 13 Oct 2021 20:32:03 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cTLKm4RlENkzBMiECGSUtSo9NidPLlvnUWAZRfpNBu4fYCQ71YwLSkDRvAujIVWLvLUTyW1gK/O/zIHT0KaQYxTkldNWYawi1rPtIvPeTxz4JHahE9P9p+ytObpMHX8qrllhewDtidpEY7SXtzNG/HeC/pWYTBk7YtqRmu5xdRTLKy0rsdvt9VVMhQ/nRENYPCF4v/ErATfWixmJv9vHqMbs5QM2SzVv8CXcop7+WhT73/mbPHSX0GQcThDZ6XwTUZhiEin08mLHgrTu/Sbd0IRW/0PNy2FhfdPhbzK0mufqQZQOb2OtOr+zGNpFm+MhVMLodKL7HrBqvTU8xD1DHA== 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=gXahdGKkUJokkCnQioQDTr8+N14VTou3WE55X0nkS8Q8fiAwMgyLzgXL4U/KmoNJepAiIQihYP/5BouLxKe053NqGSobM3/5TImpxN1WMUNHv6hVcwTFowXmMYNT0OCiymEYrWZP1zf5eLVWf7Ou6+WPj/ITkSu3CSKgmDRLIxQMQn2Y5CiqKVPAQv2JkCcVeyuyF31NHc3dk2Z7oirvBuIntb6AtHvmROWCCWrJTjiWRCKBcowikjWci3rGJX53JslWhgt5LM8Bm2l2kLYQla2yaN86byXYvrsozrBo5tRSf3/CncYdyCCrzDXGi2ba3qMiGw9zQW3jPQOc+2fHmQ== 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=MlMPpx1i21CHds9GIofFnLAUXbNMlxFNKtftwUnDROaVTukkfBGbE1bTxlbfJIK+OU1DINfVDYlnHZ4eiqa6sjDZrKdXKNxVAQIMmy3pqGD6Y0YEeYPU/idp24gZQ2UheYxETOJ/sBAn1Qkleus/fgwiYX6sgCYUpCIx/8uQ5Nw= 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 DU2PR04MB8597.eurprd04.prod.outlook.com (2603:10a6:10:2d8::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.16; Wed, 13 Oct 2021 18:32:02 +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.4587.026; Wed, 13 Oct 2021 18:32:02 +0000 From: Hemant Agrawal To: dev@dpdk.org, gakhil@marvell.com Cc: roy.fan.zhang@intel.com, konstantin.ananyev@intel.com, Gagandeep Singh Date: Wed, 13 Oct 2021 23:57:11 +0530 Message-Id: <20211013182720.32486-7-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211013182720.32486-1-hemant.agrawal@nxp.com> References: <20211013182720.32486-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG3P274CA0016.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:be::28) 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 SG3P274CA0016.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:be::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.15 via Frontend Transport; Wed, 13 Oct 2021 18:32:00 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 96a0beed-1ab6-4ffc-dc83-08d98e77bfe0 X-MS-TrafficTypeDiagnostic: DU2PR04MB8597: 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: AicSFXl7D2CWM2zXqT4v/ywIGUVyesQT1nZe7fIztuDG/Gi3dtA0kM9u3kFemWBV/a2AP1OxILHWjTam1KkGsItXp+L6mzieNnjU7FMS3Zs4F7e8jZsdDNtk4ROMRlj6wO3Rdu+GWpH08VeYafxVrcOnaaWC1a+QkEoPLNMZozJCnUHnjgyO8zyyrLA5EI6eilKKgDGPro/HeKTajeUSN8eISxu2Infd1gbro8kDrNWj7jofq8Wr+72W2npMyRJaD6EMU3p1ti+o3gA4NCeCk6TqRKR9RgO2iCBtomWD7qI87Qa0E6dmgvAw+SCOBxuRMqdFIuBsiJITwVm+8Dj+Eag022Y3fgXYb1omlxzKDzXgjNudpTduzCYF1pCwpX2UuVEAviZQADfzTVqyCW3kZH+Detj+OYNmeQOwEGeyWl/bYTfveHCKvIFxUhbwyrjbeszR12VscZmPc4W7pvA96myZHcW5+4EoJxc0ZDsZ4V47+C79FdxH6VUe/SXZJDMw6BVod3r++VbPlR0zbKFe06UV9HdWdImhLmvEfNN4Zoz+QNOX0SD9Bb+Rwf9e/aWahiHZNZfWlyNZ6ia2k4ORRJg7O1UikV0lP/B1oMC1MvlVN12x/SQSsEGFundBFqEOLaKmq6r/2e7Dm3nDHhSoyhsgJ96xYrqwQ4XAq9+pDNtgPhyXtxV13dI+XpcgIhZS3pILYLSEfyq7SrjMGeSAPQ== 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)(1076003)(2616005)(956004)(66556008)(6512007)(2906002)(83380400001)(5660300002)(508600001)(6666004)(44832011)(36756003)(4326008)(86362001)(6486002)(38350700002)(186003)(6506007)(52116002)(8936002)(38100700002)(26005)(66946007)(8676002)(316002)(66476007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: OQm35AgD3NImZEwp8YAnf3W/jfxb51Pn7C6TNd7Zcg6S4BSu7JL0cbKVybnNKWI7i5FYxhQMgl079shteXiD/LP/PtQXuEC+nR5gsvduY7nwuSjXATSOd8ybEqmTYKPA86IVD2nFG4ZqIp9G3aWIZmBRHJEkU5Rpdi2GlhBz8dsm1ztcD2hkhqobtoSqlV8xRh6kuyRAfSJ0nioVHhm7l2uaBFqoF4LONlUnF9EK9cLQCAUgE0o2qRaNwy6TVPYpJBvil5iSQ7UCAYzi0kD5rXDrqD/idbAmQpvT/YxdZaRj5gFsmbbE2wnr6JtMSQG1UebyiEshTFdflPCXs7viLRcnK0uwb2HMopAlenYM0SCXhAZeYHZROUJCs5wtZhNUQrNb0eVzaTTMQbQsT2GRIwoA8Rm5veYL7A/6ApP7xvR8E/E+CjG3eWg4mBIqFCw2IYfgpvBVu6Z7uVvXCm9cOpUq+tCjn7gw4gF3vqVwLcyDpf1/lo+h4WuZw99FlKVq0ofSjW5pNml2DhiyZkMWFU7C/gbunDBRjlP2IM3vmWcS1ZwSRIiPfpRTcBjRT67zamTkFh4tBGWn2p96PNw3UDFDxehBAupeRY0N4IjrRHTWLVvfRWAi+zkpUCfuLi3j1ZCWSPYN/1drKA6E1c/9C23erbetXE/N6Rs6gq13z9CighGwwfpiR0GDKaQd2C9K1PP3h9sTnZrHojcOLAUNu+2kNVV0kEDOgZd//3fNSSV+xyyLwoL7Z7l7rNnMIwfhSDG3+rBMn89SJXoZCnSSTp1Nnq2y1qgOV2CNvNrc1bW0inkXzJy/adbGjol/8tW4kkUDDB4f4q3O0F+J4Wz2u78OZHYHdnI097+h+O5AKrPVX0IqhKtLItzyEM2H0SpJ+ScSTxWvVt38rLsaS/p+PKWC0Gbs4NUTqS71Q0mBRmHdna7tDQWdl14wDi4h4wG9PDPhx6GolWqMerbN8n1QXtscj1fcHGIy5+E+AcigUtNwkZd2/9FRVYBNbcOdPFJvJrxWSyE4hygJEbR+g5HcqqLACDhIRRano72PvyigfmyIW/htfI3Jk2Ch8A2vpqNJ70DfJiPTQ1IZ92R1K9slAa5UfYHBIWZ9+ojjF2a65kSqISau0m3U9PYOfGugBnuvzByKhHffF2EIOmjeBOvb4UQabR8Zy7Hfuv0ewgiRmx72zFwaj1g2OUS9YfVipFAd4y6zTnFzA+pLFx6mlTCuWpclUQy/AMdB7wogP+4ir4xhQK6giLuBT1M9soPiFybKECxc+wPlFFOY3c/Q3h41L8wf9sNj5EfsgtI7hGqSw8IwKXokbrFqikzDfvff9sAD X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 96a0beed-1ab6-4ffc-dc83-08d98e77bfe0 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Oct 2021 18:32:02.2456 (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: XGd3GF5NAJolmei3t52EzbNR1wH1K4QJ22QBzQqRFrBI/mr4/e51MUTxnvNlD3Ft+TjStaNWyV5Gu/Ya6XSB6Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8597 Subject: [dpdk-dev] [PATCH v3 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 Wed Oct 13 18:27:12 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 101461 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 9A0FDA0C55; Wed, 13 Oct 2021 20:32:42 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 45592411E3; Wed, 13 Oct 2021 20:32:06 +0200 (CEST) Received: from EUR03-DB5-obe.outbound.protection.outlook.com (mail-eopbgr40087.outbound.protection.outlook.com [40.107.4.87]) by mails.dpdk.org (Postfix) with ESMTP id 2E19A411F2 for ; Wed, 13 Oct 2021 20:32:05 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cTySFWR7asOLJETDvstuCsxXCQwVOW1YtDkkFXvOkGQGwn4BJUGo3xw72guWAV5XynVikuRhf+RwID7LIgOUwzfaZhhUpMM2KZLwj59EoFgxuRLy5InPjyRckrquZ3aCZxufTQRzP1BrH8le9Tx7AuVxW+aLXcjdOCgenw7FyBrPLfwl1quG2idKFO2rj/M6GwNoU9gcj501Rq4MVmeh5blsf8QJUwunh7nrur7UCEnivFrdxay49gjvjp1yr0T4651TG5Q7u82z3a7EQigdzJY0LEgkZwlJasfSXD40hmEnIHIxykto62nKtFhdiEn3f8zWR/+WnZrdEjWyQ9kPlA== 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=BVocij4JXi6zCBh1vbQaas6K9HjsOT6BP7byQF2oRxweHwrhM10HFwyRMTbrTIeXaz5+t6OpUNTogNgwJQC5V09g1ybYVMLXyXcv8JMBHgG/1qSUvRUSPLT1j773BSwC4x/NpIIp9TBryV0M5s9m/Yp6jNfos6Ygw1jtftImABA7PrFVG4ciVN3uffa1NbJj3x5V66kqGHUdqJo6maxhgQ7z6nZA1mj65tSBdKL1d5xVHO06tO6omIR53CPwF/vjk0JXDzKOF60knC1yJr1WALERow62YE4lWXEKT8wDAG/khBKlUEV8j5Kq1i154A9Qr/6aEnA/ANC3aXwxzYHZlA== 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=j9QXNNedXY+rKIC7s9qeIqY90IUS8En6yWEZ7Aw/gjFPgu27RyXh5eZO0T4NxP2uln0wyiQ0IJ71x4SlXZVJCOAPageGmHGCQASXdZSVLpGvPZq1ZawPwB5jOsRhhVW7gbb5rduXU5GAvwug9fbBZ24SR6mC/0qYcjcQpBck9LI= 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 DU2PR04MB8597.eurprd04.prod.outlook.com (2603:10a6:10:2d8::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.16; Wed, 13 Oct 2021 18:32:04 +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.4587.026; Wed, 13 Oct 2021 18:32:04 +0000 From: Hemant Agrawal To: dev@dpdk.org, gakhil@marvell.com Cc: roy.fan.zhang@intel.com, konstantin.ananyev@intel.com, Gagandeep Singh Date: Wed, 13 Oct 2021 23:57:12 +0530 Message-Id: <20211013182720.32486-8-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211013182720.32486-1-hemant.agrawal@nxp.com> References: <20211013182720.32486-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG3P274CA0016.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:be::28) 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 SG3P274CA0016.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:be::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.15 via Frontend Transport; Wed, 13 Oct 2021 18:32:02 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 55d2a03f-e7bd-42b9-6c4f-08d98e77c132 X-MS-TrafficTypeDiagnostic: DU2PR04MB8597: 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: ti7hche/ERDrLkwcHDhVgJcMlsLNynHs5TKE09srRK69OAfSFC0+4EQQv7oVUVWwNQrE0DoTXXjx8rf0WkLmsSEQf0Ot0MlIoEiB66Y+eGfBdgNlxflRfl6DNKiwboQREq8c/ViCyKMQtlolILBnq4M5KTntDcYM25u9Q0MxM6Mv9+PlS2d2En69RA7SBvD0w8lAn3HE37tn5gEmzjUkJhlPHQ6dHBhOOvrNLIpBBYMZzfGLXyllcrTRlhLrBxxQ8ouam0AFWwUSYysgh1vqdku67V1MOjKbK0Ldf/r7hEeLloF1rHQMWqDXT3IAWfDGI6/uP/J4tlZuxdKC0iIECWRZKJRYAdkZWp+THS6BJkZvxgJHy01v3ZvVwPfZ4ujUbSAkc3EYT2+pUaSfkU6N4mQQ3g73Gy8Q/Vr7XiimBel3rAFGQWzCipPI1JWWkEkWcqqH2BjfG2if6ilQaENCMA6ofluM/p5hQ7w+fnnR6mAQv3wnR102718sRGckK0iDkYPhGBg+WTYxURrR4t8VycciU+/558vKWkEtlAivB4TVo20Dwlufw4+cOm/qqREQ3dcCTEP2bSchclgQ/z1EAVOxov2X6F3fhLJqdvB+Akj75OMjCTnbrJtqul94AVhuif2QvYOtNhOiIrxuY4gDCVyM2QVT2BQ0PhCxUBTdZwGmUE13qu00jt9AtoJLI/lNQKXTgiIBOD0t+XttaBVAWQ== 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)(1076003)(2616005)(956004)(66556008)(6512007)(2906002)(83380400001)(5660300002)(508600001)(6666004)(44832011)(36756003)(4326008)(86362001)(6486002)(38350700002)(186003)(6506007)(52116002)(8936002)(38100700002)(26005)(66946007)(8676002)(316002)(66476007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: c0L6T7yLUQJND2toTAkktL+/GOuT9QPk+LsqjslbQR8rMp8uLIrsvxgcAUHeZqmbRm5HwXKvI8uwYqAZ8yezUnwagv89ywld7o/34JRzQefAZGiHvBnhBVqv8XPdHJJrrHzcRyGokukjGZJex80Vhz0c0X+5Bg084bvJLkWtNImDgCT2fNlNrKiV7I/l2Ipt3IftLf13x+fSjGu/d8btwb76gdrtV9xT9vx/LWgNUD5BQ6XuRa7ruHz/qEoDmkE0hcOm1LEhMDBbi6Qy5UhmC5mWHUK/EVNHbHPRd8RtLKp3wmEfbRyUPtWBrdRZkiHAGxmqKz8+BTv/gUL9DbANZrE9mT8DS+GDHp9Koar3ZMoygKKm59Za9dqCjyF4eDMiPcjU/37dFuXJAqTbPU7xAoFUmy4Nm85sf0uNDJQtluGrphl7WQa6gU5T3CEg3E5P63NUqFNvZfqRpwfC8SQn1fT40ArDnc5Zh2nXdnaRVNwqozqdQvqVG4uJUWDSUEd/0LqcZIwlnFN7nIR5K9/HHcwzLKCxghPm1j7WKZYSvuKwEw+X2wYa17ZDW3X/udgkoJ05zRTBLNlxFP/JJmnj61nFtrNdyUonzHebfXRdxrHI5IV5dsrgkNKPcul2ubZ7oFjp9vmrsNT7cxusIqRTiIvqs4eT+f3Zud6Gr1XBX2UMHbqL9uw6yVIFm8A2MBVMHUTuSxhrmAXDXxaGCJLumF2IqUnWzfrk6EOw8NBEFR/WiHaK8Xg/41mMyNqA9212sA0EOFrDB1TyA5AqqUibwSriRf4puRtEMHyoEHNsQT4m4118wdiG9dUfAjBnJZQ/R5oCc1MOHh+i09xvdiLy7MlKGr9g+cUJMy6hbM81ViqN9brQiod0Z05Cl42Wh94G7u2y+h/3+XlWFUiGfxgT560z5ATI3WdoXnDNnNjeRBtBtlwZ5zeNpgf7+ncATxoQHebYKuocTWLU9ICeZZ0pI557M74tDPKpEbLOmHZJBJtjBkDVFAzeyP7Y/rNlP/4V7/R/6cGuTqWMnjF1Mb1YoBEI0dx7nzAv7jr8ePRTacdOj7ekAP89TblPlBHGtHzM3xA96ClLzqf7ANFTs5Uf4ueHVn005RzIHOSxSsF7McKPB9aY8g/ZYTLIknMq4QE0N0GDSdi0fg54c0cWE438LaaICItJthgMu2ZXclcucdv1cXUqfBrnAmV0+wMW51li7hoCLXgz14XHHYQtbE7tet+3r22QjCWED34PQQBZPwyow1nX5gD0HoQdZp711Ahs5DxLeq+F3uLY8rm7K851lNRqc1QMiAYnDTFnsc4EizN4GlNLzJ+cAjyImNc4M2jF X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 55d2a03f-e7bd-42b9-6c4f-08d98e77c132 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Oct 2021 18:32:04.4649 (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: XjCNFQyyLNHkOfzUQgeM4etmko1IzdaAKqLf92G3F54RXIoCSfslJfc0nJ4xSTqvmbx/+cwsVdC6R47pWNf3vQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8597 Subject: [dpdk-dev] [PATCH v3 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 Wed Oct 13 18:27:13 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 101462 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 BEF9CA0C55; Wed, 13 Oct 2021 20:32:48 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 5F832411F6; Wed, 13 Oct 2021 20:32:09 +0200 (CEST) Received: from EUR03-DB5-obe.outbound.protection.outlook.com (mail-eopbgr40044.outbound.protection.outlook.com [40.107.4.44]) by mails.dpdk.org (Postfix) with ESMTP id A0BA2411F6 for ; Wed, 13 Oct 2021 20:32:07 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SXRRBktZmRu7fMRVSl1QrJHyYur7G1Kb0GSfwWNthzwXDS2AjyrYHPiXtpFOaEUTjxlgrO8crGpwuf0QmfRKjt/8GbKDtpqzFyYgpsGeKPyWyojUeyYDj/QGSLrVIDPd+CEH69b0Pzn8rTGq7M3FfAGvEyfC9R5TmerUwJhEpd6KJFm/FSM+ooXLMHMtjfYxYWQGemEQOLu+jlE45/UcJ9OejsQx0Em6zYa4bn0/C7FX+O3bCq/H7odOzYai3nLOQqD4Q9UH2ZiZt1MmdT4+Ao0MDHT5BuuyY8ljXmxzV5u8G2I4SYZVPszDB6l9aeTRoCwOp122CR8/qEbmygcauQ== 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=Ki1+euDD3efyNZO9hTYtfQGDBslqZ2QXjBts7YWZZPWGBKsrzQtQqTzqQCOlXCbTbTC0mxYlpIma7+hTvoW4T0EJhg0KC1vzQm9aRDqcdnNw+YDU3HGhA5kEtmf2pNaY3/Sf8yUw1kdtPaq9jH5NgAyJtdbFGa3hjorPTsBO/BeHTKDw0Nd09tK8+Z5u6oLk+I5dgiWHmAPDDXjL1JCeSsIMzslz4/CShtDJBZXnC5dfvNNIC5S+uXYnydF1ou5Ur00qgz9o/iecOpz+bCTPNtWqNQ78gxUXterYjI2MIupwH6R7tHx+ZciEkBi+Gornm7OxP82nJPipHG1Gyl0+kg== 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=mRXU/4rIuFzYvVXUN5RvKCdJYe5vdjT4dkq28lsbxzIyRmxoHRWwyjVwCQwekkIfVdR7l05JypexxPSThLDFC777oAPZMKLHN9fsQF3Gtdi1gMc+6X3zIs+MlwNoyt5bRdKzLdbLKxEFcJ6kPt0r3OCEiNN7iMJqUVsr7oA1Iqk= 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 DU2PR04MB8597.eurprd04.prod.outlook.com (2603:10a6:10:2d8::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.16; Wed, 13 Oct 2021 18:32:06 +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.4587.026; Wed, 13 Oct 2021 18:32:06 +0000 From: Hemant Agrawal To: dev@dpdk.org, gakhil@marvell.com Cc: roy.fan.zhang@intel.com, konstantin.ananyev@intel.com, Gagandeep Singh Date: Wed, 13 Oct 2021 23:57:13 +0530 Message-Id: <20211013182720.32486-9-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211013182720.32486-1-hemant.agrawal@nxp.com> References: <20211013182720.32486-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG3P274CA0016.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:be::28) 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 SG3P274CA0016.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:be::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.15 via Frontend Transport; Wed, 13 Oct 2021 18:32:04 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 1104fa32-d136-47ba-8dda-08d98e77c281 X-MS-TrafficTypeDiagnostic: DU2PR04MB8597: 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: vLULWAFsHheTe1D/aVBmSlTkr3N+mOCnJHwMjfXAZkrLrULfeNQFuZd/QWOFliBfcyyQAeEXaEYxuoPFVQuKSeWgNtfUUxL6gfT9qxpQT6gkH/IqnXRwr/rHuvPyeFUec9AskaBEh+npnYBNGaJ0nOXA5YPaD9x8Bp5MwpPq1ZfW+lHdoymi2xkTlisMAlU4/rRN1LqZSDxZDkwLVgKP3zdHeIuELgHcbcVe2snSrqQJoMsBVacqapTlEhce7fGlxjzAvm98dsYPt/MMLqh0FzCLHonlfth1mFrhalLk2MCpSs6bFTuWGSr+CtSm6nTgzXkxLcPrhrad7E2Eu+w/FQjYAO9rmx8d7tMxXVwSeHgZ2jLHJSfBrNh2Dx45wMLWiqCI7pO8Khj4pFAH/P0n+HoG4NiAEVIlr4kwyO+h3vCRg6NKs5JMmRQaUY2RDOF8N7pIdMM04weoWfiZSJ2ldOje48pklxftYK5zw773yHAqKAv9Uao81YS8SB7ID4z0sxA8gA3/0Q9GhWwoZzUU707C4jTna4jxtvkdzS2O5nTjuzG4fYWLfTEveA5ezaO3aHoMU+tdgELBCExTu8gk9NGBob6K6MLvS9xGC+pXy69o15Cjl3ZynPEROX01ymIBpRKDQOH94uksZnHH+1heRVHx7FotBKPMm6cLZbBar5objZtK0sUtNZ5a1klVKkmDDEhB/UM5OEsuo4MUl3oVqg== 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)(1076003)(2616005)(956004)(66556008)(6512007)(2906002)(83380400001)(5660300002)(508600001)(6666004)(44832011)(36756003)(4326008)(86362001)(6486002)(38350700002)(186003)(6506007)(52116002)(8936002)(38100700002)(26005)(66946007)(8676002)(316002)(66476007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: /Z2Z3mkx0IeEASQgeZrcgTk1XS8HjA1YCYbsNAVKs7KGDsJuJrhlERh+aAvUYUlhBePRXzA7HAQTyPOJOUvpWN4wg3isHCOYZn2PunU6LP1H4b28IXdmCTOM5EqSwZkhsYV1+QwQotL1yDAnxYvRCjhGy/cMLGLtw6XU+PCIujbpy4Brh18gTvZKOCxdwuLxxZNytc1jHZ+5iyWG0ySBWQB3GEt8BfzU5rlN9kvYvc4+tURKdzsoB1W9azNh8IQO+0UOJ7wrFRA5Dtr6okckKXpP0VXUnldXz7G7IoyhmCnXwLNUJYz19tUF92nwegD7qO0szG7Y/mlMKpXemDPwcyP4FfAGDz0SwiZKjsBqK4GfJ73v7E/2P6RJ7p3cUhJ3CYiUThRjPjQZApItnX4+a4D5RauI97Auj+nOvP20r0pDSXLyrXlt2WyWnawVqlaXEHdICZGxr36lIsdO9iAJI0tj9AItb1yCG48zic/cHxtrr6XV7rUp5Ody86cs+GhMYyMfiG6I5IPJfghDkKCqnmmIw2jwuTvfXeCKKVhGJT0xJe4w9j5WTJahO5h79mhnDCJSaLIsAOQBTVJ+3fgCqtexHeQ7VjpZ0aUW4LUsZLEIE7cEZbXUugNM5p8uvXfA+5S61R9k/yqtoUOcWM/94xvmkFyCnbBnxHLGXcK9ZV1DlmALqaJvwyr6s1W4mCA1BRMTCR9kvCo5/WNagZ5YbMALjUifZb1Pu6sk+DVdfnsRZVOV+u1PtGHc5+G5hZl6oj6VBE12MnOpTN4ot97mSavS4KX51kkpKwg56mXf587GkZWvVDiG6JPIeohwP8PW6hh/uAxb4leNE6j72SX0ml9zaK6exDB/YDnoZ7wR+/2qMGjCOE7jqU4TUQs8NLuaQ1HPii68v+sseP79Ox9n+x52OkaPQ3txngrVEOZ+qdQtknpEVO04RLZpi122bC3/7m5ouS7sxdQV+pyqJ8GbYJFXJZZYxZeMhzDCHcxHVdateQ/8Ba2wiI0bwtWvFlGtML+iwG/hwIhKrfxGyukB8GTKCnLEI+NvUho0w2h5wSNDgy/c3Z38lpc6MtinqbX8NpZWRRh6cR/lkPFqTiaEZ0dYf4i9n9DpP2Esajtk45B6ct2LCPwLJPWHcjVMZHgTztWfpIrUKG/suECwDiUIyvfSIX/pjNIDMHdz+umJ7cpROvzJXIl/9R6CRxrJFxitEkP161EvR6pAxzYl0iP8Lr4mJ+HmN1kLe9kJF5JFqdUCLF8y5hBIZ6bdS5FOJWxCsEKS6M7RZS0QLHLMjzQqG2l4vwqEwa4mFpV13dXIMk7c+xalpRLnsRC/jVmDiyjE X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1104fa32-d136-47ba-8dda-08d98e77c281 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Oct 2021 18:32:06.6681 (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: 9Yac1Q1/oqUbMNp6LG93cT+uqvW6YLTxqE2ppdtB5WWnuX3t/26QLq8SwIdLvxI034qpej6fgJUklAW+WGdlzA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8597 Subject: [dpdk-dev] [PATCH v3 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 Wed Oct 13 18:27:14 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 101463 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 2D59DA0C55; Wed, 13 Oct 2021 20:32:55 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 845BD411FC; Wed, 13 Oct 2021 20:32:11 +0200 (CEST) Received: from EUR03-DB5-obe.outbound.protection.outlook.com (mail-eopbgr40058.outbound.protection.outlook.com [40.107.4.58]) by mails.dpdk.org (Postfix) with ESMTP id C91E8411F8 for ; Wed, 13 Oct 2021 20:32:09 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WHV6jEPNYnOT2e98X7cnAfS6b5PoEcLlVIsI7VOor1Xd3UMKxkXavDkoEPrhxtn/bcQ5R0GFT/emImKj3sM7vnDTKKejXH+5SLOo2sdTCYNYx0v5lgZHmVRhMJ7ZZeB/+VI2aGHwaxIn7OILjtFPkLvrKt8P8RIgPiv71WGyXhTw7TBpHSCMdP9Rn1ON0tmT2EQTKsBpwB2WS1iXrLVNhX1/o/zmLGSNzYYrsbSBbIyJUWuZSLK7BY2JiCwdBHSGeGd845yKWtm6O2HQwtwydzT5jl4yAN5EH/CF1nJ+jgg8HKob3ZO1+FxFWGhXBrNNrT6W9sGkUcbbTaRCm86DsQ== 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=ZjgY7LSV7gMfIu9x208QgtHKgsTy3yatteQEkpahXzaBP9ji2flR5nw9LEstjtcCN3uhxuqeXK1s7nbN/+h4JtU/K5t7gm6cIWSnhplKeJePI1546GLcohZodxj6Ct7pnN2qRJv05W9SZPF6jymVTxUcYYlvh2enexwZTvtVuq9TwfBVhBvgVwmGL4GmQNAM7DN0O3yB3P4N0/UN+R2gLFmWRV6jNp8kbEDrlxYrmvjzlyCd4eREPrVhVtfL5/+U0jQKUtcl2zPGCYxT+hPW90Bvwe13l3eaZd9gIHaWot4+9He4afPWD757OGflaqrb5mdOo8KU1RqyrFvNUV5gOQ== 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=LULi8syZeTAXTErxfP/jatGnS85dKUPFUpz6E9TwoJvzvXvfQquVhYkaa4AfzuRT+s6s6c5gfghfPAOo2p75bVXbYMg4bwlPScNJWS7YEh43jHQ4Qolhg46e1YHF0OsWvxcFWTCiI0KvmY4U+HBalNkDxF0kcWbeRUNZe5jUwgQ= 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 DU2PR04MB8597.eurprd04.prod.outlook.com (2603:10a6:10:2d8::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.16; Wed, 13 Oct 2021 18:32:09 +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.4587.026; Wed, 13 Oct 2021 18:32:09 +0000 From: Hemant Agrawal To: dev@dpdk.org, gakhil@marvell.com Cc: roy.fan.zhang@intel.com, konstantin.ananyev@intel.com, Gagandeep Singh Date: Wed, 13 Oct 2021 23:57:14 +0530 Message-Id: <20211013182720.32486-10-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211013182720.32486-1-hemant.agrawal@nxp.com> References: <20211013182720.32486-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG3P274CA0016.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:be::28) 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 SG3P274CA0016.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:be::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.15 via Frontend Transport; Wed, 13 Oct 2021 18:32:07 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 917567ad-49d4-4d85-54c7-08d98e77c3d4 X-MS-TrafficTypeDiagnostic: DU2PR04MB8597: 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: LFrdeaJ3/ihbH0Q8JS4my9oY41rCh8/Xh+fcDcPuvi+e8xI1IWZ9bRfp/lxoa/J7qFCX1Nb5XXeBmWeNCi/Mv80MeVQxY5u8NTJmNsAbMDWdruAFyidkNA1bS4DPtRxsYCng54geZe3zDlOwaB1gMrmILmJymKlsYskqjAlSmVa7YyqsX46WCd+00fihB9c5lkiyLRfNRm2DDahByjLJSr/VmDr5G/g5yRpcyyjybZxfViofHzMlv61/UgbaXR60jQnJoEmxYGoKjWvXkm5KHcqfwb2NQIcC5EAlQTRSJ9lskpji0Twlied6wAhi/Db5xIRUugmcuXHWgz0lPeVix/xkYekEvcibF9WfSlqAKZ/VBKyfdW9dBCsB6ZJRy1IoFdJivhbrZUrJ7RNmcgh7K1qRpC2waoapkQ/h4Ec+XHZTKPDOXJrMPay/XUDwExoRuz7Pq0SkmFhWsqtyaeFOJ+42F2z6pL3dNbx9K6aiHvbcOdE5TS0d9esZXK+2KUR2kenSueZFwYcxZEugZ4Hhyls2kjGN/ak0uzyRw2QBJvRm20WJoDM7kWcPVrtyZtJkpLHr3+6Tq1/4JZqCwKEiZuiebEmVmcJ7EGFX3SkahMEK7zUUV9scW8dSIg7eoIY6B4tYLZA/9V7RTU7azbitkQwDZAUpN5ZXg+VjetRodwxJHP/Bf3pjgOh9Z8DbVVwg/q6/ndW5LoEFCDY5GoBt8g== 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)(1076003)(2616005)(956004)(66556008)(6512007)(2906002)(83380400001)(5660300002)(508600001)(6666004)(44832011)(36756003)(4326008)(86362001)(6486002)(38350700002)(186003)(6506007)(52116002)(8936002)(38100700002)(26005)(66946007)(8676002)(316002)(66476007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 29P82a7aZuG5FfYpYGnAJCR+DtyIiuRwXu2vrLD9m3T8t8onKPYjXXgENGaZ+h+nFV9EarUfbq/mmj1OrANBpIYMs+4HA4tcnsnMv/dNHcSyPzz0IBpUhR9CjtbrYUgJuCOdbhBCLopGj4XEjcj5XMWlzKq5nN96Q2W+e60xz/E7q2zbqjnqaGtemv+v5Jx4xJsY845KDXFN/FQa3IVXm9f7FDeLKdLaDZEqk/frNugYkeMcEYvvVw4C8xXZeuScd4/RNFkPfjSi5vGG1/tQYkXZsmXMKO0OHV/jWtyFDrMOqtAeuaiGLoxZoGlCcmEC261EyCnf4lCcE67s3jSozz77BDJxhI/6vgNegFoNGZHL1afoKI/y1w5MPNvfiGL5R/XR9np9/L6zv2h7x36nhqrFr5atV/6SGVC16CACN4KX+fXn9UjrRxfDCoZL96X3bf+qbgoXwHQS7ry1Z2I/usibOoz/uLqUmy3ne7PYMCKYXqBfXDW+r6/6aIz29w7T+EyJ+SOtDdlYeXbqFdKkNeXl5vRkKQanT3CBfq10A+ygsd02W6Ipxt2AtOjDeVI+UfU44SnGgPk94dRAplzQUgJzQmWLPOVdr2k+h87I8BNYHZlVNdoH9jT1M1c8iGZDgZYev+nEslz2v8zhJe0NNykGD8v7rESGBLgcbRVo3DCDCidSi54e16j+9Juk5dck3wkfkQMpWsawaDT8SjISw44Ixy64Q6F6Eo7UvuZwvqWabrRBMpqxiB09K/MAXyV48LEw8mylQy+5WqV2cNudEx7p8dfguV0GyWuDCD4lEBBGpGV0tacf36EWtaMBOTd+sU2xcGnk83iv3T2MOA8wk+QYXo3mKpWiOPgVKtX++hbKtvZ5AMmKdaJhsjx95zYHoSlET3xbpp8EgD+Gb/ljeV29bQMIHYw4UuMw2Hk3a3HGBP8bjdJs2h9pQGYS2OUpZM7y+pysFpwgjGblJrOu2HdvhORE0et0uU07nz+K9+t4HpBT+gCgPD0S27MhhlyuBUGb2tYU+zhyODKftrLbAgUqc90L4rbdfGBY+pYGXNHtq6dTu4Da8OrL5qkYPXb43EIHfX5bLV58dRA1NxUBLQVMkd0qgKRf2IphZEf2zqYfJJc9vZen2298OL2MctVoMmXR7x0KpXTgFTo1AuOfen8vIZSXg7cXfKAoko1XqSVPRzgaQg2stzRQISHowMNFRkFAoNSI2X/d3RxHLuPlwGfUDgifHIMn0Q8MtEo1NYttNa9gCIKtayntJlqMIyPQnU/Cdoub/QdKaw85hr2vyb22oeBYqWImal3Pg8+5GTEXckhOfblYAG8qb2VEQBdT X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 917567ad-49d4-4d85-54c7-08d98e77c3d4 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Oct 2021 18:32:08.9192 (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: IlZIXGW9H3AW1BeT7Y+5Kawkdk+kbui9cE1SfS/3yWZJ5oqCS9ZUfPlTm7z7bVZJ+ZI988lHVsKE+77m78ExwA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8597 Subject: [dpdk-dev] [PATCH v3 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 Wed Oct 13 18:27:15 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 101464 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 39D80A0C55; Wed, 13 Oct 2021 20:33:03 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id D6836411D8; Wed, 13 Oct 2021 20:32:13 +0200 (CEST) Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2041.outbound.protection.outlook.com [40.107.22.41]) by mails.dpdk.org (Postfix) with ESMTP id 43AD9411FF for ; Wed, 13 Oct 2021 20:32:12 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gfwj1CnoqO4Tmyn5JikJL/xbVhZZGj96y/LpoTbBx8XGB2wJeXZebT6+GKH1HcwOF8q+ARbvACprttLvUM2yGhrzpVIsGrZpBlPr7JnSZe29PqC0Jyk+1Hp0QHadaFsTv3y8g6QsgICfEvcXIzS3AXz59C3I+tyNn+gPMyypnVE+wsXHtowaJk1LRRXmoQLl4+NtahtNzG+3Y950AookMohVlhgqSXjJA78xX03lxwRgN333LqctVs2z8SZjD2HzU66MslLgsrsuTAf94fjZ6DHom/LRQ1VYA7wMRCucPq4pBSv2hwZathEf4ffK5xT3Nm1la6UR+yLWOHh7KcPjpQ== 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=Iz7o8/CAt7OTYlxEF6TTeVQmjcjNwr/o4R1TB3SIUK7bZLs/8EO+0x+vs9e0K3qafmyEKAV/tylzCZdVL2rL+eCFLGrRwXIaz6+3XwHZ+sSZs7s8kkxYDve++x/g/VdlxItHMUlebj5/ylALj1vZQi6PJvbRfY3MnN9kmT/KbNWJDPSPw90hiD4MuE5SueMt56TdCCQVeKk899F3pdBzbclkyykcv/WeM5qq9DSnFqpHCMz6HAFlQtS4bvCao57Uktrdet1XyrFStxBej3tikK8j0293MTbyipQGlufpd3ZqU6L0/jF+9DFCt5pQDNO7QKYVIts9vSWP4hn/ydPb0Q== 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=GmqP8XvrLtEqj+lpxTY+JLIcOyW6MCliWGkBN70aGIQ1HIDdVz93am30Hz55jT2/T6jS6btG+dsv7pp8oVAPxtbpX0qf/j/CINnNFsMI9LZbgp3LbLYWP1tJjVMquXv/ybDxdHiQMjyyjC4qXuTnjXbAqqcHmERY/UIDvtVqpbc= 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 DU2PR04MB8805.eurprd04.prod.outlook.com (2603:10a6:10:2e0::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4587.19; Wed, 13 Oct 2021 18:32:11 +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.4587.026; Wed, 13 Oct 2021 18:32:11 +0000 From: Hemant Agrawal To: dev@dpdk.org, gakhil@marvell.com Cc: roy.fan.zhang@intel.com, konstantin.ananyev@intel.com, Gagandeep Singh Date: Wed, 13 Oct 2021 23:57:15 +0530 Message-Id: <20211013182720.32486-11-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211013182720.32486-1-hemant.agrawal@nxp.com> References: <20211013182720.32486-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG3P274CA0016.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:be::28) 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 SG3P274CA0016.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:be::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.15 via Frontend Transport; Wed, 13 Oct 2021 18:32:09 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 611a27a5-1358-487f-4c79-08d98e77c52a X-MS-TrafficTypeDiagnostic: DU2PR04MB8805: 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: lsA7GtdZjIahtgFXc0adO92293IQSUqkCxbjcXFqvDb7H1CxBO7+q1MUvDbQTX2pU8ZyXbvOwVyDRlu/6Lq4ulvk9GRXYrIYdwv2zVJjSpgh/5kB7w3hzXVMHpjSc7DthISnsdoF6YohfIR8Xsti6XU+VzfSbqmUGlfh+l6fjX0mVsPVMBTty+z+3/rXN66kD6e9N9AvejI+ITNuCOzOyYnjwK2Rmo1N8NIndldz6KFFONi0QcgsfsKgZtL5bEANAQcoAp3gvy1sXVUpuLXeNmyDeK1Zcd3ZEf/WG2QJ22h/jHc/9zbpNexqleZ521C/JOTuK3libr5VYELwuTgB3yfDrBr0wiUIldran+OSqlBK20rBm2aLWjU/bz7PCQLo9nR5cT+htBE1P5/OVrGfqvljx4j2qh7ygtb/Azm8MGWFNDJjTS9aMTa9ayhlNc6Ur5jAJ2V+CKF9UbM8nPJDP0/sM0wv0maEzRKRxfOJkn9Ugc2yi8UKQg5buAWPIee0EgvAdzsONl5LvF8MjDk4yltZMqDqTAjEw+pPTMTwX03FidLFK8BkIeCZPnMxeUrLs2YqzQGAoaIMzvtgWcoXXyg2uwrGXs/GqjRx9mJvjC2MxVFZ2lMuXm7Ayx1eMOVsk4+qFa2Cms4+JOCUKzlhe72G6j3+8DMhZ6Q5k/Sl/Dxwe+5EPFLYV6PWLi7ilxtKUyeiyb1uO2OFe9BVerim/w== 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)(6666004)(956004)(186003)(66476007)(26005)(44832011)(66556008)(52116002)(83380400001)(66946007)(8936002)(36756003)(8676002)(2616005)(1076003)(4326008)(508600001)(38100700002)(6486002)(86362001)(6506007)(38350700002)(316002)(2906002)(5660300002)(6512007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: xVwnIgdIUy48W4IqAt+D1ra9s4wCdZo2xp96Af6xv3dXDRBIkKwLaKbsLLBhWtJ0lqjMsAGw4+CvKatNC1otL9m7O7ZDKXC3SWonZOzNSq/VXI78H4LVFBaNAIdudPPzeALXMrWL8m9LFyelRQKQH9dZtu4iTwxTuH0ANTvYRw9faHxDiCfApGsBgWm04FTTX3rWyYV7qEBseoFoLmrAGJuB5XZpry3Bvbe+/D212NKd9841bo5XLafv2X0szAHrw+s2IsXATcxn2srOjDMND7MU6yJ4UDKEbILYPck7wp4inMITTllI3nfOXuNM4EXkCL24L6e9fY9tKa5eZGrWwfbAa/ZMylmCD4IJ5YJxBuzF7oKLylEXcMO0uY3nB3+sCqmkngTeQmaXFtzY49h5s7TmW2JoLG0dnD9sgPNFrOhsOPdBABV0WN2oBDPsP8NMX8vBYasncTIbjamLQftdwdXi9JdIrW031jhGPxtMj8O3VAg9Jq0R7qDLdzSDc5+YtQ7jy3BhF/ExrhGKKhVWJiGUy3cFGyONDSe7Tv8bLey+wlrVMTiSH0CAnQNZmPkRW6FgzbYXn89WA923pNoCYksu8riwSz7t7qT/GypWqkfBO9ZVipgbWWqZGcLxlwI7DVAdsYIBagWK6jIVJeLR7ODQfyeZh4/VLkH0lu5kuFJ+TLLdsU49jU6xykExlm/r1mgsqZrDI6RbVKhUCiofsqTIdDTYYvWHXFw3MsGWvgAYHI8GghoQeSmAh9in9J8qmOaak0DpL7LGyBpIFS/FzFJKPa64QnPqWEp7THrLPwW40Y8oTJSOzyjf/F8GFW/JpBS9EbOJct3h/UXbQWJ6V+c4UllCH1JuVQQ2VBjb9VPtERE0UtxdVGvc5IuZvgdCbjSm6MDXG9fOdcFoKUWptePRZKWquev01nNmWrSvrHqO1QNKzTSbzS67cZVLbqYbfeS87St35eQTHKxfWW4m1CXUXVDqqhHfRKXHtRwa+dWM0MjaFGiAbkigbl8NHV6NNSvDU3gAmo4WHvRDDom1RRzOLw29emsvN+pi2tlPnh6bFsz+EgJp6HnbRBMMGPnhgv+SyuoMDpd0hYcQIvonkpmNJg4cXf6sK7kGC2MNa6/IqExwQWLo0NaPOHPrBRxmGeYa1DwxaHyGQ1vE/BWilBFGb72vAi526X/umToxOg0+ai3SKazsrriPcc7YOtj06wLyMAYD939mh1NEa498DM3/OCWH4j0Jt0LpWDnyWcVKhSJHYlKesdwg1kSNR0wX14XdSxrDJvD0c9FeEXtCsqOgevZPACLxuwXd8FdtCTf41qZMDU2IaATKhdt9SBuD X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 611a27a5-1358-487f-4c79-08d98e77c52a X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Oct 2021 18:32:11.1733 (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: /pcvXiTJ/T9DerVPtJQqkkj1QUuBYr7P5EGmcIF6UtpQ8QqHFzoBrWmFEPTPmmQOf1N7ag183zlg155bfdeVVw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8805 Subject: [dpdk-dev] [PATCH v3 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 Wed Oct 13 18:27:16 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 101465 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 F123CA0C55; Wed, 13 Oct 2021 20:33:08 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id DDFD441209; Wed, 13 Oct 2021 20:32:16 +0200 (CEST) Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2068.outbound.protection.outlook.com [40.107.22.68]) by mails.dpdk.org (Postfix) with ESMTP id AE4AC41209 for ; Wed, 13 Oct 2021 20:32:14 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dmF6MIH6vGL0+OautmdFK6+ar2FuVEhGsl6j0/QYXvyMOwI+qbdJhDMy/2va6CFBHJrZZfiJY3LMPxHwsia7IdvPDB/xZcOFBfPLBcZG+QtDziL6QzTM0M/J9Hy1vw5aVUXuTG/+r4BmSYf4QlykzAxyg57b9ynSV+kE5uc7SC2+a5yaRLjZyAzuqNAb3sp+e1IdFP+wl8skjRHfr74hzEHmQHsBPruODXeBAcLRYUWUDAyfU7nobggJM7KEKR9FAv1cfzp/BAugsPOGbLtdJ/uMLlirBOHTk3xPcs+wZkWpRU4t63Q0nNeZNdvtN/NOUemXdYamyzUSkY+s9/tIJA== 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=mfWYRzAa1BJRMlAW5nwh+Vm0/3ey7q4RXeU5VufMqJU=; b=jRKHHaH39vugDzyGyOuzbjB7YKYl0NA0m3L8/rlPrNQc88WIY9GDx96BKaXaq5M4Rv08nw6INh8cBsqAXKNVZCdJPDvruM5CN27Pi97jzNs2ufvEeA0FpxpQ66bYzTmtmakCSXu8vY2icZdBq97WI4aqDghqWn1B/e+oa65Dms/ubNjhKkChC2IUD9p10HQrFWqDaCR1+1+7YrBIFgY5XiKPeDqK1awu2IGYZusrMbSEull4LYEZTTfVBCfGBz7cjmuE3wMbKWwVhN0HtEG1HOqbPTynYb6jNqjrzwSwQSH4GH7QYjsHmo4nRfNSrKiXcor1gPzR6FsMZ1cXj4QKwg== 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=mfWYRzAa1BJRMlAW5nwh+Vm0/3ey7q4RXeU5VufMqJU=; b=eWpuK/gy/6l9BVFU03sdU73VGr5xt7SNPatZtas7gSNx/JSyEE0A1lfI7Lwlzl+LaUYzCJn/RUIhPA+COLNePK3U4JELpO1jYv2fjUu1wAQ5mLRg7Kp/W5fypoBKgt+NeX9XITWC1tCa6QYpg7T1ZmTSvvsl9tDUSdlGn5OuRq8= 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 DU2PR04MB8805.eurprd04.prod.outlook.com (2603:10a6:10:2e0::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4587.19; Wed, 13 Oct 2021 18:32:13 +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.4587.026; Wed, 13 Oct 2021 18:32:13 +0000 From: Hemant Agrawal To: dev@dpdk.org, gakhil@marvell.com Cc: roy.fan.zhang@intel.com, konstantin.ananyev@intel.com, Gagandeep Singh Date: Wed, 13 Oct 2021 23:57:16 +0530 Message-Id: <20211013182720.32486-12-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211013182720.32486-1-hemant.agrawal@nxp.com> References: <20211013182720.32486-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG3P274CA0016.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:be::28) 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 SG3P274CA0016.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:be::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.15 via Frontend Transport; Wed, 13 Oct 2021 18:32:11 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 02818216-fe4c-467b-0699-08d98e77c681 X-MS-TrafficTypeDiagnostic: DU2PR04MB8805: 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: 8zfc0FeTWfyhs6uXmHGfADtN/WiSmubOv2KsDdP5xz9Zt8Rs3eyvgpLY7/iV94My6imTPPf5+4Ddgp3K2h+9uRYSHcb+vl26J5Cv0T4jDApiUlsD/mo+j/f0EYNppFO+mt9DMfT+Uc5LRDA2GxIlEq87+IDjt61QFrQcHDOUIyv4fLL8xXF23eeq9yOIoVYOAAcmx30eCtrDtgozWHrKnBbd8ztGcOibROJCqVcdc6WERFa+Psg45+wvYaVOEix+voU42iApv6yn4IIzs0Bh5iqqz/ws1C72UPOrbnr2Y9wlj4UU6gZAmYuPJ5a00sKFygI8D7VWZWFQ/AODApAys96L08dnUGmO1qSzPXgOampaSRHSoYejdQYvy5+7OX6xLPxlDzYYushMPa0yFjvKRDJSMAKjXOQAJTsmNXtzzVkqrmmbvRW4mMBPQUXOImkov4eOm7TYYXzVMrr1M351jUSza9Yv+5iimJaie6gWPvT81B5idaDGZzSzh7/h9oWMWUCeJ8SJ0YzT8eKu0t3k2KV/2YXC9x0NCu0+LSj2lJvr3aiXzmr9W4cHdC1pTEEsmwnJ9+I4v3q0/ZdTRJLzgHzAHB6zsyfxGqOAprr90Fdh5PckPRftPqzGDwTQPiIGIYZTHyOhhaENtjkgGAzlU4lL8e2z4FfpC/CYKrrs3HyBHArVnP0ioQrbiMFppVhDddMwdpiRvNhXwR8tVwt/Ng== 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)(956004)(186003)(66476007)(26005)(44832011)(66556008)(52116002)(83380400001)(66946007)(30864003)(8936002)(36756003)(8676002)(2616005)(1076003)(4326008)(508600001)(38100700002)(6486002)(86362001)(6506007)(38350700002)(316002)(2906002)(5660300002)(6512007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 3PYdMCvN0mLQIHiN7cZToDsgipuw1hpEzKKneIFV4b6wr8DYAIliotqCnh1NXfWksfwwFCJToJzrE5ZUvRkLnqLr9lwdOYrL8mPD4iPs6HXQ0S04tCOW2unj0Mv+hjeF1w+8jt/GU+H5lqwSqe5E0lvXlY0Nrsn0waTFFU3EYIa5iDvMAXvinNfSwoJDWWempJ3GDyk9B851/slv1gSKJASNn3uV4ZmRIL02GFwGqrKP/Gb6fP/Se6wYXpJaS7gdfv6rBl6h4ug/xNL3u0QijlGThU/J0FWA80JmPD9CW23Na0WuJQIBgbsNsufL2JYSm1VF0CanhB2qxxrssLhqIC7BxbbJ9BvaMEPzbbdWmHmiI29f7T73BucXVaKLxiIEoCQTybN3+2PNlB6bHw48BAWtNaUzLEfzSR69Ok5s6UIvq+z2ZsnXaXsM0llJXXrdzWE4Emzd7nHcXoy35vB6/sRG5KiWVKwIkhJOx/k8MlvpqukDIGWBTfaJA2tSMc1Fb4KRTnDFpyyyj1zCIp8gveD1Fr4zXH9Hc/w8QCBh0lsR/bEQiUCOMNvctUqKjCM5s8ffUB8556nqAR7CF9B6C/t8EB/eusuEAggnSTr1tS21Z6uumNy5tF6+bmbzUPvZffvP3640M/1sN8xCRub1htCXy8yAaQNYQT3Aik1ohchR8Y0JTT6QWFpFIkMm6+/0LNYUlMET68PEF83ucQ+cWrVNcII66lsIvhoD9zvmz38aArQyfUsk4eo1lezGcGwBVXDOxrTsjpIbr8HfXNsRLwvzWBbYJ3VhX3/mtBwwfrQiz3DuQVdIwdsnKYp/vXaifc+SHRbkwG0sN8vj9hyrkKQsYhYQalWvRb85XO7RDFd+b/7WctLtHEEy1EGTqmBNJwnTf3Pp1F1XrhiEisH+LU3GIE+d0Y+urM1YmzD/COA+1tTa3vxEunti6ef3H/MqfOYySIlQ4S6UuLdFptFzlKopc6b0mW/qkfNm+q5NQO5xiWwlIh369G+TbVo7qEp6Hb7t5hX7VMPr5XjH/dKpu0qv59jycMFKy3Aq1rcP1/mDUzJzsf4YE2XUGagvxIr/aIZfkpH6wr4fXhulitSt5XFPXizCIk3bxnAhyLcTDKFjvuXf2p9QgPNshNedAfoOdE8R0+KnqvQj88oXJo6KbxWbl9CG+Wp0zvXPSiUlyEQpeoH+UDpri7t1tGgK5ngxVoKSYRC+nDtm98T7c3iSXyhXhh9bW93onuj+52gxKlj99pE6jBpVaI1MJ+4LhdCj9MGdFKsAHdCa/Bq/0iF94ze+ak/Jpc5HRdYX7yrIbZBF+a+wYQvd1vhAWOR1vQi8 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 02818216-fe4c-467b-0699-08d98e77c681 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Oct 2021 18:32:13.4064 (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: rYq56YhQd2Uqo4kBwiysTJcRLC0CeS9MsGqeGK75GFtg1seh50Vws3rIJCusqWHMyAQ5XsXQd0UMyZnbv9vnwg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8805 Subject: [dpdk-dev] [PATCH v3 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 b1049a92e3..cc3845c96e 100644 --- a/doc/guides/rel_notes/release_21_11.rst +++ b/doc/guides/rel_notes/release_21_11.rst @@ -102,6 +102,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 Wed Oct 13 18:27:17 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 101466 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 064A4A0C55; Wed, 13 Oct 2021 20:33:15 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id EF39541210; Wed, 13 Oct 2021 20:32:17 +0200 (CEST) Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2040.outbound.protection.outlook.com [40.107.22.40]) by mails.dpdk.org (Postfix) with ESMTP id B21EB411C8 for ; Wed, 13 Oct 2021 20:32:16 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SvW18ZWah3oDwa3FJ/uug0OaURU/gu6Fr+ONNQo8lBoH8BtYiL+dIRsWKksc+Vi7jo1X6d/IjhbMmSVGNq7Bk+hPbd/nD2UGSWW22O8WCyZgKC9/+hgYPFMpiEU4rpXMxv5koQnxNBbV7GydEUv33U3blCxSWib+ZKuB1BLaK9nTi/IaGLO7zOY8fohGHUfuWopkMajM0LK889MOcFu2wVtbYi72GChQ22EcHHlBjoNg/9vBr9F+9GfQy7rVP8j6a//vXsGISySaNxTMLctC/oGmGfbMqDMOhoK1euh5oEmO5OgxL8/bbEQFRJnBvuHpqKSOihaXRSOSrP97Le308Q== 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=bEXHtrToT7pGq7MDS1KF8r74HyDCkR/zLOfVhDcyk6Ts5cUYqFDlT8CAW2eHu9SCAF3RwL8Wojqq3qCR3lO2bridwY6mRUjLIU3phZ/guxUHalsDqDfYbEE27hxPUE64Vz15Ylp94DoM3Fp1mjCqMfgTRaBwGQtYFtwbRYZzpWUs6foJDDTS5ndYwMvjepetwBBH5ibN/EXcv28G51OCJvo9AayEXYhBFjTO16+nv+J2xPmeaCRxC9/1Zr36VXAf/yA+XAiJBE65Zq2f0UPbw3CcYT8cChFJTYarCBA7+uhHMCik7blW+Gn/Pj362oGmMO6S+U4ST4x9AmSikcXJJw== 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=qVUhIMer+1KmQoyGXEC6A2NHkxx7zfI0phd1YRwRVZJXg7YrDAgtFGZj2pm8qRqJSc7s6CwkoXf980XLHoYnBoVYkzeM49nBl2KY8oEbUSmbDWS+DuXDPfc5Pr/qZzSL34w3mM9n/il1OSue9WLJ/jFWpimVpP7INbyjC+evBug= 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 DU2PR04MB8805.eurprd04.prod.outlook.com (2603:10a6:10:2e0::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4587.19; Wed, 13 Oct 2021 18:32:15 +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.4587.026; Wed, 13 Oct 2021 18:32:15 +0000 From: Hemant Agrawal To: dev@dpdk.org, gakhil@marvell.com Cc: roy.fan.zhang@intel.com, konstantin.ananyev@intel.com, Gagandeep Singh Date: Wed, 13 Oct 2021 23:57:17 +0530 Message-Id: <20211013182720.32486-13-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211013182720.32486-1-hemant.agrawal@nxp.com> References: <20211013182720.32486-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG3P274CA0016.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:be::28) 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 SG3P274CA0016.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:be::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.15 via Frontend Transport; Wed, 13 Oct 2021 18:32:13 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d7104063-9ef2-40da-2525-08d98e77c7d7 X-MS-TrafficTypeDiagnostic: DU2PR04MB8805: 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: mvObGGnkfG5EPmGDatB88R4YPv8B5SADl/SD/peKqLY7nPJE9xp+Vshs7W5aBTIyrzNwszQWP09nzHR4xVovIN8rjNt74jYrt31MmI76kD0tmvHXOazfCj5oS9taOrYVtqTF9V4JniUz5mcVar7CMPMmnSSribflv7CxVVhIxrXbi+fOg3EkFIutBy5t1qGywaOkWvMSBYXOzcm4SDIwd8iNKqmoCuRN/Syzkj3oxEJyeJTc5Qk5iPT/nqyyJlprqGP9iU2Ou26XXcO3lk/0lpZouvNuZtMvT2f0rdpgVJVcIAfreI8m7rg0y1mEMif0bYL+z08Hks/nwvRM+xXb6YkU3fTnAP295toCCNY+aHo0Iy1GregDzKKevjJhl668gpxCPvBtLdFk36XdNBpuAvdUfbLyPyu6lEhOd/eJ6zUOFK3yDPNUKd1sZI0I5ZzGBr45WqDl0/JCrRQmmTMp64GKFrHv8wrfrI/d7KdoFUY72jTYxkIMMKe83PaWS7KBib/oI+dIEdjFVagNDJvqv/YKWgg4MM0cIG40fCoREJiaS7iPZCMJpHhDkkbofftgfQQsMRDWuuWV4aiz6NA5XrhXvKV2+D6pHTlYt0kYwGy/vyYg/2dqjNGkAPcxVHRHW1uDljUyw+7XBTkDH2qyJz0lnKBFjokIhOymBBDn6WDoyyQ06xMvlLCqW0mSqEu04WGrhxt4/zUaHI464X4NUA== 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)(956004)(186003)(66476007)(26005)(44832011)(66556008)(52116002)(83380400001)(66946007)(8936002)(36756003)(8676002)(2616005)(1076003)(4326008)(508600001)(38100700002)(6486002)(86362001)(6506007)(38350700002)(316002)(2906002)(5660300002)(6512007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 4vm+xdpEyiUJOyXo2fWOcYl7u31q7Jr+ZpVn+OxFBOfT0wVWfXLrTZJLF4dryqHj5Gxpnvx8SMu6ZeL6sUzXb4nzMnJ7PGaae8rvcx9EQWgBUqCwrehhBiJVd/z/D97FX7I0xlp5tfefZJOmI7iqy000kEDv9XHXcx8DSW68GIr8s25OpS2dk6g/D8i73wm76IEp99X/OlMVD9y69nem/qw3A9XQ2ZXlTCUErD6+XTKi5Ey2isBR5Rk4fLvw1VgkoO2HKUz2XtU8K4hdXJ/N3lI1Nm9aAEyFQqH/ajng3vpn2UIqB/ElC2mX2xPfsX32+aVg1qKIgcMMlrI9Dz46tyyDCLINJvOf5SCIjv0pBjIVR2CANWlu/NgFuxPVfiMVQ+iZRnmo73RJ1Kt3pDhKnpHtypjbBydlmzW58geIL8P1rRBussvgiKwX155er6GzRPptiy7abQOlMHLWHRZ9Be1OmVEUGX77KIgXIbZwLURQMo/6HO8p0AuX/I2Yfg9TaVnfBOylmRBOTkxDQEZ3TixsQ4bh/vZcpEhJ1AJEdhHku6CqImgRdQ00nLHL0qlxkcFcRVtgTHcJe4L1iomifbV0VdkTILIwFsEYoIxGBHwmr+F3onFNMkQjFo314m7RPCxY/WJdy0kcOubjd0pQqPgcW7mmFt+5rxJzoEzoFhB6EdxTZ/T8HY4aPC59x1N12J3m0SWHXbmTm52sOsgGSyVzn7NciZdv1nHe/JKHNMlPO0oM1KJBAIp3yRARrI9GTVZKew8xKy9drPj59aoocUqg91Sqa2T68Cg57kewYuXaIyOmdd1wEa+hlSdI3aepmbsUU2uOdkO0DC3OvDRSjscPL04megFXeD9kd2pnwtCkK+KDzxOm0XKOeJQ1DN1kDLudCVEAFOw2ovE9QJvV5rKK+WCxT8ihHj+ET1Hu4AKxzERyko+a7W9dCMfplEYL0q+rPgMAhk63uEDsnP/Ok4RKoWRtlMTP1vMEJsYbayToge3Bjvm7X/bydLRVJ9Yl+3YPJupgtNg78smxD2oYcGgqvVW/Ruw50jPORmwubK5vYlcYk6rsGBpXbGRho2tghnGSlcYdky2zH/x+hj02h39hF/6s9rLOAKg9ZxvriCiN+XVh3QbL/IeIKK2hcl1POf+mZ6Ooggxo6wxoirKknCMhvuIwXgug65aN72fZJ4MO7hVgFuLxJ5WCuglvnqxFkYiZcv3/spfQ/8PNT9RabscFWCfVQNH+/zcdcV+8NRST0k/RiaRm+QCxHtZAQ88t5jYSiU83BqNJNu1E5ldt/llr9RZR8eS6zfFYMQ5KZSz9j7UVPE3738JZX23Kwc4W X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: d7104063-9ef2-40da-2525-08d98e77c7d7 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Oct 2021 18:32:15.6237 (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: FW5X7GPUE0N7ogNcnixI/gh+pjSlCUhRM7nKW84mdM0gwcVj7t6MjLtSnxXXaqE9LqCoUTcukwJbMz2ErWZg2Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8805 Subject: [dpdk-dev] [PATCH v3 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 Wed Oct 13 18:27:18 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 101467 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 85664A0C55; Wed, 13 Oct 2021 20:33:22 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 5E7E04121D; Wed, 13 Oct 2021 20:32:20 +0200 (CEST) Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2051.outbound.protection.outlook.com [40.107.22.51]) by mails.dpdk.org (Postfix) with ESMTP id D002F41201 for ; Wed, 13 Oct 2021 20:32:18 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DU3/6mB+NpWUHlAgcZm+CRugfg9Whvjbl9HPhF1ZkYn9qOg4VDGvJrRLX0Leo/q9RvKVGepjcyvMTZFmmUZJv+KlnDw/BBAE/vgZetPRJBB9kyz6saQ3EVunUQmPwOGbOxMztTk8s3TZL5HCeGx87I1wSUHLdJaZMlwd4rk4borwzBzyWdxhKwRp53hUg7P6puvxJVhzL3IKEUnnQ7TRCDB+ThkDTfkCdRGwC6td0wKtfd32jN8t1BQonWUhKOvZ2CP9cPX/GRZ960Zmp3nkTty4esvGuVxCwyupEFSGoBGF2LG3d119cgJOa2CyFLux/oWSskxPCcvtQQDxe/Cm+g== 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=kqURoTcoYoxo4R27USydJ01yswy/KadZDCIO/nnG8JDUq/CdUI401PPdzyxb/Icl4WqdykKKOi9ZnVv/Wum8Gvrvo+bZJBrd90hrZUxDWNLOkccMDeMcxzUde+KIzx33OEGBfZg7v7KPWoj8nr2KQWObJ417jdrD2ro+3FdJSvGqgKk1uURDox48w2ov+3x1pH4ullo9BhbIDexiDGlYKVCOQidCIbCsfc2gLiRf9QMn3nBHZUERPL6RQ3EKMTbKb8bMYofR4OXVsWciVYr/iUC8Gv+AwaRTC5gwhYF3H5FRFHyG5rt8bAprh3oNKdHQJKgbItEbVZkcQNm/J/pUNQ== 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=KD62ilJA8jN7CsVg8ybi8Pp9I/BM73Al+9lCPOJNYv60hlQ975M2h41V2ka0OGfr7axnwjTtKjBb2cZlA9PoUylkkBB0KaU7CBnfrWUaDA3MVXrfPFdMdv9A93yGcdCIgguKs6Ub8oVjZwicwArKFd8YQgzGBJxXkXzXr3LzmDI= 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 DU2PR04MB8805.eurprd04.prod.outlook.com (2603:10a6:10:2e0::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4587.19; Wed, 13 Oct 2021 18:32:18 +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.4587.026; Wed, 13 Oct 2021 18:32:17 +0000 From: Hemant Agrawal To: dev@dpdk.org, gakhil@marvell.com Cc: roy.fan.zhang@intel.com, konstantin.ananyev@intel.com, Gagandeep Singh Date: Wed, 13 Oct 2021 23:57:18 +0530 Message-Id: <20211013182720.32486-14-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211013182720.32486-1-hemant.agrawal@nxp.com> References: <20211013182720.32486-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG3P274CA0016.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:be::28) 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 SG3P274CA0016.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:be::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.15 via Frontend Transport; Wed, 13 Oct 2021 18:32:16 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 4fcea42d-a762-4f70-cba0-08d98e77c927 X-MS-TrafficTypeDiagnostic: DU2PR04MB8805: 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: cw2QTWpFyODU8RUyWEjluo/bP0HnvxR+QY4kjewqmBF8AZV+IilVcMB2b1zDM6CFUaCP1jylie3bmkHBl7YC+UZSWdtC4ILFrbZFMWwvZwDOTQzgJBYqbl1+8JB2o89ykc2dtIm80NJ5AfHV8fI4nZkp9YeEoPOyowagDXW/QL6NBB4uwgy01/PTxnrIuz9MgI4mqKtDqMHPOc0Yaw8BkMTjtxiy+Q5jaeylaVXXZz9xASSpeWoioG7OPmI7kkc0VHq7ma7XdtKHgNJ5OrrSj+I0trZN1eSfaOgBLd3ltzRB0uUkyyuWZFyAXb7iigjSky/yB2ATDyM4+qh/PGwpxluaCuD3V0MDcdGcIEOFYU3Dqbj78TD7+zf8ACGK7MXxll2SwizrYHBIXQcWJOqq/ycOY0wjjmExyN0Oq7gc5x02MxSnqlp1eqDxONyd56stFWyHlsbEco+Rw3rePEGTNVAkwgKkI2Zu5oet7OyLG9QPctDAuKxRG0pzX7IvZL29tfdioFSKn3MkoRCraKktA1YiWffquMGsxZoLRisJETV97zrC09L9xp8vyVVc/pUEvJ+ItkvjHuh2fKc6TXwLA2UOiHm/KhsdJVkgjpZv0JW7pjH0r3GEPDschAtdD124Ex2/LzuVd9SQrOxc321vzu4gDdI7omIu5/AlY+2uehkoZ/GU6UGrN1QkJ0KfoBjKk3hTACQkmT5AYAmtfoa4UA== 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)(956004)(186003)(66476007)(26005)(44832011)(66556008)(52116002)(83380400001)(66946007)(8936002)(36756003)(8676002)(2616005)(1076003)(4326008)(508600001)(38100700002)(6486002)(86362001)(6506007)(38350700002)(316002)(2906002)(5660300002)(6512007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 4IdoZA2rDc+y0qbDWMoFSIFov6amXD8jRHT7L8O3eIDR+m5IRGp/wXT+pM5GPMDAeKLjwaMF3Qok2oX0FOdaG2P173BQWyfkT5D+cl6fdcUyKZDnTTIU17kA52kDD124dmYUqGS8JcSzPv7S6uSjo4zdyIzDxtzYhH32775b7VR+YK5Vqx3xMt6xI3qzlfcqNuCXnJ8LHpeluiK3JEegRkLmtsTap/03CYLEiJ44OXq+Kp3R3mx+mIe1uua7L6D6U3Mv06MhAyruvPwgsh75UieZe+HvmeYRGnna45+KWebwJCYYmxgOM+KjlPU6RpDB7D2rLoc/SCWUv/nrNlWuEKgE7qDo/xHleSegkHI464ZcYZJBvLgk3aeeXpBTnjl1/IlzAtOVgH1sH6+9kAvR84p2drspbls6aw9r6x3ydu4scl5W/7nBvRIleiDXmAh3J44NQd1jMSd2dQ36ULD7ES8xe1elQ0BixrkvEnTs0FqVbuw5PC50Ez6dvpVIoYsjtHZYu3DxqvvqqCvTlM2KY4/Ma0z6XJvEFtsoJUA7Ve3ffNajL7Y3udUvic7PTylqiBaQeCtCjROmETzRwvIgy9vBnWS9oWARw6eLBNpFjZ9ZH2Y72tWeXUyGKQ/0dm+7PvPeTHxkXxbm+iS0UiwSK1oJ21R/68uu8LgPBnoL3StqHqYe5eoz8aR4i0tYrnrrVLFw3zQqiEFysFSxkH3hB1qOGdV5b3ysX9XoZx5tpo9/JyoUhPzaGQSvV7ypFkLcFI3k3hzXmCOzJWG8JtfxHWg+GXHYWbR8+A+ikI9GdyfrGXnKLUrHLvA4UZP9RhxNADL3rz2DS2GtdnmNoIFvNflasoaBAxQmS2ss8wBGN5t46fxOApJ8ohOVjgfKvr/ZBK4THRwsWsbzGlQSeTGFDNaowcC5EDurKG9b9mjQsvhgtPs/utfmjEYSOCVd4HDLeXg/tLk0LODXGCAIQZI7A7QakZJNxQnh1cYQOC4In7mUDCt1DYPzSUnOlJ61B/l0yBBPib5IkChP55zAq7N0WVcBb5NfOPy0ugDcu2D8GsCOyEzFW8Ww8F442PnNvI6AYogjXaWBQNRDUNHgWm8+6g+M0HaQ5ehBrLCZh60W7rHSAHbBepuaUjf8eL8Zu9BDg3eSUkGE2xnz8LOdwJ4TjnS9nyGf1lJcz8rHxTzpRi2d3GKVoMf5XMahQPu+1f7cHyTWkGnSqvWNo9AS1uVVVACKpPzOAI5zniSJzpD1xZ86x4LsAfdIl/tWFWoh87Pgi6QUwSkeIJEUHdLIEeOp0GxUgVk0y9CgI68C0i7yF+mbul2aec1iFzu8pa6lTDcE X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4fcea42d-a762-4f70-cba0-08d98e77c927 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Oct 2021 18:32:17.8468 (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: Vhdyd77RtO+GsWyHeRzLIKDbJVnWclff10zSO8+qK0bZ6oAeH/Zyeed2JlhRu4WyeMQjwvkbMi04gPuWadiNdQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8805 Subject: [dpdk-dev] [PATCH v3 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 Wed Oct 13 18:27:19 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 101468 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 AC07CA0C55; Wed, 13 Oct 2021 20:33:29 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id D8C5D41226; Wed, 13 Oct 2021 20:32:21 +0200 (CEST) Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2055.outbound.protection.outlook.com [40.107.22.55]) by mails.dpdk.org (Postfix) with ESMTP id EB0E041201 for ; Wed, 13 Oct 2021 20:32:20 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=oBZrefyysBhq3G6W9Y3ujU9USqDkA8vEUmP7Rg0kQSQ7yjC/8E/yMUWn+Q8AqqdFRRrOjQXUdTt5TmIroLqubcrjABFMlipU7VpOLrmFM+6YbGFn63fHQhvc0menWAHPQCFhtTOMp4LAWMHWJrz3Y6s7i/A39kC6FTNFArLIF4T18MVI9vhLU6KqpJ/YxhViZycOlG7gBpI2RlOqLol63pQinE+33Ax2OK6QEcpfcDiWOK1KJr87rtmDCUykLIz9/hPqph2k0tYohtlcLh6fgFKhDfNuCxZQCSFHaTS3lfnpX3hdYnyEZLdvp8De1pDs7qhnfSKszlyWe/pJzTso1w== 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=KmJh6bj7qd80aDM51cp6vmmDFhxYMHIu1ZOgoVkvSmg=; b=jXS3uqr4JKhzXkUB4ziMYk4KeR8DiIRIQzHhBvgkZ+dVIKZzLdzXCUzESmRTFzg0ZBiaBJkZ9TL5x30edHD6Is3dJKrnUHNNUh/i11BYitiMq6YOlJqslzBGOz1I/ian81I8+kT/xmrdY66sI0jY6hifK0ax4PzWqvpU90uN8soGzHPqasHWNJw2Tx1DKsaPUSZuX/RTp+Awnj5tbY2qn3DWbVpbrRv5m7hyYVy0PI+PUG5fZNBrULAmINoHEH+DiRtbPTEaXKKBwv+kTgnrhXd6iIB3M3tjpJdJV81ovnTFiMEVmJcYlCGJszacBTEjp3i5PZDWD2XIwYvfaCd0GA== 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=KmJh6bj7qd80aDM51cp6vmmDFhxYMHIu1ZOgoVkvSmg=; b=i5/Xm5uymjLIrG5aG7gPaaS211+0u2eFKcXenoAUPHDNnxiE1LS/jTG63JB5SAUK6UShZ9c7bn8SR0WD7/R8SGfBjT8IL2YKjcmiqkDUpxhNpa7k+ljj1PhzhWOSPBHNP1XSMThOQb4jzUwVYb3SxlVudXBtqsKjj/h3ArDm+Io= 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 DU2PR04MB8805.eurprd04.prod.outlook.com (2603:10a6:10:2e0::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4587.19; Wed, 13 Oct 2021 18:32:20 +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.4587.026; Wed, 13 Oct 2021 18:32:20 +0000 From: Hemant Agrawal To: dev@dpdk.org, gakhil@marvell.com Cc: roy.fan.zhang@intel.com, konstantin.ananyev@intel.com, Gagandeep Singh Date: Wed, 13 Oct 2021 23:57:19 +0530 Message-Id: <20211013182720.32486-15-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211013182720.32486-1-hemant.agrawal@nxp.com> References: <20211013182720.32486-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG3P274CA0016.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:be::28) 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 SG3P274CA0016.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:be::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.15 via Frontend Transport; Wed, 13 Oct 2021 18:32:18 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 2ba07a3b-9d09-4811-0dbe-08d98e77ca79 X-MS-TrafficTypeDiagnostic: DU2PR04MB8805: 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: a6CgN92PtletDNyBdNHvvjxz7CqMkXGJ6sej+jPD+biea2XpO5Gl+VbE/RO+WDw27LbzFORhN9uP96G21BD3N2U/mUHkGyu4d0uunIS73/smDl/3MMp4n+tsDho1QWADx/RMPWKBnbQ6xuvD6Fclb2OD6rvJakP2vkD7y8t3W66pkQmEwnkyJc8JPisc3AZl4hLPJp9eQdqo+wZvUoZxZ4qTNzn26SF/+yE7ykskXNKm5t0ri9gTdgGhLcgiS/G+S7CqW/Iat135ekCDClUuL8kBiJsK12shPx+Dj9qGT9t4EPN3e8hnXSHLue3e2tUZ/IiXKKZ/B41uR8jXViJZtkdd8xBKLTuHZv9nem5BBtaZ8glIjO+payeiZbuorXbn5Qqxi37tCsYlZDKA6ZX8+DcpFZCkNF2qAq8y4sKWwoqyRZHvNhoNhqXxHbjmMV6yjPJygZwEuunvpNX0hnt1WDG5YKqhBWF9G4hUq5JV1dfr/wPBZttfv2FnGBYdluELRXAT6QX8Y8vPpC/+BdHdme+yiTGKF4ll9YLIt9plHSy4CwzjSENfgfx7sK1VznXJUoP31j24chAMk2k8CaHERAIBxP1DojR9Gf/ee2kn41bqeUqrtOjhHq0XjWMlyH8V9YSKjTeE4eedfRTbFkG4WpEazsm4Xb6t9wAYfzlhXWQoOiL3OCi9qbht5ecNqMXulOPZyrfyYAo3f4lgUIcsAA== 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)(956004)(186003)(66476007)(26005)(44832011)(66556008)(52116002)(83380400001)(66946007)(8936002)(36756003)(8676002)(2616005)(1076003)(4326008)(508600001)(38100700002)(6486002)(86362001)(6506007)(38350700002)(316002)(2906002)(5660300002)(6512007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 3ZDF3cBZQPMlEKJyfbgS8KhFNkJ7EjgjKI+QEdkxc4HkbEUzBJ4eMZDnYKGdsaxmKc/7EAmwnX4xaXr6MjnB1N4yrYgznlns7/hyuj6Ot+227B/iLJ1uIS0CD393aAWuPlHFcGweZTQqtmST1jsEON1KfJcGV3dyQNQuvz4SasNFdWB++OtMRN/ucLOS0kXy0CB5Z2Nc9XHWLc8jMw1fbz+pVd93lG2JfT/IOII3WGsibJq5kuuEbSMnipbUL7v7iD0j9Na8udeRngnqse7hn40LfHymrvQ73hPuEhIRXXgleUFjHjNWi8aBtsx4+OG8nwHLCbTmKOzPQJkgtgaKbnaynTabLwh6KF/C8jgi+ppkL+MZrKhFA9l6U2y81nscGr7t5SNewxLcX3eUnnLdxdXXHs4eDa5qq2YBscQU4fL/o2SdSLaJ9QWQfDBJVK4MeF4bqgBVbdEiUm61fXQe/WKuT/SxEX9q4C5/RRL8xwSQ+UvvKe5ffNwRKYKxpczwtIZ/J7LF8WLWakqMZge3FriBcx+L5Zt7uSkA+ZxjqvWRXo1bIRclhA5AQ5AVjaqdjwbFJH6GJbKm0235UAHNIi9zANKCtdCS+Nypb4lrZD+DwfFo33AE/mPRBjjYK5POHn9tpOsm19Naqy4sg1lHRevmhQiqkA64DAHIqKUXPg5/oxLaFdWg2PPvcKPzAFrehVurv82XAxWPV2bfxKeOSUAGVGfcR4hkOu9Y8Z1s9suG2vGQTZH7J8zzUerpQpDokj5DCJiZ9Di96UVf9cZ5jeCFixsjYjOJEgxxrWWtUnKqY1ke7oJKxrmh9Jqzst/bOIRJ4ju5/jKPefgnQCCFOXs+CngxliqWLFNtluCRtRuQmeSP/nGg+3nRzxGpKymWW3Il2EyYM3pkkD5Xj2AIu5LYBJUTEcvsi7CI768d8T5sYrmdn7wm2gJ4JndIFrbYo4D4GRIZT3DynxPcygjfgnagCLHE1WF4q0o1LyVY0EmzlNP4NoUMC9mZaG4h7uuUjw5gro0S8WdFKcLKkR/CgAsflc3LnExeC3Geks/UjxUBRQF7UDI+Zj9Z911+mSpaO5fPYFowmM5OnBfBk723dB96K1mhjIQ77VaU1n1BHE3C2EFNSjdeC8DzdboCm5cHVhvRJSFVgoadYl57OVTuFTkd+ftn0dfuskfP8v0hRUUXJHccHOQSEK2Psj01VPS6y2cNZRE8HcXxAwgy1HStMOjSK3GnDrumvNOEM4HwExd9Pn4sTIMIVUDzROuQuzpkPCutuzXnnwt4GveRNlP4B64eVpGX9s89iGmauVGiWo23V8oVYIDy8onHXPtOhSlk X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2ba07a3b-9d09-4811-0dbe-08d98e77ca79 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Oct 2021 18:32:20.0223 (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: wuVPvw7ovu4fLC3MS0gaQrQGdvq8k2Mj7GTfs9JFLdl+wiPQTDcMrfsRRE6QzxtSbNMB5GlkxK9heNuaDMfAZA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8805 Subject: [dpdk-dev] [PATCH v3 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 1e951981c2..6a9761c3d8 100644 --- a/app/test/test_cryptodev.c +++ b/app/test/test_cryptodev.c @@ -184,11 +184,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; @@ -324,6 +324,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) { @@ -8379,10 +8392,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; @@ -8566,8 +8590,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"); @@ -10424,6 +10463,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; @@ -10433,7 +10473,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 */ @@ -10470,7 +10514,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, @@ -10516,6 +10564,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; @@ -10530,6 +10582,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, @@ -10560,7 +10618,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, @@ -15400,6 +15462,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 Wed Oct 13 18:27:20 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 101469 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 09FFBA0C55; Wed, 13 Oct 2021 20:33:35 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 132C541215; Wed, 13 Oct 2021 20:32:24 +0200 (CEST) Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2085.outbound.protection.outlook.com [40.107.22.85]) by mails.dpdk.org (Postfix) with ESMTP id 1C4124122D for ; Wed, 13 Oct 2021 20:32:23 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=eWQt5XYG0xRtEn3A7DQNKsAbFZNpMgm3TjCXmZC9C2syJABiUo44S889q/DGzz7zOflXXbGSQQuJQ4amRtDVSgZp+dORceWUnuSFnOHi7nW5Px+nhQaxYDxBRUaNT/fZHYeLQgqHZIC8AyTYJWGctkKYtBS8yjsKWxCf6668wemIRUEEKGq6fadDuyVUJ+uI1+702SslLDF0Bx9C7/1LSc4rkobiAH++Wm7yOq7mq5rC6mRb8mDbeyJxkt9UH3UoryXIYpfRYFQVCx17+M17iaU7Njd1ldl2t5+SRK3yIXHGJdxkzqCUqxBhkU17HaefMpCOeamPKhSPG/WNnM6MSg== 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=XRtrjrN0m9lSr8joWAOLvNV9M8bk3y1LLqwWzDajbuA=; b=PvVf88eyccdXZK0S9RJwDv1VtCejyUZW25160kFyXE02N3MABxUkI6hMjqFyJbd2MrLwAzo+F7Us4vWwjj0sPGwMgSiClRwOjuFAow5hue0LtMMgdV27x4hJ1u69yma2EJF0eEIwsiVCcVUfw6z9aSgmuzUpyehEmHYul7oE156dp9QrdJwouG5/iLqDspra3Hn5IPsxglQakh+ofBoor7gB8w0Hj+ZWQu17QpVj7H27O3HGN1HrIk6LQ2BkHFyznYs/oGsBxQSB5NQidtf+IXTCqsgFl7vNCHk+SyaS9eIwqNmlFz2XF2E9dACf0vzkQLlSzzS70WfCZ5n56tuycA== 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=XRtrjrN0m9lSr8joWAOLvNV9M8bk3y1LLqwWzDajbuA=; b=ohYOhJx0gFMRFDn0hq92aMI24oF5rnHmSUbtP1h9yl9WOgAWWUUQjoUX6lc6F06ZAUzaypuGh+LErZaD1juAZuMimEJ083gX3/c0hAqYnVvS+YziwkN2BkJSY5m3c0q5ku8l5mpnrcQgTjEEJYf2CdEKsXJY/zMe33yPdMVVNcE= 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 DU2PR04MB8805.eurprd04.prod.outlook.com (2603:10a6:10:2e0::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4587.19; Wed, 13 Oct 2021 18:32:22 +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.4587.026; Wed, 13 Oct 2021 18:32:22 +0000 From: Hemant Agrawal To: dev@dpdk.org, gakhil@marvell.com Cc: roy.fan.zhang@intel.com, konstantin.ananyev@intel.com, Gagandeep Singh Date: Wed, 13 Oct 2021 23:57:20 +0530 Message-Id: <20211013182720.32486-16-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211013182720.32486-1-hemant.agrawal@nxp.com> References: <20211013182720.32486-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG3P274CA0016.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:be::28) 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 SG3P274CA0016.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:be::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.15 via Frontend Transport; Wed, 13 Oct 2021 18:32:20 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 672b2c1f-2d4a-49e0-0867-08d98e77cbc8 X-MS-TrafficTypeDiagnostic: DU2PR04MB8805: 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: WqNCeEjx4vF8qRlm8OqKvxjt47M49YDziBfB/VjShih2Txo3VZd7qa0OdlMJJ+gc6aCHhwr307vKPJ4BBlkN35Pn0vnsuf7o8w4Wduh+3CUBS1z9wpwdcefYgftqEGEcIFUrXMWznuiA/NVnOW8rfLA2jp6XOlczMexpzmPp8k/RBG+qm5qL0I0qwUjvOo1FexuQqpHMRHTtw7xNCkK5V1bJTBx5wwweGLPuexDyCeteP6RfwsMVYyuiOeE4e6txb0C52ju25EibklTL0yXss8DaXWnqQ1uNfwtX9ICilg7zqPKAYd0D5NXQtlWwF++k9j+VS0kNoB59wiXTvJSznLoKG7DIpvSuhyQDQUZQcX80FgFTJzw9XGY8/qpVbd06LyL/tlGwvNHKfcFwDI8dL8mesMunHGROY8jKWzYnPIOLkMXQ00VYJoDT/nAwWHXbwYqxi6pXNGUWWyJZ+xbCWLh0spV4U++cdJyH+H71YKPwlxOvBrat9OFoyoONbSb4kLUYh1dPK85wdSeuXIjhxDeJidT9Ig+z0RMUwsHl/hrdhdOp4LJhG/ebSZYVhQuWDH0KCvaEt7CVs90QbKG7zD9MRzKTpNf+Y3/G8rA0oW2gGMGUXw8MQeuqH+3lMTVBxYJDU9foRr7jGegRW7j3VsKkH31WZikT4+QZ5VKeUxEl5WbohBirYrk4/jFD/im6vT9uw2LnISg22sYvuUIG1Q== 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)(956004)(186003)(66476007)(26005)(44832011)(66556008)(52116002)(83380400001)(66946007)(8936002)(36756003)(8676002)(2616005)(1076003)(4326008)(508600001)(38100700002)(6486002)(86362001)(6506007)(38350700002)(316002)(2906002)(5660300002)(6512007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: K4pWfskaMxFjRzmayg0JKB691WiTr2Yt5fXxt7ho1yorMmfLo/P1Cuo89N0TT5ZlQXxbQ27KUOO8nR9MutJJCE4ODKuUFcrC4T6HZ9O/EGIopfJlLNbiS710mfn4CEMOzz4oOgFLuu3TkcN3pj5zc8wzOdTsbz9crU9HBexxw0/bJuz6dmqn8U1s2AZr+C9hhhdomSRU4VC6+a12kkOHFXPpCNhVkxbseojibSeKf/heciX2qMS8mGt10nNxuukqWwnvVMMMazN+D1gvY5VTEw/NMLjM7vrI/y912FpLF5RwniUcgh8wWACqZFnq4RvbhLBtcBddEPIp+Jjm1zujieFUf5V8Xl6z/hlHbAdkFp3HBcEuM3ndwr7VTfr3yyl1pYy9c8z2Nl4QMIjvaHLCSxqwqlP7zJD8F0kLjicmTpJL6BRvslLWSbyTN8PEBfBMizlR9/IdvhyffJ+i9sZrMhg2BA7bRFsw/Li7yDPEe80I5WbHVEOieLGky7KcGW+Ldi0akMDeqfKkEYMmViSjkD4I8EudO4WWvM+7EaynuOpOna07sTYE2sMQ71HUoNr6gfkVBd9FcuaBGzI4ZmhrlQL04T5oFXQVhqqdQUyxW3TFTggzkKS8xil0Fl67+u3QrSbWu+523C93QKuhhgGv+CF2OnaGrSf90DuYwIbWE8BiFIs82IV66H3S7UTbmwwC0xmuT6WtmMyOWFNy4bf+/iERF2FPD0lj7Dmu8NZz1U4ZSdmOn6km2OILK6dA0CsNMr0hK2OONoeIDvytOhIQQFxgVYaOWm72EHixrhe1BwYew35uVp+RgAm0iEp95al0zhXa7/pBsj+Mg05IWoKx6vXiAB5CO9Fv4Fy0bI+wSi1Srjme7xODVGxyVgfH1Ev9WCyAueoWvjCoQxDM+E2pO1beABid74KDURErtsEJ6MxR15EnOP1fpiVbWJAiDQwTroX92TOjbDCG1pA2SMQpb8ohTYK/yvkhFJomccBLC09OEfJNHIpxfU+IOWZF+GAaXjsBeCQDvquDTXC4KUvwnEVFZR6OSvxhOKTo0F4o2NS9DAkIKL+pRnEwy19JVEBYOFI/01yoIEgmVZwlqrmmxMI2zAumurbPKSp7B/7hmGLfFqaCDEjD0csJrlSvezhAf+IsPbSoNpiCK+4kxN7BhyowVdE7w9Q4YkDx4bGU01H8lX6Wpxppfi++A7Vq20lPjVk41MalhKlL5vsVlxBN+QdXg466BcjMuAzdmZuggPV5snQ0niqPvjVjz6Zpa/oH3297H5IHeu/CbpgYEXFx8uyBbY/gMlOptPC9Eh9NbZFTXU72r63isL4w2RZfNA+h X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 672b2c1f-2d4a-49e0-0867-08d98e77cbc8 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Oct 2021 18:32:22.2255 (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: 3M6wGh8RC6eTmtQhAzX3S9rH1EQs2OBV2/INHEHt4O6oCqJjqwZvVlAC948rT4rMHwx15AkdY0BnAON/mtApQg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8805 Subject: [dpdk-dev] [PATCH v3 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 6a9761c3d8..0fb3b81442 100644 --- a/app/test/test_cryptodev.c +++ b/app/test/test_cryptodev.c @@ -377,6 +377,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; @@ -4208,6 +4209,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; @@ -4263,7 +4274,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"); @@ -4323,6 +4338,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, @@ -4357,7 +4378,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"); @@ -4484,7 +4509,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"); @@ -4615,7 +4644,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; @@ -4673,7 +4711,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; @@ -12971,10 +13013,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