Show a cover letter.

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

{
    "id": 42169,
    "url": "http://patches.dpdk.org/api/covers/42169/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/cover/cover.1530655929.git.gaetan.rivet@6wind.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": "<cover.1530655929.git.gaetan.rivet@6wind.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/cover.1530655929.git.gaetan.rivet@6wind.com",
    "date": "2018-07-03T22:14:43",
    "name": "[v9,00/27] Device querying",
    "submitter": {
        "id": 269,
        "url": "http://patches.dpdk.org/api/people/269/?format=api",
        "name": "Gaëtan Rivet",
        "email": "gaetan.rivet@6wind.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/cover/cover.1530655929.git.gaetan.rivet@6wind.com/mbox/",
    "series": [
        {
            "id": 383,
            "url": "http://patches.dpdk.org/api/series/383/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=383",
            "date": "2018-07-03T22:14:43",
            "name": "Device querying",
            "version": 9,
            "mbox": "http://patches.dpdk.org/series/383/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/covers/42169/comments/",
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@dpdk.org",
        "Delivered-To": "patchwork@dpdk.org",
        "Received": [
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id A37181BE1B;\n\tWed,  4 Jul 2018 00:15:36 +0200 (CEST)",
            "from mail-wm0-f66.google.com (mail-wm0-f66.google.com\n\t[74.125.82.66]) by dpdk.org (Postfix) with ESMTP id E1D2F1B4C1\n\tfor <dev@dpdk.org>; Wed,  4 Jul 2018 00:15:34 +0200 (CEST)",
            "by mail-wm0-f66.google.com with SMTP id w16-v6so3792207wmc.2\n\tfor <dev@dpdk.org>; Tue, 03 Jul 2018 15:15:34 -0700 (PDT)",
            "from bidouze.dev.6wind.com. (host.78.145.23.62.rev.coltfrance.com.\n\t[62.23.145.78]) by smtp.gmail.com with ESMTPSA id\n\ti190-v6sm3771084wmd.33.2018.07.03.15.15.32\n\t(version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);\n\tTue, 03 Jul 2018 15:15:32 -0700 (PDT)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=6wind-com.20150623.gappssmtp.com; s=20150623;\n\th=from:to:cc:subject:date:message-id:in-reply-to:references;\n\tbh=IEUzPu65Q42tzC4h31+3xVu/XjQRm65gnITF5gqCjFU=;\n\tb=urn7p6CJn5ti0AN1mOIhizHad2L0Jr9Yu8+W3q5X9nxF7+Oqg5keHJ2VAu+eTnk+2N\n\tHku4706svWVKXiZ+q1ZMo5tGcWSydV1jPqnzGXnJ7kzRpUCgzB2nK0DcU6xAOj0PG070\n\tvppR2B9VjmIf+BI7AmGUldeNrQGXEwOmaczmRfJIgjyr7lEj2YD3J/HnnUx3ypK1lqqJ\n\tfx13+ksrPPxmGh2McphQzggI92Cu+FFBhgJJhff0MnmZiskWbs/qB54XCZjdlhRzS9zK\n\t3T4+98qo9ByJx3XbjbLAHws+edOl6w7S6GxNugIOae6FseTY6Issdp9LC05uZVkAM2YF\n\tYrCQ==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to\n\t:references;\n\tbh=IEUzPu65Q42tzC4h31+3xVu/XjQRm65gnITF5gqCjFU=;\n\tb=WYXdKtptSggMgoVc+eqyuRvEq0+FOJR7iAShhjNUYmx3shO0axF5rdE6M5jRybZkn5\n\tY23YCDX9SNul9KOCsqG7XIsakgRiuY3qqJF2jsM2+8yzxbMr2QzdzdVSqYSu93SFVKUJ\n\t6seCM7slLZlNi1dKJ0bb3QNYcM8qyYVbRAX05PpfZ9Ekt5/iUFbQrZw/oZV43LXGE/IE\n\t+dUbjgFnICoQ/OKToqcZS3UcDOI/qd809icNw6cuCFENv7agdZuezedYSsdr9eYsPFOH\n\tk6XtgU9EmgQZIGOYdlonaPmqBFmZpHhi4sQjg6745pIV5wrEYExHNlhW0GXFqQXSQ8UC\n\ts2BA==",
        "X-Gm-Message-State": "APt69E3FgBU2VB871ME/F/PyB9RnU1RuOqq/VrqHpuIbYFgKT5TvW6Qy\n\tXm3qYTbBL2/kq1jwXWOyP75+27yt",
        "X-Google-Smtp-Source": "AAOMgpcGzdpGwbLEKC4LbHQ6wNowwQKfIg8xp3VpagAbyhF7wbHCB41xGci2kgCCQMHwzidwKC75zA==",
        "X-Received": "by 2002:a1c:98a:: with SMTP id\n\t132-v6mr2166880wmj.86.1530656133899; \n\tTue, 03 Jul 2018 15:15:33 -0700 (PDT)",
        "From": "Gaetan Rivet <gaetan.rivet@6wind.com>",
        "To": "dev@dpdk.org",
        "Cc": "Gaetan Rivet <gaetan.rivet@6wind.com>,\n\tNeil Horman <nhorman@tuxdriver.com>, \n\tKeith Wiles <keith.wiles@intel.com>, Matan Azrad <matan@mellanox.com>,\n\tShreyansh Jain <shreyansh.jain@nxp.com>",
        "Date": "Wed,  4 Jul 2018 00:14:43 +0200",
        "Message-Id": "<cover.1530655929.git.gaetan.rivet@6wind.com>",
        "X-Mailer": "git-send-email 2.11.0",
        "In-Reply-To": "<cover.1521124599.git.gaetan.rivet@6wind.com>",
        "References": "<cover.1521124599.git.gaetan.rivet@6wind.com>",
        "Subject": "[dpdk-dev] [PATCH v9 00/27] Device querying",
        "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\t<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\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "This patchset introduces a new EAL API for querying devices,\nfiltered by arbitrary properties.\n\nThe following elements are introduced to this end:\n\n * A new object, \"rte_class\", is used to describe\n   the device class abstraction layer (eth, crypto, ...).\n\n * Both rte_bus and rte_class now offer a way to\n   list their devices and filter the result\n   using locally defined properties.\n\n * The rte_dev API now has an rte_dev_iterator, which\n   is the way for the user to define the device filter\n   and iterate upon the resulting set.\n\nAs an example, the \"eth\" device class is implemented.\n\nAdditionally, the device filters for\n\n  + rte_bus_pci\n  + rte_bus_vdev\n  + rte_class_eth\n\nare implemented and can be used with some\nproperties each, to show how to extend those.\n\nSome example of filters:\n\n  \"bus=pci/class=eth\"\n  \"bus=pci\"\n  \"class=eth\"\n  \"class=eth,name=net_ring0\"\n  \"bus=pci,id=00:00.0\"\n  \"bus=vdev,driver=net_ring\"\n\n---\n\nv2:\n\n  * Reworked the dev_iterate callback to simplify\n    its implementation.\n\n    Now dev_iterate implementation do not need to learn\n    about the intricacies of the rte_dev_iterator.\n    The rte_dev_iterator is managed purely by the\n    rte_dev_iterator_next function. Buses and classes then\n    do not have to care about settings things right.\n\n    Additionally, dev_iterate implementations do not\n    have to sanitize their dev string anymore, they\n    are prepared by the rte_dev layer prior, which also\n    reduces the number of dynamic allocations.\n\nv3:\n\n  * Introduced central constructor priority list.\n  * Removed lightweight kvarg parsing utility,\n    using librte_kvargs instead.\n  * Reversed dependencies of librte_kvargs and\n    librte_eal.\n  * Fixed a few bugs.\n  * @Bruce: I have noted the request for meson support.\n    I will install it and attempt it once the bulk of the work is done.\n\nv4:\n\n  * Fixed a few bugs, added relevant acks,\n    fixed some typos.\n  * Made each matching functions actually check for a proper\n    list of accepted properties.\n  * rte_kvargs now includes rte_eal directly and keeps rte_log.\n  * added generic string comparison function to rte_kvargs,\n    as some kind of comparison should probably be shared by many layers.\n\nv5:\n\n  * Rebased on master\n  * Use strcspn instead of custom function.\n  * Introduce private generic rte_eth_dev iterator.\n    This could be generalized to other iterators\n    (port_next, owner_id-aware, etc).\n  * Attempted to support meson.build.\n    Got lost in the implicit variables declared\n    when inversing dependencies between kvargs and EAL.\n    Removed anything related to meson.\n  * Postponed genericization of work from\n    device query to device declaration.\n    Much bigger than anticipated, will let this\n    part get in first and iterate over it.\n\nv6:\n\n  * Rebased on master\n  * Introduce RTE_PRIORITY_LAST, to explicitly set\n    the lowest constructor priority.\n  * Fix copyright notice for eth_privage.* files.\n\nv7:\n\n  * Rebased on master\n  * Fix rte_kvargs_strcmp return value.\n  * Fix layer parsing error\n    devstr \"bus=pci/onemorelayer\" now tells\n    that the additional layer is not recognized.\n\nv8:\n\n  * Rebased on master\n  * Cleaned kvargs use: introduced\n    a new parser function, that simplifies\n    using the library for DPDK devargs.\n  * Refactored devargs parsing in a single\n    function within rte_devargs.\n    This function is useful both for rte_dev\n    parsing its iterator, and for rte_devargs\n    parsing --dev parameters (not yet implemented).\n  * A few small bugfixes.\n\nv9:\n\n  * Rebased on master\n  * Fixed cyclic dependency kvargs <-> eal\n  * Fixed a few checkpatch issues\n  * Added dynamic help to testpmd for new \"show device\" command\n  * Added devargs processing stubs to\n    primary buses / classes\n  * Added new --dev generic device declaration option\n\nGaetan Rivet (27):\n  devargs: add non-variadic parsing function\n  kvargs: remove error logs\n  kvargs: build before EAL\n  kvargs: introduce a more flexible parsing function\n  eal: introduce dtor macros\n  eal: introduce device class abstraction\n  eal/class: register destructor\n  devargs: add function to parse device layers\n  eal/dev: add device iterator interface\n  eal/class: add device iteration\n  eal/bus: add device iteration\n  eal/dev: implement device iteration initialization\n  eal/dev: implement device iteration\n  kvargs: add generic string matching callback\n  bus/pci: implement device iteration and comparison\n  bus/pci: add device matching field id\n  bus/vdev: implement device iteration\n  bus/vdev: add device matching field driver\n  ethdev: add private generic device iterator\n  ethdev: register ether layer as a class\n  ethdev: add device matching field name\n  app/testpmd: add show device command\n  bus/pci: pre-process declarative PCI devargs\n  bus/vdev: pre-process declarative vdev devargs\n  bus/pci: process declarative PCI devargs\n  ethdev: process declarative eth devargs\n  eal: add generic dev parameter\n\n app/test-pmd/cmdline.c                      |  54 +++++++\n doc/guides/testpmd_app_ug/testpmd_funcs.rst |  24 +++\n drivers/bus/pci/Makefile                    |   3 +-\n drivers/bus/pci/bsd/pci.c                   |   5 +\n drivers/bus/pci/linux/pci.c                 |   5 +\n drivers/bus/pci/pci_common.c                |   4 +\n drivers/bus/pci/pci_params.c                | 143 ++++++++++++++++++\n drivers/bus/pci/private.h                   |  54 +++++++\n drivers/bus/vdev/Makefile                   |   3 +-\n drivers/bus/vdev/vdev.c                     |  20 ++-\n drivers/bus/vdev/vdev_params.c              | 112 ++++++++++++++\n drivers/bus/vdev/vdev_private.h             |  32 ++++\n drivers/net/failsafe/failsafe_args.c        |   2 +-\n drivers/net/failsafe/failsafe_eal.c         |   2 +-\n lib/Makefile                                |   5 +-\n lib/librte_eal/bsdapp/eal/Makefile          |   2 +\n lib/librte_eal/common/Makefile              |   2 +-\n lib/librte_eal/common/eal_common_class.c    |  62 ++++++++\n lib/librte_eal/common/eal_common_dev.c      | 227 +++++++++++++++++++++++++++-\n lib/librte_eal/common/eal_common_devargs.c  | 190 +++++++++++++++++++++--\n lib/librte_eal/common/eal_common_options.c  |  36 ++++-\n lib/librte_eal/common/eal_options.h         |   2 +\n lib/librte_eal/common/eal_private.h         |  27 ++++\n lib/librte_eal/common/include/rte_bus.h     |   1 +\n lib/librte_eal/common/include/rte_class.h   | 127 ++++++++++++++++\n lib/librte_eal/common/include/rte_common.h  |  24 +++\n lib/librte_eal/common/include/rte_dev.h     |  97 ++++++++++++\n lib/librte_eal/common/include/rte_devargs.h |  53 ++++++-\n lib/librte_eal/linuxapp/eal/Makefile        |   2 +\n lib/librte_eal/rte_eal_version.map          |   5 +\n lib/librte_ethdev/Makefile                  |   4 +-\n lib/librte_ethdev/eth_private.c             |  31 ++++\n lib/librte_ethdev/eth_private.h             |  31 ++++\n lib/librte_ethdev/rte_class_eth.c           | 147 ++++++++++++++++++\n lib/librte_ethdev/rte_ethdev.c              |   9 +-\n lib/librte_kvargs/Makefile                  |   2 +-\n lib/librte_kvargs/rte_kvargs.c              |  57 ++++---\n lib/librte_kvargs/rte_kvargs.h              |  58 +++++++\n lib/librte_kvargs/rte_kvargs_version.map    |   8 +\n 39 files changed, 1615 insertions(+), 57 deletions(-)\n create mode 100644 drivers/bus/pci/pci_params.c\n create mode 100644 drivers/bus/vdev/vdev_params.c\n create mode 100644 drivers/bus/vdev/vdev_private.h\n create mode 100644 lib/librte_eal/common/eal_common_class.c\n create mode 100644 lib/librte_eal/common/include/rte_class.h\n create mode 100644 lib/librte_ethdev/eth_private.c\n create mode 100644 lib/librte_ethdev/eth_private.h\n create mode 100644 lib/librte_ethdev/rte_class_eth.c"
}