Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2186490/?format=api
{ "id": 2186490, "url": "http://patchwork.ozlabs.org/api/patches/2186490/?format=api", "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20260120075216.2260333-1-vivek.behera@siemens.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": "<20260120075216.2260333-1-vivek.behera@siemens.com>", "list_archive_url": null, "date": "2026-01-20T07:52:16", "name": "[iwl-net,v11] igc: Fix trigger of incorrect irq in igc_xsk_wakeup function", "commit_ref": null, "pull_url": null, "state": "under-review", "archived": false, "hash": "03a9f1647d68ed185f52da14c3aca1b928f2d4af", "submitter": { "id": 92212, "url": "http://patchwork.ozlabs.org/api/people/92212/?format=api", "name": "Vivek Behera", "email": "vivek.behera@siemens.com" }, "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/20260120075216.2260333-1-vivek.behera@siemens.com/mbox/", "series": [ { "id": 488996, "url": "http://patchwork.ozlabs.org/api/series/488996/?format=api", "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/list/?series=488996", "date": "2026-01-20T07:52:16", "name": "[iwl-net,v11] igc: Fix trigger of incorrect irq in igc_xsk_wakeup function", "version": 11, "mbox": "http://patchwork.ozlabs.org/series/488996/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2186490/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2186490/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=X15IO5e5;\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 4dwKS35tGrz1xsN\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 20 Jan 2026 18:57:39 +1100 (AEDT)", "from localhost (localhost [127.0.0.1])\n\tby smtp1.osuosl.org (Postfix) with ESMTP id 4818F8572C;\n\tTue, 20 Jan 2026 07:57:38 +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 BGZFlipBGSCw; Tue, 20 Jan 2026 07:57:36 +0000 (UTC)", "from lists1.osuosl.org (lists1.osuosl.org [140.211.166.142])\n\tby smtp1.osuosl.org (Postfix) with ESMTP id A472F8572A;\n\tTue, 20 Jan 2026 07:57:36 +0000 (UTC)", "from smtp2.osuosl.org (smtp2.osuosl.org [IPv6:2605:bc80:3010::133])\n by lists1.osuosl.org (Postfix) with ESMTP id 6EA14122\n for <intel-wired-lan@lists.osuosl.org>; Tue, 20 Jan 2026 07:57:34 +0000 (UTC)", "from localhost (localhost [127.0.0.1])\n by smtp2.osuosl.org (Postfix) with ESMTP id 5D60242D9B\n for <intel-wired-lan@lists.osuosl.org>; Tue, 20 Jan 2026 07:57:34 +0000 (UTC)", "from smtp2.osuosl.org ([127.0.0.1])\n by localhost (smtp2.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP\n id B8Mpwxw7LZcG for <intel-wired-lan@lists.osuosl.org>;\n Tue, 20 Jan 2026 07:57:33 +0000 (UTC)", "from mta-65-227.siemens.flowmailer.net\n (mta-65-227.siemens.flowmailer.net [185.136.65.227])\n by smtp2.osuosl.org (Postfix) with ESMTPS id 29EF440042\n for <intel-wired-lan@lists.osuosl.org>; Tue, 20 Jan 2026 07:57:32 +0000 (UTC)", "by mta-65-227.siemens.flowmailer.net with ESMTPSA id\n 202601200752265cb710d0dc0002078c\n for <intel-wired-lan@lists.osuosl.org>;\n Tue, 20 Jan 2026 08:52:26 +0100" ], "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 A472F8572A", "OpenDKIM Filter v2.11.0 smtp2.osuosl.org 29EF440042" ], "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=osuosl.org;\n\ts=default; t=1768895856;\n\tbh=dHNPCBS8JZczk4mj/RprkZdbFxtHFACE5Wea4DggNG8=;\n\th=To:Cc:Date:Subject:List-Id:List-Unsubscribe:List-Archive:\n\t List-Post:List-Help:List-Subscribe:From:Reply-To:From;\n\tb=X15IO5e5A3itGP3r6qA6ze1zW8oiFBofoOnDg9oMAVyoSZ8m6Gi1hVa/6popOG6vt\n\t VnDR9lMbI9dQzIIebUgCpmFCAyEp54+KXrJxPjGzRwqzt+/0OHakcl5TLdlyTfrDdQ\n\t 0EpgMun2eerYmyObHA1uxitORu4dHR8gkKX1fHcPknIDIfS41dQzpM4xMFuLHKZyOM\n\t MjaeQC1wDkAMsgZDEDV5UbOyvL8i0qXDegX04rKUncofnlET/RF+nBYltLdpAEV2Pi\n\t pICkUCinkdWD/6y1VtLsV1SC8nMFGjdlxGgJ+duzptrdEbiMK/TH2eCcjp4d8ibnce\n\t bUgRyFoW05FKQ==", "X-Greylist": "delayed 303 seconds by postgrey-1.37 at util1.osuosl.org;\n Tue, 20 Jan 2026 07:57:32 UTC", "DMARC-Filter": "OpenDMARC Filter v1.4.2 smtp2.osuosl.org 29EF440042", "Received-SPF": "Pass (mailfrom) identity=mailfrom; client-ip=185.136.65.227;\n helo=mta-65-227.siemens.flowmailer.net;\n envelope-from=fm-1333436-202601200752265cb710d0dc0002078c-pjelgu@rts-flowmailer.siemens.com;\n receiver=<UNKNOWN>", "To": "aleksandr.loktionov@intel.com, jacob.e.keller@intel.com,\n anthony.l.nguyen@intel.com, przemyslaw.kitszel@intel.com", "Cc": "yoong.siang.song@intel.com, intel-wired-lan@lists.osuosl.org,\n vivek.behera@siemens.com", "Date": "Tue, 20 Jan 2026 08:52:16 +0100", "Message-Id": "<20260120075216.2260333-1-vivek.behera@siemens.com>", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "X-Flowmailer-Platform": "Siemens", "Feedback-ID": "519:519-1333436:519-21489:flowmailer", "X-Mailman-Original-DKIM-Signature": "v=1; a=rsa-sha256; q=dns/txt;\n c=relaxed/relaxed; s=fm1;\n d=siemens.com; i=vivek.behera@siemens.com;\n h=Date:From:Subject:To:Message-ID:MIME-Version:Content-Type:Content-Transfer-Encoding:Cc;\n bh=dHNPCBS8JZczk4mj/RprkZdbFxtHFACE5Wea4DggNG8=;\n b=LKzSYHgRAlP/g83Cw/NegIBrA9IztXhM54sn8RB+TNbixsq6YQU2lJmbMboriQVZy2jL+q\n 8nFkgLDNTWMJIjPmUzrEpRevOCx6Z25EULT/ClGH6QA2HRfzfoGNTJCcDKH0N0pJ39aH4r6G\n /ib+cyWNeZJP4BGE5RkDCS2BB61fsCmg3fnp05E1W9oDWA8vheXgCrcYqqbYrCqDIFFaQbqD\n QGvM9zTd4PSb7/LXpjpTaesdCoYnwkEgbI37hVYdkosbv5W1Ho2HTAesrw/zqVDTzTRX75ee\n AgaHVfv4dPFfXrB3IKUBmQfRIi3Del16Mdgtddg3h6GYbn+w11WmMoMw==;", "X-Mailman-Original-Authentication-Results": [ "smtp2.osuosl.org;\n dmarc=pass (p=reject dis=none)\n header.from=siemens.com", "smtp2.osuosl.org;\n dkim=pass (2048-bit key,\n unprotected) header.d=siemens.com header.i=vivek.behera@siemens.com\n header.a=rsa-sha256 header.s=fm1 header.b=LKzSYHgR" ], "Subject": "[Intel-wired-lan] [PATCH iwl-net v11] igc: Fix trigger of incorrect\n irq in igc_xsk_wakeup function", "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>", "From": "Vivek Behera via Intel-wired-lan <intel-wired-lan@osuosl.org>", "Reply-To": "Vivek Behera <vivek.behera@siemens.com>", "Errors-To": "intel-wired-lan-bounces@osuosl.org", "Sender": "\"Intel-wired-lan\" <intel-wired-lan-bounces@osuosl.org>" }, "content": "This patch addresses the issue where the igc_xsk_wakeup function\nwas triggering an incorrect IRQ for tx-0 when the i226 is configured\nwith only 2 combined queues or in an environment with 2 active CPU cores.\nThis prevented XDP Zero-copy send functionality in such split IRQ\nconfigurations.\n\nThe fix implements the correct logic for extracting q_vectors saved\nduring rx and tx ring allocation and utilizes flags provided by the\nndo_xsk_wakeup API to trigger the appropriate IRQ.\n\nFixes: fc9df2a0b520 (\"igc: Enable RX via AF_XDP zero-copy\")\nFixes: 15fd021bc427 (\"igc: Add Tx hardware timestamp request for AF_XDP zero-copy packet\")\nSigned-off-by: Vivek Behera <vivek.behera@siemens.com>\nReviewed-by: Jacob Keller <jacob.keller@intel.com>\nReviewed-by: Aleksandr loktinov <aleksandr.loktionov@intel.com>\nReviewed-by: Piotr Kwapulinski <piotr.kwapulinski@intel.com>\n---\nv1: https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flore.kernel.org%2Fintel-wired-lan%2FAS1PR10MB5392B7268416DB8A1624FDB88FA7A%40AS1PR10MB5392.EURPRD10.PROD.OUTLOOK.COM%2F&data=05%7C02%7Cvivek.behera%40siemens.com%7Cb609a859d19b47e8f47808de38d77627%7C38ae3bcd95794fd4addab42e1495d55a%7C1%7C0%7C639010695226787962%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=S1060xzCOGrJo0cO2enNhDmCIJUcCLZd%2F%2BmKLByazm8%3D&reserved=0\nv2: https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flore.kernel.org%2Fintel-wired-lan%2FAS1PR10MB539280B1427DA0ABE9D65E628FA5A%40AS1PR10MB5392.EURPRD10.PROD.OUTLOOK.COM%2F&data=05%7C02%7Cvivek.behera%40siemens.com%7Cb609a859d19b47e8f47808de38d77627%7C38ae3bcd95794fd4addab42e1495d55a%7C1%7C0%7C639010695226846016%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=ksDVfndVlbafyexZ2%2B3j9GccO9hupybvtl1twZs5OSk%3D&reserved=0\nv3: https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flore.kernel.org%2Fintel-wired-lan%2FIA3PR11MB8986E4ACB7F264CF2DD1D750E5A0A%40IA3PR11MB8986.namprd11.prod.outlook.com%2F&data=05%7C02%7Cvivek.behera%40siemens.com%7Cb609a859d19b47e8f47808de38d77627%7C38ae3bcd95794fd4addab42e1495d55a%7C1%7C0%7C639010695226890990%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=zEWhj7N2%2BmwsShmoy1ACAjb3vi7yJgbA077fISIOZiM%3D&reserved=0\nv4: https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flore.kernel.org%2Fintel-wired-lan%2FAS1PR10MB53926CB955FBD4F9F4A018818FA0A%40AS1PR10MB5392.EURPRD10.PROD.OUTLOOK.COM%2F&data=05%7C02%7Cvivek.behera%40siemens.com%7Cb609a859d19b47e8f47808de38d77627%7C38ae3bcd95794fd4addab42e1495d55a%7C1%7C0%7C639010695226933538%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=23aTM4TNsnyzoS%2FpSM1GcluaWzLPNbrPKEo%2BOrm9hZQ%3D&reserved=0\nv5: https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flore.kernel.org%2Fintel-wired-lan%2FAS1PR10MB5392FCA415A38B9DD7BB5F218FA0A%40AS1PR10MB5392.EURPRD10.PROD.OUTLOOK.COM%2F&data=05%7C02%7Cvivek.behera%40siemens.com%7Cb609a859d19b47e8f47808de38d77627%7C38ae3bcd95794fd4addab42e1495d55a%7C1%7C0%7C639010695227205026%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=JdY3aHzIcIWtir9fAV%2BMELNWtiyLJYRU7IMxLZ0mPqQ%3D&reserved=0\nv6: https://lore.kernel.org/intel-wired-lan/20251211173916.23951-1-vivek.behera@siemens.com/\nv7: https://lore.kernel.org/intel-wired-lan/20251212163208.137164-1-vivek.behera@siemens.com/\nv8: https://lore.kernel.org/intel-wired-lan/20251215122052.412327-1-vivek.behera@siemens.com/\nv9: https://lore.kernel.org/intel-wired-lan/20251220110009.137245-1-vivek.behera@siemens.com/\nv10: https://lore.kernel.org/intel-wired-lan/20260117150753.2088857-1-vivek.behera@siemens.com/\nchangelog:\nv1\n- Inital description of the Bug and steps to reproduce with RTC Testbench\n- Test results after applying the patch\nv1 -> v2\n- Handling of RX and TX Wakeup in igc_xsk_wakeup for a split IRQ configuration\n- Removal of igc_trigger_rxtxq_interrupt (now redundant)\n- Added flag to igc_xsk_wakeup function call in igc_ptp_free_tx_buffer\nv2 -> v3\n- Added 'Fixes:' tags for the relevant commits.\n- Added reviewer\nv3 -> v4\n- Added reviewer\nv4 -> v5\n- Updated comment style from multi-star to standard linux convention\nv5 -> v6\n- Resolve formatting issues highlighted by reviewers\n- Try to include version histroy as defined in netdev guidelines\n- Included review suggestions from Przemyslaw\n- Added reviewers\nv6 -> v7\n- Included review suggestions from Przemyslaw missed in v6\nv7 -> v8\n- Modified sequence to complete all error checks for rx and tx\n before updating napi states and triggering irq\nv8 -> v9\n- Included review feedback and suggestions from Tony and Siang\nv9 -> v10\n- Introduced a simplified logic for sequential check for RX and TX\nv10 -> v11\n- Improved explanation of implemented logic in comment block\n---\n drivers/net/ethernet/intel/igc/igc_main.c | 34 ++++++++++++++++-------\n drivers/net/ethernet/intel/igc/igc_ptp.c | 3 +-\n 2 files changed, 26 insertions(+), 11 deletions(-)", "diff": "diff --git a/drivers/net/ethernet/intel/igc/igc_main.c b/drivers/net/ethernet/intel/igc/igc_main.c\nindex 7aafa60ba0c8..0a2673cf7ece 100644\n--- a/drivers/net/ethernet/intel/igc/igc_main.c\n+++ b/drivers/net/ethernet/intel/igc/igc_main.c\n@@ -6908,28 +6908,29 @@ static int igc_xdp_xmit(struct net_device *dev, int num_frames,\n \treturn nxmit;\n }\n \n-static void igc_trigger_rxtxq_interrupt(struct igc_adapter *adapter,\n-\t\t\t\t\tstruct igc_q_vector *q_vector)\n+static u32 igc_sw_irq_prep(struct igc_q_vector *q_vector)\n {\n-\tstruct igc_hw *hw = &adapter->hw;\n \tu32 eics = 0;\n \n-\teics |= q_vector->eims_value;\n-\twr32(IGC_EICS, eics);\n+\tif (!napi_if_scheduled_mark_missed(&q_vector->napi))\n+\t\teics = q_vector->eims_value;\n+\n+\treturn eics;\n }\n \n int igc_xsk_wakeup(struct net_device *dev, u32 queue_id, u32 flags)\n {\n \tstruct igc_adapter *adapter = netdev_priv(dev);\n-\tstruct igc_q_vector *q_vector;\n+\tstruct igc_hw *hw = &adapter->hw;\n \tstruct igc_ring *ring;\n+\tu32 eics = 0;\n \n \tif (test_bit(__IGC_DOWN, &adapter->state))\n \t\treturn -ENETDOWN;\n \n \tif (!igc_xdp_is_enabled(adapter))\n \t\treturn -ENXIO;\n-\n+\t/* Check if queue_id is valid. Tx and Rx queue numbers are always same */\n \tif (queue_id >= adapter->num_rx_queues)\n \t\treturn -EINVAL;\n \n@@ -6938,9 +6939,22 @@ int igc_xsk_wakeup(struct net_device *dev, u32 queue_id, u32 flags)\n \tif (!ring->xsk_pool)\n \t\treturn -ENXIO;\n \n-\tq_vector = adapter->q_vector[queue_id];\n-\tif (!napi_if_scheduled_mark_missed(&q_vector->napi))\n-\t\tigc_trigger_rxtxq_interrupt(adapter, q_vector);\n+\tif (flags & XDP_WAKEUP_RX)\n+\t\teics |= igc_sw_irq_prep(ring->q_vector);\n+\n+\tif (flags & XDP_WAKEUP_TX) {\n+\t\t/* If IGC_FLAG_QUEUE_PAIRS is active, the q_vector\n+\t\t * and NAPI is shared between RX and TX.\n+\t\t * If NAPI is already running it would be marked as missed\n+\t\t * from the RX path, making this TX call a NOP\n+\t\t */\n+\t\tring = adapter->tx_ring[queue_id];\n+\t\teics |= igc_sw_irq_prep(ring->q_vector);\n+\t}\n+\n+\tif (eics)\n+\t\t/* Cause software interrupt */\n+\t\twr32(IGC_EICS, eics);\n \n \treturn 0;\n }\ndiff --git a/drivers/net/ethernet/intel/igc/igc_ptp.c b/drivers/net/ethernet/intel/igc/igc_ptp.c\nindex b7b46d863bee..df2e500a4d7e 100644\n--- a/drivers/net/ethernet/intel/igc/igc_ptp.c\n+++ b/drivers/net/ethernet/intel/igc/igc_ptp.c\n@@ -550,7 +550,8 @@ static void igc_ptp_free_tx_buffer(struct igc_adapter *adapter,\n \t\ttstamp->buffer_type = 0;\n \n \t\t/* Trigger txrx interrupt for transmit completion */\n-\t\tigc_xsk_wakeup(adapter->netdev, tstamp->xsk_queue_index, 0);\n+\t\tigc_xsk_wakeup(adapter->netdev, tstamp->xsk_queue_index,\n+\t\t\t XDP_WAKEUP_TX);\n \n \t\treturn;\n \t}\n", "prefixes": [ "iwl-net", "v11" ] }