get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 81057,
    "url": "http://patches.dpdk.org/api/patches/81057/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20201016081320.186775-18-ciara.power@intel.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": "<20201016081320.186775-18-ciara.power@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20201016081320.186775-18-ciara.power@intel.com",
    "date": "2020-10-16T08:13:19",
    "name": "[v8,17/18] node: choose vector path at runtime",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "abb5916904f9421a6abfd21dfe7bfe923cc0e1ed",
    "submitter": {
        "id": 978,
        "url": "http://patches.dpdk.org/api/people/978/?format=api",
        "name": "Power, Ciara",
        "email": "ciara.power@intel.com"
    },
    "delegate": {
        "id": 24651,
        "url": "http://patches.dpdk.org/api/users/24651/?format=api",
        "username": "dmarchand",
        "first_name": "David",
        "last_name": "Marchand",
        "email": "david.marchand@redhat.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20201016081320.186775-18-ciara.power@intel.com/mbox/",
    "series": [
        {
            "id": 13046,
            "url": "http://patches.dpdk.org/api/series/13046/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=13046",
            "date": "2020-10-16T08:13:02",
            "name": "add max SIMD bitwidth to EAL",
            "version": 8,
            "mbox": "http://patches.dpdk.org/series/13046/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/81057/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/81057/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 B6328A04DB;\n\tFri, 16 Oct 2020 10:19:10 +0200 (CEST)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 344F61EBA5;\n\tFri, 16 Oct 2020 10:14:17 +0200 (CEST)",
            "from mga04.intel.com (mga04.intel.com [192.55.52.120])\n by dpdk.org (Postfix) with ESMTP id A23A21EB98\n for <dev@dpdk.org>; Fri, 16 Oct 2020 10:14:14 +0200 (CEST)",
            "from fmsmga006.fm.intel.com ([10.253.24.20])\n by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 16 Oct 2020 01:14:14 -0700",
            "from silpixa00400355.ir.intel.com (HELO\n silpixa00400355.ger.corp.intel.com) ([10.237.222.239])\n by fmsmga006.fm.intel.com with ESMTP; 16 Oct 2020 01:14:11 -0700"
        ],
        "IronPort-SDR": [
            "\n EsjlLiNhO6dYtkpPXi7dwVXPuq04Ee6MbklXhzGZYZZVMs98J/BPP0QZQdRpiM91bV/oFkg5zK\n +jiryKB46DHA==",
            "\n BuxyUYDHULPw4Og4rWNeDU97s+QjOLjnvSZIZmKZ4+M5+QpDUQCjY5jSkfNghZdzDtm3hU4PBi\n EvoVJwzvKPqg=="
        ],
        "X-IronPort-AV": [
            "E=McAfee;i=\"6000,8403,9775\"; a=\"163937704\"",
            "E=Sophos;i=\"5.77,382,1596524400\"; d=\"scan'208\";a=\"163937704\"",
            "E=Sophos;i=\"5.77,382,1596524400\"; d=\"scan'208\";a=\"521097044\""
        ],
        "X-Amp-Result": "SKIPPED(no attachment in message)",
        "X-Amp-File-Uploaded": "False",
        "X-ExtLoop1": "1",
        "From": "Ciara Power <ciara.power@intel.com>",
        "To": "dev@dpdk.org",
        "Cc": "viktorin@rehivetech.com, ruifeng.wang@arm.com, jerinj@marvell.com,\n drc@linux.vnet.ibm.com, bruce.richardson@intel.com,\n konstantin.ananyev@intel.com, david.marchand@redhat.com,\n Ciara Power <ciara.power@intel.com>,\n Nithin Dabilpuram <ndabilpuram@marvell.com>,\n Pavan Nikhilesh <pbhagavatula@marvell.com>,\n Kiran Kumar K <kirankumark@marvell.com>",
        "Date": "Fri, 16 Oct 2020 09:13:19 +0100",
        "Message-Id": "<20201016081320.186775-18-ciara.power@intel.com>",
        "X-Mailer": "git-send-email 2.22.0",
        "In-Reply-To": "<20201016081320.186775-1-ciara.power@intel.com>",
        "References": "<20200807155859.63888-1-ciara.power@intel.com>\n <20201016081320.186775-1-ciara.power@intel.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[dpdk-dev] [PATCH v8 17/18] node: choose vector path at runtime",
        "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": "When choosing the vector path, max SIMD bitwidth is now checked to\nensure the vector path is suitable. To do this, the scalar function is\nchosen by default in the struct, but at node initialisation time, this\nfunction pointer is updated to the vector version if supported, and\nif it is within the max SIMD bitwidth limit.\n\nCc: Nithin Dabilpuram <ndabilpuram@marvell.com>\nCc: Pavan Nikhilesh <pbhagavatula@marvell.com>\nCc: Jerin Jacob <jerinj@marvell.com>\nCc: Kiran Kumar K <kirankumark@marvell.com>\n\nSigned-off-by: Ciara Power <ciara.power@intel.com>\nAcked-by: Nithin Dabilpuram <ndabilpuram@marvell.com>\n\n---\nv6:\n  - Removed generic process function.\n  - Change the process function pointer at node init time to vector\n    function if suitable.\n---\n lib/librte_node/ip4_lookup.c      | 14 +++++++++-----\n lib/librte_node/ip4_lookup_neon.h |  2 +-\n lib/librte_node/ip4_lookup_sse.h  |  2 +-\n 3 files changed, 11 insertions(+), 7 deletions(-)",
    "diff": "diff --git a/lib/librte_node/ip4_lookup.c b/lib/librte_node/ip4_lookup.c\nindex 293c77f39e..934a6d7eab 100644\n--- a/lib/librte_node/ip4_lookup.c\n+++ b/lib/librte_node/ip4_lookup.c\n@@ -34,10 +34,10 @@ static struct ip4_lookup_node_main ip4_lookup_nm;\n #include \"ip4_lookup_neon.h\"\n #elif defined(RTE_ARCH_X86)\n #include \"ip4_lookup_sse.h\"\n-#else\n+#endif\n \n static uint16_t\n-ip4_lookup_node_process(struct rte_graph *graph, struct rte_node *node,\n+ip4_lookup_node_process_scalar(struct rte_graph *graph, struct rte_node *node,\n \t\t\tvoid **objs, uint16_t nb_objs)\n {\n \tstruct rte_ipv4_hdr *ipv4_hdr;\n@@ -109,8 +109,6 @@ ip4_lookup_node_process(struct rte_graph *graph, struct rte_node *node,\n \treturn nb_objs;\n }\n \n-#endif\n-\n int\n rte_node_ip4_route_add(uint32_t ip, uint8_t depth, uint16_t next_hop,\n \t\t       enum rte_node_ip4_lookup_next next_node)\n@@ -194,13 +192,19 @@ ip4_lookup_node_init(const struct rte_graph *graph, struct rte_node *node)\n \t\tinit_once = 1;\n \t}\n \t*lpm_p = ip4_lookup_nm.lpm_tbl[graph->socket];\n+\n+#if defined(__ARM_NEON) || defined(RTE_ARCH_X86)\n+\tif (rte_get_max_simd_bitwidth() >= RTE_SIMD_128)\n+\t\tnode->process = ip4_lookup_node_process_vec;\n+#endif\n+\n \tnode_dbg(\"ip4_lookup\", \"Initialized ip4_lookup node\");\n \n \treturn 0;\n }\n \n static struct rte_node_register ip4_lookup_node = {\n-\t.process = ip4_lookup_node_process,\n+\t.process = ip4_lookup_node_process_scalar,\n \t.name = \"ip4_lookup\",\n \n \t.init = ip4_lookup_node_init,\ndiff --git a/lib/librte_node/ip4_lookup_neon.h b/lib/librte_node/ip4_lookup_neon.h\nindex 5e5a7d87be..0ad2763b82 100644\n--- a/lib/librte_node/ip4_lookup_neon.h\n+++ b/lib/librte_node/ip4_lookup_neon.h\n@@ -7,7 +7,7 @@\n \n /* ARM64 NEON */\n static uint16_t\n-ip4_lookup_node_process(struct rte_graph *graph, struct rte_node *node,\n+ip4_lookup_node_process_vec(struct rte_graph *graph, struct rte_node *node,\n \t\t\tvoid **objs, uint16_t nb_objs)\n {\n \tstruct rte_mbuf *mbuf0, *mbuf1, *mbuf2, *mbuf3, **pkts;\ndiff --git a/lib/librte_node/ip4_lookup_sse.h b/lib/librte_node/ip4_lookup_sse.h\nindex a071cc5919..264c986071 100644\n--- a/lib/librte_node/ip4_lookup_sse.h\n+++ b/lib/librte_node/ip4_lookup_sse.h\n@@ -7,7 +7,7 @@\n \n /* X86 SSE */\n static uint16_t\n-ip4_lookup_node_process(struct rte_graph *graph, struct rte_node *node,\n+ip4_lookup_node_process_vec(struct rte_graph *graph, struct rte_node *node,\n \t\t\tvoid **objs, uint16_t nb_objs)\n {\n \tstruct rte_mbuf *mbuf0, *mbuf1, *mbuf2, *mbuf3, **pkts;\n",
    "prefixes": [
        "v8",
        "17/18"
    ]
}