Show a cover letter.

GET /api/covers/967278/?format=api
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 967278,
    "url": "http://patchwork.ozlabs.org/api/covers/967278/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/cover/20180907081848.5438-1-bjorn.topel@gmail.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": "<20180907081848.5438-1-bjorn.topel@gmail.com>",
    "list_archive_url": null,
    "date": "2018-09-07T08:18:44",
    "name": "[v2,0/4] i40e AF_XDP zero-copy buffer leak fixes",
    "submitter": {
        "id": 70569,
        "url": "http://patchwork.ozlabs.org/api/people/70569/?format=api",
        "name": "Björn Töpel",
        "email": "bjorn.topel@gmail.com"
    },
    "mbox": "http://patchwork.ozlabs.org/project/intel-wired-lan/cover/20180907081848.5438-1-bjorn.topel@gmail.com/mbox/",
    "series": [
        {
            "id": 64562,
            "url": "http://patchwork.ozlabs.org/api/series/64562/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/list/?series=64562",
            "date": "2018-09-07T08:18:44",
            "name": "i40e AF_XDP zero-copy buffer leak fixes",
            "version": 2,
            "mbox": "http://patchwork.ozlabs.org/series/64562/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/covers/967278/comments/",
    "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.133; helo=hemlock.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=gmail.com"
        ],
        "Received": [
            "from hemlock.osuosl.org (smtp2.osuosl.org [140.211.166.133])\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 4269Zz1J1pz9s47\n\tfor <incoming@patchwork.ozlabs.org>;\n\tFri,  7 Sep 2018 18:29:14 +1000 (AEST)",
            "from localhost (localhost [127.0.0.1])\n\tby hemlock.osuosl.org (Postfix) with ESMTP id 7BBBF89243;\n\tFri,  7 Sep 2018 08:29:12 +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 iX7yzkVm9q03; Fri,  7 Sep 2018 08:29:10 +0000 (UTC)",
            "from ash.osuosl.org (ash.osuosl.org [140.211.166.34])\n\tby hemlock.osuosl.org (Postfix) with ESMTP id ED2B789240;\n\tFri,  7 Sep 2018 08:29:10 +0000 (UTC)",
            "from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138])\n\tby ash.osuosl.org (Postfix) with ESMTP id D1AE71C0180\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tFri,  7 Sep 2018 08:29:08 +0000 (UTC)",
            "from localhost (localhost [127.0.0.1])\n\tby whitealder.osuosl.org (Postfix) with ESMTP id 4B5DC88305\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tFri,  7 Sep 2018 08:29:08 +0000 (UTC)",
            "from whitealder.osuosl.org ([127.0.0.1])\n\tby localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n\twith ESMTP id hFuExhuIFvKE for <intel-wired-lan@lists.osuosl.org>;\n\tFri,  7 Sep 2018 08:29:05 +0000 (UTC)",
            "from mga03.intel.com (mga03.intel.com [134.134.136.65])\n\tby whitealder.osuosl.org (Postfix) with ESMTPS id 9A262877E7\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tFri,  7 Sep 2018 08:29:04 +0000 (UTC)",
            "from orsmga001.jf.intel.com ([10.7.209.18])\n\tby orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t07 Sep 2018 01:19:34 -0700",
            "from btopel-mobl1.isw.intel.com ([10.103.211.147])\n\tby orsmga001.jf.intel.com with ESMTP; 07 Sep 2018 01:19:16 -0700"
        ],
        "X-Virus-Scanned": [
            "amavisd-new at osuosl.org",
            "amavisd-new at osuosl.org"
        ],
        "X-Greylist": "from auto-whitelisted by SQLgrey-1.7.6",
        "X-Amp-Result": "SKIPPED(no attachment in message)",
        "X-Amp-File-Uploaded": "False",
        "X-ExtLoop1": "1",
        "X-IronPort-AV": "E=Sophos;i=\"5.53,341,1531810800\"; d=\"scan'208\";a=\"88438108\"",
        "From": "=?utf-8?b?QmrDtnJuIFTDtnBlbA==?= <bjorn.topel@gmail.com>",
        "To": "ast@kernel.org, daniel@iogearbox.net, jeffrey.t.kirsher@intel.com,\n\tintel-wired-lan@lists.osuosl.org, jakub.kicinski@netronome.com",
        "Date": "Fri,  7 Sep 2018 10:18:44 +0200",
        "Message-Id": "<20180907081848.5438-1-bjorn.topel@gmail.com>",
        "X-Mailer": "git-send-email 2.17.1",
        "MIME-Version": "1.0",
        "Subject": "[Intel-wired-lan] [PATCH v2 0/4] i40e AF_XDP zero-copy buffer leak\n\tfixes",
        "X-BeenThere": "intel-wired-lan@osuosl.org",
        "X-Mailman-Version": "2.1.24",
        "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": "netdev@vger.kernel.org, =?utf-8?b?QmrDtnJuIFTDtnBlbA==?=\n\t<bjorn.topel@intel.com>, magnus.karlsson@gmail.com,\n\tmagnus.karlsson@intel.com",
        "Content-Type": "text/plain; charset=\"utf-8\"",
        "Content-Transfer-Encoding": "base64",
        "Errors-To": "intel-wired-lan-bounces@osuosl.org",
        "Sender": "\"Intel-wired-lan\" <intel-wired-lan-bounces@osuosl.org>"
    },
    "content": "From: Björn Töpel <bjorn.topel@intel.com>\n\nNB! The v1 was sent via the bpf-next tree. This time the series is\nrouted via JeffK's Intel Wired tree to minimize the risk for i40e\nmerge conflicts.\n\nThis series addresses an AF_XDP zero-copy issue that buffers passed\nfrom userspace to the kernel was leaked when the hardware descriptor\nring was torn down.\n\nThe patches fixes the i40e AF_XDP zero-copy implementation.\n\nThanks to Jakub Kicinski for pointing this out!\n\nSome background for folks that don't know the details: A zero-copy\ncapable driver picks buffers off the fill ring and places them on the\nhardware Rx ring to be completed at a later point when DMA is\ncomplete. Similar on the Tx side; The driver picks buffers off the Tx\nring and places them on the Tx hardware ring.\n\nIn the typical flow, the Rx buffer will be placed onto an Rx ring\n(completed to the user), and the Tx buffer will be placed on the\ncompletion ring to notify the user that the transfer is done.\n\nHowever, if the driver needs to tear down the hardware rings for some\nreason (interface goes down, reconfiguration and such), the userspace\nbuffers cannot be leaked. They have to be reused or completed back to\nuserspace.\n\nThe implementation does the following:\n\n* Outstanding Tx descriptors will be passed to the completion\n  ring. The Tx code has back-pressure mechanism in place, so that\n  enough empty space in the completion ring is guaranteed.\n\n* Outstanding Rx descriptors are temporarily stored on a stash/reuse\n  queue. The reuse queue is based on Jakub's RFC. When/if the HW rings\n  comes up again, entries from the stash are used to re-populate the\n  ring.\n\n* When AF_XDP ZC is enabled, disallow changing the number of hardware\n  descriptors via ethtool. Otherwise, the size of the stash/reuse\n  queue can grow unbounded.\n\nGoing forward, introducing a \"zero-copy allocator\" analogous to Jesper\nBrouer's page pool would be a more robust and reuseable solution.\n\nv1->v2: Address kbuild \"undefined symbols\" error when building with\n        !CONFIG_XDP_SOCKETS.\n\nThanks!\nBjörn\n\n\nBjörn Töpel (3):\n  i40e: clean zero-copy XDP Tx ring on shutdown/reset\n  i40e: clean zero-copy XDP Rx ring on shutdown/reset\n  i40e: disallow changing the number of descriptors when AF_XDP is on\n\nJakub Kicinski (1):\n  net: xsk: add a simple buffer reuse queue\n\n .../net/ethernet/intel/i40e/i40e_ethtool.c    |   9 +-\n drivers/net/ethernet/intel/i40e/i40e_txrx.c   |  21 ++-\n .../ethernet/intel/i40e/i40e_txrx_common.h    |   4 +\n drivers/net/ethernet/intel/i40e/i40e_xsk.c    | 152 +++++++++++++++++-\n include/net/xdp_sock.h                        |  69 ++++++++\n net/xdp/xdp_umem.c                            |   2 +\n net/xdp/xsk_queue.c                           |  55 +++++++\n net/xdp/xsk_queue.h                           |   3 +\n 8 files changed, 299 insertions(+), 16 deletions(-)"
}