get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 76929,
    "url": "http://patches.dpdk.org/api/patches/76929/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20200908201552.14423-2-getelson@nvidia.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": "<20200908201552.14423-2-getelson@nvidia.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20200908201552.14423-2-getelson@nvidia.com",
    "date": "2020-09-08T20:15:48",
    "name": "[v2,1/4] ethdev: allow negative values in flow rule types",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "99ff1049d31d452fe1e906585058d484f6a79f75",
    "submitter": {
        "id": 1882,
        "url": "http://patches.dpdk.org/api/people/1882/?format=api",
        "name": "Gregory Etelson",
        "email": "getelson@nvidia.com"
    },
    "delegate": {
        "id": 319,
        "url": "http://patches.dpdk.org/api/users/319/?format=api",
        "username": "fyigit",
        "first_name": "Ferruh",
        "last_name": "Yigit",
        "email": "ferruh.yigit@amd.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20200908201552.14423-2-getelson@nvidia.com/mbox/",
    "series": [
        {
            "id": 12033,
            "url": "http://patches.dpdk.org/api/series/12033/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=12033",
            "date": "2020-09-08T20:15:47",
            "name": "Tunnel Offload API",
            "version": 2,
            "mbox": "http://patches.dpdk.org/series/12033/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/76929/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/76929/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 C626FA04B1;\n\tTue,  8 Sep 2020 22:16:34 +0200 (CEST)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 9A0DB1BF7E;\n\tTue,  8 Sep 2020 22:16:34 +0200 (CEST)",
            "from hqnvemgate26.nvidia.com (hqnvemgate26.nvidia.com\n [216.228.121.65]) by dpdk.org (Postfix) with ESMTP id 435DD2BAB\n for <dev@dpdk.org>; Tue,  8 Sep 2020 22:16:32 +0200 (CEST)",
            "from hqpgpgate101.nvidia.com (Not Verified[216.228.121.13]) by\n hqnvemgate26.nvidia.com (using TLS: TLSv1.2, DES-CBC3-SHA)\n id <B5f57e6920000>; Tue, 08 Sep 2020 13:16:18 -0700",
            "from hqmail.nvidia.com ([172.20.161.6])\n by hqpgpgate101.nvidia.com (PGP Universal service);\n Tue, 08 Sep 2020 13:16:31 -0700",
            "from nvidia.com (10.124.1.5) by HQMAIL107.nvidia.com (172.20.187.13)\n with Microsoft SMTP Server (TLS) id 15.0.1473.3;\n Tue, 8 Sep 2020 20:16:14 +0000"
        ],
        "X-PGP-Universal": "processed;\n by hqpgpgate101.nvidia.com on Tue, 08 Sep 2020 13:16:31 -0700",
        "From": "Gregory Etelson <getelson@nvidia.com>",
        "To": "<dev@dpdk.org>",
        "CC": "<matan@nvidia.com>, <rasland@nvidia.com>, <orika@nvidia.com>, \"Gregory\n Etelson\" <getelson@mellanox.com>, Ori Kam <orika@mellanox.com>, \"Thomas\n Monjalon\" <thomas@monjalon.net>, Ferruh Yigit <ferruh.yigit@intel.com>,\n Andrew Rybchenko <arybchenko@solarflare.com>",
        "Date": "Tue, 8 Sep 2020 23:15:48 +0300",
        "Message-ID": "<20200908201552.14423-2-getelson@nvidia.com>",
        "X-Mailer": "git-send-email 2.25.1",
        "In-Reply-To": "<20200908201552.14423-1-getelson@nvidia.com>",
        "References": "<20200625160348.26220-1-getelson@mellanox.com>\n <20200908201552.14423-1-getelson@nvidia.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "quoted-printable",
        "Content-Type": "text/plain",
        "X-Originating-IP": "[10.124.1.5]",
        "X-ClientProxiedBy": "HQMAIL101.nvidia.com (172.20.187.10) To\n HQMAIL107.nvidia.com (172.20.187.13)",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=nvidia.com; s=n1;\n t=1599596178; bh=ev4lGSMU0wUgibmkYve5wBiF5NX8m5AH1TmsZIS+GgM=;\n h=X-PGP-Universal:From:To:CC:Subject:Date:Message-ID:X-Mailer:\n In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:\n Content-Type:X-Originating-IP:X-ClientProxiedBy;\n b=do2AkGmGCt40k4WJC9uBagDJt3YkK4WQewy1kNoQwGbHDZJsvRZ4TknrtKIQTcBiY\n UmDnui7HtRhviRsvYdfS2r0lnRc/HT5cCKQU8c8FimXRM5otm8H33XhL6KtJSBXpDD\n WbGsXr1zUvBxgWOdreNSfc116cQgXDqljVkM/57MMSxuKtSmZrLTfjjAxIszx4Qvvn\n BpT4LQtnpxR6jnt3p6Eto/b7VzLyDgcmip4TdUbt4oNOzMez18c8Xqd04pow3AmmwQ\n WcD2rEwuGkUO4ZA5GrWF+utQpLoU+klYBo+CeFebOrCSE925lQLoNL0YAyte6+Gq/A\n QmRCWTqbdKUXw==",
        "Subject": "[dpdk-dev] [PATCH v2 1/4] ethdev: allow negative values in flow\n\trule types",
        "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": "From: Gregory Etelson <getelson@mellanox.com>\n\nRTE flow items & actions use positive values in item & action type.\nNegative values are reserved for PMD private types. PMD\nitems & actions usually are not exposed to application and are not\nused to create RTE flows.\n\nThe patch allows applications with access to PMD flow\nitems & actions ability to integrate RTE and PMD items & actions\nand use them to create flow rule.\n\nRTE flow library functions cannot work with PMD private items and\nactions (elements) because RTE flow has no API to query PMD flow\nobject size. In the patch, PMD flow elements use object pointer.\nRTE flow library functions handle PMD element object size as\nsize of a pointer. PMD handles its objects internally.\n\nSigned-off-by: Gregory Etelson <getelson@mellanox.com>\nAcked-by: Ori Kam <orika@mellanox.com>\n---\nv2:\n* Update commit log\n---\n lib/librte_ethdev/rte_flow.c | 30 ++++++++++++++++++++++++------\n 1 file changed, 24 insertions(+), 6 deletions(-)",
    "diff": "diff --git a/lib/librte_ethdev/rte_flow.c b/lib/librte_ethdev/rte_flow.c\nindex f8fdd68fe9..9905426bc9 100644\n--- a/lib/librte_ethdev/rte_flow.c\n+++ b/lib/librte_ethdev/rte_flow.c\n@@ -564,7 +564,12 @@ rte_flow_conv_item_spec(void *buf, const size_t size,\n \t\t}\n \t\tbreak;\n \tdefault:\n-\t\toff = rte_flow_desc_item[item->type].size;\n+\t\t/**\n+\t\t * allow PMD private flow item\n+\t\t */\n+\t\toff = (uint32_t)item->type <= INT_MAX ?\n+\t\t\trte_flow_desc_item[item->type].size :\n+\t\t\tsizeof(void *);\n \t\trte_memcpy(buf, data, (size > off ? off : size));\n \t\tbreak;\n \t}\n@@ -667,7 +672,12 @@ rte_flow_conv_action_conf(void *buf, const size_t size,\n \t\t}\n \t\tbreak;\n \tdefault:\n-\t\toff = rte_flow_desc_action[action->type].size;\n+\t\t/**\n+\t\t * allow PMD private flow action\n+\t\t */\n+\t\toff = (uint32_t)action->type <= INT_MAX ?\n+\t\t\trte_flow_desc_action[action->type].size :\n+\t\t\tsizeof(void *);\n \t\trte_memcpy(buf, action->conf, (size > off ? off : size));\n \t\tbreak;\n \t}\n@@ -709,8 +719,12 @@ rte_flow_conv_pattern(struct rte_flow_item *dst,\n \tunsigned int i;\n \n \tfor (i = 0, off = 0; !num || i != num; ++i, ++src, ++dst) {\n-\t\tif ((size_t)src->type >= RTE_DIM(rte_flow_desc_item) ||\n-\t\t    !rte_flow_desc_item[src->type].name)\n+\t\t/**\n+\t\t * allow PMD private flow item\n+\t\t */\n+\t\tif (((uint32_t)src->type <= INT_MAX) &&\n+\t\t\t((size_t)src->type >= RTE_DIM(rte_flow_desc_item) ||\n+\t\t    !rte_flow_desc_item[src->type].name))\n \t\t\treturn rte_flow_error_set\n \t\t\t\t(error, ENOTSUP, RTE_FLOW_ERROR_TYPE_ITEM, src,\n \t\t\t\t \"cannot convert unknown item type\");\n@@ -798,8 +812,12 @@ rte_flow_conv_actions(struct rte_flow_action *dst,\n \tunsigned int i;\n \n \tfor (i = 0, off = 0; !num || i != num; ++i, ++src, ++dst) {\n-\t\tif ((size_t)src->type >= RTE_DIM(rte_flow_desc_action) ||\n-\t\t    !rte_flow_desc_action[src->type].name)\n+\t\t/**\n+\t\t * allow PMD private flow action\n+\t\t */\n+\t\tif (((uint32_t)src->type <= INT_MAX) &&\n+\t\t    ((size_t)src->type >= RTE_DIM(rte_flow_desc_action) ||\n+\t\t    !rte_flow_desc_action[src->type].name))\n \t\t\treturn rte_flow_error_set\n \t\t\t\t(error, ENOTSUP, RTE_FLOW_ERROR_TYPE_ACTION,\n \t\t\t\t src, \"cannot convert unknown action type\");\n",
    "prefixes": [
        "v2",
        "1/4"
    ]
}