From patchwork Wed Oct 13 19:00: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: 101486 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 1C6CAA0C55; Wed, 13 Oct 2021 21:05:08 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 8FBB041251; Wed, 13 Oct 2021 21:05:04 +0200 (CEST) Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-eopbgr70043.outbound.protection.outlook.com [40.107.7.43]) by mails.dpdk.org (Postfix) with ESMTP id 6E89341186 for ; Wed, 13 Oct 2021 21:05:02 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EoeTUNjQd/THDRW9KiKLmy8AX0zWECnwAIus6KCSMdz2TTGjHPbKX4jlDdlpl0JFQOH7s2MQjeSC+HUDIQmRkoeQdq8T1h/UAyhGamW6jxN3SOJylXRvC7zk0JSFRsUSmNo79oPYZCPp/wvVmaLWbCiXbCWLhnR+Mc/zZEZD0hcp1SpRGtaM6iqDIDQYMOpxHEn6FLU2kJvFvrf34PkNnGotBWz3btmLIpVuvg4WT9tKtNbLlYHDNPNF4HGiU7P7K5m6h1jeVpZuywkxregtJpMEak1gz3ByzyRb2hLlLW+7hI7jC0f4Qf75bwonIgnBj3OdKT5cnXSVudP8UP5G1g== 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=seZg6gLYWS54K0YjoQWmf8N/SqGM0mKsVkpu8FNq0ps=; b=ACNn1MJNot2T2uvipKJ8HQJCzilVSrlMP/GZ69w/e4bpmuN3hy32sKzbmHT8X8myRiPDDL4dxU9xv3IFG+CdFUoZHLNV0ZHXs+80O+ej/rT2EIlwSDX6SRtjaRUTDw6c82N3Pxzdm7V21YZcwFPJFCTFho7vCxvd79MjrsvStRcDnhYzp7C26wq3jAxkzf9qu1eCuinUIpp3ebhbUcd0hRMgVH0PanvbaP2nJlx9cwpmnJpa5WN7Nuw+hSRjb3sM7YbzB1qETIMO+9FHT8OpoK7XekmWac7ZRbztBOWsD1XzbR0ldpVfLUFW+/UA/RbaLc+N3WMjU6MvOWHwxS2NMQ== 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=seZg6gLYWS54K0YjoQWmf8N/SqGM0mKsVkpu8FNq0ps=; b=nfKb+9rkmIRBoVjbqicT1srAyNBS3spulPBumqIgW94DEWzGYVjq7d5fzSJkHDkfvkMfVERMVCaCtJi2TnbVbFqb6ebdSXZHVl1fOHEIzgbbm8SLd8kaOMu1E70cOs+WDCNNomY5JVc/UwU+yRT8mEmHSW92mljkdrYUkLYLnu0= 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 DU2PR04MB8870.eurprd04.prod.outlook.com (2603:10a6:10:2e1::17) 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 19:05:01 +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 19:05:01 +0000 From: Hemant Agrawal To: dev@dpdk.org, gakhil@marvell.com Cc: konstantin.ananyev@intel.com, roy.fan.zhang@intel.com Date: Thu, 14 Oct 2021 00:30:18 +0530 Message-Id: <20211013190032.2308-2-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211013190032.2308-1-hemant.agrawal@nxp.com> References: <20210907075957.28848-1-hemant.agrawal@nxp.com> <20211013190032.2308-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG2PR0302CA0011.apcprd03.prod.outlook.com (2603:1096:3:2::21) 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 SG2PR0302CA0011.apcprd03.prod.outlook.com (2603:1096:3:2::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.4 via Frontend Transport; Wed, 13 Oct 2021 19:04:59 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 6e5876b0-c210-483b-52fd-08d98e7c5b87 X-MS-TrafficTypeDiagnostic: DU2PR04MB8870: 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: U+Z8L1tX0E7pwtq0fx1vmklQwS6GxF+pBBcEkEE5RmMPKoyADTd65t+XKpF1Qy6kk0FoeFQkFc7yE+tr5wk3t71FPGHP1RSGWMMvY3QdPIzfibw67Nc68QsIN9Y3oJcT3W4kQqIoaMjoxQGU4Ru7A2JCcaEN+YOK49iLvVSdgADoRhp+Es0XsKbYH3TeuzZEq1bsSiRHBdUrdBhozluSf+hy7fquwuJJ4DTn1qpGONR4eWq3/wH4wudYR9n3ODbg3sSmR0wZYedg9GH5igpa9OqrDLo05KjXb1yGwE5/V+gWmh+EJbgk7tADMXyDzRorM6tRVSnFC6yQ1zENy0bSY+n+6Ni+Hl+bxR2VTk+4PvOMedo4+FWdiksWjoAggddL8+tHE3hhJ2uGl3WVuuXsTzsJwHHghZGdFY+G8lZ1CF3OX0jxEyZ/aQKvOzy865Z7fEvFgjlvdWP5oCn/GcWlL/np2psZ5qwcgovJwg5+xBXbWkHZJ61N3R5ah6j2l0isyr9mntu5Znti/QMKNvw+ry2lC9uNVM23hk7o8liEUtz5uUVgiZSF6w+8tXMmJFvg1yTe9et0KLBJQ5f+KWoTdyzu9VJjMztZ30NcxI2FrJuSaMH1ZA1iCsMQ56/nDRAG44OhXXUklib1IrjnmbNJ0oBdTr65XZEATiQ1XftQgQa62zy0qEiTqgOIXC/MWxOpAOwZTcBiR6EUl7niEUuvyA== 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)(66946007)(66556008)(316002)(6666004)(6506007)(36756003)(6512007)(2906002)(8936002)(1076003)(52116002)(186003)(4326008)(956004)(66476007)(2616005)(5660300002)(83380400001)(38100700002)(44832011)(38350700002)(8676002)(26005)(6486002)(508600001)(86362001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: JwTiS/hgqlHKwP2MYG86+fjQ611bFcow8qjZqVNe6HsjtOBkT70JgyMPkkU9/S+qUYiBBBizB9+eE7goVLa9A+vIOcx5sqHmTdM5dH87ll+Q9BCSoE1V6h7AryMj+7JhtY4qJqZy8HoFvnh7G9rue+AR9AX6WxzsRjpSFLCaISum0Jl9qIzxoQVJhuHhv9XLAFO+c6L3BmxW56Wnr5O/9LX+yBhURBZ2fU8qlOQycw0wnwAncMcVuGdG5sEK6GRtHksXuDxdUbtIpobeSenV6Dz+PeOlq4sueJ3g0ZG2UCepGbE35cfoCSNukUApEGx3Ipp40LdgTylIV3TAYcUwJXej8N/sYRp2j013DDlv9QkH/342/kW+Y9fj+gAE5vJvlIqkQp3gRuJ1rutpImMGxPUitOJmtg1/dXrbBmmfWuOhRP/JFq+UjvWPkYY+APotOrlwFQC4jsrft8kooei8MU3or91tUeKPA9JWUSdONmRV9gjD8flXBuwfPoX0T9UYdSW+6PHfF2BpTNhRegWRS9cThw4C5R4YVcCDgXaoaYIrhWDx5zv/xBoMT4qL8c8jPvtVJlB/jXrFyNmjakz/DSoBGIaSHUu/rP5NmMj/nAYft+tvAr/cDXJvmHbdGyyol5nO2Vm3VCEyblRazuR5ZzbgMldhyoc/lAk914p/j6r+HOxDTtrX/RwS4BxtBnzhDXlyCFwNBCnFHkm4NUmk4AX6YLVIuP0+1txkgkADnxjX71ZU0Mw1weq7kA5haOHbuQL50ltOUtj9nPhdr7XKW1ZBAgDw7qFLip6QLYLEi5TGwNrLJ9TUKIIWvMna4fZqpuaA/k6VHE/jXy4IG9sm7iGqg2YYMdMNfRY7e+byMXB0kDMmYiv01h+YajaEaIj1032BnwZNtEI6eId6ZDPy04pJVYbvaXjzYPH2WJ8GQJjaos76o9a6qmKDZhY2J1QnP0HhAXpQvCnZfQHBTx9rp0dfvGln0eZnpI+XlomIs9KcKAjvzHLybAzH8dWqLPUNll1HE/mtoGee+9GWQEbVv2woNukQgL47ZKseSf3GWKG20RQ/oPD0Kd++/pUCgglfPB73eN7rflvF8HForixYmlrIxVfOD7zaRl2S6tRCKzbopnAxVSjPasTmxMHS3YeHjq0DkEpDbFWMtfFvfbDjvhlycb8K7ov1+bnZboKamO2L8FOcPrGimhiU4yW3dsr62DKUJQEVR7b4HzTs95kKUy8IVp/RMICTs4v8+Xf5GujIOAwmD6y0OrQF4gYO3DilJw4nsq2WvAaIrbyNK42jivU3FuSIw4LfpHqaLekDttRLhQb+IXK+dz3nRfJkAz+t X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6e5876b0-c210-483b-52fd-08d98e7c5b87 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Oct 2021 19:05:01.4619 (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: 8yrmODKPKdSIyf2FJZUxQG5ZcxzpZGQZQrgLZCmk3m4k4OeTdSytoeN7oMG5K/y8wIISzRGCgG4tGov1ZM4HvA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8870 Subject: [dpdk-dev] [PATCH v4 01/15] crypto: change sgl to src_sgl in vector X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" This patch renames the sgl to src_sgl to help differentiating between source and destination sgl. Signed-off-by: Hemant Agrawal Acked-by: Akhil Goyal Acked-by: Konstantin Ananyev --- app/test/test_cryptodev.c | 6 ++--- drivers/crypto/aesni_gcm/aesni_gcm_pmd.c | 12 +++++----- drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c | 6 ++--- drivers/crypto/qat/qat_sym_hw_dp.c | 27 +++++++++++++--------- lib/cryptodev/rte_crypto_sym.h | 2 +- lib/ipsec/misc.h | 4 ++-- 6 files changed, 31 insertions(+), 26 deletions(-) diff --git a/app/test/test_cryptodev.c b/app/test/test_cryptodev.c index 65b64e1af0..4778dafbe5 100644 --- a/app/test/test_cryptodev.c +++ b/app/test/test_cryptodev.c @@ -232,7 +232,7 @@ process_sym_raw_dp_op(uint8_t dev_id, uint16_t qp_id, digest.va = NULL; sgl.vec = data_vec; vec.num = 1; - vec.sgl = &sgl; + vec.src_sgl = &sgl; vec.iv = &cipher_iv; vec.digest = &digest; vec.aad = &aad_auth_iv; @@ -396,7 +396,7 @@ process_cpu_aead_op(uint8_t dev_id, struct rte_crypto_op *op) sgl.vec = vec; sgl.num = n; - symvec.sgl = &sgl; + symvec.src_sgl = &sgl; symvec.iv = &iv_ptr; symvec.digest = &digest_ptr; symvec.aad = &aad_ptr; @@ -442,7 +442,7 @@ process_cpu_crypt_auth_op(uint8_t dev_id, struct rte_crypto_op *op) sgl.vec = vec; sgl.num = n; - symvec.sgl = &sgl; + symvec.src_sgl = &sgl; symvec.iv = &iv_ptr; symvec.digest = &digest_ptr; symvec.status = &st; diff --git a/drivers/crypto/aesni_gcm/aesni_gcm_pmd.c b/drivers/crypto/aesni_gcm/aesni_gcm_pmd.c index 330aad8157..d0368828e9 100644 --- a/drivers/crypto/aesni_gcm/aesni_gcm_pmd.c +++ b/drivers/crypto/aesni_gcm/aesni_gcm_pmd.c @@ -535,7 +535,7 @@ aesni_gcm_sgl_encrypt(struct aesni_gcm_session *s, processed = 0; for (i = 0; i < vec->num; ++i) { aesni_gcm_process_gcm_sgl_op(s, gdata_ctx, - &vec->sgl[i], vec->iv[i].va, + &vec->src_sgl[i], vec->iv[i].va, vec->aad[i].va); vec->status[i] = aesni_gcm_sgl_op_finalize_encryption(s, gdata_ctx, vec->digest[i].va); @@ -554,7 +554,7 @@ aesni_gcm_sgl_decrypt(struct aesni_gcm_session *s, processed = 0; for (i = 0; i < vec->num; ++i) { aesni_gcm_process_gcm_sgl_op(s, gdata_ctx, - &vec->sgl[i], vec->iv[i].va, + &vec->src_sgl[i], vec->iv[i].va, vec->aad[i].va); vec->status[i] = aesni_gcm_sgl_op_finalize_decryption(s, gdata_ctx, vec->digest[i].va); @@ -572,13 +572,13 @@ aesni_gmac_sgl_generate(struct aesni_gcm_session *s, processed = 0; for (i = 0; i < vec->num; ++i) { - if (vec->sgl[i].num != 1) { + if (vec->src_sgl[i].num != 1) { vec->status[i] = ENOTSUP; continue; } aesni_gcm_process_gmac_sgl_op(s, gdata_ctx, - &vec->sgl[i], vec->iv[i].va); + &vec->src_sgl[i], vec->iv[i].va); vec->status[i] = aesni_gcm_sgl_op_finalize_encryption(s, gdata_ctx, vec->digest[i].va); processed += (vec->status[i] == 0); @@ -595,13 +595,13 @@ aesni_gmac_sgl_verify(struct aesni_gcm_session *s, processed = 0; for (i = 0; i < vec->num; ++i) { - if (vec->sgl[i].num != 1) { + if (vec->src_sgl[i].num != 1) { vec->status[i] = ENOTSUP; continue; } aesni_gcm_process_gmac_sgl_op(s, gdata_ctx, - &vec->sgl[i], vec->iv[i].va); + &vec->src_sgl[i], vec->iv[i].va); vec->status[i] = aesni_gcm_sgl_op_finalize_decryption(s, gdata_ctx, vec->digest[i].va); processed += (vec->status[i] == 0); diff --git a/drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c b/drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c index 60963a8208..2419adc699 100644 --- a/drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c +++ b/drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c @@ -2002,14 +2002,14 @@ aesni_mb_cpu_crypto_process_bulk(struct rte_cryptodev *dev, for (i = 0, j = 0, k = 0; i != vec->num; i++) { - ret = check_crypto_sgl(sofs, vec->sgl + i); + ret = check_crypto_sgl(sofs, vec->src_sgl + i); if (ret != 0) { vec->status[i] = ret; continue; } - buf = vec->sgl[i].vec[0].base; - len = vec->sgl[i].vec[0].len; + buf = vec->src_sgl[i].vec[0].base; + len = vec->src_sgl[i].vec[0].len; job = IMB_GET_NEXT_JOB(mb_mgr); if (job == NULL) { diff --git a/drivers/crypto/qat/qat_sym_hw_dp.c b/drivers/crypto/qat/qat_sym_hw_dp.c index 36d11e0dc9..12825e448b 100644 --- a/drivers/crypto/qat/qat_sym_hw_dp.c +++ b/drivers/crypto/qat/qat_sym_hw_dp.c @@ -181,8 +181,9 @@ qat_sym_dp_enqueue_cipher_jobs(void *qp_data, uint8_t *drv_ctx, (uint8_t *)tx_queue->base_addr + tail); rte_mov128((uint8_t *)req, (const uint8_t *)&(ctx->fw_req)); - data_len = qat_sym_dp_parse_data_vec(qp, req, vec->sgl[i].vec, - vec->sgl[i].num); + data_len = qat_sym_dp_parse_data_vec(qp, req, + vec->src_sgl[i].vec, + vec->src_sgl[i].num); if (unlikely(data_len < 0)) break; req->comn_mid.opaque_data = (uint64_t)(uintptr_t)user_data[i]; @@ -302,8 +303,9 @@ qat_sym_dp_enqueue_auth_jobs(void *qp_data, uint8_t *drv_ctx, (uint8_t *)tx_queue->base_addr + tail); rte_mov128((uint8_t *)req, (const uint8_t *)&(ctx->fw_req)); - data_len = qat_sym_dp_parse_data_vec(qp, req, vec->sgl[i].vec, - vec->sgl[i].num); + data_len = qat_sym_dp_parse_data_vec(qp, req, + vec->src_sgl[i].vec, + vec->src_sgl[i].num); if (unlikely(data_len < 0)) break; req->comn_mid.opaque_data = (uint64_t)(uintptr_t)user_data[i]; @@ -484,14 +486,16 @@ qat_sym_dp_enqueue_chain_jobs(void *qp_data, uint8_t *drv_ctx, (uint8_t *)tx_queue->base_addr + tail); rte_mov128((uint8_t *)req, (const uint8_t *)&(ctx->fw_req)); - data_len = qat_sym_dp_parse_data_vec(qp, req, vec->sgl[i].vec, - vec->sgl[i].num); + data_len = qat_sym_dp_parse_data_vec(qp, req, + vec->src_sgl[i].vec, + vec->src_sgl[i].num); if (unlikely(data_len < 0)) break; req->comn_mid.opaque_data = (uint64_t)(uintptr_t)user_data[i]; - if (unlikely(enqueue_one_chain_job(ctx, req, vec->sgl[i].vec, - vec->sgl[i].num, &vec->iv[i], &vec->digest[i], - &vec->auth_iv[i], ofs, (uint32_t)data_len))) + if (unlikely(enqueue_one_chain_job(ctx, req, + vec->src_sgl[i].vec, vec->src_sgl[i].num, + &vec->iv[i], &vec->digest[i], + &vec->auth_iv[i], ofs, (uint32_t)data_len))) break; tail = (tail + tx_queue->msg_size) & tx_queue->modulo_mask; @@ -688,8 +692,9 @@ qat_sym_dp_enqueue_aead_jobs(void *qp_data, uint8_t *drv_ctx, (uint8_t *)tx_queue->base_addr + tail); rte_mov128((uint8_t *)req, (const uint8_t *)&(ctx->fw_req)); - data_len = qat_sym_dp_parse_data_vec(qp, req, vec->sgl[i].vec, - vec->sgl[i].num); + data_len = qat_sym_dp_parse_data_vec(qp, req, + vec->src_sgl[i].vec, + vec->src_sgl[i].num); if (unlikely(data_len < 0)) break; req->comn_mid.opaque_data = (uint64_t)(uintptr_t)user_data[i]; diff --git a/lib/cryptodev/rte_crypto_sym.h b/lib/cryptodev/rte_crypto_sym.h index 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 19:00: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: 101487 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 4D9BFA0C55; Wed, 13 Oct 2021 21:05:14 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 9A7F74125D; Wed, 13 Oct 2021 21:05:06 +0200 (CEST) Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2056.outbound.protection.outlook.com [40.107.22.56]) by mails.dpdk.org (Postfix) with ESMTP id 936E641255 for ; Wed, 13 Oct 2021 21:05:04 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HbuXrt4fbg7VKRH4NSY/XJD3RFJFQA2baCRlRjqvFxZyNK+L0o+HZ3nty2U8p88BaCUvsu3oCky/SAXfdmY4R4cyGUWm0Eii+nXBEJAMcgrkxwMJI5pf3Bekpeh3al9IW7Zrr6M8K+EOUihdd6YS2spMm4gTgN7dmP/jC01wG/fRnOpjTvTXH/IVpUeTnPnF+Q0r7EhcR0PZtP3ef+tFiOvTOYUOCuMf8cN7eWMvfNPzXH43JpNVxRbhbhqN0I9YvfFCvd7nX+vNS46FcV/UA9p+sUGAJkbg+rU0L7nvJha9ZRUwPrm3dHBB1dxl9CwZmzH+/LiacDJSS0HPOjh3kw== 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=BcieUuF6TDZ+VTE+bEnzlHxrEhAPc1TtT4OggNW97Sk=; b=e+opoDM3pzG0acXOHri4ynp23jatoGLyYmXw0X3dXOuhe2L3YvGG48cvPuwmtUO2lv+Dssjptx5N5hC1lifw99aRf71Ao8KyaRHBy6WD3tQVA5/OZXOV/QA0k0k2x3tSPhr0iWEJYOTMNN6fvSR9c6gAzSnj9uW1HhccV5C4xh1edzlBpFezC5cy/Mg3LfsSjW49nq6Tt5YRuS7O9dlRonfYvD2wkL0h6MoYNTkWewDpsJ8O8tRpFtnBt4Gg+OZse4efEUXTA3XK5y7uE6tO46Vjlkz/vJAI7S3lRwpI6vf56lraulUbzXRfjEmlMmg0ZJhW3bfJhL/cyxMmETvvjQ== 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=BcieUuF6TDZ+VTE+bEnzlHxrEhAPc1TtT4OggNW97Sk=; b=L9Ddi5zJGMKKeym/a6yhnd068YiVdezR+pf5iDlOAzee61CJbStXLYQLWy2OfnWtOFNcepyPnRzxn2IrYlACJymbBq6+qGRjsVYmo7jueXcwpCNBkOFk6o2yADkrWCJUf2+xmLLDMfz4aOGy+sMsX3YhVfDvZ5Yvg6As7PmxJ1Q= 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 DU2PR04MB8870.eurprd04.prod.outlook.com (2603:10a6:10:2e1::17) 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 19:05:03 +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 19:05:03 +0000 From: Hemant Agrawal To: dev@dpdk.org, gakhil@marvell.com Cc: konstantin.ananyev@intel.com, roy.fan.zhang@intel.com, Gagandeep Singh Date: Thu, 14 Oct 2021 00:30:19 +0530 Message-Id: <20211013190032.2308-3-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211013190032.2308-1-hemant.agrawal@nxp.com> References: <20210907075957.28848-1-hemant.agrawal@nxp.com> <20211013190032.2308-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG2PR0302CA0011.apcprd03.prod.outlook.com (2603:1096:3:2::21) 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 SG2PR0302CA0011.apcprd03.prod.outlook.com (2603:1096:3:2::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.4 via Frontend Transport; Wed, 13 Oct 2021 19:05:01 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 530d4b9b-881f-4daa-85cd-08d98e7c5ce3 X-MS-TrafficTypeDiagnostic: DU2PR04MB8870: 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: tKntNR8XnCYmnF9L3NWTSU4Owh5WS6RNtjUsGpH99KcWpaih8ZFF1Sa3EaQto1OtnXOjw1m410q+O1QrVtkH+B0+zfh3+PvsOeNjM67ESUoSTWBq4gyOPM+I4M+ZrvrtAtGweOmc1a/uB70M/Er0VKxlh1yZukPYggQupaz/1bnjYQjMGgiyMbV5h1yPsupyJVtluARfzq4qwLEkNQS7xiR3mcu5xa1dtLOsbwFOU36QccIlZG5BqCCPqzAX9+z5ZUVtPFospZIIyfH38rrsUfeQ9xuU6Ki127+BDMqpc0+koyH/xzmNxS8NqRFhWmAdByzzpfJOcArk+HrbVpOTCB+abxGCl0uVOuac7XG8KrK9XsXj34+nxnyQO4BbpQ+FiAW2qbLJyD6TnIgX9O4zwCgcqQ+nxhmZlBY7QGe7ePfOWl1qYDCQ3y/aiZH4xmrMxwwN774GAAoTiLGLCINHuz78WTeXDAhiK//XchmJ2DQNGvCDSFbtTgs48yiLJOUdIDJZU+fkeHyc2GurQxE4MW19O076Pp/0WGZY1XT7qMbrkvBkd7KyI/Du8qRkE3IgJLB+erKBbqmSiE/+gxYbONjdZ3RXPOldYatlsgYP1xhXArrU+pEvG+/1OSzvwcJKQpxcdUQIOTj2kkGU1FAhPUJYSy9AB5jaKY5YSdCH0090mRfgzqfm6cvo0t9abpE6zIh7QcRSoh9qsgnl4fJhsg== 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)(66946007)(66556008)(316002)(6666004)(6506007)(36756003)(6512007)(2906002)(8936002)(1076003)(52116002)(186003)(4326008)(956004)(66476007)(2616005)(5660300002)(83380400001)(38100700002)(44832011)(38350700002)(8676002)(26005)(6486002)(508600001)(86362001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Y2vcyls83gs4sKk/6x33mkARvufIIYOka0iFuCioWKOxuNIuVs+E6rxWR4TiartcAfJhrN0VCQ2hznJ6LknPSzCOw5qWGuwAmUedPVL3DB3BXFfmV7UW4uTqcrCrcDfaz2q2u2M8Cs+lxbE0tkBr3jSj7HrCNF1odBnY3ziq74WNg0Uh5xaXmNzfQ9Q47UWxV4BZq0K94GKAGLpNhbjw1QV7H8wxMRa4UryNAw6J4ewQRAZTjtx8tLLNwg9VUt96/q/8o0Y4F5CWMeVKs9C+u7dkVJg527a3P4pnlLIWa5qQ4rgJTe+OEb3iJPDOLEMcoiGGoVqUJeByTOZThng2eqaNxcyMgp83uCGYASoL+fcdTx/gmfTdoeuGzCuhnaWRnezDyvoN789wbYT5z/1B2QhZdjbTj2/okRgX1yVGICO9xjq8lXermip/8RL454yRI5UZBk24zpkKU6VEHjXy8wKyFTwqOGRa6L+COcmUvfICoCrZa/QYjJ6Kq4zMZod+M5LcPq77lQ8QwUHr99tl17/763Hp4AuSoequ7i0zU8dL3XMiL3AlU5U9njIt95nUFnQ48hOnSZvu0CKH1BUvCxSeUQ5U1TO6/ate6jhFtciZNxIKOm/KGQ4o7zYPFow5KHyltubrFYtHGHALvAm33dfDMDVUJB8Zmg7Ux/REQWpUUW3KnzP6onFQjl0DZu1dRupcrwx6eGCur9uRs9Uxqom57U6lnDbBXeECh4SwSCMomSpu+2IhPJja6KNLCtM91txfu/8JMYgDkjDk/X5RwynYUHmor2bRDJSslXn75pEPFFxxribUU/tSJrkbCnIwKQZq1XYq4D5FebvPQ9F7N7hTwnZMIXURZMbgp0w3A1dTCZty9n0slcsbvw+0zBHQTtN3FGl0bJep2urnFtpzOxD+wT5djRNPcA0Pu6r9TyRmjAd19evfLmnwVraL5eIwczD7VrmHkYewTWwpehmP62QrbUQIWQyoF3FWy6QiEzyph9vb11tNjJKydkYLRqF3JjYk16Shs5SXEWBP6rJKjrfvUTh2J3D+W5lWIxn6RqVb8/dXQC395jpzFnt428R8s1s203UDelLpeodsZmba8kFxE0NyqcjD6N39tdiUbWV2VbZUijoAafpo22cs6+YZLRhRzJPvbzQs4loyAK7mGxBggAE+xVB+Qit+y6NV2b1hpy7DU83dJmnPqgfIokDc332/B+AAZci274uNl8t9vB0xRgx7h8KGeOckMhMljKKWUsE7iqDM4SFBxvBEsgwdqhbzM5AGimRiBfsRuU29Cq8/PQIYqLhv73WA38/kkTdxcxxp9UJGI774ZXdPA7As X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 530d4b9b-881f-4daa-85cd-08d98e7c5ce3 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Oct 2021 19:05:03.7270 (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: TazLJOxA6UGoH1TzOs4aW7Jo7aApigvQk70ZVz6xfcf7hUfRxdi/d6daIYGiwtqJStAv1bUk+lnyWEO5lWHw/g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8870 Subject: [dpdk-dev] [PATCH v4 02/15] crypto: add total raw buffer length X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Gagandeep Singh The current crypto raw data vectors is extended to support rte_security usecases, where we need total data length to know how much additional memory space is available in buffer other than data length so that driver/HW can write expanded size data after encryption. Signed-off-by: Gagandeep Singh Acked-by: Akhil Goyal Acked-by: Konstantin Ananyev --- doc/guides/rel_notes/deprecation.rst | 7 ------- lib/cryptodev/rte_crypto_sym.h | 7 +++++++ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst index a4e86b31f5..53155459a0 100644 --- a/doc/guides/rel_notes/deprecation.rst +++ b/doc/guides/rel_notes/deprecation.rst @@ -188,13 +188,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..6be283e83c 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 - rte_pktmbuf_headroom(mb) - ofs; return 1; } /* data spread across segments */ vec[0].len = seglen; left = len - seglen; + vec[0].tot_len = mb->buf_len - rte_pktmbuf_headroom(mb) - ofs; for (i = 1, nseg = mb->next; nseg != NULL; nseg = nseg->next, i++) { vec[i].base = rte_pktmbuf_mtod(nseg, void *); @@ -995,6 +999,8 @@ 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 - rte_pktmbuf_headroom(mb) + - ofs; left = 0; break; } @@ -1002,6 +1008,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_pktmbuf_headroom(mb) - ofs; } RTE_ASSERT(left == 0); From patchwork Wed Oct 13 19:00: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: 101488 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 54F3EA0C55; Wed, 13 Oct 2021 21:05:23 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 191264126C; Wed, 13 Oct 2021 21:05:08 +0200 (CEST) Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-eopbgr80078.outbound.protection.outlook.com [40.107.8.78]) by mails.dpdk.org (Postfix) with ESMTP id EB49A41261 for ; Wed, 13 Oct 2021 21:05:06 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WGr4u20/vl5R6XazAwFwgE42LVqkOyTuNV/VqpnWcM9NNUOgdip82THd44RrJ4qjz5Y7ai2q2/bNPKL0TY6em3XaKSkw2lJkYFxgld/t26iVF+m5LxZlFhHXIqBIKieiKFF4djasykjMn3eqYl/R6SMU5IPxRRoE2182hNi77hC2bJzP8mhBu/zALxJ2hbbwvIRXDzMu01CQLpA+MU1bhMMeYFTcsAR4GaamfWsfa9LhD3Yz1r/uuGiBta4txct2ELPByV7RImCrjKOtSaXx7aYR0qJi6kJ7Wx0HcDD848vMOsp6VxWdeDzRAHcMquZZ9+uj1hgDLnhWaZYkk8Wu8A== 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=N0FDoKzozgS0TFeer2weaMVlX8GbUjKIBa6v5vJQOEk=; b=CdhR2W+BkDulZiYDbUyGn925soyOaA2kETRyWPI16ma5wGQ0pSxH9M5eMo09pVkCeOgOW6iSOTTSePD703S+JmxarCxn4Fl6RPIOv8AlYs9vKSrd/cnMXhLqr0Vu+Qn47EdXviQDsQHz9q+DhFhrk0PzJc6Sv1X6LVwKN6eT1ET0pXnE51/wcviW/d1BTViOU7TlBSPex05NmhD9aOdL6DF5i4A5IYbbaYC6Wzy4CKEgxKGsmBrXsIKMzXiXXg0qRSnur2gcNJH2OlH+JQB7ADF/blUf4i1vLgSrvPg/mU2SHJlAVDDkDcYyIk3R8eeLWHD6BEdz+MkVEg73SYAfSQ== 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=N0FDoKzozgS0TFeer2weaMVlX8GbUjKIBa6v5vJQOEk=; b=dXAcyg/U//fJiusyala4l2bOgG5E+FUqlTGCchfwRPHZEgVWZ6i05Iw6aq6aOmjnRcmZh1hzORqBsPvF1eCjq5bJ5sgWTEesLTpmdF6cpX/U5WePy2lDxSuQuCcTan62l68Jf4CSrVx152HS6m6qCTht4endybJBc7at5Q6Sa0g= 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 DU2PR04MB8949.eurprd04.prod.outlook.com (2603:10a6:10:2e0::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.15; Wed, 13 Oct 2021 19:05:05 +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 19:05:05 +0000 From: Hemant Agrawal To: dev@dpdk.org, gakhil@marvell.com Cc: konstantin.ananyev@intel.com, roy.fan.zhang@intel.com Date: Thu, 14 Oct 2021 00:30:20 +0530 Message-Id: <20211013190032.2308-4-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211013190032.2308-1-hemant.agrawal@nxp.com> References: <20210907075957.28848-1-hemant.agrawal@nxp.com> <20211013190032.2308-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG2PR0302CA0011.apcprd03.prod.outlook.com (2603:1096:3:2::21) 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 SG2PR0302CA0011.apcprd03.prod.outlook.com (2603:1096:3:2::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.4 via Frontend Transport; Wed, 13 Oct 2021 19:05:04 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ae1ef4ab-b0f0-4bb0-ca90-08d98e7c5e15 X-MS-TrafficTypeDiagnostic: DU2PR04MB8949: 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: zCPyFSbiwFP+5N8NldhAyYTW/6H76Pe/aqqQ1bsEXL3DuXGwK0xWp007v7Iv/pmMHDEiFQ6xk2EMvvRAxPS/CztE1oYHnboZdvyOvIsA/2zSjNM1zIz+VoRip4Nafl5DxYugownffJLUI+zZga6MbsZlYMb9e+b65KlndNRDrFlKIxB8dEKpI2ZCKYNVIu/kr7craQ5XZHu8qBo8lRMWb7GcEycS99t7QxuJkbrCcoU93AArzY/pdO9WhEJAYH9kqerGUybHfUCUMl5T8DKiiioLFERmxJmWEidIqWQErJIRwLCezoXRMRBzPQEN03/6wS1lLxP2AlhCb1CY90US92tWIC0rYpkX3rgdS7ia/uYi+hiBev6St3qed3RUYt8OJGeIlqDrKy1WVoSMELDC+VD/TCxa7CagbDWjgadvFnB/3aZgeZnyJjkLCaZPiD5IsVS03LTdGJ62JXdUEhIRvfaJla4PAKKx67HefHNur6LQGo0Ff+6ShjWJKPGpqo6HwCXm7ninDgCBOpks8EnlSRIjMRMN4hTfZKeB+M2+wOcoTClZfvHLnmqzxNpwzuacW9XWrASeN3XCJ52CDEOXp98/258AFV6H9iOQUrs/7F0Itd9gvJQdz+WWV9YuxsRYFkOGHuoGlG9KeDH0Op+mieXusAKH1Md7IeHWS3Z6MOqINGhQvzGdrTCyeoyzLfGyV0JzOILj4aNx1i4vv4DHBw== 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)(38350700002)(38100700002)(86362001)(316002)(186003)(8676002)(1076003)(26005)(6486002)(508600001)(36756003)(2616005)(956004)(83380400001)(5660300002)(6506007)(66946007)(6666004)(4326008)(66476007)(6512007)(44832011)(8936002)(52116002)(66556008)(2906002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: tY3VwRngn7z65EyANgIhi5UAFOSe1BmNxH9pb1xRmcsdyZRJJIuBfBuCbNCRAFkIS9+ze+ZS3Ay33aXn5cHcPTkIZXMhl4NJRwRsNR2b0Mm3U1qqqUWz/4t8nqpSNPdp8t8kSuM+QB/HGTSbGLFyKSAdmnZ7VFO7pMMNI39RLUopWBVxJ7miZKdnXIPDVmfm9hN/sDVDX12oPM3HVKivjobM2JFKwnh+WU7ti90cNDWg4MryAS3BLgZDp6k0/UfaHsBGNohT6aWiNUFohwLvlUWtzu4FtH1Xh1g3OKS4oNpDKzEOTv8VdBFS3gqOzZ5lcfeZZusNpy78vQM33GrhgoxmzXPd5LdYAXjQIcrbHiQTm+mO60RlpHUCrO/ejy47K2TLhLRxabgU7oZEn1dYKoVYvxBBwW0jIg75L78+tc78TyiBS5u61uWj5l3dJB5/6XJLM7IB4lmxf0pCDh44tXnruhWJJcYyvXJwblrTHeDVSZZ2SA9UU2ArUevtpAjxSSNbjDyd1z1kxJ2lgyxmH6tm1dJIpxcg+IJLVSu9+MIgeJt/+9O3ddZOTBc/CeT/zlols9fV4uzAspIVGlMH5HXBgwzW7woixEf2Yv7fyYglRqt80lSqGnmUaG1ieSVkUsMow4cR8S/slFMgHQoTEKwVqYUsOcMEK8vcNcQ4gbjDTksaIgmCf4wHQ20nNUoXgsP5G84BmZ383SPidFFOcwaZmxaikeEHCozh0G/0PGP2dBZK29sXIbBnVY8/BvgJb3AqjX3nBs5Av8OXIB/9oTdS7+c5c0dXoI/dz1IG4BYkc5Yt+14OSmIxukZX1oiILftFt2dcNZlZ2jJegI0CxBKq1U7zUa7ZbkCZ+Al0dUksgfKEJyP1ZaUZ/dtoTANkL8xcdcLeXnISBsPsUv5PLhHa+hjNBtKvJq1HMsNf8gvTJk2Q8LyFQ6KOqH+oDEJU+2YSQKXtElRxGgieoHHV7sq1/5KNGnM6H34FiMZ+j/qj5UtM7dAeyY2plLm1Aq1v4iPWJy/IB/+FbTWZ04wLBCVs1wwrRV98kXIOMqrbiAiz8eJ5DdBRXtkx+MNDjCLfJGwwMD/zXdylNjbbOBbdzfGpzvGd66zdN7GR4c+e49zTMbg9/xRaYRCJeKo82WS08U1L2Oh1vYDuuDNecJwtyiUOF6YOZCRtNY4rsyB/Hxg/zOXJU1FfdWeZRnjhqwm5ga267jk/gSPdul7PrjwBLpjRbaFLTT27ZwZPcwBcM7dXM6rA3M+iRZ38WRHFlFehvp4C2mpKWjiaDDBu3gcaDFzhqvxHmYV1GtkC0hdL4QhlYTl908n4iLVXhNJOy5hL X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: ae1ef4ab-b0f0-4bb0-ca90-08d98e7c5e15 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Oct 2021 19:05:05.7560 (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: G239B80mthyenFX8m0alXXg7ZG3xqDEvJG9fp/N91zt+tKK0PgyD5r8gDe2SvG6GHW/Cy+RYjEwxfT+U7jlwKQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8949 Subject: [dpdk-dev] [PATCH v4 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 53155459a0..581ee21449 100644 --- a/doc/guides/rel_notes/deprecation.rst +++ b/doc/guides/rel_notes/deprecation.rst @@ -183,11 +183,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 6be283e83c..b6a229e263 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 19:00:21 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 101489 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 79C33A0C55; Wed, 13 Oct 2021 21:05:31 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 2987F41263; Wed, 13 Oct 2021 21:05:10 +0200 (CEST) Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2080.outbound.protection.outlook.com [40.107.22.80]) by mails.dpdk.org (Postfix) with ESMTP id 5B1504125C; Wed, 13 Oct 2021 21:05:09 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dEau+mQR44mlWyLtaJsONGRoB2J9hj2NHxwiMeTOO00yyKeEFPGNNbmt5J4oqlTA9K+Brl21O4K8wcSqk4zwvukDZqUmbU534XQ+7hv/X2Nq6ORfUa9JRAqB1VVLszGvCfB6U1TVr2ymmt9iH2mJeKWfwCvHstrJnM15f9VuRHsUriBvr8cBuf3p88uYYGf1L3gH7Ofl8FU9RUgBdHiQcsrMA6wpGQR47WP7FY1zLd9Dr3Y6JBzD0NQwy72ns7mV/bFy4TSTEWUeQjftK/SqoGnfJKLe9Bz/myCcLU3Yj4DocbOzB0tjPUU5GiocOpl7scag+3Q5PPqs71jSOuqnaQ== 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=vncqNM02Nl2gWPH/HpbiSKi/QN0Z6/fk/13kKOQU/xo=; b=jNsUeOW+s89i5De92l3lYqyqKCjKYvFkGCD9bbaxWDzE8oI/maRs+vc5p5Ld6+LGpFwnW5oYwXS/WZ/FyUSvWDwb0u7DfRgfsGC++7ygdn3TyD42dAskrOktdXRGdXGdLCKq1rlJ2OqmNRtYOM6eFgwjTBaqeyElF5nGDz0masBQ++8512RH7Uxlrs5yWLC2LhZ/v145Dx4CouNu3otADDVdkaO8tti7iGTFn8EGvRtXvEsX9U3YctzpvTzPAgQ8ofzD1beglnnuSHsnI6pe+27eAXD9cy9Q/mPeFILcNx7epfwjip1myNiJKAncy5qa3dA1ZWqJgumbzlf1I32n7A== 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=vncqNM02Nl2gWPH/HpbiSKi/QN0Z6/fk/13kKOQU/xo=; b=TzRzGQ8KHe+JxrAyPzXeR+Q+DhKBMe63cwGOLXJngTzVLgv3fUtB7D8Wmii0lucxu+N8wRzPxu6/WJWhR6r4p2JfNPSXDhVpLt1BAgjCiqC9UwD3PzpgchrG+Z7E+949C4EFyvyK9MP7Gd9l9XFQTj0PUjHg7MfMvv055WP2HpM= 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 DU2PR04MB8870.eurprd04.prod.outlook.com (2603:10a6:10:2e1::17) 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 19:05:08 +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 19:05:08 +0000 From: Hemant Agrawal To: dev@dpdk.org, gakhil@marvell.com Cc: konstantin.ananyev@intel.com, roy.fan.zhang@intel.com, Gagandeep Singh , marcinx.smoczynski@intel.com, stable@dpdk.org Date: Thu, 14 Oct 2021 00:30:21 +0530 Message-Id: <20211013190032.2308-5-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211013190032.2308-1-hemant.agrawal@nxp.com> References: <20210907075957.28848-1-hemant.agrawal@nxp.com> <20211013190032.2308-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG2PR0302CA0011.apcprd03.prod.outlook.com (2603:1096:3:2::21) 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 SG2PR0302CA0011.apcprd03.prod.outlook.com (2603:1096:3:2::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.4 via Frontend Transport; Wed, 13 Oct 2021 19:05:06 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f5809e65-c990-46f7-b875-08d98e7c5fb7 X-MS-TrafficTypeDiagnostic: DU2PR04MB8870: 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: 6zttAF5n8xNg0djCpAEFnuApkHnFF9n8C/a4FK6R3UzSPtTiIJsGmBiDCoMHTiLXgzsUVBED6CJxNG6OcZ1voLiyVF6OQPmlBDQP0O0dM3H+XzkN8q1Cpe/wai4HFZ12DDvE8iq/BolYLhQtQ9E732QfuZswN/dS/By/UmXdMXoTnKsge7CtdEpOLs5XAS9qFZfuMpjQHROQyb/BHdnXVr/nGW6qOvRifPJDvFGZUVsRjt970aJQ3bwmLsqzbgN4QKvd5z6+q1q7UG+u1rGWQRBJDqbcBxxVN377JEpWc60WwIQ6iFX9EEfnG4Qbk7SsiZcnaXfwgBW2GabCMUrNMWO3r6MDg9O/E5X6mxgAII/x6M5S54o2VRNbDGHTuvmcQIPzB9m9Cc+AdFgZGZJRgBeAiBmVhmHBnVjarwH27G4OS/EVV6Yr+D9vtuSCt2y12jRmhyZX+7xrXIFnWJRxlZIZ4iUMliPWzX3ViQQg7MGepgd6jviVcGrsIXk6O3reDBYN7V6+pF6sMG1yuGo1DnXId7sNtxZB5roR4b96XUIupaETlEcYdQTW4lHcRtB8RgERBfaUMRAfuVFdObiT4zaPoi2sEOZ7lbKaUQDQMf0jcuE1L2xGTisQOKeUUS2vkySN3nqB/ykDYlt+QHAGm45Jsec+8ykFcjsQiL3RgXWmrUTSC5nj7t4og48gnQlFOCs9JIecMie67l8TSVOZog== 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)(66946007)(66556008)(316002)(6666004)(6506007)(36756003)(6512007)(2906002)(8936002)(1076003)(52116002)(186003)(4326008)(956004)(66476007)(2616005)(4744005)(5660300002)(83380400001)(38100700002)(44832011)(38350700002)(8676002)(26005)(6486002)(508600001)(86362001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?gGaFZ+zk5aJ7dznOuOQk7SogGc8e?= =?utf-8?q?uM28MzNER7BLsWX7bVIncxCUvIA8lxT3rqoAplBJ0IAx8X04aEKAGVAmSkR5xzvuI?= =?utf-8?q?jOE75gaoplu6gssJg6GN+Zyu6n6Pzx5/HASE/5LsGON2DXE0DqP+skqSPCaAVnbyt?= =?utf-8?q?tc/NPNkZaZhjecW67j2t1l41i06zPJUaKXnCGs/g4mfPWstOMsDEx/whAAB5IU4XN?= =?utf-8?q?AqV85T+3yjKxYhWLM8HS8ZHRGftXZk7MHn5lwPyhuso78Dua+BzfQJF9LDIbKBtl8?= =?utf-8?q?yiE1JUkx8010eIECrn5lxDCks5A08TSifAX+Dhmg7wv3XullTEbOdfErxkGbtXWRI?= =?utf-8?q?u98wbKiUJ+t9h2Lr2rIQSmY6miY9aO3NTPMXzLOpb+DGOnvfzVqCxqsGIUpBdNYbm?= =?utf-8?q?oiRYQokowEM8dSi4inGqr3P5PRqmOT/4UBEtysBTiawyFJJRlvwI8/y4RvxdG4/eh?= =?utf-8?q?gFtFtuml3KbRJ7pSD2tF0vapQIEi4k27EB0heUNJrYHGs/fUlnoZor66mkmBAjeTY?= =?utf-8?q?At4alL0sCbgaTwr4zZ500rKIAEwQATARih2NARPVvxshWjpPb4XdC5YZvbhMlnCjG?= =?utf-8?q?Dh6rUYNZandAp1q05o8yJjPvDxhQpXBasF7g9GPeEEiWTI1YZrltLH4UIz8/3i3yC?= =?utf-8?q?G4E63llCBxH4EQqYu2DkoURrdBvbjYZDhhhIsFZVMiEEMScFL0nQCCb4ru9fs8sEG?= =?utf-8?q?LgxD3HPso8pAiRb+FhTRtouf3c24BD0MX/l+wDlwujhMfwEsICryxu9eTOBogEvMT?= =?utf-8?q?dbtNPpEfHvG+LI5Q3uUdBA3bZbVzysk5XApLE9g6s7pJ6Y/ePTXxyxg1YT3wZwZez?= =?utf-8?q?MlCAB24lFHRcJE8N9SHuevvXlyINuDal3+L1LY5agR9MrwKnAxinQ7jucTNhtpXgN?= =?utf-8?q?M5kzPwjjx0SI8UB7z97DCByIfKJBqhNKlgoV02M4URXs4vFaAIokt7JQ5vcYenKH7?= =?utf-8?q?ntW63bULR6gRSkiKQUgKNVJvt64PcsZJJkJFO/Ixl+N6/C/Yh+xOs1X6TzJWNf2Jz?= =?utf-8?q?YN/3lAHujDbjvPxp4+m+GPVCv2kWVErAb7HNwozzny8W99CA+HJIWaNoS97wbQuyZ?= =?utf-8?q?ugHCvReAqmOd+MHr3MSbXKy9Ckp7Soew/cBy7+uOZiJ/XOT2UwKQHbCRTlK7Uhdzq?= =?utf-8?q?BIJOLlKQ+/ocCB2dqWQuZYDIPDsxfPdvrBCxEAEI3dpEdeHdFnarLs+r8b5iR77R/?= =?utf-8?q?V2f4m2ncQrpGveoLH264r0Nyp3J8R+K1Mp8ktrxTVniFiAPIi56osuob1OicSmPZS?= =?utf-8?q?sGc/s4ClI5xrHRpi?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: f5809e65-c990-46f7-b875-08d98e7c5fb7 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Oct 2021 19:05:08.5995 (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: OKYRE5wvfiQ7tZ9x56+nwVzgNeFcXBhVGbxNKPpTkmUp6KL4nVEFExfh1On+iGJ+zeEkCcAPt5igaWi5DmyOMA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8870 Subject: [dpdk-dev] [PATCH v4 04/15] crypto: fix raw process for multi-seg case X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Gagandeep Singh If no next segment available the “for” loop will fail and it still returns i+1 i.e. 2, which is wrong as it has filled only 1 buffer. Fixes: 7adf992fb9bf ("cryptodev: introduce CPU crypto API") Cc: marcinx.smoczynski@intel.com Cc: stable@dpdk.org Signed-off-by: Gagandeep Singh Acked-by: Konstantin Ananyev --- lib/cryptodev/rte_crypto_sym.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/cryptodev/rte_crypto_sym.h b/lib/cryptodev/rte_crypto_sym.h index b6a229e263..dc88ad6dcc 100644 --- a/lib/cryptodev/rte_crypto_sym.h +++ b/lib/cryptodev/rte_crypto_sym.h @@ -1004,6 +1004,7 @@ rte_crypto_mbuf_to_vec(const struct rte_mbuf *mb, uint32_t ofs, uint32_t len, vec[i].tot_len = mb->buf_len - rte_pktmbuf_headroom(mb) - ofs; left = 0; + i++; break; } @@ -1014,7 +1015,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 19:00:22 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 101490 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 A50C9A0C55; Wed, 13 Oct 2021 21:05:39 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 7138A41273; Wed, 13 Oct 2021 21:05:13 +0200 (CEST) Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-eopbgr130077.outbound.protection.outlook.com [40.107.13.77]) by mails.dpdk.org (Postfix) with ESMTP id 8F65C41256 for ; Wed, 13 Oct 2021 21:05:12 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UU9RlNuhJ3HDVkbg6EqKAO9LDaQNKcM++M4G8MwkESb9l4R3kR5vy1wO9BxQMkFXJ5HNSjYsu0pEXkJviK4ive32qDDpYm7bY1hWsmdNKlvlWhC+1+KEJKqXV9cGM1hXgIJCYN4zGpOSrE+JLSsOCDXju0XA6ZAAfUvDI7CF2/grYnJ1qV6YI4Am1E0R1bNTVInakGXVEM72To0SnbrDPXBHH86zMD/Do3ci8UPfb96W4J4N7zc5Xspvk/I4gUZqvHb8RGMyMKLsQObUp2DM6xXKwQVo9BuHS73xmuMkmSx2NNh9bhRylG0pHfrQtRVFc35p9DXCGClJKQs62NOiyw== 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=f3dCJoer3xj/6sDs4hmfa3hDupG823efOrQ2YvdQcog=; b=SLYH5zzDGs7OWeszHlH02AyD+TUP69ijc53FwSNWoVfpvbmtFFb/C/SOv+h/5/IthkIwsGIFP33KqJFXwlkQmhFeoRAeCReeUNfo/pIPW8Kvt1BuUgAglIKUDySHEQn5W29f44i1GySPembzI+17J0MZzdtvSZHzPVavoru1BQ+r+z6fl8TEkAMX62PnvOO2ug3iWUtkMxillPNAoFsM2v+BffTc1kgje3MR508hjNcUJ4KladlYpqpp5mmDMnbfUQJi6xzDQFiwfFc4FAQJD4rJD/Shbuk/QS0j2UypqYCvAtRNa3qykUd9/KBI5nD/5yJrSEM2ScvNV6okaS2lkg== 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=f3dCJoer3xj/6sDs4hmfa3hDupG823efOrQ2YvdQcog=; b=LewfrDCLQClU1mrPkmHwHChJV+y+9EIjf3gCB/+NrodDssa+OrSd3FqIYhRr7Tn4FN7dX40m3gWMw6dIESefycUBE8pcJB9Gi3zB/oatmFBflp1M7KHmRGj4jsJ4CrY2EAYDb7Ttui/0sjLaBqkBkf0VXEZpuVYLZfYohJFpXh0= 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 DU2PR04MB8870.eurprd04.prod.outlook.com (2603:10a6:10:2e1::17) 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 19:05: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 19:05:11 +0000 From: Hemant Agrawal To: dev@dpdk.org, gakhil@marvell.com Cc: konstantin.ananyev@intel.com, roy.fan.zhang@intel.com, Gagandeep Singh Date: Thu, 14 Oct 2021 00:30:22 +0530 Message-Id: <20211013190032.2308-6-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211013190032.2308-1-hemant.agrawal@nxp.com> References: <20210907075957.28848-1-hemant.agrawal@nxp.com> <20211013190032.2308-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG2PR0302CA0011.apcprd03.prod.outlook.com (2603:1096:3:2::21) 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 SG2PR0302CA0011.apcprd03.prod.outlook.com (2603:1096:3:2::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.4 via Frontend Transport; Wed, 13 Oct 2021 19:05:09 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f4cdceb9-5a4b-44cd-b1e2-08d98e7c6131 X-MS-TrafficTypeDiagnostic: DU2PR04MB8870: 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: 35b6W7ahfzevnc3yOk+Rc3qJUwdkAicqEj3r0IRxPHAM81ZYH1mTUYXIAFBn/A4Z+rZnUo2PjY8+nAssUIc+R/JEQyC+RbhVtgCyc1JyXsfsAAtawTQHUixaXDE0498NXRthDP3eSDUEHM6I5R9ewpnuEYs0ZtIB5u8UEawfsiRiojoRWlLK4wRVMY22ddlntc0eskL/ohD3RuhRSxryy8MNDobsIe154DBJMj13Si53z8ly48LQaUhoDjJfFWkxUoZcZXy4qEF4mSMAPAipWaw/a0DgE9QzeqeAB/o8xj3zA9WSKKYYfRMBkxNz6jtQrsBytAZG9GngyIVbFpuxE9ZMLGS0JVcLBwRubaRp+nvGhAXZNYNUWL/puMFBJrRxxk5oc+pbAnvXIWui++iZTcrl/UvbokDCgwUgP94N1RM4AODqoi6bT+Q3oIGbVNfa/iH+HmWx89vvJD/whwu9BkW6MJuTRVsgBBqfZKY6cNCkble/csNgTXvmhg3TXlITZy31C/sTapPc6oSUoDSYkGXte77dgiphEV39+titsa87sz2IE2I++oXPhfcNhfBMeVHPCkC03qrTdpe0Srum9f14C6WdkkFI0nUadgWJt96St1zxn/Gs8717JzrySWUhSYy5nWH0zz2d9Hb7UaZIGAbgAgJTaUai6rqas5BcDlnjIIGDIN1PY9z1zSvQq8jH4heIjdIJnvccxH3Fo07lTQ== 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)(66946007)(66556008)(316002)(6666004)(6506007)(36756003)(6512007)(2906002)(8936002)(1076003)(52116002)(186003)(4326008)(956004)(66476007)(30864003)(2616005)(5660300002)(83380400001)(38100700002)(44832011)(38350700002)(8676002)(26005)(6486002)(508600001)(86362001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: V216T9l6DvbWPmjXjXriFrq9CQ0NbltHXjq5LzlWIecdospLu27ubbEaZkMFe4aOSCBXAsqseMMfVo+4arFoK39dJvUrmwmNy1TGrcNlRpIprPRqjTxQBjaNVInlCXE/2END4baBA/KqSzjX/bD/EThbFBAD2smPu90/XL9Zp3DYjK5+yVQbTyItGWFjncxk2VCYIj6bxt73AnEVNuMqmT53/+wc+yVw332XZTwucjokK58pMyWmUc8vFldEPQUjr9Mf/TpZC+fkxQywqjmixPbehCwp4u3Q1C9G6W/6gSEvN+eXsqjPDXTZiL8NVzXHOxsiECGKxaZicQcZ0E1J64SamXoqDMaw29QJnjh9SlJB6vQru79ejlVhQLaKIeNdLWBiw1WrR5jfe+KbdTcA+cSAhHEyw2zUHhgxshsqho19RZKZvbql9y6kWde1eHOKCyjpbq3+Cqwam3PfU8X3m4OPZwSG5kmZfR1XmY2qVuusDmbzC2wF1QDLNFcaNOqJSOd8qVdJ8D9V8fAsKLV9VBmS+zgA6T8DWhWDSxN0oQhH88/e+Lc5oMIr20v5/sG0Op7sVtc870TYo0cKfFyj/D5AaGxp21jPN2RBfDNsFal6qBlSJPo3deIbMGtU02DMr5BPls6TuUqHHitQhGhP41JxiqGsg/1rfYTntp1FhHxpxlcjxl6qNzJjhKYRSgqF+qcVgHxC1mfS/WjitGcTCgeBweFskrju8Z2bNxV+YPBWRqSGJtGe1/wAZm91oQOZhU8a1OA5oCtIZ0nYtCvXAlsEtVkQli7S2gqe0U0yo9IvFS8yiFtY5l/qK4OLgzOuvIP7/pmAT+99aUPzd7J1kRROpNPhnAznHg55vcs5z4Lk9xwQ7Oo8vOx6anJe/RGqVX6dD2zM6ewz7+ZKjKiGpRSAt4dvsWW/Y/BecZuBxt+M9f+xWQi3CQcoVL3G64oXTuTULAJPPMjw3I4XKO9x0r7aQA2+e23EsSL9wlPwD4w07KRilLXgyX1700aUMCOOSWDhx6Cwd4PtH9fvCYkFZnEa3Y0QXK6XVLekDho08elcXw7uqozB3UQmCEG8PosptiEgJhozwTxWUQTIZkOa//a/YFj8jH9Y5h2W2yR6vvZ5Rdu3ONc7JcH4RRj419Rhye1eS86FMc523vCA6LAfooNxQv7cBgsJ76ITeQg33YzvOW09iJnrBm6Ie+Pb0eIIifiWv6XmAzqxUsL2pX9qjKdbrBQXnq2pZ1K4Un5ibTua/YDWa8Y/7EpsotbirU4oththV0MNSYr62nI6SplI/SN0GxoWyBIhccmDPp4iF5ZY8Qyr/HUd5EAYFj+T1QPX X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: f4cdceb9-5a4b-44cd-b1e2-08d98e7c6131 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Oct 2021 19:05:11.0895 (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: usGp7WcZawM+Dw+EPLNBbMims/8VpKUeUEOELTbFZ5oK+Fz2CQm6eLZqzkWFtJGgR3KnJiy+vvpuQjUBQThi+Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8870 Subject: [dpdk-dev] [PATCH v4 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 54718ff367..279f0adf62 100644 --- a/doc/guides/rel_notes/release_21_11.rst +++ b/doc/guides/rel_notes/release_21_11.rst @@ -123,6 +123,7 @@ New Features * **Updated NXP dpaa2_sec crypto PMD.** * Added PDCP short MAC-I support. + * Added raw vector datapath API support * **Updated the ACC100 bbdev PMD.** diff --git a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c index dfa72f3f93..4eb3615250 100644 --- a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c +++ b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c @@ -49,15 +49,8 @@ #define FSL_MC_DPSECI_DEVID 3 #define NO_PREFETCH 0 -/* FLE_POOL_NUM_BUFS is set as per the ipsec-secgw application */ -#define FLE_POOL_NUM_BUFS 32000 -#define FLE_POOL_BUF_SIZE 256 -#define FLE_POOL_CACHE_SIZE 512 -#define FLE_SG_MEM_SIZE(num) (FLE_POOL_BUF_SIZE + ((num) * 32)) -#define SEC_FLC_DHR_OUTBOUND -114 -#define SEC_FLC_DHR_INBOUND 0 -static uint8_t cryptodev_driver_id; +uint8_t cryptodev_driver_id; #ifdef RTE_LIB_SECURITY static inline int @@ -3828,6 +3821,9 @@ static struct rte_cryptodev_ops crypto_ops = { .sym_session_get_size = dpaa2_sec_sym_session_get_size, .sym_session_configure = dpaa2_sec_sym_session_configure, .sym_session_clear = dpaa2_sec_sym_session_clear, + /* Raw data-path API related operations */ + .sym_get_raw_dp_ctx_size = dpaa2_sec_get_dp_ctx_size, + .sym_configure_raw_dp_ctx = dpaa2_sec_configure_raw_dp_ctx, }; #ifdef RTE_LIB_SECURITY @@ -3910,6 +3906,7 @@ dpaa2_sec_dev_init(struct rte_cryptodev *cryptodev) RTE_CRYPTODEV_FF_HW_ACCELERATED | RTE_CRYPTODEV_FF_SYM_OPERATION_CHAINING | RTE_CRYPTODEV_FF_SECURITY | + RTE_CRYPTODEV_FF_SYM_RAW_DP | RTE_CRYPTODEV_FF_IN_PLACE_SGL | RTE_CRYPTODEV_FF_OOP_SGL_IN_SGL_OUT | RTE_CRYPTODEV_FF_OOP_SGL_IN_LB_OUT | diff --git a/drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h b/drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h index 8dee0a4bda..e9b888186e 100644 --- a/drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h +++ b/drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h @@ -15,6 +15,16 @@ #define CRYPTODEV_NAME_DPAA2_SEC_PMD crypto_dpaa2_sec /**< NXP DPAA2 - SEC PMD device name */ +extern uint8_t cryptodev_driver_id; + +/* FLE_POOL_NUM_BUFS is set as per the ipsec-secgw application */ +#define FLE_POOL_NUM_BUFS 32000 +#define FLE_POOL_BUF_SIZE 256 +#define FLE_POOL_CACHE_SIZE 512 +#define FLE_SG_MEM_SIZE(num) (FLE_POOL_BUF_SIZE + ((num) * 32)) +#define SEC_FLC_DHR_OUTBOUND -114 +#define SEC_FLC_DHR_INBOUND 0 + #define MAX_QUEUES 64 #define MAX_DESC_SIZE 64 /** private data structure for each DPAA2_SEC device */ @@ -158,6 +168,24 @@ struct dpaa2_pdcp_ctxt { uint32_t hfn_threshold; /*!< HFN Threashold for key renegotiation */ }; #endif + +typedef int (*dpaa2_sec_build_fd_t)( + void *qp, uint8_t *drv_ctx, struct rte_crypto_vec *data_vec, + uint16_t n_data_vecs, union rte_crypto_sym_ofs ofs, + struct rte_crypto_va_iova_ptr *iv, + struct rte_crypto_va_iova_ptr *digest, + struct rte_crypto_va_iova_ptr *aad_or_auth_iv, + void *user_data); + +typedef int (*dpaa2_sec_build_raw_dp_fd_t)(uint8_t *drv_ctx, + struct rte_crypto_sgl *sgl, + struct rte_crypto_va_iova_ptr *iv, + struct rte_crypto_va_iova_ptr *digest, + struct rte_crypto_va_iova_ptr *auth_iv, + union rte_crypto_sym_ofs ofs, + void *userdata, + struct qbman_fd *fd); + typedef struct dpaa2_sec_session_entry { void *ctxt; uint8_t ctxt_type; @@ -165,6 +193,8 @@ typedef struct dpaa2_sec_session_entry { enum rte_crypto_cipher_algorithm cipher_alg; /*!< Cipher Algorithm*/ enum rte_crypto_auth_algorithm auth_alg; /*!< Authentication Algorithm*/ enum rte_crypto_aead_algorithm aead_alg; /*!< AEAD Algorithm*/ + dpaa2_sec_build_fd_t build_fd; + dpaa2_sec_build_raw_dp_fd_t build_raw_dp_fd; union { struct { uint8_t *data; /**< pointer to key data */ @@ -547,26 +577,6 @@ static const struct rte_cryptodev_capabilities dpaa2_sec_capabilities[] = { }, } }, } }, - { /* NULL (CIPHER) */ - .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, - {.sym = { - .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER, - {.cipher = { - .algo = RTE_CRYPTO_CIPHER_NULL, - .block_size = 1, - .key_size = { - .min = 0, - .max = 0, - .increment = 0 - }, - .iv_size = { - .min = 0, - .max = 0, - .increment = 0 - } - }, }, - }, } - }, { /* AES CBC */ .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, {.sym = { @@ -983,4 +993,14 @@ calc_chksum(void *buffer, int len) return result; } +int +dpaa2_sec_configure_raw_dp_ctx(struct rte_cryptodev *dev, uint16_t qp_id, + struct rte_crypto_raw_dp_ctx *raw_dp_ctx, + enum rte_crypto_op_sess_type sess_type, + union rte_cryptodev_session_ctx session_ctx, uint8_t is_update); + +int +dpaa2_sec_get_dp_ctx_size(struct rte_cryptodev *dev); + + #endif /* _DPAA2_SEC_PMD_PRIVATE_H_ */ diff --git a/drivers/crypto/dpaa2_sec/dpaa2_sec_raw_dp.c b/drivers/crypto/dpaa2_sec/dpaa2_sec_raw_dp.c new file mode 100644 index 0000000000..8925c8e938 --- /dev/null +++ b/drivers/crypto/dpaa2_sec/dpaa2_sec_raw_dp.c @@ -0,0 +1,595 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright 2021 NXP + */ + +#include +#include +#include +#include +#include + +#include "dpaa2_sec_priv.h" +#include "dpaa2_sec_logs.h" + +struct dpaa2_sec_raw_dp_ctx { + dpaa2_sec_session *session; + uint32_t tail; + uint32_t head; + uint16_t cached_enqueue; + uint16_t cached_dequeue; +}; + +static int +build_raw_dp_chain_fd(uint8_t *drv_ctx, + struct rte_crypto_sgl *sgl, + struct rte_crypto_va_iova_ptr *iv, + struct rte_crypto_va_iova_ptr *digest, + struct rte_crypto_va_iova_ptr *auth_iv, + union rte_crypto_sym_ofs ofs, + void *userdata, + struct qbman_fd *fd) +{ + RTE_SET_USED(drv_ctx); + RTE_SET_USED(sgl); + RTE_SET_USED(iv); + RTE_SET_USED(digest); + RTE_SET_USED(auth_iv); + RTE_SET_USED(ofs); + RTE_SET_USED(userdata); + RTE_SET_USED(fd); + + return 0; +} + +static int +build_raw_dp_aead_fd(uint8_t *drv_ctx, + struct rte_crypto_sgl *sgl, + struct rte_crypto_va_iova_ptr *iv, + struct rte_crypto_va_iova_ptr *digest, + struct rte_crypto_va_iova_ptr *auth_iv, + union rte_crypto_sym_ofs ofs, + void *userdata, + struct qbman_fd *fd) +{ + RTE_SET_USED(drv_ctx); + RTE_SET_USED(sgl); + RTE_SET_USED(iv); + RTE_SET_USED(digest); + RTE_SET_USED(auth_iv); + RTE_SET_USED(ofs); + RTE_SET_USED(userdata); + RTE_SET_USED(fd); + + return 0; +} + +static int +build_raw_dp_auth_fd(uint8_t *drv_ctx, + struct rte_crypto_sgl *sgl, + struct rte_crypto_va_iova_ptr *iv, + struct rte_crypto_va_iova_ptr *digest, + struct rte_crypto_va_iova_ptr *auth_iv, + union rte_crypto_sym_ofs ofs, + void *userdata, + struct qbman_fd *fd) +{ + RTE_SET_USED(drv_ctx); + RTE_SET_USED(sgl); + RTE_SET_USED(iv); + RTE_SET_USED(digest); + RTE_SET_USED(auth_iv); + RTE_SET_USED(ofs); + RTE_SET_USED(userdata); + RTE_SET_USED(fd); + + return 0; +} + +static int +build_raw_dp_proto_fd(uint8_t *drv_ctx, + struct rte_crypto_sgl *sgl, + struct rte_crypto_va_iova_ptr *iv, + struct rte_crypto_va_iova_ptr *digest, + struct rte_crypto_va_iova_ptr *auth_iv, + union rte_crypto_sym_ofs ofs, + void *userdata, + struct qbman_fd *fd) +{ + RTE_SET_USED(drv_ctx); + RTE_SET_USED(sgl); + RTE_SET_USED(iv); + RTE_SET_USED(digest); + RTE_SET_USED(auth_iv); + RTE_SET_USED(ofs); + RTE_SET_USED(userdata); + RTE_SET_USED(fd); + + return 0; +} + +static int +build_raw_dp_proto_compound_fd(uint8_t *drv_ctx, + struct rte_crypto_sgl *sgl, + struct rte_crypto_va_iova_ptr *iv, + struct rte_crypto_va_iova_ptr *digest, + struct rte_crypto_va_iova_ptr *auth_iv, + union rte_crypto_sym_ofs ofs, + void *userdata, + struct qbman_fd *fd) +{ + RTE_SET_USED(drv_ctx); + RTE_SET_USED(sgl); + RTE_SET_USED(iv); + RTE_SET_USED(digest); + RTE_SET_USED(auth_iv); + RTE_SET_USED(ofs); + RTE_SET_USED(userdata); + RTE_SET_USED(fd); + + return 0; +} + +static int +build_raw_dp_cipher_fd(uint8_t *drv_ctx, + struct rte_crypto_sgl *sgl, + struct rte_crypto_va_iova_ptr *iv, + struct rte_crypto_va_iova_ptr *digest, + struct rte_crypto_va_iova_ptr *auth_iv, + union rte_crypto_sym_ofs ofs, + void *userdata, + struct qbman_fd *fd) +{ + RTE_SET_USED(digest); + RTE_SET_USED(auth_iv); + + dpaa2_sec_session *sess = + ((struct dpaa2_sec_raw_dp_ctx *)drv_ctx)->session; + struct qbman_fle *ip_fle, *op_fle, *sge, *fle; + int total_len = 0, data_len = 0, data_offset; + struct sec_flow_context *flc; + struct ctxt_priv *priv = sess->ctxt; + unsigned int i; + + for (i = 0; i < sgl->num; i++) + total_len += sgl->vec[i].len; + + data_len = total_len - ofs.ofs.cipher.head - ofs.ofs.cipher.tail; + data_offset = ofs.ofs.cipher.head; + + if (sess->cipher_alg == RTE_CRYPTO_CIPHER_SNOW3G_UEA2 || + sess->cipher_alg == RTE_CRYPTO_CIPHER_ZUC_EEA3) { + if ((data_len & 7) || (data_offset & 7)) { + DPAA2_SEC_ERR("CIPHER: len/offset must be full bytes"); + return -ENOTSUP; + } + + data_len = data_len >> 3; + data_offset = data_offset >> 3; + } + + /* first FLE entry used to store mbuf and session ctxt */ + fle = (struct qbman_fle *)rte_malloc(NULL, + FLE_SG_MEM_SIZE(2*sgl->num), + RTE_CACHE_LINE_SIZE); + if (!fle) { + DPAA2_SEC_ERR("RAW CIPHER SG: Memory alloc failed for SGE"); + return -ENOMEM; + } + memset(fle, 0, FLE_SG_MEM_SIZE(2*sgl->num)); + /* first FLE entry used to store userdata and session ctxt */ + DPAA2_SET_FLE_ADDR(fle, (size_t)userdata); + DPAA2_FLE_SAVE_CTXT(fle, (ptrdiff_t)priv); + + op_fle = fle + 1; + ip_fle = fle + 2; + sge = fle + 3; + + flc = &priv->flc_desc[0].flc; + + DPAA2_SEC_DP_DEBUG( + "RAW CIPHER SG: cipher_off: 0x%x/length %d, ivlen=%d\n", + data_offset, + data_len, + sess->iv.length); + + /* o/p fle */ + DPAA2_SET_FLE_ADDR(op_fle, DPAA2_VADDR_TO_IOVA(sge)); + op_fle->length = data_len; + DPAA2_SET_FLE_SG_EXT(op_fle); + + /* o/p 1st seg */ + DPAA2_SET_FLE_ADDR(sge, sgl->vec[0].iova); + DPAA2_SET_FLE_OFFSET(sge, data_offset); + sge->length = sgl->vec[0].len - data_offset; + + /* o/p segs */ + for (i = 1; i < sgl->num; i++) { + sge++; + DPAA2_SET_FLE_ADDR(sge, sgl->vec[i].iova); + DPAA2_SET_FLE_OFFSET(sge, 0); + sge->length = sgl->vec[i].len; + } + DPAA2_SET_FLE_FIN(sge); + + DPAA2_SEC_DP_DEBUG( + "RAW CIPHER SG: 1 - flc = %p, fle = %p FLEaddr = %x-%x, len %d\n", + flc, fle, fle->addr_hi, fle->addr_lo, + fle->length); + + /* i/p fle */ + sge++; + DPAA2_SET_FLE_ADDR(ip_fle, DPAA2_VADDR_TO_IOVA(sge)); + ip_fle->length = sess->iv.length + data_len; + DPAA2_SET_FLE_SG_EXT(ip_fle); + + /* i/p IV */ + DPAA2_SET_FLE_ADDR(sge, iv->iova); + DPAA2_SET_FLE_OFFSET(sge, 0); + sge->length = sess->iv.length; + + sge++; + + /* i/p 1st seg */ + DPAA2_SET_FLE_ADDR(sge, sgl->vec[0].iova); + DPAA2_SET_FLE_OFFSET(sge, data_offset); + sge->length = sgl->vec[0].len - data_offset; + + /* i/p segs */ + for (i = 1; i < sgl->num; i++) { + sge++; + DPAA2_SET_FLE_ADDR(sge, sgl->vec[i].iova); + DPAA2_SET_FLE_OFFSET(sge, 0); + sge->length = sgl->vec[i].len; + } + DPAA2_SET_FLE_FIN(sge); + DPAA2_SET_FLE_FIN(ip_fle); + + /* sg fd */ + DPAA2_SET_FD_ADDR(fd, DPAA2_VADDR_TO_IOVA(op_fle)); + DPAA2_SET_FD_LEN(fd, ip_fle->length); + DPAA2_SET_FD_COMPOUND_FMT(fd); + DPAA2_SET_FD_FLC(fd, DPAA2_VADDR_TO_IOVA(flc)); + + DPAA2_SEC_DP_DEBUG( + "RAW CIPHER SG: fdaddr =%" PRIx64 " off =%d, len =%d\n", + DPAA2_GET_FD_ADDR(fd), + DPAA2_GET_FD_OFFSET(fd), + DPAA2_GET_FD_LEN(fd)); + + return 0; +} + +static __rte_always_inline uint32_t +dpaa2_sec_raw_enqueue_burst(void *qp_data, uint8_t *drv_ctx, + struct rte_crypto_sym_vec *vec, union rte_crypto_sym_ofs ofs, + void *user_data[], int *status) +{ + RTE_SET_USED(user_data); + uint32_t loop; + int32_t ret; + struct qbman_fd fd_arr[MAX_TX_RING_SLOTS]; + uint32_t frames_to_send, retry_count; + struct qbman_eq_desc eqdesc; + struct dpaa2_sec_qp *dpaa2_qp = (struct dpaa2_sec_qp *)qp_data; + dpaa2_sec_session *sess = + ((struct dpaa2_sec_raw_dp_ctx *)drv_ctx)->session; + struct qbman_swp *swp; + uint16_t num_tx = 0; + uint32_t flags[MAX_TX_RING_SLOTS] = {0}; + + if (unlikely(vec->num == 0)) + return 0; + + if (sess == NULL) { + DPAA2_SEC_ERR("sessionless raw crypto not supported"); + return 0; + } + /*Prepare enqueue descriptor*/ + qbman_eq_desc_clear(&eqdesc); + qbman_eq_desc_set_no_orp(&eqdesc, DPAA2_EQ_RESP_ERR_FQ); + qbman_eq_desc_set_response(&eqdesc, 0, 0); + qbman_eq_desc_set_fq(&eqdesc, dpaa2_qp->tx_vq.fqid); + + if (!DPAA2_PER_LCORE_DPIO) { + ret = dpaa2_affine_qbman_swp(); + if (ret) { + DPAA2_SEC_ERR( + "Failed to allocate IO portal, tid: %d\n", + rte_gettid()); + return 0; + } + } + swp = DPAA2_PER_LCORE_PORTAL; + + while (vec->num) { + frames_to_send = (vec->num > dpaa2_eqcr_size) ? + dpaa2_eqcr_size : vec->num; + + for (loop = 0; loop < frames_to_send; loop++) { + /*Clear the unused FD fields before sending*/ + memset(&fd_arr[loop], 0, sizeof(struct qbman_fd)); + ret = sess->build_raw_dp_fd(drv_ctx, + &vec->src_sgl[loop], + &vec->iv[loop], + &vec->digest[loop], + &vec->auth_iv[loop], + ofs, + user_data[loop], + &fd_arr[loop]); + if (ret) { + DPAA2_SEC_ERR("error: Improper packet contents" + " for crypto operation"); + goto skip_tx; + } + status[loop] = 1; + } + + loop = 0; + retry_count = 0; + while (loop < frames_to_send) { + ret = qbman_swp_enqueue_multiple(swp, &eqdesc, + &fd_arr[loop], + &flags[loop], + frames_to_send - loop); + if (unlikely(ret < 0)) { + retry_count++; + if (retry_count > DPAA2_MAX_TX_RETRY_COUNT) { + num_tx += loop; + vec->num -= loop; + goto skip_tx; + } + } else { + loop += ret; + retry_count = 0; + } + } + + num_tx += loop; + vec->num -= loop; + } +skip_tx: + dpaa2_qp->tx_vq.tx_pkts += num_tx; + dpaa2_qp->tx_vq.err_pkts += vec->num; + + return num_tx; +} + +static __rte_always_inline int +dpaa2_sec_raw_enqueue(void *qp_data, uint8_t *drv_ctx, + struct rte_crypto_vec *data_vec, + uint16_t n_data_vecs, union rte_crypto_sym_ofs ofs, + struct rte_crypto_va_iova_ptr *iv, + struct rte_crypto_va_iova_ptr *digest, + struct rte_crypto_va_iova_ptr *aad_or_auth_iv, + void *user_data) +{ + RTE_SET_USED(qp_data); + RTE_SET_USED(drv_ctx); + RTE_SET_USED(data_vec); + RTE_SET_USED(n_data_vecs); + RTE_SET_USED(ofs); + RTE_SET_USED(iv); + RTE_SET_USED(digest); + RTE_SET_USED(aad_or_auth_iv); + RTE_SET_USED(user_data); + + return 0; +} + +static inline void * +sec_fd_to_userdata(const struct qbman_fd *fd) +{ + struct qbman_fle *fle; + void *userdata; + fle = (struct qbman_fle *)DPAA2_IOVA_TO_VADDR(DPAA2_GET_FD_ADDR(fd)); + + DPAA2_SEC_DP_DEBUG("FLE addr = %x - %x, offset = %x\n", + fle->addr_hi, fle->addr_lo, fle->fin_bpid_offset); + userdata = (struct rte_crypto_op *)DPAA2_GET_FLE_ADDR((fle - 1)); + /* free the fle memory */ + rte_free((void *)(fle-1)); + + return userdata; +} + +static __rte_always_inline uint32_t +dpaa2_sec_raw_dequeue_burst(void *qp_data, uint8_t *drv_ctx, + rte_cryptodev_raw_get_dequeue_count_t get_dequeue_count, + uint32_t max_nb_to_dequeue, + rte_cryptodev_raw_post_dequeue_t post_dequeue, + void **out_user_data, uint8_t is_user_data_array, + uint32_t *n_success, int *dequeue_status) +{ + RTE_SET_USED(drv_ctx); + RTE_SET_USED(get_dequeue_count); + + /* Function is responsible to receive frames for a given device and VQ*/ + struct dpaa2_sec_qp *dpaa2_qp = (struct dpaa2_sec_qp *)qp_data; + struct qbman_result *dq_storage; + uint32_t fqid = dpaa2_qp->rx_vq.fqid; + int ret, num_rx = 0; + uint8_t is_last = 0, status; + struct qbman_swp *swp; + const struct qbman_fd *fd; + struct qbman_pull_desc pulldesc; + void *user_data; + uint32_t nb_ops = max_nb_to_dequeue; + + if (!DPAA2_PER_LCORE_DPIO) { + ret = dpaa2_affine_qbman_swp(); + if (ret) { + DPAA2_SEC_ERR( + "Failed to allocate IO portal, tid: %d\n", + rte_gettid()); + return 0; + } + } + swp = DPAA2_PER_LCORE_PORTAL; + dq_storage = dpaa2_qp->rx_vq.q_storage->dq_storage[0]; + + qbman_pull_desc_clear(&pulldesc); + qbman_pull_desc_set_numframes(&pulldesc, + (nb_ops > dpaa2_dqrr_size) ? + dpaa2_dqrr_size : nb_ops); + qbman_pull_desc_set_fq(&pulldesc, fqid); + qbman_pull_desc_set_storage(&pulldesc, dq_storage, + (uint64_t)DPAA2_VADDR_TO_IOVA(dq_storage), + 1); + + /*Issue a volatile dequeue command. */ + while (1) { + if (qbman_swp_pull(swp, &pulldesc)) { + DPAA2_SEC_WARN( + "SEC VDQ command is not issued : QBMAN busy"); + /* Portal was busy, try again */ + continue; + } + break; + }; + + /* Receive the packets till Last Dequeue entry is found with + * respect to the above issues PULL command. + */ + while (!is_last) { + /* Check if the previous issued command is completed. + * Also seems like the SWP is shared between the Ethernet Driver + * and the SEC driver. + */ + while (!qbman_check_command_complete(dq_storage)) + ; + + /* Loop until the dq_storage is updated with + * new token by QBMAN + */ + while (!qbman_check_new_result(dq_storage)) + ; + /* Check whether Last Pull command is Expired and + * setting Condition for Loop termination + */ + if (qbman_result_DQ_is_pull_complete(dq_storage)) { + is_last = 1; + /* Check for valid frame. */ + status = (uint8_t)qbman_result_DQ_flags(dq_storage); + if (unlikely( + (status & QBMAN_DQ_STAT_VALIDFRAME) == 0)) { + DPAA2_SEC_DP_DEBUG("No frame is delivered\n"); + continue; + } + } + + fd = qbman_result_DQ_fd(dq_storage); + user_data = sec_fd_to_userdata(fd); + if (is_user_data_array) + out_user_data[num_rx] = user_data; + else + out_user_data[0] = user_data; + if (unlikely(fd->simple.frc)) { + /* TODO Parse SEC errors */ + DPAA2_SEC_ERR("SEC returned Error - %x", + fd->simple.frc); + status = RTE_CRYPTO_OP_STATUS_ERROR; + } else { + status = RTE_CRYPTO_OP_STATUS_SUCCESS; + } + post_dequeue(user_data, num_rx, status); + + num_rx++; + dq_storage++; + } /* End of Packet Rx loop */ + + dpaa2_qp->rx_vq.rx_pkts += num_rx; + *dequeue_status = 1; + *n_success = num_rx; + + DPAA2_SEC_DP_DEBUG("SEC Received %d Packets\n", num_rx); + /*Return the total number of packets received to DPAA2 app*/ + return num_rx; +} + +static __rte_always_inline void * +dpaa2_sec_raw_dequeue(void *qp_data, uint8_t *drv_ctx, int *dequeue_status, + enum rte_crypto_op_status *op_status) +{ + RTE_SET_USED(qp_data); + RTE_SET_USED(drv_ctx); + RTE_SET_USED(dequeue_status); + RTE_SET_USED(op_status); + + return NULL; +} + +static __rte_always_inline int +dpaa2_sec_raw_enqueue_done(void *qp_data, uint8_t *drv_ctx, uint32_t n) +{ + RTE_SET_USED(qp_data); + RTE_SET_USED(drv_ctx); + RTE_SET_USED(n); + + return 0; +} + +static __rte_always_inline int +dpaa2_sec_raw_dequeue_done(void *qp_data, uint8_t *drv_ctx, uint32_t n) +{ + RTE_SET_USED(qp_data); + RTE_SET_USED(drv_ctx); + RTE_SET_USED(n); + + return 0; +} + +int +dpaa2_sec_configure_raw_dp_ctx(struct rte_cryptodev *dev, uint16_t qp_id, + struct rte_crypto_raw_dp_ctx *raw_dp_ctx, + enum rte_crypto_op_sess_type sess_type, + union rte_cryptodev_session_ctx session_ctx, uint8_t is_update) +{ + dpaa2_sec_session *sess; + struct dpaa2_sec_raw_dp_ctx *dp_ctx; + RTE_SET_USED(qp_id); + + if (!is_update) { + memset(raw_dp_ctx, 0, sizeof(*raw_dp_ctx)); + raw_dp_ctx->qp_data = dev->data->queue_pairs[qp_id]; + } + + if (sess_type == RTE_CRYPTO_OP_SECURITY_SESSION) + sess = (dpaa2_sec_session *)get_sec_session_private_data( + session_ctx.sec_sess); + else if (sess_type == RTE_CRYPTO_OP_WITH_SESSION) + sess = (dpaa2_sec_session *)get_sym_session_private_data( + session_ctx.crypto_sess, cryptodev_driver_id); + else + return -ENOTSUP; + raw_dp_ctx->dequeue_burst = dpaa2_sec_raw_dequeue_burst; + raw_dp_ctx->dequeue = dpaa2_sec_raw_dequeue; + raw_dp_ctx->dequeue_done = dpaa2_sec_raw_dequeue_done; + raw_dp_ctx->enqueue_burst = dpaa2_sec_raw_enqueue_burst; + raw_dp_ctx->enqueue = dpaa2_sec_raw_enqueue; + raw_dp_ctx->enqueue_done = dpaa2_sec_raw_enqueue_done; + + if (sess->ctxt_type == DPAA2_SEC_CIPHER_HASH) + sess->build_raw_dp_fd = build_raw_dp_chain_fd; + else if (sess->ctxt_type == DPAA2_SEC_AEAD) + sess->build_raw_dp_fd = build_raw_dp_aead_fd; + else if (sess->ctxt_type == DPAA2_SEC_AUTH) + sess->build_raw_dp_fd = build_raw_dp_auth_fd; + else if (sess->ctxt_type == DPAA2_SEC_CIPHER) + sess->build_raw_dp_fd = build_raw_dp_cipher_fd; + else if (sess->ctxt_type == DPAA2_SEC_IPSEC) + sess->build_raw_dp_fd = build_raw_dp_proto_fd; + else if (sess->ctxt_type == DPAA2_SEC_PDCP) + sess->build_raw_dp_fd = build_raw_dp_proto_compound_fd; + else + return -ENOTSUP; + dp_ctx = (struct dpaa2_sec_raw_dp_ctx *)raw_dp_ctx->drv_ctx_data; + dp_ctx->session = sess; + + return 0; +} + +int +dpaa2_sec_get_dp_ctx_size(__rte_unused struct rte_cryptodev *dev) +{ + return sizeof(struct dpaa2_sec_raw_dp_ctx); +} diff --git a/drivers/crypto/dpaa2_sec/meson.build b/drivers/crypto/dpaa2_sec/meson.build index ea1d73a13d..e6e5abb3c1 100644 --- a/drivers/crypto/dpaa2_sec/meson.build +++ b/drivers/crypto/dpaa2_sec/meson.build @@ -1,5 +1,5 @@ # SPDX-License-Identifier: BSD-3-Clause -# Copyright 2018 NXP +# Copyright 2018,2021 NXP if not is_linux build = false @@ -9,6 +9,7 @@ endif deps += ['security', 'mempool_dpaa2'] sources = files( 'dpaa2_sec_dpseci.c', + 'dpaa2_sec_raw_dp.c', 'mc/dpseci.c', ) From patchwork Wed Oct 13 19:00:23 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 101491 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 D16D5A0C55; Wed, 13 Oct 2021 21:05:48 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E38BB4127E; Wed, 13 Oct 2021 21:05:15 +0200 (CEST) Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2078.outbound.protection.outlook.com [40.107.22.78]) by mails.dpdk.org (Postfix) with ESMTP id 204B141277 for ; Wed, 13 Oct 2021 21:05:14 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=O7v4PbxkwKs6NQzuSgKxi2ZF400CSzhI6sryRkgsgLPE0r/QVBkken7jfGiuc2Axout+BTP+zS1H5zzn4nfKZeiPd6hVMPIR0Ta7EoD4wf+yprEdmSBJjfvxwRPzuf5I6ExOiUlruXamESe1J3Wc96zcg+vef0hY9nz4QR1jkVBUuHOR9oWtVGLOm5cVfghBnqU5CnlhYYNSXpvEi8QrEUKDsh40u4OfUpxun9tQ9mXA/KWlZxzl40sIrch0FDWZRFCaGW9J7yW2NwHKqwnwXBlNIQLFu2QRdHVm0C2Q6gk23xt65u1aspho2Czub6tlcdfCtAyCIjjebjxhp0ju3A== 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=VLx7lZiT/xtgCEanRftP4IkdKnwaQgDfRzk7WMLt6xTf0O64jEPyOOZ1+RmHo6u/QzTvopWuskn1Ddz9GCRQqvqnakjiyzLkFlfgcJxAu9YHazkEfMZuGcbDQCHvaLOBctKxWh2/T0l1oCCUun2plPrcnjYfKr4CLzkda0vAwq8Zq+pChMJlmiyGgVU6yFsJ8aIa15xFPRtNY8NCBxrUHsJdE7sJHW/JnSQOgyP5icBtvjVLjwKIY8/OptmWDJjjHzkLcXq+m/UJykvwzn8L0zeYd2/dOrYj2+3KECEcSEC3LPC40waN14D6WpH/9+nXwN9MdSoHogl3LqmhlrPuFA== 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=FoG/dC+1DVhFlEss8CbcElCJD2KCWBe9UDCciBafkuheaD3bLU6wupJ8V9BKo7ZUVfwr4nVJZRRaUlby67TWjmj2HYSTb5zw8pjRkiE5imhpi9G+KJXHQ/ydCgf0/Tc3N3lh3jvrMha/n1LPVtZazxP+z3ozkgK4Ht1JY+fHjm8= 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 DU2PR04MB8870.eurprd04.prod.outlook.com (2603:10a6:10:2e1::17) 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 19:05: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 19:05:13 +0000 From: Hemant Agrawal To: dev@dpdk.org, gakhil@marvell.com Cc: konstantin.ananyev@intel.com, roy.fan.zhang@intel.com, Gagandeep Singh Date: Thu, 14 Oct 2021 00:30:23 +0530 Message-Id: <20211013190032.2308-7-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211013190032.2308-1-hemant.agrawal@nxp.com> References: <20210907075957.28848-1-hemant.agrawal@nxp.com> <20211013190032.2308-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG2PR0302CA0011.apcprd03.prod.outlook.com (2603:1096:3:2::21) 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 SG2PR0302CA0011.apcprd03.prod.outlook.com (2603:1096:3:2::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.4 via Frontend Transport; Wed, 13 Oct 2021 19:05:11 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 06307235-a4cd-460a-0f69-08d98e7c629f X-MS-TrafficTypeDiagnostic: DU2PR04MB8870: 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: seJmpGVv/lJ8jC2JC9SS79iYZntfL0hxA2ySfnEEqmtNMOg0oxrjrDrGbRos2zErLaZhN9/atV5/a7pZM3xTy5EgXZ2XXH8nv+/Q5gFeYeKUIPf3nuriwiN34FJAmvLRJEZvRhEBWkMptubAAsq9r3dZpLOzTCkK+jU0ZgsDMIRxDa3m7k1vwK2GJjAd6zmld+EM1zyQ8ir4Q8NF6K4WYmlIXdOor9+JH7lypkuBKpiNa9zGt7pjyHz4wEXp0FeFjZMoWY863SdsEifM33Jpd1lTf1zi0waFPJpy1GicPHOMbf7Sng2JAQ0a0mIKQHe9tcPCbT9/2gcOwlAOX9TboNZzKDxM978rzeMIfsbunCh+pEWOWmIJwMFh6b2vMr6fW5GJJJY4aJKAOs/sysy9CrE18lDcgGxxyXBLj8qcJe4ry6eVvlxTaO9ZssHzYUOj6xI4T3FeTC/8CXIij946vednvQawFjBmdjDxG0NOKydaSZRDKQVIMM6KLdWFzIVezAJsPsdvkWLg3iLKnjhb2KBKWuGNIHdjRprlUouYJxaWfGQp4BQlk06RJe3Iz9hVH9E1Q8SNIwV1Z31CcacDcbjyyaxwkQvCehCpYhQi0qwrJNd3/pB6las/Z7aLp1VKrxg7za0etngSfPcxidSP4sOLPrqXj/T4RQIwWPMsBFOtCIV3E6Jkg1OFh5JQyF+AZlbsyoRyK1lwVsBpiP3w+A== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DU2PR04MB8630.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(66946007)(66556008)(316002)(6666004)(6506007)(36756003)(6512007)(2906002)(8936002)(1076003)(52116002)(186003)(4326008)(956004)(66476007)(2616005)(5660300002)(83380400001)(38100700002)(44832011)(38350700002)(8676002)(26005)(6486002)(508600001)(86362001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 5R95R1Rc74UGKCl8PQFy46A2nYpSzda5++sVAKOvTUbisbAx9KYo/28Eqp5VxOCqSVlOZXwWZkFHhHX/CraHONEFNsT7ck6ExRlq5UWp872OlI+4zzMlzC7cvEVr+Rt9gBtmh0JJLSwUbMphuI/oLqjmU427xTtYHxxmcr/NF+QbinQyFOts0QZg+yYzz00HzIBDsbCKwmiUi0ZBI1W7C7zH8qj3GnA6IABDjjHLlx3f2kSs/5OhjMYueJZCBVglhbMQAyPfGOR12JbVZkmDOGeYS9iV/CiydKkSC2LJs5ijI+Ht53Ysfkj/nhJKxV/iTnBdVmcGxgQe8/xfhZM6iiOKwa4+dqagxmVUpvze/CiTA2SZqktnbKL9WW5p2OZmmb/GrX/7KFdoU8N/aRk8EmvaZv0erZUizUE28fWzxe1u6KKdyBiQC/kvFeVOG2T7RdAgOlQ4S3uaF//BhJuIVc1AHOsHmqyZ9weUw53EECISUgrVmnlWfPNMCypputW6mV27vxELrtVFwTcT/p59IH67pFBIK2rUi9z24SgUOqThxRbT0nftcNoJn3JDfN2DOrWktNJdTb02JXWNoPeuemQjYeRzt+9qoDkqBLrVKccQ4iNIIIHS4z9lXWYkceVaBGajL7fgvqonYBKyp2GpDV/7FDBdmlsFTRmhHpJOy6/LZZh5Xj7C0nKZWc0sLEPLBOSdF8WtafjhIqHQ6C93S4kLcbGhKqhwDoDxhnioKZ3Tz4jr4E+eFGt/u8mgCd3ykoX+X/foOcn3sf833SHbQGmXnwSCwBieat4H5to7POZI3qdqyqYWtI23KFUhCuv83wddEqTlAR2h5aSA971VAs1cjJSQDGHl92EP46kuQayxGfVtAKPjoFsvQ4oTVy9yYw9cMAhL7TGMkoKizV8vstdhAKANgY1tABiKIgmsQpUxLn4mOzpR8Ol6gG503WSE6/DhOD1VzCzejspWpJKow3pfq/afLk5pnx5aAk5NlmKoyMLIoIUftwSok6P5aP14NywQRByyamODxxf8Yh6Vn/NdMO0vR2f/dYfVFHtwgyYBYks4Hk+97cKBx7AwYYWKAEALHmH5yGg2Dfj7j8FLwhNgo5W1AYkTwuohuxslIIRoKXi+hSo7SUfb/EFimVlW7rZtkEMam2qvGpGs2eoQMFwYNjGAZtjGWUUFed6EvlfUZ12cPhFiaoBXBIlaLwlRZhM/kF/r2djRD2XnGwyMX1SF7NzY+xHwaMLHZJFRwUyFOUlF1kZ3GU3PDWgQiUlriCOdTPPUbOTUaMsnY+GljS7Y1vey5d8HdO4FfC97nwe0VrViBrqguP3f0lb0zGjn X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 06307235-a4cd-460a-0f69-08d98e7c629f X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Oct 2021 19:05:13.2978 (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: UMPVr6zrAzILhhzthXs1SLiieavAYNd4RGJaqemCmvOK0gJ7jIWTTHxYF2Sdul/fr+Uw+ElzEHMt36DyanZXyA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8870 Subject: [dpdk-dev] [PATCH v4 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 19:00:24 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 101492 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 EB55CA0C55; Wed, 13 Oct 2021 21:05:54 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E137E41283; Wed, 13 Oct 2021 21:05:17 +0200 (CEST) Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2045.outbound.protection.outlook.com [40.107.22.45]) by mails.dpdk.org (Postfix) with ESMTP id 864AE41282 for ; Wed, 13 Oct 2021 21:05:16 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KzGyC1kwYEJufd+Ufhh65R6lLD+htER3fGTGDxt9axJ7bE1pBs/1/JVQ+xFx0Ol9aS4CJ4qBOkcxutW0O7tQa4nOiO6mfVZiyEdtS6tMBLgzNoYjlt7b0oHH8KKs3MNU/XVRX9iBx8ZE8Wz6BHdGLIFZBRjzvg/sDAG609sMDP+dY8H/haWVPvWzxicv18jJCoUXFoYjhroMzqUTo3OgDvGbxBI5JG3v111wlpWHMjDpHN6qTZdcT3I1vQ77m2iTGE5vhefElNBRkL5UaYKT/R7TgXVg5POxc7uROFeJTmA6ItusPOPjIVkya3n21dkwnPir86i3oWU7BUqtGhwHbw== 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=ku7h6+785Nc5Psa5y/vc8B7UNMnPCQ/gHnT5pCKRndZhxrZ/61ABhyTHV8/xVePb1Cwz7phKHAEkY0kuISiIMZAHg0uA99L52exVee3fXc8tGEaLMIF/+WJmsE9K58UxFmCV7f7sdkKLtcOeuXIkNDUZ8qYDDAx/Dy9g4mktSROl5m2gWk6BXAVyNLaY9EnJapzxynXb3TDJtuOkAyXgfC78B7agtZLq8LKQ/tW3b/WemmNwemlJz7xCDeddNU2S9SecVqPLXQ8aXwcuBHmLNXD62Q3SkO0+3KAo3540t73Dd6UvhgRTCrrzNk0dw6NedItwb9nq01E7FyQsnMYQzQ== 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=Sh33DKnBGvT/RcQJU2IeTMNjtb53CfGJ01jpMqDJPYD06PPJJ9EJUoUY44hpdDfbUKIqj/Wiln1p+OaX9RPmETHpNoobgUVX5DWlfdn606pCPj8zotkHpwINFHANH2X+MxZP77Xg5MzaZ2glXMCE69yAv9GkoFHUdM3gSdZGk34= 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 DU2PR04MB8870.eurprd04.prod.outlook.com (2603:10a6:10:2e1::17) 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 19:05: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 19:05:15 +0000 From: Hemant Agrawal To: dev@dpdk.org, gakhil@marvell.com Cc: konstantin.ananyev@intel.com, roy.fan.zhang@intel.com, Gagandeep Singh Date: Thu, 14 Oct 2021 00:30:24 +0530 Message-Id: <20211013190032.2308-8-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211013190032.2308-1-hemant.agrawal@nxp.com> References: <20210907075957.28848-1-hemant.agrawal@nxp.com> <20211013190032.2308-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG2PR0302CA0011.apcprd03.prod.outlook.com (2603:1096:3:2::21) 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 SG2PR0302CA0011.apcprd03.prod.outlook.com (2603:1096:3:2::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.4 via Frontend Transport; Wed, 13 Oct 2021 19:05:13 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 58444f18-c5f0-4dd0-b312-08d98e7c63ea X-MS-TrafficTypeDiagnostic: DU2PR04MB8870: 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: A+wT6/yGb/U+YG4kVcWxcQzCA4L3ysLIcqlcV8SgJICwRAqvBkdN3cdNLQZL/npC/RN69X3xynPWbKKFz2WJVgcmARxmtk6GIECMIWDHXyCE4R7Qf9xQaXLSXF7sHpx9ezRMO3NYmApN3EeDTPj+S5+hpPWy51rXQShztKwH/o9NqlEoYpqapuo75cacYBoWi++gSEmSv/qLilNZR9HeDAd6GbQNhfeHP18nFv9Go92BehKVWA+Ig5LFxv4zehnyCfK1Y9IMzdVaCWD0S1Y8ht8oQONchG+Au2vni4evAF6RvtT9RZb4SmEHv0E0jBSyPlJkfRQ2Mevsn5W5RjbuYjGq8fXCdM36WVz3tEXAPhAsvauOLKteDVcNeSIVj/Gq8s1qTVAKGAMMBjO0FvqeuJx824MfOo9wkFMo57STqx18exWb5K6K5wsvqfcpOwc+LyXHe5aOLdNZ+t5cZb+v0b2ezinqJogxVHFaqm5b+dS39if1evs+IHPACknnpFXWx4iqvYQ6CJFGOCnrW35El0HSPsk8EPw+8lTTaHFQu6GfgyIf5gm2pHypdlip44UWeqO1nj1v0MD81ddsw5zq8JQFQXJV1Y6FjVvNymizRfCxc/3NDPZKBGB2V8B1/sPxHi6yw2unh0XGA2rrAlyFniwLttDXPAx3POnqP3Cxgg4T9nqT+owZS5AcBSomtAFOugyheij1PZuSIzgjd5NAaQ== 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)(66946007)(66556008)(316002)(6666004)(6506007)(36756003)(6512007)(2906002)(8936002)(1076003)(52116002)(186003)(4326008)(956004)(66476007)(2616005)(5660300002)(83380400001)(38100700002)(44832011)(38350700002)(8676002)(26005)(6486002)(508600001)(86362001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: O+22cl6YhCy/vVIwwGjU9+68EZl04yWXq6d56jIsuIk2v75tJmbGu5mJgnRXlHohaveRfL7VRiDyYbFYYiI6ymfXDcd7Ws8Ofp5Eg28stANUkuWw8XCphq/QZ0/3d07f6zAWsRQ5gh4LySdI7bfMqXLOf2+f5KKxumCbUqirlIhRjzGib5fThuL2jMav6Xa6EYHbIDNCnfK1DLI4RlZsvyXlDxe3Kznj2CNp35rjBNUfXC84PTgkoR7oOC+ik9kJyn3nvok8XZzu548abPJsZ3ID8KUbeQzCA+ddpc+l/xwr3KBXsRYtFDdBJJBfvnBo6kyeduRf9agfE4o2WV5e2NAbTA8b6ybvIbqivptpFVZ8FM9LnjhBk1/9cvfWRFqIAVFtCInzJafOP5gPBmMx9bXd76aro2wpycwMVILx5JK+C8miQO9K7rtwZQZEUXRDN2C5W7gKlUM2+H75UASZUUYdzPBvCbjVxDP1wVxSiXePeypD1aCSRS4ry7/p4ur99G9z4wccnJbh/XOR1nkunGm3FiUfCnq40woRf8Z81zGyhsF4EBPDYRCRJixzwilxZ9LaC4mYgFBGItmIvd6gaEJKR+dpTQkzTrNVuFPAsoeoHnFZexmIPNrU0c4r9mcCVzBQEfm1zFkmw4+yeCAQBk700GST9sGvFVEZQVa2puyjLiYmeAxcLnVvWEYWpFZJ7EFeuTP1r866s197LPQ5YYf003ISZw2ahKkmeeE1XE23UrWaXS7ulKSL1xa3B5HCpbzqAsVsqXKDagiQ7BXNE5a/Zk8bFnj4jGzjn3mrMFW/tagnz4j2zEQZchtpjeZkEdKs5FKgqmg+A9F2uOK+N46pLP50cn11k2B5VLPprB0vl5meOKmDMRezxGQ/vWJh15vCYgOmvs49zTvHj2JNOeuBH2i9g4z4OQb2qFrU2r5RoVnKIVPPob1E6fnY+8gAyusnB33qCLLoRROmb2VCjBaqHR2bnGi+NEhQuUPTenjkE1tXLKLMWrQjsIBXitSmhZjgRYzLS9Fykc2GtQWC3v+eHEDLpCwNXQJ/Cj8ySJ+URkYh5YjuMrbf1psiETW4eNU9qDB2KPFIT7g/YBpdvKHmKHnBPWZ7jTF5Wy+aKhwHqp1dR8ze6lUbXlbpp3Fuh5nKogqlCZnS+vftGB3WJjyZWYQ5+CMGaH2xN0pjLVXkF1oQXvja7EBXbNM8//QnqQAS5ulzqXfRV8nZ7t+YWndBAYJ4ohx1WoOJ7aguHvAxmmK7TLyb5QSHfZJ+9u0aADus0fMZxqR25cdgRRRpQ0a1950nwkkdmDmWEfPwP+g1v/V3ceYCELdEOYjOu5Gw X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 58444f18-c5f0-4dd0-b312-08d98e7c63ea X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Oct 2021 19:05:15.6395 (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: J76zDKkp1OBUaPlBY5N4Sk4VLPAWDFox4V46OThqKkyU1Ero/U69wOGJ5GbJpmrKRhFsxn99m+51y6M3M3N+VA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8870 Subject: [dpdk-dev] [PATCH v4 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 19:00:25 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 101493 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 7EB05A0C55; Wed, 13 Oct 2021 21:06:01 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 0C97F4126B; Wed, 13 Oct 2021 21:05:21 +0200 (CEST) Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-eopbgr130070.outbound.protection.outlook.com [40.107.13.70]) by mails.dpdk.org (Postfix) with ESMTP id 168A241286 for ; Wed, 13 Oct 2021 21:05:19 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ji4Wd5Z+nbYgtHiascNRFFzGt/CazQQyB1KWZ4+Fs08z0sRlR2k0I7gCpedNbs3V++YthlKNxCPNBGrFmxztkniW/6ecz04U+FP3WRbdnh7y5p/MnkGIvBJ6rrvlmtDcysBToZUmA83jMDdByrUjd/hSKtBBBaDfT0NVXjCkstrC9xPK3/qHzE4y4jJsHbulvJmBEMok1xoMwuMiBScWF/4djtK5pcZiZ+75oPe5iIgiTXkRdYwbu3aIDUpy5MUXhjpDPUSO19yZQDFalxfKE3K4Ph5J3+5fib47V9+l9oCOBfV3F0DNlViJ8WAIht/N41RsM+3QUSIPfvHk4svCvg== 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=PWyMhNVEK0SH+PgjfVQQi3mOuWqyUHWxlUWkPmr3p9IJQG1lmVeefTYqgAKsD9e8+mOXAxk6sJ6x65Eb2rsIJnmqZWZAHcNLX2/xjZ5eDGVyC3mTA6CBboz87oAH/yh1k0VNNcck8I0rIFVuKUZsvxIM0s2mtdxvUv4OoT2vhqLIbe5yFpOZuGsf2W+gb30qDj10n02DhEGqNswsYToil0t0o2OM7u89HxXTkBmDBXGc7+Zz5HkbFNQFeMbJEkBgBy7sVadRRQWzIaA4gkapxJOIQJM/ZdLi4qTqSVtlmrWCwwzdjDISnM9HIlO6gb9hIH03kNVD07sttNUIVvpScw== 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=ZtQk+kssd+C4+aKyfPmguOEcIv3QJYRlzHtfskL6Nr9pn65S0o6fikur09LWVaROd9bSqp+GaKpARFDGQMDGLH+BLaeMTRE3GPUiJHU/kjaoTJtCCalZIBTUsI/ZD+9nvxPFKql/4yoRGMOOwhmifL6A0FXwacEjA70LYCnunLQ= 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 DU2PR04MB8870.eurprd04.prod.outlook.com (2603:10a6:10:2e1::17) 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 19:05: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 19:05:17 +0000 From: Hemant Agrawal To: dev@dpdk.org, gakhil@marvell.com Cc: konstantin.ananyev@intel.com, roy.fan.zhang@intel.com, Gagandeep Singh Date: Thu, 14 Oct 2021 00:30:25 +0530 Message-Id: <20211013190032.2308-9-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211013190032.2308-1-hemant.agrawal@nxp.com> References: <20210907075957.28848-1-hemant.agrawal@nxp.com> <20211013190032.2308-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG2PR0302CA0011.apcprd03.prod.outlook.com (2603:1096:3:2::21) 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 SG2PR0302CA0011.apcprd03.prod.outlook.com (2603:1096:3:2::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.4 via Frontend Transport; Wed, 13 Oct 2021 19:05:16 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f2d1671f-41c6-4bc6-af8e-08d98e7c655d X-MS-TrafficTypeDiagnostic: DU2PR04MB8870: 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: ZyXh7gAhA4I5hJ4Hwgw9Zuy3DNpNvpuT/E7s/OnHizFi47ikicZW/0KNYPilW4bYebSrLVGCLTBjeKy+dsTPibPs1ordm7lXyzqIL/Ihf5rJe0oUBH100duL0s2aI3thAlcamVeRYbWJurSydSrDOaK9bt/SPxyL03SGG06o+nfoFQ4w/7rPHbpCkmOaJCGjO3Df2ZqxdPF+WAa/ruWab8+jKZVFYovl4XzQMEhem5DA3k7kH7JOBoqslxyy3twpXcnQW+eh7w9g+nHCpaHJ0oKmielSNu/wpZVmE61qTyk44Tu5eCNteDcorzjnj2RZdEapsHzQr2utUxDtQu9XgcbeDKFcq95ycgJ5H+2SbuuLQPrdmCCB3F43z4r+Sw7gkPb7e+mU6FbnKVdC3cgsAd3UkLQT29pIVVNaRPxVHM4/ZPKlo4a6k0F6vQ6N0BRcuuz7lDNIwsJJpwW+3Mw4GNFHsyZGXjPsatcTg0bfNkRh0AfI8TuvkwwyATyYV0FKlsPc+8F6oKZ/8HsqV0ohyXgqLvYbx8Q5Uv5UB2mcBCEa+Vau+Bj1FnV5kRb0rXeOKLhJN3TCI3CrtgJeVh+wkrC7c9g4yVWao1EhPMvmjDfqQZR8av3G826ICEi46NmjZSq4R9CvL4mV957DBNVcWjqQ+cNv4WLtMakci/0HxG4Hlv6pdKtf++36J4hvJe8jXOunQVrLYLXQqWPZ2iQ7FQ== 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)(66946007)(66556008)(316002)(6666004)(6506007)(36756003)(6512007)(2906002)(8936002)(1076003)(52116002)(186003)(4326008)(956004)(66476007)(2616005)(5660300002)(83380400001)(38100700002)(44832011)(38350700002)(8676002)(26005)(6486002)(508600001)(86362001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: /AoW0JZj8mkqvLalZoD5SehwqbkEdu98VuI9qNxsRC0wKxoZPWvnOwQ1bwTHNSMRHkCJPC+zBTZAYQqdtH4bOyGx7XV0EwaEWXFbYNWa+nOVFXx0SHIIt9myWv+UhL0vApyX09Bjvk8KM6s+iuAPsoyBd5iZyPFfNDQINJf+7mvR/CxsSweSI9IymYaH6xCqarFwQVv9li6lDjpJY3lchFOg426VhUapFjOLTwvqjwMh0JI3lfWRiQZ/j7JlTYZ3qYvdX0BDLcqlxg5jrPme6acpbstserh3PB8h8imiwXaaHIckpAjnxbw0G+kfg8gLXvx1ff4z61TMy6C7vuUPss5eyZRg1warL08nn58wlgPhhA53/xYghjlX4txsmkLK6dDR7bmcVcv4oIXh8q04kwyLvLyJzwj7GCpbbssVxkPPth0o59hXO7DO77zT0FxgQNBA4cr0QletixCWt6Dv304Ns6pv/LC5UpCdalXrycUN6b3SFHh7WkhcVBkm5aZyHH1Rps0wDj4HGFL73A4C/u5B00s/fHkob7/FvrMINymAkyaXw5zjv1hvXDmT7r9zx5xC/Mw+b2VZsxohXVzadtgKn4L6msatQVWGcUnmuMYIfbK3FfCdWScy/asPXI6E+LPuKodWn6nNEwgmlvIJLSsq8sMBqDh5O+CD4CMCrMZyxhKAh8ttyztF9xjJ+nwA/sRDgIYi+o8pDVJGfZhgk0tNsBsizjXQhfpmLdEnHMWVvckxHvDKz2KWAsQUZa0cVG+P5U+vKnof/M8z/WDVBMP8MNrJWwTPF4lF62QavTFgMbCzj3XKdZ7UIV38Qbept1Lbu6UcoV3AaAvtAFq6yO3f6u07VeRbrAWNqh93GJq7xUT9Eht0/chl5J9g4nrQPVUqyRaOm9R8gj3zTcrLOjJHiRpvDB802SVVb/b3+EOA6VNFid9tL898CMtkOXN+SiiscW/3pRgxufa4cDC1N3CGC0TwJnampI2yLMVU+pPmyQHVhjFj5wLjtxh1E5cg6v/2J3Ws4dOGQzRX3XYlLyNCrh6qnlDb44QxDtr6MvCrvDV1jA/TcDlKG2YgMbCL7g5WPQBuMYw4pOOziYWX8stZh6dFzFH8WmfAskVb2/4NxlkYVlYPeCHHLOVtvpHR8hUshNG1a+YlANP+oZdaJ0Yxy5pNBObYQNuGQF2bo54XLWk+iN0O3FO0iT+ihez6FTRo6V4EAkJYjC82GWtcW4UNZ4H6AG5g7sPIwsSbko9mKPHiLrVIBUd+46NKrspG8pLrMAmOQQ9yIjGn/bd1LsCnaWhiXn4NHJ0CbinrsmmSSRqiIO542k/hlPUUNflg X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: f2d1671f-41c6-4bc6-af8e-08d98e7c655d X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Oct 2021 19:05:17.8787 (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: bNakvNaA85VrNXKPZCMr2tytMbnbq0He8ehs0ldrYAkGGgaCqest3MDNi8B9HfvpYtjWZJ6Wu1VmqBaRc+ogYQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8870 Subject: [dpdk-dev] [PATCH v4 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 19:00:26 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 101494 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 0A16AA0C55; Wed, 13 Oct 2021 21:06:09 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 7643F4128F; Wed, 13 Oct 2021 21:05:23 +0200 (CEST) Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2060.outbound.protection.outlook.com [40.107.22.60]) by mails.dpdk.org (Postfix) with ESMTP id 4EADA41286 for ; Wed, 13 Oct 2021 21:05:21 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=O5QBw/3bo1Ju6WICmqmMscS2kAJeWnTQz71V0IiDo0JusgBMXt/ZQpm+TEiQ3fyGN5TUE3oEpISepkmu6xxjCGcdJkGP/Cs0zbyyO6vLuDD+4mvcP2w25h762gDDPQvx0QgJVxkkiyKslj3qDe6yqszCI8et4+2mRnCRG5/Dq03VWOfKg8ztqsg7SQRRrP3PJ++eeykKyvwiJU1RbHfOY/1TEHTmZCG6eEdp9/MdRnhqP8LYOuOxc7xNhECndYkDesysGkWcIQQguGxu61RhML4rl2JpZDxOwukNdZH4EARevZSYGa6og5HkFEv03vtUIrJdX/aZCEO0PHQ/l7iFUQ== 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=oCFbbCaN2zNizUi5YXa7LRTiX2zNsGl4CWbnUcLl0Wg+vNinySoITsHirb8A7GeiXb4jokEAP4qBqIwCdbaw3B69LjP9JZERd0sKlt1pnbbCREScE6wULLV48+lUwnwKT6WoOMaLmQ5Jo1hle07CuVPQkt9Vs8u2LNDtwnKeeEuHpPw8Rkb74scOkiv7oxOoT90uwAPZ012pM4OmFvbhW1yNFr94RqU6zv0W6onnqnJXTuI/jdGuTrcU4Z76f/ytrKHcmJ88sAeCw8zrvgyVDfjNt2Xt1w/jlnOayjbVzkzyS8CPunaKz5RMqlmuCuMQACqSUAA8hBFhZAkbtkGgHw== 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=UtMjTOqMjVqKb/KOmzp8m3cFZx5HbLLfisyFXZlfzWsE8XxnEl1qyGre1FTywFE/MJ6IRQiBlpl4WLp8mH5MAily8Mk0bng1TaqtQbrQRftugOSXUCwmepCnEpW1NfTnyeqIwjDi0QeV/N2iQl6O5CVrx8re4zkOQWtrmjuHaT8= 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 DU2PR04MB8870.eurprd04.prod.outlook.com (2603:10a6:10:2e1::17) 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 19:05: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 19:05:20 +0000 From: Hemant Agrawal To: dev@dpdk.org, gakhil@marvell.com Cc: konstantin.ananyev@intel.com, roy.fan.zhang@intel.com, Gagandeep Singh Date: Thu, 14 Oct 2021 00:30:26 +0530 Message-Id: <20211013190032.2308-10-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211013190032.2308-1-hemant.agrawal@nxp.com> References: <20210907075957.28848-1-hemant.agrawal@nxp.com> <20211013190032.2308-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG2PR0302CA0011.apcprd03.prod.outlook.com (2603:1096:3:2::21) 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 SG2PR0302CA0011.apcprd03.prod.outlook.com (2603:1096:3:2::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.4 via Frontend Transport; Wed, 13 Oct 2021 19:05:18 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 3896e82a-8b76-4c97-5dd4-08d98e7c66c4 X-MS-TrafficTypeDiagnostic: DU2PR04MB8870: 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: 0tzSjsbCmaRQMPbvO5e2dV65s/OcrinaUFRjcUOuAj1E+Emb7CiLeJvwcM0Z1NVeKqzaJvhsfgnUf5zqvk13Ro1eW80+AAjQ+rp2J47bD7wKcujJQzN5FNMKo4EXm21T5CxdYC24cVKDgrPEy++oqxEmnfjW7h1T0cwb7Q5WLUg6hFGh09ImT44UndpMftd+V5Ud+i80F9eF1gqRDoyyRyVt9xzkfALptJJxnvZp0sLSTGpCZnc9+s4arC4tmv0/1BHYsRv+qj/pHyid6+pRDBEKosBXoU8wxCiq0eylROegooqXxlCL7lWpOOfBI8vqWNt0WTViM9ZDESEZpw8PCxUyVh3ecTOb0a49odXtVtHHmf04Z+DR+Ur9MsFeAxLCQHdaLwwJ915IJZGmd4REO+kF7IOLBXTKN6U/98CTOMCKzx2MiDydEBETuOw2BM8VyfjaaIlksSCyk8XPVrNgUdtQz75x4rL/4IHlyPNVzn9e3HwgEepkFKNppdCxsQ9/OthIDMYKEH7IH5pNsF/sYT9PjwkGik8IhxadDfLzgRotAwDQXyIZltubf4QwQzoSUt1i1APLoDSDLU1qbeai9JrUTuaUlvS+3fV/iZisS1J5QJQqgW2FF8+rLw80y6mZrihyq0HbEGa8F75pVmkr65nFa+U0rl98//TXW0p5TByeDwZI9eXkS2j00J50sn/d8AY3sN590hg/Bk14zbR9iA== 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)(66946007)(66556008)(316002)(6666004)(6506007)(36756003)(6512007)(2906002)(8936002)(1076003)(52116002)(186003)(4326008)(956004)(66476007)(2616005)(5660300002)(83380400001)(38100700002)(44832011)(38350700002)(8676002)(26005)(6486002)(508600001)(86362001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: rQuegkitfMBTsHTulbDJizcBL3cNpEhy6QlsypV0Ue4D+nxvGxe7uCxemr4yyALWDpjjDPdPazbyO9u5iJyYhzPfRFZRowvRLW7JIZO5DMVbYig9kCp0rnJ0X4c8PA8BCLz8PVN0/603gxeI0x1WlcuiueVhHsoBW4ADAy2eell7S2D0Q23mkKzgB6t00gnlwPZ9ShuedUxlTitKqQa4RZj/QTPhCr4tYrFi/+mC4VXNxHXNduesYkohJ6F9KV+tEkOsALoUhiMvP9SHIM/J8NltEa6r/OlnlODo59F2d1s2BS8f4Dj3YcoNPmNug2ZgILs8MtxuF0f74yXJEXy2ETEhEWOpPsk3WRVLqjoStC8KY5XxSxGq3sBVKXHmPud5d+9RAWT4Gw9/BsP85Ew2tBoghQpSAZ2KW4U7/GJ7qkAz7ivhM6Fwi5Gla0lMLh+HaFSnc3H0XQQJrXmDlETIMoBkAIPRg2Ihs53gZ0PxQCIu2Uy4nPO7f5bMuEtwyLusO9Ko0w5b0LcJzOWFcytjqUeeb5uMSX3JGdGyMet3RCJkZc8aFNV4c1ny8Q6MNEzZvgIShOlE+5QTBztbeWrZNEPJLYx5j9VbjzKEHF45+76g2bu8j9i+pRGs4DxT2n2K/L9FDZtvDblruZi6H7n8nL6/IfRJxNN97QSzmJpoANuEyoD1+f+mvaW4XgBeszsdPP5N5V7E5A4Jw96qTuOHwrZVJEkb2NJ3s/bxJ8TjYayTm2aZ1+3WRYeH9qZPGNd1wYVe2UeVaJqo/8ew4Wcf1gbqafKzOkoBkmzVeazl2BLOngScFWpvAJkbrg+Qp4CLGDd5VUZdCLIAVwqSyXh/zZCAaH4MUePB2ScYn9ZrenMBiEmCTTE4sd6uOIlNgwnZnzrRhujQPjZC3ldDN2B6mK0hDWULgTrwmJTzhObxckwRRAwp/1q8i6C7BQFO03s0KYOkaEAG1997NFmC+9EvjdEpG10ZAeNYF1GkLpRHNjVf+s2Y1HcNoQliOQn+smd8pBoO/ucuA+THd8rbL3UF0GgAPowC17jeqiQn22YtRpChcyLaR2PGygkkeIDan0JaaNSo4YRHk79qQp+BcArJYXp2rNk9eoVi4lbQvM8nDQMO3nmoSeAZadXWMWBbvueyHvNcbF0gBldXWGlSdkqMPnwI3If9H2YbFQAvGhkt6fb4LHKutffmSUt9bBchtpTYJArwOtamZXi2HVh3Bah+1kvtaPO5E8XhR2Hx0KShF0wsv9Zp4/E2Fusz+vVXSGOym9FNZ/LIga6Mugg/DM4VzYktTZSgtrkCJW9D4aJPKnecdDMw/YTq+HHTeBFB3F5U X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3896e82a-8b76-4c97-5dd4-08d98e7c66c4 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Oct 2021 19:05:20.3050 (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: 8tCL6lrSBWuQ69T3cYQiI77zpfgNSv6UcsY4S4W+th+tKRHTO/UbYZNQ+glEbzXkqJrULIrgzlmKaLgxpIpZtA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8870 Subject: [dpdk-dev] [PATCH v4 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 19:00:27 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 101495 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 9CB1DA0C55; Wed, 13 Oct 2021 21:06:15 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 8728C41288; Wed, 13 Oct 2021 21:05:24 +0200 (CEST) Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2073.outbound.protection.outlook.com [40.107.22.73]) by mails.dpdk.org (Postfix) with ESMTP id 597AA4128C for ; Wed, 13 Oct 2021 21:05:23 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UHKx9cOvMGyvpWjwA78pv0NNJVRiJVL44Adrr5iPWo12ggaj/PP3zVcUrQ/8uV8n455qUbXRokD3VljxLRjAvnGJstUio2ZB+Jk6EWM+s3BEJwXpsgekoWHWe6/pYO1sKhoria7RjPncHa+5GEodkQYeckQ625Q83axeQFDqrlJQunTEyQ7PNC9iz/WLc14KeFtgTS3rsLqb80hS02rHGElUrqMOqU0GK3dWKIPrYf3TJnW0rMZ5sn9xoNfreaCiDBZRpXmCTpUiZpAwMBz7nZQpBwCdI8v7A/BHZpeo0vyzp5pOpdYMKBd3EmFs2itIHsZlfNbdTcd0nINZ6c1QxA== 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=K5zIGzYO6vtgmNrs7oL2p9wYPUcZOnqO3lNMsRXcVVHW1o/kuJ5gc9P9MjJAlMtXYGQjpivjQfZK8+/XoM4KKkgpnm0zsoGbXDZZMFicIK2fTxrBv9+/FlWnE6ZheARLW02FGzNjOHWimQL/49ucaYbomQ0lX6E0Me21Q078hKyhqCywgJcu+C9WDOhJCzHt54qDPQNLoIxxSS5qdBhk/mXO3kYJp4HUClQpS/SeXtr6PvtFpg7Zi9JsUHDFGIzcOVxxOHs2B6DV7CjmJ7a3Lhl/sHS63i1JFLZjMiPDhGQka0BPlYmVGHKDnE3UsL2YWxw8IXexB8byLj+YvBtrfA== 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=hLRKm3m3gy4eqGsg61VfFJ+9iCAzHyVMpdFxMXf24nyJ/cZF4/yaqCC2L+JijuKq0PcwAHfvbwjxS+21sfsdA6r9Lgu47R8qjoEQx2rDouU1hJod19PvuFCU/CDkPVJezLoIqRy1WnTd8gRTLW4EfPcNv9OJRmK3S/JcEaHhmNU= 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 DU2PR04MB8870.eurprd04.prod.outlook.com (2603:10a6:10:2e1::17) 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 19:05: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 19:05:22 +0000 From: Hemant Agrawal To: dev@dpdk.org, gakhil@marvell.com Cc: konstantin.ananyev@intel.com, roy.fan.zhang@intel.com, Gagandeep Singh Date: Thu, 14 Oct 2021 00:30:27 +0530 Message-Id: <20211013190032.2308-11-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211013190032.2308-1-hemant.agrawal@nxp.com> References: <20210907075957.28848-1-hemant.agrawal@nxp.com> <20211013190032.2308-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG2PR0302CA0011.apcprd03.prod.outlook.com (2603:1096:3:2::21) 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 SG2PR0302CA0011.apcprd03.prod.outlook.com (2603:1096:3:2::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.4 via Frontend Transport; Wed, 13 Oct 2021 19:05:20 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 5443ad0e-efba-49eb-83dc-08d98e7c6824 X-MS-TrafficTypeDiagnostic: DU2PR04MB8870: 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: Tsls0kmuXSKxgKf6MTVbAEjwt9cF92IPSHWFJiF8rhID5OBgxDrMFbCZP/w69awh2BvPGAiXIITcHxxzI5J+QqGLFh1GvbizGX3ebZyIfD5DGBXLw/Qh+rRCJMf1jpZJI2EUvQgF//qLitzix+9cbJoaHpDPeIYkHilTl8Mw/C1jqJBDV0XmZzZ+H+c2qURMtoCMjVki3BRQjjbkbCQolo0Mg2KpGiAiFXEkkZZJjRDPsPZ9rSfeliMyd0+vFQoejxlsxjfyTjYhjM+atxLn3JuZFC+8ManllRyZw7M3rGXsak4Si3gqIRox23mfHaQMQHJpVCZHppwqcj+I63Oy75HwV6RWR10Zw5yIy300lu+G0AcT0oCEnlVn84+CG8I4rb7Np/1M9WycZPzMnWy3rkSQgMgwuZynGrPK1dAOQ7qm56PlkUKYppIGqIMUVIADmXM7fO62RaeMCZNlITi7HtpWjtFohkiIdFqcVDsUKsiZjGe41g3z8pYoi8xw8mqbWniS/8UQy5jC/qztqPDHOExdoSVUg9ktHAu/F5qq7ncucYXjdLx8DIbvj/umqB2KlvLUbuPcmp43RGOZwEmmy000FoFnKt6e+QD44p9RdAsklGa3kCqp901o0qIiwJtN1RipgTU5vCK7iOEiseuXw8NbQzthE+QSQGSwW/GP1NYmdPKVyPw7b3vGXDaBMoOZnLbhFL16wnyq7MP/t0gA9w== 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)(66946007)(66556008)(316002)(6506007)(36756003)(6512007)(2906002)(8936002)(1076003)(52116002)(186003)(4326008)(956004)(66476007)(2616005)(5660300002)(83380400001)(38100700002)(44832011)(38350700002)(8676002)(26005)(6486002)(508600001)(86362001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: MdZ9cJnaZqjA/nORzCCgGYhLtiwUqjFd0dLsa1GRHVTWjI+ITKRrdbNtuJjHiPEicco1Z5KBG/vRyKNchCxqnyvJAkKBJcFWh5hCCpqmXFXyBjr3vcuDk+wOTMl41toUVSHAk89yK6zgoC1aMKlfPdNsBqwzs7Y/cr+pT0XycaVLSiwKKmzrEnf9FVdXbAgcIdMjtC1FlBDwdBNGEMH6wpiBD9kpvsk1RsI84tkxcGf5b8vMpTlYSMcu7Y7Xet/I5c8mE2wVoeOapLupsM0pRvZXb4ZvVMKjRFG3QG6IMbJuBiU4t4ka7VhnILaYgNIzsnEQIH7O6WQBrXElejhnmEu7NW1lb2nSstuARYvrjFgU+KyxSi6//cXM82CGatnpK4Mo991PnQZ9Pi53G4sJnA0Qb6lGXGxIbiSCgLbdKPGxUsYZ3RYPdMi/taPfUQ8mNxzNasPcKqL2AX+5ztjuR8pZPJcYkISdoHqXwgwPxhFq4+Z3NICYm2OgdMGYMMa4WN3EtvCsfucggfv+FrSFRiAF9cy44BaVIiQ+YUTW3HgneIRdtE7Ta9hmB4GlA2A148F+z7gStAdzGxEETFfGc2jVISG4Wqo1oKGsNqwMyTK4E4Lb34fBQoldqteRO0Jw9ZoibiXYaLPSI1MIM2vMx/UZIiQA5mwYQC/HGdGVi9/ebIjGKK3++4b2s22ibcEi5lofBMHx2DTtu5mCoNPHoBhvg+o5TKiMZHLKXzYob3Ka7ZUuEtpJhI8vb+aw/1zsVC/RtoHwJ2OPUQ+bCYI457wwjnvIsUZw4riAZn4Qztrz5y9DUvcBZ73e5Bl48ggDOPeakaNjJCZ35pf13cJCJ6DepdARNJlPt3mfJGPs6Cxy8lTwsXWf+wu0pre/AwFa5TXY5TvdZuWe4ASyYViNVrXMkkgR2JOkqfAw+8Fr1lNZGZGAKFTyUjGhRSStkHu9kWX1zpcYhcM5FGJqQviiupZskZjWI5PaknpgJKwQkFIJIaMW/HcN2DOZQYcV4XZJRiz5eGg8VXH6omPlnNYghGdWxvkC06FEG+9bIU2690szFpfVuX5OkCNujnp3bSfqoqtSbymvPLlxeeqMOiGq4Zm7eGhJgvKgbeoEnYbJlsD82UkUZ8zVhm8woK3kfQDnhmOXxwSXjt4L07VlR30dIQeulR52htolnut+5MHRR7n41Ax5nXkA0fgE+5gNg0WWbj25M3Wf1cPaBdh5J0oL0/Zgj9Ln5OjephI+6JfsTL0OLQSfpaqH99Ag92H+3VPjaCUm8SG2ZGEn26zO9H/6LOvZ2O/UtBz0WeCmj42Jp+CDW0POuJUTl2nybsQZSMNU X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5443ad0e-efba-49eb-83dc-08d98e7c6824 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Oct 2021 19:05:22.5302 (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: Ydu7ZOg86+mvGb93JopVVY/QbQmaqKCSCjSrszCNnhGsL0o61ETjo2uUTI/H2Gkbbisp0LNM8XRjqvr2qPRT1A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8870 Subject: [dpdk-dev] [PATCH v4 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 19:00:28 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 101496 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 5A4DAA0C55; Wed, 13 Oct 2021 21:06:21 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 9FC2741297; Wed, 13 Oct 2021 21:05:27 +0200 (CEST) Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-eopbgr130048.outbound.protection.outlook.com [40.107.13.48]) by mails.dpdk.org (Postfix) with ESMTP id 315AB4126D for ; Wed, 13 Oct 2021 21:05:26 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mGYElT94JuinomSwuj4PD6g+Vo/i+M+SOY1TPUmWqZObmxQTG/3FVsX3sTVVNOseO8MW3iGPXNaJCC6maeWduxFoot2uPApWzFM1X+iwyBMM6tmfOe7n4gD/qh1o3zUUqmMZi0TvyDW/dB5CepqtsybVsi8sqbY95IEUnuBSYe17RWRF0uc+w00+6JefK47tMaCdmY8rEetrv3+7RgFhjbKx8bmHUYWxXavh7ZbDeYyj74lB8raHjJCF1qNj9jWhzPMWEx8EOPiVNWRGV8vYuGFkuJe+4xtaTxUT9oXCqZwRNmmHiIg0MEpmFdoxQ3FE+t4Yvzy2mFoYBAdlVd5vyA== 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=1SUdA5OJuUCDcTbbDiV5E7yt4+6VAiWVOdAkQC+S7L0=; b=cKMBgcvwB6eJTo1Tp0f6yp1UIC2w0uMNaNnv1teiYBCpt/lMDcOstreyt8n5nI62OXJXi1n+qt+FN1IJ1apWM6CjnQs7S/8tzJFgFGtPiNeQ+YehfuDtaHDG0jc81dKmHHtagoRi0M8DJL6sbtMZ+fjgDFvuFOGJanJ8F05CxWnq0xCnbKZQ062vVPyofkiiBsIcrMNS+bAjUO/IChiI7c9hiyUyWB2wR3m3JIm2/wzLedwqTE0Z5G93MiJvCoh9zbfyZB3YVzuzIySuXAQUb6CYd9EStdnxgHkvZj87ORQJMd+RQR4MnvHHWFhq6Yx/2F1Y0HVGXFKoR8i376kLZQ== 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=1SUdA5OJuUCDcTbbDiV5E7yt4+6VAiWVOdAkQC+S7L0=; b=mfunWYJQUz1+alhXBgHJZHR/dDjlni8ovvMqvsZs3wBhW6u0zPTOD+mVMyfm6yuHValSjrD93uL8CmzIFbp+N5Ud/DukKtvG2etND2tID5tONbbZITMWtny+YQTl9cXCNz0Ok2O7KSeY6VkJCwjczVV68FTW+UySejb5QbtlI4g= 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 DU2PR04MB8870.eurprd04.prod.outlook.com (2603:10a6:10:2e1::17) 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 19:05:24 +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 19:05:24 +0000 From: Hemant Agrawal To: dev@dpdk.org, gakhil@marvell.com Cc: konstantin.ananyev@intel.com, roy.fan.zhang@intel.com, Gagandeep Singh Date: Thu, 14 Oct 2021 00:30:28 +0530 Message-Id: <20211013190032.2308-12-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211013190032.2308-1-hemant.agrawal@nxp.com> References: <20210907075957.28848-1-hemant.agrawal@nxp.com> <20211013190032.2308-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG2PR0302CA0011.apcprd03.prod.outlook.com (2603:1096:3:2::21) 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 SG2PR0302CA0011.apcprd03.prod.outlook.com (2603:1096:3:2::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.4 via Frontend Transport; Wed, 13 Oct 2021 19:05:22 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f26a6e19-b093-427b-5b2d-08d98e7c696c X-MS-TrafficTypeDiagnostic: DU2PR04MB8870: 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: qVQfhNyuYhcg/kCxaf0qm9b7DEIMMVG87yOmcXy3BQHqpsol/KCSxAwXSLKOR5/yqspeItJBib8zltixUFr+r06m23WjjJvMyk33YOYgT9eZ9qwzD5sXH539BYYkk6L5dxSwJvNELehzUHEk8k/uFs7n4m0e2YjwBxh/tryo/8Ab6q0cHYSHkLRqn0OBcmdDWCNQ4GlKOY/6R+2I2+c5Ug7ruhwbs2ih/mU35BFohMEVLEseqogjB5YHsXA+waOAj9lC59zveVQ1iq68I21qPThqSyfGL82qv1KJ/OMHJm6oFzhOnsrpvjSKwUqIZZ1A2lAZCok/ZUxAL/M1bYp/pBqL3XX/IycQWagV6q44qIdl3kaMcxxuEz125XV2voeUQPiPsMWvcLc2ue/aRjNArbzs0oHRsYkmH1Z2JAvULWdjV7p8fm/SzP5sz1MPrnIjPlKnsggvi6Fgl3Q1fUajg0NygEy7XDLBvgF2LPS3XKHx881/pLEzspNb0xD2VBpXXIblJtA90WgrYimk5/XmvCXzrpAXAK3qnqma8L6I+UlseGpdgZlsiSrSVIqwtvOtnhnzjT26gwoS9yItxnjSnR5DUtMnsR1o8dKi2JD3G6oHVdfhyXnrrjreGF2uKRze4kMADjjoP0wJWHr5zL1PsQeJ9JQC2pCr8OQwa1Zn3D5QG5rDiGB7nt74S+IAFUHvT3P3/EbfvDVB6okfQgD5Ew== 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)(66946007)(66556008)(316002)(6506007)(36756003)(6512007)(2906002)(8936002)(1076003)(52116002)(186003)(4326008)(956004)(66476007)(30864003)(2616005)(5660300002)(83380400001)(38100700002)(44832011)(38350700002)(8676002)(26005)(6486002)(508600001)(86362001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: LDC5vSLDFSW1PXDJyEg2v8tMxAjwwyj6DjehytYB4CrxHLJm9LWwThiuIUTi5vZeWjynuHGKrYXlt2QV34xU/4DbYPTYrV0RC+6iHcjL3/ebm8ZPmX/ZTqcqSLlUZ6TA0leCR1YFyCssY4AF4WP5o2Xw5Fe4Pq9K5ZXK+daDiEyOpCinJxNlFDg6lCi9MmRIIJA/r/F2BOg0cDoOF2d4G+yMRVmSe/73UrdQPGqo/0a3U9W8okNg7Y0hV6qViLROOApU5BkOhgYcymV60+D1C1bDw3fPeB95uKN51yw29rlP+WUsPmZV+cUvOzrDTc1iFNSFCCC+Ss6FvtleA9zXr5xxR6IEl6xq5ejevVRI4aJqBhXflatZcKdKtUEsK0xg7eo9UH0uvAgzmByzjRS9Ia3hNSSkEtm566K32cIwd9G3oSUBNmdyS6aZVGK0vYaIP8IwkrYE73GgXOfPIS01RGSiLFCLD5wi9jWG2kFh7E67BUWX2nzF1uanfPi3joehrjGzjpX5Ddz0prM73cpV4Cz6SVdnFayq5DOkwACjCxpdAnbI3rp3Tmre9VozrQ5w63uK5tKTwMO7IoJSPkU+x2ydsgbNc3g/u+RkRXrLIwFlz4GVDFo6yLPfy39VSGHlTpMMW1ytl+vELHJUAixcfxnR2RuNcsAK5XQqoCXql8MmmsF7cM3wMnqVqFboVdU+9D2OPgDLNhltdENC9H28HC2BFujyC+ZUJ70Iu1C9ZLbrSq76B5JYEAUdISHFZd/qm5XHa+NsiVYcdXC7pJrtRBjt2jfprUApt5Q6qti2haTRW+r9RLyl3SL+p6MCTcLdkSSwg4zslZowSgGBJAQrMJZDINnjGeO93q3ryhEAjlXemt6nSVeafT0iNIAHEPR8yCu3f1Ollj8c5ap8HDO2d6uB9XLoHaf3XBGX/8VYbSnqFjWkUmEibyBHG6pybJNPaqNL/voep9/fZyFQOsa/qzEzHlBWqhBfjKd+R6+k1c9rxCkq2rq28o7+h3zlw+B+AwCJ+/lu8Z+oNwcsP2qu8l30aPv2n9ggV7nGng0QmKeIJRchAtxGaDOggHuDSBF/EhB2s+JaPtZcAsz5SCXIcl7gmO0jh2tzsuV9Lf7RQCUGRpp29TXJErmnS2gTvkiDWZum+7WLZQuHWdEVi5Xx5ut980jvwQhfMHmqGnss7siy1R214JGynsbSxb8+2erqYZUOZjUTTygBs1qkDRlSKvJN8FXHFvOXpZ6j2HRzMaM+TC1xZSbDd9zFg8EfxM2/KZ2WnOOCBkTeCqUuzcKinT5T3YMlroUAVa2SuA1eNkT2gb0J7nW+sBVkaw3iVX53 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: f26a6e19-b093-427b-5b2d-08d98e7c696c X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Oct 2021 19:05:24.7116 (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: yCtk8JCKvD3vOprzYLBYQ1toIEVL+uQNrA6kthT3tFmKBDP/dPTO//+sREkgLLzwF1ehhurn+trVTNp9wYOJWQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8870 Subject: [dpdk-dev] [PATCH v4 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 279f0adf62..584c420bd8 100644 --- a/doc/guides/rel_notes/release_21_11.rst +++ b/doc/guides/rel_notes/release_21_11.rst @@ -119,6 +119,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 19:00:29 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 101497 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 40910A0C55; Wed, 13 Oct 2021 21:06:29 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 105F8412A1; Wed, 13 Oct 2021 21:05:31 +0200 (CEST) Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-eopbgr130057.outbound.protection.outlook.com [40.107.13.57]) by mails.dpdk.org (Postfix) with ESMTP id F188B4129A for ; Wed, 13 Oct 2021 21:05:27 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bqe6X7evrYmBGS6b9yiFrPCbcmjLKfFu7Qc8hyRpf1amhEU6VQbMfmywRO/+MdDyI70NG3pwAH9SvAuP/JZZS+WGkF7Df55q76ozPLonkfL7nyDx1kDIzSK2at7lVLnYO/PJRD1thirjj/7h5QPrETbf398c7RxYZlOdHr0LTJD4jqRnye1SceEJX/pf9FepD2gLpJa7W/e3v6RKrITmyvZnA9GEDjUdTYz/V8tuHv8ftjLpTqi1WpsbY52dHlggvV5tj5xkW4xZklI2z5ZO+gv5Bj9jAxzwBD+VkhBE7dV85EPB+sJR+zj+1N0hh/MpaPIXF11vqAzQzJzkFPZ1Ig== 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=b4MGB/uYWKp6g7zLaSw1IHNSzYuEsjh7DDfabHf3k0JgHMFynBN0Y7O8UJhgIzAZLwqSxvDT603v4DyOIFraG5H+KHiX4nPOL5oeS+1qWDr3ZahTqIGACqzgZtLS4FESZYAEjdvwdbjJSoZH7IqKGDHoNt78NSVoPv4wuSdgifHOaTRMpY9jHCYJWBEUT1+uSSj782qKog97ziY29SXbYHgq3kur+Isbl/1dg3IqUr59ABIrFdhm/fC7gBzmxgbscnDixvq+ljiVn44AGOb/PNK856uHrps7EeY47iEsLRpFC7R9smj2I2kQJUpQ0gFdsVzxfsTrVbbuA8WDyIPYnA== 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=i+eM9ivi8sUt6Jw2WwzcG/5C26EINC6WLFbguj/WhoN3mfMAoIVh4ycx1pNOHlHN1KePmJZXcMq1QNSvwUflRU86mzZNOXxFq2Jmk5fzAzauEsk7uAxoshFPG59saxxTQUe/+bUlO353FUTHzmghzOD11Y7VMyofNAAA7YB/+hg= 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 DU2PR04MB8870.eurprd04.prod.outlook.com (2603:10a6:10:2e1::17) 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 19:05:27 +0000 Received: from DU2PR04MB8630.eurprd04.prod.outlook.com ([fe80::945d:e362:712d:1b80]) by DU2PR04MB8630.eurprd04.prod.outlook.com ([fe80::945d:e362:712d:1b80%3]) with mapi id 15.20.4587.026; Wed, 13 Oct 2021 19:05:27 +0000 From: Hemant Agrawal To: dev@dpdk.org, gakhil@marvell.com Cc: konstantin.ananyev@intel.com, roy.fan.zhang@intel.com, Gagandeep Singh Date: Thu, 14 Oct 2021 00:30:29 +0530 Message-Id: <20211013190032.2308-13-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211013190032.2308-1-hemant.agrawal@nxp.com> References: <20210907075957.28848-1-hemant.agrawal@nxp.com> <20211013190032.2308-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG2PR0302CA0011.apcprd03.prod.outlook.com (2603:1096:3:2::21) 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 SG2PR0302CA0011.apcprd03.prod.outlook.com (2603:1096:3:2::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.4 via Frontend Transport; Wed, 13 Oct 2021 19:05:25 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: b1407755-d65b-42dc-83c0-08d98e7c6ab9 X-MS-TrafficTypeDiagnostic: DU2PR04MB8870: 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: 2MzwXM5KNziDDIJvsMHbtH3UhpxnAjLECV4HTe7UYDqnZvMPRkOrZTjvd1qrWH7fvKBmxarw7WA1JocFkXBA5IjNno+fPJnVwERI42MEBm1FYOZHayzCeM47sV0jCpI454DtTD5I1p+IcOoiL9ewZEBN+VJEubq+5JJTUT8jXim/ZyXk+wlysRQxqPyYOuhAFr2U13oUhVrwLptJY/mquO6NXvhcuR+DUzcfEZiYrNgYbWopeTH2ulrm08nW2jqMiuwSE4gkG6CTWUM0X+Lv83Brhdu/6Ypg2HvoXFUQwsTn/yhAl3xiB3izJwevtcPT9izODAw97amGlqD+eey2Lzvanbu+sLl+6CQADw9BNHQSGMrEoNEn8tFhWaSpdelClVUGOBK4/lyyOyD1aYtQmih30DftbJ8MuMaFoViJOfRar3AhmZrgKD2ZKZQ5/ZDSUWPNbHYm0VjQzjdKSVSxywB5Vb7b5EiUTsI4lI0FTYzRPMKIq9thQobUTbiYdXr4iAXRiZuBiD5egP79AqDyjktIw8exydnALcif7GQhX4SnqKmkDSSk/ccNIpjmmYqir+64EoNbUxko9bpw7JyHqOAOYuYyLkm9o5ALmJ0GJpTUao1hWDC6S9da/8moU/3f2HP7IiMwbE1xUwv3pw5wDMYmoCiGnGmgtB69SQy1qEkLUT4Sa+gqSPPSN3LHqsY1HrEzmfGcPGAz8oOO3LpF5Q== 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)(66946007)(66556008)(316002)(6506007)(36756003)(6512007)(2906002)(8936002)(1076003)(52116002)(186003)(4326008)(956004)(66476007)(2616005)(5660300002)(83380400001)(38100700002)(44832011)(38350700002)(8676002)(26005)(6486002)(508600001)(86362001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: wGQjNzc27vZvMt86QSpRYFL6BAfutYL4ENonbiEx1uZF4U79sZzjaegZ0SktkfMyWduyN3qJrtUVI9JPkvPll3EI+brdgTKh8VB8NqstIC/33nvKSpUmr1qPLwk9p214gTfTJTL8qb/Rgh6zj9AlwHs3saBqFvz9T4q33OBIk/60TnlPcc6a00Xgdb5/qExFw4SNGciLBC6NRJwdMEknbF8HHDSovjY2UuoVyvdhxs2Iww+YijxVw6rgRMOSeW6MZUEpc9a/7xM6P5We5+LKUvG9e2KKAxPelZ8wIYQ+KqEyoSzUarw03ZZOpvUU1L/RfK8tC7yBOeAYwtMGZ7p5WipnTbK7dWjIZvLPJN63Df03vxPlpQIyCXxZJQWTP+7l6aE5EvHNMWPCM/FNJZVWxPMuVjkB7oDQqQi3BQYI8WhGyWgBhxcutFICaSOUuz8gp30JPBXjdfkgo25H74PF6KSHn9WOS1dKo4a8fdpzpPBYt5V+d8jAzYXXBAwGf0IGvdg9ZmhOQu4qJudymWBAtK2ug58fxYfYK0ccxlP/80POqJSrYfzZhcYCVGN5aSUxwqtv/d3OUFukURhzvm7LgEcD2COE3rukbSiF1zu0Rz5MyH5+DjcsRGt4vWvqvEI9y6OmULPIXxr7NmsnyVbh2b2uR1P8aUdFp3M+of4/fxl9J3Np+Mahr15mJ54GWVXh6cTM/gCmVfhq7GFaHonD3NIuCJzFsb3e0C+/sGPUlCJn0OgP2UOKgqKnY0Bz16q6ufPnJlEeIrRBN44lIhdleJ7roI7zLqR98/UPnt709TppBbn2nwSPeOINc/2UIwX8vxEtGdHYInsVCu8yCLeU5RrSnisPbs6RdH2JAoQ9zV5xdgyCvQEuvk9K/NGim8SqNDgHPYdSoxIsfzL1VSMTMSazutEtCUF9KjzrTc4X7WCvvgNjfbEEURyIdb9ivqunMpYEZk6HIuNdQTwT+GhebUYJ2vDN/foCTgSGyIF979OO5DE2kBBYp2jKlfZc0Y5Nqowdhupn8ncTRPAD9A1cslMG5huqdlo66Z62uKxivsmAh0ihwIKN3ROwFh0WZ2Hg/apdUjZElL89k9nNZHPI1zUfze/sET32IYDNtU9WOsOuYZ2G0HkWyO13LVPdP/kwHmg4+meM6Edl3ahcZjP8ObJuySeTmQdmhb51kGxwHuJ+V0KC0n2Q6CIO1ALYwMFLaK6+rLoq9qpCkgUjiLEZQ4tTeunbmlSmdqp0ruUR6XyffSWTqF46En64/RJy0DaaAzJqj2RxgIVpShfZeTQitjd8sMtptHR5Wmb6CRVYAGOAmS/A2VBzeuWEf5ZJ+g17 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: b1407755-d65b-42dc-83c0-08d98e7c6ab9 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Oct 2021 19:05:26.8930 (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: 4aMvGOM45mw1D1YN6vGnU/OD01GJS+qxXnyi8dox3YLdtVYvBye9YqsFu0BLI9vz16KJi+TWaZ7ep47IcGuXOg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8870 Subject: [dpdk-dev] [PATCH v4 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 19:00:30 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 101498 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 0126DA0C55; Wed, 13 Oct 2021 21:06:35 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 5CFC74129A; Wed, 13 Oct 2021 21:05:33 +0200 (CEST) Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-eopbgr80087.outbound.protection.outlook.com [40.107.8.87]) by mails.dpdk.org (Postfix) with ESMTP id 5A82A41289 for ; Wed, 13 Oct 2021 21:05:30 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=k4tM3Jx91UlfPQ9G1mdWdoogKbXw9VecUGbKk7r79VXKVby8w+QZMsTNEnM71zuDQI19vk1mTuA0c7yHt4rq762M96jxSGz8pPMiT2uw731000tsqUcsiCORkcPRe99aHl520kl2wOxXaudQEaFP0bLy0KYaB5mq+noWWZVwAP5djocRpO1PwsxbwA5esbKcnsKtbL1EmftOGX+5WZBrRrGutrGo4EV0Vt1w8RlJeDMNGPG34rSX9JnMEXiafnonXFeiRq9cpCEAGyh05uIfSc6XvhSOrx/xGVv8Hnw6h5V14L0RS6ihDV79zAOGxTxWKzbc7M1tFAZUzIuNgxSCcA== 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=kQdr25GxFN8VwXG/Zo8G6Nx5YC8xAmHQUCCr/23UmOoWn0XHg5lD4SPnLcYSU8PDUg1V+2WHrQkx/7i4atpmxnrm8v5FqT4p3WitcrX1nRFhjjLGSDNJboOtGlbW1ytui4+M5xeXASm4AYGQHhBITfHdYZEUFGwbVsVHkWAUejyw1wxP6cMP26g/FjNkND9NTxwJb1Yo4yLI9tNyzDOVox9UV2TNK13NCgOO6RAtS/ztU1Ia5PAi/axiZ1tAL+qgL3fyL/P9W+EN9NzMKNyxmnv01GQipPu7MU0NiXRh1kcknG6pZ79n8vuk8OkmQPgIzNacIrmdW3i4CIStuk/AIA== 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=WNa5UEh7MuOkxsbTWNn34p5+ABU78sgRqHrQvceasiL0vyp67zoe+t+63QVmwHSx4y5KhFJWBK3A4+gKcHZ2znSBo3kze5mB8bPW4Gis5U4ovE8Jv7AzkyhnWUEQ7ePpx1SrJJ6XtkwT1q4kgdz22TGQq5EfRS3CFR9jBMdVcJ0= 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 DU2PR04MB8949.eurprd04.prod.outlook.com (2603:10a6:10:2e0::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.15; Wed, 13 Oct 2021 19:05:29 +0000 Received: from DU2PR04MB8630.eurprd04.prod.outlook.com ([fe80::945d:e362:712d:1b80]) by DU2PR04MB8630.eurprd04.prod.outlook.com ([fe80::945d:e362:712d:1b80%3]) with mapi id 15.20.4587.026; Wed, 13 Oct 2021 19:05:29 +0000 From: Hemant Agrawal To: dev@dpdk.org, gakhil@marvell.com Cc: konstantin.ananyev@intel.com, roy.fan.zhang@intel.com, Gagandeep Singh Date: Thu, 14 Oct 2021 00:30:30 +0530 Message-Id: <20211013190032.2308-14-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211013190032.2308-1-hemant.agrawal@nxp.com> References: <20210907075957.28848-1-hemant.agrawal@nxp.com> <20211013190032.2308-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG2PR0302CA0011.apcprd03.prod.outlook.com (2603:1096:3:2::21) 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 SG2PR0302CA0011.apcprd03.prod.outlook.com (2603:1096:3:2::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.4 via Frontend Transport; Wed, 13 Oct 2021 19:05:27 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a1013fc8-929a-4f8a-4b47-08d98e7c6c0c X-MS-TrafficTypeDiagnostic: DU2PR04MB8949: 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: UzTNSmRpo3p69XBjDt4yDvVW2lYkt2k0sLnGeuIQBDgWlcNhKKaWiwH4sU6CkMBOtI9DEbjrjQt/NOunRfYIo/MXUzN6Us9H6z3YYGeDCJAAEhmwn326tV+msa8iUaPI/PssXEHo3DgFbGVvtlU3E8qxJ/l4SxH1gBgBhvaoisoJnoWts+FHl2+0Dke0CHTIpOgf5OTe94kulBTQ9KhH1mIAnOGB9bSRfDe2f1/VrsQiMfqlHetJCdba2wkpZbbo7ujIy2dML9b87ddsXjuN1HpX76UdkSCFyqKNQNIe9WNDvMVpUZUC9j0MlpJy3/4jzfqnk+wXfiw2TseVvlwYmwIW5Bi5ZVXqGaavIjo4fpjjnAQoxh+8uB568nRkDIeftrOWW00ZPe5ezLtZbWnjJJ8geEPalZy12CpWpcnVUVqlfAIvwysK9yUVdhFkt0H/znL3ZiIEAluLDNVOfcNYSsOvZ9mmGQIUdOpQKMUbl3ahsLl+yaZivRtL654Sdsg6EglA1Xlz3pFVZnEeCCir2kdyzZgedI+U5ieGxv5eVhGm3eoJyZUqpqBJI/ApHWHI15jENAxISj0r1K7lfAtez/UwIozAMeefxlFogEPrqfZrXygcGx9j8Yh69hdlfiWPiHbdomEyQDQ9OvnXNbAUaSEou1pIO61T1Z4HbrrB2XQKlDpwObRLeFudFgZtYB9pXtR+6h9uovJB0reynEJYSw== 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)(38350700002)(38100700002)(86362001)(316002)(186003)(8676002)(1076003)(26005)(6486002)(508600001)(36756003)(2616005)(956004)(83380400001)(5660300002)(6506007)(66946007)(6666004)(4326008)(66476007)(6512007)(44832011)(8936002)(52116002)(66556008)(2906002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: yYLUReHvHyF91ANTuYd1IKqn4zkogPbQMb87PYLQ0rcauRuXMo/Ufd7AjgOyqdKgOlgMATOBJ0u+6xiYMc1vN3Vcq9WG5CZbZKoMHu1o9+xFyEwaaCEvSr2UfqSl/y8uqP5K0guAt55clu93cvio54RC+rxB6xBdhT13rAJ/83ppi1VG7ieTfqertnve8RgYB1AXffNny9/+BKzQr6JEpa66ia+e07Qv4DwboC/sb4ipmJa0SIjr2+fNbspi6Z7eQv2dXK47DLGDV+81Nc6IeCq1bWORiTITe8gtehzTDdIwIH7fVWZA8zuLDSubLfbeoonnLxzK+3hspylatkL5NX0vzDAHPcYMira1QfKwuJxoub/gjW5rR+YXvb7UBBJrWtvpzIFOUeNpHXveRgl5oeIcgzz9UQRUTBwKTWacRK3YwC4rreDjbSgSKhciK6C1cPvrgAQmJ9Oa7WtPC5AjRhY36L2VBfBARg2lFCB1TEcvf3VySOpHkjUezggBWnMtrG+Jnssu59tOtzLsiElhpN5VOOeshFQRACeRo7snjqK/3NqjtczPtDsfUKMHyc5OqqmeBH9/S4ck4u1B9omtiW4/oZRCReI/beZrMrf2OdlVVaSJ++K2eDwc8ePazlt0Cx1WcR+e9ZypQpiOj1TdhRPQLLYuXqlj5KWna1Tpft2xXY8QLWUznsmiqNbj8KvzGf9zywkpoRRQC9Zhm0vRyqmckNge/UiLu31ASkSLkz8KwSxZzlePk2IESs+nvKqZhL4ZlmyH5fkSlPuz40S/5h9KuOZnyHQzHzYfYwR9fCf/nG5kjGRhCPWY/FT5chSjoQMaCWT46vwmhPqrkafERw0jGwXIFpQrXlrzLvq1Ejy1Rmif4lt34MzsLO6DbOHVx53wicIG0SDTCcfsha9Lybg94X2Oz7fjoAu4Wdw2LlTDRAyiuilxDLUWbIZEf4qS0cbeuLX5wioNDdZlMIDRSjoD7rIjy23bsKizFB3nSGTB9ojpIdrNcAM0HcFdjdYThCNcn2gOtyDH1DmPka6fka+1N2BVCZWHDsOBQ5D0sIaTVyO5NVcd2s/PJGhVuOpHLOcdJLfmHWwaGAQm5WiMsXxH5qx/uJx+dk1VWDN9lNFgw+CCYC9uZCCeaI+i+hXKCDZKCcQMHj7IPhlyrorTnREQp/spD5xtwk+vGsBLA9ELYS/PkWXUiAuDrsbtiZ7VEynN8Y6rnNrfF99V78FYPA+ehoOaD4QYGiZMBohQEOhE1NiDb9HRPgMnAYpzLDNwjEfpBpHf6uRqrKVzU+aMHX9PXfU9h0bc2emRnuuflE9QWdZdLb9mW/K4C/zU3/hK X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: a1013fc8-929a-4f8a-4b47-08d98e7c6c0c X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Oct 2021 19:05:29.1590 (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: IGOWUDWMovUjhc//6crQeKcmhud8hKBCZyaOCIaiYJBM5iMuBtEmw1QlFyVU/BtncvWI7Y9xYkJFR9435b6xLQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8949 Subject: [dpdk-dev] [PATCH v4 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 19:00:31 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 101499 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 B18A7A0C55; Wed, 13 Oct 2021 21:06:40 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 558B3412AA; Wed, 13 Oct 2021 21:05:34 +0200 (CEST) Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-eopbgr80089.outbound.protection.outlook.com [40.107.8.89]) by mails.dpdk.org (Postfix) with ESMTP id 66913412A6 for ; Wed, 13 Oct 2021 21:05:32 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cGYS5oCU27BS1ZcGZsjJiCfeEuI1hzKh/GnGJOT4mpL/hQ9w1nIVz0sQ31XP4WD+9MJ4FNu0xYgOQnL5M3SyCHGi5MMp7XKSf7x7hdmEExpb79rZOHAdK4Ds0rPd1Aqlh18XVzgK7aDO44QVjWeJqeZiMKAhP+ZEfMTDZb5OjI7+wb4O/8nE4VONgAfO+fzsEdEKmaP8uMDZjAYXJpJJfMd4wlyVp6MHOpNDYet3cmj7+jV+km4LX6LiUlmyprAWuW7gLdrbPRXcaqbczJNno3TmfoWr1+CBhRNWRCystCgC3Q4mWlwggTqeXLYVstQavpfaSuUqNLS7+OmN8/nuUQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=W2YLv0uyxyAbQiTeTxMq6ywrj909iVkIJSNzqNanqK8=; b=Za2whFKqtA34WNKlZFSX3uPhhRaOSZONkRPOp5mD5hA4A8y+WnKz71i+DuAfZlas2ZAgBY6Ci0DAaC+Sw6XdNUvSzFnBkP0pGjoQbD3AhvaBtH2aRPom3Y+TVroBAjGfTB45d7koGg7S8cqRJQvR0/Z7f9hoQL6atJWwuvLV+miJZa8aJqDWJZq4qP4ztDlPC4u6JDNIYp1ldiaYMjvNaPHSM0N0FHcBVrzy4TIbLNsFnXFsnJ262YUpL1mdggzmdnhkcYEBCea3yPsPUVIvrnj9LkT4y+3elvHA3EF/hUB1IhzVMt6Wr/dbLBlEzmZgXpma4lKTBL+DItwNIrGhxQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=W2YLv0uyxyAbQiTeTxMq6ywrj909iVkIJSNzqNanqK8=; b=qbEjaXXxDYhvCtkW+yzwyNKVxo+V0vKJW5RYtYfWhSc1vA/JjSNznnQBy9xuw3WW2J0tl5JX4QoUG8gb+Ur8oPbLFw/K5+iQB9An3qR2AYhyPm0MfYOp5cDv/VU2MGjMdxjv11aF5W3BlXrUHQ3MdAtt3UTg/pF3b9GtfByK0kU= 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 DU2PR04MB8949.eurprd04.prod.outlook.com (2603:10a6:10:2e0::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.15; Wed, 13 Oct 2021 19:05:31 +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 19:05:31 +0000 From: Hemant Agrawal To: dev@dpdk.org, gakhil@marvell.com Cc: konstantin.ananyev@intel.com, roy.fan.zhang@intel.com, Gagandeep Singh Date: Thu, 14 Oct 2021 00:30:31 +0530 Message-Id: <20211013190032.2308-15-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211013190032.2308-1-hemant.agrawal@nxp.com> References: <20210907075957.28848-1-hemant.agrawal@nxp.com> <20211013190032.2308-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG2PR0302CA0011.apcprd03.prod.outlook.com (2603:1096:3:2::21) 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 SG2PR0302CA0011.apcprd03.prod.outlook.com (2603:1096:3:2::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.4 via Frontend Transport; Wed, 13 Oct 2021 19:05:29 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 957fc79d-3c2e-42f6-39bc-08d98e7c6d5f X-MS-TrafficTypeDiagnostic: DU2PR04MB8949: 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: 5/7S8l587UL0Wyfes/CyImijRK4Sf7LRxpORBYZai+c0gqihH/TRFOdVb87ktRG7QBcnrACTusBv6wE66beoX3TbK2wdnPjCpU037gEDcr0+MKV4oTD8NPZnPNMLFWVWf4da/C/SyYLGbrxZsIMskv0QVVACxMRKNPf4vLrfuvaZahrYiifAInDoizmE7r2iw0V4ySWb1ctMme+QGXr+VkX7JI8gTLenTHpBOp2dpXIeex9sgSKoFdz0plrCD+SFF8TEfTlels9yxW2TBKwIDGmLE6mpBoN5we3miC3507fWWMwx67wU1jEZ7sEfnCqbjBTO0HE3++FO1umMkJY+MxRtIZ8bPsv4PEk5gFhznuzRg+d7Rlq2uJ9XiRzMRUa+25wTPaH5uCShkZiX2Yu+DuUg/7dxi8kbPqCsS2+L1C5hPHjTmdDoV+f3CINPKtPllAD2CvCF/QupF0jWkH3yDSvBHG1pczEFYtqau3FGbUCpRhCJhZXgVnu2ZMWMONvjIDIfCQjrLLZJXgiIoSGOqa8f8Je2ApfGK3Aner+ZgNUWh969ZpXkFWLsHB6CutDOJLinHNXStKqlnHyqNrS+BvT7Cwguv6RQzCO/HGMpv0CF44dH6FD9PiyFw6Ojx0RzlqR1lzYE/KnrAMSuRfae/orpBNYzsUe3hfg0a2zHrM/MT3W4v8oDqP5NEjGGiYrasPdMmMfsTu9LemYHDKi8Bg== 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)(38350700002)(38100700002)(86362001)(316002)(186003)(8676002)(1076003)(26005)(6486002)(508600001)(36756003)(2616005)(956004)(83380400001)(5660300002)(6506007)(66946007)(6666004)(4326008)(66476007)(6512007)(44832011)(8936002)(52116002)(66556008)(2906002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 3Nh9bjNkQOXKWuRYhax3ekrYsHPyLyunIOv8rnzWo2G80uIYvzJHzN6yvLE/+F60b/cx+VmiVGKuUHQ0CCk8IO97x/5hdhJObEyxs5/VLdkS/tQPFCWDKEUN3+ssA09yldVaMJABuKui58AaMmEgkDbztr5kk5nqr3KXOZ2mM23nf/cVdxMVKpWUj/B5jrKBAhCoHZ8C5g6C/t2aLLy7+uLtp2dBMaPOB6naV1vKDo/UX4C+2iZUJPRvrkLfMU1jtEQF5Bc7MNUy0U6umd0bFYMOJenVlOk/z841bv8bTFprQQMXg+1PYswHxQaXaT7Xc8QN6Jj1ubsQ19o6buQTOfnVWoIOcXg+aIHs9wR/4HOm2hdPk7P6jxfAPFBhLsYK94jApnSY6uvh0KCP9jTdgiJwvqpackZXeWQ7+vakLlXTU2GPxDkbeIL1/m9SQ3+uaaPpbKeqM7VSiNUi29sWqm84YgQb64ke9YhsUN1R/MRCF1/+xG7qRXX5LLrPoyt2k8ViRtwA3f9UdMvHgm6TWBY/Y/FIFbGqJlEQdJwSXLFxVfCZ63e1BMAAmPbYtdgr77XfSjWlLqIhCl127uhxd3bUxdHD6Lz+y2PCBQSxvpgiZ6EDNAT5zcNmgvUEDJRfx4wppWBx8Xx4OTO4njtK4o35vE/v+kBGAkYHHsF98BtadorPZoQiXaTbr6cJvzXTRwmYpZUGup2EXcY6Lmxle67uljXzLoVaFeNKbXSufbfft6XrQRN+DealYSMc/auR2DgWNr7xqPQK/tCsuVb7QNCT6QkBaTrT7jxQQuio0CJLSoxiMqpoVlWow7XQ6zwu+6Rm7zHatsQ+IMIthbTkX0aJoiozspT6Y7QMZCVguJXWc3g8D9vy/+gofueNaBWH3BnZ4lMQGs+Qt2c98WHQjYco0tldOTzq5wN57UJKCZCkkuY8WMMNlBJjG7h9uRXXugNBKvm2LIoML0JXPh4cU7Y/I5VN6C9e8Alz32jEHZRmTvidjOOFm+Gv2O+0IRRwxvCIcnmRhEskBKEZqfM3W14/r39QDwj7/dc1Q4Ao1jH4cjxBSTrRzPX3iZNFmOD6xsRkf8lDRqCJ3rQWnr5W6cNlhxN0nOuDnwsDAWqLNEHlrGbKdMZQNuHK0G8Ob+DC3vbecAXgiqLtu9/J9oYidrJXHRc7Uf3mTuo49RMUVuSaoMvRUg96fNXdmdPwPTlY38SVMsztNNLLMLBGEbpV1kX1t3yRFF2xehFHLn+E2tazARxHwOeJzfya/beRaZdZ+UFA9fXFgpZS7SNDM4YCpRL78tzR4s9KQvcQQL2C28+bUAL0zf/uueSKX6VnPE79 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 957fc79d-3c2e-42f6-39bc-08d98e7c6d5f X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Oct 2021 19:05:31.4479 (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: 8LCga/W8xyYoVmDnO74x53DlD/CMxL8+CxeHoS8gD3KwzjOz1NywV9n5t4rFpxLMhtw42+Eez0d9PbOZnKZh4w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8949 Subject: [dpdk-dev] [PATCH v4 14/15] test/crypto: add raw API test for dpaax X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" This patch add support for raw API tests for dpaa_sec and dpaa2_sec platforms. Signed-off-by: Gagandeep Singh Signed-off-by: Hemant Agrawal --- app/test/test_cryptodev.c | 116 +++++++++++++++++++++++++++++++++++--- 1 file changed, 109 insertions(+), 7 deletions(-) diff --git a/app/test/test_cryptodev.c b/app/test/test_cryptodev.c index 4778dafbe5..73c64301f7 100644 --- a/app/test/test_cryptodev.c +++ b/app/test/test_cryptodev.c @@ -186,11 +186,11 @@ process_sym_raw_dp_op(uint8_t dev_id, uint16_t qp_id, { struct rte_crypto_sym_op *sop = op->sym; struct rte_crypto_op *ret_op = NULL; - struct rte_crypto_vec data_vec[UINT8_MAX]; + struct rte_crypto_vec data_vec[UINT8_MAX], dest_data_vec[UINT8_MAX]; struct rte_crypto_va_iova_ptr cipher_iv, digest, aad_auth_iv; union rte_crypto_sym_ofs ofs; struct rte_crypto_sym_vec vec; - struct rte_crypto_sgl sgl; + struct rte_crypto_sgl sgl, dest_sgl; uint32_t max_len; union rte_cryptodev_session_ctx sess; uint32_t count = 0; @@ -326,6 +326,19 @@ process_sym_raw_dp_op(uint8_t dev_id, uint16_t qp_id, } sgl.num = n; + /* Out of place */ + if (sop->m_dst != NULL) { + dest_sgl.vec = dest_data_vec; + vec.dest_sgl = &dest_sgl; + n = rte_crypto_mbuf_to_vec(sop->m_dst, 0, max_len, + dest_data_vec, RTE_DIM(dest_data_vec)); + if (n < 0 || n > sop->m_dst->nb_segs) { + op->status = RTE_CRYPTO_OP_STATUS_ERROR; + goto exit; + } + dest_sgl.num = n; + } else + vec.dest_sgl = NULL; if (rte_cryptodev_raw_enqueue_burst(ctx, &vec, ofs, (void **)&op, &enqueue_status) < 1) { @@ -8381,10 +8394,21 @@ test_pdcp_proto_SGL(int i, int oop, int to_trn_tbl[16]; int segs = 1; unsigned int trn_data = 0; + struct rte_cryptodev_info dev_info; + uint64_t feat_flags; struct rte_security_ctx *ctx = (struct rte_security_ctx *) rte_cryptodev_get_sec_ctx( ts_params->valid_devs[0]); + struct rte_mbuf *temp_mbuf; + + rte_cryptodev_info_get(ts_params->valid_devs[0], &dev_info); + feat_flags = dev_info.feature_flags; + if ((global_api_test_type == CRYPTODEV_RAW_API_TEST) && + (!(feat_flags & RTE_CRYPTODEV_FF_SYM_RAW_DP))) { + printf("Device does not support RAW data-path APIs.\n"); + return -ENOTSUP; + } /* Verify the capabilities */ struct rte_security_capability_idx sec_cap_idx; @@ -8568,8 +8592,23 @@ test_pdcp_proto_SGL(int i, int oop, ut_params->op->sym->m_dst = ut_params->obuf; /* Process crypto operation */ - if (process_crypto_request(ts_params->valid_devs[0], ut_params->op) - == NULL) { + temp_mbuf = ut_params->op->sym->m_src; + if (global_api_test_type == CRYPTODEV_RAW_API_TEST) { + /* filling lengths */ + while (temp_mbuf) { + ut_params->op->sym->cipher.data.length + += temp_mbuf->pkt_len; + ut_params->op->sym->auth.data.length + += temp_mbuf->pkt_len; + temp_mbuf = temp_mbuf->next; + } + process_sym_raw_dp_op(ts_params->valid_devs[0], 0, + ut_params->op, 1, 1, 0, 0); + } else { + ut_params->op = process_crypto_request(ts_params->valid_devs[0], + ut_params->op); + } + if (ut_params->op == NULL) { printf("TestCase %s()-%d line %d failed %s: ", __func__, i, __LINE__, "failed to process sym crypto op"); @@ -10450,6 +10489,7 @@ test_authenticated_encryption_oop(const struct aead_test_data *tdata) int retval; uint8_t *ciphertext, *auth_tag; uint16_t plaintext_pad_len; + struct rte_cryptodev_info dev_info; /* Verify the capabilities */ struct rte_cryptodev_sym_capability_idx cap_idx; @@ -10459,7 +10499,11 @@ test_authenticated_encryption_oop(const struct aead_test_data *tdata) &cap_idx) == NULL) return TEST_SKIPPED; - if (global_api_test_type == CRYPTODEV_RAW_API_TEST) + rte_cryptodev_info_get(ts_params->valid_devs[0], &dev_info); + uint64_t feat_flags = dev_info.feature_flags; + + if ((global_api_test_type == CRYPTODEV_RAW_API_TEST) && + (!(feat_flags & RTE_CRYPTODEV_FF_SYM_RAW_DP))) return TEST_SKIPPED; /* not supported with CPU crypto */ @@ -10496,7 +10540,11 @@ test_authenticated_encryption_oop(const struct aead_test_data *tdata) ut_params->op->sym->m_dst = ut_params->obuf; /* Process crypto operation */ - TEST_ASSERT_NOT_NULL(process_crypto_request(ts_params->valid_devs[0], + if (global_api_test_type == CRYPTODEV_RAW_API_TEST) + process_sym_raw_dp_op(ts_params->valid_devs[0], 0, + ut_params->op, 0, 0, 0, 0); + else + TEST_ASSERT_NOT_NULL(process_crypto_request(ts_params->valid_devs[0], ut_params->op), "failed to process sym crypto op"); TEST_ASSERT_EQUAL(ut_params->op->status, RTE_CRYPTO_OP_STATUS_SUCCESS, @@ -10542,6 +10590,10 @@ test_authenticated_decryption_oop(const struct aead_test_data *tdata) int retval; uint8_t *plaintext; + struct rte_cryptodev_info dev_info; + + rte_cryptodev_info_get(ts_params->valid_devs[0], &dev_info); + uint64_t feat_flags = dev_info.feature_flags; /* Verify the capabilities */ struct rte_cryptodev_sym_capability_idx cap_idx; @@ -10556,6 +10608,12 @@ test_authenticated_decryption_oop(const struct aead_test_data *tdata) global_api_test_type == CRYPTODEV_RAW_API_TEST) return TEST_SKIPPED; + if ((global_api_test_type == CRYPTODEV_RAW_API_TEST) && + (!(feat_flags & RTE_CRYPTODEV_FF_SYM_RAW_DP))) { + printf("Device does not support RAW data-path APIs.\n"); + return TEST_SKIPPED; + } + /* Create AEAD session */ retval = create_aead_session(ts_params->valid_devs[0], tdata->algo, @@ -10586,7 +10644,11 @@ test_authenticated_decryption_oop(const struct aead_test_data *tdata) ut_params->op->sym->m_dst = ut_params->obuf; /* Process crypto operation */ - TEST_ASSERT_NOT_NULL(process_crypto_request(ts_params->valid_devs[0], + if (global_api_test_type == CRYPTODEV_RAW_API_TEST) + process_sym_raw_dp_op(ts_params->valid_devs[0], 0, + ut_params->op, 0, 0, 0, 0); + else + TEST_ASSERT_NOT_NULL(process_crypto_request(ts_params->valid_devs[0], ut_params->op), "failed to process sym crypto op"); TEST_ASSERT_EQUAL(ut_params->op->status, RTE_CRYPTO_OP_STATUS_SUCCESS, @@ -15434,6 +15496,46 @@ test_cryptodev_cn10k(void) return run_cryptodev_testsuite(RTE_STR(CRYPTODEV_NAME_CN10K_PMD)); } +static int +test_cryptodev_dpaa2_sec_raw_api(void) +{ + static const char *pmd_name = RTE_STR(CRYPTODEV_NAME_DPAA2_SEC_PMD); + int ret; + + ret = require_feature_flag(pmd_name, RTE_CRYPTODEV_FF_SYM_RAW_DP, + "RAW API"); + if (ret) + return ret; + + global_api_test_type = CRYPTODEV_RAW_API_TEST; + ret = run_cryptodev_testsuite(pmd_name); + global_api_test_type = CRYPTODEV_API_TEST; + + return ret; +} + +static int +test_cryptodev_dpaa_sec_raw_api(void) +{ + static const char *pmd_name = RTE_STR(CRYPTODEV_NAME_DPAA2_SEC_PMD); + int ret; + + ret = require_feature_flag(pmd_name, RTE_CRYPTODEV_FF_SYM_RAW_DP, + "RAW API"); + if (ret) + return ret; + + global_api_test_type = CRYPTODEV_RAW_API_TEST; + ret = run_cryptodev_testsuite(pmd_name); + global_api_test_type = CRYPTODEV_API_TEST; + + return ret; +} + +REGISTER_TEST_COMMAND(cryptodev_dpaa2_sec_raw_api_autotest, + test_cryptodev_dpaa2_sec_raw_api); +REGISTER_TEST_COMMAND(cryptodev_dpaa_sec_raw_api_autotest, + test_cryptodev_dpaa_sec_raw_api); REGISTER_TEST_COMMAND(cryptodev_qat_raw_api_autotest, test_cryptodev_qat_raw_api); REGISTER_TEST_COMMAND(cryptodev_qat_autotest, test_cryptodev_qat); From patchwork Wed Oct 13 19:00:32 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 101500 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 3090CA0C55; Wed, 13 Oct 2021 21:06:48 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id AD9E841272; Wed, 13 Oct 2021 21:05:37 +0200 (CEST) Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-eopbgr80078.outbound.protection.outlook.com [40.107.8.78]) by mails.dpdk.org (Postfix) with ESMTP id 9385E412AD for ; Wed, 13 Oct 2021 21:05:34 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UniB2RjW54iD24fGY3JR8AXmnP7LpJThu339jRprlFbgwrAErVhFz6hX9nQVcaaHcYmIvijO0xwi+JPVHOw4MqtupCRMX0OnaRF1yJX5nf6SteJc8H9R8LgDjq1pgMoH4D0Yev5iiiSCzYfZhJg6ZbZq0J0ZxQkK5BE5LV/KVXiq1QSjM3KD1A2/jfWDtqAPIQG9kC3EFSx8KjVz6lQeKowGSmZcWCZwDggxfBPXanp8oJ0E/xYBOu8JRmdy4INJ+azqR2jHuu9PLghlN632iHaKxL4AXT9QtyjIK+U/4sBLjYFIAWbhwGg7vJ+jJIgwniBohdSDubwGMgEy/AeWXA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Bsb7RaSB12hNW/Nu1/Mp+ovEPD3tQ09Ew74CnTYOyz0=; b=SDs1/PN1gvNXipuI5xAEaI5JK8mNNOh+l2NcqmhQ1TF6cLVZe+OIgvmBge18o8OKWyWHHP0apWkcHuENNO0G9jaKVHWi2HFc5kmHEiUYTK+tFmGQu0Ldu7F8RkKmOkYWsPACtRhP4ax/CQGn5KTt7glbeH1yLzJgIHCCBINO47cuaixvJnKjlrV+IxpReFnxEqWzZ1NkR3l1b+aoQwUc9KT6EfCPXyXf/cl70lyRvadR8wV4V4dz/RnfGq/urhDzgzRGCgdvF7MskYJ+Otc4HYN6eD/ifETiB/zg7mtH1/H5Uz3YqbpgmY2lg8DhAKcQ9SNtPnjNqcVodLUAC44OoQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Bsb7RaSB12hNW/Nu1/Mp+ovEPD3tQ09Ew74CnTYOyz0=; b=D5ca/FM0F201rghFLOAUKXfsRmoKPpUmpcBvTQhr03/M3kLx0vssF0Hp7+oSu9q0hT5/sWH1KZEZv0MvA3Jyv/tHuVLFtlRSFBuvzf969/YpLVy8lowQqyuMndeH3X+a+e1JbgWXHw+23MVnXDjhe0Y5u1F5POX+RqbxhzKQv2E= 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 DU2PR04MB8949.eurprd04.prod.outlook.com (2603:10a6:10:2e0::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.15; Wed, 13 Oct 2021 19:05:33 +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 19:05:33 +0000 From: Hemant Agrawal To: dev@dpdk.org, gakhil@marvell.com Cc: konstantin.ananyev@intel.com, roy.fan.zhang@intel.com, Gagandeep Singh Date: Thu, 14 Oct 2021 00:30:32 +0530 Message-Id: <20211013190032.2308-16-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211013190032.2308-1-hemant.agrawal@nxp.com> References: <20210907075957.28848-1-hemant.agrawal@nxp.com> <20211013190032.2308-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG2PR0302CA0011.apcprd03.prod.outlook.com (2603:1096:3:2::21) 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 SG2PR0302CA0011.apcprd03.prod.outlook.com (2603:1096:3:2::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.4 via Frontend Transport; Wed, 13 Oct 2021 19:05:31 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 97db0189-6070-45cf-1bc0-08d98e7c6ec2 X-MS-TrafficTypeDiagnostic: DU2PR04MB8949: 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: Yr2Zbqn5I0fQ6HQBg2/44h6MU8ufuw8+PTKN2K/wFFZWmLNOnESOQXKwreHHhAiLBYJbMnbe+fLDej86Bco4CKp/+ziO5W3PFscA1mm+PfmR1loe0KNXWUBxRG+zrwLYhvEbhikBRW/kNBLWtDYnCyptC3RzfVb1Gpu83QhyCLsAxebZUZw5Q8wJ9X5TiykzwCqVvFRs9TzEONtVqpvwcJXq7TZiA5BxJgvbO6TDCL5Et5A/igj7911DD6jmYEAE7LM85tvby0qR5rEAnqEsBtjBJHKdXOflYFv2K/6/bhc3lFAIyDyuQhs6g4oJF3DGMUOeNqtz7KZhD3bu6dw9sTohU/WjE3pP/87DtRD72UmxQfkH5iu5XkPKdKsctoPZaNcUSrPGKDlVpi711YwzfElc1eSaQu4k3SSuc1MNpElu2bCA46YgEKaWSjD0kauB5K3Wck503b1bYMRY3jpx38tTRIQmyfNuoyfOOFavKzwvrSvATqE06xigHBuG5lJnhI5cZfrG8e95oKzP4fJfFBWFiJ76T48+QYxLNjxkXLQy2vij4vuZf4sb4EhzWzGZwxGmbykDkTIaJqel5zod0xe0BQk72Gbc+6b7J5k+7el7wtUfepC/Ir6TVTbZYbJVuK6yS+NgwaT/gyNYaEPpxJv6A++XORIRAiHiplPntaLTJL9MstjHpRzdrWJdxLcCO+GbBlmXYcI9bAPMWpajbg== 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)(38350700002)(38100700002)(86362001)(316002)(186003)(8676002)(1076003)(26005)(6486002)(508600001)(36756003)(2616005)(956004)(83380400001)(5660300002)(6506007)(66946007)(4326008)(66476007)(6512007)(44832011)(8936002)(52116002)(66556008)(2906002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: D1OkJ5HkqWE3tyFAS5B1mBnRCtQwizTF2L1XJkxCvM3MgJ/yL6Pu5HjMkB/7UAAk6Fl0MDwLsO/V4J4JXeFIKMgqhcxZSnNpVMGf8Yy8yvTaAiUz0kmn6ou6C60nl2vYm7jkxKnDVwAgAhpZ/XtRfASjvWtASkeD10pLzuvkl1uzawdIEbBtMCM5Nq0KLtYm+xF3TWH/sKsseyfx0oA82pS98zZKyEv10wEKLWUDj4QX7h9/Eoi/TBVmD/j1yhyph1swQJ2oz9y7UJi8AmR2cvEmJmfKcqnKwB5/KfuB5pIxtMb6LScqf4OESRvZPf9TMxYLMMlW27gI/5jqPpHhGniU+69x22r1ztZAcUG5nXAy5mLkZ9txvAMlw2j7fJXRdWglgdeJeHKaJ4jYcVPHxigFtTp49AldVXjiDcrfVDi8xjh/NGBL5UAcSgZhj34eW0/ko/paST2Pk3oEezehI21n9h9vsNc9jQT16oU538N3lO1zfxoVaDtzu8HWzm2d8b2feGXnsFLzPos8fP1Si+8JhmhCWi6/FPOnO7+kTkHFJaI+QrQnW8y6WgYKLgye+cG/FXLSQKI9D6ABcfleH0F5mI+CCFgTAZtf3WSPLdSyffrzgC/4S4BW2CY9IjCkbNdSEl60J+rLPdkpkNyMFncCQQuQVswiOfU9KubhfQrr/DALJKKtLWvr83PTC6XVVmjV+9ImFzhKUFvGGcDbTfdj64ThFafPVJgSBvgwwcd608mLeE0+AEV6A5k7K0MddlN+8VB4y9Tqe53DNV+wmHLDF9MFZAEqzuDBrM4shbOz/IJv5sFe0hg8PgDnQRDeGY2TSm/BtxzNk6NW4YiVJweWJPsX20XNMALJF2mGMcDoRgyz2H9hjO+/N3KhYhiayX3D4yad2okKG5FSyLGfM2Yg3tQOO5fRaCdAB96nmPPihwfhiT1XzBJGJ4CQMRNhG5AhggaEpH89tWcx5OeZWHt+ym83rO9gVgGxB3Lk5psPHWcgAOxihKukuc3yu3HVf/YugZPA8hTc/t2FXUm15q+HvvhTqUa23ElbmzLeNKcpOPvqEw2fQCge+0vxg+tz2edh6O46gtyOYMuadUSxodAck4So416fUSqXAWk2ZliuKzGLTss3Uzti9Q2KRPXmYjEUoXIGJgVaI7sYjLNDq/sa/rcTRup1ys0prJMVnW34DIluWv99woqoYGpPOiWHtPixKejAZ/IS9Bt9t1NH4R/UT36UrAmS0HO32N3DXcHgWN7Bf87PstG9N9fb+kbGLZ1KWkBMWkKwk/WFxYUWJPhxA9n2SsZMOEB0itNBdFGNJSP2LdSTni8A6jz5WdsM X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 97db0189-6070-45cf-1bc0-08d98e7c6ec2 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Oct 2021 19:05:33.7189 (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: jJjK92G3yeYsl3KyeSjBpvS9jzRxd1Pqv5JZ5HqQlDSWtX5+OQIjfJ9RhSRyI+R378bJqv60weu/bkO4l999wg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8949 Subject: [dpdk-dev] [PATCH v4 15/15] test/crypto: add raw API support in 5G algos X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" This patch add support for RAW API testing with ZUC and SNOW test cases. Signed-off-by: Gagandeep Singh Signed-off-by: Hemant Agrawal --- app/test/test_cryptodev.c | 57 ++++++++++++++++++++++++++++++++++----- 1 file changed, 51 insertions(+), 6 deletions(-) diff --git a/app/test/test_cryptodev.c b/app/test/test_cryptodev.c index 73c64301f7..01af4cfbd2 100644 --- a/app/test/test_cryptodev.c +++ b/app/test/test_cryptodev.c @@ -379,6 +379,7 @@ process_sym_raw_dp_op(uint8_t dev_id, uint16_t qp_id, } op->status = (count == MAX_RAW_DEQUEUE_COUNT + 1 || ret_op != op || + ret_op->status == RTE_CRYPTO_OP_STATUS_ERROR || n_success < 1) ? RTE_CRYPTO_OP_STATUS_ERROR : RTE_CRYPTO_OP_STATUS_SUCCESS; @@ -4210,6 +4211,16 @@ test_snow3g_encryption_oop(const struct snow3g_test_data *tdata) int retval; unsigned plaintext_pad_len; unsigned plaintext_len; + struct rte_cryptodev_info dev_info; + + rte_cryptodev_info_get(ts_params->valid_devs[0], &dev_info); + uint64_t feat_flags = dev_info.feature_flags; + + if ((global_api_test_type == CRYPTODEV_RAW_API_TEST) && + (!(feat_flags & RTE_CRYPTODEV_FF_SYM_RAW_DP))) { + printf("Device does not support RAW data-path APIs.\n"); + return -ENOTSUP; + } /* Verify the capabilities */ struct rte_cryptodev_sym_capability_idx cap_idx; @@ -4265,7 +4276,11 @@ test_snow3g_encryption_oop(const struct snow3g_test_data *tdata) if (retval < 0) return retval; - ut_params->op = process_crypto_request(ts_params->valid_devs[0], + if (global_api_test_type == CRYPTODEV_RAW_API_TEST) + process_sym_raw_dp_op(ts_params->valid_devs[0], 0, + ut_params->op, 1, 0, 1, tdata->cipher_iv.len); + else + ut_params->op = process_crypto_request(ts_params->valid_devs[0], ut_params->op); TEST_ASSERT_NOT_NULL(ut_params->op, "failed to retrieve obuf"); @@ -4325,6 +4340,12 @@ test_snow3g_encryption_oop_sgl(const struct snow3g_test_data *tdata) return TEST_SKIPPED; } + if ((global_api_test_type == CRYPTODEV_RAW_API_TEST) && + (!(feat_flags & RTE_CRYPTODEV_FF_SYM_RAW_DP))) { + printf("Device does not support RAW data-path APIs.\n"); + return -ENOTSUP; + } + /* Create SNOW 3G session */ retval = create_wireless_algo_cipher_session(ts_params->valid_devs[0], RTE_CRYPTO_CIPHER_OP_ENCRYPT, @@ -4359,7 +4380,11 @@ test_snow3g_encryption_oop_sgl(const struct snow3g_test_data *tdata) if (retval < 0) return retval; - ut_params->op = process_crypto_request(ts_params->valid_devs[0], + if (global_api_test_type == CRYPTODEV_RAW_API_TEST) + process_sym_raw_dp_op(ts_params->valid_devs[0], 0, + ut_params->op, 1, 0, 1, tdata->cipher_iv.len); + else + ut_params->op = process_crypto_request(ts_params->valid_devs[0], ut_params->op); TEST_ASSERT_NOT_NULL(ut_params->op, "failed to retrieve obuf"); @@ -4486,7 +4511,11 @@ test_snow3g_encryption_offset_oop(const struct snow3g_test_data *tdata) if (retval < 0) return retval; - ut_params->op = process_crypto_request(ts_params->valid_devs[0], + if (global_api_test_type == CRYPTODEV_RAW_API_TEST) + process_sym_raw_dp_op(ts_params->valid_devs[0], 0, + ut_params->op, 1, 0, 1, tdata->cipher_iv.len); + else + ut_params->op = process_crypto_request(ts_params->valid_devs[0], ut_params->op); TEST_ASSERT_NOT_NULL(ut_params->op, "failed to retrieve obuf"); @@ -4617,7 +4646,16 @@ static int test_snow3g_decryption_oop(const struct snow3g_test_data *tdata) uint8_t *plaintext, *ciphertext; unsigned ciphertext_pad_len; unsigned ciphertext_len; + struct rte_cryptodev_info dev_info; + + rte_cryptodev_info_get(ts_params->valid_devs[0], &dev_info); + uint64_t feat_flags = dev_info.feature_flags; + if ((global_api_test_type == CRYPTODEV_RAW_API_TEST) && + (!(feat_flags & RTE_CRYPTODEV_FF_SYM_RAW_DP))) { + printf("Device does not support RAW data-path APIs.\n"); + return -ENOTSUP; + } /* Verify the capabilities */ struct rte_cryptodev_sym_capability_idx cap_idx; cap_idx.type = RTE_CRYPTO_SYM_XFORM_CIPHER; @@ -4675,7 +4713,11 @@ static int test_snow3g_decryption_oop(const struct snow3g_test_data *tdata) if (retval < 0) return retval; - ut_params->op = process_crypto_request(ts_params->valid_devs[0], + if (global_api_test_type == CRYPTODEV_RAW_API_TEST) + process_sym_raw_dp_op(ts_params->valid_devs[0], 0, + ut_params->op, 1, 0, 1, tdata->cipher_iv.len); + else + ut_params->op = process_crypto_request(ts_params->valid_devs[0], ut_params->op); TEST_ASSERT_NOT_NULL(ut_params->op, "failed to retrieve obuf"); ut_params->obuf = ut_params->op->sym->m_dst; @@ -12997,10 +13039,13 @@ test_authentication_verify_fail_when_data_corruption( else { ut_params->op = process_crypto_request(ts_params->valid_devs[0], ut_params->op); - TEST_ASSERT_NULL(ut_params->op, "authentication not failed"); } + if (ut_params->op == NULL) + return 0; + else if (ut_params->op->status != RTE_CRYPTO_OP_STATUS_SUCCESS) + return 0; - return 0; + return -1; } static int