From patchwork Thu Feb 10 04:31:30 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gagandeep Singh X-Patchwork-Id: 107198 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 CAC7AA00C2; Thu, 10 Feb 2022 05:32:07 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 4363540140; Thu, 10 Feb 2022 05:32:04 +0100 (CET) Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2069.outbound.protection.outlook.com [40.107.21.69]) by mails.dpdk.org (Postfix) with ESMTP id 7CD5341144 for ; Thu, 10 Feb 2022 05:32:03 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=P0HQsNJ1MFLk++qGKfSAWO0r8NLHAZUVd0vjgdDlXqbIrQxXHqyZQYIswSSDw34xb1GDcCge9MHIdUwX99Y/rTCkvZ53O0jvCldtPLP7Bg6YoYUjHP/AmAaPAOoGCaQpkl+l6hO/8qcHZTJAfRTCz9yurGQWsFTD3VgJ7Koheb2uL8VzNJwwDMRDZ8IMDX1tX5IZ8qb2TY0SWtFOSc67QYMedrv/mpPO8FwKDBbyrHssMrtmJJWQJCY7aIccQZjCoKIdAc7IS7hsXbgYxVmaCKjAB19a3bmatk+Ysfx6uSLKzahP2QRrakGL/nYP/X3WBKaVsu4Fioo2h6v8uSipjg== 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=maFjv4ASqGg8X52egbX3GQ44b8OJbXXj3xv3mtWKLHiVh/ZNfx7b4ilnBRzNJGSakq4o7GubEATH3s8gY/wy71d4WqcNWRoXaeD/qmChTpt0Dh85MQyQgrJzTfhQhwI+J3jYKf4HxKtJtfj3+6IxmSeTEkeiXXLhMaDnblyxKhgw57jeeETcaLS2wFn27ExySEFk+qqdBbN3Y4IASnaNcTq4AbzxkF+PxSLfpORAY+TrsRvYahVqi91lOX0NCTzQ/3hXHHideIR2QgHKr2opO7tSEpRSomT+Kcx+WhH4YMBn4iHal+IpSPsqn/66u/jNL4/mKECrqZjFtNMLt76v9Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=WT4AmmEMaGInbk63gXqYAokeoBtZACpXZG3HW2rMlgQ=; b=hy7fl+oUEUvCQcQRo/hWJsMUjWKO2TRm9R6AjATLFeXRzl0KrzPCfF45WzsoIj0Fxfa4FleNFoOhjb1NODlz5dGkmWB/rwm5K8/xBd/eQbEFShUT/FW7BBqgf94lssEVBY9SS85owgUDJLTh2fwFYMJHtLiszheACuYsM8GpgP8= 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 DBBPR04MB6106.eurprd04.prod.outlook.com (2603:10a6:10:c5::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4975.11; Thu, 10 Feb 2022 04:32:00 +0000 Received: from AS8PR04MB8198.eurprd04.prod.outlook.com ([fe80::4146:965b:5645:9269]) by AS8PR04MB8198.eurprd04.prod.outlook.com ([fe80::4146:965b:5645:9269%4]) with mapi id 15.20.4975.011; Thu, 10 Feb 2022 04:32:00 +0000 From: Gagandeep Singh To: gakhil@marvell.com, dev@dpdk.org Cc: Franck LENORMAND , Gagandeep Singh Subject: [PATCH v3 1/7] common/dpaax: caamflib: Remove code related to SEC ERA 1 to 7 Date: Thu, 10 Feb 2022 10:01:30 +0530 Message-Id: <20220210043136.304845-2-g.singh@nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220210043136.304845-1-g.singh@nxp.com> References: <20211228091058.3620177-2-g.singh@nxp.com> <20220210043136.304845-1-g.singh@nxp.com> X-ClientProxiedBy: SG3P274CA0003.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:be::15) 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: 0a2af035-410d-4b44-6d2d-08d9ec4e476d X-MS-TrafficTypeDiagnostic: DBBPR04MB6106: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: o2KNpiWmgj5OKdTUfTK1SNo4em+fe8xtJMKe+FCTbgwH30X3XADTqDqt9V8AODf4fvHb/tMZ9YkXl6lDfGP7M7rMofkvW0j5ygCTtAKySy+ITBwFVJ20BpYgj+FEZLKNcb3YfarE5ZVHHu58EQoBZbVuIYBFPquRMJlJ0J4UpHacg82gidxvhf2/JXyj13Iwntjl3oL7tB6Iy0bOQZlh/gCx9QWGUlIxxYBOsbXdnuII94mKYOwAVjNRSJnSNN4tqh44ChgNDVUtlUOmx8ZwZIM0pDjegBRFgALpehTOvtwmsXaboung3+h4xqJ6Dn43ZqdqwuMSAjnGyJJ2ERlJv79o2who8q3gngwwXCl+hJ6/LwXEvq2vOmgsmJmqVln+rGZB7oKWst3geDVh433ZezXovrz6muDK6hbdtQ/5bhivlJDkTb7lblVazirE3PZGy/56SMIZBwmr7JWzra4bZbQKtcKJF7nYw6WNL1BPZ1WFMh0CxmuhBPar4jZZsZMHJ9cJGQFMNAgkaXcnXp3s+9zeaUvQEr1dX7J8GQBxwmJKQ5NGtBNemJ3HspsrL7tu/IDaZuFPKrTVCRt0j4wa4HUqyWV26RKPSwfor/GvygCR1Q6Nacd1XLZFGwQZRBgLrHrT4V4kCYyXQmu3rDcU3NKRM1XzAANEB2rC4LvS5rAmagZXB3kHdTz4Za7nVya5MBc1cbT6G2arJStSfHoV9A== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS8PR04MB8198.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(4636009)(366004)(54906003)(66556008)(6486002)(316002)(66946007)(4326008)(66476007)(8676002)(508600001)(36756003)(86362001)(38350700002)(38100700002)(1076003)(186003)(55236004)(52116002)(6512007)(2616005)(6666004)(26005)(6506007)(83380400001)(5660300002)(8936002)(30864003)(2906002)(559001)(579004); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: IQV1bgpEHJML/a2uQuowkZa1s54tKarQ4OthI/lpNI/EyCliumVT8TYJyao+RvbdeXyOEYP9WtW+wqoXV55ZCYFa8+hzGNQz9+9T2ylvxNZR7atXx9xqZjM2F9ymXawihEx2zzc0p7j86r7tlc1ktfxanG9GQuWBBU2JJPg1NqhTinuX4zf/b4wMxcW789ZHnWHXJFjQvlW18lUcXr2bOpLk75x2vxBzoDT4JVZbHHaxHbP7m7XNnUWJrY7DhCyHLWsjpec6SD1c7cIiH0bLQiqyQkWItZOMuPETD0Cmr5XZ5XTP791weieF3pp/GGaVSZnGHxB5tvMgnaUbXENHnnqQA1usfBx7KirDIHwazHfVWFp0gAfq1Di8yxvIcDzsmyjRkbWzfbWp5HBzHqtOHxUAfbephr0yDSYkupSDBmKndYI0J8/Z94kjnIjh07QWRfyY565ut7BkQD0CwmEWZiaWu9HUUT4LIasyCdby+QOOkHgjiQaSmfHpwfzkJwjEfbm8Mz/okOln2qXGhus//oJhfikBJ0tLTS/VfkXqTHArne8crumzMUj+I07k2PP49l4O2Fj+hqpfELF/AuNy0YxyXD8TrUtzNLXrP+1Q3ES8zmqaf6dgngI6NWe5P3UK0J5Mn3hm4DKkgoQzavcYADBcovRmkyp+/Ci13mICa+KKxQNZKgtAjHU9t33BUnadSl1rqKcFaCWhHwLpWfDQw3WdEeebQSsGMfA31OO8KZtanbD/qy4kGezuXZ3b824V+zYEtsvcxasdZgZwJriBDB6GFPsHEYMbtGqF5S2t7YTbOL3do3tuwsebQiYNiueOj/SjXHzIoaT67dbFCzj2rtPXfoqtvdNmSCL8T4FgWNcj4VGq+Yscx7XikrQP+Vip4JiyW+rE7pHGw7lAbEwiCvciXEMAiRzk6P8RhAUVbDn4pwFcft7V8TnMIOpIdruZk1Vyy8MjHtv8RXdQwe/qcZwsk2PLugkiaqwO+S798K6W1XWk6cNLos4NnYwF2oOPx3TBATDZiECbIk33I/Ph9FbwW1GBVCuH/l7OLlbAe/ayJDjH1KIb7i0Vj9f01JSBXgKkztOOY92t2BAXpUka8knq3A28woVurbrdi0YwBD+eXRuh6MHfPcaMphzApO1nB1gGY3WWkaFDxTUhUbqT4upnHI6Z6wLBmEiU7PR8fAg59HSJYkdLlSQda8U7BTkhoENkT/R107goxtYkzQ+tpc1C2LvKQQCAhsiHQYkBMZkcLO6lv1JQXAeuZxenMX6mKh80K/XW81hNRdzlYVtJl6w9OkEKVTPOAa8QEX9cUbqRjVuCgrfFwV8JtjP5ck4tNIVY48pA9/dxLUPu0LUFGbSz8/O0CHXnZGVSeXJNjm7OPqPOuVBM/EjlQTbHMonIGx6xbrg/zyERTb37Wk76d7KbE+T+2QCxmGTer7mOdee9PYCI4eyxkWYcDQ8r2uaq+4wIOepoku/TrWegeaDdB6tGWycQNxtW1kQOwMiMwLKZSEmJlILyaoe6CH6dgKapjKBy1WjeMWUH+1yEry+aHhEV/eBMIpdQcMgyPtFdXG4= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0a2af035-410d-4b44-6d2d-08d9ec4e476d X-MS-Exchange-CrossTenant-AuthSource: AS8PR04MB8198.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Feb 2022 04:32:00.8342 (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: 4JeWNZLU4kYqDaZyHhEEcjGY6iH54W3IjicIJw7BVhOR7MY8iNiF7GcRbJY8WQim X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR04MB6106 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 Thu Feb 10 04:31:31 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gagandeep Singh X-Patchwork-Id: 107199 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 B9239A00C2; Thu, 10 Feb 2022 05:32:14 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 2F54041155; Thu, 10 Feb 2022 05:32:05 +0100 (CET) Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2069.outbound.protection.outlook.com [40.107.21.69]) by mails.dpdk.org (Postfix) with ESMTP id A969B4114A for ; Thu, 10 Feb 2022 05:32:03 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=A776iV/E4cbpTi65GmrxdI6n42ZmXkEW14IcRHAoNpGRX9SxhOhiDMOLu7SN0C0gQT5Gqpo9FiOx2CqDoEq0O0nr7xlzL07RTSHDJZ56RT9fCHdrv8cWsJQ5aoHaYpIJJ93F2nb4nFJuKx75XNnpFI8OgIDBSV/hGvb82UNbUwvBZC6vkGI4PSQvazD9Ui4kqg6PZKSsVOw37Pebgz+YFuke+6iSorEL3khlEZKhcn/luqYwt03tI8j7iJlf/WOSxbxmNj5rvlIhGCWj+RRhwXbIMDLqAabd/5FQ1EoY0Vx7toRDuIoDNHybg8iJtUXf/ljj3B+aR6IAfRxvNgWPLQ== 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=OZb93pZCQaXRwQnOUpPtsiS4OAYgBagJJJnYtVL0fw7WhC53qzpP14RkukSHINwWV36/BPH9eAOiBDXZ6FpusCGpQb06ZtHzN5spZqfT8yCYwo76OCkuUu16AqY5lZ7Fr6KKyzrVDnEr+zB8bp47dNpZMjMGJ6IdPNAVl8zlg62vo1A962qYHtrXl3LQZSAXd4ssqUh3ttBddUcqI7lTbFAqennUvhbfiMQDxK2R5MUgxPglV+wDbyn7pwHsU85zPsAmbXztWw6A7P2A8NkZ4SqpucLKMkJa+TC7j6MWxf1l4ZNcGzT6JzPl0GC8Uh+0ctSGl60jIGutVcnRXadVlA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=0urMefVnJhWMUGI9opCSKmD95G8+VDRlnfOHRGeSpL4=; b=rXQVq7NKJKTDa0OBPxdSuqQDpoTO3aCGXwRHoIQM6jFFWf59PXwIWye3FBFoQM7F7n4ilthY1Q9/qxn8KqJZwdVEXeN9meuyL/fNIs1tSYR3+8dc/ARHI2AYsKj/EiDmfP/NhLrqRrfyeI+H94Pfe7mumla3p9Y/2xWzZruHA/A= 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 DBBPR04MB6106.eurprd04.prod.outlook.com (2603:10a6:10:c5::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4975.11; Thu, 10 Feb 2022 04:32:02 +0000 Received: from AS8PR04MB8198.eurprd04.prod.outlook.com ([fe80::4146:965b:5645:9269]) by AS8PR04MB8198.eurprd04.prod.outlook.com ([fe80::4146:965b:5645:9269%4]) with mapi id 15.20.4975.011; Thu, 10 Feb 2022 04:32:02 +0000 From: Gagandeep Singh To: gakhil@marvell.com, dev@dpdk.org Cc: Gagandeep Singh Subject: [PATCH v3 2/7] common/dpaax: change job processing mode for PDCP SDAP Date: Thu, 10 Feb 2022 10:01:31 +0530 Message-Id: <20220210043136.304845-3-g.singh@nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220210043136.304845-1-g.singh@nxp.com> References: <20211228091058.3620177-2-g.singh@nxp.com> <20220210043136.304845-1-g.singh@nxp.com> X-ClientProxiedBy: SG3P274CA0003.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:be::15) 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: 3cfed89b-5b13-493b-aa7e-08d9ec4e48d5 X-MS-TrafficTypeDiagnostic: DBBPR04MB6106: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: q++lt8vNgaa5qhxWbPgkaXDdL7HJPGH7bVM78z8o85y0p/MsuZLVdJ0KtJUIEv5wmSSl5qWY+SqDCDwOIIEzxNYI64OVcy4FL+UOyZXDUo5i75vcG0uK+dRQEyqGjhOIMCO5m/VHci5fjUP1/taVs/EKAEqqu5B3P+O1fR7NeCNXtqTiR2KYDiCwBVUZUMkXeXPZ/+u+62rn4ezS3tintOm53s6XLE7L0B2xWxVn1f6l5sAidwN4CATxVncTAQoNmxbzN8PWTVxO3PBaJw9CeAX+ECoUWckC7RRY681ruXF25p1QpCNiiMwRPnCjVkygYs8CWXdLF6SZzDs0rN1dVq14S/JLqtNDnOMcxGYI0jboa5410iHSKKxnHl1o3dz1czZuwX29uPKiXx0lt7GviXybSTzZwA5E5Q4WlVYhYtFAe9q5vflkNUpD9ASWrWKsn0E/2kv+4+EMDdE/RiQYhyHlS7oiR0LFBTSLf77GQ4OIYuMwsQzO405cMtEDNNA/hC3xEndvOcWbHXIVEiENK/AJTyEoY98mtVbwr6kcuXU1uxmzawmeLbBKq9SIZjCAVS8jjUQMWez/f5SSnnqXl0SAonNo9afvOJmagXlPFm/l7UaR789stby5z3A9EMeHmHGz1u9oaYkLsdPHfLqy6tU/YmJJf6JAAMP/w89KJC5Rnc2fOh5Q/Jqx+JpHJuWxbYpBXNymNmwLQx2v4rKneg== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS8PR04MB8198.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(4636009)(366004)(66556008)(6486002)(316002)(66946007)(4326008)(66476007)(8676002)(508600001)(36756003)(86362001)(38350700002)(38100700002)(1076003)(186003)(55236004)(52116002)(6512007)(2616005)(6666004)(26005)(6506007)(83380400001)(5660300002)(8936002)(2906002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: SM2IlHrnilAqOI3RV1kfarwlADU8CLjmdGdgkN6aY+bTtfdeX3b77qTs9dIYK4m70fLamGloSLGBp5XTPYTtugvLIzwk9ARgVS/ijGQSGK5HeSNP+8XdPlsH/0ylgQ68+tFNNFJle27HnRcaP5g7fVcbzprxnYAnXNzKEptyvFKRBgh9DGFVS51wE+CCpSOHatQNDyl0DQFxgTT9sh2j5Z5N5GazkDrsSOK7TZAwvGgUHlkcF/35kg62iY4e2TmEjkW2RSgniPlcSW+8L43K+Gay2Cv/MR2897S/xQFez/AQNhths0v8wK4FcVbWqC0+aR71NQ7n2tIMMA2SSQTm/LwYkAUBnRwjwu69SwtNztj1SBcysmDdd+TEsX8ZASVYCdX508J6qwr+YuX4jYl2zCmhCvJqfV0IeHmSmhUkhO8r+G0dWB+mkKT2Fzj9LZVHZTpzRC+tDpEncolDcekQ6xRbb///jjXkweLTIw4NcdSrjCSAhgqE63+jhK1yyoAM1OjNM3IGBPVD68GVMvym4ia4sQFp75aUjqlYQFrC+IGk6Qf9optsM0vOHPFGi7Ms+nefdbKkn9AbrQtVN4rq/AgG7LgVeViotO9bjAsROy6VmYPJfEX4E5cDVHCrzsw7BWNldp0xHadMmdMLpYbzVjYQDqXYCyYVw+4+fLclb6HoKLQ2jjGw4TeOl3pqVR+DaM74aIvnjs2wdAdV8jWl5HzNSHFRcfZ+Yi9BboGPIsMRd+X/hYJrlOklx37KIQiOlwMr7HwHQW1k6at46UFsE+N04+WoIZhJLlLqrER47HluetgXBaewm8FxMGWrGEFsn6MnKGYWPvJT7xpt6Vlsc151nKQON333nRUHpK2Vc3K2BIBkcm+4AFY70ss3PAQwwc+zWXeE6sAONGjHrzFEFa1B0PVV6axZeVcoSOfU/hiNeO86M1jOvhtgERl6L2EcNLTf66SCGqZMNOXTx2ex+A8sk0p3Zop2gxXyUWDUnC3shdveHYQk2wwQfLEIjeTBVV0QL6zlcgS41i9q/0JN8yH5J76Cr+Y0l71sfoVGuDKhZheiKpfcwA2HOIh3N7C9GZa0Roiqdn7WCuL4sKpvHFibktw6NfXcp1hBeBp3dAxhHhLBqVCvcRVMDE1HcJucJCOq7fDc3+oOcR/LmHpL9+ovqBh9pzapRodoCgJLxzSOfss1kHYSiUYUmRnMte1L/hZMakEu/oYEMHV4fmjHEBZ07aY2klwDrBhXX1sRSjT5b1MK8ZU+5UnVAuphG6g0H1T6xvf8Yc6160JqdF00jLmAq/5Pwpht1PHA2yl7A7zheKlkXwJbk9Aghp7n4rXaxHAiso/7DD5iGi1Z+MCcXxeXsnuYE6H076r53cH2Qq43mwT5q0dQ5K243rd5TMfXo0kmU2+ec+hLCklG8saCUT5v82io5NmFp35491WRCNHeJrU3Fz2Q7YvhdMeTxumPCaDRxdjaj7n7io6t6XjTno2OMrYwp/9ab3SdUyyDVI8k+WfBxUhP9Ur8Lk99gRETPYvub+Pd7r0vb93YQT3E++9wMToH2JwrOzuvfbU1a4k= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3cfed89b-5b13-493b-aa7e-08d9ec4e48d5 X-MS-Exchange-CrossTenant-AuthSource: AS8PR04MB8198.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Feb 2022 04:32:02.5847 (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: 5POwOxtvVnh2J/5mXUnrYqBMRSMzXiEQzlPqZj2Lc5oyL2h/Za+34YH6/a2sGYqf X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR04MB6106 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 Thu Feb 10 04:31:32 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gagandeep Singh X-Patchwork-Id: 107200 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 EB61EA00C2; Thu, 10 Feb 2022 05:32:22 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 6FB3E41156; Thu, 10 Feb 2022 05:32:07 +0100 (CET) Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2080.outbound.protection.outlook.com [40.107.21.80]) by mails.dpdk.org (Postfix) with ESMTP id 11C744115D for ; Thu, 10 Feb 2022 05:32:06 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LEBK+96ocbsRcoTE2hkEIlAPcQeXYyI1Fk8E/kiuil6FT8C9FSS9yvGngOgjPy69+76BUQRFXo0lGZBPjc2JmllvQr0DXsa7rsIEVYq41bMctwiML9JAvs9HcNrz2PacU+6vDWwZtUs4DFKRSeL6fi6oVtBopWGKNPCMBUz7Uv5I25DWeBDxsgI64zZtvIgS5qMtXR7xsm40aaIA0Kg8LsX5vlx0TBkeWH6b5kE3KeAoqKCWnLhmDICoy88eRbW3SSxAxclp1CmRqe/1/9mgF87EE/YAWcfWA8GA9nFsIRI71H8XajMoB2dTKyVR4qc5prDB9ZYOuzGE5+7879XPLg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=1cqG8ySax9Vc0SSEJibvrZhKhuzkg6WQaJhBluLpF+M=; b=UguUAJ1HxqhviXf2ghRPFkYmur161kp7pJJ0QPwracelP78nrqZeTPOlER2ckwerQWcK/Q+sU/f50CDC3SrwwMkSNOCC7tVHPsVr3/EV8Po9B7sN2BHJ2QzBy75kMaKDUZu0YWSrGi2wJY9Qc95b/ict6ydQ3iuTM6XOyiFXrmRQo4AYAYeLdeAVTyJGwJ8GcmPsKfcZclIrw/AQ9W4q8K91sSjGU0tMoMq7+NqCOzG5ZRw8sA5peP9Dg2iA4ewfwLnaR1xfLDksuO/bW2sdmcrD2x6g/NCMH8CL4CB3vZRWYvf8TC3Vw+gNRDN3gLlamCBHqyXe6aHNTREzGSf8hA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1cqG8ySax9Vc0SSEJibvrZhKhuzkg6WQaJhBluLpF+M=; b=sHxtcCsGM7i4GntB14In8jLaBy4Cya2by/eLiuDqwFQtLuC9nmYmpnMt8/w+rikJaTEMxCtOIG/pA9MHqO0lbTcpj06nt6ei2sKm1j9+YOFxPxnQFOWcCtVJzPBfNqL+1oQzu6uyTANDVXCYuIHOznaxaesZCa6VPbYEbmhoqeo= 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 DBBPR04MB6106.eurprd04.prod.outlook.com (2603:10a6:10:c5::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4975.11; Thu, 10 Feb 2022 04:32:04 +0000 Received: from AS8PR04MB8198.eurprd04.prod.outlook.com ([fe80::4146:965b:5645:9269]) by AS8PR04MB8198.eurprd04.prod.outlook.com ([fe80::4146:965b:5645:9269%4]) with mapi id 15.20.4975.011; Thu, 10 Feb 2022 04:32:04 +0000 From: Gagandeep Singh To: gakhil@marvell.com, dev@dpdk.org Cc: Hemant Agrawal , Gagandeep Singh Subject: [PATCH v3 3/7] crypto/dpaa2_sec: change capabilities for AES_CMAC Date: Thu, 10 Feb 2022 10:01:32 +0530 Message-Id: <20220210043136.304845-4-g.singh@nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220210043136.304845-1-g.singh@nxp.com> References: <20211228091058.3620177-2-g.singh@nxp.com> <20220210043136.304845-1-g.singh@nxp.com> X-ClientProxiedBy: SG3P274CA0003.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:be::15) 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: 6e7b48d1-2287-44b9-ec80-08d9ec4e4a12 X-MS-TrafficTypeDiagnostic: DBBPR04MB6106: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: dC6QzTtdoP62nvgi7WNnviK4LKAel7113PMREy4gZM7hSRmt96qcB0WUz7hakyOZWUyg4ADX7NoSVRFLnx7ea55GTSqhpBfixunINIe6j9z+ZrdRT9/zqZFxvfnw9DkoCO2E7bMFq0sZYDs9EgKik1tGJTFXhZsJFgqJfltmTZGEQs3GC1LK9fQuHSrtGdfPQ5im4BBtEOL4Q3TZ0G+9CuRgFS/+vlEq8ihCLJV0gG01hzc8yrHCYIKGkidY/W/A2+x17w7bkMjJLQJOAKHm/1ayIDH+vAw51uySeBUr8gsAYMdMGua7QgGjLDgqHfJW63aQbISQpJPPd9A/g2ppj4Y/7ZENZYAy+iaZoBehnM274h3WrsAvgRU4sTpb3OB8z3bxIwPK+o7iG9vOgSCzDSxueAS+GvZA5tNI9CX/b3z8rA/M9V75U0Q5pTeFJPA/Is9afjqPdBFV/wf3ZvFvS3TdHUcjVu3GGIKeoou6qGPu/8YiJ6TbG/S/2yqwo02FI5Tuyb6XuTZV7R0qpnSaoMbhDwlYyvyNyYdi3FI6NSnduY2hRoABF+XQvZrJAyuyEEvnFfLpdKBIOHppyF4oCMUM84M0bHLXlNLT8jVym7Pm04hhFYulXiwvSdTCoVhFrRvbZx2/QANQjZMqWaNWWue3QVr3eG7/+AfAhElIqWP8T28kXk6q9Qw/me8QIaCQPkoam9Qn6KgISBnDr8vt1g== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS8PR04MB8198.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(4636009)(366004)(54906003)(66556008)(6486002)(316002)(66946007)(4326008)(66476007)(8676002)(508600001)(36756003)(86362001)(38350700002)(38100700002)(1076003)(186003)(55236004)(52116002)(6512007)(2616005)(6666004)(26005)(6506007)(83380400001)(5660300002)(8936002)(4744005)(2906002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: TeLG7OR++NVYpouV0cuDLZ9GrhhrXnPdzpBKdF+94cfl6OHtQuVcnM18ntXj1j/6ezbtpUPC7m0N1OjITT0Fr+AqV3LvqF/XLncFkZ2I67VYL/J0bQz9SHsy/mLY/TVGyOwoV3iSHbETPS12lkQpfNA08zjDkxmOmg+6E9+VopgrmAYoqxQAnIY5xLlkLCsCwATN7t9nto7rRDRj3Y/5PY+Pl7gPpKz4G5rCH1uhp1rXO3p5Y4QufkAK57pcqM0ecueZB19nWgcwljjw34XYyn6JswNm5x83BBbtjdOevXu0EUwb6bBlomWz1Si/I8KDtlarHRs8L2kZ58dHbZNmua+JSxMxHVEck1J0A1ze7ND++VmBkEVpSLTZEFYCOVYT1b0sguCgkROFHtf0nIShENNfX58ujtnB5dOV7iChnoNIEoxt29U1hkX0neDSTeexU0oUPcgNWfsZcV3m/ktuNiI2b0XUHXLbr7T6aDqx7RIPIF3Rq0LlnyoOj/DjDmpliz4jPvE2z8XLIkp2FBROWQZGa1kzvKC+aOdUwMRY82ozMyPouzCc1H59sf3UI6imR+IXhudUAKWTuHSJfzxwdl3oNKiX3/Ja38oJyjgOmegNL6YyPz/Su75tdim1QI47EYAr7tVm94Pmies2OqGBqjqdS3UpWoZlTfDPRE7s7uCihN7BN3+AYz3o5xZLhK+C5w8Z2uUEGcl1LCF0ury/7YX1EY8aInsBavyiP0rp9Lmu7Brygs+AVxQ4IY05y+qnAB7xsFoeZ04544QQkPbaeh7hL9ra2qT5NLdoX9Qwa4ne/V3pTEcYN6iednc+IPxjcwVJnjZXbjzgt9D3kJQo6yah1TX3AUuwaTIw4SchPmW11R+KYh8BcA3GUmTEN2pTbpiaH6sHhtjJ8yQZei4MrkA8XVcdAGp8tp30amvCpcrpsEgZfQvfYVPXYtc0q2Z3OKwUKcNUUXRK45KrB9YYtPfHYkIkPys5AVdf37ZYhIMp+fEXq4nnECahyRhT31kFNyXh8ncMrRzHmF2FEYQuJcXsOBwIE/HD43e80qFTxhAsjKmqAnKJJGCUrGkfBOpKuTCfSbx8VX5hcB61U7bTicXhaOU14ueocM4uNMHsVs9rY+P7/FjHqbQyz5jibU94PLXm8y/CiuwokbCLemXsnw6FOhTnw4cS+6lnZUFT4g/ug/gWXVG2M4Eu9H5PUlUIdzkW0o1wfT7rynQB+sgaSO2XLdqevUZQugxA6wttBeKfX5ABr2jqIwzsg8wHKED1oJMDHgBHg8D22cwAvrMVc/tkemX1YDh63e4XQl88TCl/3N0gw4zvW3nXYtU0DcfJrEwkJTXbBbudccaZuqRoC9f63sSk+ktZjFXHR8FKQjPZk8lV/5NUAhJtIqhMoVgF1OtvGwjJpuvL3J8sw/O6tQeRxBqSC89sa+QvUhfqDq3d8zhi9EzGVbvhYCVWbXGA+Mak2o/vZrNHM7bd7VoPA3QoOJzfHgpYCAYOWWQ9zJSDdS5SagkXQ0X2juI7/xP5aQafej4K02rakSjDg/Hmmv/iWEBAYYZ69ZrWPi/qZxk= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6e7b48d1-2287-44b9-ec80-08d9ec4e4a12 X-MS-Exchange-CrossTenant-AuthSource: AS8PR04MB8198.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Feb 2022 04:32:04.8524 (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: 2Haql415IDnToiQTqr+lOFHSYd5YUUqZmuqoAkWNJOHu9xue101WH+B16sXdi1zq X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR04MB6106 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org From: Hemant Agrawal Add IV size and change the digest size to supported value by the HW engine. Signed-off-by: Hemant Agrawal Signed-off-by: Gagandeep Singh --- drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h b/drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h index 05bd7c0736..a8f9440632 100644 --- a/drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h +++ b/drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h @@ -549,11 +549,12 @@ static const struct rte_cryptodev_capabilities dpaa2_sec_capabilities[] = { .increment = 1 }, .digest_size = { - .min = 4, + .min = 12, .max = 16, .increment = 4 }, - .aad_size = { 0 } + .aad_size = { 0 }, + .iv_size = { 0 } }, } }, } }, From patchwork Thu Feb 10 04:31:33 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gagandeep Singh X-Patchwork-Id: 107201 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 C9ADAA00C2; Thu, 10 Feb 2022 05:32:28 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 678FD4116A; Thu, 10 Feb 2022 05:32:08 +0100 (CET) Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2077.outbound.protection.outlook.com [40.107.21.77]) by mails.dpdk.org (Postfix) with ESMTP id AA90841168 for ; Thu, 10 Feb 2022 05:32:07 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=B8oxp7Oy0S5qWGdIma5AQ+ssDSlmviU3FxJg0/kyAr0AXXC8b/bInyYcy1pwLESVGct23nR7YkaI9PlTwGP1A+sOG3YIBv+Hp9JpGXB5wFm1xeYvTM2v+xYwlVlZBW/l+voeZS+PdSrQQlsIccc+68qRAaZMhAAv/LoqNMhJQ7h6X33966yzCq+vbatAkP3GC/g5hWG17ZJGrSzPWsjbTgeDen7xfiV4a5sX1afrKuwXfIyRTejPi5L3spk4IX8eVO3icShVRp9UER8V6/qRD3oO17q/7T7QgDtQdGDGCRtdvLqKAMmJNAW6KRabIYoR8muCD2GWoYDZJxONk3OmPQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=b3t43XXJaHG1q/2ws9FZ2A4xaOzkV7ZIUArlwotl/ag=; b=NLF/TUcBnYDc8ttDuzpOaCDLFqPaeWk69TBWRtyMj5Cb6F5rLRTOUcmBsQxLSy7sBCWbKSdfakt7GYBdWXJGnS3WKoxjlIvkcZi+mqW9hADm+re/D96oWjY6v5fyJY1ifhW/xrMKwRwBlLTKwacIh7cTJ9Rtd/1/GGgWvXaV3bSebjrJFevUBnVnd/6zv54b0kXdL5PVnu0AmbMcaxS2X67/3ap4OhXaTKvAe+l29VTBZmhKoUitV7e7dSQeUov22Q631UzI7DMC/iwYCXKOj1MVAKitNd2g3rVilbq+/R7ka3Dk021KhXIkzKt87IQ/pGmmkO7nn7d/TYBenrXkVg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=b3t43XXJaHG1q/2ws9FZ2A4xaOzkV7ZIUArlwotl/ag=; b=RxSi5m+xV4lIsgALo29n/S5php2NtVDm/he3U/XYRWpkHgrx6qjXlVpIGLJMa6krg6cQRbGZIEHHiqX4480qLbpdwkVsKLupOynXzpDTv5ryPcT1mBCkV9fKi2TvlD8+NDdo+6aQ3RDGnZc7ofp1MSKNYJ8ac2Rhuuj2x9Z1owA= 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 DBBPR04MB6106.eurprd04.prod.outlook.com (2603:10a6:10:c5::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4975.11; Thu, 10 Feb 2022 04:32:06 +0000 Received: from AS8PR04MB8198.eurprd04.prod.outlook.com ([fe80::4146:965b:5645:9269]) by AS8PR04MB8198.eurprd04.prod.outlook.com ([fe80::4146:965b:5645:9269%4]) with mapi id 15.20.4975.011; Thu, 10 Feb 2022 04:32:06 +0000 From: Gagandeep Singh To: gakhil@marvell.com, dev@dpdk.org Cc: Gagandeep Singh Subject: [PATCH v3 4/7] crypto/dpaa2_sec: add useful debug prints in sec dequeue Date: Thu, 10 Feb 2022 10:01:33 +0530 Message-Id: <20220210043136.304845-5-g.singh@nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220210043136.304845-1-g.singh@nxp.com> References: <20211228091058.3620177-2-g.singh@nxp.com> <20220210043136.304845-1-g.singh@nxp.com> X-ClientProxiedBy: SG3P274CA0003.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:be::15) 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: 33f1565d-99b0-4bf6-9979-08d9ec4e4b46 X-MS-TrafficTypeDiagnostic: DBBPR04MB6106: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: b9v7LCxxDQEgBisvJbOhLFkM3NkykrasQ+Kni5GWNzWj0R8zlEPe7NRRUrxyhGvX0b4JOi5Yk7H5J6sappJcFfE8WYSpV0+6Li2Ro4VUk4QUtenlxDn0NDws7XWTjnGsRr9+c0JkZrlqarKYuLLMAPi5EIGOePxGt54feg0Oa/qxPBJoGgTNVLO9NWXvClilongXkUrIBeQzWr1nFCAwjCR6zilRo38HYp9alH8K2RswafdDGWLECuzwSisRgKh9a6xu+UxNkLCpwKxtDOzD5bOa2LTHf5semADVLKrawW7Mdl6HSNnJY9vXP29BpDZ8HTp85AJZomXHxFKYR0dNVpjER0siqBW7hiRiEUwgM301OIVQ3xi2H2qKknDWmN0J1fhyzPQyjGpEolBxMHQPoHItEImnoOBccw5AvAcTqft6sJ6RyVV2L7VtomMlgsTUPqB8HllUPn9chbu9A11gnozO6zvdgNPDBnO8bGUjFMN6i8zjf0UncwSiRcpewxb+04CpHtOlj5hqfIChFSx+S7ldC6Y7nqyZ6DyeG/vPuP5nepaGRxJBJgIQaw8txvLIyPMn+eTpcJC5MQTffsCdG522j/dkLnEWhs6vq0HrZuZRcyXxYVVlWgLVbVq1ZqDLWNO8q3boTrHb9JYCG3pMBcnQ5fUuKCoiUR/ROqcQeQi9NiD5r81k46LpLkNFv9j9tgPY0HDVfrh24zsCrm3oHQ== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS8PR04MB8198.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(4636009)(366004)(66556008)(6486002)(316002)(66946007)(4326008)(66476007)(8676002)(508600001)(36756003)(86362001)(38350700002)(38100700002)(1076003)(186003)(55236004)(52116002)(6512007)(2616005)(6666004)(26005)(6506007)(83380400001)(5660300002)(8936002)(2906002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: q6UyyA+NOuCzrdL0M5IfiBXxBaW1fJnaaCXy8y1Kf5l9SrvgO4I2EaWQWXqKsFZnG1ngXQydwnPbJ12Nw/vEaRj604PWWynhO8i15gRlnW82RhWof5PiN4JevZCIAPUU1ZcO3NN+wD04BR04pw5tk274Rnq5N7XGyNPnzfPvlxMyLg2P2koV3ooFnYz5lFFXtWLnbidbUMg7tW4legvFHWFNtAZWk7DVdd70RMKo3VQ4G4JlOWX8tlp6Km+aicsvfH0L92r1nJb25R0HsPMpxkjDItMD7ept2YAftKMo88H/PulXojGoboxGBfGC7ccsJ5KyG4nu0EUiEW6Ln9CXqjI2VL0IIiHjiYO3PZLvs4DJrUP337Zq3SFUfPjvM0m6W7Ozys3IgNqSDgFMiktid2eY/0Wzu0ziTc6Icp7jjZMT+wz49ysc6IYJInH4IFoTdLO8PHt2GZZaaH3O5laCbYjbmzfajuSIeQ4GAwfJdxQvgB3LQRNEhdoofJkdu8LBo3qwamwo8fVn/JOMWvcx2KvF86vlP5mk55piLvdXvjHIzz43McHOkxInupkW6jw/VAqiLZEL8sjg73wFFZHpaOjM5VSWzbF6x053uXV8PaQSwNOqWHMMWIAW1EjaVaFD0+2hl38cnVDU5UTHJDq6+c3+boWIjg6Tr0sZ5UePFGxvIHt/5gvIsoMKm3hxEbbuFE9xLPC6Cwx509XJzHY4o/SzIp9R04bwe+i/CbauTLeyUtDN4jLHN+RZXSdbnetcroDvx3voyEG0owyuD/U6IfjHhk8vaxKdxB0QeFT59w/0Uf1gE1p34DjufL5i/i/Jio7voOrdnl2QiMWiOjYT2qo0RPimFi11Mb/ZSxrZXQbX9AwJaMF7QDysXHwz1Hu5a9Uf1282RoGJnIgWsQlKCxCzjhktVlE2tiNEG4K/arQdhYRg6SC9bBG201hnlZHTPUTsEYN/vK0csFtiUqLRZAWKLRUOo8MXS9DXUHlieal++FRHHNog2wL9xs7wdH4RZYIOMcaONqFrCZXOpHLxnBZkaAQjxZFAw7wjOJ9GO7NJ+dzIot/GBSd/FhNTTjukKE+wxwg0QGbhOIbZjhMzFJp+0lwt3zbSWIfXtdL6W7ujNyBmnlLZbRozGFNDXCik8uJph79FTwYjTTI+553OawYkh9H6kxg/Rxr/NxSloIeYfwZlxoEk/GCqZGqEWM2X/hgxqQI2j7efIp7fS3v/mPLpqzr7GpOdMJsX3xW98wTm7jl34MzoG5FaW8rsWNRwcrQ4tgWvUVN8nr6soGeMatT9e9jteuLo5G3gjXfd/atz3uoFg3zRtWoYcZV+42lZ6OpEXLx54JzlUSMAWdKcdSxxZOMh3myufAYQuV5wa3glJKPiIKKdGDnBJnhDQNP0D43PM+Vg4OM3dn6k5mwK2tW3us3uQz+cptntswN21yD3PSKutzBBP4KBPGD3nFz8Y2pZbaloQRPp44/OksqjV4jiqtKrBTB0COraco6lkZKCRuKH5chWn07WF0/QAI7Rz7FYjK3vIw3sHejubMdKArJtkGJWHcjPHTq38FIsVxw= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 33f1565d-99b0-4bf6-9979-08d9ec4e4b46 X-MS-Exchange-CrossTenant-AuthSource: AS8PR04MB8198.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Feb 2022 04:32:06.6345 (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: 5+I45MDSAGmC07Si2gDmrc/YZf9NWIAVUCjvR11F6Ixgwaa+bOlUODKHTIgKr8HK X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR04MB6106 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Few useful debug prints added in dequeue function. Signed-off-by: Gagandeep Singh --- doc/guides/cryptodevs/dpaa2_sec.rst | 10 ++ drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c | 136 +++++++++++++++++++- 2 files changed, 144 insertions(+), 2 deletions(-) diff --git a/doc/guides/cryptodevs/dpaa2_sec.rst b/doc/guides/cryptodevs/dpaa2_sec.rst index 06de988d51..875d918068 100644 --- a/doc/guides/cryptodevs/dpaa2_sec.rst +++ b/doc/guides/cryptodevs/dpaa2_sec.rst @@ -175,3 +175,13 @@ For enabling logs, use the following EAL parameter: Using ``crypto.dpaa2`` as log matching criteria, all Crypto PMD logs can be enabled which are lower than logging ``level``. + +Enabling debug prints +--------------------- + +Use dev arg option ``drv_dump_mode=x`` to dump useful debug prints on HW sec +error. There are 3 dump modes available 0, 1 and 2. Mode 0 means no dump print +on error, mode 1 means dump HW error code and mode 2 means dump HW error code +along with other useful debugging information like session, queue, descriptor +data. +e.g. ``fslmc:dpseci.1,drv_dump_mode=1`` diff --git a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c index 1e6b3e548a..444e1f0043 100644 --- a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c +++ b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c @@ -28,6 +28,7 @@ #include #include #include +#include #include "dpaa2_sec_priv.h" #include "dpaa2_sec_event.h" @@ -50,7 +51,17 @@ #define NO_PREFETCH 0 +#define DRIVER_DUMP_MODE "drv_dump_mode" + +/* DPAA2_SEC_DP_DUMP levels */ +enum dpaa2_sec_dump_levels { + DPAA2_SEC_DP_NO_DUMP, + DPAA2_SEC_DP_ERR_DUMP, + DPAA2_SEC_DP_FULL_DUMP +}; + uint8_t cryptodev_driver_id; +uint8_t dpaa2_sec_dp_dump = DPAA2_SEC_DP_ERR_DUMP; #ifdef RTE_LIB_SECURITY static inline int @@ -1621,6 +1632,83 @@ sec_fd_to_mbuf(const struct qbman_fd *fd) return op; } +static void +dpaa2_sec_dump(struct rte_crypto_op *op) +{ + int i; + dpaa2_sec_session *sess = NULL; + struct ctxt_priv *priv; + uint8_t bufsize; + struct rte_crypto_sym_op *sym_op; + + if (op->sess_type == RTE_CRYPTO_OP_WITH_SESSION) + sess = (dpaa2_sec_session *)get_sym_session_private_data( + op->sym->session, cryptodev_driver_id); +#ifdef RTE_LIBRTE_SECURITY + else if (op->sess_type == RTE_CRYPTO_OP_SECURITY_SESSION) + sess = (dpaa2_sec_session *)get_sec_session_private_data( + op->sym->sec_session); +#endif + + if (sess == NULL) + goto mbuf_dump; + + priv = (struct ctxt_priv *)sess->ctxt; + printf("\n****************************************\n" + "session params:\n\tContext type:\t%d\n\tDirection:\t%s\n" + "\tCipher alg:\t%d\n\tAuth alg:\t%d\n\tAead alg:\t%d\n" + "\tCipher key len:\t%zd\n", sess->ctxt_type, + (sess->dir == DIR_ENC) ? "DIR_ENC" : "DIR_DEC", + sess->cipher_alg, sess->auth_alg, sess->aead_alg, + sess->cipher_key.length); + rte_hexdump(stdout, "cipher key", sess->cipher_key.data, + sess->cipher_key.length); + rte_hexdump(stdout, "auth key", sess->auth_key.data, + sess->auth_key.length); + printf("\tAuth key len:\t%zd\n\tIV len:\t\t%d\n\tIV offset:\t%d\n" + "\tdigest length:\t%d\n\tstatus:\t\t%d\n\taead auth only" + " len:\t%d\n\taead cipher text:\t%d\n", + sess->auth_key.length, sess->iv.length, sess->iv.offset, + sess->digest_length, sess->status, + sess->ext_params.aead_ctxt.auth_only_len, + sess->ext_params.aead_ctxt.auth_cipher_text); +#ifdef RTE_LIBRTE_SECURITY + printf("PDCP session params:\n" + "\tDomain:\t\t%d\n\tBearer:\t\t%d\n\tpkt_dir:\t%d\n\thfn_ovd:" + "\t%d\n\tsn_size:\t%d\n\thfn_ovd_offset:\t%d\n\thfn:\t\t%d\n" + "\thfn_threshold:\t0x%x\n", sess->pdcp.domain, + sess->pdcp.bearer, sess->pdcp.pkt_dir, sess->pdcp.hfn_ovd, + sess->pdcp.sn_size, sess->pdcp.hfn_ovd_offset, sess->pdcp.hfn, + sess->pdcp.hfn_threshold); + +#endif + bufsize = (uint8_t)priv->flc_desc[0].flc.word1_sdl; + printf("Descriptor Dump:\n"); + for (i = 0; i < bufsize; i++) + printf("\tDESC[%d]:0x%x\n", i, priv->flc_desc[0].desc[i]); + + printf("\n"); +mbuf_dump: + sym_op = op->sym; + if (sym_op->m_src) { + printf("Source mbuf:\n"); + rte_pktmbuf_dump(stdout, sym_op->m_src, sym_op->m_src->data_len); + } + if (sym_op->m_dst) { + printf("Destination mbuf:\n"); + rte_pktmbuf_dump(stdout, sym_op->m_dst, sym_op->m_dst->data_len); + } + + printf("Session address = %p\ncipher offset: %d, length: %d\n" + "auth offset: %d, length: %d\n aead offset: %d, length: %d\n" + , sym_op->session, + sym_op->cipher.data.offset, sym_op->cipher.data.length, + sym_op->auth.data.offset, sym_op->auth.data.length, + sym_op->aead.data.offset, sym_op->aead.data.length); + printf("\n"); + +} + static uint16_t dpaa2_sec_dequeue_burst(void *qp, struct rte_crypto_op **ops, uint16_t nb_ops) @@ -1702,8 +1790,13 @@ dpaa2_sec_dequeue_burst(void *qp, struct rte_crypto_op **ops, if (unlikely(fd->simple.frc)) { /* TODO Parse SEC errors */ - DPAA2_SEC_DP_ERR("SEC returned Error - %x\n", - fd->simple.frc); + if (dpaa2_sec_dp_dump > DPAA2_SEC_DP_NO_DUMP) { + DPAA2_SEC_DP_ERR("SEC returned Error - %x\n", + fd->simple.frc); + if (dpaa2_sec_dp_dump > DPAA2_SEC_DP_ERR_DUMP) + dpaa2_sec_dump(ops[num_rx]); + } + dpaa2_qp->rx_vq.err_pkts += 1; ops[num_rx]->status = RTE_CRYPTO_OP_STATUS_ERROR; } else { @@ -3883,6 +3976,42 @@ dpaa2_sec_uninit(const struct rte_cryptodev *dev) return 0; } +static int +check_devargs_handler(__rte_unused const char *key, const char *value, + __rte_unused void *opaque) +{ + dpaa2_sec_dp_dump = atoi(value); + if (dpaa2_sec_dp_dump > DPAA2_SEC_DP_FULL_DUMP) { + DPAA2_SEC_WARN("WARN: DPAA2_SEC_DP_DUMP_LEVEL is not " + "supported, changing to FULL error prints\n"); + dpaa2_sec_dp_dump = DPAA2_SEC_DP_FULL_DUMP; + } + + return 0; +} + +static void +dpaa2_sec_get_devargs(struct rte_devargs *devargs, const char *key) +{ + struct rte_kvargs *kvlist; + + if (!devargs) + return; + + kvlist = rte_kvargs_parse(devargs->args, NULL); + if (!kvlist) + return; + + if (!rte_kvargs_count(kvlist, key)) { + rte_kvargs_free(kvlist); + return; + } + + rte_kvargs_process(kvlist, key, + check_devargs_handler, NULL); + rte_kvargs_free(kvlist); +} + static int dpaa2_sec_dev_init(struct rte_cryptodev *cryptodev) { @@ -3984,6 +4113,7 @@ dpaa2_sec_dev_init(struct rte_cryptodev *cryptodev) goto init_error; } + dpaa2_sec_get_devargs(cryptodev->device->devargs, DRIVER_DUMP_MODE); DPAA2_SEC_INFO("driver %s: created", cryptodev->data->name); return 0; @@ -4082,4 +4212,6 @@ static struct cryptodev_driver dpaa2_sec_crypto_drv; RTE_PMD_REGISTER_DPAA2(CRYPTODEV_NAME_DPAA2_SEC_PMD, rte_dpaa2_sec_driver); RTE_PMD_REGISTER_CRYPTO_DRIVER(dpaa2_sec_crypto_drv, rte_dpaa2_sec_driver.driver, cryptodev_driver_id); +RTE_PMD_REGISTER_PARAM_STRING(CRYPTODEV_NAME_DPAA2_SEC_PMD, + DRIVER_DUMP_MODE "="); RTE_LOG_REGISTER(dpaa2_logtype_sec, pmd.crypto.dpaa2, NOTICE); From patchwork Thu Feb 10 04:31:34 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gagandeep Singh X-Patchwork-Id: 107202 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 175DAA00C2; Thu, 10 Feb 2022 05:32:37 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id BCE604117A; Thu, 10 Feb 2022 05:32:10 +0100 (CET) Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2083.outbound.protection.outlook.com [40.107.22.83]) by mails.dpdk.org (Postfix) with ESMTP id 96A4841178; Thu, 10 Feb 2022 05:32:09 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=j24pA1ZvU2sYaTNhPGLsm3JkmcfLN5Qau+IYo3I2E9caTF7zGa/rq6cDkjwfuZiysQf9px7MjhM8pvCNJ1PV1seUd0n4Q30eVJX4pUaNYRPbePDa1VpB83xE2j9yIffRTH+nelhXiFcMrGL0rBgxpLarYJIEa67Ie4v1WyFRBBYhvqAMYOVm5uTXL/aBQjt0xZbmf9Rr3BvPBQGF94Yrva+fvDEKdyDyuCCesgAcOzo3BDJG4tmbJxCeljnnNSYvaTA6o6/STjFyAsBD8VkxqePaKReJyRizTXcVoaaY5BrLEPA5P4ui4VdEtpG3uxCgjuJdgZsWuikxUyVkwxPQXw== 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=od8+ze1HcDD9aqPJmECWjvbNrpZkxMpHyJuI/YyggWw=; b=jB0FZakQgfdQGSuUwW/TwjegORrXV1Wyo770BEhf4hbDAEvKvwgd7laLROfdKT+p6mQ2LHqXHsVwUJ5YuIHaD4CrbpcewRNWXqOfUm4NI5vGbkurdwGcbq+zuq8Gbq5AAUlXlonCZeuEEt75iCNXQGzD/vHdgJZAuNBl+u48Nlppr3h/fyFAFnd/i075vuodCQZk4S+sqU8B6/jUu3hqqpOtdnYyBlPTaJvYQW3th4ciAn1BI6dqndjyVOyiBKTgeeYomY0CeTosqR4bpLfAXwu2MouF2tKTsj3JEiUw/gtjpT/lRsiSAZ3dBIyQL8HdECRYHOmAYUZMy387wEFA1w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=od8+ze1HcDD9aqPJmECWjvbNrpZkxMpHyJuI/YyggWw=; b=okg/iipXDBUv94Bx0GS8sxwzsvsbgCu0DpYO+FDAdpy+458aP9FVKmKI78tUVNZlHcap5XqYqoCeLkvlRMPOSow51zxnZ8JOvqLQIOKtNmaykXmowPR8DzDNn85Af85EMt3sQJ/83UVIfL5Tyl8qx5g+wwpNjvG67jJler4IrJQ= 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 DBBPR04MB6106.eurprd04.prod.outlook.com (2603:10a6:10:c5::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4975.11; Thu, 10 Feb 2022 04:32:08 +0000 Received: from AS8PR04MB8198.eurprd04.prod.outlook.com ([fe80::4146:965b:5645:9269]) by AS8PR04MB8198.eurprd04.prod.outlook.com ([fe80::4146:965b:5645:9269%4]) with mapi id 15.20.4975.011; Thu, 10 Feb 2022 04:32:08 +0000 From: Gagandeep Singh To: gakhil@marvell.com, dev@dpdk.org Cc: Hemant Agrawal , stable@dpdk.org Subject: [PATCH v3 5/7] crypto/dpaa2: fix to check next type for auth or cipher Date: Thu, 10 Feb 2022 10:01:34 +0530 Message-Id: <20220210043136.304845-6-g.singh@nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220210043136.304845-1-g.singh@nxp.com> References: <20211228091058.3620177-2-g.singh@nxp.com> <20220210043136.304845-1-g.singh@nxp.com> X-ClientProxiedBy: SG3P274CA0003.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:be::15) 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: d5454902-0c1b-4912-f9f8-08d9ec4e4c72 X-MS-TrafficTypeDiagnostic: DBBPR04MB6106: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: 2Zt9Ws76pjiREteFnVxhFpnXfBqvXNo2vjWJAYoFyhZ0o/0o7Ek3FkqYSMIMyN0+lOB3BzL9qS3j/lm8rmeBbV94LMdAK6j/Zmob9Pspz7Ibv+n1fndapq+kcBtFVc+hVciuHWJZt0W1ZGg/SMPAhDnUN/3x/PeUykrayvixL824kWSYBnh6GWAlHDvttqzRBw778Vk1azbSuSUOfK4MCWzPeK6xr7get3WFWiviBH9FzwYsS9uXklBqiLKge4NXlaFQV08RedsbcELtQ9UtBH0yqBpAqo+RG5T1Cs/so+dMtiGPp+3tXAzPrXgNZXPaacRLtd/y2vVmVzz0rujzFqxDto94S66xWwhUdSLw9lBgRM88u+Fsp/rS9m5bZPe//I8AGYYJ2N1Gg1dXjBZRhpI0plccrPyBJ3oMCJTKm189noVJ4uKfG2P0RVCaaMLR0+FnLz/073UCWTU/uckT1pyTB8wx/kUSTvDN7uuE3SlzW6VOirmlwbEtwNB/LwLwOBHURxZN+FLvOULWWZ0syYuM+WuM7QOXR8f7kQXv+OMMckaJM/ouTlaMXMHl8NvIGUdxDLhBDLdG3Tmtz6iFJwSRrGG1/iuEyPTonBybjLEqIufE99Q50lDgrP4iCEqcVlHUzOICIUjqZjm2pDRNAHqGalTGJQ9BM/db3eZpKws8We7AkRVKN0cJzhF6fVC08yUyUnJU+kAiILmvHu3dwA== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS8PR04MB8198.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(4636009)(366004)(66556008)(6486002)(316002)(66946007)(4326008)(66476007)(8676002)(508600001)(36756003)(86362001)(38350700002)(38100700002)(1076003)(186003)(55236004)(52116002)(6512007)(2616005)(6666004)(26005)(6506007)(83380400001)(5660300002)(8936002)(2906002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: KRFHR7qq4ldHToBTmMUH95vdMgwgPZ87O0qajXJZQVJE9X17ZKWevnOGyX8qGcGGECCmTT2uOnEaX6+flPfglL8E8yM8TOdfEdG0QvXSwKOT0rYeFkuoO3sakaPVMa04LQq2lSNZj+rrEqQasVNLbsaQNsffJCPMtmzDYXPULJwLg20S830TAcpt242PFL6UU/PNYay4HDg/XCTp0xvodOMJDADqYv8PhBwcjbOPKknSYZeT2AJ+ljt81FbJ1CPaNdOEAcymhUr/i85uHo/wqVVxYb6smzW/RAzlVMLok4kKD0AShF3flvEbtT4ttDNU01tM0E36iZJJErg1HGkmx76VvHuGFimrnrmSTZMRi6C7fEcLtOdH4E2wYLTlpyZX3PuZ4APjuOlo6x/wtp/MITGFF7/snvJp5C4v6RQ4ssrDJdNK6oG17k94HTc33TYmFYU12fmgXRCSVNGGXxVMxVf2RJ2352TIX0GhGEALaNvnmSYTuJpWUl7Cr8Npw0+X8/KDX/nM0Co8iugyUBYTT9ddpkPbllcN+bmCF3FhQzmKj8IA15vk72cxx/dbThyZwWPILpKa0I5KIWMXDlf9xoyNlxlvC9+TsnlxWY/XmrlR/HmAfBVxxUnScGxdwh02zlS/NMuSW6W+358GGMkk3obKs9398kmmieAFvVj3I0O9GptVsGwG12MRcM+mN/cFaCUILG7hR6zWSzU6rfbq0yUR241ePXe1DVEHD9lcDvMzefRzMGDTSekMQC+zJTnWCS4ojJqJwGDiVecbCyaD0QHfaOW7cr7CnftajUvuIiALS2MYn+T5DGlf7lpBm7u7ZvMV3RVdsWEkjfpzz0/U+xE/DiQjiUgjTXqiyIa505s5V6psrnkfXoy3SZ+n45D58t49HXrZ/WT8fjig8pgUUmdSnR5Q7TUj5ddfK+hd+QArkjq37YTPgcrYU/RcivKEpW9aXkErEUjw1xY3W2P9qNq3pRCkVU4ylEc30k/AUV35LibpyR0v9ZpAnQMOPH0FGe0ypHHqC9NkNlS6w1uw1jfSc76X5FZn1opfS9ta+yFEaWymr3Ma+qqGJdNxOtpEV7PTIsZQGyZTRuk+4Z5EgseQgWkefgSjhJOstFub8pi6ZSaz/5PzEYuwzabQGw2dR8d/f/x/m2XNN4LhzEJLExfoN0yh1i5yBd+g9yG6EWEl9QLpBtsvt4qUTT+O1Hz32uiwa1FeEsIpSFoyTiQQw/3z50DKTRk2ZNs1ovBk05pww1T5g2Sg9/0ll0zimtVHmSLYHcjBxxrkMK/hZ2W7MeF8kQSmmp8PprdhOdVSBQH/h9RxNkzIuQ3zHX3C1mzYUSCh/y4c62tpFyM/YG2guzg+ewlY/Ee6CaPssOEtaCa+3KxGyJtwnxmX+NH0x9dnkIPSvbxSBf2ECCuCySl5B683B5P2xS2B4Wg4M+RCzLLONxXH0feaztaAk9MgYaHwhcwcZm6w64QHOCLyowpXeR96j4sNzoy3u+/2oJGEXiCKoQPGWd5cTeO/Ws8s3zE9KBWcjKsNms4ewSfp6W2MgUs7dplkLWj8FqrFEz9Q4n8= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: d5454902-0c1b-4912-f9f8-08d9ec4e4c72 X-MS-Exchange-CrossTenant-AuthSource: AS8PR04MB8198.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Feb 2022 04:32:08.5718 (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: u6tK5HGP4G+q8WZ1iyJVrl136vHVxisIOC1NuejaVFrb6UqaK8zh8WnTMu1jITrS X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR04MB6106 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org From: Hemant Agrawal This patch add more checks on next type for PDCP cases. Fixes: 45e019608f31 ("crypto/dpaa2_sec: support integrity only PDCP") Fixes: a1173d55598c ("crypto/dpaa_sec: support PDCP offload") Cc: stable@dpdk.org Signed-off-by: Hemant Agrawal --- drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c | 6 ++++-- drivers/crypto/dpaa_sec/dpaa_sec.c | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c index 444e1f0043..cb8aaf6446 100644 --- a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c +++ b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c @@ -3231,13 +3231,15 @@ dpaa2_sec_set_pdcp_session(struct rte_cryptodev *dev, /* find xfrm types */ if (xform->type == RTE_CRYPTO_SYM_XFORM_CIPHER) { cipher_xform = &xform->cipher; - if (xform->next != NULL) { + if (xform->next != NULL && + xform->next->type == RTE_CRYPTO_SYM_XFORM_AUTH) { session->ext_params.aead_ctxt.auth_cipher_text = true; auth_xform = &xform->next->auth; } } else if (xform->type == RTE_CRYPTO_SYM_XFORM_AUTH) { auth_xform = &xform->auth; - if (xform->next != NULL) { + if (xform->next != NULL && + xform->next->type == RTE_CRYPTO_SYM_XFORM_CIPHER) { session->ext_params.aead_ctxt.auth_cipher_text = false; cipher_xform = &xform->next->cipher; } diff --git a/drivers/crypto/dpaa_sec/dpaa_sec.c b/drivers/crypto/dpaa_sec/dpaa_sec.c index 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 Thu Feb 10 04:31:35 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gagandeep Singh X-Patchwork-Id: 107203 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 0DAFDA00C2; Thu, 10 Feb 2022 05:32:42 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id A5CAD41172; Thu, 10 Feb 2022 05:32:13 +0100 (CET) Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2044.outbound.protection.outlook.com [40.107.21.44]) by mails.dpdk.org (Postfix) with ESMTP id 8A6AB41181 for ; Thu, 10 Feb 2022 05:32:12 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=g0MQonTEh/jlkQA7jgShSUnSnyVNjeef0y236cV36DJH36Ihcz06CQZfB5E2hemq5kVajBNjQiQss1X7ukbKmQiOUC52GktSKwl0321mj3/4Po8u1LkP60FLd2EcGAfoEMJekX5TNDjKII+ff6kF8Rie1h+Qb5h5DHhSjha/BlFDCNXAumvhS8FCXT8DRZqeCeiNvFV8bj3rKgeYxL3LrDRiXD0utvzQZy42GcdpBsTkARVap8iHUpvz4r9UgtNtkG6kyVlJ8omI0yv8N1dpbWlmeYGC+JqqBrOO2MULk+p1a46s3fLD1IK6uAbYa7xo8hPzwua456qi2WzX7NCpPA== 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=oGoQ0PQlVehe7bCYn5WHaQfCu4T/yq5ByrV57EGJlbE=; b=FnsEEAnd8MP+03GLwxJcJnWY0CYAOW3TSaclVwv1j/qSKYMQ7XfEZHzSZDY6/BvF1W6/J2L00khcIC7mZ6XHnu68xdfd0/GZAF/U7vg4vbcZ5TybQxJCZD6egBn9BGaBK+tZY5gK/3wHltB4uQ4y+60UO5u+981vEDz+oqUEi1X/h8RGHIrz4LJyl1i0qYOJsdXI+yRX3JEQD/+5yb7rz8h/xroEN3/042moYBuQn0sSN5Mc3ZA0opd3JEY3kBvHTzKHC0qKsJqj9uc609uH5ixrtch/DTVSLjEgwgzKNUfpeeTparC90QniW3QpxD1RaO+q0PxZmUAZXQtPTa2k9w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=oGoQ0PQlVehe7bCYn5WHaQfCu4T/yq5ByrV57EGJlbE=; b=cm3g1n5hVuN2BNp9XY/m6ljZ1Gvw31xZY/8j/inKF3d2frcISh1jh/nG4kMTGx+mvGuuq4VfTzY4TiGTAGxUF5k0X71/L5B+pokAi5AX9ddQo0EhJunwEbxZ3OWtUPooxkd5Tvf5m+of68ThX/vVr6yAHU8RIrr9KGUBTyH0sKg= 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 PAXPR04MB8526.eurprd04.prod.outlook.com (2603:10a6:102:211::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4951.19; Thu, 10 Feb 2022 04:32:10 +0000 Received: from AS8PR04MB8198.eurprd04.prod.outlook.com ([fe80::4146:965b:5645:9269]) by AS8PR04MB8198.eurprd04.prod.outlook.com ([fe80::4146:965b:5645:9269%4]) with mapi id 15.20.4975.011; Thu, 10 Feb 2022 04:32:10 +0000 From: Gagandeep Singh To: gakhil@marvell.com, dev@dpdk.org Cc: Nipun Gupta , Gagandeep Singh Subject: [PATCH v3 6/7] crypto/dpaa2_sec: ordered queue support Date: Thu, 10 Feb 2022 10:01:35 +0530 Message-Id: <20220210043136.304845-7-g.singh@nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220210043136.304845-1-g.singh@nxp.com> References: <20211228091058.3620177-2-g.singh@nxp.com> <20220210043136.304845-1-g.singh@nxp.com> X-ClientProxiedBy: SG3P274CA0003.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:be::15) 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: ddfc7e98-7ac8-417d-5c3f-08d9ec4e4d98 X-MS-TrafficTypeDiagnostic: PAXPR04MB8526: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: TZV3VCB8mYSuWR96SSzoBEhKEAkIhs4U/IiJLB8ElWkc/rmmotDhbPLObXs5DYIFK1ozPgWOduPmpAr0eFXClXK1hmODPQsA1Gk/lovKcxb2Nq9bWWVYpfO4WD1O5k8vivr2tTPNf7QgwZhD37Fd/nCrRZCcK5fvguPoR/KqiVRfNVCsdi14U72w60Rh51wVMMAmIlsudhYESxGwfP4VqlY0A8esGFaLiG4CiXVPEWQzxkWIygwKqxGghhZ2eYtwCFZP8vw3arXb7PcNBmItV5w5tO9jHb7RVfF+QVGy2XKMppd7a3Z8MHtF3pw/L7RvCS1OWsTQzyiAsDmUDZZSH6ptXc4wPMYCud7s8LccTfG6JWEmEttsBqlej/hU4QMPpjiV5MjHtgA7ZCYIWADu88EsLQZLzRNnEEJnraEZXPN4DkQOu3UoyBVpkmWxif6saosATNFgDTWpTjnDcOepsTXB8uap447Sph/HYC8H6+zTswWDx8I230qJB6B057WiGw+wlhGKPlOHUgIWvTYZF0iKRxPCYDuPgY0QQLFHimZtJDWKC0FATosRsr/iXJGq9T8xkXz4LaN2GN5mh5Op6+li45RRgxCkznfYwtXiJCGuCahHiz6/0YZ9wnGcarpd7hrNc4Gb3TKrA6LmzHGz5iDU9dh1zZmNCHkgm4t/t7MJfWDRoI1Fxxbt6+Qt5NZKDF6suHbIjwBQ0ZYxx/PKjw== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS8PR04MB8198.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(4636009)(366004)(66946007)(66556008)(30864003)(1076003)(2616005)(38350700002)(38100700002)(8936002)(66476007)(83380400001)(4326008)(316002)(5660300002)(54906003)(2906002)(186003)(86362001)(508600001)(52116002)(55236004)(26005)(8676002)(6486002)(6666004)(6506007)(36756003)(6512007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: vKmXYT0hxO+4P0X+kaFkAdzNJ5dDqoOeBPobhPYoTMCCYd2XAh/aYavM90EAhD+w4d0b6DhiB/CQiQ4u3q31TgtC+tENSvegKxwmr3T3Y3+6OSlRzxa8tXLzvtnJ5UmP5Dw4ABlCc7dgAhOLsR3yzYo1N5KnSp13/CPVofrvFRoL6ViNhbhwXn8b4gycc6A64X/FtuHXcWKQOO0n2t2qgELEWjSHApImojxy1Jpjc6lNXWlTyDRNqUdQeSDJ4rqJQH++P2yOCz/YddYacnhHh0g0xGeArvocKNqlbkCb8HqM94bNSGA6eAcmkN9u/f4hS1/fXYWGuBrzFFAn4Vg2R6+UvQPDiDq3qFo6PKEs2m/KG8l0qD9QB5W8PmfwXsjOC5fUNHIFM9ecocuoEqiIk/YY/ss5vVzBFBMRNNd0vBMPaFt9Ymc8PH+Bet4x71afalLP/oug70OKM1fLjCBb0dEAENvWOH8Y63q7s9xNBKSsDokPyA0KeYEAQyqxqvH1ieBiUXKv6goPGL6I++V4+uAFB4zLrvIHwgzteQ18QlviqVEzqau5HyX2aRGcq+b96Z9IHb7Ud6uwlmt5RfNt6DZXw7nit17nHNBOCEjsBQ3G4ZA0vq2u0MHbmOGZWDgSgqfRQKJRXOhgeGrk4CMkpJ6MwHsbH1WaCEqRjVsZ1uYWb+opw1ivwHUIJQSICAfoJUzNLTEHOHGIfJSPAgBuIzO6nZrBbGIlXFRo7xTuDJEKQi27ciWKl/gSldBdpZvRCXYducYJhDsBXEi8nW3RJZx4uirq6IPnnWxRYvPeAR9/uuJWioZ5sSPvgKV5LiOE0Yip8kkrZtwTEK5xpfvdXp4SUi4151rZPt/ncDeLovl4oGzpOCD3KHLC1BHsnxhFelCNQnMZC9DbybMVwNEaIuYzwFfZnf16JNhBIoiLI81bFUtnssyZ516Xll0rQtXpB5aWH6MtY3Zr+eRIJ7CYuVaAkIh3tO/ghwKnzj2N43b6hGeUGPyV8QSVvK+OaB/Z5Foo9gi/H3gHgnXWMtR6jknA4AjayxrvQFrBP+ajg07kJQMhCIWj4OQRu2foQ1VkhjUT6QMOZ5E36GS1TWVzbnY8dh1ijMg9jZ0I3NgeIGNhNRoJPcNhUZ+OJc/DznkEsbrgVWUygfswvhliTNpoNU9nZJkYzWm+iPIxKO5yrP7+iCzqK6z5o4l2z5uLzPxmBj4jqysnjnMOh2lE1osj2APOmFev7DaXsD0iNMM4EWISYHaP6z87xEM0/Zvu0Yy43P51u3nHAST+vy9tXWrYa/rVTQ6bqOuee/S58g3izYVhcwdL6xXidoXQl+hm4XIwbA1k6fhWG3nQK5ezaYFPb0n00jfu3bvpKhz6laUsXKx8gpX4gGRxHrTEHSaqyUR9Xfl16AjQwFOSAYSnFcJgMWB2JPeQTSa3SfcLrpNNzoSfzgq3CkKrpEDyREVM8DeLPu6Ai2QH8IxExPGyiC44QXxc2HXf0V9aCVerHcAkvYQhhvncDI65WfGGzAJLXrAk6durm4piqjh6AX4XYTUpY0jLCTaFn9+GjFoggW1Xkps= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: ddfc7e98-7ac8-417d-5c3f-08d9ec4e4d98 X-MS-Exchange-CrossTenant-AuthSource: AS8PR04MB8198.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Feb 2022 04:32:10.7132 (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: Zs8qiluW6TuO/GPv9wDzIBPmYb0f9TCjda8eA68ArPhuDlkSzhqM3EUaa+HuQ37d X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8526 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org From: Nipun Gupta This patch supports ordered queue for DPAA2 platform. Signed-off-by: Nipun Gupta Signed-off-by: Gagandeep Singh --- doc/guides/cryptodevs/dpaa2_sec.rst | 7 + drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c | 285 ++++++++++++++++++-- drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h | 8 +- drivers/crypto/dpaa2_sec/mc/fsl_dpseci.h | 14 +- 4 files changed, 290 insertions(+), 24 deletions(-) diff --git a/doc/guides/cryptodevs/dpaa2_sec.rst b/doc/guides/cryptodevs/dpaa2_sec.rst index 875d918068..1a590309a0 100644 --- a/doc/guides/cryptodevs/dpaa2_sec.rst +++ b/doc/guides/cryptodevs/dpaa2_sec.rst @@ -185,3 +185,10 @@ on error, mode 1 means dump HW error code and mode 2 means dump HW error code along with other useful debugging information like session, queue, descriptor data. e.g. ``fslmc:dpseci.1,drv_dump_mode=1`` + +Enable strict ordering +---------------------- + +Use dev arg option ``drv_strict_order=1`` to enable strict ordering. +By default, loose ordering is set for ordered schedule type event. +e.g. ``fslmc:dpseci.1,drv_strict_order=1`` diff --git a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c index cb8aaf6446..7a0596e44e 100644 --- a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c +++ b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c @@ -52,6 +52,7 @@ #define NO_PREFETCH 0 #define DRIVER_DUMP_MODE "drv_dump_mode" +#define DRIVER_STRICT_ORDER "drv_strict_order" /* DPAA2_SEC_DP_DUMP levels */ enum dpaa2_sec_dump_levels { @@ -1477,14 +1478,14 @@ dpaa2_sec_enqueue_burst(void *qp, struct rte_crypto_op **ops, for (loop = 0; loop < frames_to_send; loop++) { if (*dpaa2_seqn((*ops)->sym->m_src)) { - uint8_t dqrr_index = - *dpaa2_seqn((*ops)->sym->m_src) - 1; - - flags[loop] = QBMAN_ENQUEUE_FLAG_DCA | dqrr_index; - DPAA2_PER_LCORE_DQRR_SIZE--; - DPAA2_PER_LCORE_DQRR_HELD &= ~(1 << dqrr_index); - *dpaa2_seqn((*ops)->sym->m_src) = - DPAA2_INVALID_MBUF_SEQN; + if (*dpaa2_seqn((*ops)->sym->m_src) & QBMAN_ENQUEUE_FLAG_DCA) { + DPAA2_PER_LCORE_DQRR_SIZE--; + DPAA2_PER_LCORE_DQRR_HELD &= ~(1 << + *dpaa2_seqn((*ops)->sym->m_src) & + QBMAN_EQCR_DCA_IDXMASK); + } + flags[loop] = *dpaa2_seqn((*ops)->sym->m_src); + *dpaa2_seqn((*ops)->sym->m_src) = DPAA2_INVALID_MBUF_SEQN; } /*Clear the unused FD fields before sending*/ @@ -1709,6 +1710,168 @@ dpaa2_sec_dump(struct rte_crypto_op *op) } +static void +dpaa2_sec_free_eqresp_buf(uint16_t eqresp_ci) +{ + struct dpaa2_dpio_dev *dpio_dev = DPAA2_PER_LCORE_DPIO; + struct rte_crypto_op *op; + struct qbman_fd *fd; + + fd = qbman_result_eqresp_fd(&dpio_dev->eqresp[eqresp_ci]); + op = sec_fd_to_mbuf(fd); + /* Instead of freeing, enqueue it to the sec tx queue (sec->core) + * after setting an error in FD. But this will have performance impact. + */ + rte_pktmbuf_free(op->sym->m_src); +} + +static void +dpaa2_sec_set_enqueue_descriptor(struct dpaa2_queue *dpaa2_q, + struct rte_mbuf *m, + struct qbman_eq_desc *eqdesc) +{ + struct dpaa2_dpio_dev *dpio_dev = DPAA2_PER_LCORE_DPIO; + struct eqresp_metadata *eqresp_meta; + struct dpaa2_sec_dev_private *priv = dpaa2_q->crypto_data->dev_private; + uint16_t orpid, seqnum; + uint8_t dq_idx; + + if (*dpaa2_seqn(m) & DPAA2_ENQUEUE_FLAG_ORP) { + orpid = (*dpaa2_seqn(m) & DPAA2_EQCR_OPRID_MASK) >> + DPAA2_EQCR_OPRID_SHIFT; + seqnum = (*dpaa2_seqn(m) & DPAA2_EQCR_SEQNUM_MASK) >> + DPAA2_EQCR_SEQNUM_SHIFT; + + + if (!priv->en_loose_ordered) { + qbman_eq_desc_set_orp(eqdesc, 1, orpid, seqnum, 0); + qbman_eq_desc_set_response(eqdesc, (uint64_t) + DPAA2_VADDR_TO_IOVA(&dpio_dev->eqresp[ + dpio_dev->eqresp_pi]), 1); + qbman_eq_desc_set_token(eqdesc, 1); + + eqresp_meta = &dpio_dev->eqresp_meta[dpio_dev->eqresp_pi]; + eqresp_meta->dpaa2_q = dpaa2_q; + eqresp_meta->mp = m->pool; + + dpio_dev->eqresp_pi + 1 < MAX_EQ_RESP_ENTRIES ? + dpio_dev->eqresp_pi++ : (dpio_dev->eqresp_pi = 0); + } else { + qbman_eq_desc_set_orp(eqdesc, 0, orpid, seqnum, 0); + } + } else { + dq_idx = *dpaa2_seqn(m) - 1; + qbman_eq_desc_set_dca(eqdesc, 1, dq_idx, 0); + DPAA2_PER_LCORE_DQRR_SIZE--; + DPAA2_PER_LCORE_DQRR_HELD &= ~(1 << dq_idx); + } + *dpaa2_seqn(m) = DPAA2_INVALID_MBUF_SEQN; +} + + +static uint16_t +dpaa2_sec_enqueue_burst_ordered(void *qp, struct rte_crypto_op **ops, + uint16_t nb_ops) +{ + /* Function to transmit the frames to given device and VQ*/ + uint32_t loop; + int32_t ret; + struct qbman_fd fd_arr[MAX_TX_RING_SLOTS]; + uint32_t frames_to_send, num_free_eq_desc, retry_count; + struct qbman_eq_desc eqdesc[MAX_TX_RING_SLOTS]; + struct dpaa2_sec_qp *dpaa2_qp = (struct dpaa2_sec_qp *)qp; + struct qbman_swp *swp; + uint16_t num_tx = 0; + uint16_t bpid; + struct rte_mempool *mb_pool; + struct dpaa2_sec_dev_private *priv = + dpaa2_qp->tx_vq.crypto_data->dev_private; + + if (unlikely(nb_ops == 0)) + return 0; + + if (ops[0]->sess_type == RTE_CRYPTO_OP_SESSIONLESS) { + DPAA2_SEC_ERR("sessionless crypto op not supported"); + return 0; + } + + if (!DPAA2_PER_LCORE_DPIO) { + ret = dpaa2_affine_qbman_swp(); + if (ret) { + DPAA2_SEC_ERR("Failure in affining portal"); + return 0; + } + } + swp = DPAA2_PER_LCORE_PORTAL; + + while (nb_ops) { + frames_to_send = (nb_ops > dpaa2_eqcr_size) ? + dpaa2_eqcr_size : nb_ops; + + if (!priv->en_loose_ordered) { + if (*dpaa2_seqn((*ops)->sym->m_src)) { + num_free_eq_desc = dpaa2_free_eq_descriptors(); + if (num_free_eq_desc < frames_to_send) + frames_to_send = num_free_eq_desc; + } + } + + for (loop = 0; loop < frames_to_send; loop++) { + /*Prepare enqueue descriptor*/ + qbman_eq_desc_clear(&eqdesc[loop]); + qbman_eq_desc_set_fq(&eqdesc[loop], dpaa2_qp->tx_vq.fqid); + + if (*dpaa2_seqn((*ops)->sym->m_src)) + dpaa2_sec_set_enqueue_descriptor( + &dpaa2_qp->tx_vq, + (*ops)->sym->m_src, + &eqdesc[loop]); + else + qbman_eq_desc_set_no_orp(&eqdesc[loop], + DPAA2_EQ_RESP_ERR_FQ); + + /*Clear the unused FD fields before sending*/ + memset(&fd_arr[loop], 0, sizeof(struct qbman_fd)); + mb_pool = (*ops)->sym->m_src->pool; + bpid = mempool_to_bpid(mb_pool); + ret = build_sec_fd(*ops, &fd_arr[loop], bpid); + if (ret) { + DPAA2_SEC_ERR("error: Improper packet contents" + " for crypto operation"); + goto skip_tx; + } + ops++; + } + + loop = 0; + retry_count = 0; + while (loop < frames_to_send) { + ret = qbman_swp_enqueue_multiple_desc(swp, + &eqdesc[loop], &fd_arr[loop], + frames_to_send - loop); + if (unlikely(ret < 0)) { + retry_count++; + if (retry_count > DPAA2_MAX_TX_RETRY_COUNT) { + num_tx += loop; + nb_ops -= loop; + goto skip_tx; + } + } else { + loop += ret; + retry_count = 0; + } + } + + num_tx += loop; + nb_ops -= loop; + } + +skip_tx: + dpaa2_qp->tx_vq.tx_pkts += num_tx; + dpaa2_qp->tx_vq.err_pkts += nb_ops; + return num_tx; +} + static uint16_t dpaa2_sec_dequeue_burst(void *qp, struct rte_crypto_op **ops, uint16_t nb_ops) @@ -3622,6 +3785,10 @@ dpaa2_sec_dev_start(struct rte_cryptodev *dev) PMD_INIT_FUNC_TRACE(); + /* Change the tx burst function if ordered queues are used */ + if (priv->en_ordered) + dev->enqueue_burst = dpaa2_sec_enqueue_burst_ordered; + memset(&attr, 0, sizeof(struct dpseci_attr)); ret = dpseci_enable(dpseci, CMD_PRI_LOW, priv->token); @@ -3834,12 +4001,46 @@ dpaa2_sec_process_atomic_event(struct qbman_swp *swp __rte_unused, ev->event_ptr = sec_fd_to_mbuf(fd); dqrr_index = qbman_get_dqrr_idx(dq); - *dpaa2_seqn(crypto_op->sym->m_src) = dqrr_index + 1; + *dpaa2_seqn(crypto_op->sym->m_src) = QBMAN_ENQUEUE_FLAG_DCA | dqrr_index; DPAA2_PER_LCORE_DQRR_SIZE++; DPAA2_PER_LCORE_DQRR_HELD |= 1 << dqrr_index; DPAA2_PER_LCORE_DQRR_MBUF(dqrr_index) = crypto_op->sym->m_src; } +static void __rte_hot +dpaa2_sec_process_ordered_event(struct qbman_swp *swp, + const struct qbman_fd *fd, + const struct qbman_result *dq, + struct dpaa2_queue *rxq, + struct rte_event *ev) +{ + struct rte_crypto_op *crypto_op = (struct rte_crypto_op *)ev->event_ptr; + + /* Prefetching mbuf */ + rte_prefetch0((void *)(size_t)(DPAA2_GET_FD_ADDR(fd)- + rte_dpaa2_bpid_info[DPAA2_GET_FD_BPID(fd)].meta_data_size)); + + /* Prefetching ipsec crypto_op stored in priv data of mbuf */ + rte_prefetch0((void *)(size_t)(DPAA2_GET_FD_ADDR(fd)-64)); + + ev->flow_id = rxq->ev.flow_id; + ev->sub_event_type = rxq->ev.sub_event_type; + ev->event_type = RTE_EVENT_TYPE_CRYPTODEV; + ev->op = RTE_EVENT_OP_NEW; + ev->sched_type = rxq->ev.sched_type; + ev->queue_id = rxq->ev.queue_id; + ev->priority = rxq->ev.priority; + ev->event_ptr = sec_fd_to_mbuf(fd); + + *dpaa2_seqn(crypto_op->sym->m_src) = DPAA2_ENQUEUE_FLAG_ORP; + *dpaa2_seqn(crypto_op->sym->m_src) |= qbman_result_DQ_odpid(dq) << + DPAA2_EQCR_OPRID_SHIFT; + *dpaa2_seqn(crypto_op->sym->m_src) |= qbman_result_DQ_seqnum(dq) << + DPAA2_EQCR_SEQNUM_SHIFT; + + qbman_swp_dqrr_consume(swp, dq); +} + int dpaa2_sec_eventq_attach(const struct rte_cryptodev *dev, int qp_id, @@ -3857,6 +4058,8 @@ dpaa2_sec_eventq_attach(const struct rte_cryptodev *dev, qp->rx_vq.cb = dpaa2_sec_process_parallel_event; else if (event->sched_type == RTE_SCHED_TYPE_ATOMIC) qp->rx_vq.cb = dpaa2_sec_process_atomic_event; + else if (event->sched_type == RTE_SCHED_TYPE_ORDERED) + qp->rx_vq.cb = dpaa2_sec_process_ordered_event; else return -EINVAL; @@ -3875,6 +4078,37 @@ dpaa2_sec_eventq_attach(const struct rte_cryptodev *dev, cfg.options |= DPSECI_QUEUE_OPT_ORDER_PRESERVATION; cfg.order_preservation_en = 1; } + + if (event->sched_type == RTE_SCHED_TYPE_ORDERED) { + struct opr_cfg ocfg; + + /* Restoration window size = 256 frames */ + ocfg.oprrws = 3; + /* Restoration window size = 512 frames for LX2 */ + if (dpaa2_svr_family == SVR_LX2160A) + ocfg.oprrws = 4; + /* Auto advance NESN window enabled */ + ocfg.oa = 1; + /* Late arrival window size disabled */ + ocfg.olws = 0; + /* ORL resource exhaustaion advance NESN disabled */ + ocfg.oeane = 0; + + if (priv->en_loose_ordered) + ocfg.oloe = 1; + else + ocfg.oloe = 0; + + ret = dpseci_set_opr(dpseci, CMD_PRI_LOW, priv->token, + qp_id, OPR_OPT_CREATE, &ocfg); + if (ret) { + RTE_LOG(ERR, PMD, "Error setting opr: ret: %d\n", ret); + return ret; + } + qp->tx_vq.cb_eqresp_free = dpaa2_sec_free_eqresp_buf; + priv->en_ordered = 1; + } + ret = dpseci_set_rx_queue(dpseci, CMD_PRI_LOW, priv->token, qp_id, &cfg); if (ret) { @@ -3979,24 +4213,34 @@ dpaa2_sec_uninit(const struct rte_cryptodev *dev) } static int -check_devargs_handler(__rte_unused const char *key, const char *value, - __rte_unused void *opaque) +check_devargs_handler(const char *key, const char *value, + void *opaque) { - dpaa2_sec_dp_dump = atoi(value); - if (dpaa2_sec_dp_dump > DPAA2_SEC_DP_FULL_DUMP) { - DPAA2_SEC_WARN("WARN: DPAA2_SEC_DP_DUMP_LEVEL is not " - "supported, changing to FULL error prints\n"); - dpaa2_sec_dp_dump = DPAA2_SEC_DP_FULL_DUMP; + struct rte_cryptodev *dev = (struct rte_cryptodev *)opaque; + struct dpaa2_sec_dev_private *priv = dev->data->dev_private; + + if (!strcmp(key, "drv_strict_order")) { + priv->en_loose_ordered = false; + } else { + 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) +dpaa2_sec_get_devargs(struct rte_cryptodev *cryptodev, const char *key) { struct rte_kvargs *kvlist; + struct rte_devargs *devargs; + devargs = cryptodev->device->devargs; if (!devargs) return; @@ -4010,7 +4254,7 @@ dpaa2_sec_get_devargs(struct rte_devargs *devargs, const char *key) } rte_kvargs_process(kvlist, key, - check_devargs_handler, NULL); + check_devargs_handler, (void *)cryptodev); rte_kvargs_free(kvlist); } @@ -4101,6 +4345,7 @@ dpaa2_sec_dev_init(struct rte_cryptodev *cryptodev) cryptodev->data->nb_queue_pairs = internals->max_nb_queue_pairs; internals->hw = dpseci; internals->token = token; + internals->en_loose_ordered = true; snprintf(str, sizeof(str), "sec_fle_pool_p%d_%d", getpid(), cryptodev->data->dev_id); @@ -4115,7 +4360,8 @@ dpaa2_sec_dev_init(struct rte_cryptodev *cryptodev) goto init_error; } - dpaa2_sec_get_devargs(cryptodev->device->devargs, DRIVER_DUMP_MODE); + dpaa2_sec_get_devargs(cryptodev, DRIVER_DUMP_MODE); + dpaa2_sec_get_devargs(cryptodev, DRIVER_STRICT_ORDER); DPAA2_SEC_INFO("driver %s: created", cryptodev->data->name); return 0; @@ -4215,5 +4461,6 @@ RTE_PMD_REGISTER_DPAA2(CRYPTODEV_NAME_DPAA2_SEC_PMD, rte_dpaa2_sec_driver); RTE_PMD_REGISTER_CRYPTO_DRIVER(dpaa2_sec_crypto_drv, rte_dpaa2_sec_driver.driver, cryptodev_driver_id); RTE_PMD_REGISTER_PARAM_STRING(CRYPTODEV_NAME_DPAA2_SEC_PMD, + DRIVER_STRICT_ORDER "=" DRIVER_DUMP_MODE "="); RTE_LOG_REGISTER(dpaa2_logtype_sec, pmd.crypto.dpaa2, NOTICE); diff --git a/drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h b/drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h index a8f9440632..e4a82114c2 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 Thu Feb 10 04:31:36 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gagandeep Singh X-Patchwork-Id: 107204 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 8705FA00C2; Thu, 10 Feb 2022 05:32:47 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 91DB340041; Thu, 10 Feb 2022 05:32:14 +0100 (CET) Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2043.outbound.protection.outlook.com [40.107.21.43]) by mails.dpdk.org (Postfix) with ESMTP id 9965341141 for ; Thu, 10 Feb 2022 05:32:13 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=g77tXbEoruFdtY7hmew9M4GQUpvr1VKgov9BOpMDd7EM9xur0DhD4mJ50CuUH+MOJ14eQ5kYUo/QgK3HQA9wBAxnIVlcUPYF6hyKpV2TQLhQYH7Sry3X4ADYxsA384mmaskw5k6MwyyqtjoJ4TPoQLqKne6mHY9ugXgHkAWJS9Dg56My5TPDLXSZOR/dvJUv133zx/naWjsR4z7lj5P0FdABIt4pnKt/DbD/AvqGn1iPaMckDKt/s1Ta8ObXQjuGcWg2HfdRX+vQrdmK7cGRnya7G9hZpklaMCw5vLn5B9aKWlPdXE8apw/rHx/ahvP5k2o5hwvVNP95+HCZmcGh+A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=1hP95C59AkDnJ5Tz+MMK8sIzZWFU/sdQZzH5lMjQYxU=; b=hjn/6o2/2qofK52Y39sEaMp8xAs0ADoNSKj+/bsuFG4WUnL1V16lFegBvtHvmAfKSlEycB5B1Fdd8HGbumsAtDWdiIfeETYjbkIrmPSyYguFXrka9GbonABNgH5/xdizcmpPSKqXFS8VHMSAXJKlhsN7csUERvfBXzC5JP+II2tQnx4wZHWkP9/S7IupH2dL4CWalEQW845zenV+YjuiLZ+tdX6TSaAj1etoOHTvzmWwnZWgfEnSlQsi7hok4k+YsXd9xHmmbh+Kld0wUb4ydPc51QYeU+HnMrjsPeNOxkrxQPYvrVKGvKmIoYYN0gkeI0LD6GLUNR0cMYI/OGe1gg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1hP95C59AkDnJ5Tz+MMK8sIzZWFU/sdQZzH5lMjQYxU=; b=oj8bAUcXJude5EzpJhkQhvof/RVuSzX/6L4hiKX6kxAg1vSzwcX46pXN4U92BGoj/EYhrIBJ+JiJviXPolXeQPfPXx/DLeqQzE2vKoJsVxjt6OvXCISt9kEFJKEMJn8hU39U8DWuEFv486ISm+bYyuXguASZpY6AMoeFk2Hv3GU= 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 PAXPR04MB8526.eurprd04.prod.outlook.com (2603:10a6:102:211::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4951.19; Thu, 10 Feb 2022 04:32:12 +0000 Received: from AS8PR04MB8198.eurprd04.prod.outlook.com ([fe80::4146:965b:5645:9269]) by AS8PR04MB8198.eurprd04.prod.outlook.com ([fe80::4146:965b:5645:9269%4]) with mapi id 15.20.4975.011; Thu, 10 Feb 2022 04:32:12 +0000 From: Gagandeep Singh To: gakhil@marvell.com, dev@dpdk.org Cc: Gagandeep Singh Subject: [PATCH v3 7/7] crypto/dpaa_sec: add debug framework Date: Thu, 10 Feb 2022 10:01:36 +0530 Message-Id: <20220210043136.304845-8-g.singh@nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220210043136.304845-1-g.singh@nxp.com> References: <20211228091058.3620177-2-g.singh@nxp.com> <20220210043136.304845-1-g.singh@nxp.com> X-ClientProxiedBy: SG3P274CA0003.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:be::15) 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: d5a40b1c-8751-4e51-fc54-08d9ec4e4eb8 X-MS-TrafficTypeDiagnostic: PAXPR04MB8526: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: yEXapQZdkW1De4eWfTaqqfcIpti9fgbDgX7Lte6Muwl7c0+d1TaiaojPeRKxgW6GF97PHVGNLu0dJZ/29XHTL7ai282sRVDUIxTR1tOBOWVDNJI9xMvIqd1wuQsqZBvHcV/p/3ib9cHVidRaBlemUK/zD943+W9fSY31dcZYwrIn0afeCHBs5DppYN2sn1MmlJ5Sv09pUGeLaiBkcXcnWSJSFxmzsTVCnsopkLm/F31WAgibVWpB6W1PiCRXeTQ/MGGg9U/69sJsQKJXtBcGh7a/+CGcL1TYtDEWDrTnHxdisS9BWcHDnNGXIAz/ixNXTQJ9N3j0xQ/CrZcgfQSmBYzDqS/VbgIDIGokBPgucIonUIpMflgbUnBtnUmVYuV+VWuKoF/Zvfj5edWuPP1Chwsg2LyXMuw3ginyq9g3ntRanbMstox3+z595/mBKz/EGWYuQ740JpTKjBvZnadyaUAGp6MifFDtmgmzip3Q2TrkHQi4o3/+T6spkHvwQDDibAL4qt6Y77bHrum+glkelMJJwBEn2wNwSYNQc6kFKZp8S6TAZ/6fGZkvLxLeYSSh8+S5Qtk1l320JA3RhD3G39e7QjhD+Yhh3jGRSmO+wts9+yoAuSCPvRayS/z0mTRDhKU7IkiJPjPct8qBVfNkUIh6+PcoWr4ckI/DKBOtaju9rwsHO8dBiF0J0zHpoh0ONdsJsuhOy3DwTWlARCrf+g== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS8PR04MB8198.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(4636009)(366004)(66946007)(66556008)(30864003)(1076003)(2616005)(38350700002)(38100700002)(8936002)(66476007)(83380400001)(4326008)(316002)(5660300002)(2906002)(186003)(86362001)(508600001)(52116002)(55236004)(26005)(8676002)(6486002)(6666004)(6506007)(36756003)(6512007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 3/lJJpqopfA3FmR1uyV5F6NqOQ4AOE+IMVRmCToNUCZK45ge7rHqJv8PRX8qjAg1DRI00gTjLVl9u3gsPgZtHdXtrPTrHB3lvRNsHa5jWTAJiPLAfLp+8Kn/phV6J+xnCpP8z2OQ0AC/hrHPSNi9zZRtuAigoaEuSRCiqt4yDigMVXHv3EXlulbCTSqVYDNyUtWgDOsZLj9cxC5zhz7aaaYIGJf09k+jUsor5k97VSntUqyRYMSkawuqxMsNAQf1uafa5tsgMx/cxa9ZCSy/KAxx/X16BfZzXBiQU0wliNfTf3GSuQvVJJs0N1QUHUNn+MOkGEDItkZ4rIXV+ga7tqYcQnInoYvA+C55AEu4t13HK2eBtXAxW16V/SQ/x6o/rnVo/ffuaiJy5bJifJaAFAHb2OkMOlv8nSbvBuaYDcQb76QZN0IcJDsh1w7aFKAAd7/t40Q/73QspzHckhIv8DtKSVZ5DZkPCw54Dl7WtaMI9cr6AdT3OBdSpEIdgECPUsd3rzcwYt7T2/IWQbirxvO8LWI3Z4yzefO2Z/nM1oxIDRnnGA0ApcSR0n1JUQSekpMwT2OPNi2kaubPs8dLk4tGUYxEUTmi0/CCqYdzzYBximGS5y6h6j8Z7QaTVma96pjlMcuwycGTdyncmql3zcwv8tAXdoYrG9m+29XPk+HG1OeH3MbqCk1lffMi7NPMUx8TlXLxrJknVLvOLJpEHXfPA26F+fAdWZzMg9xXoFI+3V/Su964WhSrHc3AmSFFMlv6GZUuGQDvdEFiyxxp1hkeH07Uj6defYXAJbt8R5qdijxUR2hIRzwSKoFOlK59dr1d0oIudWCFGnyP2tg3MOSWGor9aZf9f8mhGSrZ7bN9Buf0k9qaiUnRtZp3YS0QrUe9SSeYpV6EVJMeOPdTEjB5zE+MCCOzklDAK5tHyDOpRJ92S/nNIP4A3UJCTOcU3GJ6ZR1Om2Y8LPfyqBBCtscG46YMt5cOMBTswoMXP30bAH4rIlgO28223bzLPLGk/ljyEhs74ILyT1uTt8gUg1CIdYi2wId2voeDx+PkRyRRNVvdnad6NymNJzaSbikY+JB/geHuaWP7Odi+yp/qPD3/oWpDqRWY0VQdjzkifqfwtT/G9ftqWpCtSROL9LuCC+SdjvKscDSZUITdeZBjxZCZi2E/x6JNJMKghIsudPnrIqEKOo0IBAWzqKEOkvREk3lF/O/jBJDq+6GaCxRizstSR+7vZrXObzos1q6niiyDZlOTHmaCBz/GrqCRcn6E50jJPdXqPuDiseSGSz6ZOLbvXbgySH6tmAGxr2vkIs97b1dfZRHCBkLvR/ruhwG0wYL3DFYzMfQn/OtZ62fItkLtYmpzOrsXKpwXxvY3Z7p5YR8c8g7D0R3d7O8s4XZOCfZvR9Boz/WB/cc6s0q8lgrQ7GHFOE4a4BEmtepGhDI7QSOwt+IOUYUqPVl9DYV3Jn7YgVLeagyDLGu9f8Yu4twffLWhVCVWJLLOHlzE2GHCYK495gxkG4m+GZZWOpeb+Geh2IqO8B9IQAHq762lE5skwM6pO1ykkRaVvADSark= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: d5a40b1c-8751-4e51-fc54-08d9ec4e4eb8 X-MS-Exchange-CrossTenant-AuthSource: AS8PR04MB8198.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Feb 2022 04:32:12.6049 (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: qzjUK2/+UWCNLORbMe9+zH6jijdyp2cBy6vGkf18xeTLhJZHXsN6puIc5IoVi8Ro X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8526 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..2a926ca124 100644 --- a/drivers/crypto/dpaa_sec/dpaa_sec.c +++ b/drivers/crypto/dpaa_sec/dpaa_sec.c @@ -27,6 +27,7 @@ #include #include #include +#include #include #include @@ -45,6 +46,17 @@ #include #include +#define DRIVER_DUMP_MODE "drv_dump_mode" + +/* DPAA_SEC_DP_DUMP levels */ +enum dpaa_sec_dump_levels { + DPAA_SEC_DP_NO_DUMP, + DPAA_SEC_DP_ERR_DUMP, + DPAA_SEC_DP_FULL_DUMP +}; + +uint8_t dpaa_sec_dp_dump = DPAA_SEC_DP_ERR_DUMP; + uint8_t dpaa_cryptodev_driver_id; static inline void @@ -649,6 +661,139 @@ dpaa_sec_prep_cdb(dpaa_sec_session *ses) return 0; } +static void +dpaa_sec_dump(struct dpaa_sec_op_ctx *ctx, struct dpaa_sec_qp *qp) +{ + struct dpaa_sec_job *job = &ctx->job; + struct rte_crypto_op *op = ctx->op; + dpaa_sec_session *sess = NULL; + struct sec_cdb c_cdb, *cdb; + uint8_t bufsize; + struct rte_crypto_sym_op *sym_op; + struct qm_sg_entry sg[2]; + + if (op->sess_type == RTE_CRYPTO_OP_WITH_SESSION) + sess = (dpaa_sec_session *) + get_sym_session_private_data( + op->sym->session, + dpaa_cryptodev_driver_id); +#ifdef RTE_LIBRTE_SECURITY + else if (op->sess_type == RTE_CRYPTO_OP_SECURITY_SESSION) + sess = (dpaa_sec_session *) + get_sec_session_private_data( + op->sym->sec_session); +#endif + if (sess == NULL) { + printf("session is NULL\n"); + goto mbuf_dump; + } + + cdb = &sess->cdb; + rte_memcpy(&c_cdb, cdb, sizeof(struct sec_cdb)); +#ifdef RTE_LIBRTE_SECURITY + printf("\nsession protocol type = %d\n", sess->proto_alg); +#endif + printf("\n****************************************\n" + "session params:\n\tContext type:\t%d\n\tDirection:\t%s\n" + "\tCipher alg:\t%d\n\tAuth alg:\t%d\n\tAead alg:\t%d\n" + "\tCipher key len:\t%"PRIu64"\n\tCipher alg:\t%d\n" + "\tCipher algmode:\t%d\n", sess->ctxt, + (sess->dir == DIR_ENC) ? "DIR_ENC" : "DIR_DEC", + sess->cipher_alg, sess->auth_alg, sess->aead_alg, + sess->cipher_key.length, sess->cipher_key.alg, + sess->cipher_key.algmode); + rte_hexdump(stdout, "cipher key", sess->cipher_key.data, + sess->cipher_key.length); + rte_hexdump(stdout, "auth key", sess->auth_key.data, + sess->auth_key.length); + printf("\tAuth key len:\t%"PRIu64"\n\tAuth alg:\t%d\n" + "\tAuth algmode:\t%d\n\tIV len:\t\t%d\n\tIV offset:\t%d\n" + "\tdigest length:\t%d\n\tauth only len:\t\t%d\n" + "\taead cipher text:\t%d\n", + sess->auth_key.length, sess->auth_key.alg, + sess->auth_key.algmode, + sess->iv.length, sess->iv.offset, + sess->digest_length, sess->auth_only_len, + sess->auth_cipher_text); +#ifdef RTE_LIBRTE_SECURITY + printf("PDCP session params:\n" + "\tDomain:\t\t%d\n\tBearer:\t\t%d\n\tpkt_dir:\t%d\n\thfn_ovd:" + "\t%d\n\tsn_size:\t%d\n\tsdap_enabled:\t%d\n\thfn_ovd_offset:" + "\t%d\n\thfn:\t\t%d\n" + "\thfn_threshold:\t0x%x\n", sess->pdcp.domain, + sess->pdcp.bearer, sess->pdcp.pkt_dir, sess->pdcp.hfn_ovd, + sess->pdcp.sn_size, sess->pdcp.sdap_enabled, + sess->pdcp.hfn_ovd_offset, sess->pdcp.hfn, + sess->pdcp.hfn_threshold); +#endif + c_cdb.sh_hdr.hi.word = rte_be_to_cpu_32(c_cdb.sh_hdr.hi.word); + c_cdb.sh_hdr.lo.word = rte_be_to_cpu_32(c_cdb.sh_hdr.lo.word); + bufsize = c_cdb.sh_hdr.hi.field.idlen; + + printf("cdb = %p\n\n", cdb); + printf("Descriptor size = %d\n", bufsize); + int m; + for (m = 0; m < bufsize; m++) + printf("0x%x\n", rte_be_to_cpu_32(c_cdb.sh_desc[m])); + + printf("\n"); +mbuf_dump: + sym_op = op->sym; + if (sym_op->m_src) { + printf("Source mbuf:\n"); + rte_pktmbuf_dump(stdout, sym_op->m_src, + sym_op->m_src->data_len); + } + if (sym_op->m_dst) { + printf("Destination mbuf:\n"); + rte_pktmbuf_dump(stdout, sym_op->m_dst, + sym_op->m_dst->data_len); + } + + printf("Session address = %p\ncipher offset: %d, length: %d\n" + "auth offset: %d, length: %d\n aead offset: %d, length: %d\n", + sym_op->session, sym_op->cipher.data.offset, + sym_op->cipher.data.length, + sym_op->auth.data.offset, sym_op->auth.data.length, + sym_op->aead.data.offset, sym_op->aead.data.length); + printf("\n"); + + printf("******************************************************\n"); + printf("ctx info:\n"); + printf("job->sg[0] output info:\n"); + memcpy(&sg[0], &job->sg[0], sizeof(sg[0])); + printf("\taddr = %"PRIx64",\n\tlen = %d,\n\tfinal = %d,\n\textention = %d" + "\n\tbpid = %d\n\toffset = %d\n", + (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 = %"PRIx64",\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);