Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/1124623/?format=api
{ "id": 1124623, "url": "http://patchwork.ozlabs.org/api/patches/1124623/?format=api", "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20190628150332.59155-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": "<20190628150332.59155-8-anthony.l.nguyen@intel.com>", "list_archive_url": null, "date": "2019-06-28T15:03:26", "name": "[S23,v2,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/20190628150332.59155-8-anthony.l.nguyen@intel.com/mbox/", "series": [ { "id": 116824, "url": "http://patchwork.ozlabs.org/api/series/116824/?format=api", "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/list/?series=116824", "date": "2019-06-28T15:03:26", "name": "[S23,v2,01/15] ice: Implement ethtool ops for channels", "version": 2, "mbox": "http://patchwork.ozlabs.org/series/116824/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/1124623/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/1124623/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 45bCgw4z2Zz9s5c\n\tfor <incoming@patchwork.ozlabs.org>;\n\tSat, 29 Jun 2019 09:31:07 +1000 (AEST)", "from localhost (localhost [127.0.0.1])\n\tby hemlock.osuosl.org (Postfix) with ESMTP id 89420882A1;\n\tFri, 28 Jun 2019 23:31:05 +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 AQsD-+jfSLeM; Fri, 28 Jun 2019 23:31:03 +0000 (UTC)", "from ash.osuosl.org (ash.osuosl.org [140.211.166.34])\n\tby hemlock.osuosl.org (Postfix) with ESMTP id 847D08829D;\n\tFri, 28 Jun 2019 23:31:01 +0000 (UTC)", "from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136])\n\tby ash.osuosl.org (Postfix) with ESMTP id 9AC791BF2E3\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tFri, 28 Jun 2019 23:30:59 +0000 (UTC)", "from localhost (localhost [127.0.0.1])\n\tby silver.osuosl.org (Postfix) with ESMTP id 9756322851\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tFri, 28 Jun 2019 23:30: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 ecZS-RuBJnx0 for <intel-wired-lan@lists.osuosl.org>;\n\tFri, 28 Jun 2019 23:30:58 +0000 (UTC)", "from mga18.intel.com (mga18.intel.com [134.134.136.126])\n\tby silver.osuosl.org (Postfix) with ESMTPS id 6FB4922844\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tFri, 28 Jun 2019 23:30:58 +0000 (UTC)", "from fmsmga007.fm.intel.com ([10.253.24.52])\n\tby orsmga106.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t28 Jun 2019 16:30:57 -0700", "from unknown (HELO localhost.jf.intel.com) ([10.166.244.174])\n\tby fmsmga007.fm.intel.com with ESMTP; 28 Jun 2019 16:30: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.63,429,1557212400\"; d=\"scan'208\";a=\"164803441\"", "From": "Tony Nguyen <anthony.l.nguyen@intel.com>", "To": "intel-wired-lan@lists.osuosl.org", "Date": "Fri, 28 Jun 2019 08:03:26 -0700", "Message-Id": "<20190628150332.59155-8-anthony.l.nguyen@intel.com>", "X-Mailer": "git-send-email 2.20.1", "In-Reply-To": "<20190628150332.59155-1-anthony.l.nguyen@intel.com>", "References": "<20190628150332.59155-1-anthony.l.nguyen@intel.com>", "MIME-Version": "1.0", "Subject": "[Intel-wired-lan] [PATCH S23 v2 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 | 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", "v2", "08/15" ] }