get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 1123748,
    "url": "http://patchwork.ozlabs.org/api/patches/1123748/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20190627144101.24280-8-anthony.l.nguyen@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": "<20190627144101.24280-8-anthony.l.nguyen@intel.com>",
    "list_archive_url": null,
    "date": "2019-06-27T14:40:54",
    "name": "[S23,08/15] ice: allow empty rx descriptors",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": false,
    "hash": "494fd0ef0cee24dad50b595f2fc7c187a7ffa157",
    "submitter": {
        "id": 68875,
        "url": "http://patchwork.ozlabs.org/api/people/68875/?format=api",
        "name": "Tony Nguyen",
        "email": "anthony.l.nguyen@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/20190627144101.24280-8-anthony.l.nguyen@intel.com/mbox/",
    "series": [
        {
            "id": 116575,
            "url": "http://patchwork.ozlabs.org/api/series/116575/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/list/?series=116575",
            "date": "2019-06-27T14:40:51",
            "name": "[S23,01/15] ice: Implement ethtool ops for channels",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/116575/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/1123748/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/1123748/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.136; helo=silver.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 silver.osuosl.org (smtp3.osuosl.org [140.211.166.136])\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 45ZbDQ6Hz9z9s4Y\n\tfor <incoming@patchwork.ozlabs.org>;\n\tFri, 28 Jun 2019 09:08:38 +1000 (AEST)",
            "from localhost (localhost [127.0.0.1])\n\tby silver.osuosl.org (Postfix) with ESMTP id 52474226D0;\n\tThu, 27 Jun 2019 23:08:37 +0000 (UTC)",
            "from silver.osuosl.org ([127.0.0.1])\n\tby localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n\twith ESMTP id NoUbwhnz7Nv7; Thu, 27 Jun 2019 23:08:35 +0000 (UTC)",
            "from ash.osuosl.org (ash.osuosl.org [140.211.166.34])\n\tby silver.osuosl.org (Postfix) with ESMTP id 53308226B7;\n\tThu, 27 Jun 2019 23:08:35 +0000 (UTC)",
            "from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137])\n\tby ash.osuosl.org (Postfix) with ESMTP id D81F31BF859\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tThu, 27 Jun 2019 23:08:28 +0000 (UTC)",
            "from localhost (localhost [127.0.0.1])\n\tby fraxinus.osuosl.org (Postfix) with ESMTP id B93DE84376\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tThu, 27 Jun 2019 23:08:28 +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 S0QJcRPvdzri for <intel-wired-lan@lists.osuosl.org>;\n\tThu, 27 Jun 2019 23:08:27 +0000 (UTC)",
            "from mga17.intel.com (mga17.intel.com [192.55.52.151])\n\tby fraxinus.osuosl.org (Postfix) with ESMTPS id D3435863A4\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tThu, 27 Jun 2019 23:08:26 +0000 (UTC)",
            "from orsmga008.jf.intel.com ([10.7.209.65])\n\tby fmsmga107.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t27 Jun 2019 16:08:26 -0700",
            "from unknown (HELO localhost.jf.intel.com) ([10.166.244.174])\n\tby orsmga008.jf.intel.com with ESMTP; 27 Jun 2019 16:08:25 -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",
        "X-IronPort-AV": "E=Sophos;i=\"5.63,425,1557212400\"; d=\"scan'208\";a=\"156396176\"",
        "From": "Tony Nguyen <anthony.l.nguyen@intel.com>",
        "To": "intel-wired-lan@lists.osuosl.org",
        "Date": "Thu, 27 Jun 2019 07:40:54 -0700",
        "Message-Id": "<20190627144101.24280-8-anthony.l.nguyen@intel.com>",
        "X-Mailer": "git-send-email 2.20.1",
        "In-Reply-To": "<20190627144101.24280-1-anthony.l.nguyen@intel.com>",
        "References": "<20190627144101.24280-1-anthony.l.nguyen@intel.com>",
        "MIME-Version": "1.0",
        "Subject": "[Intel-wired-lan] [PATCH S23 08/15] ice: allow empty rx descriptors",
        "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>",
        "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": "From: Mitch Williams <mitch.a.williams@intel.com>\n\nIn some circumstances, the hardware will hand us a receive descriptor\nwhich has no data attached, but is otherwise valid. The receive code was\nimproperly ignoring these descriptors, which result in an infinite loop.\n\nTo fix this, change the receive code to process all descriptors,\nregardless of the size of the associated data. Add checks to the\nmemory-handling functions to allow for zero size.\n\nSigned-off-by: Mitch Williams <mitch.a.williams@intel.com>\n---\n drivers/net/ethernet/intel/ice/ice_txrx.c | 19 +++++++++++++++----\n 1 file changed, 15 insertions(+), 4 deletions(-)",
    "diff": "diff --git a/drivers/net/ethernet/intel/ice/ice_txrx.c b/drivers/net/ethernet/intel/ice/ice_txrx.c\nindex 1085ab920155..309207de1e86 100644\n--- a/drivers/net/ethernet/intel/ice/ice_txrx.c\n+++ b/drivers/net/ethernet/intel/ice/ice_txrx.c\n@@ -859,6 +859,8 @@ ice_add_rx_frag(struct ice_rx_buf *rx_buf, struct sk_buff *skb,\n \tunsigned int truesize = ICE_RXBUF_2048;\n #endif\n \n+\tif (!size)\n+\t\treturn;\n \tskb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags, rx_buf->page,\n \t\t\trx_buf->page_offset, size, truesize);\n \n@@ -914,6 +916,8 @@ ice_get_rx_buf(struct ice_ring *rx_ring, struct sk_buff **skb,\n \tprefetchw(rx_buf->page);\n \t*skb = rx_buf->skb;\n \n+\tif (!size)\n+\t\treturn rx_buf;\n \t/* we are reusing so sync this buffer for CPU use */\n \tdma_sync_single_range_for_cpu(rx_ring->dev, rx_buf->dma,\n \t\t\t\t      rx_buf->page_offset, size,\n@@ -1005,6 +1009,9 @@ static void ice_put_rx_buf(struct ice_ring *rx_ring, struct ice_rx_buf *rx_buf)\n \tntc = (ntc < rx_ring->count) ? ntc : 0;\n \trx_ring->next_to_clean = ntc;\n \n+\tif (!rx_buf)\n+\t\treturn;\n+\n \tif (ice_can_reuse_rx_page(rx_buf)) {\n \t\t/* hand second half of page back to the ring */\n \t\tice_reuse_rx_page(rx_ring, rx_buf);\n@@ -1298,12 +1305,15 @@ static int ice_clean_rx_irq(struct ice_ring *rx_ring, int budget)\n \t\tsize = le16_to_cpu(rx_desc->wb.pkt_len) &\n \t\t\tICE_RX_FLX_DESC_PKT_LEN_M;\n \n-\t\tif (!size)\n-\t\t\tbreak;\n-\n \t\t/* retrieve a buffer from the ring */\n \t\trx_buf = ice_get_rx_buf(rx_ring, &skb, size);\n \n+\t\tif (!size) {\n+\t\t\txdp.data = NULL;\n+\t\t\txdp.data_end = NULL;\n+\t\t\tgoto construct_skb;\n+\t\t}\n+\n \t\txdp.data = page_address(rx_buf->page) + rx_buf->page_offset;\n \t\txdp.data_hard_start = xdp.data - ice_rx_offset(rx_ring);\n \t\txdp.data_end = xdp.data + size;\n@@ -1342,7 +1352,8 @@ static int ice_clean_rx_irq(struct ice_ring *rx_ring, int budget)\n \t\t/* exit if we failed to retrieve a buffer */\n \t\tif (!skb) {\n \t\t\trx_ring->rx_stats.alloc_buf_failed++;\n-\t\t\trx_buf->pagecnt_bias++;\n+\t\t\tif (rx_buf)\n+\t\t\t\trx_buf->pagecnt_bias++;\n \t\t\tbreak;\n \t\t}\n \n",
    "prefixes": [
        "S23",
        "08/15"
    ]
}