From patchwork Tue Dec 28 09:10:51 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gagandeep Singh X-Patchwork-Id: 105454 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 AB72CA034F; Tue, 28 Dec 2021 10:11:36 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id DDA7441140; Tue, 28 Dec 2021 10:11:32 +0100 (CET) Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-eopbgr10045.outbound.protection.outlook.com [40.107.1.45]) by mails.dpdk.org (Postfix) with ESMTP id 7203C410F4 for ; Tue, 28 Dec 2021 10:11:29 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HnB3LJBXhvvhvrYseNYGMm389obGG5cLONecXNJRCbCKxDkJu2wZLwCXLyey8Ri960XQik20XWw1U9YuKXb0049aYLJmOUeRrth5q6eEURweMWSynE88gRs/fN0UfnYj1fEyzOAw8agPy4pas+tQssN5ZlMv3lqprG/2OfawLQiOqVD1gb21PQeOvqaRkXaCu1KuRNSLx9AN8qKavwWiWO44vCU/kgsmo3/1hb5Zf1PjtxuV+fr7YK2FcFeutaUKlG8EGJ4+ieYvUU+1TFD6bSqSwlREdSp9HsXOH86/g6LFbszSRatAIz5w3dYUagT5SnmI00BRWA5XQ1130xvtEg== 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=WT4AmmEMaGInbk63gXqYAokeoBtZACpXZG3HW2rMlgQ=; b=WV6cA453aCIYQyjQZ3aQG3tHd55Y01Ad4HMrAkwGK0gcdTWVvy7JVtrWOPe1VHRKTRdGlwcPe1uNipJ1dFy3Hvge+mqqy6ZPuAA32KdOT44+SxHVCtsEn2Lj7ljJD4dEz2QyJSvmE+hnQeY3lvxduJhykloKhUKNR9rNazFtJbjj8z09DEv6z3fQSKsS6ENJbJ+imaylXh0OzGojK32uCW5Nf0KtopG3y3J3szx182P5/yOkr6kwH2mL1g9H1K2sN9HO1DwaVEvjHUeqvGOyF4RUroYiZ2YSUpCa8+LO7T1yDEHvLdPQ7zhOasJ/D7l7J9MRwu7rL4TGVjGmRoL0Eg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=WT4AmmEMaGInbk63gXqYAokeoBtZACpXZG3HW2rMlgQ=; b=MHEtywUakBsEhBYXFB02ubFVIxAOuTyytvP1toSC0paCBTxNSAc808thEoT8CJANvRaY7WYnDQ0hYsYqgz7M7er+E8EIlN2oMErp5zy6Hg/h8VJ6dqyGZRu2v1F9GD61B9yiCu0KwmxScx2Xuv7DPiSIVZw64ghMxw4exnDnFj4= 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 AM6PR04MB6135.eurprd04.prod.outlook.com (2603:10a6:20b:bf::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4823.21; Tue, 28 Dec 2021 09:11:25 +0000 Received: from AS8PR04MB8198.eurprd04.prod.outlook.com ([fe80::4c23:c171:682e:9085]) by AS8PR04MB8198.eurprd04.prod.outlook.com ([fe80::4c23:c171:682e:9085%4]) with mapi id 15.20.4823.023; Tue, 28 Dec 2021 09:11:25 +0000 From: Gagandeep Singh To: gakhil@marvell.com, dev@dpdk.org Cc: Franck LENORMAND , Gagandeep Singh Subject: [PATCH v2 1/8] common/dpaax: caamflib: Remove code related to SEC ERA 1 to 7 Date: Tue, 28 Dec 2021 14:40:51 +0530 Message-Id: <20211228091058.3620177-2-g.singh@nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211228091058.3620177-1-g.singh@nxp.com> References: <20211220102710.3083370-1-g.singh@nxp.com> <20211228091058.3620177-1-g.singh@nxp.com> X-ClientProxiedBy: SG2PR06CA0118.apcprd06.prod.outlook.com (2603:1096:1:1d::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: b12a80f1-3864-4270-3b8b-08d9c9e2060d X-MS-TrafficTypeDiagnostic: AM6PR04MB6135: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: IcNiFAMtxIHrCpmuFtCQUk/50Kh8BvdFbxqjPMG8DKPTr/PEJGVYTwDt6U3r7DX9H2Wxe0XpJ8MuFO0mTywKQBPFcAWQWArlicLDNk0INovOXDJ2UERJRmF74C0bfpfmPrbr3GLvqyw3qTwTLgf1vvU/y0ErDGN6GcenMdcYBL6J6QXcXqYOxQd+dSUI//ZuBf0/zUnzQ15brFhCo+lFZZ7OIlGpTddRhL7x0RLqbdwqzB8zX/MCPbqwIyeBKX/NYMUTvSTTkR4VBxSBeDdrQzAJZAqBfKRkbwyFD2moCqBvyPC8OIhn9thnFkCKo8POoatMBkYjFn+Q+yh30OW8yQMlD5MFa1r2cXlk36lL5LvA9vcEWheOyd0ER56qBpP5R6zmDvrdOIHbaK5KBRqFDA8CPk0MZK0bSDGHfpOeVr8kfujQkQAnICaLrNVHdkhXrR8NesTvV8+aYw8SvilH4xLgr+2+c28Yks262vvcj1jDP9AO/s0Dme9QFdaHj9oDjbHK713G4bFFL+CLc104LNnVsxIFc6V6/8dAuhFfMoE7f6RF54R5I53hzKY3iZGOY9dE9EKf1vTxBUZZMx4vu/UBdonIs6dmT4qrpDgJ90pvNLV7SL+6GS85Fxh2MpIJhHG90xVk7yyWMnVaXHM6b8d3S33HbY9pRAoQuRsj8pquMGrah8YNFPE02De1sP7tRJdP9egrePw1G4Otm3BSKA== 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:(4636009)(366004)(316002)(8676002)(2616005)(6486002)(4326008)(6506007)(30864003)(66556008)(66476007)(6512007)(6666004)(55236004)(38100700002)(38350700002)(36756003)(52116002)(83380400001)(2906002)(1076003)(66946007)(86362001)(26005)(54906003)(5660300002)(8936002)(186003)(508600001)(559001)(579004); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: wnWbuwlajN7JXbXHKbiFqzton5ae/aLrFPgpPCgieK3+56yXDuy6AasKns0il10/3KCIEcqvJIChUWDZIAA3A/EwT1dUq95MbK5BgJlj91rNVlduU6VMKCIUm1UJ+v86GymrgeRExZd2LSHshWRNtTSmC4HLTi+6r11jOxLEXggZPPK87LHgg0lA2qC9vgzB19fhYEP0TvK6D8pFsjz7MOBVOGdSBPCUq3GK0McXv60Fjz3eUAjaCuhcIFqP3YobxSqqYUPJBT/v0k0owvupFgLkROFGWUN8ii6vtbBOExcSnWCvCot0UH3IZu3CkTMWB0TiCnSJT+k50W3fH9OZzb1arzbydcKp3560K67ANmwlXOVBNlrFGtUZK0WB05Wyu1jHnkXOxfYCxPbRtT1rjsG/+EmnemFXUklGaEDaQavr+fBA2J1fC69aS/G64KpOqniG103AMOuTnYcXZGLQT4krqbLoWyb9EK7nvaKe8BIexsSdEO+j4n2XoFjn3a87owZ13t9byH3peNeH8oGnqULeC6p7Ms4ZwLAU9nuTLh7I1SoXXccN4LvSe6oQLloDYGATNfJOyHgVOeGTtmz8z5yERh7JH698yC+6r92H8Iv3xbJAthELFsFAEmVQ9O42+9+MYXO/mAfKyLZ1Iwqz26IpU+9yQ54IYvdad4W6OocQ/8GFV1IYH0CI8nInAXjjpC4cGPrsoJb16bpmUoXgOhBLz2dXHIOpAgWfw8tSqYJkwZ00Hwdz8auOYVwE8sN3eAyh6VtvjG2VyYYpZcoA4Mkzfg6SYgMsMcISIinYTvHpWXOuMR6DiEbuAnbw2p6NSljN7qRy9xOg9FsZb6+OyF90MvQ0P5v6mfVnZP1k/m97432oybkRIUaZ3eaq20zVYtEkmPkb1/EPrSgj56CilM4Ww/nzuNwYQhbDE8q2ap9WXsY289OVMqsXH9GEW8rKe2dis8SrX/kIlRo8wIJpXph8wi6fubX6YJAIjEyb/q2ZZVH1QpCIm885gIIyY8GrFDigMkLOMlyL8u5DEcq/moFerFH2vmM9xh7nmv3yXMkfMQwvXsi+NlJtRQoZdzFpCsP5TrDLJFK0I4AfJY1qPOEO5N1YeXVYCbg/ctDHCO31mO3Y2qxRBiiYnL+nLScKaSG93LQ39nvjFq+tcOYKz5T6vGsdLfq3TCIUvFgrMd037KID6vRy8KKixtaWBx1I07E12koAAC3wyhOm2xHzVc+zfpskElsDIAXbccyd3y/nbSEt4OnrO4iiLC+zz/1/04Vy/s5PJuHg6x+ukj84TRgl2qq8UIOVzdruPMFtpFLCfmkqWo3U5XgTRWhOO8M7yz1OJhXi5ECNJ5FJk/RU154MWQcCWJVd0t60rt7gavJwpIF+mCsvgcQhOwrEJO80eBSwrmhOEeXGSHEJlosMz5W2vk3JlrP4vlVp6+DMOHiBen8REEG4F8jCFo52acIg0LqrNkte075VwtDf4yMHqiJTppZUuJONdr2+JCpaZDqc+j0/MGMAECiUggCv0Q1eWRtC36px9pbp30kmEtRyvfnpTyaK0jAoFvDbQeuNjJo= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: b12a80f1-3864-4270-3b8b-08d9c9e2060d X-MS-Exchange-CrossTenant-AuthSource: AS8PR04MB8198.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Dec 2021 09:11:25.6738 (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: DqkXF7KsHWEdUQw+cio4oxkLGs99aGLLrOOLcVfwjaS9d4oKLFbphi5npzalguNE X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR04MB6135 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 b2497a5424..ee03e95990 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 a552e64506..1dedd9eee5 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 Tue Dec 28 09:10:52 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gagandeep Singh X-Patchwork-Id: 105453 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 BAB6AA034F; Tue, 28 Dec 2021 10:11:31 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id D1AB1410F4; Tue, 28 Dec 2021 10:11:29 +0100 (CET) Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-eopbgr10045.outbound.protection.outlook.com [40.107.1.45]) by mails.dpdk.org (Postfix) with ESMTP id 4C198410F3 for ; Tue, 28 Dec 2021 10:11:29 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=iVtqDCUx+IOacP7NBKwIFJS8zIaPtdYQTenTQGbZOZxRArdJHhgT7gbZLeGjB/L1Zv8NZmpkmptQ8JE5ExQq/qwf2iHMIceZWr3bh6AriYFJ6GsxnvYPrThPZt1DvFLUELH4oQKROJAxvopwHFnZAcgSlcD2BoI6n2Q9V7tXrog6cm8Xo3tPmFf6hc5GPjHP7RkLWJXbrPpXQv3YybHmzkrBy0QGRT671y2/nbiT4t1nX4Gtq70bZXueMrjGJEX/XVV06Rke7NybeagiQgncCL27K1PNK/2Z5AGW+Hv2nUAZrYaW/N4efqhV9JxKyCGebU2LU72dlwH8AUHXLqIohA== 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=0urMefVnJhWMUGI9opCSKmD95G8+VDRlnfOHRGeSpL4=; b=ketLTzlQhOfNOCdFfCeqfD0kV+wYofEfUIyLeRa+/Q+I5JUXqxGRnf2XGAuMxUZryreyce2ncsB46yQ9TZ4oVp1yLb08bEAJDeD41P2eC2uV5lk9I2VV/e/lryr18rzYWsvgQTZc3Tf4KiNjE/PNNMZWa5GYXJq/HmYqxcbU3eZM2gvvNXJ/CXsXdeqNwZv9M3euJfKpHIbDVhPr6X5BaqhLN9T+O4sIjXhbnwbEHnLaWnNvnOMQohl0wJhueXQu45KKV1n3Q/gAdr7kExofEILzn4U1ny8vKP8hYrfbn1jCVYlVFGdYWIlbrqKYc31J5bXDNAQc0BINvoNqpUGRng== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=0urMefVnJhWMUGI9opCSKmD95G8+VDRlnfOHRGeSpL4=; b=bzBf1TbbMPQnCGqLV+crJsq+lE08O313/kAPbouH6JYhvy4XNlcuX8+qEOOpIINVnjHuB0DLoOPnMdGnfWyAZgtATqgudSAzkjwtTzI+EH5Jybvaf4rIjLBach1v2pN4Agk28va41zI7GbaJnZdvLBV70s1P280Jr4OduZAIxUI= 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 AM6PR04MB6135.eurprd04.prod.outlook.com (2603:10a6:20b:bf::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4823.21; Tue, 28 Dec 2021 09:11:27 +0000 Received: from AS8PR04MB8198.eurprd04.prod.outlook.com ([fe80::4c23:c171:682e:9085]) by AS8PR04MB8198.eurprd04.prod.outlook.com ([fe80::4c23:c171:682e:9085%4]) with mapi id 15.20.4823.023; Tue, 28 Dec 2021 09:11:27 +0000 From: Gagandeep Singh To: gakhil@marvell.com, dev@dpdk.org Cc: Gagandeep Singh Subject: [PATCH v2 2/8] common/dpaax: change job processing mode for PDCP SDAP Date: Tue, 28 Dec 2021 14:40:52 +0530 Message-Id: <20211228091058.3620177-3-g.singh@nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211228091058.3620177-1-g.singh@nxp.com> References: <20211220102710.3083370-1-g.singh@nxp.com> <20211228091058.3620177-1-g.singh@nxp.com> X-ClientProxiedBy: SG2PR06CA0118.apcprd06.prod.outlook.com (2603:1096:1:1d::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: 50630648-5161-4c56-145c-08d9c9e20748 X-MS-TrafficTypeDiagnostic: AM6PR04MB6135: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: EfjYxznc3zY98f5YqKt5ZOKkCvilfHtn49/wJFiK27hPBArFWocTYOIlgyMkR/JZ5yizsKngzQO+wjmfKuQV/UP+xLqaCqVzdoRKd886L24byLc9tygIQxWhLEkeEMzbEg367D2VMn5MxteWRLjM1sz+6feLwFlvkliK46ycjJOLKNKilehfr9/iR+G0WTRC/cBuehcMXYQdWLbBxkNqyWeJfxRaWouVXSO/VPbXmqH0Vhc/l5FqsEDd7Dzx3hIIVep8KYJcw/0529fDuvJTm85aqT2YOZVSYCw7V6ayieoaaEvcPo2NSfVzcopAa5HvBU5HweL5Rm1ztbsOT1FndVXLUhtEIlep04dU4EVE1eWzKPrUcgdx+m1ptl0l1XSeQsOSHuIHYf+8Rs3O6E5T/mRjcjdJwVH6tSiv7VvDHfHToX0P39tGUREvD0dRiAZLsEvTY+kbNbo7yTZ3uoWlbwM3Uoq9fzUvVBmMAJNeIeeM800xEW8dkjNNPy+Yegt++rsC42NZ+uQiJftYjYzyWDG2RXUVgIAmaC7MIJcb9IEz+LkT/nhsg53LCkrbl4tRM29C4L2t7SC5T8FV+XNqx/vckiUycd2/6BKNVIhH/b4LpN6JmUp1+5+v1ppF2VErO0nt7zH/uZErJz7BKHIGAh75Cltxk3ysGxOGUPKuUuSCP4Ayp7gck5gPvU/0clsEdMR0WR8APNuxVu2ILphjbw== 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:(4636009)(366004)(316002)(8676002)(2616005)(6486002)(4326008)(6506007)(66556008)(66476007)(6512007)(6666004)(55236004)(38100700002)(38350700002)(36756003)(52116002)(83380400001)(2906002)(1076003)(66946007)(86362001)(26005)(5660300002)(8936002)(186003)(508600001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 32qQSgtqM0wCBRgQZVdtDrIrm9PC1bnogNYncv3RtPzeCVVwprSYqqSKwo3AB/KSqU6d/4St1GoDrRsHLixwho4zXzC35BdvqG9wGY1ETVGtacroPfbPlU9/JzIcYDOu0GBEtZ1RdKIxLvbV2JKYjCb/6MQ4lLUi25oUm0YbMdXXEqbSrwCrY3LQ5khinUEAzeKKtshHE3lafY5TKcAeYhnuHd34z9rGRndOXl4DZ1NV6PU2XfUe0dszOeCDMF3e5yp3gR9pNYtCMmXhIEf66iHyZdCDE+RKd91QjT4ra7hrEKxWPCA1Xvr/tsLN389skXMIr2I2IjYijUx//qL68mVnA4PuP7oHSrK0u7hjQxOKaHcboC7omJPxBT991jX6Xuw2KoQ70BlTBO47U8cQKyFU+lC9jA7Me1pkeopkcK6xEfyXTEuId8ozePQSHuDoojneDrI+/ZEIoPcsMhCuO9UUKJyA2WaU2hgrMhknfVCUN+3Zx6N3OZcybcrUml63ygyzFGG7TPzRGhOYvkr2pYN/iv8cDRzGCzBS6TzDFn2iJxlg91Yv7TLMtFyzBjc7uk4M9td7oBwYYPeJQqLJt6AVTK192VafjgtE876/nN8PU8QjmY6Lt7+SR4fU+C2/VMebeREQvrE3z9Ye563OIY666Edu4g3H5iZEWi4oBZV+8if4lxv8nxbN5HI0d0YQfeul1zUEsXeCEdMDyZo/pp4cDhlVYed1DVQXIil3rQ8QuA/2UCTbPjt+mYPvMjZNvXUA/mQQILQ9QjWvMxmZOVyVLpIjMbxp3wagNk3TK3kPzxY4OQ0woCl57hIjOU1PcdYebMbz8l+vIxEjjYVNk5ULYbxY0oePLeJzFiqi4gwlje8bY4TK8ULei15ckWnzK7b/aK4rNWwzIUcSygkGoBZN7YxIOKUImjN0ylT4zUyYrCYfSoGNn3tf4nFKZ3gh4+hjYIf71qrpSW74gagKwOM/4HkFiZlyCn3i2xAbXYcb1hiP/rODIQNNY6iLaf7HMjUeByCvnFIBKZtMxGnGzR9k5qRru1FWbDTWkXsQUF9kMlUq8QZ4rphKhaqgxCnvkwy4dgjSFcr3jlzfwDHhqTLPUuReT11RFRKCGHjSkkonKe+KdQtxDTgoLdB0MKeyvJHShZFbaN1tfhqELBXCLf9zKWEMZf+pJOoIsqzfXB5Xo0TSFHEfhGD0+a3k14IBPRYsEYDREeoxWcVVYaH2zQDQPt6gDa8vrWmvQOxj33I3uTPNldWrOyICCaajcAb3bS0p3e5c7j0dXaOJWxBvkWtVSxAoz7h/LeqRHBsZCJy+GjDZUmSbSpYBQuc0rM7OY8uLenI2U3/u9jHN22p/NkbyxQBfA309HYWQQQ+rCKWaLkvE927pO8XaW3+Ao139SnBmLK2TKfpjZgreTNiMvEcRo231yCXdSO2sM5AQT5oOacUMwyinS5+WdNkzPgOTzD5xm5DuLOxtdbzbhB0jYQfWDWGCypbubSeS1QjHF00viCYBaJYMH9x0VBQIHyugCzh8R3dqMhSdxl67srTlIUM+gVqoPH+99H4B9T+S2C4= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 50630648-5161-4c56-145c-08d9c9e20748 X-MS-Exchange-CrossTenant-AuthSource: AS8PR04MB8198.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Dec 2021 09:11:27.4404 (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: LBKszJAFcqvnZwMeXfVVg99e0cwYc5QPanmwJecPcKWfTsvDZK25ySkckENdlFOu X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR04MB6135 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 ee03e95990..1737e14fa6 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 Tue Dec 28 09:10:53 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gagandeep Singh X-Patchwork-Id: 105455 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 BEADCA034F; Tue, 28 Dec 2021 10:11:42 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id DD9FB4114A; Tue, 28 Dec 2021 10:11:33 +0100 (CET) Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-eopbgr10069.outbound.protection.outlook.com [40.107.1.69]) by mails.dpdk.org (Postfix) with ESMTP id 9BE374113D for ; Tue, 28 Dec 2021 10:11:30 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QcRH2S1BX0CZIREQrSl+njwvhYkbCMxUUMBIYa+SrPm8u5KudzeXHbet27i8m5nXDwMgKb/ZsTuLXMVSIQzhpN2ooOqZoEK7Kt214Yy4Jep4i1YNTJcgswR9FzFQVGSJiTBBU38Wxn1nMaTkzWbpgB03FjVikIkNm6V1MJbEmrJkRXp8U+IoRvE5KcxNVVI+2EHeBP4tAqf1InWywmGHGgLjt0bOR9eSu5YZBnTcwf5WCvetfv/3hxmDHoZmDUg3W9WMItuEZwzYXiqL8PGDHImlhS9nQfG3TiEE/rsMXcr+ePtUJZqJuqO7x3HFHojzcZKbygUr3dwssXQVLn192g== 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=lDjWAy47x5cY8icoRld4jLPDQey9Vg9RQMCZ5uSIl+M=; b=LDRmATfNOHiaCtkiJiiAaFslF4cMG5yRwIAAR+alJUqD/AAVdHKgfs913slcrudfjxFp/NXzMmUx9TecSINrmok8+5CYobSWzN9UBsaZN32880u5yB0LVm+sGxOxAKtxfjKqsBqkxcmIRmWMNS+4Cbkajeqsz03MB5wwinPZ69/YkTihzl79rrS2lAzn0K/VuTLSsm/XKd0Wryz0CTTH50tB8Pm6pM15zKDOwALlPjwmIAibJvG5ngzruB3edNfXDZ30BHh2zijEWB5b1QhukfUR5DhZf9whIVl4UG3D7XbOFSUSVM9Tko4F3p2UQFtGYU+wujm9WeUFtx9lrJ1uGA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=lDjWAy47x5cY8icoRld4jLPDQey9Vg9RQMCZ5uSIl+M=; b=fxNN6/+h2pIl9r1xBTok9baDulmcfIb8Ly3D5tY34b9z0CoyFff3ZBjGSagcZl2drEaZwjnW3OuO7ebo1Xhm25h69bBRPcjUHi8ugU4yBoUkivWnNJjy1l8QylQ+giYLa7o9GnviLdeA8V5ylPnM5ubR+mV9TiNLEeLaILUm0Wc= 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 AM6PR04MB6135.eurprd04.prod.outlook.com (2603:10a6:20b:bf::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4823.21; Tue, 28 Dec 2021 09:11:29 +0000 Received: from AS8PR04MB8198.eurprd04.prod.outlook.com ([fe80::4c23:c171:682e:9085]) by AS8PR04MB8198.eurprd04.prod.outlook.com ([fe80::4c23:c171:682e:9085%4]) with mapi id 15.20.4823.023; Tue, 28 Dec 2021 09:11:29 +0000 From: Gagandeep Singh To: gakhil@marvell.com, dev@dpdk.org Cc: Nipun Gupta Subject: [PATCH v2 3/8] crypto/dpaa2_sec: ordered queue support Date: Tue, 28 Dec 2021 14:40:53 +0530 Message-Id: <20211228091058.3620177-4-g.singh@nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211228091058.3620177-1-g.singh@nxp.com> References: <20211220102710.3083370-1-g.singh@nxp.com> <20211228091058.3620177-1-g.singh@nxp.com> X-ClientProxiedBy: SG2PR06CA0118.apcprd06.prod.outlook.com (2603:1096:1:1d::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: 2be1b502-1288-4c9b-0587-08d9c9e20858 X-MS-TrafficTypeDiagnostic: AM6PR04MB6135: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: WgP7mzxbt97L6Ac1y214zuCfY7gxJL7MPZKBlzm/M69TOff/purYi8jNRLzlABG/nkoqPrcuoQmCpXyN7MQj/VQdyvi8ARc+u556ha2H0hUJHJy7ab/aZQjE/oRf5FVDAVuVPhifRQsfLONpskbYZP8YL7FT9YrJ4qw1qjpeyXczfge8BUmfuH4EEnWTS7fn7NQOSZYoDd0Y1D86K80RZDMfRn74LDbW1GliBGo+BpqydxJnZgVbxWtUvehratJNIalSfrjPpY228WrWb40rJXm5svwBA3CPEWFiLRJB5YWlX34BUuSj9KY5wQ+uEp6IDbiiUNw2YGPuMTQVNutJVszBLSmLOaEs+K8HJ2dttL47898c7wT/XzZNUIyXWmlzq1wydzxD/UhE7ueFGxEeKPtX2CXjmAq8K/0sS8Ky+59IirwF40uryfoYm2r2iJ1iedEJut15DfvfQSa0buVgrNoNADzRq21Q7SG/PqBgJ4/muBxe1XFnd8/xrsiiKih8J7FTGIDlTcuTgYHu1Lz9BFbcb9L0BT27CU9oUC3w4p0kXLTZwCT8Z8wh1u+SQx+wNydOWVPiedAD8tdsrx1CMqokbGo54R128Qm/CrvFrGRKpV0UuwSRWuAjzZYlg2NwtaynAtfyC0ZwAdaE9XSGLjzvU2I/zaVEb2puh3gTWSQAl0xJoj0iGgslifR/H2zIEFwnV4wm8XGFKtGAR/MEoQ== 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:(4636009)(366004)(316002)(8676002)(2616005)(6486002)(4326008)(6506007)(30864003)(66556008)(66476007)(6512007)(6666004)(55236004)(38100700002)(38350700002)(36756003)(52116002)(83380400001)(2906002)(1076003)(66946007)(86362001)(26005)(5660300002)(8936002)(186003)(508600001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: m95oT5OHu9S2KiGaLHGryCXnGwfQVVWEVH5MxSdqbxJeRDVrWdeTtigdLeW0KpKwcJGDHEgBFhIWjL5KgVyJaDJZgt4Q+m3vJ+oFVu4Wi1YmuNrTzg+JZRG87kwRjrN56lcDcM5Cf57IbsfcyRSqQ/ueKdCkRYVxUwbtGrxHvrfVBn3N/UXFIAJdf8UYCG1VMXagYR0iwOfYLWm+0H2SHx9FgHTPlRJ9GebWCQXbRnGO4eWQ7K+VG1rH7OUiO3ZkFFvhRRSoU9pvNGZHtgRU8VRQ6JkOZbA20GTGqUSoXvS4HEzAzKp/RWmtY+qEcp44abO8Jnyi7NTwGnoT+98APmwJ5DmhCwURwk/OZw808sgKH4EBo5cZm3s2rZff2KCR7siHFMuHbuzAgYYKFqDj12S3yBt1on0AhqJGnymXsLY05e9YyyqbV5fS+zls/ZKIC54I9tk/s+XXoWUDOS1aKF6FSL1BbLPRb8bZTvl/ZaMUlOM+k7Dv5A+Ws1nv+u/No0BQu0rrVtxi+/3T8OiUTVLc5EBtPMH/EQoqZCxmb53LUeJ1U+Ow3pZEjC00G5kuaijZoJuSzLxh2Q41mGxs2iP9hW84t36SzeNwbjU7bOessMgXTO27T/LV3/GzKdyVQDSt4d6IylxP44Sf7aIS7WmkWDWR/ap9c7TyxjZMmddYK2kc7suroOY4+tLxWd3xS0IVXdpdpM2kb2p8nsztgsM53MRA3nzWVTO3MLx1Oe8Xopkkgs5S3Uz829TBT4jf9/vJeLGG1wBu9NxuyLOWDzFnTBbNhOC+GxF7TOLRNm+DGQK9EBRYNQm770Hpn8/vsGcsL9h4XLJiLwvrz5iBUrurE5UhPf5YLBcPV2oIx3rUEcupPfxwLXhtBsms+tyrGLNQ/2jAeOnIyRvrNxdVE4c/jtO/bSY6ZsooS6bPwDHo2hQ1UhEACx6skDGW3pcJkx8t5zPMyCph0aZp2ELxjMmvzC5/QZ5RFOwcw6uFX1YKUoCKZZ/pup+ec61xE9nvUV74cedexBXpbfx4Ld2MFrpisiqLwPYL81hkaZVxJAOrQ5OcWYAJzO+V4wnRbgVgOWFoDXiXf4RVEG87Qz1Bli2fbJO549DNZpTnJ+4xgotqrJacl55XVYWT2u3l4pz4mJd4gq6z8dcMN2dcnE9KrwKvZTUyUjJfMJlTHC/Y4BszsJy4nnrdeiGdCMV1L8s09C/JRpg/05NKppfj20iujpGbpBJV+pf0Bz0Jc4c9iSriy8HKMeXLo3P9YuYbRHUNf6ds6sgmP8gN2jgt+eO6vHRbkSk9T7Hi+AKGExSPWoF4lNHRlsr1RWgpY+OZFZYeOCly238HwYoqHuRd8dxxL9kll9LIG+eZzPbT1lbmiyuEdr9gpADIL87pUSgKq+K726TGgAmtynlTsCka7n65gDASbHt/Z+GiQg/0Aln0G6F1ON1sjT87rVlB5v8Vc1Wn7vEQKBdNMQGO2lItaUC08HUBecU0tdCMzpkaF2C8yaKSCgCh/WTAW29Qho4meueVNMFUbk5y3EjbrLDuzvSVUgE6IxgHAv1ENMRybB+vxAo= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2be1b502-1288-4c9b-0587-08d9c9e20858 X-MS-Exchange-CrossTenant-AuthSource: AS8PR04MB8198.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Dec 2021 09:11:29.3465 (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: 8rJwtLC1Myo/FNxOozJy+aY/zw1+82iJhpsDjQux5fTx7IPdow3Vg7epBPZ6N6wX X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR04MB6135 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 --- drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c | 255 +++++++++++++++++++- drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h | 8 +- drivers/crypto/dpaa2_sec/mc/fsl_dpseci.h | 14 +- 3 files changed, 263 insertions(+), 14 deletions(-) diff --git a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c index 1e6b3e548a..a9fda67ac3 100644 --- a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c +++ b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c @@ -1466,14 +1466,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*/ @@ -1621,6 +1621,169 @@ sec_fd_to_mbuf(const struct qbman_fd *fd) return 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; + /*todo - need to support multiple buffer pools */ + 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) @@ -3527,6 +3690,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); @@ -3739,12 +3906,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 __attribute__((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, @@ -3762,6 +3963,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; @@ -3780,6 +3983,40 @@ 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; + /* Loose ordering enabled */ + ocfg.oloe = 1; + priv->en_loose_ordered = 1; + /* Strict ordering enabled if explicitly set */ + if (getenv("DPAA2_STRICT_ORDERING_ENABLE")) { + ocfg.oloe = 0; + priv->en_loose_ordered = 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) { diff --git a/drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h b/drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h index 05bd7c0736..1756d917dd 100644 --- a/drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h +++ b/drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h @@ -1,8 +1,6 @@ /* SPDX-License-Identifier: BSD-3-Clause - * - * Copyright (c) 2016 Freescale Semiconductor, Inc. All rights reserved. - * Copyright 2016,2020-2021 NXP - * + * Copyright (c) 2016 Freescale Semiconductor, Inc. All rights reserved. + * Copyright 2016,2019-2021 NXP */ #ifndef _DPAA2_SEC_PMD_PRIVATE_H_ @@ -37,6 +35,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 Tue Dec 28 09:10:54 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gagandeep Singh X-Patchwork-Id: 105456 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 91263A034F; Tue, 28 Dec 2021 10:11:52 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 8F8074115A; Tue, 28 Dec 2021 10:11:35 +0100 (CET) Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-eopbgr10067.outbound.protection.outlook.com [40.107.1.67]) by mails.dpdk.org (Postfix) with ESMTP id 6895E4113F for ; Tue, 28 Dec 2021 10:11:32 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hgoz/aGifdn3MlTQdK8k0mO857gFQtaZW4EAqrNTvcx1UIs72ycrow+Z71e6hSOmio5Z2ja3oSGMTPIta9Nx4VliOXGn0bO2qNKE9T1JNEyw2QXPKnDpUCgzkM5xgfMh1UyfuRFpdTrz4+pQLb/bbq78/wNt6Q1Ve2iqFVPQoAaFSYm4VtrYwjon8+yQI5DsHCPlxC6fbw1/QCZbK7o8KN1Qi/hojBsxOm+Lkkg3+2vT/7PH9Thu3CyAV5ocn+NzCFy4h+r03EyvCm0xS9dq/ZF5cUifElgMPbCogct9oXIh+lmslC+mX5p8oPkqq4Pr7WNmWrg55tdSvV7QqS5DsA== 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=0828Tpt/JyXAhDuGq+i75abCF1R9y+CnGfp/wLqyxRE=; b=oM1PM3i0UlgKLw/dw3kh2WwK+RxZ8BgkjBU41zwODCKLfijhBMWkPDx3xAWl130sLXR6Qjunoy8HawEm3J3RVU3pGz6aNzn2kcnnAdJzUuu+Yqsm/6MNmqhZ8KXLe/9L5T5VUX/ocFtp4DIOs1g0UWbNiUMdN66kRDXFtKZqAJaBfEXCUqQPvbemt0snEJV/BE9Toh125LwW6vBFbuUwpohDx1JM/fnLIHzJw1wYCoDVXfCSXGUHroCpY7ieUClRFQiKUuyiXURrZN8xNsvJYTWkTrzXRNwoUIbex1gdHwO6OG8MJYYKPeFdukenc7qIlHeySayS1JbZyWm1KJ+mlA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=0828Tpt/JyXAhDuGq+i75abCF1R9y+CnGfp/wLqyxRE=; b=kxkk5K5uHlUn96xwkQFpg2O8fBYBPENgiDeiLoi0eVo49El3ggCww0kKANBvuE5wu0RzhaenYOsFziM0PZQDsi1gwCSa4aGvy5/yS9T444S4jEF2UR5R1BRm/lgLYh/Vkv8Tyupl7Y09wdRTbbc2GK/7qEvx5R670uhgfCelPZM= 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 AM6PR04MB6135.eurprd04.prod.outlook.com (2603:10a6:20b:bf::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4823.21; Tue, 28 Dec 2021 09:11:31 +0000 Received: from AS8PR04MB8198.eurprd04.prod.outlook.com ([fe80::4c23:c171:682e:9085]) by AS8PR04MB8198.eurprd04.prod.outlook.com ([fe80::4c23:c171:682e:9085%4]) with mapi id 15.20.4823.023; Tue, 28 Dec 2021 09:11:31 +0000 From: Gagandeep Singh To: gakhil@marvell.com, dev@dpdk.org Cc: Akhil Goyal , Gagandeep Singh Subject: [PATCH v2 4/8] crypto/dpaa2_sec: support AES-GMAC Date: Tue, 28 Dec 2021 14:40:54 +0530 Message-Id: <20211228091058.3620177-5-g.singh@nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211228091058.3620177-1-g.singh@nxp.com> References: <20211220102710.3083370-1-g.singh@nxp.com> <20211228091058.3620177-1-g.singh@nxp.com> X-ClientProxiedBy: SG2PR06CA0118.apcprd06.prod.outlook.com (2603:1096:1:1d::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: afa87ae7-be50-4848-18d3-08d9c9e20995 X-MS-TrafficTypeDiagnostic: AM6PR04MB6135:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:213; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: muFN9Z9uvraTl8p+0KZTuUkmUC+dKzfo70sHIsrcSPQF/38NLwfRrEZG7SNXZvd+aIrtPqvhyPqD0jjOre+xAZ7dUI1GyVPNa5mfLQb3cmtijQDC07XZeUedux6lNFHm21xtyndOtoadRs3KnVcPkYfAyuu6q8GqNsEMmZGcs/lYjK0wIBF5Q9s4Ick2W91kosQKs7Gs3W7jlmsCPOTcqHYR3dRG9CTwuvPQyF2zV/1P1U0fgHSklkF6ShhNL10UmXxzPR3mQmINYye3Z1YTAC9mr637IsmhkJICj7EyHyaKUVSoE2l7JxRtQgrCd1RLplfI60hK5PElDpZzkHdEJQURJyDaQunSLpTUEm1NFIHwxDZ7h72XDypMbKEzZH8DXlp1jrX0bMTat5RS88Ouv7nq/DicreoRW0o7UgfGCTK32nZviNQkye01g0HpmG2A6iIcGLasTuYPIfvT52of/w2qmshHZd/ANubXbawx1XKeZtMeiCqu1rbdXzIYrm3k0P+/F5Hlsv3aVUCTaBPywi4uxLsDVjGQULnMak+M6y94SKs/pBiLxucpx6/5k+Xz4CU8xR4sqgeWWb7LSXVtknCl7LxrCD1k4oEy8rzIqdP8fF37ujDg1HI4nOfvqn3mZW1Q14FK2CR5xZNeFHTN/qIflsDbwy8r7Wo9FAq1pZHJRlpcmsZIb1FqyVVutyQIQnqrhdoys/FmIaAAiWSuXw== 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:(4636009)(366004)(316002)(8676002)(2616005)(6486002)(4326008)(6506007)(66556008)(66476007)(6512007)(6666004)(55236004)(38100700002)(38350700002)(36756003)(52116002)(83380400001)(2906002)(1076003)(66946007)(86362001)(26005)(54906003)(5660300002)(8936002)(186003)(508600001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: eA1szJUfQ20LOgXCouOqGiqMYR4dEaVDKTeiXs4eDLyhkNvx1r+pNou6UtQ/b9CRtESH48oz13l7ULkOu8inVgDvL70yqnnnavPTxN3W3yGpymtSzr+dPri+BkvRrYOOND2hwEKbqqU0qlBmeMumq3vYirMFWu4my3mB7W19qHAt7onOPe1rH8O2fp6GQG/G4x0+gTQmb23aEle6LRwDa7ea/BEnBD9PJnfmL7Xat2FCOHSqoyKHs4cC+3NZFrOpDHL5H96HxrTzFdm/TLVXJp88HOVZUA9BayLDxG7LhgfxZ0q9DdrrXq1YR/3QZSBL8/Z3g+gs6NKDIVKmgYdzPOeWiXB6cbRgFs4YFRTfQM09F+umvjnVpa/5SqLq5AlQTYZpsxG3wDu9BFl106tmLB1nRUGlp6Gp1JSOz8rVjRy5a55uGQS3fR16/BHsO2aUqEzdCzx/PCSLF0T0ichGnvBGFJItjfzvOFFyH7WDv0LjMDUv00JU86c04aexepFiHfTcjSnIrr9pyQPpFNux4SGtBcuTJSWeoFASosUmVDIpXtReje7FRO6+VLZScNcobIOZWqO3c3zjR9Vo5licuU3IsnVPsQiglyLu8MIk6UCjGHV43BmKa06PK9So4wVzQ6EKg0JdpvPPDWjkniEiusIdbjS1lCeAgyECiR4Zu7UsiOcXwPI/ONkpxglU3/FBeL708jlQ2EDlnbBZP/I96fhOUXGJ6012KDfMh9Wnqs5hJDvN830CbTfntKmESHqqAMph1ZCwV2LqevTfbZwk6XFx9mdHwkMjujuFtNBop/7VqaN+i3u1KNWWevjD21QaKtNnYXetQHMkbIcOrqe+EkFMCHeF4n4DUEnsQevfwSjz9+xUGFs5GP3gZPont/tMYmHnKGjHo4Bt6MOvXQbOtkD3ipSPcL5rwdpVaaKCgEBkhSPGsgYk/En9Xkq9Ur8eNs6lFHtNwuJOmIVQf6lj4IMpRnaQY44WyGdoCg6G5nJDk422MDfG2VugmE/fRd2JGxsHby8R+gzAc7bqjOGQ+DesijM5piMmRTCH/T4yXdBbMUf/sfJyESGzJgg4v98GgQpaSVcBYssTwUxofdjefD7sraZiBbI/p/wg9ObJwlr4jnR2oK8UT0q6tNzcxxIjhiBm7TznkHzzH1qEmP9dMuCG+EHwXx5GW9FvIel/m6kzheaHy7cGLG2Ux2reAD6B2w8I5W/At/3yiIm6zGfjsIM/yU72p5JtDxUz6k51zUBouDFP06Lr2zI/7V5E05/pKtMDMEnt5CsTDhZpleoth67IyOdGp/9ZPH7egklwLM01XtoRIStTLGiBahjIQqOSz2mcAHAayM364WkW9kx6+CKcU/vHSpWw7GIuCmKIuhgSa4+tpwUGZi6i9/VijhMvLeS7h9yv8Ddd3N5lZiOHCEtpqF+nE/zi15AjLsGDQXi4Q6YRqABZvtomE1QO3K/+LdvceptWISZwwYl0t5TRnCTLMkjH1e8wo5ogLxoCoJQEyhxnebGitOxhMiDMCjunm6NGvdPr3Bj+WloCqJvH8litCwt8ivVAd2oLsQzH6ho= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: afa87ae7-be50-4848-18d3-08d9c9e20995 X-MS-Exchange-CrossTenant-AuthSource: AS8PR04MB8198.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Dec 2021 09:11:31.2849 (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: F1pTXPmIR8Ork3k3PW+2Txxg7pIxVmSBX994LPO0uD+Fl6W9zek+ODeju1T15JQx X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR04MB6135 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: Akhil Goyal This patch supports AES_GMAC algorithm for DPAA2 driver. Signed-off-by: Akhil Goyal Signed-off-by: Gagandeep Singh --- doc/guides/cryptodevs/features/dpaa2_sec.ini | 1 + drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c | 14 ++++++++- drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h | 30 ++++++++++++++++++++ lib/cryptodev/rte_crypto_sym.h | 4 ++- 4 files changed, 47 insertions(+), 2 deletions(-) diff --git a/doc/guides/cryptodevs/features/dpaa2_sec.ini b/doc/guides/cryptodevs/features/dpaa2_sec.ini index 3d6e449ca1..dcaf64965d 100644 --- a/doc/guides/cryptodevs/features/dpaa2_sec.ini +++ b/doc/guides/cryptodevs/features/dpaa2_sec.ini @@ -48,6 +48,7 @@ SHA512 HMAC = Y SNOW3G UIA2 = Y AES XCBC MAC = Y ZUC EIA3 = Y +AES GMAC = Y AES CMAC (128) = Y ; diff --git a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c index a9fda67ac3..99f5157abe 100644 --- a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c +++ b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c @@ -2847,6 +2847,13 @@ dpaa2_sec_ipsec_aead_init(struct rte_crypto_aead_xform *aead_xform, aeaddata->algmode = OP_ALG_AAI_CCM; session->aead_alg = RTE_CRYPTO_AEAD_AES_CCM; break; + case RTE_CRYPTO_AEAD_AES_GMAC: + /** + * AES-GMAC is an AEAD algo with NULL encryption and GMAC + * authentication. + */ + aeaddata->algtype = OP_PCL_IPSEC_AES_NULL_WITH_GMAC; + break; default: DPAA2_SEC_ERR("Crypto: Undefined AEAD specified %u", aead_xform->algo); @@ -2945,6 +2952,10 @@ dpaa2_sec_ipsec_proto_init(struct rte_crypto_cipher_xform *cipher_xform, case RTE_CRYPTO_AUTH_NULL: authdata->algtype = OP_PCL_IPSEC_HMAC_NULL; break; + case RTE_CRYPTO_AUTH_AES_GMAC: + DPAA2_SEC_ERR( + "AES_GMAC is supported as AEAD algo for IPSEC proto only"); + return -ENOTSUP; case RTE_CRYPTO_AUTH_SHA224_HMAC: case RTE_CRYPTO_AUTH_SNOW3G_UIA2: case RTE_CRYPTO_AUTH_SHA1: @@ -2953,7 +2964,6 @@ dpaa2_sec_ipsec_proto_init(struct rte_crypto_cipher_xform *cipher_xform, case RTE_CRYPTO_AUTH_SHA224: case RTE_CRYPTO_AUTH_SHA384: case RTE_CRYPTO_AUTH_MD5: - case RTE_CRYPTO_AUTH_AES_GMAC: case RTE_CRYPTO_AUTH_KASUMI_F9: case RTE_CRYPTO_AUTH_AES_CBC_MAC: case RTE_CRYPTO_AUTH_ZUC_EIA3: @@ -3096,6 +3106,7 @@ dpaa2_sec_set_ipsec_session(struct rte_cryptodev *dev, case OP_PCL_IPSEC_AES_GCM8: case OP_PCL_IPSEC_AES_GCM12: case OP_PCL_IPSEC_AES_GCM16: + case OP_PCL_IPSEC_AES_NULL_WITH_GMAC: memcpy(encap_pdb.gcm.salt, (uint8_t *)&(ipsec_xform->salt), 4); break; @@ -3172,6 +3183,7 @@ dpaa2_sec_set_ipsec_session(struct rte_cryptodev *dev, case OP_PCL_IPSEC_AES_GCM8: case OP_PCL_IPSEC_AES_GCM12: case OP_PCL_IPSEC_AES_GCM16: + case OP_PCL_IPSEC_AES_NULL_WITH_GMAC: memcpy(decap_pdb.gcm.salt, (uint8_t *)&(ipsec_xform->salt), 4); break; diff --git a/drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h b/drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h index 1756d917dd..6aa1c01e95 100644 --- a/drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h +++ b/drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h @@ -514,6 +514,36 @@ static const struct rte_cryptodev_capabilities dpaa2_sec_capabilities[] = { }, } }, } }, + { /* AES GMAC (AEAD) */ + .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, + {.sym = { + .xform_type = RTE_CRYPTO_SYM_XFORM_AEAD, + {.aead = { + .algo = RTE_CRYPTO_AEAD_AES_GMAC, + .block_size = 16, + .key_size = { + .min = 16, + .max = 32, + .increment = 8 + }, + .digest_size = { + .min = 16, + .max = 16, + .increment = 0 + }, + .aad_size = { + .min = 0, + .max = 65535, + .increment = 1 + }, + .iv_size = { + .min = 12, + .max = 16, + .increment = 4 + } + }, } + }, } + }, { /* AES XCBC HMAC */ .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, {.sym = { diff --git a/lib/cryptodev/rte_crypto_sym.h b/lib/cryptodev/rte_crypto_sym.h index daa090b978..4644fa3e25 100644 --- a/lib/cryptodev/rte_crypto_sym.h +++ b/lib/cryptodev/rte_crypto_sym.h @@ -467,8 +467,10 @@ enum rte_crypto_aead_algorithm { /**< AES algorithm in CCM mode. */ RTE_CRYPTO_AEAD_AES_GCM, /**< AES algorithm in GCM mode. */ - RTE_CRYPTO_AEAD_CHACHA20_POLY1305 + RTE_CRYPTO_AEAD_CHACHA20_POLY1305, /**< Chacha20 cipher with poly1305 authenticator */ + RTE_CRYPTO_AEAD_AES_GMAC + /**< AES algorithm in GMAC mode. */ }; /** AEAD algorithm name strings */ From patchwork Tue Dec 28 09:10:55 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gagandeep Singh X-Patchwork-Id: 105457 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 DEB1DA034F; Tue, 28 Dec 2021 10:11:57 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 9C1EC4115F; Tue, 28 Dec 2021 10:11:36 +0100 (CET) Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-eopbgr10087.outbound.protection.outlook.com [40.107.1.87]) by mails.dpdk.org (Postfix) with ESMTP id 0FE694114E for ; Tue, 28 Dec 2021 10:11:34 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ik3i+d60rEgkkfiLAU0DRvJC1VaFfuiAU9ZEPYvUBTC8wH0m6BVEdW93qXzCsmq17UPHExJpFJjIk5ahamHSHTGWy/ml8qA3LQoniwXsIEPRTOrUM6nx8ClOeHD6tcf+cNjDV0jWIsyngkMY6JRxs0ChomsaC4e/yRuerRD9wSbXSNT7VFGEO5tRNqvXq2yuqU+Uzozr2IEzgQzb1/sfoFB9MwFq5D6bpXeTx6R/jQRgi98DW2oRQTwTWHnnL99D+n55Jnmn6hUya8UnVcbGMuLv75NVssTeGWvjZKCqjK4yXU+4McMXEMy5WMNe8We66va/8a0iWL+oJr1X8ZuYGQ== 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=AgI5YXBXPY68zMzTA5gZ6jlg7wrOCevFG6WcniVJHak=; b=gTZNlBQ48+hx0fEClhNydoduI4lA0/KyeO5/QjgkIYvqkX+1wxe792ZYsLYnlgKHTTLqa1aKf1EveNIgw462hjNGl1AMEi63LQvZ/1OONtPsLro0Bt8WPr3spfr5OmTN/49nwI/Xzh6dXHZtc28ms+j6oURT0og+zm83+vNRcpC92kCgWYzYd0RbQ21jmcppKjwKMyukiCKAzgHGRMJfrm4Hl2QtwPEbUgYciuEg86iIKUsYveW4jfSKV6efCMRguT1oeHXBjYYwIbA7jr38Iw61xRcvhgu4ztF1sywHNKAx2nOYGUe/33iDvzq/xZRVgYrNiHFFVuhpaltE1VgEDA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=AgI5YXBXPY68zMzTA5gZ6jlg7wrOCevFG6WcniVJHak=; b=mo60p1HJ6zRNPZYI3KNFCSo2nJIdbdZoSuv7yXaT/e8hnhy8Br7NKwkZFLphmKe/Rm2MYMZTzZv6ngMYQ8+tSjdWbi9auiB9J9l9f8RYyx3uxaTCD2SgenVmyvkJAg58PDymFB0NTu/qw0LKVrU0TVjWnk8Jzr5johsTjq0kMwM= 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 AM6PR04MB6135.eurprd04.prod.outlook.com (2603:10a6:20b:bf::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4823.21; Tue, 28 Dec 2021 09:11:33 +0000 Received: from AS8PR04MB8198.eurprd04.prod.outlook.com ([fe80::4c23:c171:682e:9085]) by AS8PR04MB8198.eurprd04.prod.outlook.com ([fe80::4c23:c171:682e:9085%4]) with mapi id 15.20.4823.023; Tue, 28 Dec 2021 09:11:33 +0000 From: Gagandeep Singh To: gakhil@marvell.com, dev@dpdk.org Cc: Hemant Agrawal Subject: [PATCH v2 5/8] crypto/dpaa2_sec: change digest size for AES_CMAC Date: Tue, 28 Dec 2021 14:40:55 +0530 Message-Id: <20211228091058.3620177-6-g.singh@nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211228091058.3620177-1-g.singh@nxp.com> References: <20211220102710.3083370-1-g.singh@nxp.com> <20211228091058.3620177-1-g.singh@nxp.com> X-ClientProxiedBy: SG2PR06CA0118.apcprd06.prod.outlook.com (2603:1096:1:1d::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: 90784d39-b43e-4c35-b1dd-08d9c9e20a9d X-MS-TrafficTypeDiagnostic: AM6PR04MB6135: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: P5En7XieqEtj9IbOdAofpRiBfyPu8FwlLzAoy7XendYlST3kHJEx0Ao+tI/4xECa60yaHEvnt7xuVyklDS0j9kXBc3TThm1hI8+S+ckEj+1kmRkOwEWyflVkMTprtGkNlj9ppZABLA8TxruGrXL73cHyEl7UNv9e72GTrmeKpcBhdz4qA5q7pcVddqKJ8LQrlJ1Sl5ELDQ7+3YdVF9TJGe8fxUdSZ7L46Dv9BThFgjKfV4yFZcxlHTDlPK7ws7kuxnqoFpX3J0aNd/7dETqWWhbuJj11QfYi6n1OQREr5+YqDK0zRXNjPCbfOlLTzrJ/nvynCCaBDdcZJnrHHYA0DnnmApSyJo0M6S9ng9z9PlgCq0lPdco4B/CdYi6IYkAPwqyqyWSnVdH/EpzxErWPgzZhyOT2irqZ83wKmmk0K9nKQDqEYFCjiTbi6dnM09e9SxX3N60Qyx0ONEYM/WjAK0FUC+vrOOYnV26L5ljuyxAOhrsX3yIBNn3Ani4S1UJ8UPiB+wA5EPBgDX16tXWrbFuY5LZzII1UFS1xEDlvACRYVkddiMINEcM9VCQ/LLxe8g5JT+GfaM5CK1Mu+jePaqL2BV/G/fR/JuzNbNRn8Wiad9JIlZK/Z//H5PiGLEDSQQlWuwJRdoVBDMCDkd3iCvmFC9ZoQ2XDjBUoeQJGViwXrvQbTiAuHdIrrAJQKuXuyf2cJLNOnrA+peQBkj9GRw== 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:(4636009)(366004)(316002)(8676002)(2616005)(4744005)(6486002)(4326008)(6506007)(66556008)(66476007)(6512007)(6666004)(55236004)(38100700002)(38350700002)(36756003)(52116002)(83380400001)(2906002)(1076003)(66946007)(86362001)(26005)(5660300002)(8936002)(186003)(508600001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: ARNgsuzvG/l4Hp61lkaSXvF4Z1UjChrkP6YiaOCP/BjKH+vh3fBBztE4U5c5T+QRZ/WtOymnRr1RtbWxDakfibzj586SCA+3hWai0DTIKTOkwmyugpkFthPbAhtoYH5MhoSifbY/Zn4Pa1SRE8Q1HbrbGx74pY25B+dVHT/BoSNEU+HjNwzyt9DvgZCOkruQ8f9aBkmymD8Imv1kZ8GBNoKeiSFPr5tYovUUEA2CAjE7929OrtqucitoZe830HMXtkQifBrIyAyF588kRDSVW/sFeXEXvnwksBohPJrMH3avl7XGwNkpI7Ma1hAdjhy0SZRXHesyScffVITvIFW2Ttlccx1rjkvZvmb+pqVr8a/7f13Tny+a7xM6pY18tfBcgHz92J9S4qe5HDcd5m57DYLcnC4PEoQNhz2zzA4jTQRjsUvhl3um1O8FXonlUNM9MHbK/HF1KM/e7y1LBZjK/4BpuGHw5KGL4H7pEyTFBpoJ6w7nKy722V0uMtefKc0CNQTzPW/BpZMwF5wlPOTp37yBJ3OZz2W5/Gqr+TPngDjsYB0eyAZ9HfJ0Lvu5MtDee6Zhkd2ye/XFZU3WFpC99G2fJ/KFKLdWlepq9zG3USQVnGe0Vz5TrWGijElRhNlYN652WjCilL4cHfb81I2NC44VZUtaeD6fJ3YR9Ip3LWUGX9Wncyaq825FERZ4+RTjGX0X2tLPvleKPdnoPzK9i31IowxhiMm0aqteOjqTBmTyV2aIs18D+bqWFR0lkkpDWbriH9Vz7+tJRPpga1ci6b2HB7wjsJV6v5WlINHT0ZhewrTdUzj5MwpyJ9LJd4A4dO+TE877fcyj8zmyQxoHgu6Lj5srIczMfZYF8/b6d2lGYMesBXU9f1vdSAGTFl+0xLehMHRxED0lIhG+bwAPNfFK4gXEuzeGltGSFto0hVtiSgvn0JpATPuSw5QPrm7yMuMOMZfew+cOk8lYBM/2j115bzNd/Fj9kLBHH5qzBMu2Iqfh+Manz5Z454zzYA6znLOoZSVmrMTcavjvUc+7qjiNHosrnzY7AHbhs6nsljmd30EnZP6ScgAAl011HYHt/l2qLGZlKJE790xGKDB3O0YzZPEiBi06I+AzEONmZh+WHRCAAsONk4SgbIVoNjrRcf4DsZdGpYkBpH0CHnYDc+XNcWv3HmpMgiTKMXxWDZ4wVJ47juhKrRTWvoAtK7LKUce347sVMFIX7gBa9TYy47tsrIOo6ra2O5ZD8coCvvUQOGTkfk+fuB5T1eYmVUT7FlNDEbx69/0Bj9O22cxpbdnSvjsOqiCWX9fHHsHXr3gNZMhJH4a2cFT9118VVVdqU9a3D0Cmc4Y5nk2mY9alt9oWb6mhH8JLKyyvn9FQ1lld0LZWyQzJB8DiPurCI7EVe5mquSxV6Z216F0cjYzVwUI7YyM6pg0CSHgwClDTLJqbTBRbIzITAKlAV4B6RiEUYlne3lpFodfyUAQFDgM7XTbdqX2VKUDrw+Hj4R2oFsvk82czQS6iRXfhnSGV0+tLON3yZYPLhq4ZR9o4aHEHBTksFTFKBYrreLHwfuMG13I= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 90784d39-b43e-4c35-b1dd-08d9c9e20a9d X-MS-Exchange-CrossTenant-AuthSource: AS8PR04MB8198.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Dec 2021 09:11:33.1452 (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: RK7GjBlGBf2XX9rE7bWGiEnjw4uyH3i84b2ytww9zsoUG6Fe5eNoRdGTVmubJEt7 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR04MB6135 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 Change the digest size to supported value by the HW engine. Signed-off-by: Hemant Agrawal --- drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h b/drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h index 6aa1c01e95..ab652936bc 100644 --- a/drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h +++ b/drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h @@ -579,11 +579,11 @@ static const struct rte_cryptodev_capabilities dpaa2_sec_capabilities[] = { .increment = 1 }, .digest_size = { - .min = 4, + .min = 12, .max = 16, .increment = 4 }, - .aad_size = { 0 } + .iv_size = { 0 } }, } }, } }, From patchwork Tue Dec 28 09:10:56 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gagandeep Singh X-Patchwork-Id: 105458 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 33917A034F; Tue, 28 Dec 2021 10:12:05 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 4E8B94114F; Tue, 28 Dec 2021 10:11:43 +0100 (CET) Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-eopbgr00044.outbound.protection.outlook.com [40.107.0.44]) by mails.dpdk.org (Postfix) with ESMTP id A38234114F for ; Tue, 28 Dec 2021 10:11:41 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Tb4z1R9Jk9RLDOe2sFKtyVqVOW45FHGPP9pP66vq3B8fIiC8bfGBbEw+PXxh9Iz2gd1BR1lzuxbCugwPuyqQBK9/KtDIhHdu6cfNkeF44+q47PBxHnltieCVxhR6c3wMENhGTaxdXp8yUfnTngb/YkjktRO2dhq972QbVNSkLQLb27mCZvtSw7fLHCKVKbNkd4udhnDGinwChwKLSWsYvVtIOVwU9UwnMJmXSOvhrTzQmiQvuHBq5aXXET1IIDyHk4nEyOZB5sRI1KpxxGxom8okyXUhHJOp+wXhkc6SLgiFJYCyIQ229Ob0mtlNKt5UzHxkX/cftt7bP3+73IF34w== 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=V7cEuJQXjU0srJ6cYd8/Qt74TY6AFMJOAW75aHcqTMY=; b=S7uvbYCDPX8nRqLiczvwCQf8DOfRGAOJeNK6PifSAZM5pCLruyToudC7pkYXIhvq3VRjLKo3MdxoNnuQCYs+qCOPJwbNUyf8mEG7+sVPFGRsNkLS8bfxzgaNbrQGpHL1N3CZY0EtH4gO4D+3tBeZypX3/Lm9J8pkWtVrJsXhKmtC+dp/WtZApK7ngxl2t5UDEsj4hGR8ktZHMRv/jRc2mnM1VDVwIRqXX6+a023AXH9yfyJJ7thj8HGmBv1lnd42fLLPZ9XS849Mp5tlGkL2kUSpGy50jWvazQ3w/GuBpAOetFxdhRZtZU7bWz35gVnM5CKXuC/MEKev+HlUJpfW+A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=V7cEuJQXjU0srJ6cYd8/Qt74TY6AFMJOAW75aHcqTMY=; b=O2WCe53bR/3CuEyGNGMq0WO6HsueLzOvMl7OCDC6AM7fJx8RZ02j0sCzZ+DQHVvCfZv95ktT2cJA/Nrgq8bokjiJlQu5HbAdXTuj1grerdei147eZz/EjPZDxor1zrWpradbbeCjhwzRZkzpjo3snZbTfN7j+KkA8ZzsMpyPq1Y= 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 AM6PR04MB6135.eurprd04.prod.outlook.com (2603:10a6:20b:bf::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4823.21; Tue, 28 Dec 2021 09:11:35 +0000 Received: from AS8PR04MB8198.eurprd04.prod.outlook.com ([fe80::4c23:c171:682e:9085]) by AS8PR04MB8198.eurprd04.prod.outlook.com ([fe80::4c23:c171:682e:9085%4]) with mapi id 15.20.4823.023; Tue, 28 Dec 2021 09:11:35 +0000 From: Gagandeep Singh To: gakhil@marvell.com, dev@dpdk.org Cc: Gagandeep Singh Subject: [PATCH v2 6/8] crypto/dpaa2_sec: add useful debug prints in sec dequeue Date: Tue, 28 Dec 2021 14:40:56 +0530 Message-Id: <20211228091058.3620177-7-g.singh@nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211228091058.3620177-1-g.singh@nxp.com> References: <20211220102710.3083370-1-g.singh@nxp.com> <20211228091058.3620177-1-g.singh@nxp.com> X-ClientProxiedBy: SG2PR06CA0118.apcprd06.prod.outlook.com (2603:1096:1:1d::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: 6bc434e7-789d-48cb-a38a-08d9c9e20be4 X-MS-TrafficTypeDiagnostic: AM6PR04MB6135: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: CShRGox3wyod9gmjBjKJ29Nk5tOwbuWPEtXWAsHahOJFYNVr9/IcTdSISZSkZ//BWcltIBlI7fmXn5ZrfdF0a8YKoVOVM0J/hDI6KRa47pIuv5YHpIODvpuGqmkjMVQpXy+Qd1T5xCMvCCx9zz7yb047Ewc67L6JVB4CGc3HCM214M5LiAnV6SxswgHFblF4jW1oQFmAXktKycPM9lib5OrXhloiezHz9EWSAqu2VR4Y4uMMTHhY82TKJNfjyDSugLy9HM87eq7+A+g1PF3fb7gmKHzugrqDI7OGbuLQbY5KQw6BycY/5JfSjxKvEmUvtFKq0jkUTV7cbV2M8CkdWB2bMaNUdAg7lFoW8zJS7olksdM3Oqnx+1GtKC9N3pjpAgNbTh+6a47OQW4Ey2ltHo4Cj/zVanueyyZrR0tWTM4fYOXhIQ3YXNaipcsqAeMbMXHDw9w5XiKjwBXk+YmfAaRzAQQBy0a4zHjgz+SCpsWjElgMY2cdJ+Bf9BGdbzGCX2H1g595y2CcvHCvXQ+ZqTjU9gjnsDVC+NpquW1UEWGyWdybhRT/qoNonMCanAEWjKsle2QEQpj7vigG8XhRk7kEmUaSwiMavMYMlcEeTzZuI3dOAdi5xaNNS+q+BSFhavfL1SL3CRAEUuU9DfCiPl2nn7jNdh/6bHVzUpJCpJHU+sIFN9Py1Pn71ur2aaCFK4HepPeKtu6LEIHWe1s6Bw== 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:(4636009)(366004)(316002)(8676002)(2616005)(6486002)(4326008)(6506007)(66556008)(66476007)(6512007)(6666004)(55236004)(38100700002)(38350700002)(36756003)(52116002)(83380400001)(2906002)(1076003)(66946007)(86362001)(26005)(5660300002)(8936002)(186003)(508600001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: h6oMMcXldHMRU65F51An8AY6EFWOexeBvPx1BvcodKCJ6ssr4ClzWaupJu4R/xy1vDL2zDwYitxi8qQUurrGIzXoFzUjGKcPsePO5KRDYGzXce8g5O45PVLgB0GToNrz62hODn2Xk103mPuyrJf6LWg/oHuJn6oKBgh1ztXP+a/kN/YK7zxeoinA8o/LhVKWEx7M8bBQ0gRQ3kq9m2mMhUalEuZOkbw+2ZF5zZu9L+jiBJkYkPSW1N2IRYIPvOKMBng1jgAKJC37xDjilsqhPG+oc8Nv6Vl3iW4YhkXNgUqe2QiIcjgfO42DgPi+GVMmcqpra2z/BJOjpVpNcDYFfKTVLA8pjalySbNUXnCodW7qKV/LVmWYyCfD/ApzIhkFV8UCABZKLqYl9JKzUMcAhXmz18UacRW5GKcvurBGYT4vWsvYHkklwFbJTgVbKiKEQjzFfvEsnxovkHtJZ8J+8aQJ/9oKGar2Lwhgua+HVcOz9jnGq2UjsUtDThmNjI2KopuRC4lIBUbx0rLuFHbkAYl6MzCPY/t+zzG4amPVVcOYbETlG1Od9mpksDdaK6HqF0/0OINsDYxJv1Gb8lnukI1FAAugMNYE9pHsPXxK8jqYCD1uqfNFyfitEJF5SEy5pC3IIPC3BFK3ZOGxRyBMCb7huVlj7pH4zT5OTr1DE1q5ZNIlok6fH+3gMfMyYKWCHrfsK0l17+ExnafxyBCcOsKynwjWM3nL2fTZT03v7cARkr7mbJlmIpbihv4Tf9V5ShZxI1lMF8iWmZYJJXwPHp+p9JZwmBL3hImuEAPplEQZXU/JudTslUvjLxz7x1kQGpe5WyPRqbP7C35EN/xTi1Hx5om5Mlx2xawx6Ih4MI4FfzELImaF/8qCJ1tVc6H2atwKznJQ5lGXdxetAzvIwg1mqKspAvLkz1YJyNd4lae0V6Q2RlnBRGSxkc7MhcmaLrNx9+0oIPHep20MSREzSywxrtHUPx2R5JEHyayDjamzhdFTfZlUgM1KPJnvsPwRwqE/sXIAZsaV4JfFDiaP9Oy3X4nSBJbed1SCbsdy75sRghNvbgYYXHdR1rNZE8CmAu+nA/YR101256gE9x8i2MaK5+HU6LqORkz5uytwDzwkAE9icDrzw5c+NCR8BXzjKpJxOj07KdOZ1c3bkelMroG4wtid0sLQusUEFwjyK01xL1dPmWBCsETIOc83vJCCCqgmfr+QL/HIdpKixFtu2mR5hLtm+IkhtP2AKulYUWkQh7RTf2JQii0924DfLhAdh6LQKkWXbYP/YhrZDsZbTYO2qseX/fsBJhx2uc8mHvJQWpUJZG42UGMQKKl0SipmNNORzr8jD2xeWzDxgvmfVR87BzTnAv3+ZkHglxcJOlfPBolqAdnPkf4diwlXbKaRV1wEy7jTTy9HoIANtWNZuYAOW56E/LSJBKCYMMXuPr+6qL0ozQqu2FzqxAGKxcOY/GGKT5LrPTaYi7v4DONDgLTPc4QMHz/xfWsP/CSmiEILoG4IGIElRYUxoZgegIbZyNbKqvrVaDSUniIQZms9EbSHKJYfkoAJEikrrpsJX6w= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6bc434e7-789d-48cb-a38a-08d9c9e20be4 X-MS-Exchange-CrossTenant-AuthSource: AS8PR04MB8198.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Dec 2021 09:11:35.1773 (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: Q+z2eGCgwYLGsp9yAAAHbSKM2ntJaSJYc4QLwJftumapwPIHEnlomJYmSQcQT7bk X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR04MB6135 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 99f5157abe..b65416097c 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 @@ -1784,6 +1795,83 @@ dpaa2_sec_enqueue_burst_ordered(void *qp, struct rte_crypto_op **ops, return num_tx; } +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) @@ -1865,8 +1953,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 { @@ -4132,6 +4225,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) { @@ -4233,6 +4362,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; @@ -4331,4 +4461,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 Tue Dec 28 09:10:57 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gagandeep Singh X-Patchwork-Id: 105459 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 14CFEA034F; Tue, 28 Dec 2021 10:12:11 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 7BA254116A; Tue, 28 Dec 2021 10:11:44 +0100 (CET) Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-eopbgr00044.outbound.protection.outlook.com [40.107.0.44]) by mails.dpdk.org (Postfix) with ESMTP id B8A654113E; Tue, 28 Dec 2021 10:11:41 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TpoUE2EMS32qPjhIWkcl19thLDEbV+ZZKDtuTdEYZwruB/yt5/5ssIdrqxkbDuZEOwbNhMmQnxKnwJZPDPy6syI4uyADXj4Z0sQF6CbhzOzmj6w12LgJgVgmLc0VDnvpzViQs96Z6bru79VgHLd2yEQv8zbsWPrX8m0axHkW68Buyaia6aU1wzPeeFP7mglUGzlShB80KA6gnL7BFjW4hldZ3/VJ7jKd15VmdI+nWtM1j2Y07c8g4jj0v77mRDcnCGsljpIkSNEUZV+etW30aEDewlR3C8cCPyWbuowaXHyiGqibjPVCvgkP/JBbT9v6b/walxA4M8+CgP+apx70hg== 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=e1CGUsJja9LxreDCQ57KOy38nfWl/OFrgeYQ89nytPY=; b=FG1XTIKEHRiGJfZD6f2ERBg3F0fP4A5i4K7SMPefXHajOn1Bc20ZLaDBXB2hVBwhwlXwyvBZ8bjGFnkToOdvmH2HbbqmaqP5GX02vKU1y5fX7EkQ1lDfFdF/6ISr2AIXA9Hq/YIP9EjYy/jQmueVSRpsm2i2fJgckfUptfovloeKeD9vSl8NrdykCkS+vBhI4h6qSD+qcFCoG8dCkkBR5SnVCdFlT5NJ71eZW4bVNSvEjph19DA8w+ItymBqqht7F2us7v6jWiYOm5jvhuIgJe11Qx5lSq5reZEzoBlzQL/QYIZCOHdHfgDWKKwhZoQA9Aa85oDf7merplo5Ldoadw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=e1CGUsJja9LxreDCQ57KOy38nfWl/OFrgeYQ89nytPY=; b=SvWGsdTu31pNCa2YlyHJ6gsVDvSlbwFelTDacYTIt3PeLJVSrWwqmK43hHAIFQZ7yp+BpGAYoJTer+1Hdl2Ge9dPCH2irbBrtdVr2pLiGTDwf7zm2Zp/SHHj8XMOuaxuVE/+3ODsIzBJ6gCWMg3j+lh+xzN7iNdxzPIXwJWI0tc= 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 AM6PR04MB6135.eurprd04.prod.outlook.com (2603:10a6:20b:bf::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4823.21; Tue, 28 Dec 2021 09:11:37 +0000 Received: from AS8PR04MB8198.eurprd04.prod.outlook.com ([fe80::4c23:c171:682e:9085]) by AS8PR04MB8198.eurprd04.prod.outlook.com ([fe80::4c23:c171:682e:9085%4]) with mapi id 15.20.4823.023; Tue, 28 Dec 2021 09:11:37 +0000 From: Gagandeep Singh To: gakhil@marvell.com, dev@dpdk.org Cc: Hemant Agrawal , stable@dpdk.org Subject: [PATCH v2 7/8] crypto/dpaa2: fix to check next type for auth or cipher Date: Tue, 28 Dec 2021 14:40:57 +0530 Message-Id: <20211228091058.3620177-8-g.singh@nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211228091058.3620177-1-g.singh@nxp.com> References: <20211220102710.3083370-1-g.singh@nxp.com> <20211228091058.3620177-1-g.singh@nxp.com> X-ClientProxiedBy: SG2PR06CA0118.apcprd06.prod.outlook.com (2603:1096:1:1d::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: 50079cc3-48e4-4134-fc19-08d9c9e20d0e X-MS-TrafficTypeDiagnostic: AM6PR04MB6135: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: XUTQOozXynu/MQIWUt9MrBhr+jDQk8lRru3CWgj115rufvqXKw811eUpEtbMx+kEFfLKoxDR8gVKqF/Zg8qPJn4WBIPYmxWDOeY1Xb9/qLngcIcPMfQKf+UhSdYHM60EkKm5qXbk2RQQS6TrbeXeD1oX18rr2GXBS42yi0PLyctIioxzzeOtmD+kLed6qpIKnVOxfwZ8vllP5ZHa+AjLRuDGkY41ebwI5YcefBE6fBQg25qtST/6qHNAPQdMHkKcNWYfGzNRyySPs0AW3h7goclYlZ70DS+Z3P/QqsWh5WtI7O6s9bir5s/arUyqblhchs23Jf9+NUoa7IgGGQe4iZqXs8euBkAd+puGLj5iqfwJTgXYotOZrUOTpdearhKFcl+j0we35+jMarSLfZH8B1+aC7aHVBdPcFPdWpPK3hIb19x4NDm4BSaKGF/IKIUqbSw1htMbIaX/Cs6jEc+VdOXDioWVEtZEKbPS9TcpunMADbSq/7KUcb2mEoEzzMQkQh4fu2WFDE2ne8WPOMqAPNz01jhSCtS0FbfeGVdStGxtY+NUOfZk3vayv+Xf7cdUDwrBLPD3uXFklEHK6FVpkC+tChzEWKMWh8g5Ac5ya+u1fpVYeKXylAxi9f6P51yhuuyrp6aJb0Glrvuzz5f09qNgVwdoMmshEs2ZM9LwAMwcX3+rLz+8kFiUslzMkrf7oPJ3AZx0cdWVVqmsSVm+KA== 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:(4636009)(366004)(316002)(8676002)(2616005)(6486002)(4326008)(6506007)(66556008)(66476007)(6512007)(6666004)(55236004)(38100700002)(38350700002)(36756003)(52116002)(83380400001)(2906002)(1076003)(66946007)(86362001)(26005)(5660300002)(8936002)(186003)(508600001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: nNglgRDyya8YX/ByyXVxAqLAfjZ3ZXIUR481rJ4C2TnFs2543wE5Vb+wo51Nma3nmzCFY9GZozvUysQDLi7VgyY6od+ggzJIEiJTn+dqmUVVwGd0MYFOaIcmDZtY+XyFcmoRwF71m7/sOzCdC8xvENZYAH3PKaVEqesjUMsEXOwmdyglYR5SFjcC4qoJhwsQDd54KS+gzKlV/V44p436hAxVZ5Swps96wr6r9lVNd6thR9KNvozvFiUPh2W3cWkLHK70/sLFanVfuDXohGNiROgyBFCXIcLOaxjFdJdjTfmUBPx9xc9n+Yde9Y5a6Ze0R2fXZUKyLXMCf3+WlERuaAGLAS96fCeMUWEBFLxiO1LIGe9YbC67unECCwe1CHfOVLWZh6gnC8gW64VPM8AqUW7NZxGbcrd6OqN91zgT0Be/wEFjFlJ/2EYZh1ELJMCjuL4KFPpmdZkK/Yz10dLJRw3tLEXiu+0z9errJ0/js/X6Id3mZggd0G4+oxS7pXO7Vv9RpENIPi5GF8F+FxcvHsqxtmBqYTtQCsSGK9YKxtpL/9lQxLzxA+MXU8vUWcGuTPpcwjCUqFa0j8OzcczVLG1zpWVC7BEKbj6wZ5roV2NtJoZc4lVi8fjyzbi3ys5TrWAKp8Oc46yVXpQd+GdgpeUxUPX9Pfbp2tbk5oehHjB+I8ZUPqI85hOtMNa7sh21uQgg0IeTmR090V8Y3fQpFmb9s60pcrLZtl4uDqQW3BiYvwyR1vXoYW3u3LTrIvwSqpGHr7d4Xa3yCzqiE5c4bLLSdX9QsKMNiXK7Xd07FQoHUx64KmmW0GrZ2qevTeUXxgRxzOgWhkCNO0F+fEwdGal9kE5+zHPeaGPprW4hST/sQyTvDxyK4Oe/XLqiZpxkoUoF96pnEPRrZjrg25a9/N/Nk6jrxHogjAgpCeKfT6IYvfZya3vB4+ZyuVxdayrSFqaPb61WLhCGNCG/1PnShxYWuGlsm+akPQ+wkR37dhswKMiIMLx1K1daPkH9Mb+PPojqq+BxixiU1rFy01UnLwEyHz8NZYNMUZFytqGZcSFWRC0at9du+MhK+uAjW41EP4DsE5bR1KGW4lPOMn6Jx7kW/5GHD0bAuoFs4+oVxcgIgpDoKIqxvhAadajvfYRbwkjUMcTo+uwPZ4g26Tp5JEtt3AUcxc9segL7Y2Xo18sRv/6Rx6cPxP0VnF+6D8WPqoXjzu+ANOFJrkZDIRWYYdsW4C/kHUym841kceV7HtEuDG+4XYj6vvYmGfVECr+HBdJrYMk6Nhc8YyxW9Zi9hHKJTdMlPfkfsbALZaYq4fXnLxKGhgV31jnk7Tf+d1Pvssm49SZFwgmNn251NloaR4dl7UiXinA10o5sEhvceuhZ732kxgCVVGl8vjrFynuoWrPoFNr914Gx6ivEFxit9QoG9dJN3WAV24wXY+MZZidivvi4+tnAIRGKp6pTXJdJv+7tZYTpbjfz290xbUA5uQJP66+mDVsAqqLfcU1+OKhX7nIlw9HDUxgEijdH1QVEzjaUkbE8CT6jUNBqkCxPgxBnJ0v38TpaiaFHPKWMpCA= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 50079cc3-48e4-4134-fc19-08d9c9e20d0e X-MS-Exchange-CrossTenant-AuthSource: AS8PR04MB8198.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Dec 2021 09:11:37.1169 (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: dKZvU+LDbv3gEtoR59S1Ubq52RtLtiMacMq99wxwGz8HkAkmULxAt1XB7zBbeVoO X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR04MB6135 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 b65416097c..3f3540eeb6 100644 --- a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c +++ b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c @@ -3406,13 +3406,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 1dedd9eee5..af166252ca 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 Tue Dec 28 09:10:58 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gagandeep Singh X-Patchwork-Id: 105460 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 43EFAA034F; Tue, 28 Dec 2021 10:12:17 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id A2A3141177; Tue, 28 Dec 2021 10:11:45 +0100 (CET) Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-eopbgr00044.outbound.protection.outlook.com [40.107.0.44]) by mails.dpdk.org (Postfix) with ESMTP id C5DD541153 for ; Tue, 28 Dec 2021 10:11:41 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=eMnQQS7GCkzE5ylcKfC7fnKz+mZm3yOKQW3mzOi56l3uNPonwGlwnAxE70muthwqb9/sJQcyyxJm8FoRLUMIEUhVDk6NQAWEQu+82GsRsBe0JkODeNYasfwJGsADisucuh6o/0qGYw7xWIFxneRkkc4NBxbXZ2YYVj3TqVoHFnpQanJ5Mb45X++tLb9PX47mWtBOFKpoLJYrPBEIIxSt5SYR5zi+OK3040pIClHOzU4cZB7KdU/rtoABd6LY3+rEqJJJKOdVxv016nYrCskyabGP7e5MNEcge6Ygm4IRg9FVGS2ZJguphNeVaLw+FbAW2IO9hPpnt7c2sHIB2FViag== 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=IU2NN7nMiPH5flCmhoJSxRo/EsTpbrFQ36SxG4Exj5E=; b=JROuRKsEB7IHpRI4goheK0A4RTn1YgcHFCfuhwrWaR37VBTwVdmUSL1omfFr/0gPjozk4pFfIwRUVe+eP7B57jg1NlI+THqO1mWerqTk++sxQHbt+6Tu874RsyDHLTN1B+uYMlxSNcjWkLLnPksxlD2YIqPMC6MKflQSYwEJIMTnmJ7uCCuh248o1zsl/07Den38n9EqiScsyhp+Aj8FU9UNHjRVkXROaaf2qiTnq1n/H7tGQaCpaK3+prczQtrpbX+AJSHS03XNr7e0eoUiNzi7bblZcH1gAyBwryD19sE6eIfhHO6nNZcvdjFE1MwX25QpKKLggXKYN58kbocBaQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IU2NN7nMiPH5flCmhoJSxRo/EsTpbrFQ36SxG4Exj5E=; b=Glb+c5MmxsdhiWBWfc1hBzuONa5zAsR3UFCZrv1LMDAsqK23rPW2SyPpvq2F/reM6Z047azTDYtVx7ZOowwp6b4pm8lGLWTfOmRg+86ApjRn0HmYgaa8tGHiGEXSG1eyn9u6QoY0g8OHvf1Jzv+sAlYoIKSWZk88HSy4M4SN2Fk= 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 AM6PR04MB6135.eurprd04.prod.outlook.com (2603:10a6:20b:bf::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4823.21; Tue, 28 Dec 2021 09:11:39 +0000 Received: from AS8PR04MB8198.eurprd04.prod.outlook.com ([fe80::4c23:c171:682e:9085]) by AS8PR04MB8198.eurprd04.prod.outlook.com ([fe80::4c23:c171:682e:9085%4]) with mapi id 15.20.4823.023; Tue, 28 Dec 2021 09:11:39 +0000 From: Gagandeep Singh To: gakhil@marvell.com, dev@dpdk.org Cc: Gagandeep Singh Subject: [PATCH v2 8/8] crypto/dpaa_sec: add debug framework Date: Tue, 28 Dec 2021 14:40:58 +0530 Message-Id: <20211228091058.3620177-9-g.singh@nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211228091058.3620177-1-g.singh@nxp.com> References: <20211220102710.3083370-1-g.singh@nxp.com> <20211228091058.3620177-1-g.singh@nxp.com> X-ClientProxiedBy: SG2PR06CA0118.apcprd06.prod.outlook.com (2603:1096:1:1d::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: 109a1f65-57c4-4fe5-9519-08d9c9e20e17 X-MS-TrafficTypeDiagnostic: AM6PR04MB6135: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: OXziZKPxPuwFvCtdWnoz4aorhjGepeK0WTLv1TbVtuBSiTczfw6YcXFG+dIUxRWhpa2h7m20F0vjQLScn9r8xXrmQK/8fDnz/eiaRavvjqtJFXziQmEoR8uMn8YPm8R91+FCYmIuQsB6DlGPO0z5BQBDz1/lzfZCfEaBneEHJlNM7KJD20fzl32Js+KxpwnV8+Sd+5CtLLpEp9LEH3T42zlsz9WUNhkbpyrGgFmevVjUXbJTc0rzfL5NKdJrZoCKZRIieczuH801qqY80wScMcmNhLCtfbwrtPcao6UX43EhUwE2geUS7r4YP/CCuZeL/MQe8c0OBA1s5md9HqIydc4v2ATz4qL1ubk4q2dCbjrdq1KDUbdDMZDsJewk4M0U6gmuXvCl0LMnaDV7YWHHRNx8TM74mj2obkwOl6yF/ufG/MCMHk0icQtCv3dgyKsqrbHx33UgpR1LB4VS7jkSPfZPGYVpfxLC9fAhhtFnP1lRNFfg4t7yV5Er0u1Jie6qhSO3H5E2QcAWLSzT5PyC3zSgC4dRegsNTvMw3cfdLajHzfxAL7T6TNh2OOJ+vJ6WeB5voMZGS52KsLIxM6TJIEhVgGO2aAHvY99qptdZeg2FuDHRiEm7lujSvEm8JugcFaTBIMPcl0G/AqdgTEK+meY1Q4u63M1SyuiPo3UW9IlPs4QzG8foOLQ0Toe8O4enFV3Eq25EphAeZ3GRH8d+oQ== 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:(4636009)(366004)(316002)(8676002)(2616005)(6486002)(4326008)(6506007)(30864003)(66556008)(66476007)(6512007)(6666004)(55236004)(38100700002)(38350700002)(36756003)(52116002)(83380400001)(2906002)(1076003)(66946007)(86362001)(26005)(5660300002)(8936002)(186003)(508600001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: kfUMfBOlegwIBgipGjlaZqU28q77qgHNWC3C4QUF/5BTA6lMJ+1j5sZmzz6L935Sde68s++hw2zUZqRStLavHyzI64cRtcoZCohU+ardQPTrZfrV3Ihlzjc8XLt8ospwdKaqOKqJUXBpray6NUj9T8ADMCEdIKDb9a/MSuibH+cNw9YKPqxifPbatOMUUhBWaJYZSq6p9QCZgkXADkWVBI+MP15VAPxJF6H5oktj0FRcytQh6nmClubI/4i3r0mxFHGnw1+rzDw99T9he40IiYfzjj6hns9xkjgwe7preVrv7B+6ve83YnDQQtUSXs1pxs7Fz9G1r9Zc8MLSvcW/12Fg6mtBWAHu4a6b316KRhgk7EX1rnKnRKPMDyqAaHOCQNvG8nCZXt3KKOZO4v9XUDnBj7KDQU18ZFvokvSWFnjZ3RS8i1Mg9rK/dgjg4cC8hpYGAIcuUc2si4Tj/jFzAXkVr3PX3REQtmlt015LKjiJbmDlToPXa6qGujrBo57xryvPekQBstDGr5sx7szElNEuJjx9Okbkl1CXUtgUuyhJs4qtyI2/0H5xucsZ9Nn5AQX1mJHkMXJfD2/c6sZG2eL17hK+4vmXrn31GP+91ogsD9ICFO3JG9GMLE6vph+nU34FiqThCG6K9EE3ojGSFTNVgrgUw6TOf2m5SLKN7vq3S31fSTI4UhZRuZf3A9iU+cZJt4uR+0XbqriYzqwnYUgLUTGhgS3w4FPbOCIxayeOIhs/LVCviZRQpFIhyip85nIaDGM6TIpLWpjMTCt7G2skkCs62qvJ9G1N+q4zjdiy3TL8rWx4BPYHQ97TXOyt7Bu82+NrqPd+y9oYegmdw6LKT4f5QAcKBfekT9jTbclYAzmW8BQcE3OpkaHnP5Vi21q5lfxlcgaepUdRjDOrbB/8RpCBSyBncJDIE7/IETyJpVLchYqobRp2bbECsEZK0hNYKzZDf7x2vPc6EWfKZy0bi4n/UuwXR/OvARQVVjJcIRFxmJX5N6Kisr6NI0fUho2ZhrbqGuLg65+4cDXFai+RfhMRcMJQdomXmz+Rr3shvuva+9TElKgVjEW1lztEx0CQQsRgHNPD3yNb8g/hkuTYQjZIjQnzKJsuhZ95stP+kakRZfyZ2vyt6QIew9N3pGjgmCMjHK/PHZp1FKV7RcucwM3+ricpl5mQ7xrkhbdsKK1cJC1G1YWI+HAnam1LkrWfFiIM3sIkSo7dO2dObZw++QJjmMNULw5paYH5B9AcZVwP6yA0MHwcwHw5h0Dh8KA6H4eWbl0TBuf3bMnmnogdJ4038ph2GQYGVLPM/f0g+DFZqgfOkwS0czv4ZbjTLdLjELd8UF4ZUDaMbgpy8770+WboA7CtxWBUWka3JbNDyMLWZZy2liyU/Wq2kE+vHrib4H3MhFBRP2wsNWmNp7PLLmuDsYnShiGLMPrYYdkGc8v32brr8Jz+FBwjIQ+nUuBSx/dGpQWRcGlz/KbKa/2C/VmW/OSiLouBz50IyMLWixqqd5yI61ifvMJ+XKcffloxo3mFFr/DhrZdfmj+1SyBWJ92cW3Hx8j052t5gwY= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 109a1f65-57c4-4fe5-9519-08d9c9e20e17 X-MS-Exchange-CrossTenant-AuthSource: AS8PR04MB8198.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Dec 2021 09:11:38.8835 (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: ZHDYQ77GwzqQJSty4uL6QrJ/T7HRmmlBvphttUyzv9nl37/zgpx4fxdBsqlhsV0a X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR04MB6135 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 737ac8d8c5..a1db25dce9 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 af166252ca..b436039117 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%ld\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, + (long)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%ld\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", + (long)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 = 0x%lx,\n\tlen = %d,\n\tfinal = %d,\n\textention = %d" + "\n\tbpid = %d\n\toffset = %d\n", + (unsigned long)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 = 0x%lx,\n\tlen = %d,\n\tfinal = %d,\n\textention = %d" + "\n\tbpid = %d\n\toffset = %d\n", + (unsigned long)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);