From patchwork Tue Apr 30 20:21:40 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Boyer X-Patchwork-Id: 139752 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 A42FC43F56; Tue, 30 Apr 2024 22:22:42 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 1494540633; Tue, 30 Apr 2024 22:22:18 +0200 (CEST) Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2077.outbound.protection.outlook.com [40.107.92.77]) by mails.dpdk.org (Postfix) with ESMTP id 92C1D402BD for ; Tue, 30 Apr 2024 22:22:11 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Q5st9Czv+HY7GrBvLg8W6lqkG3mIM3VwjKfdGEGjEaK/Qj4RaW/l6YUW09bNkmyxJ/SLKuA3pC/lx+qg3FpwcXopZKk77YJYKviy8kJKMdaC/aKxgYV0D05ZMc5e86EHNByOuRqlJuo0bXr4FpJ745s9akO0BseLx17sqzSYmyZXuHtcghc2axBYIRcGJDVgPQ0NpngSDyrMvRgXEYoyiFNp3YIrj2FjM2jwPYepcKV74Xovp/46DmGzczeF0I5WMXESo0G4PTXSpzTgoCeI87mRMfFMvqJfNtZ3svKeHFfr3RuQvsj6blbsbDTJZR7Yr4ncZLWJI5ujVt6MDhKkbA== 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=4ozbMOEAMWUHf+qtBbxSmnCAnS9xoC0yrVgZIgMs1dk=; b=hhMFNvgj3wVthRKFvtjKoUL4TbSXMpRHMHQ5zowap8z9k58dYOJbpUR7/luQvTf7DsCfPoXF6Nr3RGEdLISl7htJxuc9faG79E9/T8paquJvf7dThlsxpvfm7MlmwQ3Ysc2WWfUOQtgVdaer3vYybJ0g5lST5rGePrbtL/e+qQpkWQUk/ePi7JCAGlAEtpgUR0Z1iYWwKET0u+KXIOt0FvHVdbR6oUunCywCaEwhrh9SWczxYGAdv87+ZpuSMCtWtYyJ+ldfPGKLBsGoMwxMSfqtu9zaHsXMltzO+INUClH4TbDzi/2vm8NjxtSxoW0hwmrbi6DEjtYVfl4VwMTWqQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=dpdk.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=4ozbMOEAMWUHf+qtBbxSmnCAnS9xoC0yrVgZIgMs1dk=; b=uJwARqMs2hDxMQsxSDMYTYvoJR69O3MABFSSNcET9Rku+Q2SiuMANKE1k+sSHspNILuHl048Scn/sYPt6QbgMqiOriM9uyx+o9dpPFokjqyny0nb+3RYhV01vNgYKI0gdyTQ4E0vKC604F18i4KHW/Ekh+urkoP5c/92GJVC0tU= Received: from SA1P222CA0193.NAMP222.PROD.OUTLOOK.COM (2603:10b6:806:3c4::10) by DM4PR12MB6590.namprd12.prod.outlook.com (2603:10b6:8:8f::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7519.35; Tue, 30 Apr 2024 20:22:09 +0000 Received: from SN1PEPF0002636A.namprd02.prod.outlook.com (2603:10b6:806:3c4:cafe::90) by SA1P222CA0193.outlook.office365.com (2603:10b6:806:3c4::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7519.34 via Frontend Transport; Tue, 30 Apr 2024 20:22:09 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by SN1PEPF0002636A.mail.protection.outlook.com (10.167.241.135) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7544.18 via Frontend Transport; Tue, 30 Apr 2024 20:22:09 +0000 Received: from driver-dev1.pensando.io (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Tue, 30 Apr 2024 15:22:08 -0500 From: Andrew Boyer To: CC: Andrew Boyer Subject: [PATCH v2 5/9] crypto/ionic: add capabilities and basic ops Date: Tue, 30 Apr 2024 13:21:40 -0700 Message-ID: <20240430202144.49899-6-andrew.boyer@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20240430202144.49899-1-andrew.boyer@amd.com> References: <20240419195310.21432-1-andrew.boyer@amd.com> <20240430202144.49899-1-andrew.boyer@amd.com> MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN1PEPF0002636A:EE_|DM4PR12MB6590:EE_ X-MS-Office365-Filtering-Correlation-Id: 0ab6c452-085a-471a-c1a3-08dc6953363b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230031|36860700004|1800799015|82310400014|376005; X-Microsoft-Antispam-Message-Info: 2XpErIGzY7W8aoo9RkeN5WjV0Tz7WG9XjIwazjQmymuDgKMyzS3nXsfgQN80i4J0nmCkvXezuhoWRbbFaH0LoT2IG3cfNxzbaF8vilwyfTMX0R3NDMbtTaq/oHQQOZOOgAo/43Bx19PJanGNrFVF2zgWItKKWBCBWHi5mh7MoqGZW8MmQ5XhGP07eBaeMjosCX0tB5hnHVpuXBm17OWWuV5B4NV4r/BPry5jxyBC5Hltgly0BJG431MRMu8Nx1tIG++12MgWohHgSsiCDftKgZoSDOH7Vo1e8RxSWMZYW7L9iydY8ZpgP6b9bUVZUoNXm+/YrGX+D9kVcYU96rk1d5o5fEAlgDhqq3C5dbmw02weCd93fOU58L1hHtj2+wgK7Ewt+bk5jx/4l/EQEvMEgKa5dg/aunMB6DcLR+QH5CQEjdKqT0jnL2rXNd3NKZVNFVwfhJUy3iFuEe3j01Nc876GnKgUTLbzR3FdnW8qnw1AtbubpepoXowXMkzIVWzcrnLIa4IBtKjx2us12EoVd9npt5dFR/nw5BgabCa1rx3nqKJiniwNnQGTl1H+M9OrZ7SCcLUrgfZvP+StFSkzhVLqTQBOeiDgSbzN8VfFxxTMs2NCmw0FT3n1Nnutf6nYzpGj6co1CsiOA6vP9/7k64VegewwM53WDolIaKGoNmOyiRysNy4d6WbAN7V7i5DusOG5FTIFoqjx7wIOubsv4K7Hg3xLuTuXNRPXKjoad4HxgLwh/VDP7Lv0TqcpTUI0QjhG0IeiLKRHkze/5l0lJgso193in7JROXVztbLtucgoWsbToCwuZYvNNeKoiMtMYZJUn0Pq/970gjwa86HWH+1JJ9UB5piDrzG5ifas3VDFlp9CDar64lUVQ/lX13U92KGGDwg2PZtoaO5b1JviHdEx6SDJ+3NqitI97hKyAnWdcuG48mUnoFU51H5mFdIMU4YZdOEg+Gh+LCHMLaKBLUVKIdm1vxDyXp5c6bmfgYEJAEMwElAnOE8IDpUiGZjbE1YXNqYTPsbAK6UvVVpM0QG6BqwKiT8+NfTVu0uUSwNCQORTa6tGUEHzIDLob7cYfdFtqdAWGCzUpy1uDVdiqV9bypyUIwXHOCc0DxSdBz9i3C37AVEa04tQLGIwHm7GusE75NnQNA2JdU9xSo7kHn10rE3YM5rRzGT30eVwiiA8OfR3Pn82o+EnRlbH7ZhRK4gzuSr1Ao60/WnzrRVe5mG9/XkWJuYP5xuIRbFQPs8iTEPBQABqAI38MfrYAQG1eFhVQj3AWH8sEt4QYWw70QSPmLd6yEw5VIr8HbD5lAEMQqCed7hFXNhGOlQs8pLkP6ih1g0cajZDRV9tjakuZnqKNDIdmyc6jAY+pvKHEa4= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:SATLEXMB04.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230031)(36860700004)(1800799015)(82310400014)(376005); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2024 20:22:09.2230 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0ab6c452-085a-471a-c1a3-08dc6953363b X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SN1PEPF0002636A.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB6590 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 This exposes the supported capabilities to the stack. Signed-off-by: Andrew Boyer --- drivers/crypto/ionic/ionic_crypto.h | 3 ++ drivers/crypto/ionic/ionic_crypto_caps.c | 25 +++++++++ drivers/crypto/ionic/ionic_crypto_main.c | 8 +++ drivers/crypto/ionic/ionic_crypto_ops.c | 66 ++++++++++++++++++++++++ drivers/crypto/ionic/meson.build | 2 + 5 files changed, 104 insertions(+) create mode 100644 drivers/crypto/ionic/ionic_crypto_caps.c create mode 100644 drivers/crypto/ionic/ionic_crypto_ops.c diff --git a/drivers/crypto/ionic/ionic_crypto.h b/drivers/crypto/ionic/ionic_crypto.h index 065e1bd826..f487768c10 100644 --- a/drivers/crypto/ionic/ionic_crypto.h +++ b/drivers/crypto/ionic/ionic_crypto.h @@ -34,6 +34,8 @@ extern int iocpt_logtype; #define IOCPT_PRINT_CALL() IOCPT_PRINT(DEBUG, " >>") +const struct rte_cryptodev_capabilities *iocpt_get_caps(uint64_t flags); + static inline void iocpt_struct_size_checks(void) { RTE_BUILD_BUG_ON(sizeof(struct ionic_doorbell) != 8); @@ -227,6 +229,7 @@ int iocpt_probe(void *bus_dev, struct rte_device *rte_dev, int iocpt_remove(struct rte_device *rte_dev); void iocpt_configure(struct iocpt_dev *dev); +int iocpt_assign_ops(struct rte_cryptodev *cdev); void iocpt_deinit(struct iocpt_dev *dev); int iocpt_dev_identify(struct iocpt_dev *dev); diff --git a/drivers/crypto/ionic/ionic_crypto_caps.c b/drivers/crypto/ionic/ionic_crypto_caps.c new file mode 100644 index 0000000000..c22681fabc --- /dev/null +++ b/drivers/crypto/ionic/ionic_crypto_caps.c @@ -0,0 +1,25 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright 2021-2024 Advanced Micro Devices, Inc. + */ + +#include + +#include "ionic_crypto.h" + +static const struct rte_cryptodev_capabilities iocpt_sym_caps[] = { + RTE_CRYPTODEV_END_OF_CAPABILITIES_LIST() +}; + +static const struct rte_cryptodev_capabilities iocpt_asym_caps[] = { + /* None */ + RTE_CRYPTODEV_END_OF_CAPABILITIES_LIST() +}; + +const struct rte_cryptodev_capabilities * +iocpt_get_caps(uint64_t flags) +{ + if (flags & RTE_CRYPTODEV_FF_ASYMMETRIC_CRYPTO) + return iocpt_asym_caps; + else + return iocpt_sym_caps; +} diff --git a/drivers/crypto/ionic/ionic_crypto_main.c b/drivers/crypto/ionic/ionic_crypto_main.c index 8d4ee7f29f..3ff2d51950 100644 --- a/drivers/crypto/ionic/ionic_crypto_main.c +++ b/drivers/crypto/ionic/ionic_crypto_main.c @@ -505,8 +505,16 @@ iocpt_probe(void *bus_dev, struct rte_device *rte_dev, goto err_free_objs; } + err = iocpt_assign_ops(cdev); + if (err != 0) { + IOCPT_PRINT(ERR, "Failed to configure opts"); + goto err_deinit_dev; + } + return 0; +err_deinit_dev: + iocpt_deinit(dev); err_free_objs: iocpt_free_objs(dev); err_destroy_crypto_dev: diff --git a/drivers/crypto/ionic/ionic_crypto_ops.c b/drivers/crypto/ionic/ionic_crypto_ops.c new file mode 100644 index 0000000000..74a6ce56ea --- /dev/null +++ b/drivers/crypto/ionic/ionic_crypto_ops.c @@ -0,0 +1,66 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright 2021-2024 Advanced Micro Devices, Inc. + */ + +#include +#include +#include +#include +#include + +#include "ionic_crypto.h" + +static int +iocpt_op_config(struct rte_cryptodev *cdev, + struct rte_cryptodev_config *config __rte_unused) +{ + struct iocpt_dev *dev = cdev->data->dev_private; + + iocpt_configure(dev); + + return 0; +} + +static int +iocpt_op_close(struct rte_cryptodev *cdev) +{ + struct iocpt_dev *dev = cdev->data->dev_private; + + iocpt_deinit(dev); + + return 0; +} + +static void +iocpt_op_info_get(struct rte_cryptodev *cdev, struct rte_cryptodev_info *info) +{ + struct iocpt_dev *dev = cdev->data->dev_private; + + if (info == NULL) + return; + + info->max_nb_queue_pairs = dev->max_qps; + info->feature_flags = dev->features; + info->capabilities = iocpt_get_caps(info->feature_flags); + info->sym.max_nb_sessions = dev->max_sessions; + info->driver_id = dev->driver_id; + info->min_mbuf_headroom_req = 0; + info->min_mbuf_tailroom_req = 0; +} + +static struct rte_cryptodev_ops iocpt_ops = { + .dev_configure = iocpt_op_config, + .dev_close = iocpt_op_close, + .dev_infos_get = iocpt_op_info_get, +}; + +int +iocpt_assign_ops(struct rte_cryptodev *cdev) +{ + struct iocpt_dev *dev = cdev->data->dev_private; + + cdev->dev_ops = &iocpt_ops; + cdev->feature_flags = dev->features; + + return 0; +} diff --git a/drivers/crypto/ionic/meson.build b/drivers/crypto/ionic/meson.build index a6e0a1d415..b63428fa9b 100644 --- a/drivers/crypto/ionic/meson.build +++ b/drivers/crypto/ionic/meson.build @@ -5,8 +5,10 @@ deps += ['bus_vdev'] deps += ['common_ionic'] sources = files( + 'ionic_crypto_caps.c', 'ionic_crypto_cmds.c', 'ionic_crypto_main.c', + 'ionic_crypto_ops.c', 'ionic_crypto_vdev.c', ) name = 'ionic_crypto'