From patchwork Thu Feb 10 10:58:46 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gagandeep Singh X-Patchwork-Id: 107229 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 3B6BDA00C2; Thu, 10 Feb 2022 11:59:19 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 5F1CE41C3C; Thu, 10 Feb 2022 11:59:15 +0100 (CET) Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-eopbgr60078.outbound.protection.outlook.com [40.107.6.78]) by mails.dpdk.org (Postfix) with ESMTP id A1C0E410E5 for ; Thu, 10 Feb 2022 11:59:14 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SX3PXDVakJtcW8vupcvfx0VIbvZpos2O6hxlV/Pjhe8WE8zX5kt9ibHb4vYzV2l9xwZcNUZBWWVCfuq7+Q5PYzyF6uFIG/QgDI830mEbqsI3pT4ozXdQuYcK+7fuDMc4uOr6a9boy0Dw2b9uqiBXyuRgnLzrKWmc09+QTUJvaCsJ8bojEIXt72NaY5koGfd5y4RXiYiP2GvHgFx+g2yUtI7cH/YavK/FY3acNTFQhwHx64h5CU8oM6vTehccmSOARbxsr8U6inCN4KWj9b4oKiUyyEMKfQstPUnUaLEZY5+OEDgOREdbwebf57w7okacESe71DZjWiBTSRgTS6yWlQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=RgKlvMvfflr2Pm3oyGX0OE7r1RfPT4/UPKxjLK6IbzE=; b=dd1ESfGnw5D7jWQUAozw9PJZKBPlwlcpYmiPB6hQDsWvLIOGORAm4dPHqrjUq73e0hrMo/NM+Jo638GthHs1P6pw5d0dgnM/9ZzYKTK+g0wJ4Yyu8AQpSk9ZDgTWfRU6QaFQBSLYoQN/TDebs3oespNLNEOGmPNKzxNsCZen5feJ9lr8aoqu0xMq4VtUKUhU2dvwy40/KFTNrqlxdOqwArVBYEVtwNEhwOxUdj5qwm6rnlDpGV2XUYYZgZ/3PWJ2KWytKiU/aLA9wEPnhNGHeRgJNIdXivQw26EBUpnUhOMmsVRIUZt0EQsSsdeTwqKJEC4X9VXOVeSXla8MPoxsjg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; 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=RgKlvMvfflr2Pm3oyGX0OE7r1RfPT4/UPKxjLK6IbzE=; b=a1muonNLfv5H0sbx/CNNvUxGRbtJBf5X8q7YAktnpO9TdPGCmsohXsvsCDiubckiqIO7dd6LW5CXEBlsdvlSwXAchMo9S/cHWGKP487KUJCsPAkhxw7/gbNU1EBoOqyWlV029PyE7wX6lqOc7NBhyJnYWqq2LONnJYaD5ZM0n3s= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AS8PR04MB8198.eurprd04.prod.outlook.com (2603:10a6:20b:3b0::14) by AM6PR04MB4294.eurprd04.prod.outlook.com (2603:10a6:209:4a::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4975.11; Thu, 10 Feb 2022 10:59:12 +0000 Received: from AS8PR04MB8198.eurprd04.prod.outlook.com ([fe80::4146:965b:5645:9269]) by AS8PR04MB8198.eurprd04.prod.outlook.com ([fe80::4146:965b:5645:9269%4]) with mapi id 15.20.4975.011; Thu, 10 Feb 2022 10:59:12 +0000 From: Gagandeep Singh To: gakhil@marvell.com, dev@dpdk.org Cc: Franck LENORMAND , Gagandeep Singh Subject: [PATCH v4 1/7] common/dpaax: caamflib: Remove code related to SEC ERA 1 to 7 Date: Thu, 10 Feb 2022 16:28:46 +0530 Message-Id: <20220210105852.1268506-2-g.singh@nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220210105852.1268506-1-g.singh@nxp.com> References: <20220210043136.304845-2-g.singh@nxp.com> <20220210105852.1268506-1-g.singh@nxp.com> X-ClientProxiedBy: SG2PR03CA0092.apcprd03.prod.outlook.com (2603:1096:4:7c::20) To AS8PR04MB8198.eurprd04.prod.outlook.com (2603:10a6:20b:3b0::14) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 8e3b8629-fe2b-47a6-580b-08d9ec845eaf X-MS-TrafficTypeDiagnostic: AM6PR04MB4294:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:3044; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: wv+VtVzv9JdkxQ3Wc636/p0kP7x5oNhuhCvmNheH2Zf2VVJzuBWg8RElVZTa0xBorXUX3tymJ2CgfVEQwwp8V81+68kCfGtCn3fTNqSInN/g4BzOblTCKamG332PAGAF+bMTVa4/JsYqM/jC4Xz8dxWdSnZ34jYMF+HBrCe79DHZdaIblIdo1+Tw//7cAKu7JO6d0T7pwJWis1fwOut9m4/XNzypDLeuidK2Ubd6tXG+XZr18gF/AOpoJAK8rYenHFXil4X6v/7Fp8dtQXx7nh6iKWIl8jZrYwO0jQr7Sj5o9fx8x0kaielqv0i/4nERJVlIm2QSNj8YlP3yq9/qnM1cWdxF+w2nVWlC6uk3IswcPgaL2qn2GXgGfgnfEfEhLYlNqiT75B05Gzr0aTVKqOcadGoz3xYSWxCExQJ3XThDl6zO+kFTZhNGfyy6Ua62Zxsh4m3hC8jDUAHTUL+T3OGWaz3L6XFGGKXPv4KWzpFMUt+qw+em6PqFRxhA7PM6W/Y4UudGyh1grUzkXUbB00baWhE7uFNHWsxmD4OjDJyIQsNcS1Cmp6vN6mev5jysp3y/F6xyVBuc9Z/HlvI/HT/7Fi781ZFliTbCZBidwKbZvA252mil5Wf/N+DG6Dm+4o3LDeb9BxaNw5K9025VE2F4SpcBrgpQhqKbhNXEObF31I/Usiqn60xlkAs1pbHrD3/xb18GqaBj/Ns7zE4xkA== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS8PR04MB8198.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(4636009)(366004)(6666004)(1076003)(30864003)(186003)(86362001)(6486002)(26005)(316002)(508600001)(66556008)(4326008)(66476007)(8676002)(54906003)(66946007)(2906002)(5660300002)(2616005)(8936002)(6512007)(55236004)(36756003)(83380400001)(38350700002)(38100700002)(52116002)(6506007)(579004)(559001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: jIltB1+lmit2Eyv3Gy+hGVElBFviat4i2H3Xv3B7UvjmEVaA1iWkLXBmIQbQo+6gT3nCPXMCbvRKJYQTKWO7FqL+lPLBIrWFRh9bYmgVNHMaqK1kWwmTr/5cpQN1embZlytdAImgnoRMysFYhcg7IavD5YhBo5ys2R8+Zwy+PHGCl39yn7rqYaFr6YrD0v3Ra2aN5v4VPBEqXfM09SqGlYUPzw+45eCDsPUE8AIL5/rn+SE1m6wjG2xjhZrfxmYwQlNKTKUlBDEnnIcXnsoh93i03tHBpPbAyOCwRoUZNUxT5px8CVqLLtNXoo2rx21ClNDbo5htHnkW8+ZYrNe+JGvZ5d/mTdc8ox2G6pCKsMyHdE/hy7ZVfG4FZDsyFCXlRt+2NJ0x389yHbGqJbJi4uIGnbHdicsJmp0SJZI0+DyudCApPTv2nHZEI0jZ6QdX0FsptcpWapz8ey4qnj0vbumuJaAiFIc2TBdX00AaOcDul/PTBdP78KZQ2F7nltsfcxzscerjbK3nB978h8umx9fTntFy+hipkFW6xfbBsHLQ3zyIsnsWVZHAbyZvbEJEITnD/s4N1XmhmQ9Ja25mpCSwfN5trD1Vf9nONLEfqj64y5Qd8iVngo04KwcqkCGqTP8dKB9zVA6cLCSQPkyB3KGyXlT6Kmh056MBmFe1IJFI3SuE4ijP3gkhhyJbAiMO95EgxNGBA70xIa9hBUBKW8s397YXjt2QEi1ZOg9HtyaQScBPnSk128MtDcWPw/pYHJLD+bIOfUTPiXdIvr8rr7zVRWAFr3vduKrZkiFfdverDYPZzdO9tPbGNIKrUZXplkuGM0pJkgCVTv2HIsLBW+Tz9qcYi+Xo6hVbRZkltwV9j2D9TtXwnKWCsdyU6hL+rfJ50byTcytF4vTXiX1qLQjECyg+AknZ7C1exJw+qYfYeBy8UzByaL1K8mJ9cPrzGySnZAMc11CYvWHuBzoqSiJLRJkygubZWKIB3KrjD5Sn4+u6YvVZCypFIScMDdgr3fll71HUJ3D5kc3zU4kJQ7YDQ6T+F47LJrgSkEwuJK57mVGDFoPyVBaY7BrLSyPjsyMenyuvt7GJWFLNvfgffUpkD4NJH+eciQIDzaEkjHUmrge/b27HymKQXc+ImggfBSHzaAbWZWzxNbaFnXo5ti3mDbqhlo721x0zDkDUUpBtDeRpifGfY7pIfvudX4dGzCVY1p4dAT/9OtTTT7NxNlekGBBaZ/XpWCh7+8Ev/O7N+lz1b3QKBn4ZOS36JArIRr3aUZ5l6TZEr8PqNGKBSQQu1b1BIETTP/qU2pgtpQencZ1W7iQm4suvwbLYLr+/Latw2cQAaJJpyQ1S8XQo9y6Bq7E4wqpMGY5ccFGJOLtZHc4mCRKVBEH0QMy4Wa4TvTee5fBptr7juRU0Kv/dcL/lSfuR5e28K76KGP9MkP8CASiLgZtZx/3HIsrq6OkVclNBHIBueVTsTu5HLFssadYWLYUEkN0pf1vjah9Bx4VO4iXMX/p7lfmwf4yodpHon0JDV76krwbZDHofsu6ymi9LXTVrJG9Vzr19SVOiTSM= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8e3b8629-fe2b-47a6-580b-08d9ec845eaf X-MS-Exchange-CrossTenant-AuthSource: AS8PR04MB8198.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Feb 2022 10:59:12.3973 (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: M7KxnU3jPOUgTC+IZkxIOH4EzOILGOTsH0iQwMLlZEViQ5cZfluHeXsmWN0go6Wp X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR04MB4294 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 From: Franck LENORMAND DPAA1 and DPAA2 platforms use SEC ERA 8 and 10 only. This patch removes code in SDAP and PDCP header related to these ERA to simplify the codebase: - Simplify logic using RTA_SEC_ERA_<> macro - Remove era_2_sw_hfn_ovrd dedicated to RTA_SEC_ERA_2 Signed-off-by: Franck LENORMAND Signed-off-by: Gagandeep Singh --- drivers/common/dpaax/caamflib/desc/pdcp.h | 939 ++++---------------- drivers/common/dpaax/caamflib/desc/sdap.h | 91 +- drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c | 14 +- drivers/crypto/dpaa_sec/dpaa_sec.c | 14 +- 4 files changed, 183 insertions(+), 875 deletions(-) diff --git a/drivers/common/dpaax/caamflib/desc/pdcp.h b/drivers/common/dpaax/caamflib/desc/pdcp.h index 8e8daf5ba8..2fe56c53c6 100644 --- a/drivers/common/dpaax/caamflib/desc/pdcp.h +++ b/drivers/common/dpaax/caamflib/desc/pdcp.h @@ -329,91 +329,35 @@ pdcp_insert_cplane_null_op(struct program *p, struct alginfo *cipherdata __maybe_unused, struct alginfo *authdata __maybe_unused, unsigned int dir, - enum pdcp_sn_size sn_size __maybe_unused, - unsigned char era_2_sw_hfn_ovrd __maybe_unused) + enum pdcp_sn_size sn_size __maybe_unused) { - LABEL(local_offset); - REFERENCE(move_cmd_read_descbuf); - REFERENCE(move_cmd_write_descbuf); - - if (rta_sec_era > RTA_SEC_ERA_2) { - MATHB(p, SEQINSZ, ADD, ZERO, VSEQINSZ, 4, 0); - if (dir == OP_TYPE_ENCAP_PROTOCOL) - MATHB(p, SEQINSZ, ADD, PDCP_MAC_I_LEN, VSEQOUTSZ, 4, - IMMED2); - else - MATHB(p, SEQINSZ, SUB, PDCP_MAC_I_LEN, VSEQOUTSZ, 4, - IMMED2); - } else { - MATHB(p, SEQINSZ, ADD, ONE, VSEQINSZ, 4, 0); - MATHB(p, VSEQINSZ, SUB, ONE, VSEQINSZ, 4, 0); - - if (dir == OP_TYPE_ENCAP_PROTOCOL) { - MATHB(p, SEQINSZ, ADD, PDCP_MAC_I_LEN, VSEQOUTSZ, 4, - IMMED2); - MATHB(p, VSEQINSZ, SUB, ONE, MATH0, 4, 0); - } else { - MATHB(p, VSEQINSZ, SUB, PDCP_MAC_I_LEN, VSEQINSZ, 4, - IMMED2); - MATHB(p, SEQINSZ, SUB, PDCP_MAC_I_LEN, VSEQOUTSZ, 4, - IMMED2); - MATHB(p, VSEQOUTSZ, SUB, ONE, MATH0, 4, 0); - } - - MATHB(p, MATH0, ADD, ONE, MATH0, 4, 0); + MATHB(p, SEQINSZ, ADD, ZERO, VSEQINSZ, 4, 0); + if (dir == OP_TYPE_ENCAP_PROTOCOL) + MATHB(p, SEQINSZ, ADD, PDCP_MAC_I_LEN, VSEQOUTSZ, 4, + IMMED2); + else + MATHB(p, SEQINSZ, SUB, PDCP_MAC_I_LEN, VSEQOUTSZ, 4, + IMMED2); - /* - * Since MOVELEN is available only starting with - * SEC ERA 3, use poor man's MOVELEN: create a MOVE - * command dynamically by writing the length from M1 by - * OR-ing the command in the M1 register and MOVE the - * result into the descriptor buffer. Care must be taken - * wrt. the location of the command because of SEC - * pipelining. The actual MOVEs are written at the end - * of the descriptor due to calculations needed on the - * offset in the descriptor for the MOVE command. - */ - move_cmd_read_descbuf = MOVE(p, DESCBUF, 0, MATH0, 0, 6, - IMMED); - move_cmd_write_descbuf = MOVE(p, MATH0, 0, DESCBUF, 0, 8, - WAITCOMP | IMMED); - } MATHB(p, VSEQINSZ, SUB, PDCP_NULL_MAX_FRAME_LEN, NONE, 4, IMMED2); JUMP(p, PDCP_MAX_FRAME_LEN_STATUS, HALT_STATUS, ALL_FALSE, MATH_N); - if (rta_sec_era > RTA_SEC_ERA_2) { - if (dir == OP_TYPE_ENCAP_PROTOCOL) - MATHB(p, VSEQINSZ, ADD, ZERO, MATH0, 4, 0); - else - MATHB(p, VSEQOUTSZ, ADD, ZERO, MATH0, 4, 0); - } + if (dir == OP_TYPE_ENCAP_PROTOCOL) + MATHB(p, VSEQINSZ, ADD, ZERO, MATH0, 4, 0); + else + MATHB(p, VSEQOUTSZ, ADD, ZERO, MATH0, 4, 0); + SEQFIFOSTORE(p, MSG, 0, 0, VLF); SEQFIFOLOAD(p, MSG1, 0, VLF | LAST1 | FLUSH1); - if (rta_sec_era > RTA_SEC_ERA_2) { - MOVE(p, AB1, 0, OFIFO, 0, MATH0, 0); - } else { - SET_LABEL(p, local_offset); - - /* Shut off automatic Info FIFO entries */ - LOAD(p, 0, DCTRL, LDOFF_DISABLE_AUTO_NFIFO, 0, IMMED); - /* Placeholder for MOVE command with length from M1 register */ - MOVE(p, IFIFOAB1, 0, OFIFO, 0, 0, IMMED); - /* Enable automatic Info FIFO entries */ - LOAD(p, 0, DCTRL, LDOFF_ENABLE_AUTO_NFIFO, 0, IMMED); - } + MOVE(p, AB1, 0, OFIFO, 0, MATH0, 0); if (dir == OP_TYPE_ENCAP_PROTOCOL) { MATHB(p, MATH1, XOR, MATH1, MATH0, 8, 0); MOVE(p, MATH0, 0, OFIFO, 0, 4, IMMED); } - if (rta_sec_era < RTA_SEC_ERA_3) { - PATCH_MOVE(p, move_cmd_read_descbuf, local_offset); - PATCH_MOVE(p, move_cmd_write_descbuf, local_offset); - } - return 0; } @@ -422,66 +366,21 @@ insert_copy_frame_op(struct program *p, struct alginfo *cipherdata __maybe_unused, unsigned int dir __maybe_unused) { - LABEL(local_offset); - REFERENCE(move_cmd_read_descbuf); - REFERENCE(move_cmd_write_descbuf); - - if (rta_sec_era > RTA_SEC_ERA_2) { - MATHB(p, SEQINSZ, ADD, ZERO, VSEQINSZ, 4, 0); - MATHB(p, SEQINSZ, ADD, ZERO, VSEQOUTSZ, 4, 0); - } else { - MATHB(p, SEQINSZ, ADD, ONE, VSEQINSZ, 4, 0); - MATHB(p, VSEQINSZ, SUB, ONE, VSEQINSZ, 4, 0); - MATHB(p, SEQINSZ, ADD, ONE, VSEQOUTSZ, 4, 0); - MATHB(p, VSEQOUTSZ, SUB, ONE, VSEQOUTSZ, 4, 0); - MATHB(p, VSEQINSZ, SUB, ONE, MATH0, 4, 0); - MATHB(p, MATH0, ADD, ONE, MATH0, 4, 0); + MATHB(p, SEQINSZ, ADD, ZERO, VSEQINSZ, 4, 0); + MATHB(p, SEQINSZ, ADD, ZERO, VSEQOUTSZ, 4, 0); - /* - * Since MOVELEN is available only starting with - * SEC ERA 3, use poor man's MOVELEN: create a MOVE - * command dynamically by writing the length from M1 by - * OR-ing the command in the M1 register and MOVE the - * result into the descriptor buffer. Care must be taken - * wrt. the location of the command because of SEC - * pipelining. The actual MOVEs are written at the end - * of the descriptor due to calculations needed on the - * offset in the descriptor for the MOVE command. - */ - move_cmd_read_descbuf = MOVE(p, DESCBUF, 0, MATH0, 0, 6, - IMMED); - move_cmd_write_descbuf = MOVE(p, MATH0, 0, DESCBUF, 0, 8, - WAITCOMP | IMMED); - } MATHB(p, SEQINSZ, SUB, PDCP_NULL_MAX_FRAME_LEN, NONE, 4, IFB | IMMED2); JUMP(p, PDCP_MAX_FRAME_LEN_STATUS, HALT_STATUS, ALL_FALSE, MATH_N); - if (rta_sec_era > RTA_SEC_ERA_2) - MATHB(p, VSEQINSZ, ADD, ZERO, MATH0, 4, 0); + MATHB(p, VSEQINSZ, ADD, ZERO, MATH0, 4, 0); SEQFIFOLOAD(p, MSG1, 0, VLF | LAST1 | FLUSH1); - if (rta_sec_era > RTA_SEC_ERA_2) { - MOVE(p, AB1, 0, OFIFO, 0, MATH0, 0); - } else { - SET_LABEL(p, local_offset); - /* Shut off automatic Info FIFO entries */ - LOAD(p, 0, DCTRL, LDOFF_DISABLE_AUTO_NFIFO, 0, IMMED); - - /* Placeholder for MOVE command with length from M0 register */ - MOVE(p, IFIFOAB1, 0, OFIFO, 0, 0, IMMED); - - /* Enable automatic Info FIFO entries */ - LOAD(p, 0, DCTRL, LDOFF_ENABLE_AUTO_NFIFO, 0, IMMED); - } + MOVE(p, AB1, 0, OFIFO, 0, MATH0, 0); SEQFIFOSTORE(p, MSG, 0, 0, VLF); - if (rta_sec_era < RTA_SEC_ERA_3) { - PATCH_MOVE(p, move_cmd_read_descbuf, local_offset); - PATCH_MOVE(p, move_cmd_write_descbuf, local_offset); - } return 0; } @@ -490,13 +389,12 @@ pdcp_insert_cplane_int_only_op(struct program *p, bool swap __maybe_unused, struct alginfo *cipherdata __maybe_unused, struct alginfo *authdata, unsigned int dir, - enum pdcp_sn_size sn_size, - unsigned char era_2_sw_hfn_ovrd) + enum pdcp_sn_size sn_size) { uint32_t offset = 0, length = 0, sn_mask = 0; /* 12 bit SN is only supported for protocol offload case */ - if (rta_sec_era >= RTA_SEC_ERA_8 && sn_size == PDCP_SN_SIZE_12) { + if (sn_size == PDCP_SN_SIZE_12) { KEY(p, KEY2, authdata->key_enc_flags, authdata->key, authdata->keylen, INLINE_KEY(authdata)); @@ -526,9 +424,6 @@ pdcp_insert_cplane_int_only_op(struct program *p, return -ENOTSUP; } - LABEL(local_offset); - REFERENCE(move_cmd_read_descbuf); - REFERENCE(move_cmd_write_descbuf); switch (authdata->algtype) { case PDCP_AUTH_TYPE_SNOW: @@ -538,14 +433,7 @@ pdcp_insert_cplane_int_only_op(struct program *p, SEQLOAD(p, MATH0, offset, length, 0); JUMP(p, 1, LOCAL_JUMP, ALL_TRUE, CALM); - if (rta_sec_era > RTA_SEC_ERA_2 || - (rta_sec_era == RTA_SEC_ERA_2 && - era_2_sw_hfn_ovrd == 0)) { - SEQINPTR(p, 0, length, RTO); - } else { - SEQINPTR(p, 0, 5, RTO); - SEQFIFOLOAD(p, SKIP, 4, 0); - } + SEQINPTR(p, 0, length, RTO); if (swap == false) { MATHB(p, MATH0, AND, sn_mask, MATH1, 8, @@ -580,40 +468,11 @@ pdcp_insert_cplane_int_only_op(struct program *p, MATHB(p, SEQINSZ, SUB, PDCP_MAC_I_LEN, MATH1, 4, IMMED2); } else { - if (rta_sec_era > RTA_SEC_ERA_2) { - MATHB(p, SEQINSZ, SUB, ZERO, MATH1, 4, - 0); - } else { - MATHB(p, SEQINSZ, ADD, ONE, MATH1, 4, - 0); - MATHB(p, MATH1, SUB, ONE, MATH1, 4, - 0); - } + MATHB(p, SEQINSZ, SUB, ZERO, MATH1, 4, 0); } - if (rta_sec_era > RTA_SEC_ERA_2) { - MATHB(p, MATH1, SUB, ZERO, VSEQINSZ, 4, 0); - MATHB(p, MATH1, SUB, ZERO, VSEQOUTSZ, 4, 0); - } else { - MATHB(p, ZERO, ADD, MATH1, VSEQINSZ, 4, 0); - MATHB(p, ZERO, ADD, MATH1, VSEQOUTSZ, 4, 0); - - /* - * Since MOVELEN is available only starting with - * SEC ERA 3, use poor man's MOVELEN: create a MOVE - * command dynamically by writing the length from M1 by - * OR-ing the command in the M1 register and MOVE the - * result into the descriptor buffer. Care must be taken - * wrt. the location of the command because of SEC - * pipelining. The actual MOVEs are written at the end - * of the descriptor due to calculations needed on the - * offset in the descriptor for the MOVE command. - */ - move_cmd_read_descbuf = MOVE(p, DESCBUF, 0, MATH1, 0, 6, - IMMED); - move_cmd_write_descbuf = MOVE(p, MATH1, 0, DESCBUF, 0, - 8, WAITCOMP | IMMED); - } + MATHB(p, MATH1, SUB, ZERO, VSEQINSZ, 4, 0); + MATHB(p, MATH1, SUB, ZERO, VSEQOUTSZ, 4, 0); SEQFIFOSTORE(p, MSG, 0, 0, VLF); ALG_OPERATION(p, OP_ALG_ALGSEL_SNOW_F9, OP_ALG_AAI_F9, @@ -622,25 +481,9 @@ pdcp_insert_cplane_int_only_op(struct program *p, ICV_CHECK_DISABLE : ICV_CHECK_ENABLE, DIR_ENC); - if (rta_sec_era > RTA_SEC_ERA_2) { - SEQFIFOLOAD(p, MSGINSNOOP, 0, + SEQFIFOLOAD(p, MSGINSNOOP, 0, VLF | LAST1 | LAST2 | FLUSH1); - MOVE(p, AB1, 0, OFIFO, 0, MATH1, 0); - } else { - SEQFIFOLOAD(p, MSGINSNOOP, 0, - VLF | LAST1 | LAST2 | FLUSH1); - SET_LABEL(p, local_offset); - - /* Shut off automatic Info FIFO entries */ - LOAD(p, 0, DCTRL, LDOFF_DISABLE_AUTO_NFIFO, 0, IMMED); - /* - * Placeholder for MOVE command with length from M1 - * register - */ - MOVE(p, IFIFOAB1, 0, OFIFO, 0, 0, IMMED); - /* Enable automatic Info FIFO entries */ - LOAD(p, 0, DCTRL, LDOFF_ENABLE_AUTO_NFIFO, 0, IMMED); - } + MOVE(p, AB1, 0, OFIFO, 0, MATH1, 0); if (dir == OP_TYPE_DECAP_PROTOCOL) SEQFIFOLOAD(p, ICV2, 4, LAST2); @@ -655,14 +498,7 @@ pdcp_insert_cplane_int_only_op(struct program *p, authdata->keylen, INLINE_KEY(authdata)); SEQLOAD(p, MATH0, offset, length, 0); JUMP(p, 1, LOCAL_JUMP, ALL_TRUE, CALM); - if (rta_sec_era > RTA_SEC_ERA_2 || - (rta_sec_era == RTA_SEC_ERA_2 && - era_2_sw_hfn_ovrd == 0)) { - SEQINPTR(p, 0, length, RTO); - } else { - SEQINPTR(p, 0, 5, RTO); - SEQFIFOLOAD(p, SKIP, 4, 0); - } + SEQINPTR(p, 0, length, RTO); if (swap == false) { MATHB(p, MATH0, AND, sn_mask, MATH1, 8, @@ -686,40 +522,12 @@ pdcp_insert_cplane_int_only_op(struct program *p, MATHB(p, SEQINSZ, SUB, PDCP_MAC_I_LEN, MATH1, 4, IMMED2); } else { - if (rta_sec_era > RTA_SEC_ERA_2) { - MATHB(p, SEQINSZ, SUB, ZERO, MATH1, 4, - 0); - } else { - MATHB(p, SEQINSZ, ADD, ONE, MATH1, 4, - 0); - MATHB(p, MATH1, SUB, ONE, MATH1, 4, - 0); - } + MATHB(p, SEQINSZ, SUB, ZERO, MATH1, 4, 0); } - if (rta_sec_era > RTA_SEC_ERA_2) { - MATHB(p, MATH1, SUB, ZERO, VSEQINSZ, 4, 0); - MATHB(p, MATH1, SUB, ZERO, VSEQOUTSZ, 4, 0); - } else { - MATHB(p, ZERO, ADD, MATH1, VSEQINSZ, 4, 0); - MATHB(p, ZERO, ADD, MATH1, VSEQOUTSZ, 4, 0); - - /* - * Since MOVELEN is available only starting with - * SEC ERA 3, use poor man's MOVELEN: create a MOVE - * command dynamically by writing the length from M1 by - * OR-ing the command in the M1 register and MOVE the - * result into the descriptor buffer. Care must be taken - * wrt. the location of the command because of SEC - * pipelining. The actual MOVEs are written at the end - * of the descriptor due to calculations needed on the - * offset in the descriptor for the MOVE command. - */ - move_cmd_read_descbuf = MOVE(p, DESCBUF, 0, MATH1, 0, 6, - IMMED); - move_cmd_write_descbuf = MOVE(p, MATH1, 0, DESCBUF, 0, - 8, WAITCOMP | IMMED); - } + MATHB(p, MATH1, SUB, ZERO, VSEQINSZ, 4, 0); + MATHB(p, MATH1, SUB, ZERO, VSEQOUTSZ, 4, 0); + SEQFIFOSTORE(p, MSG, 0, 0, VLF); ALG_OPERATION(p, OP_ALG_ALGSEL_AES, OP_ALG_AAI_CMAC, @@ -728,27 +536,9 @@ pdcp_insert_cplane_int_only_op(struct program *p, ICV_CHECK_DISABLE : ICV_CHECK_ENABLE, DIR_ENC); - if (rta_sec_era > RTA_SEC_ERA_2) { - MOVE(p, AB2, 0, OFIFO, 0, MATH1, 0); - SEQFIFOLOAD(p, MSGINSNOOP, 0, + MOVE(p, AB2, 0, OFIFO, 0, MATH1, 0); + SEQFIFOLOAD(p, MSGINSNOOP, 0, VLF | LAST1 | LAST2 | FLUSH1); - } else { - SEQFIFOLOAD(p, MSGINSNOOP, 0, - VLF | LAST1 | LAST2 | FLUSH1); - SET_LABEL(p, local_offset); - - /* Shut off automatic Info FIFO entries */ - LOAD(p, 0, DCTRL, LDOFF_DISABLE_AUTO_NFIFO, 0, IMMED); - - /* - * Placeholder for MOVE command with length from - * M1 register - */ - MOVE(p, IFIFOAB2, 0, OFIFO, 0, 0, IMMED); - - /* Enable automatic Info FIFO entries */ - LOAD(p, 0, DCTRL, LDOFF_ENABLE_AUTO_NFIFO, 0, IMMED); - } if (dir == OP_TYPE_DECAP_PROTOCOL) SEQFIFOLOAD(p, ICV1, 4, LAST1 | FLUSH1); @@ -758,10 +548,6 @@ pdcp_insert_cplane_int_only_op(struct program *p, break; case PDCP_AUTH_TYPE_ZUC: - if (rta_sec_era < RTA_SEC_ERA_5) { - pr_err("Invalid era for selected algorithm\n"); - return -ENOTSUP; - } /* Insert Auth Key */ KEY(p, KEY2, authdata->key_enc_flags, authdata->key, authdata->keylen, INLINE_KEY(authdata)); @@ -817,11 +603,6 @@ pdcp_insert_cplane_int_only_op(struct program *p, return -EINVAL; } - if (rta_sec_era < RTA_SEC_ERA_3) { - PATCH_MOVE(p, move_cmd_read_descbuf, local_offset); - PATCH_MOVE(p, move_cmd_write_descbuf, local_offset); - } - return 0; } @@ -831,15 +612,14 @@ pdcp_insert_cplane_enc_only_op(struct program *p, struct alginfo *cipherdata, struct alginfo *authdata __maybe_unused, unsigned int dir, - enum pdcp_sn_size sn_size, - unsigned char era_2_sw_hfn_ovrd __maybe_unused) + enum pdcp_sn_size sn_size) { uint32_t offset = 0, length = 0, sn_mask = 0; /* Insert Cipher Key */ KEY(p, KEY1, cipherdata->key_enc_flags, cipherdata->key, cipherdata->keylen, INLINE_KEY(cipherdata)); - if ((rta_sec_era >= RTA_SEC_ERA_8 && sn_size != PDCP_SN_SIZE_18 && + if ((sn_size != PDCP_SN_SIZE_18 && !(rta_sec_era == RTA_SEC_ERA_8 && authdata->algtype == 0)) || (rta_sec_era == RTA_SEC_ERA_10)) { @@ -889,12 +669,7 @@ pdcp_insert_cplane_enc_only_op(struct program *p, case PDCP_CIPHER_TYPE_SNOW: MOVEB(p, MATH2, 0, CONTEXT1, 0, 8, WAITCOMP | IMMED); - if (rta_sec_era > RTA_SEC_ERA_2) { - MATHB(p, SEQINSZ, SUB, ZERO, VSEQINSZ, 4, 0); - } else { - MATHB(p, SEQINSZ, SUB, ONE, MATH1, 4, 0); - MATHB(p, MATH1, ADD, ONE, VSEQINSZ, 4, 0); - } + MATHB(p, SEQINSZ, SUB, ZERO, VSEQINSZ, 4, 0); if (dir == OP_TYPE_ENCAP_PROTOCOL) MATHB(p, SEQINSZ, ADD, PDCP_MAC_I_LEN, VSEQOUTSZ, 4, @@ -913,12 +688,7 @@ pdcp_insert_cplane_enc_only_op(struct program *p, case PDCP_CIPHER_TYPE_AES: MOVEB(p, MATH2, 0, CONTEXT1, 0x10, 0x10, WAITCOMP | IMMED); - if (rta_sec_era > RTA_SEC_ERA_2) { - MATHB(p, SEQINSZ, SUB, ZERO, VSEQINSZ, 4, 0); - } else { - MATHB(p, SEQINSZ, SUB, ONE, MATH1, 4, 0); - MATHB(p, MATH1, ADD, ONE, VSEQINSZ, 4, 0); - } + MATHB(p, SEQINSZ, SUB, ZERO, VSEQINSZ, 4, 0); if (dir == OP_TYPE_ENCAP_PROTOCOL) MATHB(p, SEQINSZ, ADD, PDCP_MAC_I_LEN, VSEQOUTSZ, 4, @@ -937,11 +707,6 @@ pdcp_insert_cplane_enc_only_op(struct program *p, break; case PDCP_CIPHER_TYPE_ZUC: - if (rta_sec_era < RTA_SEC_ERA_5) { - pr_err("Invalid era for selected algorithm\n"); - return -ENOTSUP; - } - MOVEB(p, MATH2, 0, CONTEXT1, 0, 0x08, IMMED); MOVEB(p, MATH2, 0, CONTEXT1, 0x08, 0x08, WAITCOMP | IMMED); MATHB(p, SEQINSZ, SUB, ZERO, VSEQINSZ, 4, 0); @@ -988,8 +753,7 @@ pdcp_insert_uplane_snow_snow_op(struct program *p, struct alginfo *cipherdata, struct alginfo *authdata, unsigned int dir, - enum pdcp_sn_size sn_size, - unsigned char era_2_sw_hfn_ovrd __maybe_unused) + enum pdcp_sn_size sn_size) { uint32_t offset = 0, length = 0, sn_mask = 0; @@ -998,7 +762,7 @@ pdcp_insert_uplane_snow_snow_op(struct program *p, KEY(p, KEY2, authdata->key_enc_flags, authdata->key, authdata->keylen, INLINE_KEY(authdata)); - if (rta_sec_era >= RTA_SEC_ERA_8 && sn_size != PDCP_SN_SIZE_18) { + if (sn_size != PDCP_SN_SIZE_18) { int pclid; if (sn_size == PDCP_SN_SIZE_5) @@ -1014,18 +778,13 @@ pdcp_insert_uplane_snow_snow_op(struct program *p, } /* Non-proto is supported only for 5bit cplane and 18bit uplane */ switch (sn_size) { - case PDCP_SN_SIZE_5: - offset = 7; - length = 1; - sn_mask = (swap == false) ? PDCP_C_PLANE_SN_MASK : - PDCP_C_PLANE_SN_MASK_BE; - break; case PDCP_SN_SIZE_18: offset = 5; length = 3; sn_mask = (swap == false) ? PDCP_U_PLANE_18BIT_SN_MASK : PDCP_U_PLANE_18BIT_SN_MASK_BE; break; + case PDCP_SN_SIZE_5: case PDCP_SN_SIZE_7: case PDCP_SN_SIZE_12: case PDCP_SN_SIZE_15: @@ -1094,20 +853,13 @@ pdcp_insert_uplane_snow_snow_op(struct program *p, SEQFIFOLOAD(p, MSG1, 4, LAST1 | FLUSH1); JUMP(p, 1, LOCAL_JUMP, ALL_TRUE, CLASS1 | NOP | NIFP); - if (rta_sec_era >= RTA_SEC_ERA_6) - LOAD(p, 0, DCTRL, 0, LDLEN_RST_CHA_OFIFO_PTR, IMMED); + LOAD(p, 0, DCTRL, 0, LDLEN_RST_CHA_OFIFO_PTR, IMMED); MOVE(p, OFIFO, 0, MATH0, 0, 4, WAITCOMP | IMMED); NFIFOADD(p, IFIFO, ICV2, 4, LAST2); - if (rta_sec_era <= RTA_SEC_ERA_2) { - /* Shut off automatic Info FIFO entries */ - LOAD(p, 0, DCTRL, LDOFF_DISABLE_AUTO_NFIFO, 0, IMMED); - MOVE(p, MATH0, 0, IFIFOAB2, 0, 4, WAITCOMP | IMMED); - } else { - MOVE(p, MATH0, 0, IFIFO, 0, 4, WAITCOMP | IMMED); - } + MOVE(p, MATH0, 0, IFIFO, 0, 4, WAITCOMP | IMMED); } return 0; @@ -1119,19 +871,13 @@ pdcp_insert_uplane_zuc_zuc_op(struct program *p, struct alginfo *cipherdata, struct alginfo *authdata, unsigned int dir, - enum pdcp_sn_size sn_size, - unsigned char era_2_sw_hfn_ovrd __maybe_unused) + enum pdcp_sn_size sn_size) { uint32_t offset = 0, length = 0, sn_mask = 0; LABEL(keyjump); REFERENCE(pkeyjump); - if (rta_sec_era < RTA_SEC_ERA_5) { - pr_err("Invalid era for selected algorithm\n"); - return -ENOTSUP; - } - pkeyjump = JUMP(p, keyjump, LOCAL_JUMP, ALL_TRUE, SHRD | SELF | BOTH); KEY(p, KEY1, cipherdata->key_enc_flags, cipherdata->key, cipherdata->keylen, INLINE_KEY(cipherdata)); @@ -1141,7 +887,7 @@ pdcp_insert_uplane_zuc_zuc_op(struct program *p, SET_LABEL(p, keyjump); PATCH_JUMP(p, pkeyjump, keyjump); - if (rta_sec_era >= RTA_SEC_ERA_8 && sn_size != PDCP_SN_SIZE_18) { + if (sn_size != PDCP_SN_SIZE_18) { int pclid; if (sn_size == PDCP_SN_SIZE_5) @@ -1157,18 +903,13 @@ pdcp_insert_uplane_zuc_zuc_op(struct program *p, } /* Non-proto is supported only for 5bit cplane and 18bit uplane */ switch (sn_size) { - case PDCP_SN_SIZE_5: - offset = 7; - length = 1; - sn_mask = (swap == false) ? PDCP_C_PLANE_SN_MASK : - PDCP_C_PLANE_SN_MASK_BE; - break; case PDCP_SN_SIZE_18: offset = 5; length = 3; sn_mask = (swap == false) ? PDCP_U_PLANE_18BIT_SN_MASK : PDCP_U_PLANE_18BIT_SN_MASK_BE; break; + case PDCP_SN_SIZE_5: case PDCP_SN_SIZE_7: case PDCP_SN_SIZE_12: case PDCP_SN_SIZE_15: @@ -1243,12 +984,11 @@ pdcp_insert_uplane_aes_aes_op(struct program *p, struct alginfo *cipherdata, struct alginfo *authdata, unsigned int dir, - enum pdcp_sn_size sn_size, - unsigned char era_2_sw_hfn_ovrd __maybe_unused) + enum pdcp_sn_size sn_size) { uint32_t offset = 0, length = 0, sn_mask = 0; - if ((rta_sec_era >= RTA_SEC_ERA_8 && sn_size != PDCP_SN_SIZE_18)) { + if (sn_size != PDCP_SN_SIZE_18) { /* Insert Auth Key */ KEY(p, KEY2, authdata->key_enc_flags, authdata->key, authdata->keylen, INLINE_KEY(authdata)); @@ -1392,8 +1132,7 @@ pdcp_insert_cplane_acc_op(struct program *p, struct alginfo *cipherdata, struct alginfo *authdata, unsigned int dir, - enum pdcp_sn_size sn_size, - unsigned char era_2_hfn_ovrd __maybe_unused) + enum pdcp_sn_size sn_size) { /* Insert Auth Key */ KEY(p, KEY2, authdata->key_enc_flags, authdata->key, authdata->keylen, @@ -1420,8 +1159,7 @@ pdcp_insert_cplane_snow_aes_op(struct program *p, struct alginfo *cipherdata, struct alginfo *authdata, unsigned int dir, - enum pdcp_sn_size sn_size, - unsigned char era_2_sw_hfn_ovrd) + enum pdcp_sn_size sn_size) { uint32_t offset = 0, length = 0, sn_mask = 0; @@ -1429,14 +1167,12 @@ pdcp_insert_cplane_snow_aes_op(struct program *p, LABEL(end_desc); LABEL(local_offset); LABEL(jump_to_beginning); - LABEL(fifo_load_mac_i_offset); REFERENCE(seqin_ptr_read); REFERENCE(seqin_ptr_write); REFERENCE(seq_out_read); REFERENCE(jump_back_to_sd_cmd); - REFERENCE(move_mac_i_to_desc_buf); - if ((rta_sec_era >= RTA_SEC_ERA_8 && sn_size != PDCP_SN_SIZE_18) || + if ((sn_size != PDCP_SN_SIZE_18) || (rta_sec_era == RTA_SEC_ERA_10)) { KEY(p, KEY1, cipherdata->key_enc_flags, cipherdata->key, cipherdata->keylen, INLINE_KEY(cipherdata)); @@ -1484,56 +1220,17 @@ pdcp_insert_cplane_snow_aes_op(struct program *p, MATHB(p, MATH1, OR, MATH2, MATH2, 8, 0); SEQSTORE(p, MATH0, offset, length, 0); if (dir == OP_TYPE_ENCAP_PROTOCOL) { - if (rta_sec_era > RTA_SEC_ERA_2 || - (rta_sec_era == RTA_SEC_ERA_2 && - era_2_sw_hfn_ovrd == 0)) { - SEQINPTR(p, 0, length, RTO); - } else { - SEQINPTR(p, 0, 5, RTO); - SEQFIFOLOAD(p, SKIP, 4, 0); - } + SEQINPTR(p, 0, length, RTO); + KEY(p, KEY1, authdata->key_enc_flags, authdata->key, authdata->keylen, INLINE_KEY(authdata)); MOVEB(p, MATH2, 0, IFIFOAB1, 0, 0x08, IMMED); - if (rta_sec_era > RTA_SEC_ERA_2) { - MATHB(p, SEQINSZ, SUB, ZERO, VSEQINSZ, 4, 0); - MATHB(p, SEQINSZ, SUB, ZERO, MATH1, 4, 0); - MATHB(p, VSEQINSZ, ADD, PDCP_MAC_I_LEN - 1, VSEQOUTSZ, - 4, IMMED2); - } else { - MATHB(p, SEQINSZ, SUB, MATH3, VSEQINSZ, 4, 0); - MATHB(p, VSEQINSZ, ADD, PDCP_MAC_I_LEN - 1, VSEQOUTSZ, - 4, IMMED2); - /* - * Note: Although the calculations below might seem a - * little off, the logic is the following: - * - * - SEQ IN PTR RTO below needs the full length of the - * frame; in case of P4080_REV_2_HFN_OV_WORKAROUND, - * this means the length of the frame to be processed - * + 4 bytes (the HFN override flag and value). - * The length of the frame to be processed minus 1 - * byte is in the VSIL register (because - * VSIL = SIL + 3, due to 1 byte, the header being - * already written by the SEQ STORE above). So for - * calculating the length to use in RTO, I add one - * to the VSIL value in order to obtain the total - * frame length. This helps in case of P4080 which - * can have the value 0 as an operand in a MATH - * command only as SRC1 When the HFN override - * workaround is not enabled, the length of the - * frame is given by the SIL register; the - * calculation is similar to the one in the SEC 4.2 - * and SEC 5.3 cases. - */ - if (era_2_sw_hfn_ovrd) - MATHB(p, VSEQOUTSZ, ADD, ONE, MATH1, 4, - 0); - else - MATHB(p, SEQINSZ, ADD, MATH3, MATH1, 4, - 0); - } + MATHB(p, SEQINSZ, SUB, ZERO, VSEQINSZ, 4, 0); + MATHB(p, SEQINSZ, SUB, ZERO, MATH1, 4, 0); + MATHB(p, VSEQINSZ, ADD, PDCP_MAC_I_LEN - 1, VSEQOUTSZ, + 4, IMMED2); + /* * Placeholder for filling the length in * SEQIN PTR RTO below @@ -1548,24 +1245,14 @@ pdcp_insert_cplane_snow_aes_op(struct program *p, DIR_DEC); SEQFIFOLOAD(p, MSG1, 0, VLF | LAST1 | FLUSH1); MOVEB(p, CONTEXT1, 0, MATH3, 0, 4, WAITCOMP | IMMED); - if (rta_sec_era <= RTA_SEC_ERA_3) - LOAD(p, CLRW_CLR_C1KEY | - CLRW_CLR_C1CTX | - CLRW_CLR_C1ICV | - CLRW_CLR_C1DATAS | - CLRW_CLR_C1MODE, - CLRW, 0, 4, IMMED); - else - LOAD(p, CLRW_RESET_CLS1_CHA | - CLRW_CLR_C1KEY | - CLRW_CLR_C1CTX | - CLRW_CLR_C1ICV | - CLRW_CLR_C1DATAS | - CLRW_CLR_C1MODE, - CLRW, 0, 4, IMMED); - if (rta_sec_era <= RTA_SEC_ERA_3) - LOAD(p, CCTRL_RESET_CHA_ALL, CCTRL, 0, 4, IMMED); + LOAD(p, CLRW_RESET_CLS1_CHA | + CLRW_CLR_C1KEY | + CLRW_CLR_C1CTX | + CLRW_CLR_C1ICV | + CLRW_CLR_C1DATAS | + CLRW_CLR_C1MODE, + CLRW, 0, 4, IMMED); KEY(p, KEY1, cipherdata->key_enc_flags, cipherdata->key, cipherdata->keylen, INLINE_KEY(cipherdata)); @@ -1573,11 +1260,6 @@ pdcp_insert_cplane_snow_aes_op(struct program *p, MOVEB(p, MATH2, 0, CONTEXT1, 0, 8, IMMED); SEQINPTR(p, 0, 0, RTO); - if (rta_sec_era == RTA_SEC_ERA_2 && era_2_sw_hfn_ovrd) { - SEQFIFOLOAD(p, SKIP, 5, 0); - MATHB(p, SEQINSZ, ADD, ONE, SEQINSZ, 4, 0); - } - MATHB(p, SEQINSZ, SUB, length, VSEQINSZ, 4, IMMED2); ALG_OPERATION(p, OP_ALG_ALGSEL_SNOW_F8, OP_ALG_AAI_F8, @@ -1586,10 +1268,7 @@ pdcp_insert_cplane_snow_aes_op(struct program *p, DIR_ENC); SEQFIFOSTORE(p, MSG, 0, 0, VLF); - if (rta_sec_era > RTA_SEC_ERA_2 || - (rta_sec_era == RTA_SEC_ERA_2 && - era_2_sw_hfn_ovrd == 0)) - SEQFIFOLOAD(p, SKIP, length, 0); + SEQFIFOLOAD(p, SKIP, length, 0); SEQFIFOLOAD(p, MSG1, 0, VLF); MOVEB(p, MATH3, 0, IFIFOAB1, 0, 4, LAST1 | FLUSH1 | IMMED); @@ -1598,13 +1277,9 @@ pdcp_insert_cplane_snow_aes_op(struct program *p, } else { MOVEB(p, MATH2, 0, CONTEXT1, 0, 8, IMMED); - if (rta_sec_era >= RTA_SEC_ERA_5) - MOVE(p, CONTEXT1, 0, CONTEXT2, 0, 8, IMMED); + MOVE(p, CONTEXT1, 0, CONTEXT2, 0, 8, IMMED); - if (rta_sec_era > RTA_SEC_ERA_2) - MATHB(p, SEQINSZ, SUB, ZERO, VSEQINSZ, 4, 0); - else - MATHB(p, SEQINSZ, SUB, MATH3, VSEQINSZ, 4, 0); + MATHB(p, SEQINSZ, SUB, ZERO, VSEQINSZ, 4, 0); MATHI(p, SEQINSZ, SUB, PDCP_MAC_I_LEN, VSEQOUTSZ, 4, IMMED2); /* @@ -1649,10 +1324,7 @@ pdcp_insert_cplane_snow_aes_op(struct program *p, KEY(p, KEY1, cipherdata->key_enc_flags, cipherdata->key, cipherdata->keylen, INLINE_KEY(cipherdata)); - if (rta_sec_era >= RTA_SEC_ERA_4) - MOVE(p, CONTEXT1, 0, CONTEXT2, 0, 8, IMMED); - else - MOVE(p, CONTEXT1, 0, MATH3, 0, 8, IMMED); + MOVE(p, CONTEXT1, 0, CONTEXT2, 0, 8, IMMED); ALG_OPERATION(p, OP_ALG_ALGSEL_SNOW_F8, OP_ALG_AAI_F8, @@ -1662,22 +1334,15 @@ pdcp_insert_cplane_snow_aes_op(struct program *p, SEQFIFOSTORE(p, MSG, 0, 0, VLF | CONT); SEQFIFOLOAD(p, MSG1, 0, VLF | LAST1 | FLUSH1); - if (rta_sec_era <= RTA_SEC_ERA_3) - move_mac_i_to_desc_buf = MOVE(p, OFIFO, 0, DESCBUF, 0, - 4, WAITCOMP | IMMED); - else - MOVE(p, OFIFO, 0, MATH3, 0, 4, IMMED); + MOVE(p, OFIFO, 0, MATH3, 0, 4, IMMED); - if (rta_sec_era <= RTA_SEC_ERA_3) - LOAD(p, CCTRL_RESET_CHA_ALL, CCTRL, 0, 4, IMMED); - else - LOAD(p, CLRW_RESET_CLS1_CHA | - CLRW_CLR_C1KEY | - CLRW_CLR_C1CTX | - CLRW_CLR_C1ICV | - CLRW_CLR_C1DATAS | - CLRW_CLR_C1MODE, - CLRW, 0, 4, IMMED); + LOAD(p, CLRW_RESET_CLS1_CHA | + CLRW_CLR_C1KEY | + CLRW_CLR_C1CTX | + CLRW_CLR_C1ICV | + CLRW_CLR_C1DATAS | + CLRW_CLR_C1MODE, + CLRW, 0, 4, IMMED); KEY(p, KEY1, authdata->key_enc_flags, authdata->key, authdata->keylen, INLINE_KEY(authdata)); @@ -1698,28 +1363,17 @@ pdcp_insert_cplane_snow_aes_op(struct program *p, /* Read the # of bytes written in the output buffer + 1 (HDR) */ MATHI(p, VSEQOUTSZ, ADD, length, VSEQINSZ, 4, IMMED2); - if (rta_sec_era <= RTA_SEC_ERA_3) - MOVE(p, MATH3, 0, IFIFOAB1, 0, 8, IMMED); - else - MOVE(p, CONTEXT2, 0, IFIFOAB1, 0, 8, IMMED); - - if (rta_sec_era == RTA_SEC_ERA_2 && era_2_sw_hfn_ovrd) - SEQFIFOLOAD(p, SKIP, 4, 0); + MOVE(p, CONTEXT2, 0, IFIFOAB1, 0, 8, IMMED); SEQFIFOLOAD(p, MSG1, 0, VLF | LAST1 | FLUSH1); - if (rta_sec_era >= RTA_SEC_ERA_4) { - LOAD(p, NFIFOENTRY_STYPE_ALTSOURCE | - NFIFOENTRY_DEST_CLASS1 | - NFIFOENTRY_DTYPE_ICV | - NFIFOENTRY_LC1 | - NFIFOENTRY_FC1 | 4, NFIFO_SZL, 0, 4, IMMED); - MOVE(p, MATH3, 0, ALTSOURCE, 0, 4, IMMED); - } else { - SET_LABEL(p, fifo_load_mac_i_offset); - FIFOLOAD(p, ICV1, fifo_load_mac_i_offset, 4, - LAST1 | FLUSH1 | IMMED); - } + LOAD(p, NFIFOENTRY_STYPE_ALTSOURCE | + NFIFOENTRY_DEST_CLASS1 | + NFIFOENTRY_DTYPE_ICV | + NFIFOENTRY_LC1 | + NFIFOENTRY_FC1 | 4, NFIFO_SZL, 0, 4, IMMED); + MOVE(p, MATH3, 0, ALTSOURCE, 0, 4, IMMED); + SET_LABEL(p, end_desc); @@ -1727,18 +1381,10 @@ pdcp_insert_cplane_snow_aes_op(struct program *p, PATCH_MOVE(p, seq_out_read, end_desc + 1); PATCH_JUMP(p, jump_back_to_sd_cmd, back_to_sd_offset + jump_back_to_sd_cmd - 5); - - if (rta_sec_era <= RTA_SEC_ERA_3) - PATCH_MOVE(p, move_mac_i_to_desc_buf, - fifo_load_mac_i_offset + 1); } else { PATCH_MOVE(p, seq_out_read, end_desc + 2); PATCH_JUMP(p, jump_back_to_sd_cmd, back_to_sd_offset + jump_back_to_sd_cmd - 5); - - if (rta_sec_era <= RTA_SEC_ERA_3) - PATCH_MOVE(p, move_mac_i_to_desc_buf, - fifo_load_mac_i_offset + 1); } } @@ -1751,8 +1397,7 @@ pdcp_insert_cplane_aes_snow_op(struct program *p, struct alginfo *cipherdata, struct alginfo *authdata, unsigned int dir, - enum pdcp_sn_size sn_size, - unsigned char era_2_sw_hfn_ovrd __maybe_unused) + enum pdcp_sn_size sn_size) { uint32_t offset = 0, length = 0, sn_mask = 0; @@ -1761,7 +1406,7 @@ pdcp_insert_cplane_aes_snow_op(struct program *p, KEY(p, KEY2, authdata->key_enc_flags, authdata->key, authdata->keylen, INLINE_KEY(authdata)); - if ((rta_sec_era >= RTA_SEC_ERA_8 && sn_size != PDCP_SN_SIZE_18) || + if ((sn_size != PDCP_SN_SIZE_18) || (rta_sec_era == RTA_SEC_ERA_10)) { int pclid; @@ -1860,20 +1505,13 @@ pdcp_insert_cplane_aes_snow_op(struct program *p, SEQFIFOLOAD(p, MSG1, 4, LAST1 | FLUSH1); JUMP(p, 1, LOCAL_JUMP, ALL_TRUE, CLASS1 | NOP | NIFP); - if (rta_sec_era >= RTA_SEC_ERA_6) - LOAD(p, 0, DCTRL, 0, LDLEN_RST_CHA_OFIFO_PTR, IMMED); + LOAD(p, 0, DCTRL, 0, LDLEN_RST_CHA_OFIFO_PTR, IMMED); MOVE(p, OFIFO, 0, MATH0, 0, 4, WAITCOMP | IMMED); NFIFOADD(p, IFIFO, ICV2, 4, LAST2); - if (rta_sec_era <= RTA_SEC_ERA_2) { - /* Shut off automatic Info FIFO entries */ - LOAD(p, 0, DCTRL, LDOFF_DISABLE_AUTO_NFIFO, 0, IMMED); - MOVE(p, MATH0, 0, IFIFOAB2, 0, 4, WAITCOMP | IMMED); - } else { - MOVE(p, MATH0, 0, IFIFO, 0, 4, WAITCOMP | IMMED); - } + MOVE(p, MATH0, 0, IFIFO, 0, 4, WAITCOMP | IMMED); } return 0; @@ -1885,20 +1523,14 @@ pdcp_insert_cplane_snow_zuc_op(struct program *p, struct alginfo *cipherdata, struct alginfo *authdata, unsigned int dir, - enum pdcp_sn_size sn_size, - unsigned char era_2_sw_hfn_ovrd __maybe_unused) + enum pdcp_sn_size sn_size) { uint32_t offset = 0, length = 0, sn_mask = 0; LABEL(keyjump); REFERENCE(pkeyjump); - if (rta_sec_era < RTA_SEC_ERA_5) { - pr_err("Invalid era for selected algorithm\n"); - return -ENOTSUP; - } - - if ((rta_sec_era >= RTA_SEC_ERA_8 && sn_size != PDCP_SN_SIZE_18) || + if ((sn_size != PDCP_SN_SIZE_18) || (rta_sec_era == RTA_SEC_ERA_10)) { int pclid; KEY(p, KEY1, cipherdata->key_enc_flags, cipherdata->key, @@ -2010,19 +1642,13 @@ pdcp_insert_cplane_aes_zuc_op(struct program *p, struct alginfo *cipherdata, struct alginfo *authdata, unsigned int dir, - enum pdcp_sn_size sn_size, - unsigned char era_2_sw_hfn_ovrd __maybe_unused) + enum pdcp_sn_size sn_size) { uint32_t offset = 0, length = 0, sn_mask = 0; LABEL(keyjump); REFERENCE(pkeyjump); - if (rta_sec_era < RTA_SEC_ERA_5) { - pr_err("Invalid era for selected algorithm\n"); - return -ENOTSUP; - } - - if ((rta_sec_era >= RTA_SEC_ERA_8 && sn_size != PDCP_SN_SIZE_18) || + if ((sn_size != PDCP_SN_SIZE_18) || (rta_sec_era == RTA_SEC_ERA_10)) { int pclid; KEY(p, KEY1, cipherdata->key_enc_flags, cipherdata->key, @@ -2138,19 +1764,13 @@ pdcp_insert_cplane_zuc_snow_op(struct program *p, struct alginfo *cipherdata, struct alginfo *authdata, unsigned int dir, - enum pdcp_sn_size sn_size, - unsigned char era_2_sw_hfn_ovrd __maybe_unused) + enum pdcp_sn_size sn_size) { uint32_t offset = 0, length = 0, sn_mask = 0; LABEL(keyjump); REFERENCE(pkeyjump); - if (rta_sec_era < RTA_SEC_ERA_5) { - pr_err("Invalid era for selected algorithm\n"); - return -ENOTSUP; - } - - if ((rta_sec_era >= RTA_SEC_ERA_8 && sn_size != PDCP_SN_SIZE_18) || + if ((sn_size != PDCP_SN_SIZE_18) || (rta_sec_era == RTA_SEC_ERA_10)) { int pclid; KEY(p, KEY1, cipherdata->key_enc_flags, cipherdata->key, @@ -2259,13 +1879,12 @@ pdcp_insert_cplane_zuc_snow_op(struct program *p, SEQFIFOLOAD(p, MSG1, 4, LAST1 | FLUSH1); JUMP(p, 1, LOCAL_JUMP, ALL_TRUE, CLASS1 | NOP | NIFP); - if (rta_sec_era >= RTA_SEC_ERA_6) - /* - * For SEC ERA 6, there's a problem with the OFIFO - * pointer, and thus it needs to be reset here before - * moving to M0. - */ - LOAD(p, 0, DCTRL, 0, LDLEN_RST_CHA_OFIFO_PTR, IMMED); + /* + * For SEC ERA 6, there's a problem with the OFIFO + * pointer, and thus it needs to be reset here before + * moving to M0. + */ + LOAD(p, 0, DCTRL, 0, LDLEN_RST_CHA_OFIFO_PTR, IMMED); /* Put ICV to M0 before sending it to C2 for comparison. */ MOVEB(p, OFIFO, 0, MATH0, 0, 4, WAITCOMP | IMMED); @@ -2287,16 +1906,11 @@ pdcp_insert_cplane_zuc_aes_op(struct program *p, struct alginfo *cipherdata, struct alginfo *authdata, unsigned int dir, - enum pdcp_sn_size sn_size, - unsigned char era_2_sw_hfn_ovrd __maybe_unused) + enum pdcp_sn_size sn_size) { uint32_t offset = 0, length = 0, sn_mask = 0; - if (rta_sec_era < RTA_SEC_ERA_5) { - pr_err("Invalid era for selected algorithm\n"); - return -ENOTSUP; - } - if ((rta_sec_era >= RTA_SEC_ERA_8 && sn_size != PDCP_SN_SIZE_18) || + if ((sn_size != PDCP_SN_SIZE_18) || (rta_sec_era == RTA_SEC_ERA_10)) { int pclid; @@ -2459,7 +2073,7 @@ pdcp_insert_uplane_no_int_op(struct program *p, KEY(p, KEY1, cipherdata->key_enc_flags, cipherdata->key, cipherdata->keylen, INLINE_KEY(cipherdata)); - if ((rta_sec_era >= RTA_SEC_ERA_8 && sn_size == PDCP_SN_SIZE_15) || + if ((sn_size == PDCP_SN_SIZE_15) || (rta_sec_era >= RTA_SEC_ERA_10)) { PROTOCOL(p, dir, OP_PCLID_LTE_PDCP_USER, (uint16_t)cipherdata->algtype); @@ -2513,10 +2127,6 @@ pdcp_insert_uplane_no_int_op(struct program *p, break; case PDCP_CIPHER_TYPE_ZUC: - if (rta_sec_era < RTA_SEC_ERA_5) { - pr_err("Invalid era for selected algorithm\n"); - return -ENOTSUP; - } MOVEB(p, MATH2, 0, CONTEXT1, 0, 0x08, IMMED); MOVEB(p, MATH2, 0, CONTEXT1, 0x08, 0x08, WAITCOMP | IMMED); @@ -2546,7 +2156,6 @@ static inline int insert_hfn_ov_op(struct program *p, uint32_t shift, enum pdb_type_e pdb_type, - unsigned char era_2_sw_hfn_ovrd, bool clear_dpovrd_at_end) { uint32_t imm = PDCP_DPOVRD_HFN_OV_EN; @@ -2554,9 +2163,6 @@ insert_hfn_ov_op(struct program *p, LABEL(keyjump); REFERENCE(pkeyjump); - if (rta_sec_era == RTA_SEC_ERA_2 && !era_2_sw_hfn_ovrd) - return 0; - switch (pdb_type) { case PDCP_PDB_TYPE_NO_PDB: /* @@ -2579,26 +2185,16 @@ insert_hfn_ov_op(struct program *p, return -EINVAL; } - if (rta_sec_era > RTA_SEC_ERA_2) { - MATHB(p, DPOVRD, AND, imm, NONE, 8, IFB | IMMED2); - } else { - SEQLOAD(p, MATH0, 4, 4, 0); - JUMP(p, 1, LOCAL_JUMP, ALL_TRUE, CALM); - MATHB(p, MATH0, AND, imm, NONE, 8, IFB | IMMED2); - SEQSTORE(p, MATH0, 4, 4, 0); - } + MATHB(p, DPOVRD, AND, imm, NONE, 8, IFB | IMMED2); pkeyjump = JUMP(p, keyjump, LOCAL_JUMP, ALL_TRUE, MATH_Z); - if (rta_sec_era > RTA_SEC_ERA_2) - MATHI(p, DPOVRD, LSHIFT, shift, MATH0, 4, IMMED2); - else - MATHB(p, MATH0, LSHIFT, shift, MATH0, 4, IMMED2); + MATHI(p, DPOVRD, LSHIFT, shift, MATH0, 4, IMMED2); MATHB(p, MATH0, SHLD, MATH0, MATH0, 8, 0); MOVE(p, MATH0, 0, DESCBUF, hfn_pdb_offset, 4, IMMED); - if (clear_dpovrd_at_end && (rta_sec_era >= RTA_SEC_ERA_8)) { + if (clear_dpovrd_at_end) { /* * For ERA8, DPOVRD could be handled by the PROTOCOL command * itself. For now, this is not done. Thus, clear DPOVRD here @@ -2621,97 +2217,28 @@ cnstr_pdcp_c_plane_pdb(struct program *p, enum pdcp_sn_size sn_size, unsigned char bearer, unsigned char direction, - uint32_t hfn_threshold, - struct alginfo *cipherdata, - struct alginfo *authdata) + uint32_t hfn_threshold) { struct pdcp_pdb pdb; - enum pdb_type_e - pdb_mask[PDCP_CIPHER_TYPE_INVALID][PDCP_AUTH_TYPE_INVALID] = { - { /* NULL */ - PDCP_PDB_TYPE_NO_PDB, /* NULL */ - PDCP_PDB_TYPE_FULL_PDB, /* SNOW f9 */ - PDCP_PDB_TYPE_FULL_PDB, /* AES CMAC */ - PDCP_PDB_TYPE_FULL_PDB /* ZUC-I */ - }, - { /* SNOW f8 */ - PDCP_PDB_TYPE_FULL_PDB, /* NULL */ - PDCP_PDB_TYPE_FULL_PDB, /* SNOW f9 */ - PDCP_PDB_TYPE_REDUCED_PDB, /* AES CMAC */ - PDCP_PDB_TYPE_REDUCED_PDB /* ZUC-I */ - }, - { /* AES CTR */ - PDCP_PDB_TYPE_FULL_PDB, /* NULL */ - PDCP_PDB_TYPE_REDUCED_PDB, /* SNOW f9 */ - PDCP_PDB_TYPE_FULL_PDB, /* AES CMAC */ - PDCP_PDB_TYPE_REDUCED_PDB /* ZUC-I */ - }, - { /* ZUC-E */ - PDCP_PDB_TYPE_FULL_PDB, /* NULL */ - PDCP_PDB_TYPE_REDUCED_PDB, /* SNOW f9 */ - PDCP_PDB_TYPE_REDUCED_PDB, /* AES CMAC */ - PDCP_PDB_TYPE_FULL_PDB /* ZUC-I */ - }, - }; - - if (rta_sec_era >= RTA_SEC_ERA_8) { - memset(&pdb, 0x00, sizeof(struct pdcp_pdb)); - - /* To support 12-bit seq numbers, we use u-plane opt in pdb. - * SEC supports 5-bit only with c-plane opt in pdb. - */ - if (sn_size == PDCP_SN_SIZE_12) { - pdb.hfn_res = hfn << PDCP_U_PLANE_PDB_LONG_SN_HFN_SHIFT; - pdb.bearer_dir_res = (uint32_t) - ((bearer << PDCP_U_PLANE_PDB_BEARER_SHIFT) | - (direction << PDCP_U_PLANE_PDB_DIR_SHIFT)); - - pdb.hfn_thr_res = - hfn_threshold << PDCP_U_PLANE_PDB_LONG_SN_HFN_THR_SHIFT; - - } else { - /* This means 5-bit c-plane. - * Here we use c-plane opt in pdb - */ - - /* This is a HW issue. Bit 2 should be set to zero, - * but it does not work this way. Override here. - */ - pdb.opt_res.rsvd = 0x00000002; - - /* Copy relevant information from user to PDB */ - pdb.hfn_res = hfn << PDCP_C_PLANE_PDB_HFN_SHIFT; - pdb.bearer_dir_res = (uint32_t) - ((bearer << PDCP_C_PLANE_PDB_BEARER_SHIFT) | - (direction << PDCP_C_PLANE_PDB_DIR_SHIFT)); - pdb.hfn_thr_res = - hfn_threshold << PDCP_C_PLANE_PDB_HFN_THR_SHIFT; - } - - /* copy PDB in descriptor*/ - __rta_out32(p, pdb.opt_res.opt); - __rta_out32(p, pdb.hfn_res); - __rta_out32(p, pdb.bearer_dir_res); - __rta_out32(p, pdb.hfn_thr_res); - return PDCP_PDB_TYPE_FULL_PDB; - } + memset(&pdb, 0x00, sizeof(struct pdcp_pdb)); - switch (pdb_mask[cipherdata->algtype][authdata->algtype]) { - case PDCP_PDB_TYPE_NO_PDB: - break; + /* To support 12-bit seq numbers, we use u-plane opt in pdb. + * SEC supports 5-bit only with c-plane opt in pdb. + */ + if (sn_size == PDCP_SN_SIZE_12) { + pdb.hfn_res = hfn << PDCP_U_PLANE_PDB_LONG_SN_HFN_SHIFT; + pdb.bearer_dir_res = (uint32_t) + ((bearer << PDCP_U_PLANE_PDB_BEARER_SHIFT) | + (direction << PDCP_U_PLANE_PDB_DIR_SHIFT)); - case PDCP_PDB_TYPE_REDUCED_PDB: - __rta_out32(p, (hfn << PDCP_C_PLANE_PDB_HFN_SHIFT)); - __rta_out32(p, - (uint32_t)((bearer << - PDCP_C_PLANE_PDB_BEARER_SHIFT) | - (direction << - PDCP_C_PLANE_PDB_DIR_SHIFT))); - break; + pdb.hfn_thr_res = + hfn_threshold << PDCP_U_PLANE_PDB_LONG_SN_HFN_THR_SHIFT; - case PDCP_PDB_TYPE_FULL_PDB: - memset(&pdb, 0x00, sizeof(struct pdcp_pdb)); + } else { + /* This means 5-bit c-plane. + * Here we use c-plane opt in pdb + */ /* This is a HW issue. Bit 2 should be set to zero, * but it does not work this way. Override here. @@ -2722,23 +2249,18 @@ cnstr_pdcp_c_plane_pdb(struct program *p, pdb.hfn_res = hfn << PDCP_C_PLANE_PDB_HFN_SHIFT; pdb.bearer_dir_res = (uint32_t) ((bearer << PDCP_C_PLANE_PDB_BEARER_SHIFT) | - (direction << PDCP_C_PLANE_PDB_DIR_SHIFT)); + (direction << PDCP_C_PLANE_PDB_DIR_SHIFT)); pdb.hfn_thr_res = - hfn_threshold << PDCP_C_PLANE_PDB_HFN_THR_SHIFT; - - /* copy PDB in descriptor*/ - __rta_out32(p, pdb.opt_res.opt); - __rta_out32(p, pdb.hfn_res); - __rta_out32(p, pdb.bearer_dir_res); - __rta_out32(p, pdb.hfn_thr_res); - - break; - - default: - return PDCP_PDB_TYPE_INVALID; + hfn_threshold << PDCP_C_PLANE_PDB_HFN_THR_SHIFT; } - return pdb_mask[cipherdata->algtype][authdata->algtype]; + /* copy PDB in descriptor*/ + __rta_out32(p, pdb.opt_res.opt); + __rta_out32(p, pdb.hfn_res); + __rta_out32(p, pdb.bearer_dir_res); + __rta_out32(p, pdb.hfn_thr_res); + + return PDCP_PDB_TYPE_FULL_PDB; } /* @@ -2817,7 +2339,7 @@ cnstr_pdcp_u_plane_pdb(struct program *p, pdb.hfn_thr_res = hfn_threshold<algtype] [authdata->algtype]; @@ -2857,6 +2379,7 @@ cnstr_pdcp_u_plane_pdb(struct program *p, return pdb_type; } + /** * cnstr_shdsc_pdcp_c_plane_encap - Function for creating a PDCP Control Plane * encapsulation descriptor. @@ -2874,9 +2397,6 @@ cnstr_pdcp_u_plane_pdb(struct program *p, * Valid algorithm values are those from cipher_type_pdcp enum. * @authdata: pointer to authentication transform definitions * Valid algorithm values are those from auth_type_pdcp enum. - * @era_2_sw_hfn_ovrd: if software HFN override mechanism is desired for - * this descriptor. Note: Can only be used for - * SEC ERA 2. * Return: size of descriptor written in words or negative number on error. * Once the function returns, the value of this parameter can be used * for reclaiming the space that wasn't used for the descriptor. @@ -2895,14 +2415,12 @@ cnstr_shdsc_pdcp_c_plane_encap(uint32_t *descbuf, unsigned char direction, uint32_t hfn_threshold, struct alginfo *cipherdata, - struct alginfo *authdata, - unsigned char era_2_sw_hfn_ovrd) + struct alginfo *authdata) { static int (*pdcp_cp_fp[PDCP_CIPHER_TYPE_INVALID][PDCP_AUTH_TYPE_INVALID]) (struct program*, bool swap, struct alginfo *, - struct alginfo *, unsigned int, enum pdcp_sn_size, - unsigned char __maybe_unused) = { + struct alginfo *, unsigned int dir, enum pdcp_sn_size) = { { /* NULL */ pdcp_insert_cplane_null_op, /* NULL */ pdcp_insert_cplane_int_only_op, /* SNOW f9 */ @@ -2961,11 +2479,6 @@ cnstr_shdsc_pdcp_c_plane_encap(uint32_t *descbuf, int err; LABEL(pdb_end); - if (rta_sec_era != RTA_SEC_ERA_2 && era_2_sw_hfn_ovrd) { - pr_err("Cannot select SW HFN override for other era than 2"); - return -EINVAL; - } - if (sn_size != PDCP_SN_SIZE_12 && sn_size != PDCP_SN_SIZE_5) { pr_err("C-plane supports only 5-bit and 12-bit sequence numbers\n"); return -EINVAL; @@ -2984,14 +2497,11 @@ cnstr_shdsc_pdcp_c_plane_encap(uint32_t *descbuf, sn_size, bearer, direction, - hfn_threshold, - cipherdata, - authdata); + hfn_threshold); SET_LABEL(p, pdb_end); - err = insert_hfn_ov_op(p, sn_size, pdb_type, - era_2_sw_hfn_ovrd, true); + err = insert_hfn_ov_op(p, sn_size, pdb_type, true); if (err) return err; @@ -3000,8 +2510,7 @@ cnstr_shdsc_pdcp_c_plane_encap(uint32_t *descbuf, cipherdata, authdata, OP_TYPE_ENCAP_PROTOCOL, - sn_size, - era_2_sw_hfn_ovrd); + sn_size); if (err) return err; @@ -3027,9 +2536,6 @@ cnstr_shdsc_pdcp_c_plane_encap(uint32_t *descbuf, * Valid algorithm values are those from cipher_type_pdcp enum. * @authdata: pointer to authentication transform definitions * Valid algorithm values are those from auth_type_pdcp enum. - * @era_2_sw_hfn_ovrd: if software HFN override mechanism is desired for - * this descriptor. Note: Can only be used for - * SEC ERA 2. * * Return: size of descriptor written in words or negative number on error. * Once the function returns, the value of this parameter can be used @@ -3049,14 +2555,12 @@ cnstr_shdsc_pdcp_c_plane_decap(uint32_t *descbuf, unsigned char direction, uint32_t hfn_threshold, struct alginfo *cipherdata, - struct alginfo *authdata, - unsigned char era_2_sw_hfn_ovrd) + struct alginfo *authdata) { static int (*pdcp_cp_fp[PDCP_CIPHER_TYPE_INVALID][PDCP_AUTH_TYPE_INVALID]) (struct program*, bool swap, struct alginfo *, - struct alginfo *, unsigned int, enum pdcp_sn_size, - unsigned char) = { + struct alginfo *, unsigned int dir, enum pdcp_sn_size) = { { /* NULL */ pdcp_insert_cplane_null_op, /* NULL */ pdcp_insert_cplane_int_only_op, /* SNOW f9 */ @@ -3115,11 +2619,6 @@ cnstr_shdsc_pdcp_c_plane_decap(uint32_t *descbuf, int err; LABEL(pdb_end); - if (rta_sec_era != RTA_SEC_ERA_2 && era_2_sw_hfn_ovrd) { - pr_err("Cannot select SW HFN override for other era than 2"); - return -EINVAL; - } - if (sn_size != PDCP_SN_SIZE_12 && sn_size != PDCP_SN_SIZE_5) { pr_err("C-plane supports only 5-bit and 12-bit sequence numbers\n"); return -EINVAL; @@ -3138,14 +2637,11 @@ cnstr_shdsc_pdcp_c_plane_decap(uint32_t *descbuf, sn_size, bearer, direction, - hfn_threshold, - cipherdata, - authdata); + hfn_threshold); SET_LABEL(p, pdb_end); - err = insert_hfn_ov_op(p, sn_size, pdb_type, - era_2_sw_hfn_ovrd, true); + err = insert_hfn_ov_op(p, sn_size, pdb_type, true); if (err) return err; @@ -3154,8 +2650,7 @@ cnstr_shdsc_pdcp_c_plane_decap(uint32_t *descbuf, cipherdata, authdata, OP_TYPE_DECAP_PROTOCOL, - sn_size, - era_2_sw_hfn_ovrd); + sn_size); if (err) return err; @@ -3170,14 +2665,12 @@ pdcp_insert_uplane_with_int_op(struct program *p, struct alginfo *cipherdata, struct alginfo *authdata, enum pdcp_sn_size sn_size, - unsigned char era_2_sw_hfn_ovrd, unsigned int dir) { static int (*pdcp_cp_fp[PDCP_CIPHER_TYPE_INVALID][PDCP_AUTH_TYPE_INVALID]) (struct program*, bool swap, struct alginfo *, - struct alginfo *, unsigned int, enum pdcp_sn_size, - unsigned char __maybe_unused) = { + struct alginfo *, unsigned int dir, enum pdcp_sn_size) = { { /* NULL */ pdcp_insert_cplane_null_op, /* NULL */ pdcp_insert_cplane_int_only_op, /* SNOW f9 */ @@ -3210,8 +2703,7 @@ pdcp_insert_uplane_with_int_op(struct program *p, cipherdata, authdata, dir, - sn_size, - era_2_sw_hfn_ovrd); + sn_size); if (err) return err; @@ -3234,9 +2726,6 @@ pdcp_insert_uplane_with_int_op(struct program *p, * keys should be renegotiated at the earliest convenience. * @cipherdata: pointer to block cipher transform definitions * Valid algorithm values are those from cipher_type_pdcp enum. - * @era_2_sw_hfn_ovrd: if software HFN override mechanism is desired for - * this descriptor. Note: Can only be used for - * SEC ERA 2. * * Return: size of descriptor written in words or negative number on error. * Once the function returns, the value of this parameter can be used @@ -3256,8 +2745,7 @@ cnstr_shdsc_pdcp_u_plane_encap(uint32_t *descbuf, unsigned short direction, uint32_t hfn_threshold, struct alginfo *cipherdata, - struct alginfo *authdata, - unsigned char era_2_sw_hfn_ovrd) + struct alginfo *authdata) { struct program prg; struct program *p = &prg; @@ -3292,16 +2780,6 @@ cnstr_shdsc_pdcp_u_plane_encap(uint32_t *descbuf, }; LABEL(pdb_end); - if (rta_sec_era != RTA_SEC_ERA_2 && era_2_sw_hfn_ovrd) { - pr_err("Cannot select SW HFN ovrd for other era than 2"); - return -EINVAL; - } - - if (authdata && !authdata->algtype && rta_sec_era < RTA_SEC_ERA_8) { - pr_err("Cannot use u-plane auth with era < 8"); - return -EINVAL; - } - PROGRAM_CNTXT_INIT(p, descbuf, 0); if (swap) PROGRAM_SET_BSWAP(p); @@ -3321,7 +2799,7 @@ cnstr_shdsc_pdcp_u_plane_encap(uint32_t *descbuf, } SET_LABEL(p, pdb_end); - err = insert_hfn_ov_op(p, sn_size, pdb_type, era_2_sw_hfn_ovrd, true); + err = insert_hfn_ov_op(p, sn_size, pdb_type, true); if (err) return err; @@ -3330,10 +2808,6 @@ cnstr_shdsc_pdcp_u_plane_encap(uint32_t *descbuf, case PDCP_SN_SIZE_12: switch (cipherdata->algtype) { case PDCP_CIPHER_TYPE_ZUC: - if (rta_sec_era < RTA_SEC_ERA_5) { - pr_err("Invalid era for selected algorithm\n"); - return -ENOTSUP; - } /* fallthrough */ case PDCP_CIPHER_TYPE_AES: case PDCP_CIPHER_TYPE_SNOW: @@ -3342,7 +2816,7 @@ cnstr_shdsc_pdcp_u_plane_encap(uint32_t *descbuf, authdata && authdata->algtype == 0){ err = pdcp_insert_uplane_with_int_op(p, swap, cipherdata, authdata, - sn_size, era_2_sw_hfn_ovrd, + sn_size, OP_TYPE_ENCAP_PROTOCOL); if (err) return err; @@ -3388,7 +2862,7 @@ cnstr_shdsc_pdcp_u_plane_encap(uint32_t *descbuf, if (authdata) { err = pdcp_insert_uplane_with_int_op(p, swap, cipherdata, authdata, - sn_size, era_2_sw_hfn_ovrd, + sn_size, OP_TYPE_ENCAP_PROTOCOL); if (err) return err; @@ -3437,9 +2911,6 @@ cnstr_shdsc_pdcp_u_plane_encap(uint32_t *descbuf, * keys should be renegotiated at the earliest convenience. * @cipherdata: pointer to block cipher transform definitions * Valid algorithm values are those from cipher_type_pdcp enum. - * @era_2_sw_hfn_ovrd: if software HFN override mechanism is desired for - * this descriptor. Note: Can only be used for - * SEC ERA 2. * * Return: size of descriptor written in words or negative number on error. * Once the function returns, the value of this parameter can be used @@ -3459,8 +2930,7 @@ cnstr_shdsc_pdcp_u_plane_decap(uint32_t *descbuf, unsigned short direction, uint32_t hfn_threshold, struct alginfo *cipherdata, - struct alginfo *authdata, - unsigned char era_2_sw_hfn_ovrd) + struct alginfo *authdata) { struct program prg; struct program *p = &prg; @@ -3496,16 +2966,6 @@ cnstr_shdsc_pdcp_u_plane_decap(uint32_t *descbuf, LABEL(pdb_end); - if (rta_sec_era != RTA_SEC_ERA_2 && era_2_sw_hfn_ovrd) { - pr_err("Cannot select SW HFN override for other era than 2"); - return -EINVAL; - } - - if (authdata && !authdata->algtype && rta_sec_era < RTA_SEC_ERA_8) { - pr_err("Cannot use u-plane auth with era < 8"); - return -EINVAL; - } - PROGRAM_CNTXT_INIT(p, descbuf, 0); if (swap) PROGRAM_SET_BSWAP(p); @@ -3525,7 +2985,7 @@ cnstr_shdsc_pdcp_u_plane_decap(uint32_t *descbuf, } SET_LABEL(p, pdb_end); - err = insert_hfn_ov_op(p, sn_size, pdb_type, era_2_sw_hfn_ovrd, true); + err = insert_hfn_ov_op(p, sn_size, pdb_type, true); if (err) return err; @@ -3534,10 +2994,6 @@ cnstr_shdsc_pdcp_u_plane_decap(uint32_t *descbuf, case PDCP_SN_SIZE_12: switch (cipherdata->algtype) { case PDCP_CIPHER_TYPE_ZUC: - if (rta_sec_era < RTA_SEC_ERA_5) { - pr_err("Invalid era for selected algorithm\n"); - return -ENOTSUP; - } /* fallthrough */ case PDCP_CIPHER_TYPE_AES: case PDCP_CIPHER_TYPE_SNOW: @@ -3555,7 +3011,7 @@ cnstr_shdsc_pdcp_u_plane_decap(uint32_t *descbuf, else if (authdata && authdata->algtype == 0) { err = pdcp_insert_uplane_with_int_op(p, swap, cipherdata, authdata, - sn_size, era_2_sw_hfn_ovrd, + sn_size, OP_TYPE_DECAP_PROTOCOL); if (err) return err; @@ -3589,7 +3045,7 @@ cnstr_shdsc_pdcp_u_plane_decap(uint32_t *descbuf, if (authdata) { err = pdcp_insert_uplane_with_int_op(p, swap, cipherdata, authdata, - sn_size, era_2_sw_hfn_ovrd, + sn_size, OP_TYPE_DECAP_PROTOCOL); if (err) return err; @@ -3649,9 +3105,6 @@ cnstr_shdsc_pdcp_short_mac(uint32_t *descbuf, struct program prg; struct program *p = &prg; uint32_t iv[3] = {0, 0, 0}; - LABEL(local_offset); - REFERENCE(move_cmd_read_descbuf); - REFERENCE(move_cmd_write_descbuf); PROGRAM_CNTXT_INIT(p, descbuf, 0); if (swap) @@ -3661,52 +3114,15 @@ cnstr_shdsc_pdcp_short_mac(uint32_t *descbuf, SHR_HDR(p, SHR_ALWAYS, 1, 0); - if (rta_sec_era > RTA_SEC_ERA_2) { - MATHB(p, SEQINSZ, SUB, ZERO, VSEQINSZ, 4, 0); - MATHB(p, SEQINSZ, SUB, ZERO, MATH1, 4, 0); - } else { - MATHB(p, SEQINSZ, ADD, ONE, MATH1, 4, 0); - MATHB(p, MATH1, SUB, ONE, MATH1, 4, 0); - MATHB(p, ZERO, ADD, MATH1, VSEQINSZ, 4, 0); - MOVE(p, MATH1, 0, MATH0, 0, 8, IMMED); + MATHB(p, SEQINSZ, SUB, ZERO, VSEQINSZ, 4, 0); + MATHB(p, SEQINSZ, SUB, ZERO, MATH1, 4, 0); - /* - * Since MOVELEN is available only starting with - * SEC ERA 3, use poor man's MOVELEN: create a MOVE - * command dynamically by writing the length from M1 by - * OR-ing the command in the M1 register and MOVE the - * result into the descriptor buffer. Care must be taken - * wrt. the location of the command because of SEC - * pipelining. The actual MOVEs are written at the end - * of the descriptor due to calculations needed on the - * offset in the descriptor for the MOVE command. - */ - move_cmd_read_descbuf = MOVE(p, DESCBUF, 0, MATH0, 0, 6, - IMMED); - move_cmd_write_descbuf = MOVE(p, MATH0, 0, DESCBUF, 0, 8, - WAITCOMP | IMMED); - } MATHB(p, ZERO, ADD, MATH1, VSEQOUTSZ, 4, 0); switch (authdata->algtype) { case PDCP_AUTH_TYPE_NULL: SEQFIFOSTORE(p, MSG, 0, 0, VLF); - if (rta_sec_era > RTA_SEC_ERA_2) { - MOVE(p, AB1, 0, OFIFO, 0, MATH1, 0); - } else { - SET_LABEL(p, local_offset); - - /* Shut off automatic Info FIFO entries */ - LOAD(p, 0, DCTRL, LDOFF_DISABLE_AUTO_NFIFO, 0, IMMED); - - /* Placeholder for MOVE command with length from M1 - * register - */ - MOVE(p, IFIFOAB1, 0, OFIFO, 0, 0, IMMED); - - /* Enable automatic Info FIFO entries */ - LOAD(p, 0, DCTRL, LDOFF_ENABLE_AUTO_NFIFO, 0, IMMED); - } + MOVE(p, AB1, 0, OFIFO, 0, MATH1, 0); LOAD(p, (uintptr_t)iv, MATH0, 0, 8, IMMED | COPY); SEQFIFOLOAD(p, MSG1, 0, VLF | LAST1 | LAST2 | FLUSH1); @@ -3730,23 +3146,8 @@ cnstr_shdsc_pdcp_short_mac(uint32_t *descbuf, DIR_ENC); SEQFIFOSTORE(p, MSG, 0, 0, VLF); - if (rta_sec_era > RTA_SEC_ERA_2) { - MOVE(p, AB1, 0, OFIFO, 0, MATH1, 0); - } else { - SET_LABEL(p, local_offset); - - - /* Shut off automatic Info FIFO entries */ - LOAD(p, 0, DCTRL, LDOFF_DISABLE_AUTO_NFIFO, 0, IMMED); - - /* Placeholder for MOVE command with length from M1 - * register - */ - MOVE(p, IFIFOAB1, 0, OFIFO, 0, 0, IMMED); + MOVE(p, AB1, 0, OFIFO, 0, MATH1, 0); - /* Enable automatic Info FIFO entries */ - LOAD(p, 0, DCTRL, LDOFF_ENABLE_AUTO_NFIFO, 0, IMMED); - } SEQFIFOLOAD(p, MSGINSNOOP, 0, VLF | LAST1 | LAST2 | FLUSH1); SEQSTORE(p, CONTEXT2, 0, 4, 0); @@ -3768,32 +3169,14 @@ cnstr_shdsc_pdcp_short_mac(uint32_t *descbuf, DIR_ENC); SEQFIFOSTORE(p, MSG, 0, 0, VLF); - if (rta_sec_era > RTA_SEC_ERA_2) { - MOVE(p, AB2, 0, OFIFO, 0, MATH1, 0); - } else { - SET_LABEL(p, local_offset); - - /* Shut off automatic Info FIFO entries */ - LOAD(p, 0, DCTRL, LDOFF_DISABLE_AUTO_NFIFO, 0, IMMED); + MOVE(p, AB2, 0, OFIFO, 0, MATH1, 0); - /* Placeholder for MOVE command with length from M1 - * register - */ - MOVE(p, IFIFOAB2, 0, OFIFO, 0, 0, IMMED); - - /* Enable automatic Info FIFO entries */ - LOAD(p, 0, DCTRL, LDOFF_ENABLE_AUTO_NFIFO, 0, IMMED); - } SEQFIFOLOAD(p, MSGINSNOOP, 0, VLF | LAST1 | LAST2 | FLUSH1); SEQSTORE(p, CONTEXT1, 0, 4, 0); break; case PDCP_AUTH_TYPE_ZUC: - if (rta_sec_era < RTA_SEC_ERA_5) { - pr_err("Invalid era for selected algorithm\n"); - return -ENOTSUP; - } iv[0] = 0xFFFFFFFF; iv[1] = swap ? swab32(0xFC000000) : 0xFC000000; iv[2] = 0x00000000; /* unused */ @@ -3819,12 +3202,6 @@ cnstr_shdsc_pdcp_short_mac(uint32_t *descbuf, return -EINVAL; } - - if (rta_sec_era < RTA_SEC_ERA_3) { - PATCH_MOVE(p, move_cmd_read_descbuf, local_offset); - PATCH_MOVE(p, move_cmd_write_descbuf, local_offset); - } - return PROGRAM_FINALIZE(p); } diff --git a/drivers/common/dpaax/caamflib/desc/sdap.h b/drivers/common/dpaax/caamflib/desc/sdap.h index 07f55b5b40..f0e712093a 100644 --- a/drivers/common/dpaax/caamflib/desc/sdap.h +++ b/drivers/common/dpaax/caamflib/desc/sdap.h @@ -225,10 +225,6 @@ static inline int pdcp_sdap_insert_no_int_op(struct program *p, break; case PDCP_CIPHER_TYPE_ZUC: - if (rta_sec_era < RTA_SEC_ERA_5) { - pr_err("Invalid era for selected algorithm\n"); - return -ENOTSUP; - } /* The LSB and MSB is the same for ZUC context */ MOVEB(p, MATH2, 0, CONTEXT1, 0, 0x08, IMMED); MOVEB(p, MATH2, 0, CONTEXT1, 0x08, 0x08, WAITCOMP | IMMED); @@ -253,7 +249,6 @@ pdcp_sdap_insert_enc_only_op(struct program *p, bool swap __maybe_unused, struct alginfo *cipherdata, struct alginfo *authdata __maybe_unused, unsigned int dir, enum pdcp_sn_size sn_size, - unsigned char era_2_sw_hfn_ovrd __maybe_unused, enum pdb_type_e pdb_type) { uint32_t offset = 0, length = 0, sn_mask = 0; @@ -293,12 +288,7 @@ pdcp_sdap_insert_enc_only_op(struct program *p, bool swap __maybe_unused, /* Write header */ SEQSTORE(p, MATH0, offset, length, 0); - if (rta_sec_era > RTA_SEC_ERA_2) { - MATHB(p, SEQINSZ, SUB, ZERO, VSEQINSZ, 4, 0); - } else { - MATHB(p, SEQINSZ, SUB, ONE, MATH1, 4, 0); - MATHB(p, MATH1, ADD, ONE, VSEQINSZ, 4, 0); - } + MATHB(p, SEQINSZ, SUB, ZERO, VSEQINSZ, 4, 0); if (dir == OP_TYPE_ENCAP_PROTOCOL) MATHB(p, SEQINSZ, ADD, PDCP_MAC_I_LEN, VSEQOUTSZ, 4, IMMED2); @@ -326,11 +316,6 @@ pdcp_sdap_insert_enc_only_op(struct program *p, bool swap __maybe_unused, break; case PDCP_CIPHER_TYPE_ZUC: - if (rta_sec_era < RTA_SEC_ERA_5) { - pr_err("Invalid era for selected algorithm\n"); - return -ENOTSUP; - } - MOVEB(p, MATH2, 0, CONTEXT1, 0, 0x08, IMMED); MOVEB(p, MATH2, 0, CONTEXT1, 0x08, 0x08, WAITCOMP | IMMED); @@ -378,7 +363,6 @@ static inline int pdcp_sdap_insert_snoop_op(struct program *p, bool swap __maybe_unused, struct alginfo *cipherdata, struct alginfo *authdata, unsigned int dir, enum pdcp_sn_size sn_size, - unsigned char era_2_sw_hfn_ovrd __maybe_unused, enum pdb_type_e pdb_type) { uint32_t offset = 0, length = 0, sn_mask = 0; @@ -391,13 +375,6 @@ pdcp_sdap_insert_snoop_op(struct program *p, bool swap __maybe_unused, FULL_PDB_DESCBUF_HFN_BEARER_DIR_OFFSET : REDUCED_PDB_DESCBUF_HFN_BEARER_DIR_OFFSET; - if (authdata->algtype == PDCP_CIPHER_TYPE_ZUC) { - if (rta_sec_era < RTA_SEC_ERA_5) { - pr_err("Invalid era for selected algorithm\n"); - return -ENOTSUP; - } - } - if (pdcp_sdap_get_sn_parameters(sn_size, swap, &offset, &length, &sn_mask)) return -ENOTSUP; @@ -588,8 +565,7 @@ pdcp_sdap_insert_snoop_op(struct program *p, bool swap __maybe_unused, */ JUMP(p, 1, LOCAL_JUMP, ALL_TRUE, CLASS1 | NOP | NIFP); - if (rta_sec_era >= RTA_SEC_ERA_6) - LOAD(p, 0, DCTRL, 0, LDLEN_RST_CHA_OFIFO_PTR, IMMED); + LOAD(p, 0, DCTRL, 0, LDLEN_RST_CHA_OFIFO_PTR, IMMED); /* Save the content left in the Output FIFO (the ICV) to MATH0 */ @@ -604,13 +580,7 @@ pdcp_sdap_insert_snoop_op(struct program *p, bool swap __maybe_unused, * Note: As configured by the altsource, this will send * the */ - if (rta_sec_era <= RTA_SEC_ERA_2) { - /* Shut off automatic Info FIFO entries */ - LOAD(p, 0, DCTRL, LDOFF_DISABLE_AUTO_NFIFO, 0, IMMED); - MOVE(p, MATH0, 0, IFIFOAB2, 0, 4, WAITCOMP | IMMED); - } else { - MOVE(p, MATH0, 0, IFIFO, 0, 4, WAITCOMP | IMMED); - } + MOVE(p, MATH0, 0, IFIFO, 0, 4, WAITCOMP | IMMED); } if (authdata->algtype == PDCP_CIPHER_TYPE_ZUC) { @@ -638,7 +608,6 @@ pdcp_sdap_insert_snoop_op(struct program *p, bool swap __maybe_unused, static inline int pdcp_sdap_insert_no_snoop_op( struct program *p, bool swap __maybe_unused, struct alginfo *cipherdata, struct alginfo *authdata, unsigned int dir, enum pdcp_sn_size sn_size, - unsigned char era_2_sw_hfn_ovrd __maybe_unused, enum pdb_type_e pdb_type) { uint32_t offset = 0, length = 0, sn_mask = 0; @@ -649,13 +618,6 @@ static inline int pdcp_sdap_insert_no_snoop_op( FULL_PDB_DESCBUF_HFN_BEARER_DIR_OFFSET : REDUCED_PDB_DESCBUF_HFN_BEARER_DIR_OFFSET; - if (authdata->algtype == PDCP_CIPHER_TYPE_ZUC) { - if (rta_sec_era < RTA_SEC_ERA_5) { - pr_err("Invalid era for selected algorithm\n"); - return -ENOTSUP; - } - } - if (pdcp_sdap_get_sn_parameters(sn_size, swap, &offset, &length, &sn_mask)) return -ENOTSUP; @@ -842,11 +804,10 @@ pdcp_sdap_insert_cplane_null_op(struct program *p, struct alginfo *authdata, unsigned int dir, enum pdcp_sn_size sn_size, - unsigned char era_2_sw_hfn_ovrd, enum pdb_type_e pdb_type __maybe_unused) { return pdcp_insert_cplane_null_op(p, swap, cipherdata, authdata, dir, - sn_size, era_2_sw_hfn_ovrd); + sn_size); } static inline int @@ -856,24 +817,22 @@ pdcp_sdap_insert_cplane_int_only_op(struct program *p, struct alginfo *authdata, unsigned int dir, enum pdcp_sn_size sn_size, - unsigned char era_2_sw_hfn_ovrd, enum pdb_type_e pdb_type __maybe_unused) { return pdcp_insert_cplane_int_only_op(p, swap, cipherdata, authdata, - dir, sn_size, era_2_sw_hfn_ovrd); + dir, sn_size); } static int pdcp_sdap_insert_with_int_op( struct program *p, bool swap __maybe_unused, struct alginfo *cipherdata, struct alginfo *authdata, enum pdcp_sn_size sn_size, - unsigned char era_2_sw_hfn_ovrd, unsigned int dir, + unsigned int dir, enum pdb_type_e pdb_type) { static int ( *pdcp_cp_fp[PDCP_CIPHER_TYPE_INVALID][PDCP_AUTH_TYPE_INVALID])( struct program *, bool swap, struct alginfo *, struct alginfo *, - unsigned int, enum pdcp_sn_size, - unsigned char __maybe_unused, enum pdb_type_e pdb_type) = { + unsigned int dir, enum pdcp_sn_size, enum pdb_type_e pdb_type) = { { /* NULL */ pdcp_sdap_insert_cplane_null_op, /* NULL */ @@ -907,7 +866,7 @@ static int pdcp_sdap_insert_with_int_op( err = pdcp_cp_fp[cipherdata->algtype] [authdata->algtype](p, swap, cipherdata, authdata, dir, - sn_size, era_2_sw_hfn_ovrd, pdb_type); + sn_size, pdb_type); if (err) return err; @@ -925,7 +884,6 @@ cnstr_shdsc_pdcp_sdap_u_plane(uint32_t *descbuf, uint32_t hfn_threshold, struct alginfo *cipherdata, struct alginfo *authdata, - unsigned char era_2_sw_hfn_ovrd, uint32_t caps_mode) { struct program prg; @@ -966,12 +924,6 @@ cnstr_shdsc_pdcp_sdap_u_plane(uint32_t *descbuf, LABEL(pdb_end); - /* Check HFN override for ERA 2 */ - if (rta_sec_era != RTA_SEC_ERA_2 && era_2_sw_hfn_ovrd) { - pr_err("Cannot select SW HFN ovrd for other era than 2"); - return -EINVAL; - } - /* Check the confidentiality algorithm is supported by the code */ switch (cipherdata->algtype) { case PDCP_CIPHER_TYPE_NULL: @@ -1013,14 +965,6 @@ cnstr_shdsc_pdcp_sdap_u_plane(uint32_t *descbuf, return -ENOTSUP; } - /* Check that we are not performing ZUC algo on old platforms */ - if (cipherdata->algtype == PDCP_CIPHER_TYPE_ZUC && - rta_sec_era < RTA_SEC_ERA_5) { - pr_err("ZUC algorithm not supported for era: %d\n", - rta_sec_era); - return -ENOTSUP; - } - /* Initialize the program */ PROGRAM_CNTXT_INIT(p, descbuf, 0); @@ -1047,7 +991,7 @@ cnstr_shdsc_pdcp_sdap_u_plane(uint32_t *descbuf, SET_LABEL(p, pdb_end); /* Inser the HFN override operation */ - err = insert_hfn_ov_op(p, sn_size, pdb_type, era_2_sw_hfn_ovrd, false); + err = insert_hfn_ov_op(p, sn_size, pdb_type, false); if (err) return err; @@ -1068,7 +1012,6 @@ cnstr_shdsc_pdcp_sdap_u_plane(uint32_t *descbuf, } else { err = pdcp_sdap_insert_with_int_op(p, swap, cipherdata, authdata, sn_size, - era_2_sw_hfn_ovrd, caps_mode, pdb_type); if (err) { pr_err("Fail pdcp_sdap_insert_with_int_op\n"); @@ -1096,9 +1039,6 @@ cnstr_shdsc_pdcp_sdap_u_plane(uint32_t *descbuf, * keys should be renegotiated at the earliest convenience. * @cipherdata: pointer to block cipher transform definitions * Valid algorithm values are those from cipher_type_pdcp enum. - * @era_2_sw_hfn_ovrd: if software HFN override mechanism is desired for - * this descriptor. Note: Can only be used for - * SEC ERA 2. * * Return: size of descriptor written in words or negative number on error. * Once the function returns, the value of this parameter can be used @@ -1118,12 +1058,11 @@ cnstr_shdsc_pdcp_sdap_u_plane_encap(uint32_t *descbuf, unsigned short direction, uint32_t hfn_threshold, struct alginfo *cipherdata, - struct alginfo *authdata, - unsigned char era_2_sw_hfn_ovrd) + struct alginfo *authdata) { return cnstr_shdsc_pdcp_sdap_u_plane(descbuf, ps, swap, sn_size, hfn, bearer, direction, hfn_threshold, cipherdata, - authdata, era_2_sw_hfn_ovrd, OP_TYPE_ENCAP_PROTOCOL); + authdata, OP_TYPE_ENCAP_PROTOCOL); } /** @@ -1141,9 +1080,6 @@ cnstr_shdsc_pdcp_sdap_u_plane_encap(uint32_t *descbuf, * keys should be renegotiated at the earliest convenience. * @cipherdata: pointer to block cipher transform definitions * Valid algorithm values are those from cipher_type_pdcp enum. - * @era_2_sw_hfn_ovrd: if software HFN override mechanism is desired for - * this descriptor. Note: Can only be used for - * SEC ERA 2. * * Return: size of descriptor written in words or negative number on error. * Once the function returns, the value of this parameter can be used @@ -1163,12 +1099,11 @@ cnstr_shdsc_pdcp_sdap_u_plane_decap(uint32_t *descbuf, unsigned short direction, uint32_t hfn_threshold, struct alginfo *cipherdata, - struct alginfo *authdata, - unsigned char era_2_sw_hfn_ovrd) + struct alginfo *authdata) { return cnstr_shdsc_pdcp_sdap_u_plane(descbuf, ps, swap, sn_size, hfn, bearer, direction, hfn_threshold, cipherdata, authdata, - era_2_sw_hfn_ovrd, OP_TYPE_DECAP_PROTOCOL); + OP_TYPE_DECAP_PROTOCOL); } #endif /* __DESC_SDAP_H__ */ diff --git a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c index a5b052375d..1e6b3e548a 100644 --- a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c +++ b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c @@ -3297,8 +3297,7 @@ dpaa2_sec_set_pdcp_session(struct rte_cryptodev *dev, pdcp_xform->bearer, pdcp_xform->pkt_dir, pdcp_xform->hfn_threshold, - &cipherdata, &authdata, - 0); + &cipherdata, &authdata); else if (session->dir == DIR_DEC) bufsize = cnstr_shdsc_pdcp_c_plane_decap( priv->flc_desc[0].desc, 1, swap, @@ -3307,8 +3306,7 @@ dpaa2_sec_set_pdcp_session(struct rte_cryptodev *dev, pdcp_xform->bearer, pdcp_xform->pkt_dir, pdcp_xform->hfn_threshold, - &cipherdata, &authdata, - 0); + &cipherdata, &authdata); } else if (pdcp_xform->domain == RTE_SECURITY_PDCP_MODE_SHORT_MAC) { bufsize = cnstr_shdsc_pdcp_short_mac(priv->flc_desc[0].desc, @@ -3323,7 +3321,7 @@ dpaa2_sec_set_pdcp_session(struct rte_cryptodev *dev, pdcp_xform->bearer, pdcp_xform->pkt_dir, pdcp_xform->hfn_threshold, - &cipherdata, p_authdata, 0); + &cipherdata, p_authdata); else bufsize = cnstr_shdsc_pdcp_u_plane_encap( priv->flc_desc[0].desc, 1, swap, @@ -3332,7 +3330,7 @@ dpaa2_sec_set_pdcp_session(struct rte_cryptodev *dev, pdcp_xform->bearer, pdcp_xform->pkt_dir, pdcp_xform->hfn_threshold, - &cipherdata, p_authdata, 0); + &cipherdata, p_authdata); } else if (session->dir == DIR_DEC) { if (pdcp_xform->sdap_enabled) bufsize = cnstr_shdsc_pdcp_sdap_u_plane_decap( @@ -3342,7 +3340,7 @@ dpaa2_sec_set_pdcp_session(struct rte_cryptodev *dev, pdcp_xform->bearer, pdcp_xform->pkt_dir, pdcp_xform->hfn_threshold, - &cipherdata, p_authdata, 0); + &cipherdata, p_authdata); else bufsize = cnstr_shdsc_pdcp_u_plane_decap( priv->flc_desc[0].desc, 1, swap, @@ -3351,7 +3349,7 @@ dpaa2_sec_set_pdcp_session(struct rte_cryptodev *dev, pdcp_xform->bearer, pdcp_xform->pkt_dir, pdcp_xform->hfn_threshold, - &cipherdata, p_authdata, 0); + &cipherdata, p_authdata); } } diff --git a/drivers/crypto/dpaa_sec/dpaa_sec.c b/drivers/crypto/dpaa_sec/dpaa_sec.c index f20acdd123..1137b142e9 100644 --- a/drivers/crypto/dpaa_sec/dpaa_sec.c +++ b/drivers/crypto/dpaa_sec/dpaa_sec.c @@ -296,8 +296,7 @@ dpaa_sec_prep_pdcp_cdb(dpaa_sec_session *ses) ses->pdcp.bearer, ses->pdcp.pkt_dir, ses->pdcp.hfn_threshold, - &cipherdata, &authdata, - 0); + &cipherdata, &authdata); else if (ses->dir == DIR_DEC) shared_desc_len = cnstr_shdsc_pdcp_c_plane_decap( cdb->sh_desc, 1, swap, @@ -306,8 +305,7 @@ dpaa_sec_prep_pdcp_cdb(dpaa_sec_session *ses) ses->pdcp.bearer, ses->pdcp.pkt_dir, ses->pdcp.hfn_threshold, - &cipherdata, &authdata, - 0); + &cipherdata, &authdata); } else if (ses->pdcp.domain == RTE_SECURITY_PDCP_MODE_SHORT_MAC) { shared_desc_len = cnstr_shdsc_pdcp_short_mac(cdb->sh_desc, 1, swap, &authdata); @@ -322,7 +320,7 @@ dpaa_sec_prep_pdcp_cdb(dpaa_sec_session *ses) ses->pdcp.bearer, ses->pdcp.pkt_dir, ses->pdcp.hfn_threshold, - &cipherdata, p_authdata, 0); + &cipherdata, p_authdata); else shared_desc_len = cnstr_shdsc_pdcp_u_plane_encap( @@ -332,7 +330,7 @@ dpaa_sec_prep_pdcp_cdb(dpaa_sec_session *ses) ses->pdcp.bearer, ses->pdcp.pkt_dir, ses->pdcp.hfn_threshold, - &cipherdata, p_authdata, 0); + &cipherdata, p_authdata); } else if (ses->dir == DIR_DEC) { if (ses->pdcp.sdap_enabled) shared_desc_len = @@ -343,7 +341,7 @@ dpaa_sec_prep_pdcp_cdb(dpaa_sec_session *ses) ses->pdcp.bearer, ses->pdcp.pkt_dir, ses->pdcp.hfn_threshold, - &cipherdata, p_authdata, 0); + &cipherdata, p_authdata); else shared_desc_len = cnstr_shdsc_pdcp_u_plane_decap( @@ -353,7 +351,7 @@ dpaa_sec_prep_pdcp_cdb(dpaa_sec_session *ses) ses->pdcp.bearer, ses->pdcp.pkt_dir, ses->pdcp.hfn_threshold, - &cipherdata, p_authdata, 0); + &cipherdata, p_authdata); } } return shared_desc_len; From patchwork Thu Feb 10 10:58:47 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gagandeep Singh X-Patchwork-Id: 107230 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 5E43DA034D; Thu, 10 Feb 2022 11:59:27 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 9F5E8426DB; Thu, 10 Feb 2022 11:59:16 +0100 (CET) Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-eopbgr60055.outbound.protection.outlook.com [40.107.6.55]) by mails.dpdk.org (Postfix) with ESMTP id 39414410E5 for ; Thu, 10 Feb 2022 11:59:15 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=oXyzaENvpz2wovCGhQIeGkv6BgP+TTOfT0DQZf3ogM7td6fNJ802t1FCwkEIDqN69H/gnuhIxznjtOfBb8JkV9RFtITGKp8T/N2sWbwGberLH+ZsEsQ/xKxf+Y/aTzUMYnL/2CBD17iTDbpgdm//DIQRigNl0IU79AdRQyhJJKfYO0f5eysym9xu3hgVONZJkKE8kCqQtNR94+jwx5O2hfJixMgv34aA4BfJoGZXl6dvu132RK3a99H8zRZHPFU9klVEtjny6GgXNhEehhBYbd+oi83BdWip2mwr9B3AJMF1Oi1dgrM2UVq0soNu8fTUkzSP2Rhp44RI024qmUf18Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=lIhVnV0IlrGZTDQSVF0LCELCU84X2uALMTyHhgtu1hE=; b=MAea63sA/IFUS6epVWoxLRv77MzoR4XEBANoFGFAVZWI/DbLumjvyicG6itInSOwoJMAKhuc7IJagpKSnLudXCFlYsovriC+T2thufT5amVgEskxlSxJ6ANhmIHcCFzr9uj5m3uICDqebYAa/sWThs5ibcZJmL5/lYOitMPu7XgfRM0xUGSYO3fI9F7WLvY3EiNpuXmkJV1igxnDFfjnkHnuL9J1QUnmaUeTL2h61xVg0WZysbXTO/Nz1rLiCZSUJDB8hnR0LaodyVPeUPg8m+r2KjzNXvNs4NSNUVEHRvq9oXKGAs0RR61eOFLau+ZuN+beTe1DJLiszS4lrlX53A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; 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=lIhVnV0IlrGZTDQSVF0LCELCU84X2uALMTyHhgtu1hE=; b=Qbf3nCqZvkCmTfDW4ASiJAukCr/4hLzL8eK7nPezmfe39nNiWm2ixzB/Ram7Ta9bgCKWb+uRmPYHFaGVzA+cTQHjkBXQoXxUyWcwgef6ocoed8ToeIszXb5UQ/3ySJ8RGWoGeA1+Hc5ErlmxF7SLuntHJ4UMeTvOzGa+F4apgsU= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AS8PR04MB8198.eurprd04.prod.outlook.com (2603:10a6:20b:3b0::14) by AM6PR04MB4294.eurprd04.prod.outlook.com (2603:10a6:209:4a::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4975.11; Thu, 10 Feb 2022 10:59:14 +0000 Received: from AS8PR04MB8198.eurprd04.prod.outlook.com ([fe80::4146:965b:5645:9269]) by AS8PR04MB8198.eurprd04.prod.outlook.com ([fe80::4146:965b:5645:9269%4]) with mapi id 15.20.4975.011; Thu, 10 Feb 2022 10:59:14 +0000 From: Gagandeep Singh To: gakhil@marvell.com, dev@dpdk.org Cc: Gagandeep Singh Subject: [PATCH v4 2/7] common/dpaax: change job processing mode for PDCP SDAP Date: Thu, 10 Feb 2022 16:28:47 +0530 Message-Id: <20220210105852.1268506-3-g.singh@nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220210105852.1268506-1-g.singh@nxp.com> References: <20220210043136.304845-2-g.singh@nxp.com> <20220210105852.1268506-1-g.singh@nxp.com> X-ClientProxiedBy: SG2PR03CA0092.apcprd03.prod.outlook.com (2603:1096:4:7c::20) To AS8PR04MB8198.eurprd04.prod.outlook.com (2603:10a6:20b:3b0::14) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d9e7f212-821f-4086-c7c8-08d9ec846022 X-MS-TrafficTypeDiagnostic: AM6PR04MB4294:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1388; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: mb1klc0zCINqoS6cmxSJFcmLHcUnNy3L16/Urhg0gP0YdnjHA9z+2j/Re3MPiI1bEeLzHcMfKkY94yWT4QNdDaWKJDflFImL6FLPsAGcjD2F37EVvK87sx+3LH71B8taIaRJ+cvGOr/AW1QRpyT5Mcrhc6GvtmEfjNIPRAHK2t+Qd8U3Za2Nr+SvMQx40qK8MLc2kcRclwfSdpBBrqp2vrbXAwCjdaFDigOijeIJYQJPQIwcH2h8OKbAFz9eM4Od0Xrmb64cOKYD2E3/qAtRLg0F66Hb2G+1VDVxa/ICQDZcmhLeYY9cYWIa3cX3Y32cb9a4YB0SptKmGIPv/WGFpYGiqw4sWayFRhejKUta8lB5niXnOUtgGZhZZ/ml+hTmNcpEJ823LYId/FxRwHe4rR7BN4cvAQJsXgKKenMPXE8UBNlpcsiUrZybAw/Z4ZxRthmKFGPsZgO3eNyBPQjBhVUvrlgbRJ/s0vDOxiak28oIeXBpUMS7nFktrFGg1GUiPLcr+oUlHVWFiQ7PnIA0X2xFzz+B3S8qpk3+LcJuYbYeR3oeb/hzFzaxWBEAml5jFgffkwtbg2YulaUgrbx0NjC6LVm7MfJHCcj5j8JiqsWDPwT2QsT7z1Wxe9fUmrLnb0x0mqCoF7H/4dHAQdibBxRn+8upheuneG5rGPdmJZkhbQKStUX25Ih9xpirqkvIba9iB6Wevl/QS+MIsJfFKg== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS8PR04MB8198.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(4636009)(366004)(6666004)(1076003)(186003)(86362001)(6486002)(26005)(316002)(508600001)(66556008)(4326008)(66476007)(8676002)(66946007)(2906002)(5660300002)(2616005)(8936002)(6512007)(55236004)(36756003)(83380400001)(38350700002)(38100700002)(52116002)(6506007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 8qT5zbdV5Phj419yXq0pBX4t5h5yAVDF4/TnQ8X6TK/a8Bx+VK5WLc+KjBjHheFc88e795PbRSthTndxKs09oMYT5Lb+P8uJJmUgV5oHsRE4520PP7j4rcLpp07Hpo9ifz4cpOs/Vei+glLgF5DOjqbuovxRSJ6KHusmNB8mizLbE08NVLxdNyKQtXHq0aMnBeygPJHcaRHunefWceZFNgiU7DAYlkYwHq9t6obpcqXx2gNUyM1jevUNyuUggvsZSp+OBxrFRnhmW8Q5PZvvkRzixBI5ilCG1Z4IgrYyDtvAV8RKCDyRngyw1NVz7buNCZI4pWkg3LwmKoGLhZQTSLwNe14WNfXaam+F3fj1pWTHwMFbAHjApQPf42YDWg4vk/71pi2IjSO3PA+bwd+pag6lV6ZAJboBbbItGv8xsDoq9EPGcZou5rAfcGe6++mvH9pJlZgTZCHBXRudW8hcBCq3K7FVezrr1COXX54MhL5J08VeufidXpEu2whd3uNsD0PYNaa3n3+JAI6/OcUhEdtwSfwH5Oy2uBlddQOJ3lLu3pSvLPz7uQsXw9Phj6Cy65k3hW1fIXBFw6vns8q9Bav02VVn40We91aQ/Km6AEZj5dp2/+dnmB5674u1QFChbukKmm5B1B8f7rNcHTekUOBzJac8c2koDbe5bqKQhi92SvB6pm29pe+CzCokuOaQX86xOHUCfFXNExOi1T2E27dXTacezZ6wH2KWCgWsrvrtbmiLnkMW+kCarYy/xRbt9mkUflLA/T1WzRzrZyme4YMfI9FIchESy/T/DFP4o6GgTDUqMC1TrTwp+XKAaWYUkkT+kGTV6u2SOg7qW4vd8u/BDuAqI/F+rVp+zOR0fH1aHw133AGzP1X1WfQSa+vz/1iJ+ZQxrde0SrEf5CVQS/KBn7AzwpycvUnDu4dvcVottastSJPDTSDHT2E0N3YCL8sJ8EgS0FAn1azpz7Ba9rCdZOKGVOLZtM4sphcr3g7EZiwRpQCwQEVVpM/+mH/M5zvptj/fXsxu8nS7243xwUw6k9T+GwT4z7GsarxQ5PvJhiQEMLRDjLq7CSwbDMCAuAMDn3thfH39bzp5fNjw8Ry/27lFOHaHkPO+tO+NxGTshzaSuAOt6TDs1kEeVNkeMIb8UX36n/YJCmyrFhRPYUaPpLWEL1JYbSjy2rwUsuhc3PFpof8XzTZa9gBmH9QPLJandx8RSk9KTTkbbHpUqazBB15nQAM4zw4l/ty8SGH5DOj7X/VY8sv0t/agCMcE8RehxEQ0xvsUIOLesqb4LiFGiqSU3yWuY9Wm0Xz+uSrSNxPFBQ8bzSHsOZjP05tX40ImSyMVYSeLJkUwshxtrt7GF/ZpUZX8hm2NUwKh3NEpmOwz/3E3fihuH0kD55UThIlkCnTdJvq7kXU1P0K8XkwSVFHf3h5kLO++UaxijL73dcGMjmTUhLV3VF2/vJtFIx46xZDhVCQXpB11v+OXqMj4PqcyQ3olSud8gc1Lmm8xSlCRkekU9wNArj5WETzqIEhTNURV9ft25sDHnoLoFpJqIy/+OIB8pH7t6RuNSMM= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: d9e7f212-821f-4086-c7c8-08d9ec846022 X-MS-Exchange-CrossTenant-AuthSource: AS8PR04MB8198.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Feb 2022 10:59:14.4385 (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: ZmleSNIK2urcMvwVEak2NotCOl5wDFMBfuzodfwfAZKpHZv0uvcM7+nWOnrW4e7b X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR04MB4294 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 For PDCP SDAP test cases, HW sec engine process the jobs in WAIT mode. Signed-off-by: Gagandeep Singh --- drivers/common/dpaax/caamflib/desc/sdap.h | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/drivers/common/dpaax/caamflib/desc/sdap.h b/drivers/common/dpaax/caamflib/desc/sdap.h index f0e712093a..07a544295e 100644 --- a/drivers/common/dpaax/caamflib/desc/sdap.h +++ b/drivers/common/dpaax/caamflib/desc/sdap.h @@ -895,27 +895,27 @@ cnstr_shdsc_pdcp_sdap_u_plane(uint32_t *descbuf, { /* NULL */ SHR_WAIT, /* NULL */ - SHR_ALWAYS, /* SNOW f9 */ - SHR_ALWAYS, /* AES CMAC */ - SHR_ALWAYS /* ZUC-I */ + SHR_WAIT, /* SNOW f9 */ + SHR_WAIT, /* AES CMAC */ + SHR_WAIT /* ZUC-I */ }, { /* SNOW f8 */ - SHR_ALWAYS, /* NULL */ - SHR_ALWAYS, /* SNOW f9 */ + SHR_WAIT, /* NULL */ + SHR_WAIT, /* SNOW f9 */ SHR_WAIT, /* AES CMAC */ SHR_WAIT /* ZUC-I */ }, { /* AES CTR */ - SHR_ALWAYS, /* NULL */ - SHR_ALWAYS, /* SNOW f9 */ - SHR_ALWAYS, /* AES CMAC */ + SHR_WAIT, /* NULL */ + SHR_WAIT, /* SNOW f9 */ + SHR_WAIT, /* AES CMAC */ SHR_WAIT /* ZUC-I */ }, { /* ZUC-E */ - SHR_ALWAYS, /* NULL */ + SHR_WAIT, /* NULL */ SHR_WAIT, /* SNOW f9 */ SHR_WAIT, /* AES CMAC */ SHR_WAIT /* ZUC-I */ @@ -979,7 +979,7 @@ cnstr_shdsc_pdcp_sdap_u_plane(uint32_t *descbuf, SHR_HDR(p, desc_share[cipherdata->algtype][authdata->algtype], 0, 0); else - SHR_HDR(p, SHR_ALWAYS, 0, 0); + SHR_HDR(p, SHR_WAIT, 0, 0); /* Construct the PDB */ pdb_type = cnstr_pdcp_u_plane_pdb(p, sn_size, hfn, bearer, direction, From patchwork Thu Feb 10 10:58:48 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gagandeep Singh X-Patchwork-Id: 107231 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 01436A00C2; Thu, 10 Feb 2022 11:59:33 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 82489426DC; Thu, 10 Feb 2022 11:59:18 +0100 (CET) Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-eopbgr60043.outbound.protection.outlook.com [40.107.6.43]) by mails.dpdk.org (Postfix) with ESMTP id 92588426DC for ; Thu, 10 Feb 2022 11:59:17 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Km7EUVX3XpgCum+IaPHz29GJTe9lmhcPvXIBF21Kmp651Ju5dnO1KljOQE24b1nRNmrB9tKRBza84UVouEF66Yj6a/5abhgfQu2ejtmLvFpQh/xA8kAcvA0pX+VrkASpUtIFqG9TfZOoCK0HoK5syFlu2oJ7pFyhyH29Zt43oAxh43ixP8K1+18aWwO0ISafP29B56sBz0YiaQdKttQxBgYCek0kw0ke15BCVeE7YIzM/um+V//n7ifyJ5iW1APBtx6aDQ78VbucXEVj6b606fPpBM3GwEbYPgImnCefKh/zbjpsk49i6S94hS8ombOLGZAhCbUDBUHfvTM6XGcO3g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=1cqG8ySax9Vc0SSEJibvrZhKhuzkg6WQaJhBluLpF+M=; b=esYkFa/061HvzxIlmFSil35MoQhuqWiHDrfVFBOMUiaMob4RJLeP1Ba0uKJUKKrYP8m8e8WGP5XZCMFEQ20cJHoxcsWOu8xxZvXdfZEVABbKgTtD17k9u/uOqIK/n9xhoj9LBfg+APvCsFTsuqKGWWR9M2pNj9F7HatgqkNZ0VFCwUP12o0XDQDcHUb8P0N9nrtuHH2A0+C8Vcia4YzbWdoB5r+tSRigICw3CH2Gxf8gbzbfT/ytWcJGfig949ShPJX8TxY/BMI3ivRsR0hQpKm556wSm9TBWXRxpEEkHTBvBHtVUI5PeKNnamiJ0QQZUonRz9oF2toEBuI/aKc0bQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; 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=1cqG8ySax9Vc0SSEJibvrZhKhuzkg6WQaJhBluLpF+M=; b=Vtb5alBTyh1KYfJ3bYD80VEEVbBVval23HzkinxrenjRXnSb1fynBgAUom+5Li9zyOad6y2bsN8Vd95ED2+kIvbhb9e82/0S8GI1hVMHMTl2kIejmLgKs4Ye4jgDVzve7UFF9YNnV4W+yCZsA4b1tzMy0QvTR+QnGkcOgDgd460= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AS8PR04MB8198.eurprd04.prod.outlook.com (2603:10a6:20b:3b0::14) by AM6PR04MB4294.eurprd04.prod.outlook.com (2603:10a6:209:4a::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4975.11; Thu, 10 Feb 2022 10:59:16 +0000 Received: from AS8PR04MB8198.eurprd04.prod.outlook.com ([fe80::4146:965b:5645:9269]) by AS8PR04MB8198.eurprd04.prod.outlook.com ([fe80::4146:965b:5645:9269%4]) with mapi id 15.20.4975.011; Thu, 10 Feb 2022 10:59:16 +0000 From: Gagandeep Singh To: gakhil@marvell.com, dev@dpdk.org Cc: Hemant Agrawal , Gagandeep Singh Subject: [PATCH v4 3/7] crypto/dpaa2_sec: change capabilities for AES_CMAC Date: Thu, 10 Feb 2022 16:28:48 +0530 Message-Id: <20220210105852.1268506-4-g.singh@nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220210105852.1268506-1-g.singh@nxp.com> References: <20220210043136.304845-2-g.singh@nxp.com> <20220210105852.1268506-1-g.singh@nxp.com> X-ClientProxiedBy: SG2PR03CA0092.apcprd03.prod.outlook.com (2603:1096:4:7c::20) To AS8PR04MB8198.eurprd04.prod.outlook.com (2603:10a6:20b:3b0::14) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 59ae02ea-ec75-4aaa-88a9-08d9ec846151 X-MS-TrafficTypeDiagnostic: AM6PR04MB4294:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1107; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: FXavQvRdaW4R8AIoJ6AFt3SC65XKuqA8CPHEKjlJcy9sOJVPljXfbSrvBpQhoFiTEZlDKDTnhAxUgZui9Jb4xp4UhWWCXdGkCi9JxFq7NRnHDogzeQd99YTcj3ngY4OTzChblqK7zzts60vFFy+aWO2JxnF8B9lIeddfr81kNCDu+FLwygcAhDEqejMeYp2HE4eOO4GYWQOqccOicOIyJsR96Kb75wx37+XUTDUplge6mHGb7THSg+lRMHR1N+USRhbTTBGGT7Jt77xL7dmWyOvfE0TR1fOQiRyCzj4iUeAH/vvDA8jeM4XXbRnGqrCWgkQX1mAdso9oY7B/kdCdE6X9MMkfGpM/+hYF7l7nR3Ef45lHaTNDobT/mYtzf0wQguZH8wAgdssqX+tW4b/ci+7PPGB11nhISUGeWGQkn3ZGvtRhlnzq4Aea5BDvoXMvtmVJ74KSroTB5fvas6e40NOU/YJR9XG4FXpvA/HL3oTEL1cFuPuTdPsVRyY+8JG5JdIw0Ma3yHgy239fPq/um6vj1A/8x90fnwOhn9ktOVjsrWWeHCzO73IZ1kyu5FFgPwOL9Z8RNr6HcWDb7JpomuM6KGVQyE7K4hiqKQrZGXBtt6OjnH75AS7jYiIStVQg4QuiEfTg+3rENJZraMpFWb96DdfkIMSdmRTjGrezhhnBDQv1vcIVnUQnmFIahfuTxbGrObeGiP+Eemm2jpaiFA== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS8PR04MB8198.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(4636009)(366004)(6666004)(1076003)(186003)(86362001)(6486002)(26005)(316002)(508600001)(66556008)(4326008)(66476007)(4744005)(8676002)(54906003)(66946007)(2906002)(5660300002)(2616005)(8936002)(6512007)(55236004)(36756003)(83380400001)(38350700002)(38100700002)(52116002)(6506007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: LsEYTK3NKALkpne4/5zMxN0bhnIRh7QWVr/t9HpDME/vK87Ucnp3iPEOsMtlx8rejBHFTHx866n58fGZkMyEIbGNzGmtWWsxa8990nqOPaRKvE/rs38vBpogBhH93mKCFVNEnf0KR2G1O7cDdsXGpavsfdWfu8QzFyrs0y0AFMRiTOvAqWOmKrIFAjvaeohijZU7/zTduPFke0lIlvJNWjDaheOc5X07axPf9MV0g5KP3axHmGoVMmYbRDmHvn4wkLiQdw840n/O+MWL6HSadF6haYEKKOaibW9uYZ1kvBedsJ6sX4JXWs9fCntRhDT6id3JH7xoygo2MIP94J9j5eWQWjXDbbC2eSlnJtHFRxBR1/Lt6tHcJyYapMEcPt0/Y3jEh8a5DSRdZ1NXAqp9LGn6WZW2GBn9wZoHZP2ExR9OOZDqHTggWnktkhN1NYfosiulbl4Dz4SdxQnAV2g4P5NH5/hWCXpoYbctGaTBAA03OXeZDWBl/yDktAXPT10B/+ehzGveq8MxFT4a4XtO6Kv+vYFfK+qPPoZ2rVpWRA5RtdZmH3TyPdpI5fmtdJaln3Wg8+SN72F5iI41qq+U/3le+Zbc4OPRpXNeRguL/Fo5klPFU0aZEaGSC9Bv47gbhbbpw9GKy5x8ecHu9RnCR2RhT45sPHnokHaVATi76/QlatLucBjhHUikTzIsRIEBPJhinGZVBzBG0LI0mCRDFi/rajYUSDGQN9dB5YhRzpf5IERbbieIRv9ue6KFjrW2xGk/Ei+OP/E3tucCbG8XNsKw9MQhNI+VB1x7FmHYEzM/mOPi4mFdhhyBuEqbALOUzjWo9j5MNFi3BYMEYJ727aKJNy7Sh9iCz1KQxufzwj709cgDpXCF/Bz5zt8uxSr16ZjlxGAjVErzzg50vOuE2GWazLJniDuuFPisGwW+RIyO6z5iX19CFnssPBuYUA24IXAYLvSvuouToDkf1i/GayodYo+AU+o3Ww3QYfB/slSgncF83X0xwP+MJUWc0PTsxzK3UB7gDqkj7p8IHMGFt81e3FoE8tL+88ASOAPKWJoVbm4uLm9MDXNkgpmJWv6aIXcNResFadZhn046ksqD+lRnbAk6VquGAoXV5pYw65c0JaX0hwofl7dQLCfdYYhW74cQgB44dJklSFkvTXKOj1N9sFpEgrFu+sYy4zV9gXM7KVHtU2hA+/aBA1MGKE/flywXFu+uFdhElI+m+8W6l0ITlLDctx7+RKSwos8Q0Swg6yGgtGNww/NLDAkBzmP4H2lNIooiaBwf3QTG7+Iy9O3SS6VnmFFhjXyYr6S3HiBMAyxbMiLwr794IJ8EZj71JOsMCjN8qCrE5BJ19i6/z2E9OIi9ory0/N06q96+6GvCL/QSzSNC6WAHfFlVYQ9IxhtI41iii1goeUJYsvDfmc5qAfvvyJYuGj1pYpjFTqQPRz1iRk0PoparouTMypeOmDe1+xRIg9JgzMDRx616wS+HFJYJnS1pJl9GirIJgf9ODsJgrLoVoerHsAAKvAQinUs3uPWjU4TJep7EaNuC873H9ggMC8dIh39L9cb7MrY= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 59ae02ea-ec75-4aaa-88a9-08d9ec846151 X-MS-Exchange-CrossTenant-AuthSource: AS8PR04MB8198.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Feb 2022 10:59:16.6425 (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: cn3qDIPr7IZjAzX+diZqM/P/C61fEet3yDlq3KvM18aprixRSr1TFBRB0rFqxkzM X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR04MB4294 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 From: Hemant Agrawal Add IV size and change the digest size to supported value by the HW engine. Signed-off-by: Hemant Agrawal Signed-off-by: Gagandeep Singh --- drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h b/drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h index 05bd7c0736..a8f9440632 100644 --- a/drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h +++ b/drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h @@ -549,11 +549,12 @@ static const struct rte_cryptodev_capabilities dpaa2_sec_capabilities[] = { .increment = 1 }, .digest_size = { - .min = 4, + .min = 12, .max = 16, .increment = 4 }, - .aad_size = { 0 } + .aad_size = { 0 }, + .iv_size = { 0 } }, } }, } }, From patchwork Thu Feb 10 10:58:49 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gagandeep Singh X-Patchwork-Id: 107232 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 61093A00C2; Thu, 10 Feb 2022 11:59:38 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 7720D426D6; Thu, 10 Feb 2022 11:59:20 +0100 (CET) Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-eopbgr60057.outbound.protection.outlook.com [40.107.6.57]) by mails.dpdk.org (Postfix) with ESMTP id 77FED426D6 for ; Thu, 10 Feb 2022 11:59:19 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bD0my9FGrEmSEao5/NR96LHBW3wQnGFgVOA26ry7LQ/PBI73hYonqxwrxFpKZa4veF3r6jaKENKizZqTjos7RI/g0OVC9lWlCe6D6NodNgikEYZzgtSCpJu9w1vZwbfcvl6DIVrvK7QbsKjbkDimz9XxXG1OxQ82j1tglmq7AqH7rd1OzMr4acdFzp6TIiS9nJPUjJu1wD3vlDbhR2STVjWc+C4/GTdX5lDbnlnnXDuFNqD85tYyNgV1qJXo82RlcEoTXDl8/gLPv6C+lqCqsqsqHoZoHgUcaSPJS6L/h+fOzyUYKYTTO5fbY6LTyIbBbbUaf5TAKKp6ceMQKYtSMg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=b3t43XXJaHG1q/2ws9FZ2A4xaOzkV7ZIUArlwotl/ag=; b=ELyqRcVAcWGvOilRbkCg4/vEvK8N/EpLm8n9eJMvSDyrDnQMJGnm4VAE0yL+aUmwZMPjw1FPnRzYeB0V8muqJ3+UJcjz0WWf50DRpzCAWIz1ijq5IIqk6vGLqi9P6RMvy1PT9KRfjzXqAnscUogfyWOFBMQPKW5e95kd3vbHC6GxxkW5FOwjo1RsTtRWfKzGzwDxI/brX/La6miG8JN9FoHNabh+rnq4P+a265lDm9nSTC+ew/TmWr0DZoCp23XTACldcEUJACK3bWvI5JOMPjYTAaXpevBjj+SGejEK6JOcWufDSrarNGs9Ddy7OgkEwOqjI03QwPmZD/2P8ryIDg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; 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=b3t43XXJaHG1q/2ws9FZ2A4xaOzkV7ZIUArlwotl/ag=; b=IfV17iHk9gfdi42Y6B1jtawxP3XvWBh9IIcvDU7rzY5lQe6hCHMgJuOWxp270zWoefk/mGpBHreKptNVva9xfjIJN4gnfEqpau8jp/RjNHpKRgyl8E1CNchm6fg1laZdQQaZkf97CdoFPEu7dw2PfIGn8HbfspiXiSyUVLEZ62c= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AS8PR04MB8198.eurprd04.prod.outlook.com (2603:10a6:20b:3b0::14) by AM6PR04MB4294.eurprd04.prod.outlook.com (2603:10a6:209:4a::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4975.11; Thu, 10 Feb 2022 10:59:18 +0000 Received: from AS8PR04MB8198.eurprd04.prod.outlook.com ([fe80::4146:965b:5645:9269]) by AS8PR04MB8198.eurprd04.prod.outlook.com ([fe80::4146:965b:5645:9269%4]) with mapi id 15.20.4975.011; Thu, 10 Feb 2022 10:59:18 +0000 From: Gagandeep Singh To: gakhil@marvell.com, dev@dpdk.org Cc: Gagandeep Singh Subject: [PATCH v4 4/7] crypto/dpaa2_sec: add useful debug prints in sec dequeue Date: Thu, 10 Feb 2022 16:28:49 +0530 Message-Id: <20220210105852.1268506-5-g.singh@nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220210105852.1268506-1-g.singh@nxp.com> References: <20220210043136.304845-2-g.singh@nxp.com> <20220210105852.1268506-1-g.singh@nxp.com> X-ClientProxiedBy: SG2PR03CA0092.apcprd03.prod.outlook.com (2603:1096:4:7c::20) To AS8PR04MB8198.eurprd04.prod.outlook.com (2603:10a6:20b:3b0::14) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 73fabcba-500d-40ec-2619-08d9ec846291 X-MS-TrafficTypeDiagnostic: AM6PR04MB4294:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1824; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: oBqJM15onFiE6R5vO58PIh+pGllqAReiW3ZZZ9XJGvR7NPLslL3KPeS05JbIiCw2nYbPRfDcqkbamXTpmrjZUPQahKep27Nrgukay7Gsyc3t2Q9sOiJLr0H75+VvHc9ehshR8sliH5U37P5RFdowYUD8lpn8We4IrEDjALhOaDo1NxHzcoAWKtKIkCzobLahinpQu/zyuSJ6A7zYSpbbmRWCVhRzMrLAeIkKZ/rPcQRB0/4kQWQWFt2lkSETie0kB3IrTgr0IY2eZ/d+OMcGjSLfgWirntaUycAIz5v65r/VKoveuFQhuQaQpRvsYo1U1rBcmWUJU/kadFpV8pwr6z9IRbrtcHSKawem529arlBBgfyttOsDvrfeT23+uuSRKKndl0R3H1lEDEy0k85LR4OTZjDtWctLIswGnJTUKlwrMORGtFA7pmCNY94hF+8CTCHPtob5fgA5Z/sb03hJhMAnYTg/DcSkvu2FjwahIfBesGt1Ok4q7ofwZSusVYYzNBk42TyFVDn5Bc610mL1zfrKZPZxfYjO/dHuoiMf7JG4ZxPXOWGxnWz22RtiDAcHFOVh5iMmHv29EfFId53ecEWJUD2Aa4+lC/YPhU1/J+IgVY09AvteMi/XNndsrxknxQ3OMvbBv5e3Uucc1b/OHOzxIRKAsG6QQ3cr31l5ZXW29HBGj61P0zJ2U2Ol0vpxzeHEWUAjFgBN/3QxkAQ0SQ== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS8PR04MB8198.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(4636009)(366004)(6666004)(1076003)(186003)(86362001)(6486002)(26005)(316002)(508600001)(66556008)(4326008)(66476007)(8676002)(66946007)(2906002)(5660300002)(2616005)(8936002)(6512007)(55236004)(36756003)(83380400001)(38350700002)(38100700002)(52116002)(6506007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: gjfG98TKoXuZ8AbPok9SeCnv4vch7f600o0lZdDLMwSeks9q2cBReJ6c1H3kEiKKxR4tYoMaCL0TDl+iFJWFRhZDCY7LQbq2JDSn0/1wUjwIXi1CqIZrCrV8gh5qy7+m1W28QRN0160pmvrQmYJLjFA1OdUigggNY0+nXhCdck9jtU8tqN73dQGD509HtBTxoM9O+Y48AGyZUlis378vsTHcud+6NgMUx1ERUp6BJQTcN1fOXvxxyN09mTdfc85xC/vhO6OufwI8lm6VyoveoTDt+rjyve3dhi7OfB0VVmJdDD2Gv1k1H3ysjF+muS63R5ZNemeSdNveg3BGYCv60FULQ6zAZNlUH8GGxVb8SXL9YDhtva1LHnXz4o0UAGgVIfb8n5qbPKMJ4GLW+nfsarAQekd2CuZ1Bgc6Ey3dNRfTsyLhmv58Xh9nDFYvDBXNYugFG0XaFeC01qFBl3jxXUWb4lvBmntmNez4VOFFXgLPq+y0RMeE4D75Lp7iqreTDbV0hu/ASta/7//qam0KEwpLpvO58iLYtPiCpq/VV/I/txd4ZPklyy+5wit3IyksMbpdW5ZjqYhozfOj/2bLQorlM7015EEMnvuzE58UOCa6RvmRx88VANd2IOLhy+jdScd9YJM5FmECpdlV3hZlOnimdSVTLIvAtjraUcoAOasT7iau/vQnEYyWOD2eB2RhE0GuG975bN94nA4KlkEivVjUMqdQ/MZzCZCME0iYwB1fD+EtsNM61abjUE9WVVz6D8OLjUVlrLw5iv65S3JCDmQyB9Gdh9jVsQObbhfJVG2cbmN55zEWdFTMUBchr/cYmJbl++vxMdUOPvV/SPcZ9xiIMpwi0SXzDV7/lGJ97+8KLCQzXmp469hW3V3sNQO4CfVt0YxfG5skHLWMTfhOzHXVXhVNJHwBRZxRIvrbuVfsaeyoZHjI24vGmpHEhouPncrsW4AivNn8pnIPkxqiUfsUIxz5TwF7Wc8Eejn85VOiL75C09ZFBHmWjC/josWwYqOShY/JOwkJ5vZQw4A6rgfaYh4KdbwZZBm6/MHsylMbb+WkUTc2+MUm6ZmIIb7+GI9Mw9mj+OyR1p3WEfVqYHSO2nzbOvAJC8ehzJkCuI8HjcaWM7dU5Ma81V1RTnGY11BI+H2p0IJzUjUkT344YVoqcwYJlHVWSAE/gh7Wzsszo7YTKN/4NWETLgH5S14BQVw/YaWC+5Ru6CJo1Y/CjXL14kxL0Dab5qznzlamP5re+O+Rnv0nbS9Ms7aOPwkaqrTsYixyH2cdgEnYZmLOWh7JNfAyKDcB1bRinoHzkBGx33yRhFclCKhGay93Psjm0wGl/BPjJ8IuPb5Vo5daopZ07hl7EGtR7zxBVqGG0u2xVI9yla4MY7bIF4shT1eMvYQxuZceEA/OPS17A0PAJ+5thLhLrKWQgfAoX2FVgOigaO5thJOCtqw879SqlPSULO303gWhLC+GZNE7I36DLfSm48c6nxb/YUYJ8+trQ0pr9xxcIMr3wLgeMWA3hM18oDXY4ixev7Wd1Qs6F+YwQob4MUNHgO+23T8c1uCdDRU= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 73fabcba-500d-40ec-2619-08d9ec846291 X-MS-Exchange-CrossTenant-AuthSource: AS8PR04MB8198.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Feb 2022 10:59:18.5965 (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: Ii1WlhnoFIhpYUe/DGe9HWXmnQp1aPS//JzzU4GksRbco71KtPve6exmWSt9PuXj X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR04MB4294 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 Few useful debug prints added in dequeue function. Signed-off-by: Gagandeep Singh --- doc/guides/cryptodevs/dpaa2_sec.rst | 10 ++ drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c | 136 +++++++++++++++++++- 2 files changed, 144 insertions(+), 2 deletions(-) diff --git a/doc/guides/cryptodevs/dpaa2_sec.rst b/doc/guides/cryptodevs/dpaa2_sec.rst index 06de988d51..875d918068 100644 --- a/doc/guides/cryptodevs/dpaa2_sec.rst +++ b/doc/guides/cryptodevs/dpaa2_sec.rst @@ -175,3 +175,13 @@ For enabling logs, use the following EAL parameter: Using ``crypto.dpaa2`` as log matching criteria, all Crypto PMD logs can be enabled which are lower than logging ``level``. + +Enabling debug prints +--------------------- + +Use dev arg option ``drv_dump_mode=x`` to dump useful debug prints on HW sec +error. There are 3 dump modes available 0, 1 and 2. Mode 0 means no dump print +on error, mode 1 means dump HW error code and mode 2 means dump HW error code +along with other useful debugging information like session, queue, descriptor +data. +e.g. ``fslmc:dpseci.1,drv_dump_mode=1`` diff --git a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c index 1e6b3e548a..444e1f0043 100644 --- a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c +++ b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c @@ -28,6 +28,7 @@ #include #include #include +#include #include "dpaa2_sec_priv.h" #include "dpaa2_sec_event.h" @@ -50,7 +51,17 @@ #define NO_PREFETCH 0 +#define DRIVER_DUMP_MODE "drv_dump_mode" + +/* DPAA2_SEC_DP_DUMP levels */ +enum dpaa2_sec_dump_levels { + DPAA2_SEC_DP_NO_DUMP, + DPAA2_SEC_DP_ERR_DUMP, + DPAA2_SEC_DP_FULL_DUMP +}; + uint8_t cryptodev_driver_id; +uint8_t dpaa2_sec_dp_dump = DPAA2_SEC_DP_ERR_DUMP; #ifdef RTE_LIB_SECURITY static inline int @@ -1621,6 +1632,83 @@ sec_fd_to_mbuf(const struct qbman_fd *fd) return op; } +static void +dpaa2_sec_dump(struct rte_crypto_op *op) +{ + int i; + dpaa2_sec_session *sess = NULL; + struct ctxt_priv *priv; + uint8_t bufsize; + struct rte_crypto_sym_op *sym_op; + + if (op->sess_type == RTE_CRYPTO_OP_WITH_SESSION) + sess = (dpaa2_sec_session *)get_sym_session_private_data( + op->sym->session, cryptodev_driver_id); +#ifdef RTE_LIBRTE_SECURITY + else if (op->sess_type == RTE_CRYPTO_OP_SECURITY_SESSION) + sess = (dpaa2_sec_session *)get_sec_session_private_data( + op->sym->sec_session); +#endif + + if (sess == NULL) + goto mbuf_dump; + + priv = (struct ctxt_priv *)sess->ctxt; + printf("\n****************************************\n" + "session params:\n\tContext type:\t%d\n\tDirection:\t%s\n" + "\tCipher alg:\t%d\n\tAuth alg:\t%d\n\tAead alg:\t%d\n" + "\tCipher key len:\t%zd\n", sess->ctxt_type, + (sess->dir == DIR_ENC) ? "DIR_ENC" : "DIR_DEC", + sess->cipher_alg, sess->auth_alg, sess->aead_alg, + sess->cipher_key.length); + rte_hexdump(stdout, "cipher key", sess->cipher_key.data, + sess->cipher_key.length); + rte_hexdump(stdout, "auth key", sess->auth_key.data, + sess->auth_key.length); + printf("\tAuth key len:\t%zd\n\tIV len:\t\t%d\n\tIV offset:\t%d\n" + "\tdigest length:\t%d\n\tstatus:\t\t%d\n\taead auth only" + " len:\t%d\n\taead cipher text:\t%d\n", + sess->auth_key.length, sess->iv.length, sess->iv.offset, + sess->digest_length, sess->status, + sess->ext_params.aead_ctxt.auth_only_len, + sess->ext_params.aead_ctxt.auth_cipher_text); +#ifdef RTE_LIBRTE_SECURITY + printf("PDCP session params:\n" + "\tDomain:\t\t%d\n\tBearer:\t\t%d\n\tpkt_dir:\t%d\n\thfn_ovd:" + "\t%d\n\tsn_size:\t%d\n\thfn_ovd_offset:\t%d\n\thfn:\t\t%d\n" + "\thfn_threshold:\t0x%x\n", sess->pdcp.domain, + sess->pdcp.bearer, sess->pdcp.pkt_dir, sess->pdcp.hfn_ovd, + sess->pdcp.sn_size, sess->pdcp.hfn_ovd_offset, sess->pdcp.hfn, + sess->pdcp.hfn_threshold); + +#endif + bufsize = (uint8_t)priv->flc_desc[0].flc.word1_sdl; + printf("Descriptor Dump:\n"); + for (i = 0; i < bufsize; i++) + printf("\tDESC[%d]:0x%x\n", i, priv->flc_desc[0].desc[i]); + + printf("\n"); +mbuf_dump: + sym_op = op->sym; + if (sym_op->m_src) { + printf("Source mbuf:\n"); + rte_pktmbuf_dump(stdout, sym_op->m_src, sym_op->m_src->data_len); + } + if (sym_op->m_dst) { + printf("Destination mbuf:\n"); + rte_pktmbuf_dump(stdout, sym_op->m_dst, sym_op->m_dst->data_len); + } + + printf("Session address = %p\ncipher offset: %d, length: %d\n" + "auth offset: %d, length: %d\n aead offset: %d, length: %d\n" + , sym_op->session, + sym_op->cipher.data.offset, sym_op->cipher.data.length, + sym_op->auth.data.offset, sym_op->auth.data.length, + sym_op->aead.data.offset, sym_op->aead.data.length); + printf("\n"); + +} + static uint16_t dpaa2_sec_dequeue_burst(void *qp, struct rte_crypto_op **ops, uint16_t nb_ops) @@ -1702,8 +1790,13 @@ dpaa2_sec_dequeue_burst(void *qp, struct rte_crypto_op **ops, if (unlikely(fd->simple.frc)) { /* TODO Parse SEC errors */ - DPAA2_SEC_DP_ERR("SEC returned Error - %x\n", - fd->simple.frc); + if (dpaa2_sec_dp_dump > DPAA2_SEC_DP_NO_DUMP) { + DPAA2_SEC_DP_ERR("SEC returned Error - %x\n", + fd->simple.frc); + if (dpaa2_sec_dp_dump > DPAA2_SEC_DP_ERR_DUMP) + dpaa2_sec_dump(ops[num_rx]); + } + dpaa2_qp->rx_vq.err_pkts += 1; ops[num_rx]->status = RTE_CRYPTO_OP_STATUS_ERROR; } else { @@ -3883,6 +3976,42 @@ dpaa2_sec_uninit(const struct rte_cryptodev *dev) return 0; } +static int +check_devargs_handler(__rte_unused const char *key, const char *value, + __rte_unused void *opaque) +{ + dpaa2_sec_dp_dump = atoi(value); + if (dpaa2_sec_dp_dump > DPAA2_SEC_DP_FULL_DUMP) { + DPAA2_SEC_WARN("WARN: DPAA2_SEC_DP_DUMP_LEVEL is not " + "supported, changing to FULL error prints\n"); + dpaa2_sec_dp_dump = DPAA2_SEC_DP_FULL_DUMP; + } + + return 0; +} + +static void +dpaa2_sec_get_devargs(struct rte_devargs *devargs, const char *key) +{ + struct rte_kvargs *kvlist; + + if (!devargs) + return; + + kvlist = rte_kvargs_parse(devargs->args, NULL); + if (!kvlist) + return; + + if (!rte_kvargs_count(kvlist, key)) { + rte_kvargs_free(kvlist); + return; + } + + rte_kvargs_process(kvlist, key, + check_devargs_handler, NULL); + rte_kvargs_free(kvlist); +} + static int dpaa2_sec_dev_init(struct rte_cryptodev *cryptodev) { @@ -3984,6 +4113,7 @@ dpaa2_sec_dev_init(struct rte_cryptodev *cryptodev) goto init_error; } + dpaa2_sec_get_devargs(cryptodev->device->devargs, DRIVER_DUMP_MODE); DPAA2_SEC_INFO("driver %s: created", cryptodev->data->name); return 0; @@ -4082,4 +4212,6 @@ static struct cryptodev_driver dpaa2_sec_crypto_drv; RTE_PMD_REGISTER_DPAA2(CRYPTODEV_NAME_DPAA2_SEC_PMD, rte_dpaa2_sec_driver); RTE_PMD_REGISTER_CRYPTO_DRIVER(dpaa2_sec_crypto_drv, rte_dpaa2_sec_driver.driver, cryptodev_driver_id); +RTE_PMD_REGISTER_PARAM_STRING(CRYPTODEV_NAME_DPAA2_SEC_PMD, + DRIVER_DUMP_MODE "="); RTE_LOG_REGISTER(dpaa2_logtype_sec, pmd.crypto.dpaa2, NOTICE); From patchwork Thu Feb 10 10:58:50 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gagandeep Singh X-Patchwork-Id: 107233 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 B4525A00C2; Thu, 10 Feb 2022 11:59:45 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id A7981426DA; Thu, 10 Feb 2022 11:59:23 +0100 (CET) Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-eopbgr150054.outbound.protection.outlook.com [40.107.15.54]) by mails.dpdk.org (Postfix) with ESMTP id BC13C426DA; Thu, 10 Feb 2022 11:59:22 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HLoaMy0+UNUV53cnIvSHuPwcR6PX7ixtvcxi+fjnFk2OMEXk4CV2NK7LXsJa3TlLNLz8M9p+puA8Hpr0kdKy9l3v/LTvAROkjDW8MWkLXcZgHDJX5pNOJBg+gLyuqRXf9HxNENdHoX1/0H4+R2RwtqjmBGDYHUGot3WnoJKXEVbXlmAZbPz0Z4inHQ+WfdJUficzvlI90ak3EEAemqLwarODvdC5SJm439VA2JERZxSQwhJken/MMiDGHaBNGriLqI4nnIMaoBwVvY9ux6aBWwfFm5m9vxj1yuMSG46TRD65EoD2SXeXrCbPLyrpUvG0YN9Y1Er0geR5QBvlKTzYLw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=B1iyb1nC9R2UZ0iUYL8YGcyphXI9djcbIlN7JKLh1rs=; b=hmZ8+8D+yUsRev4e6ZVdJO0EyAcLi9RE8PneTUGjrwe4keVy9pr7ycRwyBqsjA6FHtEycac2jOzw3L+XQWtaEbImZucLXF9Sh934+LoDH+MxVWfro3sWRzvWUKxP6X8wl9yuGVm+4WyOyNMGxH2+BpQdlG/jCKwusTEL6tb7MRfONGJYglIiUjYu5o7aoi13e5eG8UWRCijP18cORvIBpVGiK06k92AN94GSsUKIwWUlL554rHS7mFvE+gz3feUk9HeLlM4cDLxVCT2Du9t7AmVenhj0S+udEfURekRGJrxqgnMgbwOlAmOWhrNxgaH6e+fVDKehhbnjxxJ8b5lV5w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; 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=B1iyb1nC9R2UZ0iUYL8YGcyphXI9djcbIlN7JKLh1rs=; b=f+YcsK/87sob9c6B+mSLKtEOsFtDbhy1W5DS7FMU43B7zeHaHDrNnsmYUoDiq2s4PLRKuRolQZIa/ZCaJnJUpwjDQ4G0VkHUBBxhxrH89ef4zdUW4agxvow34CRysbrejAE6pJy82g8gqfFjm0WoEt2CZO5M+9a8vP498WRn8pM= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AS8PR04MB8198.eurprd04.prod.outlook.com (2603:10a6:20b:3b0::14) by DB7PR04MB4091.eurprd04.prod.outlook.com (2603:10a6:5:1e::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4951.18; Thu, 10 Feb 2022 10:59:21 +0000 Received: from AS8PR04MB8198.eurprd04.prod.outlook.com ([fe80::4146:965b:5645:9269]) by AS8PR04MB8198.eurprd04.prod.outlook.com ([fe80::4146:965b:5645:9269%4]) with mapi id 15.20.4975.011; Thu, 10 Feb 2022 10:59:20 +0000 From: Gagandeep Singh To: gakhil@marvell.com, dev@dpdk.org Cc: Hemant Agrawal , stable@dpdk.org Subject: [PATCH v4 5/7] crypto/dpaa2: fix to check next type for auth or cipher Date: Thu, 10 Feb 2022 16:28:50 +0530 Message-Id: <20220210105852.1268506-6-g.singh@nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220210105852.1268506-1-g.singh@nxp.com> References: <20220210043136.304845-2-g.singh@nxp.com> <20220210105852.1268506-1-g.singh@nxp.com> X-ClientProxiedBy: SG2PR03CA0092.apcprd03.prod.outlook.com (2603:1096:4:7c::20) To AS8PR04MB8198.eurprd04.prod.outlook.com (2603:10a6:20b:3b0::14) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 747e9bb1-0b6b-4ff6-befa-08d9ec8463d7 X-MS-TrafficTypeDiagnostic: DB7PR04MB4091:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1728; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Dmqqr9U7vKzWiAmmSRdOzX2L4cDFNWhF1HSRorBAU3Z3rc+LKzTFE8ZuasUQizHtpgvk58tZv9wrLbLNO4VbYgCvYuedffg4DArIO3O1pDDc09YxQCIWEdGluSBxkYtMbYLXxR1nnAmmkBP7gFwkEv5wzhW9TgzmfCNU4vmI93M0rak4o/ws6tB/1vXsuWZ3kjf6phEO8QJZnOlLXunBm0K+vIt3iGXx+ntDNQB9qxotgDUaJYcUT5vQGmbOK6+HwQsGxPFxRkmxA/EEa64gUD8cPHM/9V1zvLB/o7LLfE4ULN4Lr1gWtpwy/auBnmtjBsA08O4Y2FguKxNfABEAOqboFKKD7an+/5etaNLGF/LVTwZgiJHq6TJJN3MX7l12nNEqeR8aC8VTE5paboSwwaqWteykOYncRctOrW9HP8GmQNM8QSjCM89FDOfYwQD7s4OCzBicPBzTLTAwMptVKAQhDwEmczZYiSaKjzWoR6oa04VBdGvdDnsNjaK86q44oMJqC4w2ORS06qOpnBpfoto+Aa7JO9VjClUrhL2y0s0onWogtzD/L5DkikH1X4JYnlpxRP4uevdSRMamCZGMa9AX2JFg7ogVz97liMfndEabwPu8A7kZ6GyjwxT3NnQxZmJ8zKjV+wTxePu63/p/qTSqlAqLF1JQ51PwZlDVm15E09fcK9JALIEXQhgM1oq8gRXDdMvLjcP84toHnU1PpA== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS8PR04MB8198.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(4636009)(366004)(38100700002)(66476007)(66556008)(2906002)(316002)(6666004)(38350700002)(4326008)(8676002)(8936002)(66946007)(86362001)(5660300002)(6486002)(55236004)(2616005)(36756003)(1076003)(186003)(6512007)(6506007)(83380400001)(508600001)(26005)(52116002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Lzf04oUE1TrclLoID9mgcri3QAncESzkAMVfCkbWf3OI+2zZmOADBKMYcxUx1yl0XmISl9B/fvr3wL8mE2FYZZlBEFYiCPeatQz2bWdmowWd9JT643IBRn/UIJ0xiAkK+Qd+26ufhTJsFyUIr7XNem60kX1S6dc87Dx1btYgqQrDl2dmS6LOL5M543O63qz7/ywgzOwSd20UrVwN9343RwObXMOC6/rOu43qZUfexsWSvKjhY+pI7l+AN3lEp4E7WWv/Iq1gh0jtIlY0z4xkCN2laoQSfdfosteuZxDBAZI6pSLVfJm38uEfzcpXQuLKxbxqTNnbd6DtAeRrONKVGIeRIJ7I9Xhi6AC2Rij4bABSUybeKymB6P1smUqd3cHOoQWA+Q69AgwmvTlKWkJt4lcW5nnGa1YOwmeJRX5+eTsaaQFz9P21kPPvxkzw7Qqy8lvg2znOxQtV6nhu34L1Qr4pgXxeh3K9zYf8/nXIvRQdRY5f8TLRem2By6lSyKPKawX4H00OfTHpjk50curLvgtqznSvGZ808FNLV+hVL9RIjgAuQJAE30E3hOw+Ouc2JmBV0z/DbcX/5vHbu3cG3cKpxEG+lAFTCH8GvYeTsRfyoLkBMj7s4lnZIylWsoHhN+6Mo9H70EOZX403kABHCdDTNjazBuci7Sh2Wf857YPVnA+4nMQkzxlxRjSxF8aGUsFYFU05aY1WPScWT1VEeTXma+Ng77zvBmDg/RjafMo8Oc/Yufyy/EM1SMEUPS63xSe2zOPrHPDIPZnL8zUUEJW6yRuXkpZXS4VySnG0J9ZUzaGMp9SIOfD3sHcQftquMPcylGr8udD/0uFRloLB1P0GgOberGfgBy+BgcG1IhTJYja5mRnFyUkbWHUUdHzsWNwuaUKvOuOEmez8Cubh1b0u9uZ9YKjkIjXZo5eJ2RZRSsFGnH7BSCVYrgThqWmzFWSfLpo1K+JmUHxtCTkfTt4eikQAUr2BLe84P6Cw+Vy0iyBQamRaXPhW5PY8X/oDutoN88IqAEw+/x5VJzKyFKYWtYoCk3Zn0RDYUeHjX/MDyiNhTT7SwBPWKjMF1Hb8HXUhWajFr3GCBxJJOsFNpKwW+LKmldVfypDRT5DPQoNjyppS8nw6cAlXxjzgJlnEPsyZuNMcwvQoc6g6TR7ujg6vj/yv+bSUld8d2Jl9UttzVIW8lNKXwf+KjmxB3Z81aRd7lFmOOUVSwteQhH4M4Uat6hve+42bN9ltPaVvcK18B0NO//wzhqANdaYr5uNYax9cnCVpTo6Och+vGFJEqCqAlC3+082CUnjw/S76LvoK6Z+FVh53RqET/stu/FZnXuB7gVT0bSw1R9TjdtwNQtRcUID/OEDRivoMUIAf5nK74S2LFogvhsyeEZNeJnDbc/1VBYZhtabuUjjzQtLUfblzwXuI067jRnJDsTL+40YEkwGznmdReDoxY3c/qSlUdCNpMFfFQPvQzWaWMP3E4et/KErT9YXDwaVN00W2G2Vs3DPP162v3pKMDWvMlB925f23mKi/xPEp7w9hzU9sL+8OzDTOIiuxjHny1GdiYbg= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 747e9bb1-0b6b-4ff6-befa-08d9ec8463d7 X-MS-Exchange-CrossTenant-AuthSource: AS8PR04MB8198.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Feb 2022 10:59:20.7369 (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: 67aA2STlhSQF8eK8qpwxRvVgGA3BPJqVskmySDPg0z+GuJeDFQa2a5EY9rCANTu8 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR04MB4091 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 From: Hemant Agrawal This patch add more checks on next type for PDCP cases. Fixes: 45e019608f31 ("crypto/dpaa2_sec: support integrity only PDCP") Fixes: a1173d55598c ("crypto/dpaa_sec: support PDCP offload") Cc: stable@dpdk.org Signed-off-by: Hemant Agrawal --- drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c | 6 ++++-- drivers/crypto/dpaa_sec/dpaa_sec.c | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c index 444e1f0043..cb8aaf6446 100644 --- a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c +++ b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c @@ -3231,13 +3231,15 @@ dpaa2_sec_set_pdcp_session(struct rte_cryptodev *dev, /* find xfrm types */ if (xform->type == RTE_CRYPTO_SYM_XFORM_CIPHER) { cipher_xform = &xform->cipher; - if (xform->next != NULL) { + if (xform->next != NULL && + xform->next->type == RTE_CRYPTO_SYM_XFORM_AUTH) { session->ext_params.aead_ctxt.auth_cipher_text = true; auth_xform = &xform->next->auth; } } else if (xform->type == RTE_CRYPTO_SYM_XFORM_AUTH) { auth_xform = &xform->auth; - if (xform->next != NULL) { + if (xform->next != NULL && + xform->next->type == RTE_CRYPTO_SYM_XFORM_CIPHER) { session->ext_params.aead_ctxt.auth_cipher_text = false; cipher_xform = &xform->next->cipher; } diff --git a/drivers/crypto/dpaa_sec/dpaa_sec.c b/drivers/crypto/dpaa_sec/dpaa_sec.c index 1137b142e9..75e437f696 100644 --- a/drivers/crypto/dpaa_sec/dpaa_sec.c +++ b/drivers/crypto/dpaa_sec/dpaa_sec.c @@ -2984,11 +2984,13 @@ dpaa_sec_set_pdcp_session(struct rte_cryptodev *dev, /* find xfrm types */ if (xform->type == RTE_CRYPTO_SYM_XFORM_CIPHER) { cipher_xform = &xform->cipher; - if (xform->next != NULL) + if (xform->next != NULL && + xform->next->type == RTE_CRYPTO_SYM_XFORM_AUTH) auth_xform = &xform->next->auth; } else if (xform->type == RTE_CRYPTO_SYM_XFORM_AUTH) { auth_xform = &xform->auth; - if (xform->next != NULL) + if (xform->next != NULL && + xform->next->type == RTE_CRYPTO_SYM_XFORM_CIPHER) cipher_xform = &xform->next->cipher; } else { DPAA_SEC_ERR("Invalid crypto type"); From patchwork Thu Feb 10 10:58:51 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gagandeep Singh X-Patchwork-Id: 107234 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 20D5DA00C2; Thu, 10 Feb 2022 11:59:51 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id A3A6B426EE; Thu, 10 Feb 2022 11:59:25 +0100 (CET) Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2054.outbound.protection.outlook.com [40.107.22.54]) by mails.dpdk.org (Postfix) with ESMTP id 221DD426EA for ; Thu, 10 Feb 2022 11:59:24 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BFd1b48oW0YxgUBnBQE5pgZj0FvtXv09U4SFDhLy487zuY9dzE+rEn/4oHH4f5O6K1ChBQX3LBFQR+kyLAfnsIFcFO3L774m+6kXCKNt5qRJ8t4uzQfHUS23l2Dn5/WUn5j2de8++ACd7Ck+ixpQ+C3BQF0ZYxsSTbCKcYBLe1iFwaw2afo+zVKq4Pj5kUdRusaNJMPPMe/e72GhDSJXXDdmGQYWhZlhLDi/vFV8d4nBQUTdvVBF6sO3OELZH1OtrzuadTjiAyfu8BlypuU8+h2gQYTQgIQWaLjoFAAuFyztvyoQ17TeMOYudw2riJUVi+T5zjj6YJ5BT38T2JMhhw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=DnLOhN8zTMf9QWd91HP6lKOboxe5okfCH0+9/SrSDzw=; b=ZuJ3yUe+p8gzlMbthDI48CxGkggh3V+X4CD7gfgN/xdNxuh7bSDewWqYy1OmFpm5CZqgzfMNf5qGEqEsTNPAtPuYDxPeFnnci/53lcP7826o/P5I1uDO/gf97OtPtydNo7n5iZT9FpPmcOqbK4scg7iVH7E1MKV57MSG6Krm2OoP3VHN0nlfmgzAexGHYh+k8ei3uEjIERdnf+XBJ4/9pBFaIPgSvmQh9JC3qeWlbVvf4KIm79kE24Cf3pa8n0Tp+BQGenCU3QoRGdtoIN5GcXChFdtt+wzVS0e+rBoCLowCjZkFNdrWaSmhBKntCtperTx5OUnrzopaWcTG3etmHw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; 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=DnLOhN8zTMf9QWd91HP6lKOboxe5okfCH0+9/SrSDzw=; b=btEWwDXdv6OLoYb+OwiY2GQ2IU6kOxO3mIJ5nv+NJRIXZWs16cXRwyRzgmsr0i4EKPd9+HIsdIv17kVKUAyqRMHiMQIBkR72VnCR9OcysSCwgb4ComdvrrSTbdhBa71gOx6V9xknkX7TBWmgzDlNVUSO035M2iTHimCRtVtNHE8= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AS8PR04MB8198.eurprd04.prod.outlook.com (2603:10a6:20b:3b0::14) by AM6PR04MB4294.eurprd04.prod.outlook.com (2603:10a6:209:4a::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4975.11; Thu, 10 Feb 2022 10:59:22 +0000 Received: from AS8PR04MB8198.eurprd04.prod.outlook.com ([fe80::4146:965b:5645:9269]) by AS8PR04MB8198.eurprd04.prod.outlook.com ([fe80::4146:965b:5645:9269%4]) with mapi id 15.20.4975.011; Thu, 10 Feb 2022 10:59:22 +0000 From: Gagandeep Singh To: gakhil@marvell.com, dev@dpdk.org Cc: Nipun Gupta , Gagandeep Singh Subject: [PATCH v4 6/7] crypto/dpaa2_sec: ordered queue support Date: Thu, 10 Feb 2022 16:28:51 +0530 Message-Id: <20220210105852.1268506-7-g.singh@nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220210105852.1268506-1-g.singh@nxp.com> References: <20220210043136.304845-2-g.singh@nxp.com> <20220210105852.1268506-1-g.singh@nxp.com> X-ClientProxiedBy: SG2PR03CA0092.apcprd03.prod.outlook.com (2603:1096:4:7c::20) To AS8PR04MB8198.eurprd04.prod.outlook.com (2603:10a6:20b:3b0::14) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e56c5557-79f2-4b6e-d568-08d9ec84650d X-MS-TrafficTypeDiagnostic: AM6PR04MB4294:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7219; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: GN3jkB5ia+WBT4E85e5GeKPdLh4R3940C7PZVHcd291jhqMCOhZjkJdPDxfXHS7OcYfUhiuqtYBuP2jCZAKyINn0VAXN9ClCTaXVXejp66Wp7TFvCp7y5ru+LMTWfxodKgQcgBmj2qFbVhuSLVnPAahqYPRsHvHHLIFh2r1upp4hWzcTpk64+CdWOKCHaMKohrVUFrlMxxPLOTW3lu4gqwd0pgNboSDscZE11fyyPFlbbQWjPOE5R65oPkfGT9hsmtGFaoUpVcuXWhXDLFB9r6fGMW1gWsT05m3EIrBfKOHI9XYWUHEyT03iXWOjYhy0J0zGSPPzVkNtBlRFHm9GYZ5v2tel/YhkyW46QbhP/IgmUux7XHyslNRfPMTzweMM1qTSrhc3UgXllR/vEQGFn1FO0mZWX19k45FpFabhefR7Dx8EluN26VZFil133E3lff/AEd/Q5mRD0Ty4VNumP+nvf7FI0iOBH1SoxmjCAsTvOGaxvEWU/PMUlv5tp4wPgK5+MtGAlRlfC5BAqFRmExvzlGMvI023fCWMDtQy21+nBHG6BLavWUzKqkaPy+3m6Aw3NvVeJL88W1O+zFXf9C1YV/ktSfXqklIj9HBn6Xv5OWrvZbo/0L1Xrq2Qgb+33hcaoh94jX324nHioC6VNmeWdX0paVLhuh9wTcDnAv2vtmYqjsROnsCVv8wKDvbKOeaVCVqhmb9H+XOf3K8SmQ== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS8PR04MB8198.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(4636009)(366004)(6666004)(1076003)(30864003)(186003)(86362001)(6486002)(26005)(316002)(508600001)(66556008)(4326008)(66476007)(8676002)(54906003)(66946007)(2906002)(5660300002)(2616005)(8936002)(6512007)(55236004)(36756003)(83380400001)(38350700002)(38100700002)(52116002)(6506007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: cyH9QicZDpxzO3llfIo6J4rGLrlmzUQ46ANEQSXlFfI2pJ4z+aFji6YRkK5nydWuZsAPrAKAPUFdVx3mjhYFUKgYA1apU53sM2yAtq92L+a0sf8ej0s9nvba7Iu+F5IxOH4fbFZ2nGlIwVIBisC8nkayHXKuS/RPTBhx0rypqeDe2q0iAPuiqR+jpTtxdZZ99kiO9D5FT5gOVcK6f6Ird1wecF2jw5nkkyAyH+KFfFcPG9nm3BgUB7GP3ihOF4XYTpwtGKYTg5XqiDXqwwwusGtzOrmVulGwK8fF3R8nk/jHe6z2iSa6A7vDod4mcfYQyYY11BXFZrsMnNuKF21SG6JsWreLcYfMsxKJmG+Iqimn47U5uqFEsnf+wiosEYT+YM261iOPkNPNY7k3YDZDa+C2jZHJ9iyYP0xSbASaGmyKTARcWmgF1Pg6Kq/G8g0PPpNlvekmQLOTDVLLXcCympiI0oAoBwXReWy2HIeujewRN1AYS6iRCA/1MmAWNscuyo1TG10IotHgiCSYI8ESiMRFIxMEW3PfrK3Lq3QsWksDCjME8YotFWwOM+4sh4BWI1yBi1Z9UGTgiFyQSF4MWAar5j/A5Yup0XYeVkJLtG0SxUXeVMvySreZl1b9/0cXaI8VvSVCQcxtDOlmo4HPjzpZYE5CprJaRKgOuQkpSz3JY9eO9vm6jFoGEL8fzksDttjSXaAba2kI5wjJNHoZEj8LZsmSNtxhea71K0Fktel8Ap5sR154IVTvppDMER2mlKXHyG+BtQFTT2Kqt55jXoQPHfxTiMZV08xEdTOLG0y+zQDAE2m1DFoqrJol897TUmCwYvIbzxq1gQ7k+d8vjZQ2dA0enc79wG+8+2NLO+EhuFVj7Tjm26atnKFH1oylBm8EMwBiz9DN2i5t3adcWgRTVBUlbjL9Q2WirIFlPRVbNeX6VbwE1NMdRMJUQj8XQQ1KPPeKhf3X14624FBxXVCUvizcKrLAGC2vO6YHQOoEcdwdAGmuRXMpeV/BWh9HM0qEyw/SgATvxnVZh0ysga6drOcl1MK4tg1BkqWl1/7RQYrvB6D/iVj/mGgvWLTizrn/7AHhBsOpuMDUMWj7k8njDFKa8NiAdxFYOGSqHWSj82GMxnJJaexrM2GaeuVsMyvIdozLUXl2aEcnrPFxT/zrOQShNxz8m8gIc/Rg3mQYG0qhFPlR/tEZrHjyeRp8juIdgwapcR7TvjWL2f7nExd+SJKp6CHMHWD+w1TRLizsRzNGda3B/9enTYeNhkvErR1w6DFUEwcAb1c3nqdq2x2SKTf5Ak1cy9amMcHl+xD7EPT9eassjYdR78w1wXZ3g6Ohavmm+Z77tNqU6FHaotkGLgwRakPvfxjldRwE9fDr1XUjg9GeP8TaPUc1wDj4qXQJB81O8jm36zwFB+cJvgKRuFyR3JtNvcWSBu9bffLLXpMIg1Q/cRV5BWsZPkmHulzyrGzZwszdklyTEsgVhvLiqTWpyxG2psekYYe/N/nn5/E7r4x1V1/feck+axso1X3x/t3atRLeYPoO4eKbhLB/a6+UxhV0JZPr855VQU4= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: e56c5557-79f2-4b6e-d568-08d9ec84650d X-MS-Exchange-CrossTenant-AuthSource: AS8PR04MB8198.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Feb 2022 10:59:22.8485 (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: ZrRvTeZ73uUswnkVgsat8o8VVnOzGrnLxR2h0qIOL+rGu1ljjEkKCKtxx3tg9Tc+ X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR04MB4294 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 From: Nipun Gupta This patch supports ordered queue for DPAA2 platform. Signed-off-by: Nipun Gupta Signed-off-by: Gagandeep Singh --- doc/guides/cryptodevs/dpaa2_sec.rst | 7 + drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c | 288 ++++++++++++++++++-- drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h | 2 + drivers/crypto/dpaa2_sec/mc/fsl_dpseci.h | 14 +- 4 files changed, 290 insertions(+), 21 deletions(-) diff --git a/doc/guides/cryptodevs/dpaa2_sec.rst b/doc/guides/cryptodevs/dpaa2_sec.rst index 875d918068..1a590309a0 100644 --- a/doc/guides/cryptodevs/dpaa2_sec.rst +++ b/doc/guides/cryptodevs/dpaa2_sec.rst @@ -185,3 +185,10 @@ on error, mode 1 means dump HW error code and mode 2 means dump HW error code along with other useful debugging information like session, queue, descriptor data. e.g. ``fslmc:dpseci.1,drv_dump_mode=1`` + +Enable strict ordering +---------------------- + +Use dev arg option ``drv_strict_order=1`` to enable strict ordering. +By default, loose ordering is set for ordered schedule type event. +e.g. ``fslmc:dpseci.1,drv_strict_order=1`` diff --git a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c index cb8aaf6446..e62d04852b 100644 --- a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c +++ b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c @@ -52,6 +52,7 @@ #define NO_PREFETCH 0 #define DRIVER_DUMP_MODE "drv_dump_mode" +#define DRIVER_STRICT_ORDER "drv_strict_order" /* DPAA2_SEC_DP_DUMP levels */ enum dpaa2_sec_dump_levels { @@ -1477,14 +1478,14 @@ dpaa2_sec_enqueue_burst(void *qp, struct rte_crypto_op **ops, for (loop = 0; loop < frames_to_send; loop++) { if (*dpaa2_seqn((*ops)->sym->m_src)) { - uint8_t dqrr_index = - *dpaa2_seqn((*ops)->sym->m_src) - 1; - - flags[loop] = QBMAN_ENQUEUE_FLAG_DCA | dqrr_index; - DPAA2_PER_LCORE_DQRR_SIZE--; - DPAA2_PER_LCORE_DQRR_HELD &= ~(1 << dqrr_index); - *dpaa2_seqn((*ops)->sym->m_src) = - DPAA2_INVALID_MBUF_SEQN; + if (*dpaa2_seqn((*ops)->sym->m_src) & QBMAN_ENQUEUE_FLAG_DCA) { + DPAA2_PER_LCORE_DQRR_SIZE--; + DPAA2_PER_LCORE_DQRR_HELD &= ~(1 << + *dpaa2_seqn((*ops)->sym->m_src) & + QBMAN_EQCR_DCA_IDXMASK); + } + flags[loop] = *dpaa2_seqn((*ops)->sym->m_src); + *dpaa2_seqn((*ops)->sym->m_src) = DPAA2_INVALID_MBUF_SEQN; } /*Clear the unused FD fields before sending*/ @@ -1709,6 +1710,168 @@ dpaa2_sec_dump(struct rte_crypto_op *op) } +static void +dpaa2_sec_free_eqresp_buf(uint16_t eqresp_ci) +{ + struct dpaa2_dpio_dev *dpio_dev = DPAA2_PER_LCORE_DPIO; + struct rte_crypto_op *op; + struct qbman_fd *fd; + + fd = qbman_result_eqresp_fd(&dpio_dev->eqresp[eqresp_ci]); + op = sec_fd_to_mbuf(fd); + /* Instead of freeing, enqueue it to the sec tx queue (sec->core) + * after setting an error in FD. But this will have performance impact. + */ + rte_pktmbuf_free(op->sym->m_src); +} + +static void +dpaa2_sec_set_enqueue_descriptor(struct dpaa2_queue *dpaa2_q, + struct rte_mbuf *m, + struct qbman_eq_desc *eqdesc) +{ + struct dpaa2_dpio_dev *dpio_dev = DPAA2_PER_LCORE_DPIO; + struct eqresp_metadata *eqresp_meta; + struct dpaa2_sec_dev_private *priv = dpaa2_q->crypto_data->dev_private; + uint16_t orpid, seqnum; + uint8_t dq_idx; + + if (*dpaa2_seqn(m) & DPAA2_ENQUEUE_FLAG_ORP) { + orpid = (*dpaa2_seqn(m) & DPAA2_EQCR_OPRID_MASK) >> + DPAA2_EQCR_OPRID_SHIFT; + seqnum = (*dpaa2_seqn(m) & DPAA2_EQCR_SEQNUM_MASK) >> + DPAA2_EQCR_SEQNUM_SHIFT; + + + if (!priv->en_loose_ordered) { + qbman_eq_desc_set_orp(eqdesc, 1, orpid, seqnum, 0); + qbman_eq_desc_set_response(eqdesc, (uint64_t) + DPAA2_VADDR_TO_IOVA(&dpio_dev->eqresp[ + dpio_dev->eqresp_pi]), 1); + qbman_eq_desc_set_token(eqdesc, 1); + + eqresp_meta = &dpio_dev->eqresp_meta[dpio_dev->eqresp_pi]; + eqresp_meta->dpaa2_q = dpaa2_q; + eqresp_meta->mp = m->pool; + + dpio_dev->eqresp_pi + 1 < MAX_EQ_RESP_ENTRIES ? + dpio_dev->eqresp_pi++ : (dpio_dev->eqresp_pi = 0); + } else { + qbman_eq_desc_set_orp(eqdesc, 0, orpid, seqnum, 0); + } + } else { + dq_idx = *dpaa2_seqn(m) - 1; + qbman_eq_desc_set_dca(eqdesc, 1, dq_idx, 0); + DPAA2_PER_LCORE_DQRR_SIZE--; + DPAA2_PER_LCORE_DQRR_HELD &= ~(1 << dq_idx); + } + *dpaa2_seqn(m) = DPAA2_INVALID_MBUF_SEQN; +} + + +static uint16_t +dpaa2_sec_enqueue_burst_ordered(void *qp, struct rte_crypto_op **ops, + uint16_t nb_ops) +{ + /* Function to transmit the frames to given device and VQ*/ + uint32_t loop; + int32_t ret; + struct qbman_fd fd_arr[MAX_TX_RING_SLOTS]; + uint32_t frames_to_send, num_free_eq_desc, retry_count; + struct qbman_eq_desc eqdesc[MAX_TX_RING_SLOTS]; + struct dpaa2_sec_qp *dpaa2_qp = (struct dpaa2_sec_qp *)qp; + struct qbman_swp *swp; + uint16_t num_tx = 0; + uint16_t bpid; + struct rte_mempool *mb_pool; + struct dpaa2_sec_dev_private *priv = + dpaa2_qp->tx_vq.crypto_data->dev_private; + + if (unlikely(nb_ops == 0)) + return 0; + + if (ops[0]->sess_type == RTE_CRYPTO_OP_SESSIONLESS) { + DPAA2_SEC_ERR("sessionless crypto op not supported"); + return 0; + } + + if (!DPAA2_PER_LCORE_DPIO) { + ret = dpaa2_affine_qbman_swp(); + if (ret) { + DPAA2_SEC_ERR("Failure in affining portal"); + return 0; + } + } + swp = DPAA2_PER_LCORE_PORTAL; + + while (nb_ops) { + frames_to_send = (nb_ops > dpaa2_eqcr_size) ? + dpaa2_eqcr_size : nb_ops; + + if (!priv->en_loose_ordered) { + if (*dpaa2_seqn((*ops)->sym->m_src)) { + num_free_eq_desc = dpaa2_free_eq_descriptors(); + if (num_free_eq_desc < frames_to_send) + frames_to_send = num_free_eq_desc; + } + } + + for (loop = 0; loop < frames_to_send; loop++) { + /*Prepare enqueue descriptor*/ + qbman_eq_desc_clear(&eqdesc[loop]); + qbman_eq_desc_set_fq(&eqdesc[loop], dpaa2_qp->tx_vq.fqid); + + if (*dpaa2_seqn((*ops)->sym->m_src)) + dpaa2_sec_set_enqueue_descriptor( + &dpaa2_qp->tx_vq, + (*ops)->sym->m_src, + &eqdesc[loop]); + else + qbman_eq_desc_set_no_orp(&eqdesc[loop], + DPAA2_EQ_RESP_ERR_FQ); + + /*Clear the unused FD fields before sending*/ + memset(&fd_arr[loop], 0, sizeof(struct qbman_fd)); + mb_pool = (*ops)->sym->m_src->pool; + bpid = mempool_to_bpid(mb_pool); + ret = build_sec_fd(*ops, &fd_arr[loop], bpid); + if (ret) { + DPAA2_SEC_ERR("error: Improper packet contents" + " for crypto operation"); + goto skip_tx; + } + ops++; + } + + loop = 0; + retry_count = 0; + while (loop < frames_to_send) { + ret = qbman_swp_enqueue_multiple_desc(swp, + &eqdesc[loop], &fd_arr[loop], + frames_to_send - loop); + if (unlikely(ret < 0)) { + retry_count++; + if (retry_count > DPAA2_MAX_TX_RETRY_COUNT) { + num_tx += loop; + nb_ops -= loop; + goto skip_tx; + } + } else { + loop += ret; + retry_count = 0; + } + } + + num_tx += loop; + nb_ops -= loop; + } + +skip_tx: + dpaa2_qp->tx_vq.tx_pkts += num_tx; + dpaa2_qp->tx_vq.err_pkts += nb_ops; + return num_tx; +} + static uint16_t dpaa2_sec_dequeue_burst(void *qp, struct rte_crypto_op **ops, uint16_t nb_ops) @@ -3622,6 +3785,10 @@ dpaa2_sec_dev_start(struct rte_cryptodev *dev) PMD_INIT_FUNC_TRACE(); + /* Change the tx burst function if ordered queues are used */ + if (priv->en_ordered) + dev->enqueue_burst = dpaa2_sec_enqueue_burst_ordered; + memset(&attr, 0, sizeof(struct dpseci_attr)); ret = dpseci_enable(dpseci, CMD_PRI_LOW, priv->token); @@ -3834,12 +4001,46 @@ dpaa2_sec_process_atomic_event(struct qbman_swp *swp __rte_unused, ev->event_ptr = sec_fd_to_mbuf(fd); dqrr_index = qbman_get_dqrr_idx(dq); - *dpaa2_seqn(crypto_op->sym->m_src) = dqrr_index + 1; + *dpaa2_seqn(crypto_op->sym->m_src) = QBMAN_ENQUEUE_FLAG_DCA | dqrr_index; DPAA2_PER_LCORE_DQRR_SIZE++; DPAA2_PER_LCORE_DQRR_HELD |= 1 << dqrr_index; DPAA2_PER_LCORE_DQRR_MBUF(dqrr_index) = crypto_op->sym->m_src; } +static void __rte_hot +dpaa2_sec_process_ordered_event(struct qbman_swp *swp, + const struct qbman_fd *fd, + const struct qbman_result *dq, + struct dpaa2_queue *rxq, + struct rte_event *ev) +{ + struct rte_crypto_op *crypto_op = (struct rte_crypto_op *)ev->event_ptr; + + /* Prefetching mbuf */ + rte_prefetch0((void *)(size_t)(DPAA2_GET_FD_ADDR(fd)- + rte_dpaa2_bpid_info[DPAA2_GET_FD_BPID(fd)].meta_data_size)); + + /* Prefetching ipsec crypto_op stored in priv data of mbuf */ + rte_prefetch0((void *)(size_t)(DPAA2_GET_FD_ADDR(fd)-64)); + + ev->flow_id = rxq->ev.flow_id; + ev->sub_event_type = rxq->ev.sub_event_type; + ev->event_type = RTE_EVENT_TYPE_CRYPTODEV; + ev->op = RTE_EVENT_OP_NEW; + ev->sched_type = rxq->ev.sched_type; + ev->queue_id = rxq->ev.queue_id; + ev->priority = rxq->ev.priority; + ev->event_ptr = sec_fd_to_mbuf(fd); + + *dpaa2_seqn(crypto_op->sym->m_src) = DPAA2_ENQUEUE_FLAG_ORP; + *dpaa2_seqn(crypto_op->sym->m_src) |= qbman_result_DQ_odpid(dq) << + DPAA2_EQCR_OPRID_SHIFT; + *dpaa2_seqn(crypto_op->sym->m_src) |= qbman_result_DQ_seqnum(dq) << + DPAA2_EQCR_SEQNUM_SHIFT; + + qbman_swp_dqrr_consume(swp, dq); +} + int dpaa2_sec_eventq_attach(const struct rte_cryptodev *dev, int qp_id, @@ -3857,6 +4058,8 @@ dpaa2_sec_eventq_attach(const struct rte_cryptodev *dev, qp->rx_vq.cb = dpaa2_sec_process_parallel_event; else if (event->sched_type == RTE_SCHED_TYPE_ATOMIC) qp->rx_vq.cb = dpaa2_sec_process_atomic_event; + else if (event->sched_type == RTE_SCHED_TYPE_ORDERED) + qp->rx_vq.cb = dpaa2_sec_process_ordered_event; else return -EINVAL; @@ -3875,6 +4078,37 @@ dpaa2_sec_eventq_attach(const struct rte_cryptodev *dev, cfg.options |= DPSECI_QUEUE_OPT_ORDER_PRESERVATION; cfg.order_preservation_en = 1; } + + if (event->sched_type == RTE_SCHED_TYPE_ORDERED) { + struct opr_cfg ocfg; + + /* Restoration window size = 256 frames */ + ocfg.oprrws = 3; + /* Restoration window size = 512 frames for LX2 */ + if (dpaa2_svr_family == SVR_LX2160A) + ocfg.oprrws = 4; + /* Auto advance NESN window enabled */ + ocfg.oa = 1; + /* Late arrival window size disabled */ + ocfg.olws = 0; + /* ORL resource exhaustaion advance NESN disabled */ + ocfg.oeane = 0; + + if (priv->en_loose_ordered) + ocfg.oloe = 1; + else + ocfg.oloe = 0; + + ret = dpseci_set_opr(dpseci, CMD_PRI_LOW, priv->token, + qp_id, OPR_OPT_CREATE, &ocfg); + if (ret) { + RTE_LOG(ERR, PMD, "Error setting opr: ret: %d\n", ret); + return ret; + } + qp->tx_vq.cb_eqresp_free = dpaa2_sec_free_eqresp_buf; + priv->en_ordered = 1; + } + ret = dpseci_set_rx_queue(dpseci, CMD_PRI_LOW, priv->token, qp_id, &cfg); if (ret) { @@ -3979,24 +4213,35 @@ dpaa2_sec_uninit(const struct rte_cryptodev *dev) } static int -check_devargs_handler(__rte_unused const char *key, const char *value, - __rte_unused void *opaque) +check_devargs_handler(const char *key, const char *value, + void *opaque) { - dpaa2_sec_dp_dump = atoi(value); - if (dpaa2_sec_dp_dump > DPAA2_SEC_DP_FULL_DUMP) { - DPAA2_SEC_WARN("WARN: DPAA2_SEC_DP_DUMP_LEVEL is not " - "supported, changing to FULL error prints\n"); - dpaa2_sec_dp_dump = DPAA2_SEC_DP_FULL_DUMP; - } + struct rte_cryptodev *dev = (struct rte_cryptodev *)opaque; + struct dpaa2_sec_dev_private *priv = dev->data->dev_private; + + if (!strcmp(key, "drv_strict_order")) { + priv->en_loose_ordered = false; + } else if (!strcmp(key, "drv_dump_mode")) { + dpaa2_sec_dp_dump = atoi(value); + if (dpaa2_sec_dp_dump > DPAA2_SEC_DP_FULL_DUMP) { + DPAA2_SEC_WARN("WARN: DPAA2_SEC_DP_DUMP_LEVEL is not " + "supported, changing to FULL error" + " prints\n"); + dpaa2_sec_dp_dump = DPAA2_SEC_DP_FULL_DUMP; + } + } else + return -1; return 0; } static void -dpaa2_sec_get_devargs(struct rte_devargs *devargs, const char *key) +dpaa2_sec_get_devargs(struct rte_cryptodev *cryptodev, const char *key) { struct rte_kvargs *kvlist; + struct rte_devargs *devargs; + devargs = cryptodev->device->devargs; if (!devargs) return; @@ -4010,7 +4255,7 @@ dpaa2_sec_get_devargs(struct rte_devargs *devargs, const char *key) } rte_kvargs_process(kvlist, key, - check_devargs_handler, NULL); + check_devargs_handler, (void *)cryptodev); rte_kvargs_free(kvlist); } @@ -4101,6 +4346,7 @@ dpaa2_sec_dev_init(struct rte_cryptodev *cryptodev) cryptodev->data->nb_queue_pairs = internals->max_nb_queue_pairs; internals->hw = dpseci; internals->token = token; + internals->en_loose_ordered = true; snprintf(str, sizeof(str), "sec_fle_pool_p%d_%d", getpid(), cryptodev->data->dev_id); @@ -4115,7 +4361,8 @@ dpaa2_sec_dev_init(struct rte_cryptodev *cryptodev) goto init_error; } - dpaa2_sec_get_devargs(cryptodev->device->devargs, DRIVER_DUMP_MODE); + dpaa2_sec_get_devargs(cryptodev, DRIVER_DUMP_MODE); + dpaa2_sec_get_devargs(cryptodev, DRIVER_STRICT_ORDER); DPAA2_SEC_INFO("driver %s: created", cryptodev->data->name); return 0; @@ -4215,5 +4462,6 @@ RTE_PMD_REGISTER_DPAA2(CRYPTODEV_NAME_DPAA2_SEC_PMD, rte_dpaa2_sec_driver); RTE_PMD_REGISTER_CRYPTO_DRIVER(dpaa2_sec_crypto_drv, rte_dpaa2_sec_driver.driver, cryptodev_driver_id); RTE_PMD_REGISTER_PARAM_STRING(CRYPTODEV_NAME_DPAA2_SEC_PMD, + DRIVER_STRICT_ORDER "=" DRIVER_DUMP_MODE "="); RTE_LOG_REGISTER(dpaa2_logtype_sec, pmd.crypto.dpaa2, NOTICE); diff --git a/drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h b/drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h index a8f9440632..3094778a7a 100644 --- a/drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h +++ b/drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h @@ -37,6 +37,8 @@ struct dpaa2_sec_dev_private { uint16_t token; /**< Token required by DPxxx objects */ unsigned int max_nb_queue_pairs; /**< Max number of queue pairs supported by device */ + uint8_t en_ordered; + uint8_t en_loose_ordered; }; struct dpaa2_sec_qp { diff --git a/drivers/crypto/dpaa2_sec/mc/fsl_dpseci.h b/drivers/crypto/dpaa2_sec/mc/fsl_dpseci.h index 279e8f4d4a..c295c04f24 100644 --- a/drivers/crypto/dpaa2_sec/mc/fsl_dpseci.h +++ b/drivers/crypto/dpaa2_sec/mc/fsl_dpseci.h @@ -1,7 +1,7 @@ /* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0) * * Copyright 2013-2016 Freescale Semiconductor Inc. - * Copyright 2016-2017 NXP + * Copyright 2016-2020 NXP * */ #ifndef __FSL_DPSECI_H @@ -11,6 +11,8 @@ * Contains initialization APIs and runtime control APIs for DPSECI */ +#include + struct fsl_mc_io; /** @@ -41,6 +43,16 @@ int dpseci_close(struct fsl_mc_io *mc_io, */ #define DPSECI_OPT_HAS_CG 0x000020 +/** + * Enable the Order Restoration support + */ +#define DPSECI_OPT_HAS_OPR 0x000040 + +/** + * Order Point Records are shared for the entire DPSECI + */ +#define DPSECI_OPT_OPR_SHARED 0x000080 + /** * struct dpseci_cfg - Structure representing DPSECI configuration * @options: Any combination of the following options: From patchwork Thu Feb 10 10:58:52 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gagandeep Singh X-Patchwork-Id: 107235 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 2C3D6A00C2; Thu, 10 Feb 2022 11:59:58 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C61C2426F7; Thu, 10 Feb 2022 11:59:26 +0100 (CET) Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2061.outbound.protection.outlook.com [40.107.22.61]) by mails.dpdk.org (Postfix) with ESMTP id B6A45426F0 for ; Thu, 10 Feb 2022 11:59:25 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=O6K/bXo+eGh/kN3miU5Sk+RCm1fWbAhfc5QNn8j9CNQMJAFt7T2+JxUna0440RcbpKPCgiMc2hm2chPAvOY0111UI2yyuthlGTot6Gm57c999v2OPmRBkD4LnH2lLfCdNaGCX38VdIhZaDHqkLiTFwo5nxLt7bcENQ0PHS1A2qykKuMUZlb33ptwx7M+aHDSQybwYBTqXUrbs0dn9QfxylUYWe9NdHN7xzMtS7yfX1siS8BBx7O3en8cVTzbGUOcZJqJF+KqkcXIyIcouPtew6OzswT7JXSetN2DdyClksJGhBXg9hQgIt+dTujG9p3VSkVZyTZvDW3cYaBmPBiRSw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=MkZldIfieOXH1lcLYPbBEqxE8udulT9cZmSaaw/bYME=; b=SRCTLjTFPvDTNphn4Y8csSI3X9o5pSayK03Y1LzRyEqYQOUhmBqqUJojFHajAOgkp08PDDBrH5jxdzp6sdsEUTmf/fRx6lyMru0jffFEXR6bJOtn4cqdDwNdAoHUyX6nCZDe2vJQzenbJhpmQ5WNatcm8mIeFgLAn+d0HxmI9fP8KYki9Ig4XgGhA1Wdoz2fwZ9WC4TgdKdmDWPMF/Vf1+Ikp/rhPK/Og/BabWUnxJxZKNlKMm7zdLhHV1Q/dzX1eT2ZUHdOVsteWCVQeZaeDgG1yLb48RFfUh7a+khEC9x+pj8fDCvAIauTXvcQk9r9uTz0D18NLe+nYNP2tixfZA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; 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=MkZldIfieOXH1lcLYPbBEqxE8udulT9cZmSaaw/bYME=; b=Hzl8fNaabYe0z6XhVBq94riKTTOGSXngW5RQUzrCGQMJhd3VTNBt0TfYmXGf0ZRmID1+bSQ4dpwfNzbMgKWt1+Ch+lYJ3yArMwTAd+DctNTR61WrQjwHWIPk0DAWWfmwM5IqydjTD04XOKn/N7o0SlGJuAP3vRLtK5ZFpvcaSjM= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AS8PR04MB8198.eurprd04.prod.outlook.com (2603:10a6:20b:3b0::14) by AM6PR04MB4294.eurprd04.prod.outlook.com (2603:10a6:209:4a::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4975.11; Thu, 10 Feb 2022 10:59:24 +0000 Received: from AS8PR04MB8198.eurprd04.prod.outlook.com ([fe80::4146:965b:5645:9269]) by AS8PR04MB8198.eurprd04.prod.outlook.com ([fe80::4146:965b:5645:9269%4]) with mapi id 15.20.4975.011; Thu, 10 Feb 2022 10:59:24 +0000 From: Gagandeep Singh To: gakhil@marvell.com, dev@dpdk.org Cc: Gagandeep Singh Subject: [PATCH v4 7/7] crypto/dpaa_sec: add debug framework Date: Thu, 10 Feb 2022 16:28:52 +0530 Message-Id: <20220210105852.1268506-8-g.singh@nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220210105852.1268506-1-g.singh@nxp.com> References: <20220210043136.304845-2-g.singh@nxp.com> <20220210105852.1268506-1-g.singh@nxp.com> X-ClientProxiedBy: SG2PR03CA0092.apcprd03.prod.outlook.com (2603:1096:4:7c::20) To AS8PR04MB8198.eurprd04.prod.outlook.com (2603:10a6:20b:3b0::14) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ab1c711f-42cd-4b2f-dde6-08d9ec846630 X-MS-TrafficTypeDiagnostic: AM6PR04MB4294:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:2150; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: tXTuDFPoUZNIWknE4MdCdpan/JwVYarmUby+QUYJFWrzWoBBHW21VOGowHg4RNjmrYmgsxTLc1bazqlV5xmk9qFATj2COq+Kjg8a3vRh38Yzj6oYgKtP8DomSKvBCIrWIyV42JktqdtqTthtA5hL9mc4jHZ2xqoyocxnn21bDWfwoerxE2JbVhTnajmCS6R31srYhz/hA60AG2yvmw49rgWigeI14rMFzod0AL+X9lljrsW0gPGUXbpxiquLoZMzlvmxUNUFAQPj38FgQFZhd3ASU05w7lxIGCihRXVMBzTvbBQXDHO6RLKFO7vZq/nTmbnQrn3t1q9u2pwizICRS1XtLreQq7J9M3Jhzj/yp/4fEwO1y5imTI82ShW+fhOGNDnfbFsoVvYF9H7eKHqoaMhaWbZoDjdriH32aAQ6wM/Suk7uh1rxGwD+BgFhN3Vt6PT2wtdhGmro3OGG7pivh7Mv6X2g5cbh0EQiSXziltmUh02qe+Q8nDfZamRsZaD0Ex6CjnV1RS3s9xzNlbnIOlHy/mkdPQmOAaRg5/y7v7AilHyCuA6f7Q3ieP4ONCUwOt9rcGhvooB6mCD1UPwv9uAQOfcwHBCfNbd0B3A8v7+TB/lL8uWiTDJzDOztp92RY9P7dvMZjiZpSpwp/ANjGjqUMurxEIA0N5/ObJkJoze6EpzdKo95DEHHCBTly7V+er0wPlMJdqtBxxZQPLGuug== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS8PR04MB8198.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(4636009)(366004)(6666004)(1076003)(30864003)(186003)(86362001)(6486002)(26005)(316002)(508600001)(66556008)(4326008)(66476007)(8676002)(66946007)(2906002)(5660300002)(2616005)(8936002)(6512007)(55236004)(36756003)(83380400001)(38350700002)(38100700002)(52116002)(6506007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: xTqjUrSM9wVSQIajRisVu3nGZVBt+rmHkAHK42C8S7PQqIE/rUIkG9UEyWhhYOUqxYm0MgnvEkHBlsS6JgWaG3OEJt6Uab7URGMdi9S0lsYZWlPGWNc2COdJ3160ulu0OrRBhGcMwOVtYHFsptFikJ/ciPfn8DOUMN67rN1I+/iaOjyc7y40SAENJ89E4vh/mP/zgHxGSmWJ2p326sgUYS+A7PTlk8PCCKaxY+yQCULGhn7xdkTaPro3m3NUtgxME2MkubBxkm++2IXNH6t0IMHjEYMg/wOVUmw1YUH1eAKZBdwEtHRRnC8I5oNkQaCf3UIlr/hcCUCaIrRZ4mk4/Lnmv9vjTEuQ9zJpi9sFH0VMTMMWX1ZEzUEIWVN16X+JsHU/L0kgoSO6w+jLPrYl2mQbdj/iALCPKN2YzKnjt7/BK+bKf9JzW5FD9u/E9EOoHEHemexxIMGA8KYDTcc90ijPc4mALOo+SDfzkM3yDcqn+YAYOZPLPt+gsBsgRKv0dGmNEj42E5sHzB+lMGbLMB6Lc0jVEfl9gGbsSPPVaGYoJU4aCRnAUQq0O0QiBm+Narh76jQAUD8ovGvxdv/veODTdzh6VO1SdCSkoo3I8YCeLc+kPIig3f4tCVhUSPEDHHxRw/anOfB+v9ckFFoWDgyEqOpaUKYR1f8rH1fpKNkuV+SF2P3XdvoSsP7J663jf7TRAXG6yp5/mkdT6EICU7FsS6EvcKfqywm9wtDHmIrlWlop6w9V8hgl7ZXZhQEnfRTcwX7EzPLPeVHxOSHMejCyFZly8qVj3MTVNsXQX7RdB6EzCCQCRaJzxXbeRky71WgQGNr5hUSvDGOuOAxIk/JC3xkRPscBNV2g/fJUsKShlxjIdSF8eWuINyLU5FkMqSY1LeRAyWza46CWGUN8pW9CJZTjEgjMjG5Q/M8aB2t8vGNJQz9s4Ix2UlQzQ5E06/cwu94rWWYwg1YPA3NvPqabgs+MGHAVNOhD2mvNZfyYHogWG4lPlUTNz7HpZzTLYDEb4pomQhkcgPSCTPFxUTA3QZ6CMiVLbSW86GCZ0+bIOMvO6f8MF7Ub8+IPvm4n3m0bGGmtgH7YB0r8voF7xiVvRYP0IWTEx8a+zuvUhNbCrsZy7oGZXXPjC/xq2juBPHlAqUrWU7XUlF2ocH2uLexDtLV/4eoPOcWHCF9BvZsiT0/UDJLx+xKD21kmJbpeDAhHKtYcbO8zijYS0Wbp5Jug7ON4+TMzPZkWRE1+dA9ObY3YtgBYqQdqQ8Y7jqJOo9caj6uZV8tY8FShUq+zXSb2geDhJ1/FeDiRxyw4cUsIRACrQvB6+TmLwQtppFl05u/h5xJZrmL7MVIJAAxAoO2g381tlXoxXJpH0ugHDnCrCRpFy9+Bb5ImFyQrR6KbEXiJV4/DtY4V4czoN5cr7ZYnDDBEykGsDNv9p6ftWLrga0VhE0UsPaPHhZcIdZ3kNWP2Xp/hC5iOMv/PQgpt+/FB2C8h9jbvBawZAja8zT1zRIplRrIrYfM2UDFpdwPh04DdWegg2bBx2q65RFzHDW2CjAADciuU4lgQj++G5+s= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: ab1c711f-42cd-4b2f-dde6-08d9ec846630 X-MS-Exchange-CrossTenant-AuthSource: AS8PR04MB8198.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Feb 2022 10:59:24.6295 (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: /zbbiTaDGPz3t7jF3oDyv98n99a4kVq4w/iZ7jwfCuOHTGS2euK1Ds/zKES2lRfv X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR04MB4294 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 Adding useful debug prints in DPAA driver for easy debugging. Signed-off-by: Gagandeep Singh --- doc/guides/cryptodevs/dpaa_sec.rst | 10 ++ drivers/bus/dpaa/dpaa_bus.c | 16 ++- drivers/crypto/dpaa_sec/dpaa_sec.c | 192 ++++++++++++++++++++++++++++- 3 files changed, 213 insertions(+), 5 deletions(-) diff --git a/doc/guides/cryptodevs/dpaa_sec.rst b/doc/guides/cryptodevs/dpaa_sec.rst index bac82421bc..0c8d6cf3da 100644 --- a/doc/guides/cryptodevs/dpaa_sec.rst +++ b/doc/guides/cryptodevs/dpaa_sec.rst @@ -123,3 +123,13 @@ For enabling logs, use the following EAL parameter: Using ``pmd.crypto.dpaa`` as log matching criteria, all Crypto PMD logs can be enabled which are lower than logging ``level``. + +Enabling debug prints +--------------------- + +Use dev arg option ``drv_dump_mode=x`` to dump useful debug prints on HW sec +error. There are 3 dump modes available 0, 1 and 2. Mode 0 means no dump print +on error, mode 1 means dump HW error code and mode 2 means dump HW error code +along with other useful debugging information like session, queue, descriptor +data. +e.g. ``dpaa_bus:dpaa_sec-1,drv_dump_mode=1`` diff --git a/drivers/bus/dpaa/dpaa_bus.c b/drivers/bus/dpaa/dpaa_bus.c index 5546a9cb8d..e442bc4c33 100644 --- a/drivers/bus/dpaa/dpaa_bus.c +++ b/drivers/bus/dpaa/dpaa_bus.c @@ -429,6 +429,7 @@ rte_dpaa_bus_parse(const char *name, void *out) { unsigned int i, j; size_t delta; + size_t max_name_len; /* There are two ways of passing device name, with and without * separator. "dpaa_bus:fm1-mac3" with separator, and "fm1-mac3" @@ -444,14 +445,21 @@ rte_dpaa_bus_parse(const char *name, void *out) delta = 5; } - if (sscanf(&name[delta], "fm%u-mac%u", &i, &j) != 2 || - i >= 2 || j >= 16) { - return -EINVAL; + if (strncmp("dpaa_sec", &name[delta], 8) == 0) { + if (sscanf(&name[delta], "dpaa_sec-%u", &i) != 1 || + i < 1 || i > 4) + return -EINVAL; + max_name_len = sizeof("dpaa_sec-.") - 1; + } else { + if (sscanf(&name[delta], "fm%u-mac%u", &i, &j) != 2 || + i >= 2 || j >= 16) + return -EINVAL; + + max_name_len = sizeof("fm.-mac..") - 1; } if (out != NULL) { char *out_name = out; - const size_t max_name_len = sizeof("fm.-mac..") - 1; /* Do not check for truncation, either name ends with * '\0' or the device name is followed by parameters and there diff --git a/drivers/crypto/dpaa_sec/dpaa_sec.c b/drivers/crypto/dpaa_sec/dpaa_sec.c index 75e437f696..ed12d6663b 100644 --- a/drivers/crypto/dpaa_sec/dpaa_sec.c +++ b/drivers/crypto/dpaa_sec/dpaa_sec.c @@ -27,6 +27,7 @@ #include #include #include +#include #include #include @@ -45,6 +46,17 @@ #include #include +#define DRIVER_DUMP_MODE "drv_dump_mode" + +/* DPAA_SEC_DP_DUMP levels */ +enum dpaa_sec_dump_levels { + DPAA_SEC_DP_NO_DUMP, + DPAA_SEC_DP_ERR_DUMP, + DPAA_SEC_DP_FULL_DUMP +}; + +uint8_t dpaa_sec_dp_dump = DPAA_SEC_DP_ERR_DUMP; + uint8_t dpaa_cryptodev_driver_id; static inline void @@ -649,6 +661,139 @@ dpaa_sec_prep_cdb(dpaa_sec_session *ses) return 0; } +static void +dpaa_sec_dump(struct dpaa_sec_op_ctx *ctx, struct dpaa_sec_qp *qp) +{ + struct dpaa_sec_job *job = &ctx->job; + struct rte_crypto_op *op = ctx->op; + dpaa_sec_session *sess = NULL; + struct sec_cdb c_cdb, *cdb; + uint8_t bufsize; + struct rte_crypto_sym_op *sym_op; + struct qm_sg_entry sg[2]; + + if (op->sess_type == RTE_CRYPTO_OP_WITH_SESSION) + sess = (dpaa_sec_session *) + get_sym_session_private_data( + op->sym->session, + dpaa_cryptodev_driver_id); +#ifdef RTE_LIBRTE_SECURITY + else if (op->sess_type == RTE_CRYPTO_OP_SECURITY_SESSION) + sess = (dpaa_sec_session *) + get_sec_session_private_data( + op->sym->sec_session); +#endif + if (sess == NULL) { + printf("session is NULL\n"); + goto mbuf_dump; + } + + cdb = &sess->cdb; + rte_memcpy(&c_cdb, cdb, sizeof(struct sec_cdb)); +#ifdef RTE_LIBRTE_SECURITY + printf("\nsession protocol type = %d\n", sess->proto_alg); +#endif + printf("\n****************************************\n" + "session params:\n\tContext type:\t%d\n\tDirection:\t%s\n" + "\tCipher alg:\t%d\n\tAuth alg:\t%d\n\tAead alg:\t%d\n" + "\tCipher key len:\t%"PRIu64"\n\tCipher alg:\t%d\n" + "\tCipher algmode:\t%d\n", sess->ctxt, + (sess->dir == DIR_ENC) ? "DIR_ENC" : "DIR_DEC", + sess->cipher_alg, sess->auth_alg, sess->aead_alg, + (uint64_t)sess->cipher_key.length, sess->cipher_key.alg, + sess->cipher_key.algmode); + rte_hexdump(stdout, "cipher key", sess->cipher_key.data, + sess->cipher_key.length); + rte_hexdump(stdout, "auth key", sess->auth_key.data, + sess->auth_key.length); + printf("\tAuth key len:\t%"PRIu64"\n\tAuth alg:\t%d\n" + "\tAuth algmode:\t%d\n\tIV len:\t\t%d\n\tIV offset:\t%d\n" + "\tdigest length:\t%d\n\tauth only len:\t\t%d\n" + "\taead cipher text:\t%d\n", + (uint64_t)sess->auth_key.length, sess->auth_key.alg, + sess->auth_key.algmode, + sess->iv.length, sess->iv.offset, + sess->digest_length, sess->auth_only_len, + sess->auth_cipher_text); +#ifdef RTE_LIBRTE_SECURITY + printf("PDCP session params:\n" + "\tDomain:\t\t%d\n\tBearer:\t\t%d\n\tpkt_dir:\t%d\n\thfn_ovd:" + "\t%d\n\tsn_size:\t%d\n\tsdap_enabled:\t%d\n\thfn_ovd_offset:" + "\t%d\n\thfn:\t\t%d\n" + "\thfn_threshold:\t0x%x\n", sess->pdcp.domain, + sess->pdcp.bearer, sess->pdcp.pkt_dir, sess->pdcp.hfn_ovd, + sess->pdcp.sn_size, sess->pdcp.sdap_enabled, + sess->pdcp.hfn_ovd_offset, sess->pdcp.hfn, + sess->pdcp.hfn_threshold); +#endif + c_cdb.sh_hdr.hi.word = rte_be_to_cpu_32(c_cdb.sh_hdr.hi.word); + c_cdb.sh_hdr.lo.word = rte_be_to_cpu_32(c_cdb.sh_hdr.lo.word); + bufsize = c_cdb.sh_hdr.hi.field.idlen; + + printf("cdb = %p\n\n", cdb); + printf("Descriptor size = %d\n", bufsize); + int m; + for (m = 0; m < bufsize; m++) + printf("0x%x\n", rte_be_to_cpu_32(c_cdb.sh_desc[m])); + + printf("\n"); +mbuf_dump: + sym_op = op->sym; + if (sym_op->m_src) { + printf("Source mbuf:\n"); + rte_pktmbuf_dump(stdout, sym_op->m_src, + sym_op->m_src->data_len); + } + if (sym_op->m_dst) { + printf("Destination mbuf:\n"); + rte_pktmbuf_dump(stdout, sym_op->m_dst, + sym_op->m_dst->data_len); + } + + printf("Session address = %p\ncipher offset: %d, length: %d\n" + "auth offset: %d, length: %d\n aead offset: %d, length: %d\n", + sym_op->session, sym_op->cipher.data.offset, + sym_op->cipher.data.length, + sym_op->auth.data.offset, sym_op->auth.data.length, + sym_op->aead.data.offset, sym_op->aead.data.length); + printf("\n"); + + printf("******************************************************\n"); + printf("ctx info:\n"); + printf("job->sg[0] output info:\n"); + memcpy(&sg[0], &job->sg[0], sizeof(sg[0])); + printf("\taddr = %"PRIx64",\n\tlen = %d,\n\tfinal = %d,\n\textention = %d" + "\n\tbpid = %d\n\toffset = %d\n", + (uint64_t)sg[0].addr, sg[0].length, sg[0].final, + sg[0].extension, sg[0].bpid, sg[0].offset); + printf("\njob->sg[1] input info:\n"); + memcpy(&sg[1], &job->sg[1], sizeof(sg[1])); + hw_sg_to_cpu(&sg[1]); + printf("\taddr = %"PRIx64",\n\tlen = %d,\n\tfinal = %d,\n\textention = %d" + "\n\tbpid = %d\n\toffset = %d\n", + (uint64_t)sg[1].addr, sg[1].length, sg[1].final, + sg[1].extension, sg[1].bpid, sg[1].offset); + + printf("\nctx pool addr = %p\n", ctx->ctx_pool); + if (ctx->ctx_pool) + printf("ctx pool available counts = %d\n", + rte_mempool_avail_count(ctx->ctx_pool)); + + printf("\nop pool addr = %p\n", op->mempool); + if (op->mempool) + printf("op pool available counts = %d\n", + rte_mempool_avail_count(op->mempool)); + + printf("********************************************************\n"); + printf("Queue data:\n"); + printf("\tFQID = 0x%x\n\tstate = %d\n\tnb_desc = %d\n" + "\tctx_pool = %p\n\trx_pkts = %d\n\ttx_pkts" + "= %d\n\trx_errs = %d\n\ttx_errs = %d\n\n", + qp->outq.fqid, qp->outq.state, qp->outq.nb_desc, + qp->ctx_pool, qp->rx_pkts, qp->tx_pkts, + qp->rx_errs, qp->tx_errs); +} + /* qp is lockless, should be accessed by only one thread */ static int dpaa_sec_deq(struct dpaa_sec_qp *qp, struct rte_crypto_op **ops, int nb_ops) @@ -716,7 +861,12 @@ dpaa_sec_deq(struct dpaa_sec_qp *qp, struct rte_crypto_op **ops, int nb_ops) if (!ctx->fd_status) { op->status = RTE_CRYPTO_OP_STATUS_SUCCESS; } else { - DPAA_SEC_DP_WARN("SEC return err:0x%x", ctx->fd_status); + if (dpaa_sec_dp_dump > DPAA_SEC_DP_NO_DUMP) { + DPAA_SEC_DP_WARN("SEC return err:0x%x\n", + ctx->fd_status); + if (dpaa_sec_dp_dump > DPAA_SEC_DP_ERR_DUMP) + dpaa_sec_dump(ctx, qp); + } op->status = RTE_CRYPTO_OP_STATUS_ERROR; } ops[pkts++] = op; @@ -3458,6 +3608,42 @@ dpaa_sec_uninit(struct rte_cryptodev *dev) return 0; } +static int +check_devargs_handler(__rte_unused const char *key, const char *value, + __rte_unused void *opaque) +{ + dpaa_sec_dp_dump = atoi(value); + if (dpaa_sec_dp_dump > DPAA_SEC_DP_FULL_DUMP) { + DPAA_SEC_WARN("WARN: DPAA_SEC_DP_DUMP_LEVEL is not " + "supported, changing to FULL error prints\n"); + dpaa_sec_dp_dump = DPAA_SEC_DP_FULL_DUMP; + } + + return 0; +} + +static void +dpaa_sec_get_devargs(struct rte_devargs *devargs, const char *key) +{ + struct rte_kvargs *kvlist; + + if (!devargs) + return; + + kvlist = rte_kvargs_parse(devargs->args, NULL); + if (!kvlist) + return; + + if (!rte_kvargs_count(kvlist, key)) { + rte_kvargs_free(kvlist); + return; + } + + rte_kvargs_process(kvlist, key, + check_devargs_handler, NULL); + rte_kvargs_free(kvlist); +} + static int dpaa_sec_dev_init(struct rte_cryptodev *cryptodev) { @@ -3533,6 +3719,8 @@ dpaa_sec_dev_init(struct rte_cryptodev *cryptodev) } } + dpaa_sec_get_devargs(cryptodev->device->devargs, DRIVER_DUMP_MODE); + RTE_LOG(INFO, PMD, "%s cryptodev init\n", cryptodev->data->name); return 0; @@ -3649,4 +3837,6 @@ 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, dpaa_cryptodev_driver_id); +RTE_PMD_REGISTER_PARAM_STRING(CRYPTODEV_NAME_DPAA_SEC_PMD, + DRIVER_DUMP_MODE "="); RTE_LOG_REGISTER(dpaa_logtype_sec, pmd.crypto.dpaa, NOTICE);