Show a cover letter.

GET /api/covers/74812/?format=api
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 74812,
    "url": "http://patches.dpdk.org/api/covers/74812/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/cover/20200726145524.149355-1-parav@mellanox.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": "<20200726145524.149355-1-parav@mellanox.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20200726145524.149355-1-parav@mellanox.com",
    "date": "2020-07-26T14:55:14",
    "name": "[v11,00/10] Improve mlx5 PMD driver framework for multiple classes",
    "submitter": {
        "id": 1780,
        "url": "http://patches.dpdk.org/api/people/1780/?format=api",
        "name": "Parav Pandit",
        "email": "parav@mellanox.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/cover/20200726145524.149355-1-parav@mellanox.com/mbox/",
    "series": [
        {
            "id": 11303,
            "url": "http://patches.dpdk.org/api/series/11303/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=11303",
            "date": "2020-07-26T14:55:16",
            "name": "Improve mlx5 PMD driver framework for multiple classes",
            "version": 11,
            "mbox": "http://patches.dpdk.org/series/11303/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/covers/74812/comments/",
    "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 C0190A0524;\n\tSun, 26 Jul 2020 16:56:13 +0200 (CEST)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 08D281C0B1;\n\tSun, 26 Jul 2020 16:55:55 +0200 (CEST)",
            "from EUR05-VI1-obe.outbound.protection.outlook.com\n (mail-vi1eur05on2049.outbound.protection.outlook.com [40.107.21.49])\n by dpdk.org (Postfix) with ESMTP id 3C5541BFF1\n for <dev@dpdk.org>; Sun, 26 Jul 2020 16:55:50 +0200 (CEST)",
            "from AM0PR05MB4866.eurprd05.prod.outlook.com (2603:10a6:208:c0::32)\n by AM0PR05MB6225.eurprd05.prod.outlook.com (2603:10a6:208:117::15)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3216.27; Sun, 26 Jul\n 2020 14:55:44 +0000",
            "from AM0PR05MB4866.eurprd05.prod.outlook.com\n ([fe80::eccf:72b3:bacb:f09d]) by AM0PR05MB4866.eurprd05.prod.outlook.com\n ([fe80::eccf:72b3:bacb:f09d%5]) with mapi id 15.20.3216.031; Sun, 26 Jul 2020\n 14:55:44 +0000",
            "from sw-mtx-036.mtx.labs.mlnx (208.176.44.194) by\n DM5PR04CA0045.namprd04.prod.outlook.com (2603:10b6:3:12b::31) with Microsoft\n SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.20.3216.23 via Frontend Transport; Sun, 26 Jul 2020 14:55:42 +0000"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;\n b=STkXld696Tc3s5ctbNJDXkWRjSReTTX3O1YuPrplHcn4cuaFkAbfrnfOMU8B1DhLsQiTqNZXVcKcN+Lh7ye5Id3xuTPGGaqV54dyA5i64mig4EkL0JP3Al46Nl5ZtY9SwnELEKt9J3Idoh3DK0bVm+//leiIb/PyhYg52nQAJtG64KVfnNYfLbgVMjkrSb+tK6963Twr0+SKZPQhmonGuItvV1Y6G6IbhUYzOkKgQp+ximG4CcpKdClrtik2yPU7U/RhfmyPULgABEnPIF7YbKxvd0oWHx1zFvidDw1RapKkN3Os9NlhZ5LlhnvsycrC5J5ICN1ICjWN5mK1Df0jjA==",
        "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=CYW89ogctHwHQC5raVZom3teEWnexhJAhRvd3HQqpzM=;\n b=KvUPfbRksJtLdsCue2Lk3LTu4y12fcGzWPEeGt7LhhFCzryBXTIJyhr02yBynCBADvWQfkW58elo5YzpcEFYrZny5lKVHy2ri+rA9bCIWVkHsPYoIruW/ghpUKSlJDUe+3IRC2Yw0GdD+gHNC7xF1xYIEbYlQHBb5mt32HqnCFV3ZBMKO88OOdflyNDk61l21mphOHw07ffQKbi2e8Ib2wD2/h2Q20UBUUAfMUPgfjDPcz6ZqQYV2lReL0iAcyS8UYm4ws6j3FnrlneLCs6mGkqMo1p6x5kYnuKlXmkXmUgLKOcBoa/vfTKJDdQJpgFFxjoxiOOdHg33IFnvA7zOfg==",
        "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=CYW89ogctHwHQC5raVZom3teEWnexhJAhRvd3HQqpzM=;\n b=GM22a91LJ0e4XDrhOBTrSiG3sndurp1eJusmPMOMd4hOiljGhnDY/E5KyMSzVSmmPsqAJstHjYdfXVp9J2KKSBhg5uZpw7+tgYUwLrDu7OOA7sLuos7OlAIa1ElI9qF4iM7at8HJ+oGtl7t6ZJibRDiG5yGccdUwpFH+7kONmjo=",
        "Authentication-Results": "dpdk.org; dkim=none (message not signed)\n header.d=none;dpdk.org; dmarc=none action=none header.from=mellanox.com;",
        "From": "Parav Pandit <parav@mellanox.com>",
        "To": "dev@dpdk.org, grive@u256.net, ferruh.yigit@intel.com, thomas@monjalon.net",
        "Cc": "rasland@mellanox.com, orika@mellanox.com, matan@mellanox.com,\n joyce.kong@arm.com, Parav Pandit <parav@mellanox.com>",
        "Date": "Sun, 26 Jul 2020 17:55:14 +0300",
        "Message-Id": "<20200726145524.149355-1-parav@mellanox.com>",
        "X-Mailer": [
            "git-send-email 2.26.2",
            "git-send-email 2.26.2"
        ],
        "In-Reply-To": "<20200610171728.89-2-parav@mellanox.com>",
        "References": "<20200610171728.89-2-parav@mellanox.com>",
        "Content-Type": "text/plain; charset=UTF-8",
        "Content-Transfer-Encoding": "8bit",
        "X-ClientProxiedBy": "DM5PR04CA0045.namprd04.prod.outlook.com\n (2603:10b6:3:12b::31) 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": "b4ca8579-f67c-4a58-fcc3-08d83173f8ca",
        "X-MS-TrafficTypeDiagnostic": "AM0PR05MB6225:",
        "X-LD-Processed": "a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtFwd,ExtAddr",
        "X-MS-Exchange-Transport-Forked": "True",
        "X-Microsoft-Antispam-PRVS": "\n <AM0PR05MB6225FFA043DDD946C7A4EE80D1750@AM0PR05MB6225.eurprd05.prod.outlook.com>",
        "X-MS-Oob-TLC-OOBClassifiers": "OLM:469;",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-Microsoft-Antispam": "BCL:0;",
        "X-Microsoft-Antispam-Message-Info": "\n G4HN9pooLlKfLu2lxaRkFcNE+44yNMh6OPYbhGLrigp4ZCoC/+E+XamevISFgoRC3AAgmyChnrs3Sm7dwbKzCqxlAVHz46ChjD16c7br8LxeY6NBlHmqEu5o6NABTtVup2EcE+eaIGHZZ3Lvdj1S3R4NSLUrr99rvD4KpyPMQ2yFZlE1ZIEn1Xv1faN+tou6GRXigVQ0RG5+KsbPldQElaM2sDlGp95ocQmPiH2GELo1Ia5y+ysd/SpMgC2BdSxNbSbj/D41IZn3fz6Rqc5yUN3ck7k+cZXFHfEEMRsuA1rdNc/bQrw8igPCnKnRG7yC0hNnf+RkakXgonI6olsKmQ==",
        "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)(366004)(396003)(346002)(39860400002)(136003)(376002)(6486002)(66476007)(8936002)(66556008)(6512007)(2616005)(956004)(66574015)(186003)(66946007)(26005)(16526019)(8676002)(1076003)(6666004)(316002)(83380400001)(6506007)(107886003)(4326008)(36756003)(478600001)(2906002)(86362001)(52116002)(5660300002);\n DIR:OUT; SFP:1101;",
        "X-MS-Exchange-AntiSpam-MessageData": "\n tKJ70tRydNN0c7eKJr1RTcDof1s25Nlr69YS1Jjm3mj/iAjiD1lve8EICVm9xxsUYSDY6DLVJHnZaIXm+N3LGVO55beedbjXfR/LWqb9VBqR3QWKxqpgsUne/duUWHZGHIBRjkKOeyZzVgpKETu7fUugxzDBcg/y7EWtDScr1AjJvhsqwUsa3UAE0Tgi3ZnSsM5NFs56e8tKZapXLfSzRyRXFcOgkLJ4VSkvHuj2bqu7xVXtMCR6PUWH6/mXCPTE/Eb/jMRIYr6PYiBgm91XMRQNdWR1Bp4Tc8RgMJEo6+6ogIqKVOGTt0fASkALHUJs/y15ndEuTH5/Eh70hGqNXV40YIXaWbnIm7RWqgRNDTfyO0lP8Q1U4ZiVjdzIhmN/xamIFMZmMHnDmyHm+kQPsoeTJ5oIH3xcslZb34booMbhLYP3mUSn4ngorofR/IICwv9usFd6ja5zbJ285MYtnpblMyPfglQC9VgUWvThwOQ=",
        "X-OriginatorOrg": "Mellanox.com",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n b4ca8579-f67c-4a58-fcc3-08d83173f8ca",
        "X-MS-Exchange-CrossTenant-AuthSource": "AM0PR05MB4866.eurprd05.prod.outlook.com",
        "X-MS-Exchange-CrossTenant-AuthAs": "Internal",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "26 Jul 2020 14:55:43.9776 (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 5Ng6s1Q00PjrccCzDsBOm93hqqVyked0H9pBPM6k0T/7QY8hcK9AYbotQsS/GwSQH5qDtwkDkdOhEzSZyLsoiw==",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "AM0PR05MB6225",
        "Subject": "[dpdk-dev] [PATCH v11 00/10] Improve mlx5 PMD driver framework for\n\tmultiple 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 series introduces mlx5 common driver layer to support multiple\nclass of devices for 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,\nmlx5 common module is extended as generic PCI PMD.\nThis PMD enables multiple class PMDS (net, regex, vdpa) to be loaded\non a single PCI Device.\n\nChange description\n------------------\nPatch-1 Introduces RTE_BIT() macro\nPatch-2 Fixed indentation for directory listing\nPatch-3 Relax dependency order\nPatch-4 Fixes compilation error\nPatch-5 Fixes segmentation fault in regex probe error unwind path\nPatch-6 Avoid using class constructor priority\nPatch-7 Change class values as bits\nPatch-8 Introduce mlx5 layer to support multiple class drivers\nPatch-9 Migrates mlx5 net and vdpa driver to use mlx5 PCI driver API\n        instead of rte PCI bus API\nPatch-10 Removed class check code from class drivers \n\nDesign overview\n---------------\n\n -----------    ------------    -------------\n |   mlx5  |    |   mlx5   |    |   mlx5    |\n | net pmd |    | vdpa pmd |    | regex pmd |\n -----------    ------------    -------------\n      \\              |                /\n       \\             |               /\n        \\       ---------------     /\n         \\______| mlx5 common |____/\n                |    pmd      |\n                --------------- \n                     |\n                 ----------- \n                 |   mlx5  | \n                 | pci dev | \n                 ----------- \n\n- mlx5 common 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 define their\n  specific PCI ID tables. mlx5 common driver probes each\n  individual class driver(s) for maching and enabled classes.\n- mlx5 pci layer 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 common driver.\n\nAlternatives considered\n-----------------------\n1. Instead of creating mlx5 pci common PMD, a common driver is\nimplemented which exposes class registration API.\nHowever, common PMD model fits better with existing DPDK design\nsimilar to ifpga driver. Class registration API need to create a\nnew callbacks and ID signature; instead it is better to utilize\ncurrent well defined methods.\n\n2. Enhance pci core to allow multiple driver binding to single\nrte PCI device.\nThis approach is not taken, because peer drivers using one PCI\ndevice won't be aware of other's presence. This requires\ncross-driver syncronization of who initializes common resources\n(such as irq, eq and more).\nThis also requires refcounting common objects etc among peer drivers.\nInstead of layered approach delivers and allows putting common resource\nsharing, setup code in common driver.\nIt also eliminates peer blind zone problem as bottom pci layer provides\nnecessary setup without any reference counting.\n\n3. In future mlx5 prefers to use RDMA MR cache of the mbuf used\nbetween net and regex pmd so that same mbuf use across multiple\ndevice can be possible.\n\nExamples:\n--------\nA user who wish to use a specific class(es) provides list of classes\nat command line such as,\n./testpmd -w <PCI BDF>,class=net:regex\n./testpmd -w <PCI BDF>,class=vdpa\n\nChangelog:\nv10->v11:\n - Added vdpa + regex combination to class combination table\n - All class definitions are moved to single patch\nv9->v10:\n - Fixed checkpatch warnings related to spelling mistakes and alignment\nv8->v9:\n - Updated commit message\n - Fixed LD_FLAGS\n - Fixed white space to tab\n - Fixed Makefile to have dependency on common/mlx5 for parallel builds\nv7->v8:\n - Instead of dedicated mlx5 bus driver, merged the PMD to common_mlx5\n - Avoided new RTE PRIORITY\n - Removed mlx5 common to use RTE_PRIORITY_CLASS\nv6->v7:\n - Updated release notes\nv5->v6:\n - Fixed compilation failure in parallel build for shared lib\nv4->v5:\n - Squash the maintainers update path with other patch which adds the\n   bus\n - Addressed comments from Morten Brørup\n - Renamed newly added macro to RTE_BIT64\n - Added doxygen comment section for the macro\nv3->v4:\n - Fixed dma_map error unwinding flow to follow same order for unmap\nv2->v3:\n - Added RTE priority for common driver initialization\n - Addressed comments from Thomas and Asaf\n - Fixed compilation error in glue wrapper\n - Moved pci_driver structure instance as first in driver\n - Removed white spaces at the end of line in diagram\n - Address commnts from Matan\n - Removed CONFIG_RTE_LIBRTE_MLX5_PCI_BUS from config files\n - Renamed mlx5_valid_class_combo to mlx5_class_combinations\n - Added cross check for class drivers to support only 3 flags for now\n - Added full stop at the end of comment block\n - Using full names in function names\n - Added new line before function name in multiple functions\n - Added example string to parse for multiple classes\n - Dropped mlx5 prefix from static function\n - Removed empty lines\n - Fixed issue to remove multiple classes for a driver\n - Using define for drv_flags at multiple places\n - Deriving drv_flags based on the class drivers\n - Fixed alignment for id_table\n - Perform dma map on best effort basis for all supported drivers\n - Dynamically build pci id table\n - Using PCI to mlx5 device helper routines\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\n\nParav Pandit (8):\n  eal: introduce macro for bit definition\n  common/mlx5: fix void parameters in glue wrappers\n  regex/mlx5: fix segmentation fault during error unwinding\n  common/mlx5: avoid using class constructor priority\n  common/mlx5: change class values as bits\n  common/mlx5: introduce layer to support multiple class drivers\n  common/mlx5: register class drivers through common layer\n  common/mlx5: remove class check from class drivers\n\nThomas Monjalon (2):\n  drivers: fix indent of directory list\n  drivers: relax dependency order\n\n drivers/Makefile                              |  10 +-\n drivers/common/Makefile                       |   4 -\n drivers/common/meson.build                    |   2 +-\n drivers/common/mlx5/Makefile                  |   2 +\n drivers/common/mlx5/linux/mlx5_glue.h         |   4 +-\n drivers/common/mlx5/meson.build               |   9 +-\n drivers/common/mlx5/mlx5_common.c             |  52 +-\n drivers/common/mlx5/mlx5_common.h             |  12 +-\n drivers/common/mlx5/mlx5_common_pci.c         | 540 ++++++++++++++++++\n drivers/common/mlx5/mlx5_common_pci.h         |  77 +++\n .../common/mlx5/rte_common_mlx5_version.map   |   4 +-\n drivers/meson.build                           |  51 +-\n drivers/net/mlx5/Makefile                     |   1 -\n drivers/net/mlx5/linux/mlx5_os.c              |   6 -\n drivers/net/mlx5/mlx5.c                       |  25 +-\n drivers/net/mlx5/mlx5.h                       |   1 -\n drivers/regex/mlx5/meson.build                |   2 +-\n drivers/regex/mlx5/mlx5_regex.c               |  29 +-\n drivers/vdpa/mlx5/Makefile                    |   2 +-\n drivers/vdpa/mlx5/meson.build                 |   2 +-\n drivers/vdpa/mlx5/mlx5_vdpa.c                 |  29 +-\n lib/librte_eal/include/rte_bitops.h           |   8 +\n 22 files changed, 749 insertions(+), 123 deletions(-)\n create mode 100644 drivers/common/mlx5/mlx5_common_pci.c\n create mode 100644 drivers/common/mlx5/mlx5_common_pci.h"
}