From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 40381A0C4A; Fri, 16 Jul 2021 12:41:39 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id BAF1B4067B; Fri, 16 Jul 2021 12:41:38 +0200 (CEST) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2076.outbound.protection.outlook.com [40.107.244.76]) by mails.dpdk.org (Postfix) with ESMTP id 5F3B640151 for ; Fri, 16 Jul 2021 12:41:36 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=i/ag/leSF79radgO1gLqmm9YOza0JdBrahuLnLrAL384ZhmqbzTdxQwUKQ7TVUgqO4NM3AdrW/wNKuLwMvXTnNOP4cGUqLsBEY1Rkypd+JOX67qa4i27Tqg1wFQI7/VVb4ng2D1YoBV6sTBeRJpMjLJgtufMxF2f3oJ+qwDsOoUj8928sxVzVObPrE//gsSD70FG0lRHZnfEBqoCVFQtzWItsoAlCT7+wcBDbkVuAFVV/XH0wE/ydZjFFmUHnG20OI/BO1h6XwHTLbBgPaytE7q3RWMBakCFadLthc4fXfdG/7gHAtbA5vTxz/wTEt44MUpJi0tK8Ti1VucNuVaHqQ== 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-SenderADCheck; bh=UabeBxbY/tJp4cKCuq32FTmKYH4jD1+2u7NszBIE2I8=; b=iM6XzeYQAzwIKod2zRPqFIJEGUv8dQQ9dDa8jc3XS2C81AvXWg9n38lIWwR8UU8NwzFp0OooSJfUeaOg3L3nhVpZ43bTmol0KIgKLEyBf3Zrtkh74Z9OHe5hEdOaENUN6VABkEFOcbsaSZF0OPpIB5ip6cE/9gVAHuNOj+AZtNSWVkxXxla3ngd+XBrVJeROt2zX93W12BcZzATp3+TL22h9gKBXP6gttjTCWyCirktfRXsagLyjJyxcSFEOP1iApU4k/+RQCcKy7Ah24tZqIOp3Eoa/y9faRSUNEqSOJXIag4mjr//Xa6WIo6ZgT/hcUG0theQflg7BuWa54CG2JA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none 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=UabeBxbY/tJp4cKCuq32FTmKYH4jD1+2u7NszBIE2I8=; b=Qz485Im2o0ZHoPibNWkqe4qyjWQX/TQUFNnfREvzruoSlkgZbSxcd2qAOwgRrWUNPIkhGIN7GJvHYPk+ZS02C2AZcZIOlwdtrhTLRrp2UZ4SGlIK/g0gt6i8mFlEqeoLPkKajVNEBdE/Sm1eVdhzBQxwXKOsKBmPxilbsaG5+x8= Authentication-Results: dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; dmarc=none action=none header.from=amd.com; Received: from BYAPR12MB2821.namprd12.prod.outlook.com (2603:10b6:a03:9b::30) by BYAPR12MB3333.namprd12.prod.outlook.com (2603:10b6:a03:a9::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4331.21; Fri, 16 Jul 2021 10:41:31 +0000 Received: from BYAPR12MB2821.namprd12.prod.outlook.com ([fe80::7d70:4f93:e25e:ebf4]) by BYAPR12MB2821.namprd12.prod.outlook.com ([fe80::7d70:4f93:e25e:ebf4%5]) with mapi id 15.20.4308.027; Fri, 16 Jul 2021 10:41:31 +0000 From: asomalap@amd.com To: dev@dpdk.org Date: Fri, 16 Jul 2021 16:11:10 +0530 Message-Id: <20210716104110.3445921-1-asomalap@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210716084704.3403712-1-asomalap@amd.com> References: <20210716084704.3403712-1-asomalap@amd.com> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: MA1PR01CA0151.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a00:71::21) To BYAPR12MB2821.namprd12.prod.outlook.com (2603:10b6:a03:9b::30) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from cae-Wallaby.amd.com (165.204.157.251) by MA1PR01CA0151.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a00:71::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4331.22 via Frontend Transport; Fri, 16 Jul 2021 10:41:30 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 546a53cd-487e-4392-8878-08d9484645f7 X-MS-TrafficTypeDiagnostic: BYAPR12MB3333: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:446; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: plAo3Te+tOaqXfMwQXAqjXrr570hWfTadvI8BXSw3E8X186OibUHOW2Q1ZMlqdOG4zXC9QmZp5scWIZPjFHElQY7zurpmqQtBHq4CSsdxcr0CC97GGyZyXRr/nuPJALe6XFbQEjHLiVir0yzCVYTMf/x+EyI8EHex7cEAQALxzQKtW+U0A1lBOdCfMc0GUyiXMAXqiANb0l44Ja7YP3+jrEw2rNFlEVFYpHehM4FeAa+c/aaLHzww9gnr27oX63E56+bDb6mpbxxONRdRqAEH7LNY0EB5mGD1G3XhTfTpKV3eH36EXCMoLoAOedE3kYl0qh3zA/bUnH/qgF2WO0AX7nzj1S9GmWlEtYG+DXNP1MUFDXKM3HVwWZIC5yzCsVykF5DFE51YVWlThqdLQtrrV+F01X6JNMnDlYe08YjFu0K52+ZxjwiHVm8ITDeCAEDp6XBig0l5ZKyQujqKPrClKKaZbvztA1k0ssp+DpQUSsJMj2O53MRRzeFeMiTZiSw6XYtKs6vhWYBz6r7o+b/afKXlanY+FUyi+NlMrj5L4oyj9n7GBxr5J7YkwJ655hmXpUDGh1G3GUbM2ax2h3vTY7vFDt1xV7bh1C9y1CeLNENrYGIkc/h5otH5QGrnku99DQRhhqUWT+14qUBJpv2og/K5qNvH/mjd/jXWKQimn6OTaXFrTK9GSijNxeXho2XnCc3rPx9Imrs/OspzJWTZg== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BYAPR12MB2821.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(376002)(396003)(346002)(136003)(39860400002)(26005)(478600001)(66476007)(316002)(66556008)(956004)(186003)(6916009)(2616005)(8936002)(5660300002)(66946007)(52116002)(7696005)(6666004)(36756003)(38100700002)(2906002)(38350700002)(9686003)(6486002)(1076003)(83380400001)(30864003)(8676002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?mWaQO1S4z6145tOcXuuxpe/IgDF4hRM3aRRFNozxeiGdtyj/UNQoSlkgVn2Z?= =?us-ascii?Q?sJblXlqg0tPnAMeqXvHMrIpd89bYNs3KgbsEFrMU4yU5ArJHlFm8Z2dip/Dl?= =?us-ascii?Q?AaSYO6yaaytN6qVf+5IGNff6zqb0NCeh46AvEfMNjPOyZEEBknr8Emz4a26C?= =?us-ascii?Q?jLOoEGrdrbxow9PamtsnM8vDr0O/DB1f/kR1dD/AztlqCGLCuxtwhAB0lCQ2?= =?us-ascii?Q?/FBf+2M0OGJIvwK5bSJ7knONp1j7fN7EfyC1ItFQ3lujkPUnglCfRonNKDTT?= =?us-ascii?Q?VW1CkRxw76e7UsjjXf8l0ivbYqcnrHvqQNfkXS90AtfpWosED2Cwd1RvJ+M8?= =?us-ascii?Q?+HNIWvpNTDuWrwebfYWIQhkySkmnrbhwRp2CDSi64G3A8MwU2q5ipOmCSbVP?= =?us-ascii?Q?uOsq0jN+sCLp1uNAl73YbsIEne37RpbjMvYFXj+q0tR345VzV2InTaPUo4U6?= =?us-ascii?Q?tLOq2HD1nVPvCqVyvRmLEOjl/lf1RE9zjh6KCsFcN35NqFvgvW5JyDcsgzex?= =?us-ascii?Q?hezBAVUe+lG1rYlm3uKm/fatIPACHH6xxB1gKV5+Hp7gTKmSdI1sC+0zg51q?= =?us-ascii?Q?dBqBeo1Q5NRV0MjoRQh7/TsEJ/WK+zLVfuahSj/U4tLiRduIpZ1aOXe5JP9C?= =?us-ascii?Q?DSsxkiX/zFT3hJSqYh2668fYXHaKoZkMw2bVZDRc3FWtKEFr7ll59wo+ev5v?= =?us-ascii?Q?QZD1jfsbQqn1b5N2ykWDas7CAHCeVH4npKIq2nMEt/xrcS16tT0Ov2u9WWS3?= =?us-ascii?Q?oxgeAYaToaLKUmcXDDo/fgNyPHMEw6Mo80l+8ZStd8j5j8y34dQvnn0dbID4?= =?us-ascii?Q?mSlkUpUkcUvFkYHCDGfQi96aTPQPk2RVlYe8h1d4iilt0yxkqUBPHsIL3xZj?= =?us-ascii?Q?OXm7fYHlV3+NXwUIhAFxzzYGS8DlbGW0zxzyY/8G0MbRgc2IHyxcwv97qDcN?= =?us-ascii?Q?CJ+lllj1r7m6HyZnuUtREZK/QK0nH2wbc95ch2ZJpqrBatkqJYN9gaFBQKO8?= =?us-ascii?Q?8j1PInbYlpILpT7MqoDTv0SmmFMf7289BVuI56FncIe/9fk5kOiHSGgcAE0y?= =?us-ascii?Q?JQltbae8jLsZkJ7TpPmP8D95s8XCZMu8FQQ6C9gTK6JDoPRqjPS1iuBWrh9g?= =?us-ascii?Q?TMeFKHQ4gwy5FvkaEhTtZBHSd3ijzwDX8A+GoSLgoJhfhan2czwkwEJ1yb9l?= =?us-ascii?Q?SdnKVYuGMp8DNR6L9sGTNnvYFIa7uGF57+mZtgrU2AMOKb9yyrFGD5S8CoQe?= =?us-ascii?Q?uawGTjfilcMebmQeyJuZG+6enLPvy9AM89kqJoOBpzOT9eFTnbFoZLT92jHi?= =?us-ascii?Q?lLFTzR450pIeG22QveSfeyBA?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 546a53cd-487e-4392-8878-08d9484645f7 X-MS-Exchange-CrossTenant-AuthSource: BYAPR12MB2821.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jul 2021 10:41:31.2554 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: WjeEyHBGSlLIeR8oKwD26VHAVeOw6z6j7PW4CPjLoakXRtw8FCJ/5fahj5uNSBEByfqko8TPBFWQ+AHGiK6/CQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR12MB3333 Subject: [dpdk-dev] [PATCH v2] crypto/ccp: moving vdev to PCI driver X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Amaranath Somalapuram drop all the code duplicating the PCI bus driver develped for Enable IOMMU in vdev. Signed-off-by: Amaranath Somalapuram --- drivers/crypto/ccp/ccp_dev.c | 66 +------------ drivers/crypto/ccp/ccp_dev.h | 3 +- drivers/crypto/ccp/rte_ccp_pmd.c | 158 +++++++------------------------ 3 files changed, 41 insertions(+), 186 deletions(-) diff --git a/drivers/crypto/ccp/ccp_dev.c b/drivers/crypto/ccp/ccp_dev.c index ee6882b8a4..0eb1b0328e 100644 --- a/drivers/crypto/ccp/ccp_dev.c +++ b/drivers/crypto/ccp/ccp_dev.c @@ -650,73 +650,17 @@ is_ccp_device(const char *dirname, } static int -ccp_probe_device(const char *dirname, uint16_t domain, - uint8_t bus, uint8_t devid, - uint8_t function, int ccp_type) +ccp_probe_device(int ccp_type, struct rte_pci_device *pci_dev) { struct ccp_device *ccp_dev = NULL; - struct rte_pci_device *pci; - char filename[PATH_MAX]; - unsigned long tmp; int uio_fd = -1; ccp_dev = rte_zmalloc("ccp_device", sizeof(*ccp_dev), RTE_CACHE_LINE_SIZE); if (ccp_dev == NULL) goto fail; - pci = &(ccp_dev->pci); - - pci->addr.domain = domain; - pci->addr.bus = bus; - pci->addr.devid = devid; - pci->addr.function = function; - - /* get vendor id */ - snprintf(filename, sizeof(filename), "%s/vendor", dirname); - if (ccp_pci_parse_sysfs_value(filename, &tmp) < 0) - goto fail; - pci->id.vendor_id = (uint16_t)tmp; - - /* get device id */ - snprintf(filename, sizeof(filename), "%s/device", dirname); - if (ccp_pci_parse_sysfs_value(filename, &tmp) < 0) - goto fail; - pci->id.device_id = (uint16_t)tmp; - - /* get subsystem_vendor id */ - snprintf(filename, sizeof(filename), "%s/subsystem_vendor", - dirname); - if (ccp_pci_parse_sysfs_value(filename, &tmp) < 0) - goto fail; - pci->id.subsystem_vendor_id = (uint16_t)tmp; - - /* get subsystem_device id */ - snprintf(filename, sizeof(filename), "%s/subsystem_device", - dirname); - if (ccp_pci_parse_sysfs_value(filename, &tmp) < 0) - goto fail; - pci->id.subsystem_device_id = (uint16_t)tmp; - - /* get class_id */ - snprintf(filename, sizeof(filename), "%s/class", - dirname); - if (ccp_pci_parse_sysfs_value(filename, &tmp) < 0) - goto fail; - /* the least 24 bits are valid: class, subclass, program interface */ - pci->id.class_id = (uint32_t)tmp & RTE_CLASS_ANY_ID; - - /* parse resources */ - snprintf(filename, sizeof(filename), "%s/resource", dirname); - if (ccp_pci_parse_sysfs_resource(filename, pci) < 0) - goto fail; - if (iommu_mode == 2) - pci->kdrv = RTE_PCI_KDRV_VFIO; - else if (iommu_mode == 0) - pci->kdrv = RTE_PCI_KDRV_IGB_UIO; - else if (iommu_mode == 1) - pci->kdrv = RTE_PCI_KDRV_UIO_GENERIC; - rte_pci_map_device(pci); + ccp_dev->pci = *pci_dev; /* device is valid, add in list */ if (ccp_add_device(ccp_dev, ccp_type)) { @@ -735,7 +679,8 @@ ccp_probe_device(const char *dirname, uint16_t domain, } int -ccp_probe_devices(const struct rte_pci_id *ccp_id) +ccp_probe_devices(struct rte_pci_device *pci_dev, + const struct rte_pci_id *ccp_id) { int dev_cnt = 0; int ccp_type = 0; @@ -767,8 +712,7 @@ ccp_probe_devices(const struct rte_pci_id *ccp_id) if (is_ccp_device(dirname, ccp_id, &ccp_type)) { printf("CCP : Detected CCP device with ID = 0x%x\n", ccp_id[ccp_type].device_id); - ret = ccp_probe_device(dirname, domain, bus, devid, - function, ccp_type); + ret = ccp_probe_device(ccp_type, pci_dev); if (ret == 0) dev_cnt++; } diff --git a/drivers/crypto/ccp/ccp_dev.h b/drivers/crypto/ccp/ccp_dev.h index 37e04218ce..ca5145c278 100644 --- a/drivers/crypto/ccp/ccp_dev.h +++ b/drivers/crypto/ccp/ccp_dev.h @@ -473,7 +473,8 @@ int ccp_dev_start(struct rte_cryptodev *dev); * @param ccp_id rte_pci_id list for supported CCP devices * @return no. of successfully initialized CCP devices */ -int ccp_probe_devices(const struct rte_pci_id *ccp_id); +int ccp_probe_devices(struct rte_pci_device *pci_dev, + const struct rte_pci_id *ccp_id); /** * allocate a ccp command queue diff --git a/drivers/crypto/ccp/rte_ccp_pmd.c b/drivers/crypto/ccp/rte_ccp_pmd.c index ba379a19f3..ad0bbde1f3 100644 --- a/drivers/crypto/ccp/rte_ccp_pmd.c +++ b/drivers/crypto/ccp/rte_ccp_pmd.c @@ -47,111 +47,6 @@ enum ccp_pmd_auth_opt { CCP_PMD_AUTH_OPT_CPU, }; -/** parse integer from integer argument */ -static int -parse_integer_arg(const char *key __rte_unused, - const char *value, void *extra_args) -{ - int *i = (int *) extra_args; - - *i = atoi(value); - if (*i < 0) { - CCP_LOG_ERR("Argument has to be positive.\n"); - return -EINVAL; - } - - return 0; -} - -/** parse name argument */ -static int -parse_name_arg(const char *key __rte_unused, - const char *value, void *extra_args) -{ - struct rte_cryptodev_pmd_init_params *params = extra_args; - - if (strlen(value) >= RTE_CRYPTODEV_NAME_MAX_LEN - 1) { - CCP_LOG_ERR("Invalid name %s, should be less than " - "%u bytes.\n", value, - RTE_CRYPTODEV_NAME_MAX_LEN - 1); - return -EINVAL; - } - - strncpy(params->name, value, RTE_CRYPTODEV_NAME_MAX_LEN); - - return 0; -} - -/** parse authentication operation option */ -static int -parse_auth_opt_arg(const char *key __rte_unused, - const char *value, void *extra_args) -{ - struct ccp_pmd_init_params *params = extra_args; - int i; - - i = atoi(value); - if (i < CCP_PMD_AUTH_OPT_CCP || i > CCP_PMD_AUTH_OPT_CPU) { - CCP_LOG_ERR("Invalid ccp pmd auth option. " - "0->auth on CCP(default), " - "1->auth on CPU\n"); - return -EINVAL; - } - params->auth_opt = i; - return 0; -} - -static int -ccp_pmd_parse_input_args(struct ccp_pmd_init_params *params, - const char *input_args) -{ - struct rte_kvargs *kvlist = NULL; - int ret = 0; - - if (params == NULL) - return -EINVAL; - - if (input_args) { - kvlist = rte_kvargs_parse(input_args, - ccp_pmd_valid_params); - if (kvlist == NULL) - return -1; - - ret = rte_kvargs_process(kvlist, - CCP_CRYPTODEV_PARAM_MAX_NB_QP, - &parse_integer_arg, - ¶ms->def_p.max_nb_queue_pairs); - if (ret < 0) - goto free_kvlist; - - ret = rte_kvargs_process(kvlist, - CCP_CRYPTODEV_PARAM_SOCKET_ID, - &parse_integer_arg, - ¶ms->def_p.socket_id); - if (ret < 0) - goto free_kvlist; - - ret = rte_kvargs_process(kvlist, - CCP_CRYPTODEV_PARAM_NAME, - &parse_name_arg, - ¶ms->def_p); - if (ret < 0) - goto free_kvlist; - - ret = rte_kvargs_process(kvlist, - CCP_CRYPTODEV_PARAM_AUTH_OPT, - &parse_auth_opt_arg, - params); - if (ret < 0) - goto free_kvlist; - - } - -free_kvlist: - rte_kvargs_free(kvlist); - return ret; -} - static struct ccp_session * get_ccp_session(struct ccp_qp *qp, struct rte_crypto_op *op) { @@ -300,12 +195,21 @@ static struct rte_pci_id ccp_pci_id[] = { /** Remove ccp pmd */ static int -cryptodev_ccp_remove(struct rte_vdev_device *dev) +cryptodev_ccp_remove(struct rte_pci_device *pci_dev) { - const char *name; + char name[RTE_CRYPTODEV_NAME_MAX_LEN]; + struct rte_cryptodev *dev; + + if (pci_dev == NULL) + return -EINVAL; + + rte_pci_device_name(&pci_dev->addr, name, sizeof(name)); + + dev = rte_cryptodev_pmd_get_named_dev(name); + if (dev == NULL) + return -ENODEV; ccp_pmd_init_done = 0; - name = rte_vdev_device_name(dev); rte_free(sha_ctx); if (name == NULL) return -EINVAL; @@ -313,14 +217,15 @@ cryptodev_ccp_remove(struct rte_vdev_device *dev) RTE_LOG(INFO, PMD, "Closing ccp device %s on numa socket %u\n", name, rte_socket_id()); - return 0; + return rte_cryptodev_pmd_destroy(dev); } /** Create crypto device */ static int cryptodev_ccp_create(const char *name, - struct rte_vdev_device *vdev, - struct ccp_pmd_init_params *init_params) + struct rte_pci_device *pci_dev, + struct ccp_pmd_init_params *init_params, + struct rte_pci_driver *pci_drv) { struct rte_cryptodev *dev; struct ccp_private *internals; @@ -330,14 +235,14 @@ cryptodev_ccp_create(const char *name, sizeof(init_params->def_p.name)); dev = rte_cryptodev_pmd_create(init_params->def_p.name, - &vdev->device, + &pci_dev->device, &init_params->def_p); if (dev == NULL) { CCP_LOG_ERR("failed to create cryptodev vdev"); goto init_error; } - cryptodev_cnt = ccp_probe_devices(ccp_pci_id); + cryptodev_cnt = ccp_probe_devices(pci_dev, ccp_pci_id); if (cryptodev_cnt == 0) { CCP_LOG_ERR("failed to detect CCP crypto device"); @@ -345,6 +250,8 @@ cryptodev_ccp_create(const char *name, } printf("CCP : Crypto device count = %d\n", cryptodev_cnt); + dev->device = &pci_dev->device; + dev->device->driver = &pci_drv->driver; dev->driver_id = ccp_cryptodev_driver_id; /* register rx/tx burst functions for data path */ @@ -368,17 +275,18 @@ cryptodev_ccp_create(const char *name, init_error: CCP_LOG_ERR("driver %s: %s() failed", init_params->def_p.name, __func__); - cryptodev_ccp_remove(vdev); + cryptodev_ccp_remove(pci_dev); return -EFAULT; } /** Probe ccp pmd */ static int -cryptodev_ccp_probe(struct rte_vdev_device *vdev) +cryptodev_ccp_probe(struct rte_pci_driver *pci_drv __rte_unused, + struct rte_pci_device *pci_dev) { int rc = 0; - const char *name; + char name[RTE_CRYPTODEV_NAME_MAX_LEN]; struct ccp_pmd_init_params init_params = { .def_p = { "", @@ -388,19 +296,16 @@ cryptodev_ccp_probe(struct rte_vdev_device *vdev) }, .auth_opt = CCP_PMD_AUTH_OPT_CCP, }; - const char *input_args; sha_ctx = (void *)rte_malloc(NULL, SHA512_DIGEST_SIZE, 64); if (ccp_pmd_init_done) { RTE_LOG(INFO, PMD, "CCP PMD already initialized\n"); return -EFAULT; } - name = rte_vdev_device_name(vdev); - if (name == NULL) + rte_pci_device_name(&pci_dev->addr, name, sizeof(name)); + if (name == '\0') return -EINVAL; - input_args = rte_vdev_device_args(vdev); - ccp_pmd_parse_input_args(&init_params, input_args); init_params.def_p.max_nb_queue_pairs = CCP_PMD_MAX_QUEUE_PAIRS; RTE_LOG(INFO, PMD, "Initialising %s on NUMA node %d\n", name, @@ -410,21 +315,26 @@ cryptodev_ccp_probe(struct rte_vdev_device *vdev) RTE_LOG(INFO, PMD, "Authentication offload to %s\n", ((init_params.auth_opt == 0) ? "CCP" : "CPU")); - rc = cryptodev_ccp_create(name, vdev, &init_params); + rte_pci_device_name(&pci_dev->addr, name, sizeof(name)); + + rc = cryptodev_ccp_create(name, pci_dev, &init_params, pci_drv); if (rc) return rc; ccp_pmd_init_done = 1; return 0; } -static struct rte_vdev_driver cryptodev_ccp_pmd_drv = { +static struct rte_pci_driver cryptodev_ccp_pmd_drv = { + .id_table = ccp_pci_id, + .drv_flags = RTE_PCI_DRV_NEED_MAPPING, .probe = cryptodev_ccp_probe, .remove = cryptodev_ccp_remove }; static struct cryptodev_driver ccp_crypto_drv; -RTE_PMD_REGISTER_VDEV(CRYPTODEV_NAME_CCP_PMD, cryptodev_ccp_pmd_drv); +RTE_PMD_REGISTER_PCI(CRYPTODEV_NAME_CCP_PMD, cryptodev_ccp_pmd_drv); +RTE_PMD_REGISTER_KMOD_DEP(CRYPTODEV_NAME_CCP_PMD, "* igb_uio | uio_pci_generic | vfio-pci"); RTE_PMD_REGISTER_PARAM_STRING(CRYPTODEV_NAME_CCP_PMD, "max_nb_queue_pairs= " "socket_id= " -- 2.25.1