Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2205500/?format=api
{ "id": 2205500, "url": "http://patchwork.ozlabs.org/api/patches/2205500/?format=api", "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20260305-igb_irq_ts-v5-1-d3b96828ab5b@linutronix.de/", "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": "<20260305-igb_irq_ts-v5-1-d3b96828ab5b@linutronix.de>", "list_archive_url": null, "date": "2026-03-05T10:25:53", "name": "[iwl-next,v5] igb: Retrieve Tx timestamp from BH workqueue", "commit_ref": null, "pull_url": null, "state": "under-review", "archived": false, "hash": "7b37033f5022888fcaa53677ba4a09650a52e26c", "submitter": { "id": 72577, "url": "http://patchwork.ozlabs.org/api/people/72577/?format=api", "name": "Kurt Kanzenbach", "email": "kurt@linutronix.de" }, "delegate": { "id": 109701, "url": "http://patchwork.ozlabs.org/api/users/109701/?format=api", "username": "anguy11", "first_name": "Anthony", "last_name": "Nguyen", "email": "anthony.l.nguyen@intel.com" }, "mbox": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20260305-igb_irq_ts-v5-1-d3b96828ab5b@linutronix.de/mbox/", "series": [ { "id": 494530, "url": "http://patchwork.ozlabs.org/api/series/494530/?format=api", "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/list/?series=494530", "date": "2026-03-05T10:25:53", "name": "[iwl-next,v5] igb: Retrieve Tx timestamp from BH workqueue", "version": 5, "mbox": "http://patchwork.ozlabs.org/series/494530/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2205500/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2205500/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@legolas.ozlabs.org", "intel-wired-lan@lists.osuosl.org" ], "Authentication-Results": [ "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=osuosl.org header.i=@osuosl.org header.a=rsa-sha256\n header.s=default header.b=HSxLYEaZ;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=osuosl.org\n (client-ip=2605:bc80:3010::138; helo=smtp1.osuosl.org;\n envelope-from=intel-wired-lan-bounces@osuosl.org;\n receiver=patchwork.ozlabs.org)" ], "Received": [ "from smtp1.osuosl.org (smtp1.osuosl.org [IPv6:2605:bc80:3010::138])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fRQgC30Rfz1xw1\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 05 Mar 2026 21:26:13 +1100 (AEDT)", "from localhost (localhost [127.0.0.1])\n\tby smtp1.osuosl.org (Postfix) with ESMTP id 09C4C81E28;\n\tThu, 5 Mar 2026 10:26:11 +0000 (UTC)", "from smtp1.osuosl.org ([127.0.0.1])\n by localhost (smtp1.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP\n id lPHTnSF1AQCU; Thu, 5 Mar 2026 10:26:10 +0000 (UTC)", "from lists1.osuosl.org (lists1.osuosl.org [140.211.166.142])\n\tby smtp1.osuosl.org (Postfix) with ESMTP id 2DA4781E36;\n\tThu, 5 Mar 2026 10:26:10 +0000 (UTC)", "from smtp1.osuosl.org (smtp1.osuosl.org [IPv6:2605:bc80:3010::138])\n by lists1.osuosl.org (Postfix) with ESMTP id E6AFF223\n for <intel-wired-lan@lists.osuosl.org>; Thu, 5 Mar 2026 10:26:08 +0000 (UTC)", "from localhost (localhost [127.0.0.1])\n by smtp1.osuosl.org (Postfix) with ESMTP id D857081E36\n for <intel-wired-lan@lists.osuosl.org>; Thu, 5 Mar 2026 10:26:08 +0000 (UTC)", "from smtp1.osuosl.org ([127.0.0.1])\n by localhost (smtp1.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP\n id CQ77Minx5BpM for <intel-wired-lan@lists.osuosl.org>;\n Thu, 5 Mar 2026 10:26:08 +0000 (UTC)", "from galois.linutronix.de (Galois.linutronix.de [193.142.43.55])\n by smtp1.osuosl.org (Postfix) with ESMTPS id C14C481E28\n for <intel-wired-lan@lists.osuosl.org>; Thu, 5 Mar 2026 10:26:07 +0000 (UTC)" ], "X-Virus-Scanned": [ "amavis at osuosl.org", "amavis at osuosl.org" ], "X-Comment": "SPF check N/A for local connections - client-ip=140.211.166.142;\n helo=lists1.osuosl.org; envelope-from=intel-wired-lan-bounces@osuosl.org;\n receiver=<UNKNOWN> ", "DKIM-Filter": [ "OpenDKIM Filter v2.11.0 smtp1.osuosl.org 2DA4781E36", "OpenDKIM Filter v2.11.0 smtp1.osuosl.org C14C481E28" ], "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=osuosl.org;\n\ts=default; t=1772706370;\n\tbh=jcB4Qc4RSpTJkK3766CPxby/vsOqv2xo6x9Nr5FoRkY=;\n\th=From:Date:To:Subject:List-Id:List-Unsubscribe:List-Archive:\n\t List-Post:List-Help:List-Subscribe:Cc:From;\n\tb=HSxLYEaZN3qfWbleai37S1uSCrtbFZkWxQSesXX4VjGBTSYc+Iu4eq85KQYdCteM4\n\t nFTeHAXI/DFgsCrrk4++NM/gGTfqenxYA1BZg7m2BHqftxC/iyzFWEiexgtSKf3B4H\n\t fhz6rMR7WIhrV5GrkDlPa1yARAcyqhpE9YXeKbMLfYkLI66YsB34C9ZknnbX9RmFLY\n\t 7yD6Z2ZUFmc/yHC/WcYsB5R4i5wXHxQrtmpLuvdpshUnWsHr15NYBzXCQxMbYmpLvs\n\t G9rsRGig11fJnYgcoTenaG0qKgyao3aEXjqD+YpBQ8dHoYhZPbLH2fG5FYdJCZrls0\n\t pgnSEmTRC+lkw==", "Received-SPF": "Pass (mailfrom) identity=mailfrom; client-ip=193.142.43.55;\n helo=galois.linutronix.de; envelope-from=kurt@linutronix.de;\n receiver=<UNKNOWN>", "DMARC-Filter": "OpenDMARC Filter v1.4.2 smtp1.osuosl.org C14C481E28", "From": "Kurt Kanzenbach <kurt@linutronix.de>", "Date": "Thu, 05 Mar 2026 11:25:53 +0100", "MIME-Version": "1.0", "Content-Type": "text/plain; charset=\"utf-8\"", "Content-Transfer-Encoding": "7bit", "Message-Id": "<20260305-igb_irq_ts-v5-1-d3b96828ab5b@linutronix.de>", "X-B4-Tracking": "v=1; b=H4sIADBaqWkC/23Q0WoDIRAF0F8JPtego67Sp/xHKEEnbjIQ3Fa3Z\n kPYf68sDc2WPA7DuZeZOysxUyzsfXNnOVYqNKQ2mLcNw7NPp8jp2GYGAoxwUnE6hQPlr8NYuPT\n eWkQbNAbWwGeOPU1L2J7R9cJTnEb20TZnKuOQb0tLlcv+N9A8B1bJJXfY9SiUURpgd6H0PeYh0\n bQ9xiWqwhMHWHFoXHpUVljnrdevuHrwToBYt6vGIfbtINTBOfOK6z+uxOobVTeOwUfbS7Cik//\n 5PM8/NDK+gG8BAAA=", "X-Change-ID": "20250813-igb_irq_ts-1aa77cc7b4cb", "To": "Tony Nguyen <anthony.l.nguyen@intel.com>,\n Przemek Kitszel <przemyslaw.kitszel@intel.com>", "X-Developer-Signature": "v=1; a=openpgp-sha256; l=6087; i=kurt@linutronix.de;\n h=from:subject:message-id; bh=RgkN74Z5fNV4bzo2sabqZd7YQa4GKy2pwPJ9Gy5jLJg=;\n b=owEBbQKS/ZANAwAKAcGT0fKqRnOCAcsmYgBpqVo7/Bhgf5Oj2cRlPlV6xF009jxJJmurp6+c9\n FlGt/doKfyJAjMEAAEKAB0WIQS8ub+yyMN909/bWZLBk9HyqkZzggUCaalaOwAKCRDBk9HyqkZz\n goA4D/9Akp2Gubw9YdaaN140Jmy8tLi4LAmBmo50qceDm4MrWDbREahVadTXK/Mf/9IcnPpBYly\n lcGnsva/PJTsXQSyVgK01rS7IgcnKd3TD3bfs86DeaNYGOLz0g79uJJPf+0R3LCHRR/198Vd4r1\n fRmmG2BsweCK3QfUhzbgpOWsbfI2VeYEjc5VLEJowXKk7c1/5oOH3zzgIDOrz285h0GzVwGSJip\n MMA8Xb8imJMVKUzlIMgi43kBn7hN2mVaYJQlfWawkWNBuI3lH9FEL6ufkHWqeX9voPVrs4plieu\n GVjQ/jFGT0IFs8dSoS/myAoAuW2Yn3iAe/mvYqaO7W4xByTXZHxUrzHVgQXKbWDvwF5VIhrTt/f\n rFvPoCOVL5LDq/7YCPwVTdE2ZggGW74+Y4unSHO+quXavFaFQNOeGyr0jIn0cOs7nj6s3ox2Y9S\n w0vH3Cl/HLbcmhfNeB6Mz1M+aYktpKCzV7KChNhX3tnLi2QwfTKPRA2/rOFf0PI3hUFcQw6EVZx\n HNUZLwmYVwNzU9PWRyCqgGMdrg2oeqsNM5EgBurH8gJiDvwXcvNatQoJ6MaTZAJG8xC92CHTft3\n JPNP8TiimlUQiA2fW13LernU0n3bMs2Q3u7fFLXwoj+tpj6nQsVKLwXJRInFK2Kv3v2xiVkej13\n Xw4QFTot3VJ+OPg==", "X-Developer-Key": "i=kurt@linutronix.de; a=openpgp;\n fpr=BCB9BFB2C8C37DD3DFDB5992C193D1F2AA467382", "X-Mailman-Original-DKIM-Signature": [ "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=linutronix.de; s=2020; t=1772706363;\n h=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n to:to:cc:cc:mime-version:mime-version:content-type:content-type:\n content-transfer-encoding:content-transfer-encoding;\n bh=jcB4Qc4RSpTJkK3766CPxby/vsOqv2xo6x9Nr5FoRkY=;\n b=Fb75O7pHkhNIEquJGMiB8NIOlYp0st3symelN/S73GSyNVdvlr2mYRhyFfQgt9h9iaMixl\n vYqAPwZoc8+FLbs+EfgUsZMRzmbaOml82X6s1yUfiH4owJ5VLY8tGacCfVydExMwdGLtuV\n e2x6FN8XUlaIAkEz8bcBB6HwesJ8ffeDK4eLnrZ9l/sNGs3RGCC7qCbQw1LgifyLFeZmPV\n nY6hcJ+04wsXLC3VtusBzIDDuzLM/lOE9N+d09FnEW0bUvTXEaEOlKacQ8MCHFrcYQ7Q5f\n UrMparniEo3JPX1jR6icT7hoQcsTZSdD6xn8OZjNn2JOOK/dUMWheFsp0AIAuA==", "v=1; a=ed25519-sha256; c=relaxed/relaxed;\n d=linutronix.de; s=2020e; t=1772706363;\n h=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n to:to:cc:cc:mime-version:mime-version:content-type:content-type:\n content-transfer-encoding:content-transfer-encoding;\n bh=jcB4Qc4RSpTJkK3766CPxby/vsOqv2xo6x9Nr5FoRkY=;\n b=8JamC7832A7gp1mCt56f1OTKzbQTZDI5EHeROyYPMTNLLWyWtB65TYomzSAXbsRqdZQCif\n Ah4o3h6CcM0nfpAQ==" ], "X-Mailman-Original-Authentication-Results": [ "smtp1.osuosl.org;\n dmarc=pass (p=none dis=none)\n header.from=linutronix.de", "smtp1.osuosl.org;\n dkim=pass (2048-bit key, unprotected) header.d=linutronix.de\n header.i=@linutronix.de header.a=rsa-sha256 header.s=2020 header.b=Fb75O7pH;\n dkim=pass header.d=linutronix.de header.i=@linutronix.de\n header.a=ed25519-sha256 header.s=2020e header.b=8JamC783" ], "Subject": "[Intel-wired-lan] [PATCH iwl-next v5] igb: Retrieve Tx timestamp\n from BH workqueue", "X-BeenThere": "intel-wired-lan@osuosl.org", "X-Mailman-Version": "2.1.30", "Precedence": "list", "List-Id": "Intel Wired Ethernet Linux Kernel Driver Development\n <intel-wired-lan.osuosl.org>", "List-Unsubscribe": "<https://lists.osuosl.org/mailman/options/intel-wired-lan>,\n <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 <mailto:intel-wired-lan-request@osuosl.org?subject=subscribe>", "Cc": "Paul Menzel <pmenzel@molgen.mpg.de>,\n Vadim Fedorenko <vadim.fedorenko@linux.dev>,\n Vinicius Costa Gomes <vinicius.gomes@intel.com>, netdev@vger.kernel.org,\n Richard Cochran <richardcochran@gmail.com>,\n Kurt Kanzenbach <kurt@linutronix.de>, linux-kernel@vger.kernel.org,\n Aleksandr Loktionov <aleksandr.loktionov@intel.com>,\n Andrew Lunn <andrew+netdev@lunn.ch>, Eric Dumazet <edumazet@google.com>,\n intel-wired-lan@lists.osuosl.org, Jacob Keller <jacob.e.keller@intel.com>,\n Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,\n \"David S. Miller\" <davem@davemloft.net>,\n Sebastian Andrzej Siewior <bigeasy@linutronix.de>", "Errors-To": "intel-wired-lan-bounces@osuosl.org", "Sender": "\"Intel-wired-lan\" <intel-wired-lan-bounces@osuosl.org>" }, "content": "Retrieve Tx timestamp from system BH instead of regular system workqueue.\n\nThe current implementation uses schedule_work() which is executed by the\nsystem work queue and kworkers to retrieve Tx timestamps. This increases\nlatency and can lead to timeouts in case of heavy system load. i210 is\noften used in industrial systems, where timestamp timeouts can be fatal.\n\nTherefore, switch to the system BH workqueues which are executed in softirq\ncontext shortly after the IRQ handler returns.\n\nTested between Intel i210 and i350 with ptp4l gPTP profile:\n\n|ptp4l[30.405]: rms 4 max 7 freq +12825 +/- 3 delay 247 +/- 0\n|ptp4l[31.406]: rms 2 max 3 freq +12829 +/- 3 delay 248 +/- 0\n|ptp4l[32.406]: rms 3 max 3 freq +12827 +/- 3 delay 248 +/- 0\n|ptp4l[33.406]: rms 2 max 3 freq +12827 +/- 3 delay 248 +/- 0\n|ptp4l[34.407]: rms 3 max 6 freq +12825 +/- 4 delay 248 +/- 0\n|ptp4l[35.407]: rms 3 max 6 freq +12822 +/- 4 delay 246 +/- 0\n|ptp4l[36.407]: rms 7 max 10 freq +12812 +/- 5 delay 248 +/- 0\n|ptp4l[37.408]: rms 5 max 8 freq +12808 +/- 3 delay 248 +/- 0\n\nFurthermore, Miroslav Lichvar tested with ntpperf and chrony on Intel i350:\n\nWithout the patch:\n\n| | responses | response time (ns)\n|rate clients | lost invalid basic xleave | min mean max stddev\n|150000 15000 0.00% 0.00% 0.00% 100.00% +4188 +36475 +193328 16179\n|157500 15750 0.02% 0.00% 0.02% 99.96% +6373 +42969 +683894 22682\n|165375 16384 0.03% 0.00% 0.00% 99.97% +7911 +43960 +692471 24454\n|173643 16384 0.06% 0.00% 0.00% 99.94% +8323 +45627 +707240 28452\n|182325 16384 0.06% 0.00% 0.00% 99.94% +8404 +47292 +722524 26936\n|191441 16384 0.00% 0.00% 0.00% 100.00% +8930 +51738 +223727 14272\n|201013 16384 0.05% 0.00% 0.00% 99.95% +9634 +53696 +776445 23783\n|211063 16384 0.00% 0.00% 0.00% 100.00% +14393 +54558 +329546 20473\n|221616 16384 2.59% 0.00% 0.05% 97.36% +23924 +321205 +518192 21838\n|232696 16384 7.00% 0.00% 0.10% 92.90% +33396 +337709 +575661 21017\n|244330 16384 10.82% 0.00% 0.15% 89.03% +34188 +340248 +556237 20880\n|\n|With the patch:\n|150000 15000 5.11% 0.00% 0.00% 94.88% +4426 +460642 +640884 83746\n|157500 15750 11.54% 0.00% 0.26% 88.20% +14434 +543656 +738355 30349\n|165375 16384 15.61% 0.00% 0.31% 84.08% +35822 +515304 +833859 25596\n|173643 16384 19.58% 0.00% 0.37% 80.05% +20762 +568962 +900100 28118\n|182325 16384 23.46% 0.00% 0.42% 76.13% +41829 +547974 +804170 27890\n|191441 16384 27.23% 0.00% 0.46% 72.31% +15182 +557920 +798212 28868\n|201013 16384 30.51% 0.00% 0.49% 69.00% +15980 +560764 +805576 29979\n|211063 16384 0.06% 0.00% 0.00% 99.94% +12668 +80487 +410555 62182\n|221616 16384 2.94% 0.00% 0.05% 97.00% +21587 +342769 +517566 23359\n|232696 16384 6.94% 0.00% 0.10% 92.96% +16581 +336068 +484574 18453\n|244330 16384 11.45% 0.00% 0.14% 88.41% +23608 +345023 +564130 19177\n\nThere are some minor differences at lower rates, but no performance\nregressions at higher ones.\n\nReviewed-by: Paul Menzel <pmenzel@molgen.mpg.de>\nReviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>\nSigned-off-by: Kurt Kanzenbach <kurt@linutronix.de>\n---\nChanges in v5:\n- Adjust changelog wording (Aleksandr Loktionov)\n- Include measurement numbers in changelog (Paul Menzel)\n- Link to v4: https://patch.msgid.link/20260303-igb_irq_ts-v4-1-cbae7f127061@linutronix.de\n\nChanges in v4:\n- Use BH workqueue (tasklet) instead of doing timestamping in IRQ path (Jakub Kicinski)\n- Link to v3: https://patch.msgid.link/20260205-igb_irq_ts-v3-1-2efc7bc4b885@linutronix.de\n\nChanges in v3:\n- Switch back to IRQ, but for i210 only\n- Keep kworker for all other NICs like i350 (Miroslav)\n- Link to v2: https://lore.kernel.org/r/20250822-igb_irq_ts-v2-1-1ac37078a7a4@linutronix.de\n\nChanges in v2:\n- Switch from IRQ to PTP aux worker due to NTP performance regression (Miroslav)\n- Link to v1: https://lore.kernel.org/r/20250815-igb_irq_ts-v1-1-8c6fc0353422@linutronix.de\n---\n drivers/net/ethernet/intel/igb/igb_main.c | 4 ++--\n drivers/net/ethernet/intel/igb/igb_ptp.c | 2 +-\n 2 files changed, 3 insertions(+), 3 deletions(-)\n\n\n---\nbase-commit: ad3dfa80be765757f612da04318248f6d20e4f71\nchange-id: 20250813-igb_irq_ts-1aa77cc7b4cb\n\nBest regards,\n-- \nKurt Kanzenbach <kurt@linutronix.de>", "diff": "diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c\nindex ee99fd8fd513..9fd29fedb9f5 100644\n--- a/drivers/net/ethernet/intel/igb/igb_main.c\n+++ b/drivers/net/ethernet/intel/igb/igb_main.c\n@@ -6572,7 +6572,7 @@ netdev_tx_t igb_xmit_frame_ring(struct sk_buff *skb,\n \t\t\tadapter->ptp_tx_skb = skb_get(skb);\n \t\t\tadapter->ptp_tx_start = jiffies;\n \t\t\tif (adapter->hw.mac.type == e1000_82576)\n-\t\t\t\tschedule_work(&adapter->ptp_tx_work);\n+\t\t\t\tqueue_work(system_bh_wq, &adapter->ptp_tx_work);\n \t\t} else {\n \t\t\tadapter->tx_hwtstamp_skipped++;\n \t\t}\n@@ -7076,7 +7076,7 @@ static void igb_tsync_interrupt(struct igb_adapter *adapter)\n \n \tif (tsicr & E1000_TSICR_TXTS) {\n \t\t/* retrieve hardware timestamp */\n-\t\tschedule_work(&adapter->ptp_tx_work);\n+\t\tqueue_work(system_bh_wq, &adapter->ptp_tx_work);\n \t}\n \n \tif (tsicr & TSINTR_TT0)\ndiff --git a/drivers/net/ethernet/intel/igb/igb_ptp.c b/drivers/net/ethernet/intel/igb/igb_ptp.c\nindex bd85d02ecadd..7b44f9090631 100644\n--- a/drivers/net/ethernet/intel/igb/igb_ptp.c\n+++ b/drivers/net/ethernet/intel/igb/igb_ptp.c\n@@ -832,7 +832,7 @@ static void igb_ptp_tx_work(struct work_struct *work)\n \t\tigb_ptp_tx_hwtstamp(adapter);\n \telse\n \t\t/* reschedule to check later */\n-\t\tschedule_work(&adapter->ptp_tx_work);\n+\t\tqueue_work(system_bh_wq, &adapter->ptp_tx_work);\n }\n \n static void igb_ptp_overflow_check(struct work_struct *work)\n", "prefixes": [ "iwl-next", "v5" ] }