get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 71851,
    "url": "http://patchwork.dpdk.org/api/patches/71851/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dpdk/patch/20200621191200.28120-1-parav@mellanox.com/",
    "project": {
        "id": 1,
        "url": "http://patchwork.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": "<20200621191200.28120-1-parav@mellanox.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20200621191200.28120-1-parav@mellanox.com",
    "date": "2020-06-21T19:11:54",
    "name": "[v2,0/6] Improve mlx5 PMD common driver framework for multiple classes",
    "commit_ref": null,
    "pull_url": null,
    "state": null,
    "archived": false,
    "hash": null,
    "submitter": {
        "id": 1780,
        "url": "http://patchwork.dpdk.org/api/people/1780/?format=api",
        "name": "Parav Pandit",
        "email": "parav@mellanox.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.dpdk.org/project/dpdk/patch/20200621191200.28120-1-parav@mellanox.com/mbox/",
    "series": [],
    "comments": "http://patchwork.dpdk.org/api/patches/71851/comments/",
    "check": "pending",
    "checks": "http://patchwork.dpdk.org/api/patches/71851/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 dpdk.org (dpdk.org [92.243.14.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id D5822A0350;\n\tSun, 21 Jun 2020 21:12:20 +0200 (CEST)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id C0C271C12C;\n\tSun, 21 Jun 2020 21:12:19 +0200 (CEST)",
            "from EUR05-AM6-obe.outbound.protection.outlook.com\n (mail-am6eur05on2068.outbound.protection.outlook.com [40.107.22.68])\n by dpdk.org (Postfix) with ESMTP id 152E31C118\n for <dev@dpdk.org>; Sun, 21 Jun 2020 21:12:19 +0200 (CEST)",
            "from AM0PR05MB4866.eurprd05.prod.outlook.com (2603:10a6:208:c0::32)\n by AM0PR05MB6307.eurprd05.prod.outlook.com (2603:10a6:208:145::17)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3109.21; Sun, 21 Jun\n 2020 19:12:18 +0000",
            "from AM0PR05MB4866.eurprd05.prod.outlook.com\n ([fe80::d44d:a804:c730:d2b7]) by AM0PR05MB4866.eurprd05.prod.outlook.com\n ([fe80::d44d:a804:c730:d2b7%2]) with mapi id 15.20.3109.026; Sun, 21 Jun 2020\n 19:12:18 +0000",
            "from sw-mtx-036.mtx.labs.mlnx (208.176.44.194) by\n DM6PR02CA0105.namprd02.prod.outlook.com (2603:10b6:5:1f4::46) with Microsoft\n SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.20.3109.22 via Frontend Transport; Sun, 21 Jun 2020 19:12:16 +0000"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;\n b=VKN/xJR/zhWk5dnhHoIvWFEd+ZZhNqkAiQlerN78O/p/J9xS5eNTCef2eEYxVi7XlhgiF04xxwXGMvfiWMlj/tpjx5WVmSmoR1iNPlkQcpOEEZNJj3E6g0yXbpVlT2qMlg53AzPCzhMIoSWDUU9SLEC9kjEMUzCkSgSY6nD5dXxrVdpUhVZDO2x/y+UY6S8SLGXSQlGQvwBU/OvL+ZXWny9BfnaKHnqvfsWXFH36neGst+ZeXvHeSn/zY1DQko1CCaw3y+7iwtK+AgIjgs5kH/eZiUJlZ1ZIYZpVAhjXhUHcJTMlm85GxakGS0rHBzvqwCh/hn/yN9Uk2WHFx9MH7g==",
        "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=Zi6S7XoNqnPS/Lv9+J3DIFItJK04HfgbC0/VnTIUNSQ=;\n b=kRDQALujP6VXaiDA51Y9G9SjUmHUzcRurPebrQ1IEYgS0p9XjUmnYJTeVH0JEeC2kv+9PZOXB68++DJLFkhxvochIMgUwtqgY5jr48L6Q/IS581RRKQubrVTkieIWiQWg/FkLAIzKYex021B4uoi/Wzk8O3adO+qta9GxHfZqfrejzcaIEy7or9I2GiPoktCgPaKx4AVm3AQY5JVSj8q70zVihs95+F4mF16ixYp9qhrbuFDkOwqdlNl4gZrizPk+cCUT3jZK0T5g5DXYLRVJB9zimbeu8WgBQmWk20n4/PQDzbqMJ50EprOjrBORzWYPjUbIAyAy7PrUclDdl6jZQ==",
        "ARC-Authentication-Results": "i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com;\n dkim=pass header.d=mellanox.com; arc=none",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com;\n s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=Zi6S7XoNqnPS/Lv9+J3DIFItJK04HfgbC0/VnTIUNSQ=;\n b=n9DB5v6g2SkrJTTQL/9lcOQz7mpZtgu261AElk9BzcbJFGkGH51NnmQWE7tNVIjkQLzXsA1aWa0jDIr6IBvJ7cWMd3C2JoULjl8Ygs444zfzIl7gBOD10fEkZvLgl2eth+GEb4Dc2oydzm/8mzxHnm0CDiRdl1kqMgUYbvNX18k=",
        "Authentication-Results": "u256.net; dkim=none (message not signed)\n header.d=none;u256.net; dmarc=none action=none header.from=mellanox.com;",
        "From": "Parav Pandit <parav@mellanox.com>",
        "To": "grive@u256.net, ferruh.yigit@intel.com, thomas@monjalon.net, dev@dpdk.org",
        "Cc": "orika@mellanox.com, matan@mellanox.com, Parav Pandit <parav@mellanox.com>",
        "Date": "Sun, 21 Jun 2020 19:11:54 +0000",
        "Message-Id": "<20200621191200.28120-1-parav@mellanox.com>",
        "X-Mailer": [
            "git-send-email 2.25.4",
            "git-send-email 2.25.4"
        ],
        "In-Reply-To": "<20200610171728.89-2-parav@mellanox.com>",
        "References": "<20200610171728.89-2-parav@mellanox.com>",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-ClientProxiedBy": "DM6PR02CA0105.namprd02.prod.outlook.com\n (2603:10b6:5:1f4::46) To AM0PR05MB4866.eurprd05.prod.outlook.com\n (2603:10a6:208:c0::32)",
        "MIME-Version": "1.0",
        "X-MS-Exchange-MessageSentRepresentingType": "1",
        "X-Originating-IP": "[208.176.44.194]",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-Office365-Filtering-HT": "Tenant",
        "X-MS-Office365-Filtering-Correlation-Id": "b9881d33-0f3d-41dd-2520-08d8161703da",
        "X-MS-TrafficTypeDiagnostic": "AM0PR05MB6307:",
        "X-LD-Processed": "a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr",
        "X-MS-Exchange-Transport-Forked": "True",
        "X-Microsoft-Antispam-PRVS": "\n <AM0PR05MB630787FF660DE9E539D95DFDD1960@AM0PR05MB6307.eurprd05.prod.outlook.com>",
        "X-MS-Oob-TLC-OOBClassifiers": "OLM:519;",
        "X-Forefront-PRVS": "04410E544A",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-Microsoft-Antispam": "BCL:0;",
        "X-Microsoft-Antispam-Message-Info": "\n PyMs7ktPaKaUKra50GEm6Q+tmD0dsBbb2WMgynPhV7cEUl84hPe3+shaucAOm2DDjTLbr3p6XQpz3KNIe6xVWYqE3qpawlbh1y+c0bjGSwK37HNKVRebzqYbm7TQ67jORKJIbtzweJLMGKeZQA8+eSMdFvWFKykUHKJrYohsEuNAaNDqubEA0d9xZlQS+UYq5DLniUeti/lxQ8QXdt7FSQjS3orO7TjkcStKeYC4MmBShhHb4eSKukvD1uaBFRBPkKhC3Asfwd5dugsEVl9qnSkG2rh6/9FXQEGsLPqZoYi7p4VWp4YRbgUY6kTt/+T9diBivcL/Pbbl/ThfarYUtg==",
        "X-Forefront-Antispam-Report": "CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;\n IPV:NLI; SFV:NSPM; H:AM0PR05MB4866.eurprd05.prod.outlook.com; PTR:; CAT:NONE;\n SFTY:;\n SFS:(4636009)(376002)(366004)(39860400002)(396003)(346002)(136003)(36756003)(66556008)(66476007)(6506007)(4326008)(5660300002)(6486002)(66946007)(26005)(186003)(107886003)(16526019)(316002)(86362001)(6512007)(1076003)(478600001)(2616005)(6666004)(8676002)(83380400001)(956004)(52116002)(2906002)(8936002);\n DIR:OUT; SFP:1101;",
        "X-MS-Exchange-AntiSpam-MessageData": "\n /FKjC13NoF4bgpuS7a6/MsSP4Z7ebKnsJYnTHaVfhJ4Z4/naPCi+YrygKI1BU62ovzXCFL36oQVB3FjlOj7BEgAhSFwdAiPTktLuyqMIQTkiB3KCfRtLpm07RRM0yvx45/VrYt2De3JpA9CU5+RdyWE+NRF7hW+Nm2wrLLtONrNTtfxlk1t2OFZDH/+uqA5fEIbZQPy1JoOppktuuKa/tIM+R3DW0pVed4CZCt67P8f9QeGjVEfFgPdcIVvV7yRWIQ8nDqNjL86Oz0Firo2/jL+PUT0EmB3OmL4Czj6vmn50pbKzALe9IzRcQfrzsCt+dTFYHYd4MFHNjsIi0nerzZZG6ua6GgTIUGdUApxzVYtiv/vEIaEfDxgmYsMM4etRYozZFxkiui0z0OBykkEZpNdKoxw3HKvSp69TJJDiDVRL2gNroZl9wjFB1lXBzQRrE6c2ijtUExRTONG1qN5P9Qf0oZnLThDyiyRo7FuDWM9jpXcGr+vtqHzWzI/mvxjh",
        "X-OriginatorOrg": "Mellanox.com",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n b9881d33-0f3d-41dd-2520-08d8161703da",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "21 Jun 2020 19:12:17.9261 (UTC)",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted",
        "X-MS-Exchange-CrossTenant-Id": "a652971c-7d2e-4d9b-a6a4-d149256f461b",
        "X-MS-Exchange-CrossTenant-MailboxType": "HOSTED",
        "X-MS-Exchange-CrossTenant-UserPrincipalName": "\n tVQvf/zr/BACk/yiOVFWQNj8uyid9wXhpQSmxbQtSX8744REIuv2rV5Ddqe/fhMKFyM341waHMALy9kk5GciTA==",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "AM0PR05MB6307",
        "Subject": "[dpdk-dev] [PATCH v2 0/6] Improve mlx5 PMD common driver framework\n\tfor multiple classes",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "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": "This commit introduces mlx5 bus to support multiple class of devices\nfor a single PCI device.\n\nMotivation and example\n----------------------\nmlx5 PCI device supports multiple class of devices such as net, vdpa\nand regex devices.\n\nCurrently only one pmd (either net or vdpa) can bind to this device.\nThis design limits use of PCI device only for single device class.\n\nTo support multiple classes simultaneously for a mlx5 PCI device,\na new mlx5 PCI bus is created. This bus allows binding multiple\nclass drivers (such as net, vdpa, regex(future)) to bind to the\nmlx5 PCI bus driver.\n\nChange description\n------------------\nPatch-1 prepares the code to have RTE_BIT() macro defined in a\ncommon header.\nPatch-2 Changes class value to a bit field\nPatch-3 Exposes mlx5_pci class driver registration APIs\nPAtch-4 Implements mlx5 PCI bus\nPatch-5 Migrates mlx5 net and vdpa driver to use mlx5 PCI bus\nAPI instead of rte PCI bus API\nPatch-6 Removed class check code as its already part of the bus now\n\nDesign overview\n---------------\n\n -----------    ------------    -------------\n |   mlx5  |    |   mlx5   |    |   mlx5    |\n | net pmd |    | vdpa pmd |    | regex pmd |\n -----------    ------------    -------------\n      \\              |                /\n       \\             |               /\n        \\       -------------       /\n         \\______|   mlx5    |_____ /\n                |   pci bus |\n                -------------   \n                     |\n                 ----------- \n                 |   mlx5  | \n                 | pci dev | \n                 ----------- \n\n- mlx5 pci bus driver binds to mlx5 PCI devices defined by PCI\n  ID table of all related mlx5 PCI devices.\n- mlx5 class driver such as net, vdpa, regex PMD defines its\n  specific PCI ID table and mlx5 bus driver probes matching\n  class drivers.\n- mlx5 pci bus driver is cental place that validates supported\n  class combinations.\n- In future as code evolves, more device setup/cleanup and\n  resource creation code moves to mlx5 PCI bus driver.\n\nAlternatives considered\n-----------------------\n1. Instead of creating mlx5 pci bus, a common driver is\nimplemented which exposes class registration API.\nHowever, bus model fits better with existing DPDK design\nsimilar to ifpga driver.\nClass registration API need to create a new callbacks\nand ID signature; instead it is better to utilize current\nwell defined methods.\n\n2. Enhance pci core to allow multiple driver binding to\nsingle rte PCI device.\nThis approach is not taken, because peer drivers using\none PCI device won't be aware of other's presence. This\nrequires cross-driver syncronization of who initializes\ncommon resources (such as irq, eq and more).\nThis also requires refcounting common objects etc among\npeer drivers.\nInstead of layered approach delivers and allows putting\ncommon resource sharing, setup code in common bus driver.\nIt also eliminates peer blind zone problem as bottom pci\nbus layer provides necessary setup without any reference\ncounting.\n\n3. In future mlx5 prefers to use RDMA MR cache of the mbuf\nused between net and regex pmd so that same mbuf use across\nmultiple device can be possible.\n\nExamples:\n--------\nA user who wish to use a specific class(es) provides list\nof classes at command line such as,\n./testpmd -w <PCI BDF>,class=net:vdpa\n./testpmd -w <PCI BDF>,class=vdpa\n\nIn future,\n./testpmd -w <PCI BDF>,class=net:regex\n\nChangelog:\nv1->v2:\n - Addressed most comments from Thomas and Gaetan.\n - Symbols starting with prefix rte_bus_pci_mlx5 may be\n   confusing as it may appear as it belong to rte_bus_pci module.\n   Hence it is kept as rte_bus_mlx5_pci which matches with other\n   modules as mlx5_vdpa, mlx5_net.\n - Dropped 2nd patch and replace with new 6th patch.\n - Avoided new file, added macro to rte_bitops.h\n - Inheriting ret_pci_driver instead of rte_driver\n - Added design and description of the mlx5_pci bus\n - Enhanced driver to honor RTE_PCI_DRV_PROBE_AGAIN drv_flag\n - Use anonymous structure for class search and code changes around it\n - Define static for class comination array\n - Use RTE_DIM to find array size\n - Added OOM check for strdup()\n - Renamed copy variable to nstr_orig\n - Returning negagive error code\n - Returning directly if match entry found\n - Use compat condition check\n - Avoided cutting error message string\n - USe uint32_t datatype instead of enum mlx5_class\n - Changed logic to parse device arguments only once during probe()\n - Added check to fail driver probe if multiple classes register with\n   DMA ops\n - Renamed function to parse_class_options\n - Migreate API from rte_driver to rte_pci_driver\n\nParav Pandit (6):\n  eal: introduce macros for getting value for bit\n  common/mlx5: change mlx5 class enum values as bits\n  bus/mlx5_pci: add mlx5 PCI bus\n  bus/mlx5_pci: register a PCI driver\n  bus/mlx5_pci: enable net and vDPA to use mlx5 PCI bus driver\n  common/mlx5: Remove class checks from individual driver\n\n config/common_base                            |   6 +\n config/defconfig_arm64-bluefield-linuxapp-gcc |   6 +\n drivers/bus/Makefile                          |   3 +\n drivers/bus/meson.build                       |   2 +-\n drivers/bus/mlx5_pci/Makefile                 |  49 +++\n drivers/bus/mlx5_pci/meson.build              |   6 +\n drivers/bus/mlx5_pci/mlx5_pci_bus.c           | 364 ++++++++++++++++++\n drivers/bus/mlx5_pci/rte_bus_mlx5_pci.h       |  85 ++++\n .../bus/mlx5_pci/rte_bus_mlx5_pci_version.map |   5 +\n drivers/common/mlx5/mlx5_common.c             |  37 --\n drivers/common/mlx5/mlx5_common.h             |   7 +-\n .../common/mlx5/rte_common_mlx5_version.map   |   2 -\n drivers/net/mlx5/Makefile                     |   3 +-\n drivers/net/mlx5/linux/mlx5_os.c              |   6 -\n drivers/net/mlx5/linux/mlx5_os.h              |   1 +\n drivers/net/mlx5/meson.build                  |   2 +-\n drivers/net/mlx5/mlx5.c                       |  24 +-\n drivers/net/mlx5/mlx5.h                       |   1 -\n drivers/vdpa/mlx5/Makefile                    |   3 +-\n drivers/vdpa/mlx5/meson.build                 |   2 +-\n drivers/vdpa/mlx5/mlx5_vdpa.c                 |  28 +-\n lib/librte_eal/include/rte_bitops.h           |   2 +\n mk/rte.app.mk                                 |   1 +\n 23 files changed, 565 insertions(+), 80 deletions(-)\n create mode 100644 drivers/bus/mlx5_pci/Makefile\n create mode 100644 drivers/bus/mlx5_pci/meson.build\n create mode 100644 drivers/bus/mlx5_pci/mlx5_pci_bus.c\n create mode 100644 drivers/bus/mlx5_pci/rte_bus_mlx5_pci.h\n create mode 100644 drivers/bus/mlx5_pci/rte_bus_mlx5_pci_version.map",
    "diff": null,
    "prefixes": [
        "v2",
        "0/6"
    ]
}