get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 88957,
    "url": "http://patchwork.dpdk.org/api/patches/88957/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dpdk/patch/1615468416-10115-7-git-send-email-xuemingl@nvidia.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": "<1615468416-10115-7-git-send-email-xuemingl@nvidia.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1615468416-10115-7-git-send-email-xuemingl@nvidia.com",
    "date": "2021-03-11T13:13:29",
    "name": "[v9,06/10] ethdev: support PF index in representor",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "fe7a1dad3c5465c0421e9bc7f74384367eec40e4",
    "submitter": {
        "id": 1904,
        "url": "http://patchwork.dpdk.org/api/people/1904/?format=api",
        "name": "Xueming Li",
        "email": "xuemingl@nvidia.com"
    },
    "delegate": {
        "id": 319,
        "url": "http://patchwork.dpdk.org/api/users/319/?format=api",
        "username": "fyigit",
        "first_name": "Ferruh",
        "last_name": "Yigit",
        "email": "ferruh.yigit@amd.com"
    },
    "mbox": "http://patchwork.dpdk.org/project/dpdk/patch/1615468416-10115-7-git-send-email-xuemingl@nvidia.com/mbox/",
    "series": [
        {
            "id": 15613,
            "url": "http://patchwork.dpdk.org/api/series/15613/?format=api",
            "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=15613",
            "date": "2021-03-11T13:13:23",
            "name": "ethdev: support SubFunction representor",
            "version": 9,
            "mbox": "http://patchwork.dpdk.org/series/15613/mbox/"
        }
    ],
    "comments": "http://patchwork.dpdk.org/api/patches/88957/comments/",
    "check": "success",
    "checks": "http://patchwork.dpdk.org/api/patches/88957/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 36039A0575;\n\tThu, 11 Mar 2021 14:14:45 +0100 (CET)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 2E67A22A4E1;\n\tThu, 11 Mar 2021 14:14:21 +0100 (CET)",
            "from mellanox.co.il (mail-il-dmz.mellanox.com [193.47.165.129])\n by mails.dpdk.org (Postfix) with ESMTP id 18CC822A4E1\n for <dev@dpdk.org>; Thu, 11 Mar 2021 14:14:18 +0100 (CET)",
            "from Internal Mail-Server by MTLPINE1 (envelope-from\n xuemingl@nvidia.com) with SMTP; 11 Mar 2021 15:14:16 +0200",
            "from nvidia.com (pegasus05.mtr.labs.mlnx [10.210.16.100])\n by labmailer.mlnx (8.13.8/8.13.8) with ESMTP id 12BDDkZ8023953;\n Thu, 11 Mar 2021 15:14:16 +0200"
        ],
        "From": "Xueming Li <xuemingl@nvidia.com>",
        "To": "Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>,\n Ferruh Yigit <ferruh.yigit@intel.com>",
        "Cc": "dev@dpdk.org, Viacheslav Ovsiienko <viacheslavo@nvidia.com>,\n xuemingl@nvidia.com, Asaf Penso <asafp@nvidia.com>,\n Thomas Monjalon <thomas@monjalon.net>",
        "Date": "Thu, 11 Mar 2021 13:13:29 +0000",
        "Message-Id": "<1615468416-10115-7-git-send-email-xuemingl@nvidia.com>",
        "X-Mailer": "git-send-email 1.8.3.1",
        "In-Reply-To": [
            "<1615468416-10115-1-git-send-email-xuemingl@nvidia.com>",
            "<1608303356-13089-2-git-send-email-xuemingl@nvidia.com>"
        ],
        "References": [
            "<1615468416-10115-1-git-send-email-xuemingl@nvidia.com>",
            "<1608303356-13089-2-git-send-email-xuemingl@nvidia.com>"
        ],
        "Subject": "[dpdk-dev] [PATCH v9 06/10] ethdev: support PF index in representor",
        "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": "With Kernel bonding, multiple underlying PFs are bonded, VFs come\nfrom different PF, need to identify representor of VFs unambiguously by\nadding PF index.\n\nThis patch introduces optional 'pf' section to representor devargs\nsyntax, examples:\n representor=pf0vf0             - single VF representor\n representor=pf[0-1]sf[0-1023]  - SF representors from 2 PFs\n\nPF type representor is supported by using standalone 'pf' section:\n representor=pf1                - PF representor\n\nSigned-off-by: Xueming Li <xuemingl@nvidia.com>\nAcked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>\nAcked-by: Thomas Monjalon <thomas@monjalon.net>\nAcked-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>\n---\n doc/guides/prog_guide/poll_mode_drv.rst |  3 +++\n lib/librte_ethdev/ethdev_private.c      | 19 +++++++++++++++++--\n lib/librte_ethdev/rte_ethdev.h          |  1 +\n 3 files changed, 21 insertions(+), 2 deletions(-)",
    "diff": "diff --git a/doc/guides/prog_guide/poll_mode_drv.rst b/doc/guides/prog_guide/poll_mode_drv.rst\nindex 063a4680df..0d4ac77a7c 100644\n--- a/doc/guides/prog_guide/poll_mode_drv.rst\n+++ b/doc/guides/prog_guide/poll_mode_drv.rst\n@@ -382,6 +382,9 @@ parameters to those ports.\n    -a DBDF,representor=sf[1,3,5]\n    -a DBDF,representor=sf[0-1023]\n    -a DBDF,representor=sf[0,2-4,7,9-11]\n+   -a DBDF,representor=pf1vf0\n+   -a DBDF,representor=pf[0-1]sf[0-127]\n+   -a DBDF,representor=pf1\n \n Note: PMDs are not required to support the standard device arguments and users\n should consult the relevant PMD documentation to see support devargs.\ndiff --git a/lib/librte_ethdev/ethdev_private.c b/lib/librte_ethdev/ethdev_private.c\nindex 13c191192e..35a57c56ec 100644\n--- a/lib/librte_ethdev/ethdev_private.c\n+++ b/lib/librte_ethdev/ethdev_private.c\n@@ -118,8 +118,9 @@ rte_eth_devargs_process_list(char *str, uint16_t *list, uint16_t *len_list,\n  *\n  * Representor format:\n  *   #: range or single number of VF representor - legacy\n- *   vf#: VF port representor/s\n- *   sf#: SF port representor/s\n+ *   [pf#]vf#: VF port representor/s\n+ *   [pf#]sf#: SF port representor/s\n+ *   pf#:      PF port representor/s\n  *\n  * Examples of #:\n  *  2               - single\n@@ -131,6 +132,14 @@ rte_eth_devargs_parse_representor_ports(char *str, void *data)\n {\n \tstruct rte_eth_devargs *eth_da = data;\n \n+\tif (str[0] == 'p' && str[1] == 'f') {\n+\t\teth_da->type = RTE_ETH_REPRESENTOR_PF;\n+\t\tstr += 2;\n+\t\tstr = rte_eth_devargs_process_list(str, eth_da->ports,\n+\t\t\t\t&eth_da->nb_ports, RTE_DIM(eth_da->ports));\n+\t\tif (str == NULL || str[0] == '\\0')\n+\t\t\tgoto done;\n+\t}\n \tif (str[0] == 'v' && str[1] == 'f') {\n \t\teth_da->type = RTE_ETH_REPRESENTOR_VF;\n \t\tstr += 2;\n@@ -138,11 +147,17 @@ rte_eth_devargs_parse_representor_ports(char *str, void *data)\n \t\teth_da->type = RTE_ETH_REPRESENTOR_SF;\n \t\tstr += 2;\n \t} else {\n+\t\t/* 'pf' must followed by 'vf' or 'sf'. */\n+\t\tif (eth_da->type == RTE_ETH_REPRESENTOR_PF) {\n+\t\t\tstr = NULL;\n+\t\t\tgoto done;\n+\t\t}\n \t\teth_da->type = RTE_ETH_REPRESENTOR_VF;\n \t}\n \tstr = rte_eth_devargs_process_list(str, eth_da->representor_ports,\n \t\t&eth_da->nb_representor_ports,\n \t\tRTE_DIM(eth_da->representor_ports));\n+done:\n \tif (str == NULL)\n \t\tRTE_LOG(ERR, EAL, \"wrong representor format: %s\\n\", str);\n \treturn str == NULL ? -1 : 0;\ndiff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h\nindex 26b5e109c3..9cd519bf59 100644\n--- a/lib/librte_ethdev/rte_ethdev.h\n+++ b/lib/librte_ethdev/rte_ethdev.h\n@@ -1513,6 +1513,7 @@ enum rte_eth_representor_type {\n \tRTE_ETH_REPRESENTOR_NONE, /**< not a representor. */\n \tRTE_ETH_REPRESENTOR_VF,   /**< representor of Virtual Function. */\n \tRTE_ETH_REPRESENTOR_SF,   /**< representor of Sub Function. */\n+\tRTE_ETH_REPRESENTOR_PF,   /**< representor of Physical Function. */\n };\n \n /**\n",
    "prefixes": [
        "v9",
        "06/10"
    ]
}