From patchwork Tue Sep 7 07:59:43 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 98126 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 DE62DA0C41; Tue, 7 Sep 2021 10:04:08 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 32B2B41142; Tue, 7 Sep 2021 10:03:52 +0200 (CEST) Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-eopbgr140079.outbound.protection.outlook.com [40.107.14.79]) by mails.dpdk.org (Postfix) with ESMTP id AC53D41141 for ; Tue, 7 Sep 2021 10:03:50 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GI/tqxYgFlnw3rPF3CmTnrweL+4ZxlFJDFLhkuiC6gxxUlzMPBp8I8v+HauE3AoOyHqpdNiBI47cq3CmNeeKPQX+3cPZPbp3f0pF03CL28Vbov8LgdwHeOAglEVdhmJAkBZJDK8FxKxTNA8xlQeu8gUcXEyHmx9l7H7tKkBUQZ1aUAp2jp6cycFw5X7D6WDRC/8i7i8FOvEdlRajrBYcyYf84XaKOGKUMADe+Y0D8NZkRrEeUWICby1pSj8FReUl9KUxfAfIKIKsHVUuLtIPAPUpw8UfIx03gjKp/fOqpI9cCpTsnMqCvYwiKLgTW378ApUd7jhRi8j8LunrDtV52A== 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; bh=fTGHYKayBaZw9BJdUq1L8OtwGFTw8RexvlpcCP+RYhQ=; b=cqgl0MetAaG+FC+tB/qG5Nd8KsV6PSNjQXgmgh125r/8zHIjgXRwSYktoa5w6xTE/GTtO8G4uh7G4pCnW/9Mfj8+IuQBg7t3D4gJ3sFuIwu2Iy77C4Nxid9ROzuAoliWx5n4VFd1C2yerQb8t/xGk8HyU7MyhagMBoWkgtVVh3VMW17CQvVBIRcS1EjmAp9x4OfkbSIg3mcGC3xi395iFWb+8B3/gJnQ1G55vGNf9l/siYBm9T15nrIrFISqumkL32GqngWbrEm+wS3S2WS93DEkO7Yxrtd7c2fhcj3jSDaxirj7h8Gy2sCQ7yFzP1v4LPzUF+Ys185nXn3xtAyZBg== 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=fTGHYKayBaZw9BJdUq1L8OtwGFTw8RexvlpcCP+RYhQ=; b=f4OLD3KqX29bHqCirLMu0b4ZqOsQMD1EwdUVpQyGSih3POyuJ/qYLc1S4m/wb2RX6CE6V4K+GzdYgsGp4UlE1lURWNpZ0HvK3W7GBX7qhoGtFSD1YyJ4vaZFoRLI3K3wPR/qnY1QfUumwan6ORetzBzR+KEGjVfKEpdZBKDLj2g= 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 DU2PR04MB8551.eurprd04.prod.outlook.com (2603:10a6:10:2d6::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4478.17; Tue, 7 Sep 2021 08:03:49 +0000 Received: from DU2PR04MB8630.eurprd04.prod.outlook.com ([fe80::945d:e362:712d:1b80]) by DU2PR04MB8630.eurprd04.prod.outlook.com ([fe80::945d:e362:712d:1b80%4]) with mapi id 15.20.4478.025; Tue, 7 Sep 2021 08:03:49 +0000 From: Hemant Agrawal To: dev@dpdk.org, gakhil@marvell.com Cc: konstantin.ananyev@intel.com, roy.fan.zhang@intel.com Date: Tue, 7 Sep 2021 13:29:43 +0530 Message-Id: <20210907075957.28848-2-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210907075957.28848-1-hemant.agrawal@nxp.com> References: <20210825071510.7913-1-hemant.agrawal@nxp.com> <20210907075957.28848-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG2PR02CA0068.apcprd02.prod.outlook.com (2603:1096:4:54::32) To DU2PR04MB8630.eurprd04.prod.outlook.com (2603:10a6:10:2dd::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from dpdk-xeon.ap.freescale.net (92.120.0.67) by SG2PR02CA0068.apcprd02.prod.outlook.com (2603:1096:4:54::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4478.19 via Frontend Transport; Tue, 7 Sep 2021 08:03:48 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: bf205337-6124-42e3-a3af-08d971d60688 X-MS-TrafficTypeDiagnostic: DU2PR04MB8551: 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: S3uNL9PzxkjWlYOh/qgL1bV7+jvNk7FDIkHdqwivHNSpqQCtVvhtluz6EdAy1o87US9jnr1E7vN0ZoMSH9Mcj3bewss8jXbzKRJjoTxqxcLcj563PHxc1UpFjOKBYlTxAxTpIOceTO9ZMX+rD99RoXvPspbWzKQ0YxE4Mts/PIzZsMXanC1ZIk/0k9Z2x7VkdCgfxU7K4iq9Ja4d+NIiYOFXVGn20xA8vE+1nFDevwnj4KBStNjdkU299/blTShBd6MjnReHyI/4Fk9Tf7BPhxqpsH2CFgbT3WTDsFX3UGdMKNwddaeTlBh4vG4tAWXMeEgMzhWdA1JwVu6HEVa7tgiSKhvPN6u3kLV08Od2LY/4ynRbm1Ic9upjfDFipIgM6d984wkjuPWd/k3o90M3B65wGxLYIdxe/4gBi5CTZQH3fi4HwlcIsFRZPlMz0us1P3izn8S5mUR05urwtYH2prxPtYj8NAU8GExUjBHB0F+35NwNIQGwxEj7F/WSnGrpxEr5EQtf5msv98HeP2qf3w+QgejX8GuYsahcQt2T2DdFio73D4JcJd217dcNP0rl3fViNCmorUsoFFzPzbfZ//Owa75zqsd8uPWKelQ+mI4GWu654+UhMWj4TnAsqD/hfyHCMM3Cu8/pYNv8i+pkMlYjgcB9dcCG36m6CvrSZ795K41TB7ziuU2oEAx2+9NPmYZc4i33jiGV6KAVWhGlgA== 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)(346002)(39860400002)(376002)(366004)(136003)(396003)(36756003)(38350700002)(6666004)(52116002)(8676002)(38100700002)(6486002)(956004)(2616005)(6506007)(5660300002)(66946007)(66476007)(83380400001)(2906002)(6512007)(316002)(26005)(186003)(86362001)(66556008)(4326008)(478600001)(1076003)(44832011)(8936002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 8PJbpIA6Y9Xoob/RizBgrnaSFunp/w2sRkpcAB0plwKpUt6LZwEqzMbD4h3MBs/fymRbUKPOPTBYNnx2B6JyevyPBnOX34Cfh+im5D+C3lUePrPQeRe67xj57udrpW1zRJELwP77lk6lvYUkfI1j9McDOSkAG4Qo1jzpYoRP+xxc8F1KPROXniI8LKE+awd0FiDhGXFFldcqvv4oKDK8zjDeRkd1blMMQZDedNQ1ksaWKof97pERUzn0T+R1qGOnEjdEa+CFva/FB20z8tYOiasY0A731y2DC0iX0OqnYKWG/Kp8xyL6ALPp9tgyULOxMQ+8vAyZGd8aJvcA/pr9mvEXLn+zaxS9cf6JwS0qUGWDrt/fmYal8ycFHJW4l2CxZ2yUW5nc7aZXhM2Ev5TCCbXNgY1uMmJXrgUC/hl3b8Bns5ePh37H004JZ1Ve4466tQEbdnpl1CygbhPIK0cGfJTZt0D01BYJjrwEEeKPthGk6+n9FnDgif+OhQ9b+HQ8qDx6euiQH0ABkBBAi/LpzxMTTNlFnKYSi4kfBz59sokqYmiYoAwAzP/DwoYj61hVfr2MxgjOKMk9+Fu+wDnEOHjDfB65EyT7JICD6n8kvWr3nU0yKXz3nHgYsayUlTKYVUj2cHVSABLaV+NmWiK2Mse5uK1hjQnfrwylzfa6Y0nUMoJKUIkNUhgknCU45chgkTebjp3eWNALEyviT9SEET2Z5Uk8zNpkYlT6+SvCNenOKkmfRZTsBoGJVUswNtFP2TGiZUcw+IPyA7moktwcC3uMZObwhIxgqMQb6SiJkNQJcFExnNNvIQPXD6oTqer4YV/PF8gt+sXdnO5z/vUnJ8y6LwwIyZrEzMfHZ8+1iopovKvkozOAYoJ+nBKAFOkTufVvkoUAdYJJytLSF4zD4MDYCDNAladeMM3iSgyTNgZrZRSCme5u4y5aqh1KSfoYFDcoV6C15CmnLgiEBLsNyqkjll9kGgTTjQrbGRzc52bDCHxQG1b9fIsVm076U7af2+GaYO5NtfH2LPsMO9vwVbx530Op0MwSWshecIPC/reJIZgqvGzn59nzPxLBAAOeXD1x+CoZfzjUN4cYDVAit5Yc8j410IcEL9evJ+TOhCTpitV6sgGSHc0asJRI2maJdepU1YCPOs6RdC8wWi167ajTNnh1KLnD/bERHjtIiQlu3ndnf00Lax9qc4zNAHN1HoIpC0AlTzI3eTWzu7DefoY/3KG5urTQosNdQqVV6tJxB2MVRTuTthv5nLUzQp1L0LLmToljFOiVkJhRcuHHuuTZ8V7Vc/qr6ne7K/Ura3CGGhCsgTfs/W8sRAZQa0x8 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: bf205337-6124-42e3-a3af-08d971d60688 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Sep 2021 08:03:49.8195 (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: bj9J3tyUoXZjZeueQSHb0zLZRRRDOGLn78RS9I88b7RsT6NwLy6LH4CThYMhg4gJOPplV/AiEn0KNkLsv5AfBA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8551 Subject: [dpdk-dev] [PATCH v2 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 843d07ba37..ed63524edc 100644 --- a/app/test/test_cryptodev.c +++ b/app/test/test_cryptodev.c @@ -221,7 +221,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; @@ -385,7 +385,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; @@ -431,7 +431,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 886e2a5aaa..5fbb9b79f8 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 a01c826a3c..1b05099446 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 ac9ac05363..4870ebf66a 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 Tue Sep 7 07:59:44 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 98127 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 6F9D2A0C41; Tue, 7 Sep 2021 10:04:18 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id A56E941145; Tue, 7 Sep 2021 10:03:55 +0200 (CEST) Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2080.outbound.protection.outlook.com [40.107.21.80]) by mails.dpdk.org (Postfix) with ESMTP id 8421A4114C for ; Tue, 7 Sep 2021 10:03:53 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=f62JmamteUkI1RA66Kw0e+I6KH+de+aQH+3/ecaaFusJGTUADC5ZQ9Q5nTxMLawSknfGp0MW8gNcVanP+i7O4riVOowpCjQX8xr0rgbkoAZ/H+3xrt7gDZkUE/0sqFWA6phuS6g6z2KVCAC8I0mSZu5JY7upo2GtNhr/vrBqSxjqOd6JgPYxeljdjTKQfvqB7OteFeRuY7mZQmAW9cxyr3mas/AssDXKEbEX7bSkPeoAGdFIh7hj9X7Gx/Fu8r9HBLPPDf2N5kwP8hDop5K4BLjEoN2sqh/jkjYXjfmsqk9BLh27dO/UD3Ueg3QrdgHKqE/t43fXGWGUYWsCR/TWdQ== 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; bh=OJhjpqS5isWA1V0dAOumUskQMlOSWfQ1VOyUDLYsNFI=; b=mZW8NclmQPYdWPIBNJ+THPEJI6yDg/vc3igiGMeo0HFgjZMH5yLnEWWvH+uS1eLNiKsZXtUf90z1bE893VBjkX6XuoeKFSnWG2Ysucmfq7ApT1+c20ehsG1zoTZdEMMxJykZXfmWlhHTTgtNtmfbc0Cg4Y/+l9LCAAi7jVf5fvrRiUrXvZiE1V8MhIXeQHebPiaLTYdaNfF481IxuGmouVKADTB1N33bNHS6ubgkw07ntWcl7jPxuAvQ77DIHZoIwx5soKCPTWRpAbMubV+HUXEhTtShT2bgev6r1F76lV2Ula6+JJm3ME+S3L8hDe0Mp5L+ZuqR4N+c0ZuS5uGGFQ== 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=OJhjpqS5isWA1V0dAOumUskQMlOSWfQ1VOyUDLYsNFI=; b=Zn7eo+259XFckAeZfRx6a4QSA0+Zgo7WfKOerRWeIJCs4ooYyyc2POT8mHq8htV9McGfyBedr/sge8QJ9UMJs7aroD2i8sc57IJZWIOaaJhzUzd47qV/OzD9IuJOXew+5bt/2bpCWdI2ai0RpJFte2Qt+b+bNawT2WoaQoXM++s= 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 DU2PR04MB8709.eurprd04.prod.outlook.com (2603:10a6:10:2dc::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4500.14; Tue, 7 Sep 2021 08:03:52 +0000 Received: from DU2PR04MB8630.eurprd04.prod.outlook.com ([fe80::945d:e362:712d:1b80]) by DU2PR04MB8630.eurprd04.prod.outlook.com ([fe80::945d:e362:712d:1b80%4]) with mapi id 15.20.4478.025; Tue, 7 Sep 2021 08:03:52 +0000 From: Hemant Agrawal To: dev@dpdk.org, gakhil@marvell.com Cc: konstantin.ananyev@intel.com, roy.fan.zhang@intel.com, Gagandeep Singh Date: Tue, 7 Sep 2021 13:29:44 +0530 Message-Id: <20210907075957.28848-3-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210907075957.28848-1-hemant.agrawal@nxp.com> References: <20210825071510.7913-1-hemant.agrawal@nxp.com> <20210907075957.28848-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG2PR02CA0068.apcprd02.prod.outlook.com (2603:1096:4:54::32) To DU2PR04MB8630.eurprd04.prod.outlook.com (2603:10a6:10:2dd::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from dpdk-xeon.ap.freescale.net (92.120.0.67) by SG2PR02CA0068.apcprd02.prod.outlook.com (2603:1096:4:54::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4478.19 via Frontend Transport; Tue, 7 Sep 2021 08:03:50 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 19e5229b-7b23-4e87-9963-08d971d607e5 X-MS-TrafficTypeDiagnostic: DU2PR04MB8709: 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: nPBtReWSC+uMgKHexjZRf7MVvXimXh+H1o28gP3IrygkDcg73ecgFZfH9Y2qKRz5pmuul9dnLXnrpY4VBODr2dFlrKPGr+pOQtHgOuuxvBi5+k64ffC7bHyrs0MvE0wItQzNGGY2PjiYXAkZzyM7y9N4bXtjF+9hyH1yCyyp19gEnjbc++i8tXBImQwaasGDVusH8vRPZa2nvsQ8wsMzQVQmH3/i5ZnwgEk6bLi1AvA2BFHyrtVTa9M9N9FfkyhzhVh1YYDVPN6w6x2u93r8RTl8KTjyKrsj+4YdCITEZSLLpvpWNo22qJ5M13R6dicNnfTXV7XNvlrxINSaqMX6HXDGHpLkVIeR/JTk1f1n++sbImrVjXFrf+MuFdSgUawUlORAJk3yIt6olmcYXO6X6Pu1K1HkjMhkH4Who+9bk5Gl1C0/j8j60AMtszY44l0KelJ3jc3brd+S9u6BO0IBkg1ZudlD7pllQgIVfCrupt0SUiKPm5YZLmTvIR+KFKFzhB6ov3msX6RO3xkfBy4XX0bxrt+ScpkCLtbu6Zf84oTT0R/gBWM6b4XhUPBcgOCDkv0sCIgKFd50aro/+GFMM4MvEWXHxO8Z1uqOGrBN0Y3HdizyzlrF0Of3t3I5ic7frQmk+TiE37hqAktwpiTsYbkJy9zz780488VFdu2mZC9HA7v7oJuevUASJRKFLW60elZ92Kkk0h7TqZUIXPlbHg== 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)(136003)(39860400002)(366004)(396003)(346002)(376002)(2906002)(956004)(2616005)(86362001)(83380400001)(478600001)(316002)(6512007)(4326008)(52116002)(1076003)(5660300002)(38100700002)(6666004)(38350700002)(36756003)(186003)(26005)(44832011)(66946007)(6486002)(6506007)(66476007)(66556008)(8936002)(8676002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: mqDPQxYsrnfs9o2dliNzEXRdt2YvWwYO6+RFM3kvwaYQ79QT7TDf2J7oK78A3l5K3y2PRVH3lJvQpJ8d2EzJ+b3QpwrsphBBDFYDcf8d812vlfVkJun7CAjCEikhTJ1a+GecT9O+picyPN+tiJcdoEU24Tik0IkZg8F+1uqsETtH8qi+FwiaqmP9hGxkOYnLvYGv9SVT1wmh/28btp5yq3FTMoOuN8AP+662hZWhIjFugYyjv5lzuLjmnHsP/8GQ6vIQC2ntOBjFfGcuOd9JhCC5lP72/lEAvuvF4gus0ydowfw1qwL8XWzwBlWaxaluj4hk1MlfaF+kXjDzZws7TvAGZrsRcUYB9UTzCsJE8R+8n1vMcuBELDRGC5qMMmT6oSbUlTr7JOj+P+MgcDc7JJb5ySjghWeprUnIkIcbFF/PY8x2yV0YBf9es/mtrQIqKqGUGQ7KpsFU8rL1FiT9ev2/EZYuivR8c5pqBgay3A2fWQEcmNo1YSiC8Zudf+uQErqkvJCZPmU5nV7MVlzv7LJy3DOkc/tTbLh69WbfAvsGvpwCak/7+37ts70JEz92aky8uNAzp61VN1DT6J0Cua3Bgm0SiGkbLlE473mvq7oXthAT4A+jRZBFGxo3Q5/rdk7RY0ml1yqcX7mPiPBkd+2S2zFtbB9O4ycNxJxYx8yV2HIEjs3aV0jwVhBavLIkz6n7izTtVHhvU9nfP41Z5QC1Db971jbGW/ZaHJCHEC0lBTxYFBJOLeQrk10Nmw8tfDXavTNmA49kB/0SMZ9CXwSj6Rn8Rf6/qKuYNA6AHROkhXRSTH3KT3zqnfkYLxq5qaAWoAhTuk2PF0l77a6yyrK5mkUefkaVuT1eKcfY+tyUvNURW2cO3QKDc11H5TUxQSHlpvQNfgJqFZDz8LY0tIcqitwoM88zuCsjzf9iaz1ByNPgLk/JmI6UYi9ZIY7rgfZIT7cgf1OgvHmybD2DFE0LfF/VmGyyxccZGFJupedtd4xIJw2S5uvd1+DEPljJGFAkFOUJ2EzqYqstFInsxxA2p3kPV1QwxHoxmqCCuTt2fj3oMwRp1uFESbip9snjnzdw0oOFSQ2kgAwEKVK6T+89TInR0WYsKCVOaotg5pmCTj31+eOnj+YXrSUCpvp4EysLdp9KVWTrYotRmSFVtWWThrIl6XKM3TVRgNMQOOj7CKpvhyzsJSGs1IuONBWx6OBkFw2ryGqAoZTg1G2IT5nYSPaxIve00QZyE69kRXW0Yd1pN1qSI3icv7MtNtsYEm5fLbZRfOEp5yCPcAlnHx/2gyWwuY6/3Yb3tjnp9u3XhtW9bHGTH4nd7ZL7GK/P X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 19e5229b-7b23-4e87-9963-08d971d607e5 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Sep 2021 08:03:52.1731 (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: rniDgrdewpyOklLnIbn/feh30pkiRqLvsFL5wu+8sY18yvRCHRDw7nG+rL8EtSe0IY5QIMKHknZbvswC3UYGhA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8709 Subject: [dpdk-dev] [PATCH v2 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 --- lib/cryptodev/rte_crypto_sym.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/cryptodev/rte_crypto_sym.h b/lib/cryptodev/rte_crypto_sym.h index dcc0bd5933..e5cef1fb72 100644 --- a/lib/cryptodev/rte_crypto_sym.h +++ b/lib/cryptodev/rte_crypto_sym.h @@ -37,6 +37,8 @@ struct rte_crypto_vec { rte_iova_t iova; /** length of the data buffer */ uint32_t len; + /** total buffer length*/ + uint32_t tot_len; }; /** @@ -980,12 +982,14 @@ rte_crypto_mbuf_to_vec(const struct rte_mbuf *mb, uint32_t ofs, uint32_t len, seglen = mb->data_len - ofs; if (len <= seglen) { vec[0].len = len; + vec[0].tot_len = mb->buf_len; return 1; } /* data spread across segments */ vec[0].len = seglen; left = len - seglen; + vec[0].tot_len = mb->buf_len; for (i = 1, nseg = mb->next; nseg != NULL; nseg = nseg->next, i++) { vec[i].base = rte_pktmbuf_mtod(nseg, void *); @@ -995,6 +999,7 @@ rte_crypto_mbuf_to_vec(const struct rte_mbuf *mb, uint32_t ofs, uint32_t len, if (left <= seglen) { /* whole requested data is completed */ vec[i].len = left; + vec[i].tot_len = mb->buf_len; left = 0; break; } @@ -1002,6 +1007,7 @@ rte_crypto_mbuf_to_vec(const struct rte_mbuf *mb, uint32_t ofs, uint32_t len, /* use whole segment */ vec[i].len = seglen; left -= seglen; + vec[i].tot_len = mb->buf_len; } RTE_ASSERT(left == 0); From patchwork Tue Sep 7 07:59:45 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 98128 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 75394A0C41; Tue, 7 Sep 2021 10:04:25 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id DB72B4113B; Tue, 7 Sep 2021 10:03:58 +0200 (CEST) Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2044.outbound.protection.outlook.com [40.107.20.44]) by mails.dpdk.org (Postfix) with ESMTP id EFB414111D for ; Tue, 7 Sep 2021 10:03:57 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NcJidksBBT2nto9CuP10gOWt4F7rPikrJUFcN7bW2wBzvnYRwfZsRADOkcgiZHbHN47Fwt6D9ee0pmRUN/Hpd72Djj8jyYyiMSmPfgbbC6d7ylZbQyhDnCLieVuiZ6HIo/ERLwXHJ221ij9/B5obvUW/oe09auygVaMJT6hzs1aRr7RBwQLFYM2pOb2lrKHr3rFzqoivRZ4V6wnxHwbPIM+OZcVWuBaTjYsctNRD99yPyATU5ZadekyvyG9kGaZwC1bPQYE/UHOLceD6O6/lHsSNBzvPRgdT/3htHU0mLT8dEEY2Xi+7KY/KK41RYrjg1up5IB6e7Pe7/tJvFbZMBA== 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; bh=4ZLIZn5l8Y/k2Axp7hKaOqh9ErkFBOHeGdv7HO6mMRs=; b=BDRkp8JGtQdLF2HJXnSWjh+SQ5rt21JDviJUqPlSSapEPl4ZzFp6fSlTX5tCf2pe44mTrDUPhaZNbzm5/gzEpmT+ONP5W/b9mCae6/wMCzlzRMv+zwOLUYVwPmhMk0LG/MrF2a6BignoM+qGZ/w+jHAH8uABMGKAAseLeyU5N6U9wyeS1RJ0eVx8uGIBSrMK+9L4wkcy3bhdlMaAomcTLgD0TejGQCixabapFniwPuuCUYghMBadq2a55TvTujCxMvY+E8/E4UKmL9vXivKnOHSskMsMUhf//mqFortSftKXu2u6eX8hYbke7OVV/uvp9z4B39B7Pcr6qe/Yd+053w== 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=4ZLIZn5l8Y/k2Axp7hKaOqh9ErkFBOHeGdv7HO6mMRs=; b=QEOT+kw6yNOPQWmELk9nStc+YmWgcku/bFLFFUIWKRrhAV6SXpQhQ7DK5PgcDj3CXYSVHmtUg1N3ZVFTvYhCxODNnPzMeNw1NcRGGqCVHfR7s2oTKvyi5JKSRSiF9uyMl76VZftC1DGrrayHCYr8QQKlIEJXSgg4QXTKkaWqdBI= 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 DU2PR04MB8709.eurprd04.prod.outlook.com (2603:10a6:10:2dc::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4500.14; Tue, 7 Sep 2021 08:03:54 +0000 Received: from DU2PR04MB8630.eurprd04.prod.outlook.com ([fe80::945d:e362:712d:1b80]) by DU2PR04MB8630.eurprd04.prod.outlook.com ([fe80::945d:e362:712d:1b80%4]) with mapi id 15.20.4478.025; Tue, 7 Sep 2021 08:03:54 +0000 From: Hemant Agrawal To: dev@dpdk.org, gakhil@marvell.com Cc: konstantin.ananyev@intel.com, roy.fan.zhang@intel.com Date: Tue, 7 Sep 2021 13:29:45 +0530 Message-Id: <20210907075957.28848-4-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210907075957.28848-1-hemant.agrawal@nxp.com> References: <20210825071510.7913-1-hemant.agrawal@nxp.com> <20210907075957.28848-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG2PR02CA0068.apcprd02.prod.outlook.com (2603:1096:4:54::32) To DU2PR04MB8630.eurprd04.prod.outlook.com (2603:10a6:10:2dd::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from dpdk-xeon.ap.freescale.net (92.120.0.67) by SG2PR02CA0068.apcprd02.prod.outlook.com (2603:1096:4:54::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4478.19 via Frontend Transport; Tue, 7 Sep 2021 08:03:52 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ccb42d44-3dde-4b8e-3337-08d971d60922 X-MS-TrafficTypeDiagnostic: DU2PR04MB8709: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:3968; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: IcbepOQBi9bFwKF1X4W2zDHYcWtvBSWo5DDt6WVhrhfTj5iZpjvniwvBm+QssyK1jnwTDAPEY6QUy/IhEyCeh/YH2il6T9mSchRA7Jp+5lXippndtkWzfXC3xHx/1HvRdDEzV4yjQ+Ozj3K6NM9JfqEAnpbSV/TP/jDuumDv90YnCBLZpheIco/pJl0g/iSBlYaBmC5v+qR12yQGhMPBp9z9IuJX73RZUZXryUfJXdmMwg8QEP+ihP7tuAAldPKpr90q1alXMiHeQE4GpC9bcYfeog/+Vqps1Xsj5U4xt8ePRFXQkQwcpQ0A6qRGnwXMmj4Fs6Ihsb1KDZVxeSnetZJdK2VZyIXhEUJcK6tjA1EfqX0/SHarSBgdV8GL1OwVx6tpxmXBMIgf8gHa6hXpIxCOLYLmTGZtQI/g8nGo73ocid/rUrVY/qISA3kJXv+ErdMEBzhkq0+BxTUuZnt5j2q6ogIPr2seqVEokI3WCE+4L+12d4dDnKXYvlY+2Hvf/GxKiV4Rc3w74NurJCeKgDJY4Xd4rP19sMosGvN009zfCwWdD557UkHFMkcbFscEwm+hBNaD+Ke6GmANkXQapJ76hGz9Cef5vaGllKK4EuPPCuAAIAgpeo7HQvE4qZ0eQ0kASXyzyieYnS7Dsn7yqkbTacZOiEiwLkhb5syWtaB6Q2wGcZBhtV5PkBporTCShPxI02mBqCvNMEAX8EcNiw== 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)(136003)(39860400002)(366004)(396003)(346002)(376002)(2906002)(956004)(2616005)(86362001)(83380400001)(478600001)(316002)(6512007)(4326008)(52116002)(1076003)(5660300002)(38100700002)(6666004)(38350700002)(36756003)(4744005)(186003)(26005)(44832011)(66946007)(6486002)(6506007)(66476007)(66556008)(8936002)(8676002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Tnf/cVpIJw4hxvnA0ntWhpqYunoIS7um+tI/Xec76aqn03eNirpfsMeqVToZjyDq+2XSQmrzufnMp5EHj9Qt5RtbRP8rO9futovaRUDIl2Nm5/aVCm+/WLJAkv1oA1UCxeGyqsn2o500ecD83kDK1WK+dkAuE8Qq7Kds2/TCTVQCvpaii4VRL/11wItsaoKY/32u2/LqDfwSZhC+GoiswRDpJmpBsmPg2oCXaatFfMwogNeFMROckrtU5VKQYOaPytz+5je+cz+QnjXfe/eDOxaXQW7qW6sFmSKr5OL3akgo+1JLGOmk5HSu4jGvTLcuPtXyEtC4vWpvjvlel+zDkQKtx+LhyDxcPnmIkd4Wdy/WT+OD9JKCgrIdr1EhPoe4lLtjHzE80hL0BJ36gNQDy1bF16qNmiek2ppy3iArnPRV6SCrUCX1VHL4FAspBlSTFB7HhvAovf5yhW6LThWIZ7PqZdZtpGmlHYuSy+8hdh0wjWCZLqvsKWWmq3E6JIrMRT9+SxhTe+5qzSxqP+m8FWyn6LcPn5VjxIKOHMyijEy95pNOep6ppZ3xdhGAq37+32QiL+v1zpWRNK62Aivvd0Rr5zXRyNcq2zpF98e+FGQDdXCdXn6ZjTUhfNKO88khL5nEhj/UxFNseYaOsIXvk3U6v6dWjX5XK7vDhdg5EVKwbfxsaqwuMFZQQPhYqnrKODSMw6C3IZlPTlm2ktfM7TyrLpOdL1Un+wkznSfO2K2X7x/KQkjF9dn7RncRLtPB2X1pIlZeYW47OKxqd459YG9UpTvlFBopjgNi0V+Vow/x/lMAP6gM6eBlpODs8Zb9sR1ayh/s/undsehdp7DVuSNQdR1R/ZDE6knr3jTX/YwpHy+9BjyXuSO7oHJ6FsBFCYAcpycem7vmPUOxCGqTY/PSC+YUdNj253oKphMOlUFQdYg0KyEtHnqKN1IaS0CihixMG9PErAfFY5kuM8whIY9DlIV85X3CIqVwmTdqTIbEzF8UchZCIUfOA6iK5VeT5NFOBOdhjsq2LOx80wYZKhQyBLWZBlV4wmgE6Kjn390sXIjxSYvFLCTWHFV4tl4EqZg4ri5DvneAGbBsgvW6st+zdtwE0zEHFaftqyfvYxfAMAI3tf/iiWcPEJGeDn/h+rbYswoV/t8Vu4BmYN51Savu8yq0hAGu7wN1B/fdDrDQ7U3WGt/7xoPZCm06xCe/RD3gC0c/VD+YZCEybLiT5DJfc6rbHWv5/2IlOL637AN0eDI8naMlChesBo8tark5ZTUDGF6kVYIkv16JFhOSeca7qlCtqAecu1mDwfgkuejWSRdTtfUORqfzlkDzLt32 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: ccb42d44-3dde-4b8e-3337-08d971d60922 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Sep 2021 08:03:54.3734 (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: pShCn+mvzgaq4o4vMUGCnQg7XM+BkopNAWM5H3dy4brOt1wrQPpAMDR6riEbX7ODuIJdUD8zwM2Pbt3cWwEK3g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8709 Subject: [dpdk-dev] [PATCH v2 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 --- lib/cryptodev/rte_crypto_sym.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/cryptodev/rte_crypto_sym.h b/lib/cryptodev/rte_crypto_sym.h index e5cef1fb72..978708845f 100644 --- a/lib/cryptodev/rte_crypto_sym.h +++ b/lib/cryptodev/rte_crypto_sym.h @@ -72,6 +72,8 @@ struct rte_crypto_sym_vec { uint32_t num; /** array of SGL vectors */ struct rte_crypto_sgl *src_sgl; + /** array of SGL vectors for OOP, keep it NULL for inplace*/ + struct rte_crypto_sgl *dest_sgl; /** array of pointers to cipher IV */ struct rte_crypto_va_iova_ptr *iv; /** array of pointers to digest */ From patchwork Tue Sep 7 07:59:46 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 98129 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 12F18A0C41; Tue, 7 Sep 2021 10:04:32 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 01B9041155; Tue, 7 Sep 2021 10:04:00 +0200 (CEST) Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2044.outbound.protection.outlook.com [40.107.20.44]) by mails.dpdk.org (Postfix) with ESMTP id 0899D4114F; Tue, 7 Sep 2021 10:03:58 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VZtggQHX2eeU3JBUWgaAMJP4Z1Y908Zil/haewh5IKFzDDWcY+N/Er4wKzcuS/DuyajtZzvmhoMwvTI+CDIcju/iPrJxAX54xMIvx6K3EMAMCEbIEFaeVZEpPQH9OdyOlCaBvEXe3ck8rwZzZIpQiaj/FMeQsgAW+0honZMLNpml4bwMreTtPN/J0ar89aVL6VMhc/D3hy+e24EnsZ1l756XAPQxf/EdiIXuFMTk9LzRhUK66vyQ33K5bEnDeWxAqLMjUja/rc3QBJe57d7WT/CxM3uVjXSmAQvi5x4pXf6K6+5TUVmjDog9u/3pUwhpga4LiYZNKAdg3vU0ggrAmg== 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; bh=3fV331TZzSriimeXyPguybwCyUI5AMS3g+uO0tgL16Q=; b=N3Ew3gBhjX71H+2mCom4bvFn6lag0Kyh/Vb3PnXmt59oIAM+tMrFmY4ZWnx0OaC6CMQVMHQ4DBK2rAdHBpJIYf22kCf+BGnLL6vegXA5DE12a1VH0MZ8wJSwFilgRSwzfT2o0RWikDCoLV/nQzKRB5FR9eEnH8g22ySlBvg+M6qu602s4yCvUYYxKjv5xokn/+d49bKChH+0Yw9l5JD3u41v8iP5rO/tMproP/JaLCfT70O6hZ2pIqsLI7Umfg+yS/S5aSpHiK9rHTlSxdFPFkkfsV5mekute758fUg39DgFd2UP6dRj5kkgpeWjz75y6Q1t2aHm6MgQA3Jc4it83w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=3fV331TZzSriimeXyPguybwCyUI5AMS3g+uO0tgL16Q=; b=oSaJ2wE+xjxdnq2izQp4uquyykEr9KAJ8V8mn/jgBP+0J3/+5/1C852PbN3gH/DK0tC3GANANs/YujkXX23r9W2MjepE105GAt+rGXUM0y5nNGSEU+bxQ0AP/9YQv16L4StMH7hWz//dSYmJKnLG6b/Dr/K9feVuo9FM1l7i8kE= 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 DU2PR04MB8709.eurprd04.prod.outlook.com (2603:10a6:10:2dc::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4500.14; Tue, 7 Sep 2021 08:03:57 +0000 Received: from DU2PR04MB8630.eurprd04.prod.outlook.com ([fe80::945d:e362:712d:1b80]) by DU2PR04MB8630.eurprd04.prod.outlook.com ([fe80::945d:e362:712d:1b80%4]) with mapi id 15.20.4478.025; Tue, 7 Sep 2021 08:03:57 +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: Tue, 7 Sep 2021 13:29:46 +0530 Message-Id: <20210907075957.28848-5-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210907075957.28848-1-hemant.agrawal@nxp.com> References: <20210825071510.7913-1-hemant.agrawal@nxp.com> <20210907075957.28848-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG2PR02CA0068.apcprd02.prod.outlook.com (2603:1096:4:54::32) To DU2PR04MB8630.eurprd04.prod.outlook.com (2603:10a6:10:2dd::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from dpdk-xeon.ap.freescale.net (92.120.0.67) by SG2PR02CA0068.apcprd02.prod.outlook.com (2603:1096:4:54::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4478.19 via Frontend Transport; Tue, 7 Sep 2021 08:03:54 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e9b79ed9-bbad-4f98-3c90-08d971d60ae0 X-MS-TrafficTypeDiagnostic: DU2PR04MB8709: 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: sqDabl02zk9OBXPpb3GwxkXnShT6HMxu4Ipv7DnzaNShnCYlksNOCaq044hCv4PDzjA7j59dZoQQa9dpwt5kHVN1Tpzi7829L9TeftFEhyVC0X7DKMnRnCDEiDjsp/uRDT1wSjnpo/sqIUH6nV8UQhpkLdCZ+9GQv/CJKgL65uCuof128FM9gluKR/O6fFx5TFcoyJ8PLNucHXk1fLk7PcoiYtXOQ/8Oj2zHCyeZVBNmXFOwmTslXCdGvm0Dp/GWg1gzO3YehBhww/fdVVn0CEtBVEu1FqZS20HPo7pLTxm4l95oRzTDc4Tff7THf88GtVAaTXHOiTb31Jh+fjLaeLExPHzmf3HGXaNgH7+2hDajFfUTVBflOzeRxLb63+ZQOouyPYzy2/FsRwLiYWRXHl5pynMHSjIaAe0VNfArR/agTlMjY7P4rdXZH2PhLlNbtSZhVrZnztKX1SyIfZCaiF87NNfPcLe5FwMFiDuYbmHFx4YHuPj59X2qRKpf50XvsprrTzjDhWlo8q2MmLCplNp5oEiAx+TfaFR3Qo2OcaBiOuCR412vQiA+pHbUdm4DDzFh4ZOnWZALhbIEF9RlGy3vnBtLX4B7LtB6qxsjjGJ+7NqP+1L6WBZOxt+ByS8yysOFks3oVunVvra0L/wjS6uUGYG7nl1OzPPq+r2zEkWbhyAB2dW3qYCIBBbVP/GQRjr+s2WK9VcSKRs6HMcfRw== 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)(136003)(39860400002)(366004)(396003)(346002)(376002)(2906002)(956004)(2616005)(86362001)(83380400001)(478600001)(316002)(6512007)(4326008)(52116002)(1076003)(5660300002)(38100700002)(6666004)(38350700002)(36756003)(4744005)(186003)(26005)(44832011)(66946007)(6486002)(6506007)(66476007)(66556008)(8936002)(8676002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?krjolHNZRw8y6hJ28POSG0Uf8w2E?= =?utf-8?q?VneGcAUt9071gfsawtlHaFWPTCoTnnLvnJysFT8eUy4+JxUBRA92Jqwnyv7r24pkz?= =?utf-8?q?fvJ5cKsgFTqUIatOpUWNs7Dxbpt9O2N13Kzk1voTx5iBw9FqVHcb/Ym1ZthPfE7+h?= =?utf-8?q?jrIj8Hg19IMMFoGSvmwm1nXai2SZL/GKmipZH0Fhl+mWp7VzS/1eOGBk0bqQdo4qF?= =?utf-8?q?jZmTH77YTbk3bgLo0ujvOl/WXM1zqHZyBIH7f82eWy04mGpl/EYVXtVturk0IopoQ?= =?utf-8?q?bnvnqPca5CfO0bU3PT1pxgBIF2lqGfP5Gky13IR6zTcqOyXgatOhl6TllQUkL6x/y?= =?utf-8?q?6wXcLxMMZyMKX5g/tM+4xIhcG1/8bCk6oTuVU+/tQzXklzugpNQAvYNIaeJcZkAe4?= =?utf-8?q?qKLncrCn4fBCv5hf+zoXbLtxmE6sGv30dUHLjQ6ctJHTtdrtT6IMRUESbNyCjyBjg?= =?utf-8?q?JKg3RU3Sx4mKmc0qxMlOK8zzOM7ClnZYVDM/0orLD3kjXScVns4IDB1O9CCHb7iHp?= =?utf-8?q?lBJtwHWQxgYdSqp2Q9XjU6iBtR6IsGrXJzmmsztdNycmUUoH+g/2gX6oV6kb38rNW?= =?utf-8?q?ev1EL40p7TAqx6KeOJrN4LoqPL+3KkmvpiXFldeg2va8N0INyxfSB0O8Y4ZLF8dYM?= =?utf-8?q?w1/YY9Xe0vwoAqwMh1/R483/9N/GndbevgZnW/e1+2yUte3NU2jp9WEml7Zfrfw00?= =?utf-8?q?nwPbITkFo4aSJui+lVQIFJ7Iy1AHsycc3d1NEcEtGOWDbqhLjQefamwEAR6PBH4b3?= =?utf-8?q?X5hMHCfYg4SvLMG/AEGpXTiIp/gv+neHLwhMUcufanr+TPbY0+StjolkCYw8kMgPa?= =?utf-8?q?wevZGxyd0doBns0sPsm30s92YshTztwQFuRouRkRndksbT+ogpjmC1GoaWUEQSXB0?= =?utf-8?q?FKFw9fk4I7m3ndVnbEye9Ocn+uu+J92m4/NeuLA3svelf/0mZhs22m9f14YarE21Z?= =?utf-8?q?lsgBx5oJ/aKwj3HHIazRQ7kHB3Us8mJfsW3XlJl4jgYjaQyLqWpuSI/YpSn93NsgW?= =?utf-8?q?xgjJ0n5u6n2aYEdLDaAnCos4a0CQIedv1Z4pBJLcrtM/9GnEH8D+1n1YEY+scgIXt?= =?utf-8?q?gcRit+KERyCqFOykpG5vN6WDNcspLkRXKTG24jNNsIrh3dCv24dpVBzCjEgdi3Mn2?= =?utf-8?q?OOjhOkxQAdUkSfTZyHc2x4uHtygyM1oDaMhjkSaeG7hdgDrhULPqw+s3DGo7xiAsq?= =?utf-8?q?y1CN/tuCcwL7X0fvDdVklzU0lexsHuNKBCJFVZLgL8hEYLtuRBb0PAG2GPmXcNlAt?= =?utf-8?q?PJSvkDlSsDKoTRJk?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: e9b79ed9-bbad-4f98-3c90-08d971d60ae0 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Sep 2021 08:03:57.2319 (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: FEQCTGJmRjspBUb8fF+0sAA2kv5XGfxSCBFLKDhnsalWV+VfcSXnssCjjB6drU+xnNHfA8592nKk9KCBFS5www== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8709 Subject: [dpdk-dev] [PATCH v2 04/15] crypto: fix raw process for multi-seg case X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Gagandeep Singh If no next segment available the “for” loop will fail and it still returns i+1 i.e. 2, which is wrong as it has filled only 1 buffer. Fixes: 7adf992fb9bf ("cryptodev: introduce CPU crypto API") Cc: marcinx.smoczynski@intel.com Cc: stable@dpdk.org Signed-off-by: Gagandeep Singh --- lib/cryptodev/rte_crypto_sym.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/cryptodev/rte_crypto_sym.h b/lib/cryptodev/rte_crypto_sym.h index 978708845f..a48228a646 100644 --- a/lib/cryptodev/rte_crypto_sym.h +++ b/lib/cryptodev/rte_crypto_sym.h @@ -1003,6 +1003,7 @@ rte_crypto_mbuf_to_vec(const struct rte_mbuf *mb, uint32_t ofs, uint32_t len, vec[i].len = left; vec[i].tot_len = mb->buf_len; left = 0; + i++; break; } @@ -1013,7 +1014,7 @@ rte_crypto_mbuf_to_vec(const struct rte_mbuf *mb, uint32_t ofs, uint32_t len, } RTE_ASSERT(left == 0); - return i + 1; + return i; } From patchwork Tue Sep 7 07:59:47 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 98130 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 96A9EA0C41; Tue, 7 Sep 2021 10:04:39 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3418741102; Tue, 7 Sep 2021 10:04:02 +0200 (CEST) Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-eopbgr140083.outbound.protection.outlook.com [40.107.14.83]) by mails.dpdk.org (Postfix) with ESMTP id EA40C41158 for ; Tue, 7 Sep 2021 10:04:00 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Hjj7vjnN/XE4qIPucs4S+lmTSIzfj2yEZOIY2EjHFMd4w82r3WmRfkV424e2H+rimCeTINE8y107dgh4CCN0e8BhJsBUcEXcT7bqGsuIXeKWtD87DfQUP6+LPP75SudM2UijBLKp1RdSnH1QyozBr+aGpERTCIAGx89eonYi+tqNjkwGN1f6dwWbkPNILF7m9l30se13M4RiIktXLw5qKg0MspCYsw9c+Vw+FTZ3T4U3+iloMBJrSXbT5jwCAXN+xflzTjstoXvNjOKgnVL+WkP3cqpa1ogyP41a7jY6xy4yAgM/LDY4NdUy7QGsf4G8RAekkdQk2vzzzpNSOe2B4Q== 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; bh=BzoxpcgPbQlyuwK5J8NfOCpWyKOPwF/t5zNK7+7ZZ2s=; b=AYzWr4d2w76u2YtopD55F61lRsKR0W8S7efTIVjZuEuQ5w0rxR4uNmydgFaDpWZA0ICICDCzoVbOyv/jRu/GP/wri8BOU5q1FjOzISXmPpnT1sClwtExPcZWl4BVqzr3Jh22qfW8m79tI7GuF7YVTuX4pCA47tRLvmPwx6Dne5jclWDtVrrut7/MUTbxnt9GL/RY9LWrdKP6WdJDrOwb+8rD+hmWjaGBOHeMavmpGGHabP38l21rId51qv3ahMTp/25bA/cw0mRAIuY7Uvh4jhX1wAFg+jHm6R2/Td5mMbvNDscZSaQiKq05ABZB2sV8qxJvI0ELRdvXaxftVsepkw== 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=BzoxpcgPbQlyuwK5J8NfOCpWyKOPwF/t5zNK7+7ZZ2s=; b=lH1ptv5It/aX1LjK5ZC/voPBMzZQL97k2LQ8eX29iNvOz3+dHyONRBDg2v5puyGuciHtH/mQkcEMYwpYAu7cE4A/B0C5RxlbyMoVSlDJK7HW7Oz/Mddlaw4Fwgt6Ghyq/vARXqx1ByNnyqDcY2X6axkBk4gVNsubD4empHJTswg= 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 DU2PR04MB8551.eurprd04.prod.outlook.com (2603:10a6:10:2d6::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4478.17; Tue, 7 Sep 2021 08:03:59 +0000 Received: from DU2PR04MB8630.eurprd04.prod.outlook.com ([fe80::945d:e362:712d:1b80]) by DU2PR04MB8630.eurprd04.prod.outlook.com ([fe80::945d:e362:712d:1b80%4]) with mapi id 15.20.4478.025; Tue, 7 Sep 2021 08:03:59 +0000 From: Hemant Agrawal To: dev@dpdk.org, gakhil@marvell.com Cc: konstantin.ananyev@intel.com, roy.fan.zhang@intel.com, Gagandeep Singh Date: Tue, 7 Sep 2021 13:29:47 +0530 Message-Id: <20210907075957.28848-6-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210907075957.28848-1-hemant.agrawal@nxp.com> References: <20210825071510.7913-1-hemant.agrawal@nxp.com> <20210907075957.28848-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG2PR02CA0068.apcprd02.prod.outlook.com (2603:1096:4:54::32) To DU2PR04MB8630.eurprd04.prod.outlook.com (2603:10a6:10:2dd::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from dpdk-xeon.ap.freescale.net (92.120.0.67) by SG2PR02CA0068.apcprd02.prod.outlook.com (2603:1096:4:54::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4478.19 via Frontend Transport; Tue, 7 Sep 2021 08:03:57 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c5a3c777-cadf-49d2-69da-08d971d60c4a X-MS-TrafficTypeDiagnostic: DU2PR04MB8551: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:4714; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: NTGG+49dKWIl+UQ20Rbj84CUPAmiaxvo5rtexDdxY22wLoNaunBdkEoZW4wZgR/vefDA+IRA32eqw3Cp08eXuPcfvSzUzWdthsQ6owi9mwSlVJjypVYb8vIBR4Ue/UdvTFqjpVRWb8pPwPGzB8HEHMgNmc6wtjORqPg3Vh4zpYLy++z9sOg2Hy5hhqxPqfrA8Xupzg53rWQfEynjrsrzLqVrn4zZPLkG6NUQ7BLWU3EOHMmZufOrSkC7VelDGHTmSOtpGsrXdT8O8W0oqdKdIKG4WpFg7zdEdkMnJBfG/TsRk1S5bYzCaHCbkjndFsvcyh4jTHCwo8jfgtwuWBQBSlW1JWQ4ElUEOAS93nfqoTMGF1lTqj5mxHSmfCznDpcL9qEnnR47x8NWYqVjTfWLyX/ldSqg/ZmiX/EeL9Pmv+utlBMLP03m+7IpXbzWLjjIU/X2btQFAW2XpybEGWUYzCos53ytuCMwhT1UQB+VA7yYIVXjYvmZggCqG87+PvzJnvQi02cNLS4IqmqPnEyjHUpis9OZWM6bNZzCIzLqGu7pqyP9cQap9byfkqHuItMozc0e5DK+oXD74GMigGrOvDjPygX7NsfPV85uFInTjm0bm44HerQfeGeKy6L/3MAd3Sj9WHGVOUx1+DyQ/ZQWRLQ8G9LOPAdQyzRkuMWfjOFD9bUY07QSCaqgqya/Kb4sf32EGgfdcUFBFsnBPi7YdQ== 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)(346002)(39860400002)(376002)(366004)(136003)(396003)(36756003)(38350700002)(6666004)(52116002)(8676002)(38100700002)(6486002)(956004)(2616005)(6506007)(5660300002)(66946007)(66476007)(83380400001)(2906002)(6512007)(316002)(30864003)(26005)(186003)(86362001)(66556008)(4326008)(478600001)(1076003)(44832011)(8936002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: kopzf4+8OftFEPJYgTezFKrd1lGtfGWaD2cwWtyk88x4TdU+T28WGacSYX0vBsFOkJk+7o+ByIyrGK/TXwg1q68Siijbui28ukvh3QsuD+0tnDvqzXYl0sdNxXx9Gt8w+HIzcZGERKw6JqpTfbeyKUqxt+2ZTtrr1DeKHCbeNhuNGdDq1UdNyNOl1v0QMIfHDyD7DcU9ZfB6DCySK5Qom0Kjg+pBXfVc29vtk8iAFtd2SG4NaBDgHcSdemBCkXgOwHKkK12QPVlghgf16zKmcIMVEP5obI6h7g4CR5C2svqtk6HaGPo0GPTmw1bzdRDKUvQvAsiAfUhaR9V0hyvj7tUFU0XpO4O2zE8RGcR4FgSgyfcZYlbeNPkr0lcR61l37Yb8nZDQ6LF1sR+Uu4yPhwzeBy7ssL339/YHEHQTmor3130UZd59QcN8lO05MJlj+nv7WUJ8i5mwJrX5CZk+TvU1VtBPLqmYsIEqHGwWmOyjHHqWGv96BGapFTwTaRFqrPc5wkgE+X/5WuisJZnk/xffYSmEJB/4X5kE1VF5TtCpsplwsVEawAk+DMdaJmPMhYtdJVCuWNmwsYWU4ZuWiB+/JpXdzKDjP7SK3hRILGls/b8F8mRWKm5Mt1qK8s9yfDB1j7vS7JB6VScTBPA5mdDIytAlTic6SNHFgTuCw3p6hrxTF0U/jBTaO/rHaSlHPEHLYpDXg6IWtKdZRpp3uoFEz7eo9mZkZFUgHBa63wdB0134FQptPNuH2ILLgSW3w5E/rgqVLxxjISLs/UFrM0c/oAhk867+cFR9gSxK5tCcTIfBHWYqaMHT5hi2DCLPkhxqUycSIp0Qwin5OlEBI15N9Ou3d1cVCZqoj/exirtF2jAkVmM45eGl/93U4mzzxJPh8+c2+EjF/58SlMifD0AG/LH9oOQ0Zcaf3Ezq8sVHc0cv75Gdy5OxVS8WhBTuIvRVUDd2uBJCqQ7hBbv1BK2fZxq0PQPXaBXhOpQQrdh/JYc0DVZZYw6rLxhGeR6/QZVjt2th80IXndIbiHCA5JPVwrGr/Fq9leMrFv5vSZeqj/qYJdEMI1FkBXHduCVvxIOFMes2EyL/QaCe6zEi/mDVfBuuqEmcDXGuaMwGDxhmxSTBrjdUGo6g2KXJ8BI6nU5L31kH8EW0yt18bYi1LM4yTUMj3i5vQnRsxmtmgXIor199fNhqJiIfrFwMICb/MiG6H7JX1ldBYGliOhSi3Sp32bgH7eu3xr7kg+hUwYG1CkuNFaZd6WG8oAQVt+XAw2+UZu2uEcXQPJNFq8c0rCnJe2ix9qVZbRPtmnjxXJ8Jz6BVoTh6NfM7T1EQx9/k X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: c5a3c777-cadf-49d2-69da-08d971d60c4a X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Sep 2021 08:03:59.6005 (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: t6DYEZOOdb17VDrrHU9Dqy5i5NWZ3j6vBWYz9IRvSKjB6n2oRiIQoyWpSRPc9W/R+GClxSv8EDEl4rQXsT5OyA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8551 Subject: [dpdk-dev] [PATCH v2 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 | 4 + 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, 646 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 b55900936d..9cbe960dbe 100644 --- a/doc/guides/rel_notes/release_21_11.rst +++ b/doc/guides/rel_notes/release_21_11.rst @@ -72,6 +72,10 @@ New Features * Added event crypto adapter OP_FORWARD mode support. +* **Updated NXP dpaa2_sec crypto PMD.** + + * Added raw vector datapath API support + Removed Items ------------- diff --git a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c index 1ccead3641..fe90d9d2d8 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 @@ -3805,6 +3798,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 @@ -3887,6 +3883,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 7dbc69f6cb..860c9b6520 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 = { @@ -974,4 +984,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..32abf5a431 --- /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 Tue Sep 7 07:59:48 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 98131 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 03BB1A0C41; Tue, 7 Sep 2021 10:04:48 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id BCE4341165; Tue, 7 Sep 2021 10:04:03 +0200 (CEST) Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2058.outbound.protection.outlook.com [40.107.21.58]) by mails.dpdk.org (Postfix) with ESMTP id 92BEB4114E for ; Tue, 7 Sep 2021 10:04:02 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YjOnOhHb2gfOXMuYqTsGlMsZtYROxcgbx0PmnZ1FiPvpex+kuMu+vjGh2wpRVkPUry8dUyYE6nALDOf3VuQKuIi2KsThnzjbTSL+A1f3vMRo01p1XWHbDtgaFHr6i7VkxeCknSnO3oAl5sO6YP0b/L1+1F9gBsYEjMgoZDbW/4UmzrU1F+GkEmfrP9kf1VARIr4FlKDD186nQCEMDBng1BosDSievPVK7cT8c/huVhMFBJKbTI111+TJPPVs3UI1iJbzI+d1ND+4Url/4WSJ6LicD2EWxAEGHPT3b7XbAuKAtGXXtlHh7mJfb0PBL/o6yee/oSS3uMuKAUP2PSYQxg== 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; bh=XQwCm89ieuX9D1ojA8sGVwL3QpSqqoe249Ajyl2B+O4=; b=c5G0rxC04FTprfAJpClToyyZ0FBtldB6y/x+LiP6wr7fpLFkym145duXAtQm1cugVWGScY3Y0wjbDWXKonYLzUBSUWtNo46VAF3xn92AiU/aZSk4KXlZcWi2hH1dU28zsyd9Qh/BDpGZV2T5Uzfl32MEBN5Y/KdMOt8ofoNVB7/HpG/xYZOrelOH68HMZZXBnhHiyigBwsh6xZXKu91eq8t+Tkhuqsc7hWiYXOsBUPd4pIg5BQgcG066d8pIzFQvJqo7ycz1GNOqpEDtt6KPaxwV4ZsWUOXFAjZCJMdmAzTEmfuoJjGH8/cOKbKAYBsiS3mP0ZsFzON5WURpAfcRhw== 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=XQwCm89ieuX9D1ojA8sGVwL3QpSqqoe249Ajyl2B+O4=; b=IIbINMG9NnczMz6vVQQG5oUx6ZgnAvamPht+zMPvUOImH3luhS0V7szyCAEHmMboGiOjK33khsbqGnHm2LhaKOI/5eTEdroSzFIvV28xViVFheWmwcrIsjiGEG3cG6tbeD9BF6Ue8EXVm4So7Zia/8Br34mqNoQq6N3dyvqn0kE= 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 DU2PR04MB8709.eurprd04.prod.outlook.com (2603:10a6:10:2dc::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4500.14; Tue, 7 Sep 2021 08:04: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%4]) with mapi id 15.20.4478.025; Tue, 7 Sep 2021 08:04:01 +0000 From: Hemant Agrawal To: dev@dpdk.org, gakhil@marvell.com Cc: konstantin.ananyev@intel.com, roy.fan.zhang@intel.com, Gagandeep Singh Date: Tue, 7 Sep 2021 13:29:48 +0530 Message-Id: <20210907075957.28848-7-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210907075957.28848-1-hemant.agrawal@nxp.com> References: <20210825071510.7913-1-hemant.agrawal@nxp.com> <20210907075957.28848-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG2PR02CA0068.apcprd02.prod.outlook.com (2603:1096:4:54::32) To DU2PR04MB8630.eurprd04.prod.outlook.com (2603:10a6:10:2dd::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from dpdk-xeon.ap.freescale.net (92.120.0.67) by SG2PR02CA0068.apcprd02.prod.outlook.com (2603:1096:4:54::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4478.19 via Frontend Transport; Tue, 7 Sep 2021 08:03:59 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d09dbb84-7fdb-4f59-28d3-08d971d60db2 X-MS-TrafficTypeDiagnostic: DU2PR04MB8709: 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: r3Vz5Iwqc8GNXSuWoTNleYxJHJJBGnCwBXcoegl174PfX0tX9Aor+v0WbK2UkSZMr3sFfPGF86LJGDHTXfDvYl2COlkuRZy+rUG6Ez8ljGZ4rnUMaSm27NBcmgzf339uMMuIDGAobAEjP5AIWqoqr++L5S2piC4+72YuGIFpk0LmNbu1BgEvMFVvmh3S4UgvQ/6DJ6dnCN9vzmEsu3svWVIhgCfIXZ2QOb6CsgD6zZzEY9ApkWwsCh6FEEYg81Wo4CGSVpd9iCmgJ0hO2LOUC6hMnbBmSuMpt3DxrwSRK8r4IMU31OM+8aHo9K63pIGZC0IHuz5T65LrKkoGhePsW3cGee8ku9XNWl5PjmbI4Roqt3OjTZEeRrtWqdLnR5GUTfl7t1yGEdlybih04e+EpGqW12L6yJKOso2vJQI9SLgU+rVYvvICrORHqv2/FtFnCzpn/2NvkxrIrQKqu1wL6oEJXH/e19Ch2aQz9sW3WiGRpEvOADDgajdZfZh5m29gIhSfykKrrZ8YWBfV/4jo8qP+K2rdc/21HiJYWuJcR4za0Iu1qsSLqQT1uHb4XXRctN6WWMfxBbgAtrBADE19f1CiAbLo6lqvwIat5TatTLJo6qAOULWGT4yOXBRmF4Q5LAQhzzSD6IT9Ov4Dvlz9YW1UBMLbCrXWs//J6QR6Snp+J078iXVIkkmKeHy8uLg5UpY9ap1Jt363FR/Y38hj5A== 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)(136003)(39860400002)(366004)(396003)(346002)(376002)(2906002)(956004)(2616005)(86362001)(83380400001)(478600001)(316002)(6512007)(4326008)(52116002)(1076003)(5660300002)(38100700002)(6666004)(38350700002)(36756003)(186003)(26005)(44832011)(66946007)(6486002)(6506007)(66476007)(66556008)(8936002)(8676002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: /fAWu+ENmr8IKLOXIPzoNyqSitmJDw9bhDJ4FGjANuslS/Xy+I8wYm7c9ge7hhjOLaPWZ4EAzYbcuIm7KsLcxFLjaGF5hC0XhNegIw9x+xVG8JZBjZcDUCBI5wTblwdRZfH3e5VlZ808Yn2EAz695VXMHZ5Gpg0Cw3GImTkK+f/OiInlyqMocb4lTz8gkLiap+C+IOrX8DBMCYnqam5ZRqo0g3aCDSqtQOdmV1KFof5JC49K3sdiZGjSyLVyYJ/4/YBMyy2ohiSgUz7LFD3TP8v8bWyIfOSe1/7lZDB0SrxVBZx4bmI8d9tN3pzttCCp2BRn/t4ElZMWPR4+aobXWnu49fmW/ARJ2wCqKFfXy1opDPF2BHUADpPCIuDQOJ/4gLQYmDG0IYGfD0EBbQJNtuWrcxih2yjGRnBkqI+vZeRt0oPllq19h7mnObCnPPmsf6594uqnhYzpsA2LEot1cy7hYMptxy8Aeci10xvDPG0JSXLs5dXTfA9bze2d6sGDAsSTFeYSGwYQAwTRr3QWPyqb4DLCC2H/gfifEYh10+ZpE1etGEvQ7nUCn96fP6Z50P1zb1BVcJFzCygXwBtGXAm0pc/5dBtT7GiWNtjCuZLIn7M+/L+YdHK6pxqD8pvUfC/1rYDlMN0tyzVpTDw55sET+KKK50aW0ZpzbwTUE6z8IWEI+nVLUQGGkqVqQRl3JC0VQ7U9r1Jab/oA0EkFpjofW5Gg2B8hj2CVRJcrSwYUHB6vX1fJPb+thVQvzptqxjmk34lojvgzZHS1ENg/srMci3vnibr1H/5XI0AwpjvgNhq1rA3acqJ4u7Z6oklS+teoW6euoCjJUjEUlequlMhsmivbLnX5iDXqYz5ihgS6ai25p1nr49xVsFCRKt3y/2ikWw/t6SA4U2ug4xUDERBmoNn5QuoaxMfSrrzIns7wd0Hk+uDavZiQbjs61pigIN/qIyMKNDkimOF4gE/oZGXdOGfA31K0ooDW5PSFi3NI8hwhj3H+mJ+N8uX7DRHQgMGpkzZPTv52ytJW2eneftOgOGDjEzdmnZgBsID9tezCAX2tMLN37nTwEBu60UbgihTBGDX2LKKxXffYq4f7aVnaL2BuRbTr9GI8htpfimXW9SD0WA4ptGlsVe+wW6WKEbj5+AARMAiYluO1sDh6qy98TqoipCDE9SWH5Gh4w/eNE7gBCatXUF6+En2wHRjeSI/rsKxrw8TPJaQsGqH8d7nquRapnZY/MEsd2X42W7uZQvVHp+El98S+ZIRDT2WIyDQHl8jphvG1hFxiD1pDifkxyWCIE6etZ7DpPHarDbMTB9zwHYeXEWMrSpipe3Hn X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: d09dbb84-7fdb-4f59-28d3-08d971d60db2 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Sep 2021 08:04:01.8346 (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: evr86GMKsbKz6BrJ2ZJNGBpgoRUKXLFVeM41lyAcaKppR+3gNf2UbcwzKb0Qg67NVG3jbk+TLiQJgvSVAvIHjg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8709 Subject: [dpdk-dev] [PATCH v2 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 860c9b6520..f6507855e3 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 32abf5a431..af052202d9 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 Tue Sep 7 07:59:49 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 98132 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 C36B2A0C41; Tue, 7 Sep 2021 10:04:55 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id F3E0341130; Tue, 7 Sep 2021 10:04:07 +0200 (CEST) Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2041.outbound.protection.outlook.com [40.107.21.41]) by mails.dpdk.org (Postfix) with ESMTP id F3D5F41150 for ; Tue, 7 Sep 2021 10:04:05 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KhsQVu2rcQsPG28a75iBpIAKpY7XUgv5Lg5nhbIj6sImnWFaYH2zHY15vYB/0oLUhEdYXt8O/5Wy02BwLZG/DsEIvO/V+gFgkQH8XVFxa9SH//NddD1cgzL9Nl/FozDLC5MQEO+uTNV2ij4HTLr9ZCRIexk5PWQauIgpeY84WAJheioSR1AJitmC83D/GIURhqyafG49IovfiMOLdi/Rlzw7KiXdfdAQfNI9z8Vnxnu51KTooO9UqN90nkA5wD0pxiLPegCyjxoFQDZYN5TVTwIPcnfgqHzqnyi05iCLbEWAaXjOrpFW6uD2hqVIEoeDarFvLFTXJ4989MUukD8ZMg== 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; bh=AwF9cy2Wu06LGZsc7ollU4u4igDpcftii7N4enq75HI=; b=Dz/Ea7Hew/FU5vZWtXfQn6MqhLID5Ywhc7cncfju2EVFHskhCwe+QQx8pI9XnV1yuf/yeZ5PhZoBEMPABAlE+QNG+lOaNMMrwCWBZC0kj9bFe8MRF4BuZEE3gGLS7ow//tRAZMcOh1h9YPW/ZjH6JCPxIlxN1lAMTwCaPmwVnJ94vimJ9R9FptVYFLdWwiAXF5QNrM4BQ1Mq2i+96enQHoZuSG8xrTviwgz7RO8pBgvtyn6caHIwMKAZcXdAj2kX8r4rUbgI/kQVZHU+Yn/rJR+eyAtti0lrEckPwOgI6lF58cBAkfWAv5fV1irG2E4ejfP3FVzBArC6gRaA+8YweA== 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=AwF9cy2Wu06LGZsc7ollU4u4igDpcftii7N4enq75HI=; b=ExtFidLTfTcED3HJZvHRBUVHdlN/rUFzlHkxdfg216rM6sxm6tJTlfR+KY22VcETGb1DZOBK8IAtfn48WGprWuzMlNr0QJ+RlSmvfdq50MzltPFueJnmRcZVk8JPbyqSRutgp4u2dv7FzJqKZl8N/KJ3U9autfwbcuGwXPKxv0w= 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 DU2PR04MB8709.eurprd04.prod.outlook.com (2603:10a6:10:2dc::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4500.14; Tue, 7 Sep 2021 08:04:04 +0000 Received: from DU2PR04MB8630.eurprd04.prod.outlook.com ([fe80::945d:e362:712d:1b80]) by DU2PR04MB8630.eurprd04.prod.outlook.com ([fe80::945d:e362:712d:1b80%4]) with mapi id 15.20.4478.025; Tue, 7 Sep 2021 08:04:04 +0000 From: Hemant Agrawal To: dev@dpdk.org, gakhil@marvell.com Cc: konstantin.ananyev@intel.com, roy.fan.zhang@intel.com, Gagandeep Singh Date: Tue, 7 Sep 2021 13:29:49 +0530 Message-Id: <20210907075957.28848-8-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210907075957.28848-1-hemant.agrawal@nxp.com> References: <20210825071510.7913-1-hemant.agrawal@nxp.com> <20210907075957.28848-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG2PR02CA0068.apcprd02.prod.outlook.com (2603:1096:4:54::32) To DU2PR04MB8630.eurprd04.prod.outlook.com (2603:10a6:10:2dd::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from dpdk-xeon.ap.freescale.net (92.120.0.67) by SG2PR02CA0068.apcprd02.prod.outlook.com (2603:1096:4:54::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4478.19 via Frontend Transport; Tue, 7 Sep 2021 08:04:02 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 0fd70b22-94a6-4dfd-38a1-08d971d60f13 X-MS-TrafficTypeDiagnostic: DU2PR04MB8709: 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: 17f7eVpF145lHSCBIt6O0/she5X2LY/VMnVTpn8Q5Q0t2i/fvzEfjckz9o3Kw7qeE/XKRRPjd6ZRC1yxMLXxswaIUS3BMSnfdJEBRqn92O392VbeWWdSttceK18Ug+virK4vnIxBb+POdijHaSVMdKtcfM73UKfkuEirO3c4kZv33SojJeUxNRhwRYz1Zd9EOmka0JV2HixlS9qTKz4QtSH46QQlAiKiETnW5yxjBl5l7hAxoY7elbsUD7ytXGHKKOfgSdUVmZaEs6hj8h9Z02CBmdcn8HhS4pytHARxXIXAjpPFerDrP2p11M2mD5RLDAvvgoGN135PEZ7XKv8j8zzpy/y9BdK72msCu8rkAGlyrTwUr2r14XVQD0a9BZnU3YZrak33rRw+y7HiYF2gN7HaKYEVmV2WNPB7ZkV9yxIpONLGKeAm5VGZtBwggO4bSW6MVevlEK9il1BZ0K8gNlmen0eqFYAQX+Q9tVl1wPmqDhi1PxlcXFulaXC7RMYausFvXqhGFeUSxlYTVqzzDTbLkdw93asH1MIzYmVavkQUEtpUHHId+zpO5fslKDGA07V1aIrlvZMsFJrHmlpkM4hYs2j0IN+PV/lblNaOaSidaoBLIEZmJz7JZyPk+YR4xF1NTfdjGEmocDl5ohOj126i65p03pzHhdutxGAEEA4q9cKHZiFkS+6UrpQMfooB7X1y3xEGzJGlGOS+4RI8/Q== 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)(136003)(39860400002)(366004)(396003)(346002)(376002)(2906002)(956004)(2616005)(86362001)(83380400001)(478600001)(316002)(6512007)(4326008)(52116002)(1076003)(5660300002)(38100700002)(6666004)(38350700002)(36756003)(186003)(26005)(44832011)(66946007)(6486002)(6506007)(66476007)(66556008)(8936002)(8676002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: yix8Ypa+fVpBIguzS2U+GwH3UzY2rJ0Vq3X5YHXmXnxh6wmosgiGPSFXW1tRnQ5b7V62iPLqOkwRKHYb44aZYx7YK0P3fEzfgLWvIIpPjkp4XLETCUmVGVVHP+jjZbOcumUiPkbsTdb6tDQF4FeX1ql3JpRK8xiV7dbGGfu4JynDjg9fO2xyJUk9IJnRm5URWlPKv6vSLdgV6B6BqlSbAFsdZebx53etvnJMDUdmHrs8rQLyp9Gpbfsh5JGYkcEVxVjG9/AHBE7LRNjv0dCe6aa7+aL3wm/sXAfy/k9SGu/gA/w6QbrxqYZ9DcrCgLv3YL8ACRLtzFut1FqAo/qulaYjyUR/20aeaMfkFX3omP0Pf8r7bR1IwR0cFCm7x9IKP+jqg6lznd/Jq1+LXnG1Tscw+HeYKFrTUqfZ69RfEwcddWIF7qy3A/7qLUC+WxVWFydJmB4ThEsoro4MD1kAGW2tYLYkZhmj4BssNDxrP/x+b+/nsWCq/dnnNFvvXQ8czG9QCgVT3U29sqK2Wl7NwGH1gWY91xTyeDUX8uyNlh1e6NbR7UD9eCQrgaidkRlMCdYfv+ZnPtzVjzzKmx1W4MsphUWmDQjyCj2OKh6WCEt4AGX3Jc95dYKNmbvROi54oWPbJsk3325je+5lOPK55lo9FrMUp53qZJvoOs80iNgz9C2qo8fc2/KjnG1ijdCAC0a+9YlovdZJ1ZPffYQklaIzxpEMf2e8EFVhVwKd7v8BRcCW8EnRwJUzYhr2ETEmai4FtxMdUPB3FjZTo+uS73e5E6BfaW1V0b33Sb6CxrbA9ma/rd4u0rgs3d5kzjYBrRM4qgvHh49XiP6WAkH44GMw+TOlCBllRk485YFNV6CjM+1v1ZgsL9VA3Iue0EVWvFKsEUXIEMvKca3JOd+MCdeibmNaRIJ9EqpTJSeIkgNo6e7Phm3JZUinMzvk6fbT+CzxPeu7G8uaZhrQ4la29xOpC6CU0vJjOfeoYyyM5McepNkuagLjGmq5fNEyYBPW8wADQrdG2n5QB/tCaa0qV6wofEkE0RI/VLRn1e2wpceLdHB5XRaNoeOSYmUyHc+tEyq4yFdKh0XiKppd849WMkz9lsiM52sRs/FrA04aHjq3JV42BTf54Jcb72now6AG0TumiHmkX1Jw6fJrr512CgbbObAKlhsdHhmEZzK9JHIhFYe1pkijkl/vbOfTdJ/CD8nL41Ay7MMNQ0EHrGDrlzvjVkU+5LSqmxfmlS0eXryZxg6wzYMJWqsTpnP94PAHLDo5PayH2lY5lx0Txdy87RSRlx2n5BjTCKpNk91scrf/H1S7jzDIQgZ+XX7YCyvD X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0fd70b22-94a6-4dfd-38a1-08d971d60f13 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Sep 2021 08:04:04.2181 (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: H+4dCddZBVxsP0Kqya+sxs6SkHmUqQvUBUkagdCzY/GoXYtD52tXIaK4uvcOZTVqVnSJ0zZe5fevjylpwXmnyQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8709 Subject: [dpdk-dev] [PATCH v2 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 af052202d9..505431fc23 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 Tue Sep 7 07:59:50 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 98133 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 3C6B7A0C41; Tue, 7 Sep 2021 10:05:03 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 237CB4115F; Tue, 7 Sep 2021 10:04:10 +0200 (CEST) Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2058.outbound.protection.outlook.com [40.107.21.58]) by mails.dpdk.org (Postfix) with ESMTP id 255DF41150 for ; Tue, 7 Sep 2021 10:04:07 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HFdJkRPjQ7WHY2HTsda48VrLJrM7hMKa0ZzK/uHkYzL6LX49Fi+qTL9aKnt71XReoQIDibv7nynKCXRfYnlhiQ8p6kyDDMJiAOOJgGoyhZcyj6/BS8xX6dp4Sm30zz4RUbioSi9JBhbas9rm+czPPTNrrorsFsV0eBScm27Du9H4RYdF/BvOenIHTpwSlZMJ+cRWjL/RV4nZgrF4Az1Vbyx7eDnROnb1z9X1glBrXQVFUdJ2wKNwq8WDp0EcJ/ry1BQS4p+GbQyh3Ez/IQs4jVz/eHsd/pwJbuA3pD6+XabB1BqkmE6sWybCdyO5TL5y5jFvgl75mlKeYhtT7TgHcA== 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; bh=cvBi74HymQ5TkmVd+LYI9BMAoQVjPMPASJqA0hKuS3Q=; b=c8/N1ZcbcVzwPD4ETgNOGMPq4poCOXw5/YYco6pWNceakaqXNOuFxRMTgq4BlrjYKs0ZuUV9bx3Hjr3K3sHO4/vz9D912jPEHX41aIc29u3Q+hheeDZFBW2MjlogE5SLce5eh1e3qQmFwkYToUYSo1pUQOxB3OSzdHOw99hNcqOoIDCpuEhd9rrBNjfTbq4nmqNaJ7YAqOl3b2a0RrBO7fih5/trvfptDEaXy3hQXVXFnkfSW78dJwAFinyb4FE7qPOkBuY5gdNuLxTL2R2KL2KqM83l4sjH6x3mXXPQh1FpreKyxdTi9lZuC09la3JEBpShs4hHjbsxNEHnq8Ke5A== 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=cvBi74HymQ5TkmVd+LYI9BMAoQVjPMPASJqA0hKuS3Q=; b=O4T3fFg6L/9Hf32Ju9ml/uVTYorGj18gLxMEnCu1rhOyhiuQ6V+m8k6KWlw0fWB1uIl6yC/j9oTWzzmHmrmQ7gruLMrYAfOkNwAEFh7xhDdTpvWUZb75lz+AEhYN0v4K0OYgFFgIlCDLHtliZ/BtRq0xzVo9aTdKn6dEXk2uB4o= 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 DU2PR04MB8709.eurprd04.prod.outlook.com (2603:10a6:10:2dc::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4500.14; Tue, 7 Sep 2021 08:04:06 +0000 Received: from DU2PR04MB8630.eurprd04.prod.outlook.com ([fe80::945d:e362:712d:1b80]) by DU2PR04MB8630.eurprd04.prod.outlook.com ([fe80::945d:e362:712d:1b80%4]) with mapi id 15.20.4478.025; Tue, 7 Sep 2021 08:04:06 +0000 From: Hemant Agrawal To: dev@dpdk.org, gakhil@marvell.com Cc: konstantin.ananyev@intel.com, roy.fan.zhang@intel.com, Gagandeep Singh Date: Tue, 7 Sep 2021 13:29:50 +0530 Message-Id: <20210907075957.28848-9-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210907075957.28848-1-hemant.agrawal@nxp.com> References: <20210825071510.7913-1-hemant.agrawal@nxp.com> <20210907075957.28848-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG2PR02CA0068.apcprd02.prod.outlook.com (2603:1096:4:54::32) To DU2PR04MB8630.eurprd04.prod.outlook.com (2603:10a6:10:2dd::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from dpdk-xeon.ap.freescale.net (92.120.0.67) by SG2PR02CA0068.apcprd02.prod.outlook.com (2603:1096:4:54::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4478.19 via Frontend Transport; Tue, 7 Sep 2021 08:04:04 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 3ced8a3f-63b4-4b07-6570-08d971d61071 X-MS-TrafficTypeDiagnostic: DU2PR04MB8709: 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: wKJw4+8jwYGwcqOgfoav8/omOw1mQSvybDakqhEMf0Aw2n6i5PMBAMZvAawbdN+Ob/q+DoEAJXvSgHCpDGd0/DoInJvmb5LQU6OZ2K09pTKPxhE/fQz2dqIFVhGynqPzP8E1J5MuMTZD7S9i8ce1LpNSYYbB9MTPECtOe0mWzxeNP8KcATEY6aF9olxdqZGD+sT+Y7LWu7m7ToUwvsYWIxyBmYA5iv/KrXuKmh4vE0DAOlu3qG/MrLxD7Mldf5otQsVD4oDdo5UDnk6D6er8f1IrZsDFQS8KS9rRNCsyQv5/R4QsWvI+ojL9hJ375OxjrZgCAUqIY+haGigqSfyePv5uZIQEWi4H14OtgYgX2Q0/ErIjs2TnoGltXiNWF0hmpCzjC9GUa751RqhwYXgy7m2DReAgIr4JK8haHvUYlc5TshBccti2bMmk8iKcD1ELop2YthVxGiuTXpXy3jP3JBonAJQIR+rjB2qyWH42EsEBTKVhxqf0zZ6TCelMaBpl3Q+lG+qxuyc2G+ItLu/w0HXfXm8AyrnTOt8IwBUa7nN6Jry9Jb6cNcqFAcFtTgbD4YSG7/aDK2TnS1U6voBh7mD0lccTZPbnVWRFNf5+qGYvQySP9qz/EsdktxYuKVURHPsKixASDgaEruIAHxoErgryFLhA0uMQIXnFik9VTKxxlrSoyGIFAFy9uiTXkiZXY/3QnpfLvXF/8ypv3+XoMg== 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)(136003)(39860400002)(366004)(396003)(346002)(376002)(2906002)(956004)(2616005)(86362001)(83380400001)(478600001)(316002)(6512007)(4326008)(52116002)(1076003)(5660300002)(38100700002)(6666004)(38350700002)(36756003)(186003)(26005)(44832011)(66946007)(6486002)(6506007)(66476007)(66556008)(8936002)(8676002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: R1fprIY93IOJHft9m3DvVep+DrihQjRf128MxskX2pQ79Ou6D04X8oqY0yyU/cySx2PUKWeY7QfGilpDEadeldxPjVWMujyylAktFZ3iM50hMaoaS0SlB5fOV8uvIY7tqRQOPA5bacj/OtEDF2JX1I7cdJ61+9dAtDoPv2OOXmnUD0XfDQnbUuBZl0IDZPl3lfOiO2uuvYucW+X99DljoYAkmTm2uePCn/turY2Ly/ELzF7Zu3T4a5uVu842uWteC1jB9wsttucUZDiGU/uSX2cFzu0cg7iy9tKaqR9LRsua02KtfmzbCA6DSBWnQGKnpfk6uKFFb4R9ysR6/Fi0S7giE+9RMkRbYqgFhsB4ucJLj/3SdFXDgPx8em60X+vjasKZ+j9JvwQj8o/i3L7NtK1fagK6JBWVAz8/RSeeir7jwlUDQ8izOt0ErGo2x/a8ZM+zkfXmjVTXFzmnDCRZvEyUIGmQd5gf49cjkgzfmkLR5x1DTl4FGpkpBGyWJw/PNG8Zphh1cRge234xsKAB3gxJNlP6Mt8rQ0V7CA0HS5jYdf2nnOQJo+LTwjX8QcMGTq7Q0cx7l4hAtzTY1XPmuUaZVP84ZmlG4pFhqDJimBa8xWO6Uy8AOwRbYlU1vxS4sUV+69D8BtdJswYuq7Otmtodgrjt4iVBnDK8De5f2lsf16S9364F4nlP+6VFVQt8dRw36b7O1JdiEt6sOBH6NR+rK/o64B9KeOJABUjGev/4XGLrRXbjJ/eXgAB5cnA+vZrVci5eVFhzstwIvyqLz0k53h9FAVPFfz+OYB/cklu2UheheFNBShin+XvBB3CcwxN7ElFBU8SBkmhaaRmtuyoD1AzDd0FD2HLBbE/9sUCLyFJq7dh6YOnHvfKILxT4KME7dmSBx2pIRooH/BrOrgAS1wZ+3cowhHb8yZeH5QZIrhLUmnYQQALu06DtS9EapXICoUpraI1fGGWVuZOM+XBbhBVX0y6Vki3Z0XSnQ11jJar/hegdcBBWwPG+zX79VNyCpjXJDyBcaTngIN8yAUQckinrYowYG/co0Bn7fiJTVvst2jNzGvwX5nMyEZbdqnH+epuM8ev0/twIpGCnkWGhP4TbrM4//dW4xXt9xO+kvXMEzzVvQsk3U6iidFAZGRaZUgJiT9bFsDb5SwEjWh5TkMW6YmHb7AlVuyHu6pzCoRF55+K43P7dDR2R/vCp2FtEt4FzjNDuhKffdhKojIqqN821UJcF50cw4daSGZ6dHxXLjd6nZgb2LbCCZf9jSxXhQEbSKSswrwZEj3V8TX/UjsuhEU6cil/5ydfbYEiw3FdF4lYA7P+Ljdg2j1vi X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3ced8a3f-63b4-4b07-6570-08d971d61071 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Sep 2021 08:04:06.4324 (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: SwjRn+NJHqXxi4mTpjDh65AhFawPhn7jlTvS/tjgPK60msoLeHRqGmYc+pMeJmDSvDFIVgzxFjE7O9MtPpV5Fw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8709 Subject: [dpdk-dev] [PATCH v2 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 505431fc23..5191e5381c 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 Tue Sep 7 07:59:51 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 98134 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 E868FA0C41; Tue, 7 Sep 2021 10:05:09 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 4C62A4116E; Tue, 7 Sep 2021 10:04:11 +0200 (CEST) Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2063.outbound.protection.outlook.com [40.107.21.63]) by mails.dpdk.org (Postfix) with ESMTP id 7EAAD4115E for ; Tue, 7 Sep 2021 10:04:09 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=n1PPJPiTAN7n4wAMdx90csHHXDhvua8iBHGCaO/PoLIHXg/IQdZaK4qvAr3rRDy9s95zalTCeF4WDR0kde6X3anlvBcg6vxUhpCYuqJP0OWMges5XcL15ZnhAOkvt/WRSpueAvwgTFOhrijH+ztgC9j0f0nRxccvuFVxM4BcndtG4N9GXFFw5uwhkR733qHf9yJIIVTC1JTHBK1jMQnidF6JzFgOb0jJ8w124BdjbNYHwvOgU++mLEadQawpN0so/48wxEBjATuLYrP9ZNCDhbQkWoE6aa8AWLnCXHYxafb/RAykfowYsZ4ZdY9yy2hDmDcGGck02EW0Z218DbXZ4g== 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; bh=zq/eobDY2eB2ryq5gJ2E3KzsNjSc+flFIMoI9kSMeuU=; b=We98fIkCZKOODKQdNPwFmQ6/KiEIcCTslkPTLMrrUbl/mUAvKQcbExni1G0CF+CbnpI7/8fOdjrXvX2QIdJ3SGtjbN3piZjAETUkWqFf0WH+LXjr4CFK2S7FRRClA3eShDt17lMvR9YdxTcGAqGKcPGBhUZlCWoljra+nOSCBns24nNgAjLkDi6SwQ+9AjhZTJw76ctyIwzIgoGZEBBVUfts9KGu693EnZitQ/y5S84uBVBBL8ULRWS8lKaZ2uSAxKNRU2AMG1cRxwKsG7Rkfukai7RHn112i2fV2MRINo08JUjgpvJoHTnUkFYXSLWNC9unRf3nKDVjb+9Adrw4XQ== 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=zq/eobDY2eB2ryq5gJ2E3KzsNjSc+flFIMoI9kSMeuU=; b=OoVfBCEdgOvbU/1mDDTwjMiEeNKzJZM4vb7/rvWk7h5JNCPySS84X2JYlnxUwnOOQhjF+IHnbi3vWbm4IeTOsHAG2tZySj7OWaU2zJBGeEdvWJ5n5y0CwKT/yzLDmPa6SK47qoCluj/e146bjl53E93U/WEKqWzlS6mwOIag9SA= 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 DU2PR04MB8709.eurprd04.prod.outlook.com (2603:10a6:10:2dc::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4500.14; Tue, 7 Sep 2021 08:04: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%4]) with mapi id 15.20.4478.025; Tue, 7 Sep 2021 08:04:08 +0000 From: Hemant Agrawal To: dev@dpdk.org, gakhil@marvell.com Cc: konstantin.ananyev@intel.com, roy.fan.zhang@intel.com, Gagandeep Singh Date: Tue, 7 Sep 2021 13:29:51 +0530 Message-Id: <20210907075957.28848-10-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210907075957.28848-1-hemant.agrawal@nxp.com> References: <20210825071510.7913-1-hemant.agrawal@nxp.com> <20210907075957.28848-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG2PR02CA0068.apcprd02.prod.outlook.com (2603:1096:4:54::32) To DU2PR04MB8630.eurprd04.prod.outlook.com (2603:10a6:10:2dd::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from dpdk-xeon.ap.freescale.net (92.120.0.67) by SG2PR02CA0068.apcprd02.prod.outlook.com (2603:1096:4:54::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4478.19 via Frontend Transport; Tue, 7 Sep 2021 08:04:06 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 1caf4b5b-1c17-4fe9-d9ac-08d971d611d1 X-MS-TrafficTypeDiagnostic: DU2PR04MB8709: 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: GbHTYIwb20hqfNs3Xvc8qoEhl6DCCff513Gp/fp9tgn3ku3dzGB2XfAiDGln0xwFB/bRh2CLl7Ut08IRPSuucKtYJaKlhw331JzW6A+CpuTpNOWhwu+j1Xii2UaVLrRx8yCrU059JhfekAHVh1gyRwKEChQT/VWKCE843mqsAfRtDnMFBml80gl8xUkICZhUhpEMVUNvbVoGS44D3rGl1CcgsLgoUkDHo353BSLUdvWoY4EZdQ4zy7CzOZ/Tw0VRxZ3r1vFqRtc8nqXbDCrCPsBR+A/mCAxoar97IYPJB08zyW04ntRdhr5po7pTh8LL7BbRtHioWB6aHEWj6dn3LddNlHg+4f65drwGTmaKxmn+E/c1lX89DD2MTPZ8GmGL8Mui+FtlJLg2USwPbxBRKz4zaKNYfGXg3rNcW38sDsg9EaxrmAbCnAxxNY+1xJc8uavfUyDkA6zquUPMfRLRanK0JGhIMg3yGPViEeWh1EC8Rw8K+cQdg6jyf0REPG7tIm//nBj47X0pITZEdOdPzt4wKLCmPMh2Nhuq4hKTnrNEC01kS4PZbWlFGP3Z4IRlKsQyVlHsd5dAcpZq8skqgQMyiFPwhWKgteGJuSclB3+qbs9ChKJmyg2r1GSPf38mG0qaRsiiXfBDBoFJywjB5WRHXaDLrueGlMvhABvg5j68ZndRkDZiSZMqlqgiEVE/Po5h9LHJ9EwP0RDfvVQ2kg== 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)(136003)(39860400002)(366004)(396003)(346002)(376002)(2906002)(956004)(2616005)(86362001)(83380400001)(478600001)(316002)(6512007)(4326008)(52116002)(1076003)(5660300002)(38100700002)(6666004)(38350700002)(36756003)(186003)(26005)(44832011)(66946007)(6486002)(6506007)(66476007)(66556008)(8936002)(8676002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: BIKwMj663f9Jys18cYMgs5q+etO4z9spKVFbPPssNmvnpcF9mN5QPdCJXWmBfcHjj9csDaHWV9as2bEnQ9HO7VGqipk7S7oRN/jiW6Kcmu134AnvmknfUdrmrzgBR/9R67lx40N9RkIG93ftEmxvVzgfI4NFRw0Y9izcHt9Upb7yJNOlekDOZ3gAuDnfImOSKnqAdUoLivr0wW1U6Bd0cxBUWyji613K5fiARC92bWiqljXB9zqRggVvmrIBf7QN+wnvjFM76FMVfhiSNr4u/crRWL3a8S9F34o73K3Qck08S9uwUhnC6cb6haVn7u5LbVq6GDudchtEXI4zYiECxtdqmTx2rh4NwxTppA4c8GWV3PbKkubV5WwddB/Lve4U4tk2kmrOxdtWoHmrjQakpQH3tFlLvuqUVePpa1+tYtVR33VrS+4mzGesOG6tYtJfcPfzKtgNTdxZ77uGUAZZtGs4rJUIUXM2Ltc2oSzX+j499g8GwUcpIaW+mQL/9N+Go+FsT4G03CsA8VIa/miHmgaubfshMXwDuL2NFbwvsdBe3/nOX5n+ioHdEeKCCKLHAQfP2jOLXr7GeHsbHTkNyzeCXM5y0nwNVITsieQKXX+lvNeV2ViRG1cebM4lxQW/8js0UGvaZFAWN2OOlKyED95w5oGWSf3ribtI0IioB4kCwrUZ5YCIQ9OhkCltZTrHoqMTULkxOt2/SB2p0ptCcHEexxA6sgAslqu0usjpP9bQweVX+K9j+yqkXyq1TviXGZfJDy9PMxuG0mS5BJQrmRCj17W3FKOAEWXh7LHjiHz0gDcfKiLCLkebjUgC8LR4228W0fZFXqmWNToGzGBXkZrK905rbpHHbODzUpNcbHvF8XP7W6oc8vjIIq9mgmEHKRwGTtNcTc0R/aqJXPUBpmoZ6yANlL9NsNSaZ8n70CVD6p1rEtaTFRrqZCR6be8KP+U/rw6L0hxVao21FQi9fqMOcmGj+UnTGe5VtrkWJNbdl/HZqWDnUjEWirU7pj3JIwNhC7w+tTsEgDzrtk13nu5WJXrayC4vbv87hdqUIz+HzX6BfIr8QHDX16Pm91iSTUi9+hlz/rW3ESfNRQf5RZi7guTs9UO9nFGezx9b9clAnoxDjIkKilEG5i/STS4KdkvsSZ1048wRnCcr0CKQ6HDj2mxi/OGwKm6ptm3T3/bfIeiNb1h0TnuICoYaLQZ9mwH12AW5/SF0rsgmCZ5UfERR9veUkjqhkP1Q+Kcys28YoFd5Dmh2uIDL/XI08C0K3MpmdLghCjaaYBk9GTlTIRu3gGLgiXEPWd7vxeku/W7GAbgUxMmdu/bwqAATKvyB X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1caf4b5b-1c17-4fe9-d9ac-08d971d611d1 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Sep 2021 08:04:08.7731 (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: VvsEFiqH4v4ofjJ5s0tuETTbS4LIYd+kQaKb1Exg5oF8RPtbwN8LC31Jh17I7Kt8vJP/yU3A1Nshp2dFO4bRmw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8709 Subject: [dpdk-dev] [PATCH v2 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 f6507855e3..db72c11a5f 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 5191e5381c..51e316cc00 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 Tue Sep 7 07:59:52 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 98135 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 6CF6AA0C41; Tue, 7 Sep 2021 10:05:18 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id BCA8A41178; Tue, 7 Sep 2021 10:04:13 +0200 (CEST) Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2077.outbound.protection.outlook.com [40.107.21.77]) by mails.dpdk.org (Postfix) with ESMTP id 0ED7241173 for ; Tue, 7 Sep 2021 10:04:12 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GXNtdEsCdG/DWAQrniQSwRfKfml7nHfBlMiTR4OkNXHAcHXlzbGc0+8yMjLo8kxyAXl8chb9kq6VcjNgzEDA0eRyEuG7NvWlFkblVEMlOkTZvzPm8BHuuKAQQghoHvCWOrI4fAU24pE2g/pkk4D1px26HYl+lg6OIuS7B3eY4lKkkrJeTB3Jd1sgqOEIw2jPnuScn3wW9vQNQDpl31oGlzg9gs6fuXbsqkypvDLOGhBTQ0ZsGgd7Zxp8wJAatd0LrsTFUJWgGJcRvGEXl9UvfGe0VXB3wqyVX3xApKqODAut7i9Z0Yqx53JWBzAAZ0TLRrWFnEJKDi5DbrqwIce/Fg== 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; bh=rr4BsOl+t6rzEldC/C0CdUGRGXMsFNIn885YREjSPAA=; b=cHpk1AGOcS5hNrzSK9t7DWbWDZQg7xzcQIUV3hZ7m2obBKjoXf0UCwKNIzfv4mFm3qAk94woANzSyVTnFHlyLuQhiT4MCnjIS/rfKLZXIBBaYgM351j0Y4xs7Mq4nlNUHX1x/MQBoaEHOhdNt4Fxwo24jzN4KyXVryzLYs/gQV+sWj9hgy3H+s4UXkoqToyQT7cV7dQrdXftxlaC3ojhIYveQyIFYZMxwj5hXjIQBQTqJiI7hLJmDH5BUrm7YGGo2mK3e8y5lP+yH2LOwCiz4yqF/wO0U3Ncz+uQT83kDRa8HRVFxzQPEakvckcmkptQfeBX6z1qoEHddiOA5mBLNA== 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=rr4BsOl+t6rzEldC/C0CdUGRGXMsFNIn885YREjSPAA=; b=H+TPxtcmb78SOoesMELgpdyHEyyB3dMwyAkmg8Iqi/w0LPmDAZEAVDIrx7xxaS/IcfCcF/nfsfNKddFw1blkVHTDq+JMDCXYK3mojmY423vjG4JEYMxRp2GEDch8NdEDbRgrcmgAMvbFxXkYGvC2BLL2kQfeTHgqk9Dz6j/lryk= 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 DU2PR04MB8709.eurprd04.prod.outlook.com (2603:10a6:10:2dc::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4500.14; Tue, 7 Sep 2021 08:04: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%4]) with mapi id 15.20.4478.025; Tue, 7 Sep 2021 08:04: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: Tue, 7 Sep 2021 13:29:52 +0530 Message-Id: <20210907075957.28848-11-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210907075957.28848-1-hemant.agrawal@nxp.com> References: <20210825071510.7913-1-hemant.agrawal@nxp.com> <20210907075957.28848-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG2PR02CA0068.apcprd02.prod.outlook.com (2603:1096:4:54::32) To DU2PR04MB8630.eurprd04.prod.outlook.com (2603:10a6:10:2dd::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from dpdk-xeon.ap.freescale.net (92.120.0.67) by SG2PR02CA0068.apcprd02.prod.outlook.com (2603:1096:4:54::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4478.19 via Frontend Transport; Tue, 7 Sep 2021 08:04:09 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 560106c3-a082-41f5-8351-08d971d6135e X-MS-TrafficTypeDiagnostic: DU2PR04MB8709: 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: 2ke1USUFB6lFOOIbk2Gkmi2hVcO7w9RlzdoHbRX/ZLbLv+AbBSOEZk4WG9Uo9+JjrwfXzzAiWxDwm8ml0fCUilLeI1XgKF87RBv9s2h26dGTzg305YenAlRGfaC1m0RR+YPGDEiE+afk6Tpm+ITR6ArrAkxhuezFRmH/3RGrV9w7hsKrdwpghrc+ec64NsVzDdN3tcNxGsTpzKPal/xkVhoSGuj0utCHxK7FN3ayNRUkTpxI4vIx0KNjOG78Rcgfa0Tng1GFwgIUKo4XpPL2zahUD9Ol6UElHiOSmwC16ldESs7Fe6nugvZMeCO1aMxjcUlzLxFGuarALFe/8SJibyMdk64+9iua3SH0eF3+Fy3ZXVfdjrTLDSsFqTdet1LBCUm2Kl0KtXHnd3yPtvZUoDuK2b9NQDbN/eezI09a85IWI1jhFLUSQCRieDgIrFnR7kk3IyrDlbWFfwlZb6ratjonX7rszyfwB2uoJbU2ru05BgzRI6auSAC9ZZqwmSpuJsZIaXEo92UnYsUpR6pm+YpogVxlrJk6Ooe8FGRIkYWYEqvavglU3Yp4/5JNs2Q2Y6vypg5ArOb0T7s4MKwOjjYIb68sfahlwUheg7oow9nhOI7ib1Jo7/3AKfMm9QqSqYJw9nWVmV8d2wXCjFs125tOsINIZ+mlDRx09VM4LfscBtbFzmQ4z50PI1dAnAr44IVerqaxtjtH8C6+qTfYUA== 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)(136003)(39860400002)(366004)(396003)(346002)(376002)(2906002)(956004)(2616005)(86362001)(83380400001)(478600001)(316002)(6512007)(4326008)(52116002)(1076003)(5660300002)(38100700002)(6666004)(38350700002)(36756003)(186003)(26005)(44832011)(66946007)(6486002)(6506007)(66476007)(66556008)(8936002)(8676002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: BAbOwjve60EqhNqfOuSMTOQSq8AyvGnLAlGEFOSt9an33W1o51qozkHOPK6ua4U69Wn/h12La8BJ3rC+IvIgO0F/Ah/yaUI4Vas56cy+2BT8zqF0TKuUE6bl/g1Wrsg55fA6VSxwXzOXecMjtY0gE0XLd5AaRJj48N6Bo6ZKU/o98Lc2LKpcNyBQPz+v5mUCL3ui+LStr1DtwmVMnoI2S+QlL8qLdVLCHxW40sD2NtynqPjftB6K0XHrGhNhKDVlh2echPkwadvJYSG3iVKWugwqgJqDDH8FDJI7Flya5YM6lkF6WFykmCCtql3nuXrY4lAbGs5eAGMEFn+sBvnKNtzdRjoBT8HTC+YE9zcWORcHsvX0Am/84NnNTN+HcOUGQ4NygGpzsfMyphdFdsyMhMMqlz8GtQSqQRl8paoZjIqOtKw29HBqPgWfb6ZuRqHDW+/dRK2aVaMX3sA68k/YXM90U7ydERpdkr2lTfn9Pum1VOHivbMKLr6wf2uel0FRbO3HhOWsyJlcLJ4GkzKIyUVjgRf4ugCAdM0aYZQwusr8dbPQykuFyE2VhhMGugmV4JGc1hUg7W93tf0QMo3Jk4MbS8GDn/ytaqCvQfM6SDbaLkoaQL4MwyPdo5HuOO2eBKh1GgEN6MzR9GHO0z+kUN39Wwd27JO6QrlLDbAbOQr9WNi2IsL17cAQM912rpipWfSbtNCoIv+9JeRldDamt6dAwLVmtxu0zhsBgDIhCYGNzzwwnsapKYweGsPT8HKwti2atyGzD8HpGJJH/JGdTa+wueo0kPbVto4C8hlaJLmT4Akt5gEdcFEZdBp2sgVljwr5YQaO36NBmIlMbwJkVyZoDFZYwiqVVPSaSH6Z/4mX3e27Qp35NFfl6OAXGvq/sOq/um/x8lzEGH8HEoOD0LRegXh161U6V6is5gUpC8sysV7nmxAjtTvbEN6mDOh/uiY+WvuBk1l3tixMF2K8WkbgA5r7W7N838tjiRKDlRbj4ocJhPFMb0/G33iT4tOVXGP+kX2wq22+u84KxWBGjy63elw9/BudPdnpOFDka0e5KLNtDqq70yqfdj0bgyRrWBXWYJos2LEgJh4XOVlzfLOp1BHfZDXcqRQKRVWkKEWmWWkLl0DJfU2CGFmCL/6Bb65PhV5wt8sWlEwayn/Y036gDVhss1ER05pwGpSbIC9oLyjc/zcUgUFQI8VQTeSSDnd42QpMLfS4MjNBWL2lzFVqhnPfZzPIOW8GxRKKtGgneHCi7wcVDnfIWNVjPDFsG/sDFEeX6STv7JtsSXg7LUJ0YwNuzVbarlyt6gd4R0oi8LOCxTkJU70RajjdyfX7 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 560106c3-a082-41f5-8351-08d971d6135e X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Sep 2021 08:04:11.3826 (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: 8wY1gIGEqmT8XQP+txNC6ngprWUUeUeplNZCR1pVC58pJkvX9QwQ/E5wcIK2ZZhYmTKsXHVIZDvo/seLYRhqkw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8709 Subject: [dpdk-dev] [PATCH v2 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 51e316cc00..25364454c9 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 Tue Sep 7 07:59:53 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 98136 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 9B08EA0C41; Tue, 7 Sep 2021 10:05:24 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E400741120; Tue, 7 Sep 2021 10:04:15 +0200 (CEST) Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2069.outbound.protection.outlook.com [40.107.21.69]) by mails.dpdk.org (Postfix) with ESMTP id C2158410EC for ; Tue, 7 Sep 2021 10:04:14 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UK2vzX2Ayi2axg8vBL5ooaHfK/MphXIqeSTLhbxsSaoM8bYzSB9nwLeRbXhU4RXXSQTZSusnf+yrsIpe6yqf1HVpFRER2d99vVfq5qvTHTz29KEzNawJsPAl1ZAPsvFHZnTpzd6BRPMGSeIphKsgXe8Ac+zMX1M8TvOP1HIDYZLmSKeXkxpFwNENT+U/0JVQnJsrne5TiNWVFhNtAnSs/rjcOr2JJke/23IVGoS++Sl2DAP/IxcdBAtmoNvd3n4vUbHNUsNxI6270eU782S3PViAaZyn491h8hI8GRWLkI+JA4RoMaIR2JlRjodIzT3tTCrYO3s0c++eOKWIlqexDg== 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; bh=isvj40dQdVzcxvur19PCDW/05rRaNKL0lynuAxTXZI8=; b=FIqQK+5gvI/wdkvxC5Ib9fIfLDkX795lrVOBJ8t9dX7veqYJDOYpcH97B6WapQSnCXVC1fNA/vAfnRi+j858xhv8yz5mzWiO5o1VYwy7vk1jtBebwTrL7L2ntJT5pMt9J9UGJjCa84GE73MhqhsLwcRC8DQWtKsdWQQBpKIRWd2M3SwqDpVH7RTEdMm+TEZ1zWf4P/XKpBhWCLHcDx+C4yTP579xtz+Z3kZRB3IlowBK+a1c4FsOA6nKxYJDWVqbWYykJFZvNtKfEcuwJvj6EJyy1nnINQHybnktzI01T8MHeufAzRBUCWdTTUM+E+WZuUQVIc/eX6ft8rWnRXmLXw== 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=isvj40dQdVzcxvur19PCDW/05rRaNKL0lynuAxTXZI8=; b=XvICJGS2oUhzniJL7wT2lcjhihFh1FISrpXBSY2LPGJWV37gSyWbAj3xbtD+0bnMJk6cGfhnxZePcvjklFfKM2vgWUkPbwZ9icCk4jaMMjejUF2fFTMivQCL5Rwa5gsdceycTgDODiFuCbSpKeEemgsDirGZQJzcFKRnDci9j4M= 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 DU2PR04MB8709.eurprd04.prod.outlook.com (2603:10a6:10:2dc::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4500.14; Tue, 7 Sep 2021 08:04: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%4]) with mapi id 15.20.4478.025; Tue, 7 Sep 2021 08:04: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: Tue, 7 Sep 2021 13:29:53 +0530 Message-Id: <20210907075957.28848-12-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210907075957.28848-1-hemant.agrawal@nxp.com> References: <20210825071510.7913-1-hemant.agrawal@nxp.com> <20210907075957.28848-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG2PR02CA0068.apcprd02.prod.outlook.com (2603:1096:4:54::32) To DU2PR04MB8630.eurprd04.prod.outlook.com (2603:10a6:10:2dd::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from dpdk-xeon.ap.freescale.net (92.120.0.67) by SG2PR02CA0068.apcprd02.prod.outlook.com (2603:1096:4:54::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4478.19 via Frontend Transport; Tue, 7 Sep 2021 08:04:11 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 48df3b84-133d-43ee-c6c6-08d971d614bb X-MS-TrafficTypeDiagnostic: DU2PR04MB8709: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:4303; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: hOurevkZRxXbTbsQa2Qk//riuPlbHyMTCM+eRrwy0IquLShlMT843LuTqF9ap94EUEUpw1uxmU2by8Ddy1htUyDFeGh+Xu7M4xPJAbEhEmY8mCUOmh0iinQfqPoXW/nZ8X9j1XPzf+Cag3jZ/sre62z+2yxnTRXuqIjmFNfZTlwcHpahhg76DmPTnPQL95D6uzaAMHnstb6gWpqj3crAurmdtObg+uE7I/Vk1N2R4PbThd6F9zHy+Ur5t8/Sm+L3xbGrJ9IF0F2e4MhVxFBbSg5prjbiDRoJL80dj5UVIbP5NGrN6bFli4kxZ7LFPxft1E7n4KhFBnsYaUXRmL5ttLD2iDGbfAT705jrYFCV1SdFe4CoeIkZGlsoNrQjOZGHrmkfmxkDFwiWNoTqoIBAthq8fGeJHXBZc+/JUfDqVfNbvkCuS5z/MIzq1ZWdQ6CgBgIWLyzV/gnk5FrGlIrK4DDQzKGlwGlXMbOoEB3E2yrGcFRIgdbtdxvN3luEV6T7wfHq6vNEwNN0b3WiSqZzHB9+ngCanFSL+G+sKj3+bM66U2Aa0uUpkulyX8X0OeRkF6+CYoeTGRgFa121oMzeSfEWLgIJ3ORRfBYfLkQKnRM/4yeUa+20P2n40VTLUNHcYzYMYFaLTlsokCIqXTHcRn+r6OSk5J8V3FwJbmVVGgYuOk2FMUaJTxYxXS4Mwc6MtfoZbVQyeaTwwYawxzIu1g== 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)(396003)(376002)(346002)(39860400002)(136003)(366004)(36756003)(30864003)(38350700002)(186003)(52116002)(1076003)(6666004)(38100700002)(5660300002)(66476007)(66556008)(6486002)(6506007)(8936002)(8676002)(44832011)(26005)(66946007)(4326008)(86362001)(2616005)(2906002)(956004)(316002)(478600001)(6512007)(83380400001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: fq8/fOcqJcVE+J4tBNUprZsAjiOBYvhxmln7NPNbJbrOfHKe5o7N1YwhMzJpf4e/Yd/acKXDM/WiV91/R9a1taNujP+1Mkm2BXOXxCWCykFmaMN7cSGfC5cZ3lnL+e1n38T2O1OJbxchyNKICCy1mChOCfnW0+w4w6TejLwJjKdjpLUS2yHtyTsDTkc2APJ/dyZucrVDiqtFLvxYw43OhOWmtb0lG4beZBmbsWeoeELwVvacV2zi8m8vbHfuffOkQEJUusaH8AkFdgpkIQtgzGR/gWHoyq8Hbm6Ccm7q784j0mL+3Hc1mcZanhoOwIdLWVkH90vLH3L+9asooKLqPVb0k1uB60hUwZIJNOA5ssp8YP/sI1l6U8tMpWrJYNRHU3bmk12f3o92yt8n42eoKuvH02PvrC/RqE5EaL/9Hhz1uch15dPPryGus+d0nhLHOec+J33WYq6XMqAfDz0KQYnk0yD2hgYRW0x/7AJ7tEkbTNpA3WYIJBfcSZwfz7tuXBiGDYbTFNT/UKiD4HkaKu11ek3SsPOw7UQOwr36Nk3NGcLatD4qcj6KN+sIVt6R8ZTiKSrW8Q1dzTVwM3Y3UBYWNWEgPQjnEcTSCgbLee+NCAPtLRXxTR190ulr2ln71Dv2lR/ylb8aEZnabyVD7MkOaQtlqkzcCJe4+878xMF++FGSXqlXIrOtDQiXwcaKOtoSjiD5nOJc2Z2cNR2f7ZTB7XwymHTGuCNfyY/RulthQbU6L3Cx6BAYYqFJSb46zk/aL+1Z7r4j3TNOXE5VcGhOwvu4GVJkdRz+wpwCJNmVhzO59ngRo9b0orcmzvyPl36lfFAF8S17DxsHQdzVZ00CX/Ferjda0EcWO+7b68Ruw4QlA2o/ZPFQQdEo4ONAMjZAG7IF4RNKeKMNbj2+CBINCbkE7LcM6MikR1YWgaqZblwQQ6ITcApsoza14Ya3UHoFO8/Bq9/O1T7+vplnpMyWvCKKYO93W4seHIHZ2r9nKvj/Njpl7t34cHRp7RV1PB0EbvlmiOLrN0dSPVNH5tLH1oEkGV03l7JOXcdPqb1VMckHF3S3SCJDycmKv9S4BNKrSRTT/i2lL46rJg6UwjclnORnTKyozloMgsfB/S4bNssNhoeWV4m4jMngMMB5Q69DSC+jGg9i2T4oRU6dO7F4O2a+WTwkdE37oaKzIKd+amm7FxQKBu+BjO6QK0nTeEN2GQc1fotfsnRAKFvq+DDi0Bh9wZ83BL4deFzACt96DOZ2944pGXA53qy1t50as8F/CXXiepHnwvAnFTZBhAHyc6csXmjVzHigIHLG1ExmmPPiEHlfjN3yCQiqhUjw X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 48df3b84-133d-43ee-c6c6-08d971d614bb X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Sep 2021 08:04:13.6546 (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: t+NeXQeKyHYgxtzK/XGZH45JKFkEZAefCQXbqUuWrIhY/WAXGJ+MfkXv+M1s1rRDhujXjFZI0t+97mrL1edf2A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8709 Subject: [dpdk-dev] [PATCH v2 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 | 4 + 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, 541 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 9cbe960dbe..0afd21812f 100644 --- a/doc/guides/rel_notes/release_21_11.rst +++ b/doc/guides/rel_notes/release_21_11.rst @@ -76,6 +76,10 @@ New Features * Added raw vector datapath API support +* **Updated NXP dpaa_sec crypto PMD.** + + * Added raw vector datapath API support + Removed Items ------------- diff --git a/drivers/crypto/dpaa_sec/dpaa_sec.c b/drivers/crypto/dpaa_sec/dpaa_sec.c index 19d4684e24..7534f80195 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) @@ -1745,8 +1742,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: @@ -2307,7 +2304,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; @@ -3115,7 +3112,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; } } @@ -3311,7 +3308,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 @@ -3362,7 +3362,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; @@ -3371,6 +3371,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 | @@ -3536,5 +3537,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 368699678b..f6e83d46e7 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; @@ -803,4 +828,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..ee0ca2e0d5 --- /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 Tue Sep 7 07:59:54 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 98137 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 17DCEA0C41; Tue, 7 Sep 2021 10:05:34 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 618C841187; Tue, 7 Sep 2021 10:04:17 +0200 (CEST) Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2078.outbound.protection.outlook.com [40.107.21.78]) by mails.dpdk.org (Postfix) with ESMTP id CEE3C4117F for ; Tue, 7 Sep 2021 10:04:16 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JqAY08CR1hetFuDUwuMnQ49xkhyk6tKJ1YIX2zW/wXj1zXQYBBgZzgXhV+cGy9a9nDq1PEZMZ9cDjWNOgox8tpRM1V4t4CP1xpRhXIiOSP3RoBI1r2EbvjWmIMYsqprBXMDoTBx/7QEOs9p6fnQMAIO2uL2J8MJA5gRa18paPiyf1vUyHw8YOihgIFs4Vx3odyC6MSmPPj12HKmLWQNtjaowjyKm7IZdoMIkRbyKfkC/nn5AtsvSvW9XeKtBRbFTsEx+vmGenEpsdLGzYOpFL1ufbtDANvBMYpQwJyuje6tnrJOJNHEN52b8xrZaKCZSSMzfIkTgqf97S/nkmaWl+A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=YqaXcWZmzes9i4Dns5vYrmIBnikEsdWyaDkbLdillH4=; b=Yw2NApbgt9zoRY/oCBz/OZipe+UJozWESLBSyQJQq1UeY6/XDjONn18gyB7ONqFa1zjc8gcIpbsUGyhhWY2ftDtczOsny1uvVfY+bjm+a0Lz2tp/lO1gBDUE20w/Uv7eISratwzy8ShS3ziYRPfoJ8tF4VNycLN4GG5/QRRoi8E+941dIIE8d8iIerim7zKUCT2n+ypSbendbkDW1laJHzHfpj5l3LnB22IeZfAQcxbrWBDidFfHYb7UdsakA0px5fw43iVcBW19ViCZt4gQxaLo3s5VTEhFSnybjugdyuAwnUgZ9gTLh5Oj6r6TXGbl1P+JevcPmZ/uNMIyqahvdg== 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=YqaXcWZmzes9i4Dns5vYrmIBnikEsdWyaDkbLdillH4=; b=T0is956Noh6jLzjbPCE7kliNmN0DnH1wV9FgFbfoi6W4FuOeCviGFxPwDD9eDQKtwg/eZHRpAnJYbQHjofhKfe8ayhrm1GCMwsbYWo8KXRqk1PhmNZR7eRIo6x1ezQJkd0Rj5Pzs/R2/efScVpzq9+nXq06l03k/YBskRHlmg6E= 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 DU2PR04MB8709.eurprd04.prod.outlook.com (2603:10a6:10:2dc::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4500.14; Tue, 7 Sep 2021 08:04:16 +0000 Received: from DU2PR04MB8630.eurprd04.prod.outlook.com ([fe80::945d:e362:712d:1b80]) by DU2PR04MB8630.eurprd04.prod.outlook.com ([fe80::945d:e362:712d:1b80%4]) with mapi id 15.20.4478.025; Tue, 7 Sep 2021 08:04:16 +0000 From: Hemant Agrawal To: dev@dpdk.org, gakhil@marvell.com Cc: konstantin.ananyev@intel.com, roy.fan.zhang@intel.com, Gagandeep Singh Date: Tue, 7 Sep 2021 13:29:54 +0530 Message-Id: <20210907075957.28848-13-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210907075957.28848-1-hemant.agrawal@nxp.com> References: <20210825071510.7913-1-hemant.agrawal@nxp.com> <20210907075957.28848-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG2PR02CA0068.apcprd02.prod.outlook.com (2603:1096:4:54::32) To DU2PR04MB8630.eurprd04.prod.outlook.com (2603:10a6:10:2dd::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from dpdk-xeon.ap.freescale.net (92.120.0.67) by SG2PR02CA0068.apcprd02.prod.outlook.com (2603:1096:4:54::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4478.19 via Frontend Transport; Tue, 7 Sep 2021 08:04:14 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 3f4b5762-7333-4ba4-06d3-08d971d61614 X-MS-TrafficTypeDiagnostic: DU2PR04MB8709: 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: STFlgnLlwPZ1gVVOMRSBDMaKtHO7B4bJaCWI1brJPAho4hPbdEMJZ7Z5CJsIq08WK6BgtrGuPNREXfbJoGpLpRaNO3+yqJ0hnN/86sBCp2ev9bVWp6Is4Fy+P/BB/Q/OgIKtKXVgM3U+85HNXOp2TOAoic9V9RvH6FQ8Lcxjh7wqheNa4FsgnylPV4tbvOn+OB81bgI+vmvnrALXhI3NvcSWzpOagAzywP2laDBQFnXL8/saosBp3c4BtJZZrTUYbSyxrk8CVLTfwxZQ/LayahsqlSAF+goRppS0I0WT/bSlxPsNrJiK3M/S5tkmZW7f04tj7CgBBG1MGCShBGYdGd35W/KItIJc9GSKLxYwLYquliaoxIdOmbne6HAlCdLU25xYRHTjRFpS28T0xcHrAksJc+0/yGizeIOgRV7OSi+ulEPTjoyS+tDiW6YeZ5Tk+PGuSfwAWSX2NBviKG4mq3OciWMYRmSASDhlzGleBCTZxYlNAud3hlfvyNvmHntZ+wArcpvtDCHEMLlqqD2uJrXTSl9ZfGGQUrhLMbZbhtBk2QkVjZJ9HnRDGDMJOB3m4+SBF/qGcnAomAzSeSWcTd8dlIqesSELAZWOoXAiPdpZnvgR4egFRK9BV3+P8P3Ql6tG0lQqiKqlKNl5kBbD4fs3o1HfKX8o19wu1pYR8Qd80c2hC98kjdHsuB6OiRO38QNlpn8GftXzUhZ3iPNFBA== 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)(396003)(376002)(346002)(39860400002)(136003)(366004)(36756003)(38350700002)(186003)(52116002)(1076003)(6666004)(38100700002)(5660300002)(66476007)(66556008)(6486002)(6506007)(8936002)(8676002)(44832011)(26005)(66946007)(4326008)(86362001)(2616005)(2906002)(956004)(316002)(478600001)(6512007)(83380400001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: WUTYWJlS467uDBHM1gBAF1MX3dnxeC/ket1vlxASxglBauvSuCe76T9PuQu0YzEa1McQtcVco+g96uEEW6gTOZMG5dKB0ZLnDRf+CBMzJenROYbaVhHdu+BQbxEP7mVz1kCls0GB6nAytLRf0aPy8yJX4EDdTRMcriTCckPKKHl3Z3DHjn+ULm1vgVYWzTE9QR18t0N1ziY73BQIXFZysbVxFHFR9NEaJmwFabnOjXbmuljpJX+KLEt0bl31wb5UbtCMOIk/7aeJQhH47aS+chFY89BwDapjtYSNIeJgexPaDTmfoGbYLDGcTTX+EleDla6tJqRA2hz8U4C2aAK6yIs70G/o91KxC1X7/ml8haKQJdLFSM5bDC7ZqBj6NUJbgB6CjNCdayFR6o17r5CX7KqsREVkS4HUh/WgpNSpH2YWrI5QihcwiyTXqh4Q7tIbQszmJ99wB0Jy93HXJGL1TMH3C1GHF1GQ+hZ4tTPyw9VjhOn4IfgXmnopSQV4J48aiwprTCheGDIhgafDKWjOFEjB8+2w9IIMIe4wlY3oUn09ILwXA1srLi760nLFgAlni68NIIzqdlpf5ryQdpe6gU8kq1FDMSkG0MdsjuEPi+yt8Xx1fRGgc7R3ZFITBIU1UEvGilLEu3ERBt+iLnSCzokWkTwfbF4BXAKMQOuq3etyVJGzHmTtmGseVcw4sdC8V0kvdvrRjQbhj9v1UHcMLIJD63sSkUM385mSWPbt/AOOOKkUqkTMETy81WnNAbS+md9IpBMkNZDg0hp7giAHHeAxrE1j9lra/khhzOxux4qEwtfKFjw36tH0tf8fRZQjTSFl9uOmx9EefbFKLW/rguaq015ie4UdlnX02tSi009sDueyz9Lzt+JWFU9X4ZRSITv5cFFXhch5knY0KuXoXTOfRfPpX5SraXw7guew0GeEsQwHTf/UEanG4bdMeUogQwOX9r7Pj3N4T2cVb0KdtnBH0vsQKBJ7AzSE0eaZX8FgfdLMULyZfmGL5CVIqgmEjwvhu+Q3HM7oHEu1StEeyBxWxIO6BqHNWHs9WXi3VWB8asrzVaB3K1eKFV7jxSIJB9FR2XePr6nABUQfAuNuhSJ3vWLeuRnr3yfRv5OIuJmSJMRUqXid1nUefnEgVuC87/Lk0rRw+i2TmJLEdzdK48FksLhfOYhCfsU2oq7ChymQIcaEc57eWwKVEbYlW5vltKzp0/fKU5+WIAPQ8pThdaCqTaY0sBsOLl4TINfHTeAOWNp2Hrt9ZOoZgsZ1ElR4wvPZ4Z1DwSyoDyOs7sLZYjkbKwHX7eqtY6glvTuNoE4zoqMz2NoUr5NpBTJpyp+T X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3f4b5762-7333-4ba4-06d3-08d971d61614 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Sep 2021 08:04:15.9277 (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: GqPGLmFFDjQNzTerpP8sz+qorvVn08eQ7By3/cBUlt15dFTv91LDkXv8aNLe6wV6ulIlWS7O/igEycwpe82Y4Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8709 Subject: [dpdk-dev] [PATCH v2 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 f6e83d46e7..2e0ab93ff0 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 ee0ca2e0d5..4e34629f18 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 Tue Sep 7 07:59:55 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 98138 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 3D2E6A0C41; Tue, 7 Sep 2021 10:05:40 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 6EBFD4112E; Tue, 7 Sep 2021 10:04:21 +0200 (CEST) Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2072.outbound.protection.outlook.com [40.107.21.72]) by mails.dpdk.org (Postfix) with ESMTP id 12F1E4118B for ; Tue, 7 Sep 2021 10:04:19 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=T4UaIpY6Fcf7DFgZgqselMmxFGZxmXRFn9LteYLM1vBPYBk/yz+ZI+H/e6DlNKdnwrpaiRmWowQhCsKqZ7AObD2Tx/J4GccgzrcG773tzINdpw7Jj/JkdxTnK1VM5bwgqACpgXU2ffHb8ZqIXxU95y+e+JsWbPtXQMrEpT/H7Umwowf7Oz40nJMDRn1UVh+doDd5YmMV5l0ib849HHK6PXak/WaPvez1AoDJe9DFGAAC7BNrM+DA8t8i28D9+v1cgwuFpqt3UDAGrag22d4/7uPKntAvYzCqwZDVn1bNaQCAz+D6WOjXmKDivmVizyFwh0XG+GW6RwEdw2iyM7NBsA== 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; bh=A8iJ+j/S+ByMy8rnX+hRPOi36XD4kCFUOgoetceQrj8=; b=YfZY3WZyag0jqgRxu0slwdnzJ5Hd0QQdYd6N7E5NmIoWNGDNmKlx32YB1wrTqL85Nhe7OVNA9h0VSfstUbkOfaavAI6GiB9a/W0eYX7y4hhlDWcZKOk5XYKUbau1bkMcuxdec7Kz47nmA6o7zwscZz7NzuG/yV5D2iVY4XU+y81+W5zVz2V6xJGIfKadzsBR3i0m647AI7JJtdXriqbRUZwiqlkxBeSqZgQgwdhRWhzlzOhxvcTkMNKPyDX7GwZR+/LQZ+09p10BezJfbLBrVIJI+hLY9KZaywus8WISl6jwYyAAh9Rhnn0OqKgGwlCg1DxaDQt7lupD3rXyrwPJXQ== 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=A8iJ+j/S+ByMy8rnX+hRPOi36XD4kCFUOgoetceQrj8=; b=Ut+UiHR305iceoD277lGfU2qGYVFxfQTNXETfR86NRVeFH3wPwTo4685kvSCIELrknd+kIRTTi8tKrgv/1tTN2P47XX9jVPqCX+U/pqQ3ivyh6JDLoTrMriMXgxlqDktIkGzQ2e9mPWvsZPzXPdQ58YjCjtqyefzqaquU9MP7Xs= 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 DU2PR04MB8709.eurprd04.prod.outlook.com (2603:10a6:10:2dc::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4500.14; Tue, 7 Sep 2021 08:04: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%4]) with mapi id 15.20.4478.025; Tue, 7 Sep 2021 08:04:18 +0000 From: Hemant Agrawal To: dev@dpdk.org, gakhil@marvell.com Cc: konstantin.ananyev@intel.com, roy.fan.zhang@intel.com, Gagandeep Singh Date: Tue, 7 Sep 2021 13:29:55 +0530 Message-Id: <20210907075957.28848-14-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210907075957.28848-1-hemant.agrawal@nxp.com> References: <20210825071510.7913-1-hemant.agrawal@nxp.com> <20210907075957.28848-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG2PR02CA0068.apcprd02.prod.outlook.com (2603:1096:4:54::32) To DU2PR04MB8630.eurprd04.prod.outlook.com (2603:10a6:10:2dd::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from dpdk-xeon.ap.freescale.net (92.120.0.67) by SG2PR02CA0068.apcprd02.prod.outlook.com (2603:1096:4:54::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4478.19 via Frontend Transport; Tue, 7 Sep 2021 08:04:16 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f0d2d585-2440-4172-3a18-08d971d61770 X-MS-TrafficTypeDiagnostic: DU2PR04MB8709: 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: eknhbyCiwSoljP5Slt4Rhle0d97O/M7AoncJeFdx83JZShyIjlvs81P7PivSb6g1zMbL5opZrpfDZil82epdh7ubBrVnRFoMDsfEfpJnc4rD6HsBB6Zk4O0dBsfFAZtbnT9C9JHi++aX7kLwa8YOf8fsEclSPZ81UF6f+1BtauDI2x0MJ2NY1a2YWQRs4NMOS22+Pl4+wuC/Z1V+jPFrDXV36vCrabiYNmboGCLWSN/8ozHpTBt4hFyoaSsQEnuB8xTJaKxeTMtRjhPJQFLr0JDoypnOt+J5uGjBWdUAdUpoSQtLLeHiNFNsifqehOAZF6iG37c4HqfRdmR02HFouNRicU8I7IdT+bSYbsid3pwlZ8RBpsO6v9sTDbu0pq+HBzjzmf4+YbnwyzK7Jrodq4SdUtV7//CS7PVRmgsx+IK98FrAn9Q/gmMoaUbVjOgzGE0eT6RyPdG3zLiYVH0c1T1CkxhRTWwzovJjaZNuGGRXAovv7/76QHXI7PsB/oWg+JKCZpgBnaQ+OvtxlUglQqKHFJHgKEWaVbERziwdUDUykJVnTMHKaEs/hBp5jEfQ/3HpKpz/hWTQHqhluZp8M5jh2HTdj4LKmGOjWDH69Z78rIypmfwDorkZxQpdNMRAk5ySNCfXLJe0xZrAK7HIqAf6gSv5EiJBjH5i4QsZb1/Npj/TOz9DJ3YEqkLVnYG1EIyPgOU0X9l94RiKVg2vnw== 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)(396003)(376002)(346002)(39860400002)(136003)(366004)(36756003)(38350700002)(186003)(52116002)(1076003)(6666004)(38100700002)(5660300002)(66476007)(66556008)(6486002)(6506007)(8936002)(8676002)(44832011)(26005)(66946007)(4326008)(86362001)(2616005)(2906002)(956004)(316002)(478600001)(6512007)(83380400001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 2ifY7kAhRzaHQTU7iTNoD70o8syxiwXxsV8m000Lu8CxOdjFhpmqHjZbNKkcKNMuJvFnpne8uWbYdzy1rRjg3RjsatRvXi2iGF2zgQ5KTG0qCJE3nV3NuHEETxyJeIXdlW6drcswID/Gfa9g69vclDDtNX7TdCOXufUES2k3pWhtIdjNJYef6iwqE0wdjvqHIZp9NzgbfI/S4N/hYlQAXSC01FqEzgge6rFCN7KDtEynpA6QVn0kDX7c5++3MopbPalnEb45zi1uXLK1yYuNv+MVPK0iXUE8Y84ut2g7Kvd2QmZmbWdyDfqJFxdd4uP5jX8s8M/ILyf8Ac/9ZaLd+oVNYTQCjMNtCXRxhDZzMIxULQho5LrER51Ozz2z8MDy/hUWwU/ww9VGsLKLIYgKnC82L9kFThq3UgqSt3pVjAHVlC62ZbM12lv1+lEAXAIR0RL0Q4WQDeigZiyYnYlftCouVcrREJZ6b4xCQ3hB5qPjHCpe3gYcWGQMOYGcMRY0+1tTiTqw657fGX9qwqUDQ0ObDgXxHxdj+0iB9HdErPbgsQYxiylUJNOxXcncE6/ViNe5ED90XtiKNqRL0o/nsNbrSuYrkAc1eYu3gIsEe7jAocdMj1ZK5ePXZvhUCBhTDbbUYYd3TmI02zeCdVrYZ4sXc6Jm2/JWot1HqpGuYrytk0PRRGt6QPFFXcwGDYRhhz3IraV0TkrWxddFGj2d4YAMge1ITT/LtS1RtLK5jTLMa2bFK1fg9GNBRPs1OJ+uL5nxUB1iEo9F1IuNDOapGBnr5SrJkwnbVjzJtXLoAzsOjZrwRxc1LhVcnW9tRRAUBRh+01ZP9EVD6KkkRuLNR335hRSv0nNeaTGX2/35wngjbODMjbx0MWZAHWYISIP598cadaSGhKxufmojRntQsuK+rOT+y4tt+8P57VlFRtvgeVP84rCC5YYGIYgb+4nfyLLQzSVHArXnMwrmjGLg61gCBbBMNGN9KmJZCCKdKK9El+U+u3opF+FYnn1jQVgD8wfLOZAdUD6CdAMGhjdzSldHxMiQcAPipg0Mog35/W0bb5/C7Gg2G7iZBiRVH3Qjjd1ox3dcO+VjWW3k3a18FlEFaPHwiKI815yVjzYRuihFhcMf3M75RlQvFJ1B+2R0kjt4/z/9Y73y6iBCSbeJB7Om0nQIAwf7JVU93tEv53HaMNXt7XSVPExi5Xd+HefEL+IATNSF5P+gcNd9uVta5UXxL8e1wVYDpWBh14A32lTGVx2YGGrBQtiiSS0z3lcBGc6uBL7fNiVaWpXo4n4IFS0Dq28g3uI0B8+8TYtigQxVsN8wUIFCFTRHL4P+vY4B X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: f0d2d585-2440-4172-3a18-08d971d61770 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Sep 2021 08:04:18.2146 (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: n9g3dr4HYXyTniWWJ/LNgn5XOyczQullHK2q/7jgG5j0/ZszL4Tb5rxO1NGMf3xTIFi7xWD69CWSajlReaq6mg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8709 Subject: [dpdk-dev] [PATCH v2 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 4e34629f18..b0c22a7c26 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 Tue Sep 7 07:59:56 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 98139 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 6AB20A0C41; Tue, 7 Sep 2021 10:05:48 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id DA8DE41193; Tue, 7 Sep 2021 10:04:23 +0200 (CEST) Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2067.outbound.protection.outlook.com [40.107.21.67]) by mails.dpdk.org (Postfix) with ESMTP id 732A44118D for ; Tue, 7 Sep 2021 10:04:22 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QDk6GokaXgn1Wkt6HpKQfqxVeXhL5fuJEDsGJpWMKss5nZjFaFtsBSslVT8/yTb5NW56K5fX64ViDmK51FpnrsOB/xF01GQtJHnlxQfgqnmSKrBX3RkA8OBV4XelzdOfi4o6m2Cx4KJJU2kaaM8Ex4TFkpSUb6UCUEYwzoC21nA3UcgJ6mGsrAu2y6mSW9I+QLTHDLKNqrrl1rQzVQFbGNVT+Lmo9JxLgdp9NW4aAC6s+B/1QZskyrjSdBa2ee295w0qVqzNSnexhftt5Q6rV0VBRjJ/JppwG1TDvgWJBdVGyDMNceCq+zLavRPxP/DKyoMGLg7N80cuCDNCYK/5gQ== 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; bh=UhM+ASv+OO7vwbI/wgetgQblf2Ks639IJ1hL23i/c+g=; b=jgEWugVMbnM1z5gzbE7axjuusDyaRo3/bUya0ynqnRsPGemWfn8O0XAILpX1gCv/5tkX+DlloemPTvqdqDnoEQjtGkxAv1jrlxpdIc10c6VC6GV4KpMRx3HQxnew/kOl755ql+Yw/luELUvAl1lavkMQKJkMSRu8uMoPZO22wpsCDqXhyMv2/rnCBPSTb1FrnCAizg5hAh3YFmn4pr5zYj/pK6OHOEXHDvOY0aq/azIt0I0fheMVPB2jxSRKS3uoS1E22qwEVpr+xsXIvBgnuTpIO/3s0jIRfjAEwNJ4UchNyBZE+db9h2BQthLrC7cOHgx667N1+3O5qsOCXi/FUQ== 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=UhM+ASv+OO7vwbI/wgetgQblf2Ks639IJ1hL23i/c+g=; b=lzrzgmHKfPZOtQlGjRVq6xWodW4BeFCb2asEBBQzfB6K8kWMcfYbNNDJso1UwcvcZql0/5IbJHWpKNaRt4Rj/ipBw4DEFAcZ3R2PsbsLvo0oXJVJjS4I8gYzj0nH1ucoMwnS3UJwzDyesw4kDnzDIFMoF3P40Md2KF5gpGuM6dc= 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 DU2PR04MB8709.eurprd04.prod.outlook.com (2603:10a6:10:2dc::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4500.14; Tue, 7 Sep 2021 08:04:21 +0000 Received: from DU2PR04MB8630.eurprd04.prod.outlook.com ([fe80::945d:e362:712d:1b80]) by DU2PR04MB8630.eurprd04.prod.outlook.com ([fe80::945d:e362:712d:1b80%4]) with mapi id 15.20.4478.025; Tue, 7 Sep 2021 08:04: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: Tue, 7 Sep 2021 13:29:56 +0530 Message-Id: <20210907075957.28848-15-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210907075957.28848-1-hemant.agrawal@nxp.com> References: <20210825071510.7913-1-hemant.agrawal@nxp.com> <20210907075957.28848-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG2PR02CA0068.apcprd02.prod.outlook.com (2603:1096:4:54::32) To DU2PR04MB8630.eurprd04.prod.outlook.com (2603:10a6:10:2dd::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from dpdk-xeon.ap.freescale.net (92.120.0.67) by SG2PR02CA0068.apcprd02.prod.outlook.com (2603:1096:4:54::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4478.19 via Frontend Transport; Tue, 7 Sep 2021 08:04:18 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e0859d31-22ef-4956-8400-08d971d618cb X-MS-TrafficTypeDiagnostic: DU2PR04MB8709: 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: 7164LGg5K+j6ypH7r92zPt2mtUHqbrGqwinjgwDK+9wElDrP5be4JXGYTS61MxVpSmPu4u4t0O7y26rYRho/ahIO+JHSaw4EKtHY2cfY6g/bPs/JucvalHBVFjApx4hvcg3JpCHzx9/ojA53/g4fSX41Gfi537aQh1wWz215xv3R0CpLyniLfnbo9R8tFDcw/uj/3jhSuvx+pLvK584a6yFzeaAQaMt3TASWHUk3/KIf6GaBggh5ZwtUE3w6ihu6rZ0tWwPScfqa1HpQ1AiMx+cpbL5Vx+Da/aDce+qCqd17ehdBPowvIjx5eUWD1sXSrb2HfYRSx9Ld4n2a/IdQZBRi+0q315NlB8x9A4eCY8aXvaRLVGrT4gOwK5f0rm/QHHybSxSln7L32resZ3BmaDteNjtxrU3YdhcROTfZQSynSDhdO2DiQNZnxbsc+38xDdF2n4pIenNnJ7H9TXMt5Tzz8kQ64mug+dNU2vPqb3XlcrkO/S/tXvM65A4/s3naxgc60c49eAqihY6jrS28GDLmIoOi2TqzUd4NXZT2oaQADjpqO7+Lmqv3JoqtGtlDQrtMpwQcgUkLWwKiOdrv9P02Znu7VK/tW/cn89ZzQuaJHkRu9Coam70iWzD52m7l2mW/eUwv/ISKTWvtY3/D+FYFlCdtxxyJmXbk1dPrqo6RRF7AocH6N5YGb1CkVOGU6gPQYzkLoNWAf+anLO/0Dg== 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)(396003)(376002)(346002)(39860400002)(136003)(366004)(36756003)(38350700002)(186003)(52116002)(1076003)(6666004)(38100700002)(5660300002)(66476007)(66556008)(6486002)(6506007)(8936002)(8676002)(44832011)(26005)(66946007)(4326008)(86362001)(2616005)(2906002)(956004)(316002)(478600001)(6512007)(83380400001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: NAUC3RItIGUvFO+m8nPPRHGCX5VBDdDCCrAkG1A2cK9I6cqgqGII4ivqnqnc4OxV+n86KU4rsswfDSJe6GwxJQ/6aUKs9ftu+/L/1U/A0UD7gkeKlu3f7eoLk2eSPibNMobliVWA3XlYq8SwPxOTpXUsvosNwTTDFsdz96Mt/Ldar4F90Uy2Gi1fUu2KOMwKR5KqfXX2egtrJUQYS7ixV89fBYUNhHUXsJn2AM9k0VolfUEehX+FYSWEItuT8k9SYXxkFjvRo4IEwxpHXbsycDa/bEJY/ygc7VUmT9XAmhjZ492Xx26OALTQ6NGY1Bu+zNZWhafpPjekfyzPNZ3P1ABcswmMloP5t78y+ZGwTs3aSzvnRCxRLUIuFTahv40rdpo9CVYaxvV9n1ou2Iv8l/8oJkJ0kQXU+C6k1froXCtHuX2vhLChY7HAaoZOrXiD2fPzqPzxw/oqqzSJKWizTHTLgGJEMkb+oJBQ45xT9WloyNaG0wzVCSE26+X/6PRkMRA2Ayotxi2BthjSvysTu+2GwzuPmAceG6rll12klDe4Ax0XT5IkbYSnoaS+ysbLhYA+WzzCh0Wb5Fs9O9e0wH5+o//5BzuKDsEnLgT7ilZUJJ5M8rPmMD9LJSAB9roNU7GGtEabX0w5mgVz21TtIKcPFNn8Fk3PJgI0/pxq5xymiAN1ySDMe3psCZZTBM9cPdSn5xTawEEsm05JwaPHwenkViI4ho/x8DmbVipRQskFX56WIGiTPUUak2m7YECgCZ3oCBnzaLz032D8s36N7RZBDBB8F5/2lHOEU+u1LRUYJnLbm7gFjV6AE9wz/7MtTuAqYtqH/RRnxZzwRHbrOenM14BUIUuMXZ/YfikVLflQiTlNYFSwRB3ijeHD7uZ/zt/G37+aUJ6ZKfWmkVgywEDM6pbnnY5MOS6RWPZnyMgNPZVrEc7LJpT+hFl0M8vbK28wkNCLM3LwRHHcWo386rz95YXhxLL+RPMDxylO8XxnDylaZeVWGoqXXex1UuJaOidaJncJasNhcufgVoYUzie7hU6x84uyU7eeQB3H9xB9X3OQJSA2IwKgsu5SqjxBD+7kvJn9D71B/lyXWBXLb8HKCtzjvCDiqGlgGhj1UToM7y5tRa2fbJGxMyqMNUXlBUvNmUaxZnUY9Mhr3iNkYBDLKnAQYRbu97v3MUxQJL6gE4Q4pAg0TXyFa0VB1ICeDJp2KgXiclt2W2n72iArDXL9t6K8bmNJbtVzkZH8ddwEKCuXs/qjlIOZoH0Fv0D+Lc9awV9x9A1yRYAvQgdDQI5h+Gyt+oIvqZDLMcLb6IfkCoEbrOc3PDgtNOHYOLdj X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: e0859d31-22ef-4956-8400-08d971d618cb X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Sep 2021 08:04:20.4567 (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: F7F7qyxuZVcEOTqAJAUYDhOgwJUhKT/F5uIJk6hpMi1b+7gdsTQZKLMPbK2QNXrpt2DjaOulOHLDjKEap0+eYw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8709 Subject: [dpdk-dev] [PATCH v2 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 ed63524edc..de4fb0f3d1 100644 --- a/app/test/test_cryptodev.c +++ b/app/test/test_cryptodev.c @@ -175,11 +175,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; @@ -315,6 +315,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) { @@ -8305,10 +8318,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; @@ -8492,8 +8516,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"); @@ -9934,6 +9973,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; @@ -9943,7 +9983,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 */ @@ -9980,7 +10024,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, @@ -10026,6 +10074,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; @@ -10040,6 +10092,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, @@ -10070,7 +10128,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, @@ -14835,6 +14897,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 Tue Sep 7 07:59:57 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 98140 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 86D4EA0C41; Tue, 7 Sep 2021 10:05:54 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 0516C41183; Tue, 7 Sep 2021 10:04:25 +0200 (CEST) Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-eopbgr70057.outbound.protection.outlook.com [40.107.7.57]) by mails.dpdk.org (Postfix) with ESMTP id 4145A4117E for ; Tue, 7 Sep 2021 10:04:24 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=i519eVhbQE+cV+tIDIBwi62vk0/Ujdt3gJoSXLTaXRa6m+z7HQy3s8M3ReLsnd0DhtZ4IyD3PRBEfRYR8bUmEusFi7RGV2n4HLJOLLsY3TPUgpRN+xGQdWlr+Zwmcgxj95SpjBdp6svu+gQ3Q6hoFab/oUFK+mUjuNWH+m4IK2BqW0bfR9D++ui/NYENqeP9sV3t8LcKzOo/Q9LJk8U/EiSBLATzw/q3AClGZ8XvC9EelxQguHPTKe0oks89rKWmotfxVJrw2K731olaFd2LCsvW8Qm7qDdZ7Syn8slvN39MtXxBW34uoXF6SkfITbu13MTbxezCVvau35Hkn3hmEw== 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; bh=GrRFv6BeDEQhw8fLlNpaf/RkXhSzfTK4MIPX2fF7TY8=; b=jz3r4DvfaGr4zc0XELmzPlbrMXCduu7LysdzUtyiGHSjRZPFkWTxRZAUxjvKhJ8W/sz7BBqUaI7NC2VrBxA2yK9/skiebcYh6Vmbqx8JVBsTV+hN0zW5uDl+JcAH0Q67AjxJANdgpxCjgBxMkbTxTPMQGC/+SILvHySxzB+QBk44WZD1rCPGCj4SWYyjJgvqgWW0nRB4uxpUfesOk5la4RCMWoDX35ZtCaCffAKft3U5C5bICY+vFyoUIuBpVyjTDkDAlJ0ZtIN9DgEOXtIXnuPglTYNzhgSnmUDwEG0KWN0zKf43G3L7FrNitTTIgkG5JYOKbDsrMfu2zXhLdNAdw== 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=GrRFv6BeDEQhw8fLlNpaf/RkXhSzfTK4MIPX2fF7TY8=; b=HUwQsBov2/CEl1SasW01oVgkpS0PLGYYNIYDYlAkBlolec+pUgliDxrxY5cG08ZzV7eE9bXa8AJ7Wl3/mbDzfz1XBA0dBQjW6eq6mvCnPnmfr4l5fAfM9NaXA37nIFeM5EzS/xD2TCKBA/W7BO53yOEA1k3yrvrBsBv5+jolVj0= 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 DU2PR04MB8824.eurprd04.prod.outlook.com (2603:10a6:10:2e3::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4500.14; Tue, 7 Sep 2021 08:04: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%4]) with mapi id 15.20.4478.025; Tue, 7 Sep 2021 08:04: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: Tue, 7 Sep 2021 13:29:57 +0530 Message-Id: <20210907075957.28848-16-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210907075957.28848-1-hemant.agrawal@nxp.com> References: <20210825071510.7913-1-hemant.agrawal@nxp.com> <20210907075957.28848-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG2PR02CA0068.apcprd02.prod.outlook.com (2603:1096:4:54::32) To DU2PR04MB8630.eurprd04.prod.outlook.com (2603:10a6:10:2dd::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from dpdk-xeon.ap.freescale.net (92.120.0.67) by SG2PR02CA0068.apcprd02.prod.outlook.com (2603:1096:4:54::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4478.19 via Frontend Transport; Tue, 7 Sep 2021 08:04:20 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: efefd91d-ad5e-41db-0e70-08d971d61a1f X-MS-TrafficTypeDiagnostic: DU2PR04MB8824: 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: Y0tJ5HOoFpMkngFs0/5U7atFxmnnQTbA+xn/qbZPk6Zf6HGBOZeQOXl+c6GXb8ZJttzQriFGBIu1j7c16hyxWxd4/4WK5C94DrZtCVCwCoHiN6S9w2g8HIVzczbK5w1FxXR7FELuhEsSEsay/BrVjOioF14AyauftmJCo15zXUIOh9ar2tONt3pUc+8wLd1o7aVmX9OkhKPxU6iwN7WWkP0SqdJRnEwTF3Ssu3rmZhV05XB+f7PnqmwtuCrpuOKFF2MDH4k/pw5NUef9KzaVzlrphIPpkXJOGPTZOspFTzwVksLJEF1VLb+JWvI1AjeHF55nobsBPJHWa7umxFub7vRGAUIXb418A2qHRtOg8HSvk/7wiWvlZzcfQOLyqAkdHEozQLC02hCYKBTVn8leZNp4QHnS2jjaCDI6F0nHQZs8B9QcxOpN4Z4nCfjgkI0xshYUmzETvoxzBag9uZx2rDkjRwDqC7zdtDqQvn+s6VLP6MNXUPKNbjGL3DqZLNoSRroztgXMXfxY6M1hPhbxO/r0qt+n0tWLmR1OwyGGPZ/3hBWoCBiVuxNlKkgPJPCG2nHSHH/6ma9VHCYbtg+D8TfJ4i0UVP4q28GR+UShKJLc4UzKe2e8uAo8aY223bkXQt0xOa0agDW0YwQ/Ht20ayICfcUIFkUd5lIR88bIkhzQsyHfhHkfr5oYe63riBtnPE+RHWa/JCITMh/BFIljtQ== 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)(136003)(39860400002)(366004)(396003)(346002)(376002)(2906002)(956004)(2616005)(86362001)(83380400001)(478600001)(316002)(6512007)(4326008)(52116002)(1076003)(5660300002)(38100700002)(6666004)(38350700002)(36756003)(186003)(26005)(44832011)(66946007)(6486002)(6506007)(66476007)(66556008)(8936002)(8676002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: GW9Lj0KIp7I5d2Ny/x3d4BzuqBs5W1DQIs/Miq37MyCJzvNEfbv9ohi212WbR42zpibW8RAMQOMPsA1uVVNDMcgRP/HTBi1MRwi/dxg14GZChXBnK0SqGQOHEgOdPu97mIbaBJfyQrLqyhGMXUYgqjDYL25PXdTuIS/dqAQKdGx0vjAm2ydxAGTiHjgC5C9iaozBluimKvgHem/tYjuLguIO8F5hp7eFrE0a8iOCBfpuNXXz6cUtRsjgBQO6ol1r5wXY87VGr4oLdwngvTl2ztxxle3UdrqwrkxjL3/3fplPS5/XrJsiNs8keUMSZoZ4JueMcU2qjtW5mz2052f6LGKAShciuX1YLZ8Iza6PuCPB2eKK3Po7J3By2cxj+aJNtcmczPcSCV4NJLvuxka5RMWQPnGPkLwYd9w5Dh6uKiUCSwwfV2y8XK8CjzFFdi1MsWjEDVuBffED+xTWiB+6UnYtCIuv1fPkCWwRPgBQC+1o/6tljSSVIb0w+0p7i1xktwycWHbg8wXQmzLq/p0nGCor9u0qFxnszFUVg34U/xfmnIsJ8ShCCJXsKv/ZrnjisqKgZkT4LG3twJ/76Mhc+bFy23iMvFUDI282wbGLuN6jSow9+O5ajFx6ZR/Glj5lAw87zY03jw44IyyGNIXUyLmHvsrPl0fTEXpaAHWOggZS2gRKewa3mI2PgnM6ZGskVL9X4vmaWOry8EXftjMLwcOAvPKOyfGLxYfFB/wTMTuQ7LWgd/P4qWDTfMIHTUo/GJbhx+GwZ1oT4v+78HP6u16oXJTwS2pjHmY9OyqJpoAdGdsPZ03Ut+a+PMZD8Z1aHZgYttlWUbD+Mu5EVgJRlcZfAAaglCK9UaPQihE4iLkxd6Dq1oDjFVbFmhj1MEuKN0M1AEm3PmPyCNo6C1jh8UBoj0g1LrZ0GOWSo3qHxgQKb8VPx5dXwSGcRQ+dupVscedOCE5aQO3nmLER1Dppgc1z2Y3eCqIsH6zEviUo08Ab8pvw0UgnPF5AngKV6Im/uVaSCtCgWbXr6WnUE3hMx4QBrEXnta6P6/ErDVUR6GQ8SU57J5LG/gbrJ0KCvMUdX/1KVg9oXKtKncNU/4Zlf4z8LLigbXp08TH5viQLV062sBEMfZ1KOA+V14L9LSKd2A9wjEuCQj+xFMF8ZcHp7LcDx+Fhe7yvjnDh3lla8+jY/U1Oex08v0HmzI/B2Tdrwyvkh7ax0bY8XRr0anlmT/cveqdnuaNeqHQanexq5A2QpitBep/QTg44xvoFlym7otOMlfJJ8rEjRPFTqLt8Bq79Wv6fSfbxzcQv0OL23dSPX6M5jeYTE0zjBIhkDZZJ X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: efefd91d-ad5e-41db-0e70-08d971d61a1f X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8630.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Sep 2021 08:04:22.7248 (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: LrmejgaRpME9ZWSZBz/Ahq8GJBgAlk4bs0KDeLFzU55x1hVRXajr2ru6nWcQ9MtoCr2+YJUXTd6Tcjt2vcVbLQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8824 Subject: [dpdk-dev] [PATCH v2 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 de4fb0f3d1..0ee603b1b5 100644 --- a/app/test/test_cryptodev.c +++ b/app/test/test_cryptodev.c @@ -368,6 +368,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; @@ -4152,6 +4153,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; @@ -4207,7 +4218,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"); @@ -4267,6 +4282,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, @@ -4301,7 +4322,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"); @@ -4428,7 +4453,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"); @@ -4559,7 +4588,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; @@ -4617,7 +4655,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; @@ -12653,10 +12695,13 @@ test_authenticated_decryption_fail_when_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