get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 834097,
    "url": "http://patchwork.ozlabs.org/api/1.2/patches/834097/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/netdev/patch/20171103205630.1083-13-jakub.kicinski@netronome.com/",
    "project": {
        "id": 7,
        "url": "http://patchwork.ozlabs.org/api/1.2/projects/7/?format=api",
        "name": "Linux network development",
        "link_name": "netdev",
        "list_id": "netdev.vger.kernel.org",
        "list_email": "netdev@vger.kernel.org",
        "web_url": null,
        "scm_url": null,
        "webscm_url": null,
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20171103205630.1083-13-jakub.kicinski@netronome.com>",
    "list_archive_url": null,
    "date": "2017-11-03T20:56:27",
    "name": "[net-next,v2,12/15] nfp: bpf: move program prepare and free into offload.c",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "a9c754f54dde53ed7f197525f4d23ee66406317b",
    "submitter": {
        "id": 67484,
        "url": "http://patchwork.ozlabs.org/api/1.2/people/67484/?format=api",
        "name": "Jakub Kicinski",
        "email": "jakub.kicinski@netronome.com"
    },
    "delegate": {
        "id": 34,
        "url": "http://patchwork.ozlabs.org/api/1.2/users/34/?format=api",
        "username": "davem",
        "first_name": "David",
        "last_name": "Miller",
        "email": "davem@davemloft.net"
    },
    "mbox": "http://patchwork.ozlabs.org/project/netdev/patch/20171103205630.1083-13-jakub.kicinski@netronome.com/mbox/",
    "series": [
        {
            "id": 11839,
            "url": "http://patchwork.ozlabs.org/api/1.2/series/11839/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/netdev/list/?series=11839",
            "date": "2017-11-03T20:56:15",
            "name": "bpf: add offload as a first class citizen",
            "version": 2,
            "mbox": "http://patchwork.ozlabs.org/series/11839/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/834097/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/834097/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<netdev-owner@vger.kernel.org>",
        "X-Original-To": "patchwork-incoming@ozlabs.org",
        "Delivered-To": "patchwork-incoming@ozlabs.org",
        "Authentication-Results": [
            "ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=vger.kernel.org\n\t(client-ip=209.132.180.67; helo=vger.kernel.org;\n\tenvelope-from=netdev-owner@vger.kernel.org;\n\treceiver=<UNKNOWN>)",
            "ozlabs.org; dkim=pass (2048-bit key;\n\tunprotected) header.d=netronome-com.20150623.gappssmtp.com\n\theader.i=@netronome-com.20150623.gappssmtp.com\n\theader.b=\"CUTnu8Oo\"; dkim-atps=neutral"
        ],
        "Received": [
            "from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3yTDmM6Jxdz9s7p\n\tfor <patchwork-incoming@ozlabs.org>;\n\tSat,  4 Nov 2017 07:57:23 +1100 (AEDT)",
            "(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1755927AbdKCU5W (ORCPT <rfc822;patchwork-incoming@ozlabs.org>);\n\tFri, 3 Nov 2017 16:57:22 -0400",
            "from mail-pg0-f67.google.com ([74.125.83.67]:47427 \"EHLO\n\tmail-pg0-f67.google.com\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n\twith ESMTP id S1755189AbdKCU45 (ORCPT\n\t<rfc822;netdev@vger.kernel.org>); Fri, 3 Nov 2017 16:56:57 -0400",
            "by mail-pg0-f67.google.com with SMTP id r25so3448078pgn.4\n\tfor <netdev@vger.kernel.org>; Fri, 03 Nov 2017 13:56:56 -0700 (PDT)",
            "from jkicinski-Precision-T1700.netronome.com ([75.53.12.129])\n\tby smtp.gmail.com with ESMTPSA id\n\to10sm9989029pgq.69.2017.11.03.13.56.55\n\t(version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128);\n\tFri, 03 Nov 2017 13:56:55 -0700 (PDT)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=netronome-com.20150623.gappssmtp.com; s=20150623;\n\th=from:to:cc:subject:date:message-id:in-reply-to:references;\n\tbh=Q1gumYbF1OdC8hIJB50IfCUyMnm/s0CCzl67Q1mGGOo=;\n\tb=CUTnu8OoxPsUfjFawPnlc/SeCJFZUp94ZDZet4SufBd0dhoOgy+WRvyXCt5+DilUL7\n\tr4p9OVIqPYWUW716UyUyMOlAss057Go5QNwOQpyOACZMMRrSt9JxgmkeEBq7DCG3d+Wh\n\t4eXuhjxt1lMsnibdE0WLpCXbk74r1Y+/CUd812VFlzfFfpfE/L562rrYq7parxPQUS8I\n\tXBdF8jTnt3ZRmZmB5rJi1o1XFYR4qvrVDB+revv6sswjr/g7EcVk3PDKdancBLa2MmRn\n\t2aCP8nRLmpREV4JA/+Qhz6Rt7qg8iAPXlh1M7NyMr1JN5Eq2BVekQwFeLHQJnkkomiSO\n\trz1g==",
        "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=Q1gumYbF1OdC8hIJB50IfCUyMnm/s0CCzl67Q1mGGOo=;\n\tb=Vjb6jTOvteoMSGn67FYx8Qeure5R59QDGgSXBjhBGjHIVB+q9IUQvbNrzv7QlffOc3\n\tfvo+EpXWTUN4lrpmM0SAUkect6xmp4XZM5CPGd0iPaqNuKvXG3sAuzgMn3BxB6qaKRUx\n\tcQ9cdMXBe0ImP6mMbNr8p8u4XOCoGXjLZWYyq6RGTq1k/D/0w6DXC5IwfBmd1IhBPJ0P\n\tKM4i/zgTT73BteOX6DAAODw0FQOewz9XNX6p70Yxl0BV5+Aa+EPwEWYUjwZeH4I7xzB7\n\tihm1WlTJPM6YCWfOl1mV0FUHEUb6RfetEi+58MAP3z657zhdoN023EiUVdHNYxRlJVuz\n\tzthA==",
        "X-Gm-Message-State": "AMCzsaWT+OmfA0HQYpbRJDh+yUVxxDSx5U49T2OfaHgpizgyYgYkNTgm\n\tVzCGPFmsQAxDnJ3sr/heHJD39bku",
        "X-Google-Smtp-Source": "ABhQp+RiRgkNbCKd6wz4ujKVsjkG3Rsis0u21e1ngFek8/cYXWjAP4BSpspOiifOWeH7GyE+SCmGpw==",
        "X-Received": "by 10.84.169.36 with SMTP id g33mr8012256plb.10.1509742616251;\n\tFri, 03 Nov 2017 13:56:56 -0700 (PDT)",
        "From": "Jakub Kicinski <jakub.kicinski@netronome.com>",
        "To": "netdev@vger.kernel.org",
        "Cc": "oss-drivers@netronome.com, alexei.starovoitov@gmail.com,\n\tdaniel@iogearbox.net, Jakub Kicinski <jakub.kicinski@netronome.com>",
        "Subject": "[PATCH net-next v2 12/15] nfp: bpf: move program prepare and free\n\tinto offload.c",
        "Date": "Fri,  3 Nov 2017 13:56:27 -0700",
        "Message-Id": "<20171103205630.1083-13-jakub.kicinski@netronome.com>",
        "X-Mailer": "git-send-email 2.14.1",
        "In-Reply-To": "<20171103205630.1083-1-jakub.kicinski@netronome.com>",
        "References": "<20171103205630.1083-1-jakub.kicinski@netronome.com>",
        "Sender": "netdev-owner@vger.kernel.org",
        "Precedence": "bulk",
        "List-ID": "<netdev.vger.kernel.org>",
        "X-Mailing-List": "netdev@vger.kernel.org"
    },
    "content": "Most of offload/translation prepare logic will be moved to\noffload.c.  To help git generate more reasonable diffs\nmove nfp_prog_prepare() and nfp_prog_free() functions\nthere as a first step.\n\nSigned-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>\nReviewed-by: Quentin Monnet <quentin.monnet@netronome.com>\n---\n drivers/net/ethernet/netronome/nfp/bpf/jit.c     | 33 ------------------------\n drivers/net/ethernet/netronome/nfp/bpf/main.h    |  5 ++++\n drivers/net/ethernet/netronome/nfp/bpf/offload.c | 33 ++++++++++++++++++++++++\n 3 files changed, 38 insertions(+), 33 deletions(-)",
    "diff": "diff --git a/drivers/net/ethernet/netronome/nfp/bpf/jit.c b/drivers/net/ethernet/netronome/nfp/bpf/jit.c\nindex ff150c27f411..2eddbb45fd60 100644\n--- a/drivers/net/ethernet/netronome/nfp/bpf/jit.c\n+++ b/drivers/net/ethernet/netronome/nfp/bpf/jit.c\n@@ -77,17 +77,6 @@ nfp_meta_has_prev(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta)\n \treturn meta->l.prev != &nfp_prog->insns;\n }\n \n-static void nfp_prog_free(struct nfp_prog *nfp_prog)\n-{\n-\tstruct nfp_insn_meta *meta, *tmp;\n-\n-\tlist_for_each_entry_safe(meta, tmp, &nfp_prog->insns, l) {\n-\t\tlist_del(&meta->l);\n-\t\tkfree(meta);\n-\t}\n-\tkfree(nfp_prog);\n-}\n-\n static void nfp_prog_push(struct nfp_prog *nfp_prog, u64 insn)\n {\n \tif (nfp_prog->__prog_alloc_len == nfp_prog->prog_len) {\n@@ -2127,28 +2116,6 @@ static int nfp_translate(struct nfp_prog *nfp_prog)\n \treturn nfp_fixup_branches(nfp_prog);\n }\n \n-static int\n-nfp_prog_prepare(struct nfp_prog *nfp_prog, const struct bpf_insn *prog,\n-\t\t unsigned int cnt)\n-{\n-\tunsigned int i;\n-\n-\tfor (i = 0; i < cnt; i++) {\n-\t\tstruct nfp_insn_meta *meta;\n-\n-\t\tmeta = kzalloc(sizeof(*meta), GFP_KERNEL);\n-\t\tif (!meta)\n-\t\t\treturn -ENOMEM;\n-\n-\t\tmeta->insn = prog[i];\n-\t\tmeta->n = i;\n-\n-\t\tlist_add_tail(&meta->l, &nfp_prog->insns);\n-\t}\n-\n-\treturn 0;\n-}\n-\n /* --- Optimizations --- */\n static void nfp_bpf_opt_reg_init(struct nfp_prog *nfp_prog)\n {\ndiff --git a/drivers/net/ethernet/netronome/nfp/bpf/main.h b/drivers/net/ethernet/netronome/nfp/bpf/main.h\nindex df56f40fea7c..b77231a134b9 100644\n--- a/drivers/net/ethernet/netronome/nfp/bpf/main.h\n+++ b/drivers/net/ethernet/netronome/nfp/bpf/main.h\n@@ -173,6 +173,11 @@ struct nfp_bpf_result {\n \tunsigned int n_instr;\n };\n \n+int\n+nfp_prog_prepare(struct nfp_prog *nfp_prog, const struct bpf_insn *prog,\n+\t\t unsigned int cnt);\n+void nfp_prog_free(struct nfp_prog *nfp_prog);\n+\n int\n nfp_bpf_jit(struct bpf_prog *filter, void *prog,\n \t    unsigned int prog_start, unsigned int prog_done,\ndiff --git a/drivers/net/ethernet/netronome/nfp/bpf/offload.c b/drivers/net/ethernet/netronome/nfp/bpf/offload.c\nindex f4b9a46c844d..3eeee200051e 100644\n--- a/drivers/net/ethernet/netronome/nfp/bpf/offload.c\n+++ b/drivers/net/ethernet/netronome/nfp/bpf/offload.c\n@@ -51,6 +51,39 @@\n #include \"../nfp_net_ctrl.h\"\n #include \"../nfp_net.h\"\n \n+int\n+nfp_prog_prepare(struct nfp_prog *nfp_prog, const struct bpf_insn *prog,\n+\t\t unsigned int cnt)\n+{\n+\tunsigned int i;\n+\n+\tfor (i = 0; i < cnt; i++) {\n+\t\tstruct nfp_insn_meta *meta;\n+\n+\t\tmeta = kzalloc(sizeof(*meta), GFP_KERNEL);\n+\t\tif (!meta)\n+\t\t\treturn -ENOMEM;\n+\n+\t\tmeta->insn = prog[i];\n+\t\tmeta->n = i;\n+\n+\t\tlist_add_tail(&meta->l, &nfp_prog->insns);\n+\t}\n+\n+\treturn 0;\n+}\n+\n+void nfp_prog_free(struct nfp_prog *nfp_prog)\n+{\n+\tstruct nfp_insn_meta *meta, *tmp;\n+\n+\tlist_for_each_entry_safe(meta, tmp, &nfp_prog->insns, l) {\n+\t\tlist_del(&meta->l);\n+\t\tkfree(meta);\n+\t}\n+\tkfree(nfp_prog);\n+}\n+\n static int\n nfp_net_bpf_offload_prepare(struct nfp_net *nn, struct bpf_prog *prog,\n \t\t\t    struct nfp_bpf_result *res,\n",
    "prefixes": [
        "net-next",
        "v2",
        "12/15"
    ]
}