get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 85463,
    "url": "https://patches.dpdk.org/api/patches/85463/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/1608303356-13089-4-git-send-email-xuemingl@nvidia.com/",
    "project": {
        "id": 1,
        "url": "https://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": "<1608303356-13089-4-git-send-email-xuemingl@nvidia.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1608303356-13089-4-git-send-email-xuemingl@nvidia.com",
    "date": "2020-12-18T14:55:52",
    "name": "[RFC,3/7] devarg: change reprsentor ID to bitmap",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "f95da518bec5e4dd472b2202e2b09482e9a748d8",
    "submitter": {
        "id": 1904,
        "url": "https://patches.dpdk.org/api/people/1904/?format=api",
        "name": "Xueming Li",
        "email": "xuemingl@nvidia.com"
    },
    "delegate": {
        "id": 1,
        "url": "https://patches.dpdk.org/api/users/1/?format=api",
        "username": "tmonjalo",
        "first_name": "Thomas",
        "last_name": "Monjalon",
        "email": "thomas@monjalon.net"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/1608303356-13089-4-git-send-email-xuemingl@nvidia.com/mbox/",
    "series": [
        {
            "id": 14376,
            "url": "https://patches.dpdk.org/api/series/14376/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=14376",
            "date": "2020-12-18T14:55:49",
            "name": "support SubFunction representor",
            "version": 1,
            "mbox": "https://patches.dpdk.org/series/14376/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/85463/comments/",
    "check": "warning",
    "checks": "https://patches.dpdk.org/api/patches/85463/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 65948A09FD;\n\tFri, 18 Dec 2020 15:56:44 +0100 (CET)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 1A24CCB06;\n\tFri, 18 Dec 2020 15:56:16 +0100 (CET)",
            "from mellanox.co.il (mail-il-dmz.mellanox.com [193.47.165.129])\n by dpdk.org (Postfix) with ESMTP id E5425CAF7\n for <dev@dpdk.org>; Fri, 18 Dec 2020 15:56:12 +0100 (CET)",
            "from Internal Mail-Server by MTLPINE1 (envelope-from\n xuemingl@nvidia.com) with SMTP; 18 Dec 2020 16:56:06 +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 0BIEu65T013340;\n Fri, 18 Dec 2020 16:56:06 +0200"
        ],
        "From": "Xueming Li <xuemingl@nvidia.com>",
        "To": "Viacheslav Ovsiienko <viacheslavo@nvidia.com>,\n Thomas Monjalon <thomas@monjalon.net>,\n Ferruh Yigit <ferruh.yigit@intel.com>,\n Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>,\n Olivier Matz <olivier.matz@6wind.com>, Matan Azrad <matan@nvidia.com>",
        "Cc": "dev@dpdk.org, xuemingl@nvidia.com, Asaf Penso <asafp@nvidia.com>",
        "Date": "Fri, 18 Dec 2020 14:55:52 +0000",
        "Message-Id": "<1608303356-13089-4-git-send-email-xuemingl@nvidia.com>",
        "X-Mailer": "git-send-email 1.8.3.1",
        "In-Reply-To": "<1608303356-13089-1-git-send-email-xuemingl@nvidia.com>",
        "References": "<1608303356-13089-1-git-send-email-xuemingl@nvidia.com>",
        "Subject": "[dpdk-dev] [RFC 3/7] devarg: change reprsentor ID to bitmap",
        "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": "In eth representor comparer callback, ethdev was compared with devarg.\nSince ethdev representor port didn't contain controller(host) and owner\nport information, callback only compared representor port and returned\nrepresentor port on other PF port.\n\nThis patch changes representor port to bitmap encoding, expands and\nupdates representor port ID after parsing, when device representor ID\nuses the same bitmap encoding, the eth representor comparer callback\nreturns correct ethdev.\n\nRepresentor port ID bitmap definition:\n Representor ID bitmap:\n xxxx xxxx xxxx xxxx\n |||| |LLL LLLL LLLL vf/sf id\n |||| L 1:sf, 0:vf\n ||LL pf id\n LL controller(host) id\n\nSigned-off-by: Xueming Li <xuemingl@nvidia.com>\n---\n 0000-cover-letter.patch               | 44 +++++++++++++++++++++++++++\n lib/librte_ethdev/ethdev_private.c    | 42 ++++++++++++++++++++++++-\n lib/librte_ethdev/rte_ethdev_driver.h | 22 ++++++++++++++\n 3 files changed, 107 insertions(+), 1 deletion(-)\n create mode 100644 0000-cover-letter.patch",
    "diff": "diff --git a/0000-cover-letter.patch b/0000-cover-letter.patch\nnew file mode 100644\nindex 0000000000..3f8ce2be72\n--- /dev/null\n+++ b/0000-cover-letter.patch\n@@ -0,0 +1,44 @@\n+From 4e1f8fc062fa6813e0b57f78ad72760601ca1d98 Mon Sep 17 00:00:00 2001\n+From: Xueming Li <xuemingl@nvidia.com>\n+Date: Fri, 18 Dec 2020 22:31:53 +0800\n+Subject: [RFC 0/7] *** SUBJECT HERE ***\n+To: Viacheslav Ovsiienko <viacheslavo@nvidia.com>,\n+    Thomas Monjalon <thomas@monjalon.net>,\n+    Ferruh Yigit <ferruh.yigit@intel.com>,\n+    Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>,\n+    Olivier Matz <olivier.matz@6wind.com>,\n+    Matan Azrad <matan@nvidia.com>\n+Cc: dev@dpdk.org,\n+    xuemingl@nvidia.com,\n+    Asaf Penso <asafp@nvidia.com>\n+\n+*** BLURB HERE ***\n+\n+Xueming Li (7):\n+  ethdev: support sub function representor\n+  ethdev: support multi-host representor\n+  devarg: change reprsentor ID to bitmap\n+  ethdev: capability for new representor syntax\n+  kvargs: update parser for new representor syntax\n+  common/mlx5: update representor name parsing\n+  net/mlx5: support representor of sub function\n+\n+ config/rte_config.h                        |   1 +\n+ drivers/common/mlx5/linux/mlx5_common_os.c |  32 ++--\n+ drivers/common/mlx5/linux/mlx5_nl.c        |   2 +\n+ drivers/common/mlx5/mlx5_common.h          |   2 +\n+ drivers/net/mlx5/linux/mlx5_ethdev_os.c    |   5 +\n+ drivers/net/mlx5/linux/mlx5_os.c           |  69 ++++++++-\n+ drivers/net/mlx5/mlx5_ethdev.c             |   2 +\n+ lib/librte_ethdev/ethdev_private.c         | 163 ++++++++++++++-------\n+ lib/librte_ethdev/ethdev_private.h         |   3 -\n+ lib/librte_ethdev/rte_class_eth.c          |   7 +-\n+ lib/librte_ethdev/rte_ethdev.c             |   5 +-\n+ lib/librte_ethdev/rte_ethdev.h             |   2 +\n+ lib/librte_ethdev/rte_ethdev_driver.h      |  35 +++++\n+ lib/librte_kvargs/rte_kvargs.c             |  82 +++++++----\n+ 14 files changed, 306 insertions(+), 104 deletions(-)\n+\n+-- \n+2.25.1\n+\ndiff --git a/lib/librte_ethdev/ethdev_private.c b/lib/librte_ethdev/ethdev_private.c\nindex 3e455acea9..a0fc187378 100644\n--- a/lib/librte_ethdev/ethdev_private.c\n+++ b/lib/librte_ethdev/ethdev_private.c\n@@ -93,16 +93,20 @@ rte_eth_devargs_process_list(char *str, uint16_t *list, uint16_t *len_list,\n }\n \n /*\n- * representor format:\n+ * Parse representor ports, expand and update representor port ID.\n+ * Representor format:\n  *   #: range or single number of VF representor - legacy\n  *   [[c#]pf#]vf#: VF port representor/s\n  *   [[c#]pf#]sf#: SF port representor/s\n+ *\n+ * See RTE_ETH_REPR() for representor ID format.\n  */\n int\n rte_eth_devargs_parse_representor_ports(char *str, void *data)\n {\n \tstruct rte_eth_devargs *eth_da = data;\n \tint ret;\n+\tuint32_t c, p, f, i = 0;\n \n \teth_da->type = RTE_ETH_REPRESENTOR_NONE;\n \tif (str[0] == 'c') {\n@@ -136,6 +140,42 @@ rte_eth_devargs_parse_representor_ports(char *str, void *data)\n \t}\n \tret = rte_eth_devargs_process_list(str, eth_da->representor_ports,\n \t\t&eth_da->nb_representor_ports, RTE_MAX_ETHPORTS);\n+\tif (ret < 0)\n+\t\tgoto err;\n+\n+\t/* Set default values, expand and update representor ID. */\n+\tif (!eth_da->nb_mh_controllers) {\n+\t\teth_da->nb_mh_controllers = 1;\n+\t\teth_da->mh_controllers[0] = 0;\n+\t}\n+\tif (!eth_da->nb_ports) {\n+\t\teth_da->nb_ports = 1;\n+\t\teth_da->ports[0] = 0;\n+\t}\n+\tif (!eth_da->nb_representor_ports) {\n+\t\teth_da->nb_representor_ports = 1;\n+\t\teth_da->representor_ports[0] = 0;\n+\t}\n+\tfor (c = 0; c < eth_da->nb_mh_controllers; ++c) {\n+\t\tfor (p = 0; p < eth_da->nb_ports; ++p) {\n+\t\t\tfor (f = 0; f < eth_da->nb_representor_ports; ++f) {\n+\t\t\t\ti = c * eth_da->nb_ports *\n+\t\t\t\t\teth_da->nb_representor_ports +\n+\t\t\t\t    p * eth_da->nb_representor_ports + f;\n+\t\t\t\tif (i >= RTE_DIM(eth_da->representor_ports)) {\n+\t\t\t\t\tRTE_LOG(ERR, EAL, \"too many representor specified: %s\",\n+\t\t\t\t\t\tstr);\n+\t\t\t\t\treturn -EINVAL;\n+\t\t\t\t}\n+\t\t\t\teth_da->representor_ports[i] = RTE_ETH_REPR(\n+\t\t\t\t\teth_da->mh_controllers[c],\n+\t\t\t\t\teth_da->ports[p],\n+\t\t\t\t\teth_da->type == RTE_ETH_REPRESENTOR_SF,\n+\t\t\t\t\teth_da->representor_ports[f]);\n+\t\t\t}\n+\t\t}\n+\t}\n+\teth_da->nb_representor_ports = i + 1;\n err:\n \tif (ret < 0)\n \t\tRTE_LOG(ERR, EAL, \"wrong representor format: %s\", str);\ndiff --git a/lib/librte_ethdev/rte_ethdev_driver.h b/lib/librte_ethdev/rte_ethdev_driver.h\nindex a7969c9408..dbad55c704 100644\n--- a/lib/librte_ethdev/rte_ethdev_driver.h\n+++ b/lib/librte_ethdev/rte_ethdev_driver.h\n@@ -1218,6 +1218,28 @@ struct rte_eth_devargs {\n \tenum rte_eth_representor_type type; /* type of representor */\n };\n \n+/**\n+ * Encoding representor port ID.\n+ *\n+ * The compact format is used for device iterator that comparing\n+ * ethdev representor ID with target devargs.\n+ *\n+ * xxxx xxxx xxxx xxxx\n+ * |||| |LLL LLLL LLLL vf/sf id\n+ * |||| L 1:sf, 0:vf\n+ * ||LL pf id\n+ * LL controller(host) id\n+ */\n+#define RTE_ETH_REPR(c, pf, sf, port) \\\n+\t((((c) & 3) << 14) |     \\\n+\t(((pf) & 3) << 12) |     \\\n+\t(!!(sf) << 11) |         \\\n+\t((port) & 0x7ff))\n+/** Get 'pf' port id from representor ID */\n+#define RTE_ETH_REPR_PF(repr) (((repr) >> 12) & 3)\n+/** Get 'vf' or 'sf' port from representor ID */\n+#define RTE_ETH_REPR_PORT(repr) ((repr) & 0x7ff)\n+\n /**\n  * PMD helper function to parse ethdev arguments\n  *\n",
    "prefixes": [
        "RFC",
        "3/7"
    ]
}