get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/95974/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 95974,
    "url": "http://patches.dpdk.org/api/patches/95974/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20210716104908.3449061-1-asomalap@amd.com/",
    "project": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<20210716104908.3449061-1-asomalap@amd.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20210716104908.3449061-1-asomalap@amd.com",
    "date": "2021-07-16T10:49:08",
    "name": "[v3] crypto/ccp: moving vdev to PCI driver",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "7be635f15a3d6231e94e62b38104fc9855b69c0c",
    "submitter": {
        "id": 1439,
        "url": "http://patches.dpdk.org/api/people/1439/?format=api",
        "name": "AMARANATH SOMALAPURAM",
        "email": "asomalap@amd.com"
    },
    "delegate": null,
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20210716104908.3449061-1-asomalap@amd.com/mbox/",
    "series": [
        {
            "id": 17862,
            "url": "http://patches.dpdk.org/api/series/17862/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=17862",
            "date": "2021-07-16T10:49:08",
            "name": "[v3] crypto/ccp: moving vdev to PCI driver",
            "version": 3,
            "mbox": "http://patches.dpdk.org/series/17862/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/95974/comments/",
    "check": "fail",
    "checks": "http://patches.dpdk.org/api/patches/95974/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "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])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 98E89A0C4A;\n\tFri, 16 Jul 2021 12:49:35 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 7A2714067B;\n\tFri, 16 Jul 2021 12:49:35 +0200 (CEST)",
            "from NAM11-DM6-obe.outbound.protection.outlook.com\n (mail-dm6nam11on2060.outbound.protection.outlook.com [40.107.223.60])\n by mails.dpdk.org (Postfix) with ESMTP id 0ECFF40151\n for <dev@dpdk.org>; Fri, 16 Jul 2021 12:49:33 +0200 (CEST)",
            "from BYAPR12MB2821.namprd12.prod.outlook.com (2603:10b6:a03:9b::30)\n by BYAPR12MB2727.namprd12.prod.outlook.com (2603:10b6:a03:71::22)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4331.21; Fri, 16 Jul\n 2021 10:49:30 +0000",
            "from BYAPR12MB2821.namprd12.prod.outlook.com\n ([fe80::7d70:4f93:e25e:ebf4]) by BYAPR12MB2821.namprd12.prod.outlook.com\n ([fe80::7d70:4f93:e25e:ebf4%5]) with mapi id 15.20.4308.027; Fri, 16 Jul 2021\n 10:49:30 +0000",
            "from cae-Wallaby.amd.com (165.204.157.251) by\n MA1PR01CA0164.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a00:71::34) with Microsoft\n SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.20.4331.21 via Frontend Transport; Fri, 16 Jul 2021 10:49:28 +0000"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;\n b=A6M/T3MCvLC92ZKisTgDEc0apeZgz7CzhNMpom2JP3uaEGDh/MO/qKD9bHjTVnCe9PU9kZXXZCAftQoEJnGMAyH7zGPjtkPRY0yeuh7DjPNiGijJMxEN8LJZsyh3suoKsPYnsqj3Pl5rgDC4RF9xd3IMigdpuJfxfZENCSlAXL7AePoLG3nh6L1ubk1CQJeQSQgF74m7Yx61W5lShP8HKyxZB+fVa7WShNc81M+g0p1l9YIwmdaHCKZMK9Fk4j74fbaqBklI4/Xx//XPpJUvtRnhKy/yU4UD2hbhVwZzISQ1wz0gnEBRrEYdDwMk52Yy7B6qCIehbvnhfOpH6hI6Ew==",
        "ARC-Message-Signature": "i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector9901;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=vUbRfvlQm1PpZo0/HdHNA0+kENpff/4ZNPvGoNb9x70=;\n b=nKexoIUOwzLWPgHr+ylI0V9yZMA4DxzpkJLoKnSCmQD4Mpnh+8qKtmEKIgko4DXQDMwj1BKqrxM4A/N5MioboXrGAO+Pgco7/4rb6S5PB79F2eTwhh+oTrQW6n9SmUckerMgbGGlFF0udJQhip7opNaw04oWJnuAmFfkzAAbeaXi/gLBkMHlqkwDEkJdWKnqWsoAIPm2PJvuQTBCgq3JvE0mRKQjNDn6WknsX2y91g/jwF/ExapsGxhHNzHz3jiJLH52eQVWvx+5VPfP0fOr+K2HP/qhxYLcCZzc1JXz2zPsNjNJp3x8G359qrcXXXnadEZBW3+NjekiFPDS6Hh6zA==",
        "ARC-Authentication-Results": "i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass\n header.d=amd.com; arc=none",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=vUbRfvlQm1PpZo0/HdHNA0+kENpff/4ZNPvGoNb9x70=;\n b=ZtK0SP7BsC2YXYeTwh+SEMujsDU0YrDWMrZsBbxD9yiAWHyQzUsWLNVEQ/CSVi+5vaGecRJ2uXbCVAObiSGz0kJtP5PYqTgNXkd/zjJq73M1YYN09GWVDHPFOsO+JGwtWxfvgjq5DIs9o7CkwJy4c4cHaAu8v9xOj4pDAHMlDig=",
        "Authentication-Results": "dpdk.org; dkim=none (message not signed)\n header.d=none;dpdk.org; dmarc=none action=none header.from=amd.com;",
        "From": "asomalap@amd.com",
        "To": "dev@dpdk.org",
        "Date": "Fri, 16 Jul 2021 16:19:08 +0530",
        "Message-Id": "<20210716104908.3449061-1-asomalap@amd.com>",
        "X-Mailer": "git-send-email 2.25.1",
        "In-Reply-To": "<20210716104110.3445921-1-asomalap@amd.com>",
        "References": "<20210716104110.3445921-1-asomalap@amd.com>",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-ClientProxiedBy": "MA1PR01CA0164.INDPRD01.PROD.OUTLOOK.COM\n (2603:1096:a00:71::34) To BYAPR12MB2821.namprd12.prod.outlook.com\n (2603:10b6:a03:9b::30)",
        "MIME-Version": "1.0",
        "X-MS-Exchange-MessageSentRepresentingType": "1",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-Office365-Filtering-Correlation-Id": "eaf9952e-1382-463c-d197-08d948476322",
        "X-MS-TrafficTypeDiagnostic": "BYAPR12MB2727:",
        "X-Microsoft-Antispam-PRVS": "\n <BYAPR12MB2727ACC7A7441DF0EA1659DBF8119@BYAPR12MB2727.namprd12.prod.outlook.com>",
        "X-MS-Oob-TLC-OOBClassifiers": "OLM:446;",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-MS-Exchange-AntiSpam-Relay": "0",
        "X-Microsoft-Antispam": "BCL:0;",
        "X-Microsoft-Antispam-Message-Info": "\n SxlYwm8rSKPA6B198Jqx2jr6NGH5JduPf3WtNfErKIMFK6B2Vf3sfo0XGd6CeDRvc2EIWsf2YmSQSU54SriAJb4cpOg2LFu9VwfOInYS8h3iKSwjg3DI9bG8FqQu2SDpENpSzBJzC4WyZZnSlPdVukAVlr+UVFo/kJHZzeRXTV4Wt1+jHUl1NmbCtqPw/t80kLc3YhKeo+DCXh0Nrsx1/ifmRv1K7sZJLqKq6zzfimc4DAaqY9PwgDSqoPHWcnGur1ZTYqo9J29kKfJ8R79np/+6LtuLWEhk20D8GmXF5J2p0Q7DiRk3NrbygLWPUM2J9NtTYjpFVrq0reacC6t8ee4gXkY/nDUaSVwHblFIKCeUABI1Pqk8nO1oRIfdcNW5A4KRBEwaHmSJjnUOB456DiMsMFSY50BWPWkxp0jYNomNyfNKKgBdegQZoduXYNV3sue4NaqLuVhR2JrkptJydv9niwpjb4Po7bzNVA5BIJmc9hi6Qm4oNNd/0jvrHR7ZBNN/skBpmHWePoVweCd9g8lfIlS0ht6Q0MOsGI3PmevoMGKzCYH9PcnE3dDN1kVy3OHUqX92OtWzRuzTbPMwLWqpDL9iURQrfvfTv92eiqzzCxmwNRf2dLKSDWY6Kza/vYEx83kiVozkt/5XXlfL4j4e1Ljrpx/hs8GosXa/0FC1e37BwYHsMjENPKBw3C+9ctP+PsWTIbxPYB2iyduBAQ==",
        "X-Forefront-Antispam-Report": "CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;\n IPV:NLI; SFV:NSPM; H:BYAPR12MB2821.namprd12.prod.outlook.com; PTR:; CAT:NONE;\n SFS:(4636009)(136003)(346002)(39860400002)(376002)(396003)(366004)(6486002)(478600001)(8676002)(316002)(9686003)(36756003)(6916009)(8936002)(83380400001)(2906002)(52116002)(7696005)(2616005)(1076003)(38100700002)(38350700002)(66476007)(66556008)(186003)(956004)(6666004)(5660300002)(66946007)(30864003)(26005);\n DIR:OUT; SFP:1101;",
        "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1",
        "X-MS-Exchange-AntiSpam-MessageData-0": "\n D4LTjkSl5hE1QsJSCuACMsGDw2RsDNMVE8v/UTP5pPmBcD2ow8Z4zsqd+k4zY1VNkfbhMbnXEBSO8QahzdDCMtOfIy+yIrb0bFRBnKznjzSzRBEmlVdDlAuR0zRob/B2UZ01UreldNSzoC0A+VBwqUPz6JqY5QFFHuV9lXY6g5NTWURsozUYns3KaZEDCUXCfKZV7w7Bzvg3T3rdG4sQeoqJHsaqPzkKBLK40X3OeMSxAfvGS/mNrPrpK+o2piZs/J9Cs0JNr3vwCRAY8oG5KFnAPATNxBSbuUySflq7lcuGIgUuho9gfELJDfilUNe83DSmrXqnHI9DMihFpz73HeRQGQnEZLedvM5uv6IKV5L+v0IoVy/uqMQN7YIIif2SyOnOg1BQpFCw4u7pJBQ/V8m6Oo8vWm5GFidbYU8T8zH1GZPkjYlH/nwPwtSRC6A69bQOABsblBS9hmBWZuxtPDm3DUktpNhDjoJdjknvD17S8PXYmXTkqHOnGIOuJc1iMA2Db2ll48DT40boPhoBl0Y/r9rntrwTfqioJ1ZCkxd+Rk8EFgsFzWBpYTX89k7nGoiBnwJQPU0+zyzWvq6KMVPDJNUjfMNMB9wdnODWMSKtAuPkhFczGtlBWWLM6yRAm9uq+pd+Yki9HHno+oZHjSEt0LOUj3xXNUHSZQG7UG/kfaO8UMk6oR7sw2rhRR8stZVLYclzYmXxzAE3MamwLvC3UAJGkvvcWnkUSnrc/ctGzWS11RNHXIwBZBP3HOb6bqJRIhGEqLk/NPkqsupyCVRP//mhrVxcQKveJkmkFbZ9eorTeSRuQ1a6TrxDPNnZ/3ANR3mFUxcIlzF+d42Afli8cXDzUjW2Aj0qmHGaIyJZ/RkPmPzEjHz3PgHP0adfABaXs/Ris7p1j1Q28p5yc8wOxJKVsIYWhoxiwR71glBbukLqlhjYHQd+zQqgZgpVmr3sKYr7CyqIMocOCzQ40rPaMQJQpD4PV0EeKSiIyIcBMHNgSs4sjYIu+zx3wkipFP9/x6gZLhkIHVJIKBZj2IiYToT6fdnoYaMAquyLkcRI09xDjdqFH2yPf5c7VjuRDEVIhiRpIWsdwPltwz/zunkJmRlbGYdQfvRd9ceDHEWda/IHts+YdAE9omaXlAuJcNT4LIdMVo9mAPZ913gYaf4FkEsdYTiDE7XJGaEgf9iL/4/68BB6FqODK/3wuT7EQ5uzb761+Jx5BE+MMhnrjvrj5oE1AtzMW5Yj+K8a7IyzbIuefpq535QDgTMyVguKjVyaPrfWkQX81ItLXQ5VwVOEEYG312lPL7t9VuERuqQh76NVKst0zhMbOx1WTdtk",
        "X-OriginatorOrg": "amd.com",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n eaf9952e-1382-463c-d197-08d948476322",
        "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:49:30.0985 (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": "\n Q2hovrS9gyXrsAAx+hXFHupOpUlwBg+BbSUf3/f5XaXptdMciD1j7zoF5DiDkGFSf3L/lnjIqbDMuSKJAogCPg==",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "BYAPR12MB2727",
        "Subject": "[dpdk-dev] [PATCH v3] 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 <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "From: Amaranath Somalapuram <Amaranath.Somalapuram@amd.com>\n\ndrop all the code duplicating the PCI bus driver\ndevelped for Enable IOMMU in vdev.\n\nSigned-off-by: Amaranath Somalapuram <Amaranath.Somalapuram@amd.com>\n---\n drivers/crypto/ccp/ccp_dev.c     |  66 +------------\n drivers/crypto/ccp/ccp_dev.h     |   3 +-\n drivers/crypto/ccp/rte_ccp_pmd.c | 158 +++++++------------------------\n 3 files changed, 41 insertions(+), 186 deletions(-)",
    "diff": "diff --git a/drivers/crypto/ccp/ccp_dev.c b/drivers/crypto/ccp/ccp_dev.c\nindex ee6882b8a4..0eb1b0328e 100644\n--- a/drivers/crypto/ccp/ccp_dev.c\n+++ b/drivers/crypto/ccp/ccp_dev.c\n@@ -650,73 +650,17 @@ is_ccp_device(const char *dirname,\n }\n \n static int\n-ccp_probe_device(const char *dirname, uint16_t domain,\n-\t\t uint8_t bus, uint8_t devid,\n-\t\t uint8_t function, int ccp_type)\n+ccp_probe_device(int ccp_type, struct rte_pci_device *pci_dev)\n {\n \tstruct ccp_device *ccp_dev = NULL;\n-\tstruct rte_pci_device *pci;\n-\tchar filename[PATH_MAX];\n-\tunsigned long tmp;\n \tint uio_fd = -1;\n \n \tccp_dev = rte_zmalloc(\"ccp_device\", sizeof(*ccp_dev),\n \t\t\t      RTE_CACHE_LINE_SIZE);\n \tif (ccp_dev == NULL)\n \t\tgoto fail;\n-\tpci = &(ccp_dev->pci);\n-\n-\tpci->addr.domain = domain;\n-\tpci->addr.bus = bus;\n-\tpci->addr.devid = devid;\n-\tpci->addr.function = function;\n-\n-\t/* get vendor id */\n-\tsnprintf(filename, sizeof(filename), \"%s/vendor\", dirname);\n-\tif (ccp_pci_parse_sysfs_value(filename, &tmp) < 0)\n-\t\tgoto fail;\n-\tpci->id.vendor_id = (uint16_t)tmp;\n-\n-\t/* get device id */\n-\tsnprintf(filename, sizeof(filename), \"%s/device\", dirname);\n-\tif (ccp_pci_parse_sysfs_value(filename, &tmp) < 0)\n-\t\tgoto fail;\n-\tpci->id.device_id = (uint16_t)tmp;\n-\n-\t/* get subsystem_vendor id */\n-\tsnprintf(filename, sizeof(filename), \"%s/subsystem_vendor\",\n-\t\t\tdirname);\n-\tif (ccp_pci_parse_sysfs_value(filename, &tmp) < 0)\n-\t\tgoto fail;\n-\tpci->id.subsystem_vendor_id = (uint16_t)tmp;\n-\n-\t/* get subsystem_device id */\n-\tsnprintf(filename, sizeof(filename), \"%s/subsystem_device\",\n-\t\t\tdirname);\n-\tif (ccp_pci_parse_sysfs_value(filename, &tmp) < 0)\n-\t\tgoto fail;\n-\tpci->id.subsystem_device_id = (uint16_t)tmp;\n-\n-\t/* get class_id */\n-\tsnprintf(filename, sizeof(filename), \"%s/class\",\n-\t\t\tdirname);\n-\tif (ccp_pci_parse_sysfs_value(filename, &tmp) < 0)\n-\t\tgoto fail;\n-\t/* the least 24 bits are valid: class, subclass, program interface */\n-\tpci->id.class_id = (uint32_t)tmp & RTE_CLASS_ANY_ID;\n-\n-\t/* parse resources */\n-\tsnprintf(filename, sizeof(filename), \"%s/resource\", dirname);\n-\tif (ccp_pci_parse_sysfs_resource(filename, pci) < 0)\n-\t\tgoto fail;\n-\tif (iommu_mode == 2)\n-\t\tpci->kdrv = RTE_PCI_KDRV_VFIO;\n-\telse if (iommu_mode == 0)\n-\t\tpci->kdrv = RTE_PCI_KDRV_IGB_UIO;\n-\telse if (iommu_mode == 1)\n-\t\tpci->kdrv = RTE_PCI_KDRV_UIO_GENERIC;\n \n-\trte_pci_map_device(pci);\n+\tccp_dev->pci = *pci_dev;\n \n \t/* device is valid, add in list */\n \tif (ccp_add_device(ccp_dev, ccp_type)) {\n@@ -735,7 +679,8 @@ ccp_probe_device(const char *dirname, uint16_t domain,\n }\n \n int\n-ccp_probe_devices(const struct rte_pci_id *ccp_id)\n+ccp_probe_devices(struct rte_pci_device *pci_dev,\n+\t\tconst struct rte_pci_id *ccp_id)\n {\n \tint dev_cnt = 0;\n \tint ccp_type = 0;\n@@ -767,8 +712,7 @@ ccp_probe_devices(const struct rte_pci_id *ccp_id)\n \t\tif (is_ccp_device(dirname, ccp_id, &ccp_type)) {\n \t\t\tprintf(\"CCP : Detected CCP device with ID = 0x%x\\n\",\n \t\t\t       ccp_id[ccp_type].device_id);\n-\t\t\tret = ccp_probe_device(dirname, domain, bus, devid,\n-\t\t\t\t\t       function, ccp_type);\n+\t\t\tret = ccp_probe_device(ccp_type, pci_dev);\n \t\t\tif (ret == 0)\n \t\t\t\tdev_cnt++;\n \t\t}\ndiff --git a/drivers/crypto/ccp/ccp_dev.h b/drivers/crypto/ccp/ccp_dev.h\nindex 37e04218ce..ca5145c278 100644\n--- a/drivers/crypto/ccp/ccp_dev.h\n+++ b/drivers/crypto/ccp/ccp_dev.h\n@@ -473,7 +473,8 @@ int ccp_dev_start(struct rte_cryptodev *dev);\n  * @param ccp_id rte_pci_id list for supported CCP devices\n  * @return no. of successfully initialized CCP devices\n  */\n-int ccp_probe_devices(const struct rte_pci_id *ccp_id);\n+int ccp_probe_devices(struct rte_pci_device *pci_dev,\n+\t\tconst struct rte_pci_id *ccp_id);\n \n /**\n  * allocate a ccp command queue\ndiff --git a/drivers/crypto/ccp/rte_ccp_pmd.c b/drivers/crypto/ccp/rte_ccp_pmd.c\nindex ba379a19f3..84a650d9f5 100644\n--- a/drivers/crypto/ccp/rte_ccp_pmd.c\n+++ b/drivers/crypto/ccp/rte_ccp_pmd.c\n@@ -47,111 +47,6 @@ enum ccp_pmd_auth_opt {\n \tCCP_PMD_AUTH_OPT_CPU,\n };\n \n-/** parse integer from integer argument */\n-static int\n-parse_integer_arg(const char *key __rte_unused,\n-\t\t  const char *value, void *extra_args)\n-{\n-\tint *i = (int *) extra_args;\n-\n-\t*i = atoi(value);\n-\tif (*i < 0) {\n-\t\tCCP_LOG_ERR(\"Argument has to be positive.\\n\");\n-\t\treturn -EINVAL;\n-\t}\n-\n-\treturn 0;\n-}\n-\n-/** parse name argument */\n-static int\n-parse_name_arg(const char *key __rte_unused,\n-\t       const char *value, void *extra_args)\n-{\n-\tstruct rte_cryptodev_pmd_init_params *params = extra_args;\n-\n-\tif (strlen(value) >= RTE_CRYPTODEV_NAME_MAX_LEN - 1) {\n-\t\tCCP_LOG_ERR(\"Invalid name %s, should be less than \"\n-\t\t\t    \"%u bytes.\\n\", value,\n-\t\t\t    RTE_CRYPTODEV_NAME_MAX_LEN - 1);\n-\t\treturn -EINVAL;\n-\t}\n-\n-\tstrncpy(params->name, value, RTE_CRYPTODEV_NAME_MAX_LEN);\n-\n-\treturn 0;\n-}\n-\n-/** parse authentication operation option */\n-static int\n-parse_auth_opt_arg(const char *key __rte_unused,\n-\t\t   const char *value, void *extra_args)\n-{\n-\tstruct ccp_pmd_init_params *params = extra_args;\n-\tint i;\n-\n-\ti = atoi(value);\n-\tif (i < CCP_PMD_AUTH_OPT_CCP || i > CCP_PMD_AUTH_OPT_CPU) {\n-\t\tCCP_LOG_ERR(\"Invalid ccp pmd auth option. \"\n-\t\t\t    \"0->auth on CCP(default), \"\n-\t\t\t    \"1->auth on CPU\\n\");\n-\t\treturn -EINVAL;\n-\t}\n-\tparams->auth_opt = i;\n-\treturn 0;\n-}\n-\n-static int\n-ccp_pmd_parse_input_args(struct ccp_pmd_init_params *params,\n-\t\t\t const char *input_args)\n-{\n-\tstruct rte_kvargs *kvlist = NULL;\n-\tint ret = 0;\n-\n-\tif (params == NULL)\n-\t\treturn -EINVAL;\n-\n-\tif (input_args) {\n-\t\tkvlist = rte_kvargs_parse(input_args,\n-\t\t\t\t\t  ccp_pmd_valid_params);\n-\t\tif (kvlist == NULL)\n-\t\t\treturn -1;\n-\n-\t\tret = rte_kvargs_process(kvlist,\n-\t\t\t\t\t CCP_CRYPTODEV_PARAM_MAX_NB_QP,\n-\t\t\t\t\t &parse_integer_arg,\n-\t\t\t\t\t &params->def_p.max_nb_queue_pairs);\n-\t\tif (ret < 0)\n-\t\t\tgoto free_kvlist;\n-\n-\t\tret = rte_kvargs_process(kvlist,\n-\t\t\t\t\t CCP_CRYPTODEV_PARAM_SOCKET_ID,\n-\t\t\t\t\t &parse_integer_arg,\n-\t\t\t\t\t &params->def_p.socket_id);\n-\t\tif (ret < 0)\n-\t\t\tgoto free_kvlist;\n-\n-\t\tret = rte_kvargs_process(kvlist,\n-\t\t\t\t\t CCP_CRYPTODEV_PARAM_NAME,\n-\t\t\t\t\t &parse_name_arg,\n-\t\t\t\t\t &params->def_p);\n-\t\tif (ret < 0)\n-\t\t\tgoto free_kvlist;\n-\n-\t\tret = rte_kvargs_process(kvlist,\n-\t\t\t\t\t CCP_CRYPTODEV_PARAM_AUTH_OPT,\n-\t\t\t\t\t &parse_auth_opt_arg,\n-\t\t\t\t\t params);\n-\t\tif (ret < 0)\n-\t\t\tgoto free_kvlist;\n-\n-\t}\n-\n-free_kvlist:\n-\trte_kvargs_free(kvlist);\n-\treturn ret;\n-}\n-\n static struct ccp_session *\n get_ccp_session(struct ccp_qp *qp, struct rte_crypto_op *op)\n {\n@@ -300,12 +195,21 @@ static struct rte_pci_id ccp_pci_id[] = {\n \n /** Remove ccp pmd */\n static int\n-cryptodev_ccp_remove(struct rte_vdev_device *dev)\n+cryptodev_ccp_remove(struct rte_pci_device *pci_dev)\n {\n-\tconst char *name;\n+\tchar name[RTE_CRYPTODEV_NAME_MAX_LEN];\n+\tstruct rte_cryptodev *dev;\n+\n+\tif (pci_dev == NULL)\n+\t\treturn -EINVAL;\n+\n+\trte_pci_device_name(&pci_dev->addr, name, sizeof(name));\n+\n+\tdev = rte_cryptodev_pmd_get_named_dev(name);\n+\tif (dev == NULL)\n+\t\treturn -ENODEV;\n \n \tccp_pmd_init_done = 0;\n-\tname = rte_vdev_device_name(dev);\n \trte_free(sha_ctx);\n \tif (name == NULL)\n \t\treturn -EINVAL;\n@@ -313,14 +217,15 @@ cryptodev_ccp_remove(struct rte_vdev_device *dev)\n \tRTE_LOG(INFO, PMD, \"Closing ccp device %s on numa socket %u\\n\",\n \t\t\tname, rte_socket_id());\n \n-\treturn 0;\n+\treturn rte_cryptodev_pmd_destroy(dev);\n }\n \n /** Create crypto device */\n static int\n cryptodev_ccp_create(const char *name,\n-\t\t     struct rte_vdev_device *vdev,\n-\t\t     struct ccp_pmd_init_params *init_params)\n+\t\t     struct rte_pci_device *pci_dev,\n+\t\t     struct ccp_pmd_init_params *init_params,\n+\t\t     struct rte_pci_driver *pci_drv)\n {\n \tstruct rte_cryptodev *dev;\n \tstruct ccp_private *internals;\n@@ -330,14 +235,14 @@ cryptodev_ccp_create(const char *name,\n \t\t\tsizeof(init_params->def_p.name));\n \n \tdev = rte_cryptodev_pmd_create(init_params->def_p.name,\n-\t\t\t\t       &vdev->device,\n+\t\t\t\t       &pci_dev->device,\n \t\t\t\t       &init_params->def_p);\n \tif (dev == NULL) {\n \t\tCCP_LOG_ERR(\"failed to create cryptodev vdev\");\n \t\tgoto init_error;\n \t}\n \n-\tcryptodev_cnt = ccp_probe_devices(ccp_pci_id);\n+\tcryptodev_cnt = ccp_probe_devices(pci_dev, ccp_pci_id);\n \n \tif (cryptodev_cnt == 0) {\n \t\tCCP_LOG_ERR(\"failed to detect CCP crypto device\");\n@@ -345,6 +250,8 @@ cryptodev_ccp_create(const char *name,\n \t}\n \n \tprintf(\"CCP : Crypto device count = %d\\n\", cryptodev_cnt);\n+\tdev->device = &pci_dev->device;\n+\tdev->device->driver = &pci_drv->driver;\n \tdev->driver_id = ccp_cryptodev_driver_id;\n \n \t/* register rx/tx burst functions for data path */\n@@ -368,17 +275,18 @@ cryptodev_ccp_create(const char *name,\n init_error:\n \tCCP_LOG_ERR(\"driver %s: %s() failed\",\n \t\t    init_params->def_p.name, __func__);\n-\tcryptodev_ccp_remove(vdev);\n+\tcryptodev_ccp_remove(pci_dev);\n \n \treturn -EFAULT;\n }\n \n /** Probe ccp pmd */\n static int\n-cryptodev_ccp_probe(struct rte_vdev_device *vdev)\n+cryptodev_ccp_probe(struct rte_pci_driver *pci_drv __rte_unused,\n+\tstruct rte_pci_device *pci_dev)\n {\n \tint rc = 0;\n-\tconst char *name;\n+\tchar name[RTE_CRYPTODEV_NAME_MAX_LEN];\n \tstruct ccp_pmd_init_params init_params = {\n \t\t.def_p = {\n \t\t\t\"\",\n@@ -388,19 +296,16 @@ cryptodev_ccp_probe(struct rte_vdev_device *vdev)\n \t\t},\n \t\t.auth_opt = CCP_PMD_AUTH_OPT_CCP,\n \t};\n-\tconst char *input_args;\n \n \tsha_ctx = (void *)rte_malloc(NULL, SHA512_DIGEST_SIZE, 64);\n \tif (ccp_pmd_init_done) {\n \t\tRTE_LOG(INFO, PMD, \"CCP PMD already initialized\\n\");\n \t\treturn -EFAULT;\n \t}\n-\tname = rte_vdev_device_name(vdev);\n-\tif (name == NULL)\n+\trte_pci_device_name(&pci_dev->addr, name, sizeof(name));\n+\tif (name[0] == '\\0')\n \t\treturn -EINVAL;\n \n-\tinput_args = rte_vdev_device_args(vdev);\n-\tccp_pmd_parse_input_args(&init_params, input_args);\n \tinit_params.def_p.max_nb_queue_pairs = CCP_PMD_MAX_QUEUE_PAIRS;\n \n \tRTE_LOG(INFO, PMD, \"Initialising %s on NUMA node %d\\n\", name,\n@@ -410,21 +315,26 @@ cryptodev_ccp_probe(struct rte_vdev_device *vdev)\n \tRTE_LOG(INFO, PMD, \"Authentication offload to %s\\n\",\n \t\t((init_params.auth_opt == 0) ? \"CCP\" : \"CPU\"));\n \n-\trc = cryptodev_ccp_create(name, vdev, &init_params);\n+\trte_pci_device_name(&pci_dev->addr, name, sizeof(name));\n+\n+\trc = cryptodev_ccp_create(name, pci_dev, &init_params, pci_drv);\n \tif (rc)\n \t\treturn rc;\n \tccp_pmd_init_done = 1;\n \treturn 0;\n }\n \n-static struct rte_vdev_driver cryptodev_ccp_pmd_drv = {\n+static struct rte_pci_driver cryptodev_ccp_pmd_drv = {\n+\t.id_table = ccp_pci_id,\n+\t.drv_flags = RTE_PCI_DRV_NEED_MAPPING,\n \t.probe = cryptodev_ccp_probe,\n \t.remove = cryptodev_ccp_remove\n };\n \n static struct cryptodev_driver ccp_crypto_drv;\n \n-RTE_PMD_REGISTER_VDEV(CRYPTODEV_NAME_CCP_PMD, cryptodev_ccp_pmd_drv);\n+RTE_PMD_REGISTER_PCI(CRYPTODEV_NAME_CCP_PMD, cryptodev_ccp_pmd_drv);\n+RTE_PMD_REGISTER_KMOD_DEP(CRYPTODEV_NAME_CCP_PMD, \"* igb_uio | uio_pci_generic | vfio-pci\");\n RTE_PMD_REGISTER_PARAM_STRING(CRYPTODEV_NAME_CCP_PMD,\n \t\"max_nb_queue_pairs=<int> \"\n \t\"socket_id=<int> \"\n",
    "prefixes": [
        "v3"
    ]
}