get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 1115489,
    "url": "http://patchwork.ozlabs.org/api/patches/1115489/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/1560411450-29121-6-git-send-email-magnus.karlsson@intel.com/",
    "project": {
        "id": 46,
        "url": "http://patchwork.ozlabs.org/api/projects/46/?format=api",
        "name": "Intel Wired Ethernet development",
        "link_name": "intel-wired-lan",
        "list_id": "intel-wired-lan.osuosl.org",
        "list_email": "intel-wired-lan@osuosl.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": "",
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<1560411450-29121-6-git-send-email-magnus.karlsson@intel.com>",
    "list_archive_url": null,
    "date": "2019-06-13T07:37:29",
    "name": "[bpf-next,5/6] libbpf: add support for need_wakeup flag in AF_XDP part",
    "commit_ref": null,
    "pull_url": null,
    "state": "awaiting-upstream",
    "archived": false,
    "hash": "3bd1f19bca1994c2db11b6478331eb76faeb1d81",
    "submitter": {
        "id": 72726,
        "url": "http://patchwork.ozlabs.org/api/people/72726/?format=api",
        "name": "Magnus Karlsson",
        "email": "magnus.karlsson@intel.com"
    },
    "delegate": {
        "id": 68,
        "url": "http://patchwork.ozlabs.org/api/users/68/?format=api",
        "username": "jtkirshe",
        "first_name": "Jeff",
        "last_name": "Kirsher",
        "email": "jeffrey.t.kirsher@intel.com"
    },
    "mbox": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/1560411450-29121-6-git-send-email-magnus.karlsson@intel.com/mbox/",
    "series": [
        {
            "id": 113704,
            "url": "http://patchwork.ozlabs.org/api/series/113704/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/list/?series=113704",
            "date": "2019-06-13T07:37:25",
            "name": "add need_wakeup flag to the AF_XDP rings",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/113704/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/1115489/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/1115489/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<intel-wired-lan-bounces@osuosl.org>",
        "X-Original-To": [
            "incoming@patchwork.ozlabs.org",
            "intel-wired-lan@lists.osuosl.org"
        ],
        "Delivered-To": [
            "patchwork-incoming@bilbo.ozlabs.org",
            "intel-wired-lan@lists.osuosl.org"
        ],
        "Authentication-Results": [
            "ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=osuosl.org\n\t(client-ip=140.211.166.137; helo=fraxinus.osuosl.org;\n\tenvelope-from=intel-wired-lan-bounces@osuosl.org;\n\treceiver=<UNKNOWN>)",
            "ozlabs.org;\n\tdmarc=fail (p=none dis=none) header.from=intel.com"
        ],
        "Received": [
            "from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 45PrF1751nz9sBp\n\tfor <incoming@patchwork.ozlabs.org>;\n\tFri, 14 Jun 2019 03:23:49 +1000 (AEST)",
            "from localhost (localhost [127.0.0.1])\n\tby fraxinus.osuosl.org (Postfix) with ESMTP id 1CC1286781;\n\tThu, 13 Jun 2019 17:23:48 +0000 (UTC)",
            "from fraxinus.osuosl.org ([127.0.0.1])\n\tby localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n\twith ESMTP id C4Umnefja_5I; Thu, 13 Jun 2019 17:23:45 +0000 (UTC)",
            "from ash.osuosl.org (ash.osuosl.org [140.211.166.34])\n\tby fraxinus.osuosl.org (Postfix) with ESMTP id 655BD8671E;\n\tThu, 13 Jun 2019 17:23:45 +0000 (UTC)",
            "from hemlock.osuosl.org (smtp2.osuosl.org [140.211.166.133])\n\tby ash.osuosl.org (Postfix) with ESMTP id A48971BF363\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tThu, 13 Jun 2019 07:38:08 +0000 (UTC)",
            "from localhost (localhost [127.0.0.1])\n\tby hemlock.osuosl.org (Postfix) with ESMTP id A09D187EA7\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tThu, 13 Jun 2019 07:38:08 +0000 (UTC)",
            "from hemlock.osuosl.org ([127.0.0.1])\n\tby localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n\twith ESMTP id 1QPpTfucvHWr for <intel-wired-lan@lists.osuosl.org>;\n\tThu, 13 Jun 2019 07:38:06 +0000 (UTC)",
            "from mga11.intel.com (mga11.intel.com [192.55.52.93])\n\tby hemlock.osuosl.org (Postfix) with ESMTPS id 79D4588076\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tThu, 13 Jun 2019 07:38:05 +0000 (UTC)",
            "from orsmga004.jf.intel.com ([10.7.209.38])\n\tby fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t13 Jun 2019 00:38:05 -0700",
            "from mkarlsso-mobl.ger.corp.intel.com (HELO VM.ger.corp.intel.com)\n\t([10.103.211.41])\n\tby orsmga004.jf.intel.com with ESMTP; 13 Jun 2019 00:37:59 -0700"
        ],
        "X-Virus-Scanned": [
            "amavisd-new at osuosl.org",
            "amavisd-new at osuosl.org"
        ],
        "X-Greylist": "domain auto-whitelisted by SQLgrey-1.7.6",
        "X-Amp-Result": "SKIPPED(no attachment in message)",
        "X-Amp-File-Uploaded": "False",
        "X-ExtLoop1": "1",
        "From": "Magnus Karlsson <magnus.karlsson@intel.com>",
        "To": "magnus.karlsson@intel.com, bjorn.topel@intel.com, ast@kernel.org,\n\tdaniel@iogearbox.net, netdev@vger.kernel.org, brouer@redhat.com",
        "Date": "Thu, 13 Jun 2019 09:37:29 +0200",
        "Message-Id": "<1560411450-29121-6-git-send-email-magnus.karlsson@intel.com>",
        "X-Mailer": "git-send-email 2.7.4",
        "In-Reply-To": "<1560411450-29121-1-git-send-email-magnus.karlsson@intel.com>",
        "References": "<1560411450-29121-1-git-send-email-magnus.karlsson@intel.com>",
        "X-Mailman-Approved-At": "Thu, 13 Jun 2019 17:23:43 +0000",
        "Subject": "[Intel-wired-lan] [PATCH bpf-next 5/6] libbpf: add support for\n\tneed_wakeup flag in AF_XDP part",
        "X-BeenThere": "intel-wired-lan@osuosl.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "Intel Wired Ethernet Linux Kernel Driver Development\n\t<intel-wired-lan.osuosl.org>",
        "List-Unsubscribe": "<https://lists.osuosl.org/mailman/options/intel-wired-lan>, \n\t<mailto:intel-wired-lan-request@osuosl.org?subject=unsubscribe>",
        "List-Archive": "<http://lists.osuosl.org/pipermail/intel-wired-lan/>",
        "List-Post": "<mailto:intel-wired-lan@osuosl.org>",
        "List-Help": "<mailto:intel-wired-lan-request@osuosl.org?subject=help>",
        "List-Subscribe": "<https://lists.osuosl.org/mailman/listinfo/intel-wired-lan>, \n\t<mailto:intel-wired-lan-request@osuosl.org?subject=subscribe>",
        "Cc": "axboe@kernel.dk, maximmi@mellanox.com, kevin.laatz@intel.com,\n\tjakub.kicinski@netronome.com, maciejromanfijalkowski@gmail.com,\n\tbruce.richardson@intel.com, ciara.loftus@intel.com,\n\tilias.apalodimas@linaro.org, xiaolong.ye@intel.com,\n\tintel-wired-lan@lists.osuosl.org, qi.z.zhang@intel.com,\n\tmaciej.fijalkowski@intel.com, bpf@vger.kernel.org",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=\"us-ascii\"",
        "Content-Transfer-Encoding": "7bit",
        "Errors-To": "intel-wired-lan-bounces@osuosl.org",
        "Sender": "\"Intel-wired-lan\" <intel-wired-lan-bounces@osuosl.org>"
    },
    "content": "This commit adds support for the new need_wakeup flag in AF_XDP. The\nxsk_socket__create function is updated to handle this and a new\nfunction is introduced called xsk_ring_prod__needs_wakeup(). This\nfunction can be used by the application to check if Rx and/or Tx\nprocessing needs to be explicitly woken up.\n\nSigned-off-by: Magnus Karlsson <magnus.karlsson@intel.com>\n---\n tools/include/uapi/linux/if_xdp.h | 13 +++++++++++++\n tools/lib/bpf/xsk.c               |  4 ++++\n tools/lib/bpf/xsk.h               |  6 ++++++\n 3 files changed, 23 insertions(+)",
    "diff": "diff --git a/tools/include/uapi/linux/if_xdp.h b/tools/include/uapi/linux/if_xdp.h\nindex caed8b1..3aa958e 100644\n--- a/tools/include/uapi/linux/if_xdp.h\n+++ b/tools/include/uapi/linux/if_xdp.h\n@@ -16,6 +16,15 @@\n #define XDP_SHARED_UMEM\t(1 << 0)\n #define XDP_COPY\t(1 << 1) /* Force copy-mode */\n #define XDP_ZEROCOPY\t(1 << 2) /* Force zero-copy mode */\n+/* If this option is set, the driver might go sleep and in that case\n+ * the XDP_RING_NEED_WAKEUP flag in the fill and/or Tx rings will be\n+ * set. If it is set, the application need to explicitly wake up the\n+ * driver with a poll() (Rx and Tx) or sendto() (Tx only). If you are\n+ * running the driver and the application on the same core, you should\n+ * use this option so that the kernel will yield to the user space\n+ * application.\n+ */\n+#define XDP_USE_NEED_WAKEUP (1 << 3)\n \n struct sockaddr_xdp {\n \t__u16 sxdp_family;\n@@ -25,10 +34,14 @@ struct sockaddr_xdp {\n \t__u32 sxdp_shared_umem_fd;\n };\n \n+/* XDP_RING flags */\n+#define XDP_RING_NEED_WAKEUP (1 << 0)\n+\n struct xdp_ring_offset {\n \t__u64 producer;\n \t__u64 consumer;\n \t__u64 desc;\n+\t__u64 flags;\n };\n \n struct xdp_mmap_offsets {\ndiff --git a/tools/lib/bpf/xsk.c b/tools/lib/bpf/xsk.c\nindex 7ef6293..02d57fa 100644\n--- a/tools/lib/bpf/xsk.c\n+++ b/tools/lib/bpf/xsk.c\n@@ -223,6 +223,7 @@ int xsk_umem__create(struct xsk_umem **umem_ptr, void *umem_area, __u64 size,\n \tfill->size = umem->config.fill_size;\n \tfill->producer = map + off.fr.producer;\n \tfill->consumer = map + off.fr.consumer;\n+\tfill->flags = map + off.fr.flags;\n \tfill->ring = map + off.fr.desc;\n \tfill->cached_cons = umem->config.fill_size;\n \n@@ -240,6 +241,7 @@ int xsk_umem__create(struct xsk_umem **umem_ptr, void *umem_area, __u64 size,\n \tcomp->size = umem->config.comp_size;\n \tcomp->producer = map + off.cr.producer;\n \tcomp->consumer = map + off.cr.consumer;\n+\tcomp->flags = map + off.cr.flags;\n \tcomp->ring = map + off.cr.desc;\n \n \t*umem_ptr = umem;\n@@ -561,6 +563,7 @@ int xsk_socket__create(struct xsk_socket **xsk_ptr, const char *ifname,\n \t\trx->size = xsk->config.rx_size;\n \t\trx->producer = rx_map + off.rx.producer;\n \t\trx->consumer = rx_map + off.rx.consumer;\n+\t\trx->flags = rx_map + off.rx.flags;\n \t\trx->ring = rx_map + off.rx.desc;\n \t}\n \txsk->rx = rx;\n@@ -580,6 +583,7 @@ int xsk_socket__create(struct xsk_socket **xsk_ptr, const char *ifname,\n \t\ttx->size = xsk->config.tx_size;\n \t\ttx->producer = tx_map + off.tx.producer;\n \t\ttx->consumer = tx_map + off.tx.consumer;\n+\t\ttx->flags = tx_map + off.tx.flags;\n \t\ttx->ring = tx_map + off.tx.desc;\n \t\ttx->cached_cons = xsk->config.tx_size;\n \t}\ndiff --git a/tools/lib/bpf/xsk.h b/tools/lib/bpf/xsk.h\nindex 82ea71a..2500fca 100644\n--- a/tools/lib/bpf/xsk.h\n+++ b/tools/lib/bpf/xsk.h\n@@ -32,6 +32,7 @@ struct name { \\\n \t__u32 *producer; \\\n \t__u32 *consumer; \\\n \tvoid *ring; \\\n+\t__u32 *flags; \\\n }\n \n DEFINE_XSK_RING(xsk_ring_prod);\n@@ -76,6 +77,11 @@ xsk_ring_cons__rx_desc(const struct xsk_ring_cons *rx, __u32 idx)\n \treturn &descs[idx & rx->mask];\n }\n \n+static inline int xsk_ring_prod__needs_wakeup(const struct xsk_ring_prod *r)\n+{\n+\treturn *r->flags & XDP_RING_NEED_WAKEUP;\n+}\n+\n static inline __u32 xsk_prod_nb_free(struct xsk_ring_prod *r, __u32 nb)\n {\n \t__u32 free_entries = r->cached_cons - r->cached_prod;\n",
    "prefixes": [
        "bpf-next",
        "5/6"
    ]
}