get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 1137027,
    "url": "http://patchwork.ozlabs.org/api/patches/1137027/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20190725085541.55104-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": "<20190725085541.55104-8-anthony.l.nguyen@intel.com>",
    "list_archive_url": null,
    "date": "2019-07-25T08:55:34",
    "name": "[S23,v4,08/15] ice: allow empty rx descriptors",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "8f47a2a759a5a8f16bf4f9c26f74298e84fc7ed8",
    "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/20190725085541.55104-8-anthony.l.nguyen@intel.com/mbox/",
    "series": [
        {
            "id": 121506,
            "url": "http://patchwork.ozlabs.org/api/series/121506/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/list/?series=121506",
            "date": "2019-07-25T08:55:36",
            "name": "[S23,v4,01/15] ice: Implement ethtool ops for channels",
            "version": 4,
            "mbox": "http://patchwork.ozlabs.org/series/121506/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/1137027/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/1137027/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.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=intel.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 45vfFw534yz9sMr\n\tfor <incoming@patchwork.ozlabs.org>;\n\tFri, 26 Jul 2019 03:24:04 +1000 (AEST)",
            "from localhost (localhost [127.0.0.1])\n\tby hemlock.osuosl.org (Postfix) with ESMTP id 1F30988157;\n\tThu, 25 Jul 2019 17:24:03 +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 i20kz7o6PG0O; Thu, 25 Jul 2019 17:24:01 +0000 (UTC)",
            "from ash.osuosl.org (ash.osuosl.org [140.211.166.34])\n\tby hemlock.osuosl.org (Postfix) with ESMTP id 8A21588183;\n\tThu, 25 Jul 2019 17:24:01 +0000 (UTC)",
            "from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136])\n\tby ash.osuosl.org (Postfix) with ESMTP id 9023F1BF312\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tThu, 25 Jul 2019 17:23:59 +0000 (UTC)",
            "from localhost (localhost [127.0.0.1])\n\tby silver.osuosl.org (Postfix) with ESMTP id 8D9A622660\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tThu, 25 Jul 2019 17:23:59 +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 HsTdR+TPa3EO for <intel-wired-lan@lists.osuosl.org>;\n\tThu, 25 Jul 2019 17:23:58 +0000 (UTC)",
            "from mga09.intel.com (mga09.intel.com [134.134.136.24])\n\tby silver.osuosl.org (Postfix) with ESMTPS id DAA9822253\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tThu, 25 Jul 2019 17:23:57 +0000 (UTC)",
            "from orsmga007.jf.intel.com ([10.7.209.58])\n\tby orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t25 Jul 2019 10:23:56 -0700",
            "from unknown (HELO localhost.jf.intel.com) ([10.166.244.174])\n\tby orsmga007.jf.intel.com with ESMTP; 25 Jul 2019 10:23:56 -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.64,307,1559545200\"; d=\"scan'208\";a=\"160973709\"",
        "From": "Tony Nguyen <anthony.l.nguyen@intel.com>",
        "To": "intel-wired-lan@lists.osuosl.org",
        "Date": "Thu, 25 Jul 2019 01:55:34 -0700",
        "Message-Id": "<20190725085541.55104-8-anthony.l.nguyen@intel.com>",
        "X-Mailer": "git-send-email 2.20.1",
        "In-Reply-To": "<20190725085541.55104-1-anthony.l.nguyen@intel.com>",
        "References": "<20190725085541.55104-1-anthony.l.nguyen@intel.com>",
        "MIME-Version": "1.0",
        "Subject": "[Intel-wired-lan] [PATCH S23 v4 08/15] ice: allow empty rx\n\tdescriptors",
        "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 | 15 ++++++++++++---\n 1 file changed, 12 insertions(+), 3 deletions(-)",
    "diff": "diff --git a/drivers/net/ethernet/intel/ice/ice_txrx.c b/drivers/net/ethernet/intel/ice/ice_txrx.c\nindex 9a54406922f0..75b0afe02015 100644\n--- a/drivers/net/ethernet/intel/ice/ice_txrx.c\n+++ b/drivers/net/ethernet/intel/ice/ice_txrx.c\n@@ -607,6 +607,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@@ -662,6 +664,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@@ -745,8 +749,11 @@ ice_construct_skb(struct ice_ring *rx_ring, struct ice_rx_buf *rx_buf,\n  */\n static void ice_put_rx_buf(struct ice_ring *rx_ring, struct ice_rx_buf *rx_buf)\n {\n-\t\t/* hand second half of page back to the ring */\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 \t\trx_ring->rx_stats.page_reuse_count++;\n \t} else {\n@@ -1032,8 +1039,9 @@ 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\t/* retrieve a buffer from the ring */\n \t\trx_buf = ice_get_rx_buf(rx_ring, &skb, size);\n-\t\t/* allocate (if needed) and populate skb */\n+\n \t\tif (skb)\n \t\t\tice_add_rx_frag(rx_buf, skb, size);\n \t\telse\n@@ -1042,7 +1050,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",
        "v4",
        "08/15"
    ]
}