Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/1151731/?format=api
{ "id": 1151731, "url": "http://patchwork.ozlabs.org/api/patches/1151731/?format=api", "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20190822171237.20798-1-i.maximets@samsung.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": "<20190822171237.20798-1-i.maximets@samsung.com>", "list_archive_url": null, "date": "2019-08-22T17:12:37", "name": "[net,v3] ixgbe: fix double clean of tx descriptors with xdp", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": false, "hash": "141181c850cbbff101993bb252c14522c1e42aa1", "submitter": { "id": 67162, "url": "http://patchwork.ozlabs.org/api/people/67162/?format=api", "name": "Ilya Maximets", "email": "i.maximets@samsung.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/20190822171237.20798-1-i.maximets@samsung.com/mbox/", "series": [ { "id": 126797, "url": "http://patchwork.ozlabs.org/api/series/126797/?format=api", "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/list/?series=126797", "date": "2019-08-22T17:12:37", "name": "[net,v3] ixgbe: fix double clean of tx descriptors with xdp", "version": 3, "mbox": "http://patchwork.ozlabs.org/series/126797/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/1151731/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/1151731/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=samsung.com", "ozlabs.org;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=samsung.com header.i=@samsung.com\n\theader.b=\"TPbQ2XJD\"; dkim-atps=neutral" ], "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 46DtCP3hKQz9sBp\n\tfor <incoming@patchwork.ozlabs.org>;\n\tFri, 23 Aug 2019 04:21:35 +1000 (AEST)", "from localhost (localhost [127.0.0.1])\n\tby hemlock.osuosl.org (Postfix) with ESMTP id 685FB86E88;\n\tThu, 22 Aug 2019 18:21:33 +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 NUDYO4AapfPn; Thu, 22 Aug 2019 18:21:32 +0000 (UTC)", "from ash.osuosl.org (ash.osuosl.org [140.211.166.34])\n\tby hemlock.osuosl.org (Postfix) with ESMTP id 6DD5F8667B;\n\tThu, 22 Aug 2019 18:21:31 +0000 (UTC)", "from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137])\n\tby ash.osuosl.org (Postfix) with ESMTP id 2F7EF1BF407\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tThu, 22 Aug 2019 17:12:51 +0000 (UTC)", "from localhost (localhost [127.0.0.1])\n\tby fraxinus.osuosl.org (Postfix) with ESMTP id 2A96D86A44\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tThu, 22 Aug 2019 17:12:51 +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 fhdz0CQOPvc9 for <intel-wired-lan@lists.osuosl.org>;\n\tThu, 22 Aug 2019 17:12:49 +0000 (UTC)", "from mailout2.w1.samsung.com (mailout2.w1.samsung.com\n\t[210.118.77.12])\n\tby fraxinus.osuosl.org (Postfix) with ESMTPS id 67D2C86A36\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tThu, 22 Aug 2019 17:12:49 +0000 (UTC)", "from eucas1p1.samsung.com (unknown [182.198.249.206])\n\tby mailout2.w1.samsung.com (KnoxPortal) with ESMTP id\n\t20190822171246euoutp02384fc63fe15004926f2e0680eb20dbf3~9TfaSINH_2284222842euoutp02B\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tThu, 22 Aug 2019 17:12:46 +0000 (GMT)", "from eusmges3new.samsung.com (unknown [203.254.199.245]) by\n\teucas1p1.samsung.com (KnoxPortal) with ESMTP id\n\t20190822171245eucas1p113b527ac20ca4f2ed2c842a3cf5cdfcc~9TfYuOA5y2704927049eucas1p1E;\n\tThu, 22 Aug 2019 17:12:45 +0000 (GMT)", "from eucas1p2.samsung.com ( [182.198.249.207]) by\n\teusmges3new.samsung.com (EUCPMTA) with SMTP id CB.76.04374.C0DCE5D5;\n\tThu, 22 Aug 2019 18:12:44 +0100 (BST)", "from eusmtrp2.samsung.com (unknown [182.198.249.139]) by\n\teucas1p1.samsung.com (KnoxPortal) with ESMTPA id\n\t20190822171243eucas1p12213f2239d6c36be515dade41ed7470b~9TfXnJsX31493014930eucas1p1T;\n\tThu, 22 Aug 2019 17:12:43 +0000 (GMT)", "from eusmgms2.samsung.com (unknown [182.198.249.180]) by\n\teusmtrp2.samsung.com (KnoxPortal) with ESMTP id\n\t20190822171243eusmtrp2d541b2dd599bc153d0eaa02062fc26b1~9TfXXgzaw1649316493eusmtrp2e;\n\tThu, 22 Aug 2019 17:12:43 +0000 (GMT)", "from eusmtip1.samsung.com ( [203.254.199.221]) by\n\teusmgms2.samsung.com (EUCPMTA) with SMTP id 84.F8.04117.B0DCE5D5;\n\tThu, 22 Aug 2019 18:12:43 +0100 (BST)", "from imaximets.rnd.samsung.ru (unknown [106.109.129.180]) by\n\teusmtip1.samsung.com (KnoxPortal) with ESMTPA id\n\t20190822171242eusmtip15aebbf240f5ddf60e37aa801dea65411~9TfWNfopd1319413194eusmtip1T;\n\tThu, 22 Aug 2019 17:12:42 +0000 (GMT)" ], "X-Virus-Scanned": [ "amavisd-new at osuosl.org", "amavisd-new at osuosl.org" ], "X-Greylist": "domain auto-whitelisted by SQLgrey-1.7.6", "DKIM-Filter": "OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com\n\t20190822171246euoutp02384fc63fe15004926f2e0680eb20dbf3~9TfaSINH_2284222842euoutp02B", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com;\n\ts=mail20170921; t=1566493966;\n\tbh=UOkCLCh1WvbHpQZYwO8RvemaDSbUwqU6rhWFFCiDmsE=;\n\th=From:To:Cc:Subject:Date:References:From;\n\tb=TPbQ2XJDJbuC8DG7na1TEViPhYVzfQuh1wa5MJXju7r1vw3m9zDcarWNF+fEC/s5Q\n\tXGybKQ1hnE5G/RihIQMbEf2kJBZ5887IxVbVln6mET5jPT00RJ+wA6xaWDsVUIWUqS\n\tsww8+vYYaQvbR1J72maXmf4HhoTMgt11UBMWvkQo=", "X-AuditID": "cbfec7f5-4f7ff70000001116-28-5d5ecd0cfc62", "From": "Ilya Maximets <i.maximets@samsung.com>", "To": "netdev@vger.kernel.org", "Date": "Thu, 22 Aug 2019 20:12:37 +0300", "Message-Id": "<20190822171237.20798-1-i.maximets@samsung.com>", "X-Mailer": "git-send-email 2.17.1", "X-Brightmail-Tracker": [ "H4sIAAAAAAAAA0WSaUgUcRjG++/szoybq9N6/d3EYqkPiml28QelLM0GKYoIkUxr1PEoV2VH\n\tLTPIUFbTsDRKMDUPwgtUdPFKzRbZ9SrTNM/Y/GDqRuWVKYrmOkrfnvd5f+/zfHlJTFoukpER\n\tUbGsMoqJlONiYb12te+I6YfAgKOF7S5oM39ciJZWxwm0rqoBaLFDh6OSomUM5fWlCNHE4CqO\n\tBlNXCbQ5tiZC2pkUHHXW6QH63JyHozJNJ4G0hdZoeMDUw5xWl48K6KbcrwRd0jIroNNHBjC6\n\ttuIxTnclx9E5GZMY/bttCKcz1RWAXqy1vyK+LnYPYSMj4lmly+lb4nBDkV4QU21771OeVRJY\n\tsEwHJiSkTsA1bbkoHYhJKVUGoEFr2BmWAFxe6RfwwyKA01PTwt2TKt1TjF+UAqjT9+H8sALg\n\t29RXIiOFU06wu7IDGLUlJYPzjQ2EEcKoFiF83pm9HWVB+cClzPktiCSF1GFYXsAZpYRygxl1\n\tTnzZAVhZ075dBqkqAmZlVW3jkPKCDS8v8YwFNOjUBK/t4GbTawGvH0J9yizgb9MAzNFs7CzO\n\tQPWPj4QxB6McYHWzC2+fhaOppQI+3gyO/NxntLEtmV2fg/G2BKappDx9CK69L8V4LYOjvxYJ\n\tHqGhwbBtS6kAmNP/AjwD9rn/qwoBqAA2bBynCGO541HsXWeOUXBxUWHOwdGKWrD1QD0buj+N\n\toG09SAMoEshNJZ3pgQFSERPPJSg0AJKY3FISn7VlSUKYhPusMvqmMi6S5TRgPymU20gS93zz\n\tl1JhTCx7h2VjWOXuVkCayJLAqYXbA0NzAFkNqrr8VY7nned7E57YMTVTfh7dZq3VVFbBTIp5\n\t67LbuXeunn9r3nz3Dg4d93XzuRZUXPogtiByTjp5o8S5p3v4wtCjfNPkXl+ZtTi0mFRcBmsn\n\tD9LA08FTtWSbfWxocK+X+mKiHE0wNu6+V/VFZmOzqMdv4ou3XMiFM66OmJJj/gGOd8bIPAMA\n\tAA==", "H4sIAAAAAAAAA+NgFmpkkeLIzCtJLcpLzFFi42I5/e/4XV3us3GxBnePiVr8n3ubxeLLz9vs\n\tFn/aNjBafD5ynM1i8cJvzBZzzrewWNy58pPN4kr7T3aL/7d+s1oce9HCZnFi831Gi8u75rBZ\n\trDh0gt3i2AIxi+uXeBz4PbasvMnksXPWXXaPxXteMnl03bjE7LFpVSebx8nmUo/p3Q+ZPd7v\n\tu8rm0bdlFaPH501yAVxRejZF+aUlqQoZ+cUltkrRhhZGeoaWFnpGJpZ6hsbmsVZGpkr6djYp\n\tqTmZZalF+nYJehmvFt5nKlgvWXFhjmgD4yeRLkZODgkBE4l1x/uZuxi5OIQEljJKdHw+ywSR\n\tkJL48esCK4QtLPHnWhcbRNE3Rombd2eygyTYBHQkTq0+wghiiwA1fNyxnR2kiFngBIvEzIkn\n\twSYJC3hJfOn7CFTEwcEioCqxcl4xiMkrYC3RvVkHYr68xOoNB5gnMPIsYGRYxSiSWlqcm55b\n\tbKRXnJhbXJqXrpecn7uJERj824793LKDsetd8CFGAQ5GJR7eE11xsUKsiWXFlbmHGCU4mJVE\n\teMsmAoV4UxIrq1KL8uOLSnNSiw8xmgKtnsgsJZqcD4zMvJJ4Q1NDcwtLQ3Njc2MzCyVx3g6B\n\tgzFCAumJJanZqakFqUUwfUwcnFINjFrxOWs9fWbsXJCoKfp6mn6dx12lZY7z/8Qf+V9o6Z03\n\tKyF2svNe5dQLW1PPTcu7+k+jOfH+G3WbopW3pi2/8J/ncnXo9q1LKkVMwy+fFruwUTL9+Mu4\n\tU+cDtyamXPRv9vXQynlgPH+PgYXYeabodQcMuVl33pKuFXUTtlz7Jrgy+crLUvH3j5RYijMS\n\tDbWYi4oTAU/1fI6UAgAA" ], "X-CMS-MailID": "20190822171243eucas1p12213f2239d6c36be515dade41ed7470b", "X-Msg-Generator": "CA", "X-RootMTR": "20190822171243eucas1p12213f2239d6c36be515dade41ed7470b", "X-EPHeader": "CA", "CMS-TYPE": "201P", "X-CMS-RootMailID": "20190822171243eucas1p12213f2239d6c36be515dade41ed7470b", "References": "<CGME20190822171243eucas1p12213f2239d6c36be515dade41ed7470b@eucas1p1.samsung.com>", "X-Mailman-Approved-At": "Thu, 22 Aug 2019 18:21:30 +0000", "Subject": "[Intel-wired-lan] [PATCH net v3] ixgbe: fix double clean of tx\n\tdescriptors with xdp", "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": "Jakub Kicinski <jakub.kicinski@netronome.com>, Daniel Borkmann\n\t<daniel@iogearbox.net>, William Tu <u9012063@gmail.com>, \n\tlinux-kernel@vger.kernel.org, Alexei Starovoitov <ast@kernel.org>, \n\tintel-wired-lan@lists.osuosl.org, Ilya Maximets\n\t<i.maximets@samsung.com>, bpf@vger.kernel.org,\n\t=?utf-8?b?QmrDtnJuIFTDtnBlbA==?= <bjorn.topel@intel.com>,\n\t\"David S. Miller\" <davem@davemloft.net>, Magnus Karlsson\n\t<magnus.karlsson@intel.com>, Eelco Chaudron <echaudro@redhat.com>", "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": "Tx code doesn't clear the descriptors' status after cleaning.\nSo, if the budget is larger than number of used elems in a ring, some\ndescriptors will be accounted twice and xsk_umem_complete_tx will move\nprod_tail far beyond the prod_head breaking the completion queue ring.\n\nFix that by limiting the number of descriptors to clean by the number\nof used descriptors in the tx ring.\n\n'ixgbe_clean_xdp_tx_irq()' function refactored to look more like\n'ixgbe_xsk_clean_tx_ring()' since we're allowed to directly use\n'next_to_clean' and 'next_to_use' indexes.\n\nFixes: 8221c5eba8c1 (\"ixgbe: add AF_XDP zero-copy Tx support\")\nSigned-off-by: Ilya Maximets <i.maximets@samsung.com>\n---\n\nVersion 3:\n * Reverted some refactoring made for v2.\n * Eliminated 'budget' for tx clean.\n * prefetch returned.\n\nVersion 2:\n * 'ixgbe_clean_xdp_tx_irq()' refactored to look more like\n 'ixgbe_xsk_clean_tx_ring()'.\n\n drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c | 29 ++++++++------------\n 1 file changed, 11 insertions(+), 18 deletions(-)", "diff": "diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c\nindex 6b609553329f..a3b6d8c89127 100644\n--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c\n+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c\n@@ -633,19 +633,17 @@ static void ixgbe_clean_xdp_tx_buffer(struct ixgbe_ring *tx_ring,\n bool ixgbe_clean_xdp_tx_irq(struct ixgbe_q_vector *q_vector,\n \t\t\t struct ixgbe_ring *tx_ring, int napi_budget)\n {\n+\tu16 ntc = tx_ring->next_to_clean, ntu = tx_ring->next_to_use;\n \tunsigned int total_packets = 0, total_bytes = 0;\n-\tu32 i = tx_ring->next_to_clean, xsk_frames = 0;\n-\tunsigned int budget = q_vector->tx.work_limit;\n \tstruct xdp_umem *umem = tx_ring->xsk_umem;\n \tunion ixgbe_adv_tx_desc *tx_desc;\n \tstruct ixgbe_tx_buffer *tx_bi;\n-\tbool xmit_done;\n+\tu32 xsk_frames = 0;\n \n-\ttx_bi = &tx_ring->tx_buffer_info[i];\n-\ttx_desc = IXGBE_TX_DESC(tx_ring, i);\n-\ti -= tx_ring->count;\n+\ttx_bi = &tx_ring->tx_buffer_info[ntc];\n+\ttx_desc = IXGBE_TX_DESC(tx_ring, ntc);\n \n-\tdo {\n+\twhile (ntc != ntu) {\n \t\tif (!(tx_desc->wb.status & cpu_to_le32(IXGBE_TXD_STAT_DD)))\n \t\t\tbreak;\n \n@@ -661,22 +659,18 @@ bool ixgbe_clean_xdp_tx_irq(struct ixgbe_q_vector *q_vector,\n \n \t\ttx_bi++;\n \t\ttx_desc++;\n-\t\ti++;\n-\t\tif (unlikely(!i)) {\n-\t\t\ti -= tx_ring->count;\n+\t\tntc++;\n+\t\tif (unlikely(ntc == tx_ring->count)) {\n+\t\t\tntc = 0;\n \t\t\ttx_bi = tx_ring->tx_buffer_info;\n \t\t\ttx_desc = IXGBE_TX_DESC(tx_ring, 0);\n \t\t}\n \n \t\t/* issue prefetch for next Tx descriptor */\n \t\tprefetch(tx_desc);\n+\t}\n \n-\t\t/* update budget accounting */\n-\t\tbudget--;\n-\t} while (likely(budget));\n-\n-\ti += tx_ring->count;\n-\ttx_ring->next_to_clean = i;\n+\ttx_ring->next_to_clean = ntc;\n \n \tu64_stats_update_begin(&tx_ring->syncp);\n \ttx_ring->stats.bytes += total_bytes;\n@@ -688,8 +682,7 @@ bool ixgbe_clean_xdp_tx_irq(struct ixgbe_q_vector *q_vector,\n \tif (xsk_frames)\n \t\txsk_umem_complete_tx(umem, xsk_frames);\n \n-\txmit_done = ixgbe_xmit_zc(tx_ring, q_vector->tx.work_limit);\n-\treturn budget > 0 && xmit_done;\n+\treturn ixgbe_xmit_zc(tx_ring, q_vector->tx.work_limit);\n }\n \n int ixgbe_xsk_async_xmit(struct net_device *dev, u32 qid)\n", "prefixes": [ "net", "v3" ] }