Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/542063/?format=api
{ "id": 542063, "url": "http://patchwork.ozlabs.org/api/patches/542063/?format=api", "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/1447113021-1611-3-git-send-email-bpoirier@suse.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": "<1447113021-1611-3-git-send-email-bpoirier@suse.com>", "list_archive_url": null, "date": "2015-11-09T23:50:19", "name": "[v3,2/4] e1000e: Do not read icr in Other interrupt", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": false, "hash": "2b806014f520345a254736184594e72e0817bce7", "submitter": { "id": 67008, "url": "http://patchwork.ozlabs.org/api/people/67008/?format=api", "name": "Benjamin Poirier", "email": "bpoirier@suse.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/1447113021-1611-3-git-send-email-bpoirier@suse.com/mbox/", "series": [], "comments": "http://patchwork.ozlabs.org/api/patches/542063/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/542063/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<intel-wired-lan-bounces@lists.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" ], "Received": [ "from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138])\n\tby ozlabs.org (Postfix) with ESMTP id 9D7A91401AD\n\tfor <incoming@patchwork.ozlabs.org>;\n\tTue, 10 Nov 2015 10:51:26 +1100 (AEDT)", "from localhost (localhost [127.0.0.1])\n\tby whitealder.osuosl.org (Postfix) with ESMTP id E43C98887D;\n\tMon, 9 Nov 2015 23:51:25 +0000 (UTC)", "from whitealder.osuosl.org ([127.0.0.1])\n\tby localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n\twith ESMTP id 6+oT6mqFhJMt; Mon, 9 Nov 2015 23:51:25 +0000 (UTC)", "from ash.osuosl.org (ash.osuosl.org [140.211.166.34])\n\tby whitealder.osuosl.org (Postfix) with ESMTP id 2B548886F1;\n\tMon, 9 Nov 2015 23:51:25 +0000 (UTC)", "from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137])\n\tby ash.osuosl.org (Postfix) with ESMTP id BAE7F1C0FC9\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tMon, 9 Nov 2015 23:51:23 +0000 (UTC)", "from localhost (localhost [127.0.0.1])\n\tby fraxinus.osuosl.org (Postfix) with ESMTP id B617788334\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tMon, 9 Nov 2015 23:51:23 +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 q1T_mIWzmi1D for <intel-wired-lan@lists.osuosl.org>;\n\tMon, 9 Nov 2015 23:51:23 +0000 (UTC)", "from mx2.suse.de (mx2.suse.de [195.135.220.15])\n\tby fraxinus.osuosl.org (Postfix) with ESMTPS id E01818834A\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tMon, 9 Nov 2015 23:51:22 +0000 (UTC)", "from relay2.suse.de (charybdis-ext.suse.de [195.135.220.254])\n\tby mx2.suse.de (Postfix) with ESMTP id 28187AAB6;\n\tMon, 9 Nov 2015 23:51:01 +0000 (UTC)" ], "X-Virus-Scanned": [ "amavisd-new at osuosl.org", "amavisd-new at osuosl.org", "by amavisd-new at test-mx.suse.de" ], "X-Greylist": "domain auto-whitelisted by SQLgrey-1.7.6", "From": "Benjamin Poirier <bpoirier@suse.com>", "To": "Jeff Kirsher <jeffrey.t.kirsher@intel.com>", "Date": "Mon, 9 Nov 2015 15:50:19 -0800", "Message-Id": "<1447113021-1611-3-git-send-email-bpoirier@suse.com>", "X-Mailer": "git-send-email 2.6.2", "In-Reply-To": "<1447113021-1611-1-git-send-email-bpoirier@suse.com>", "References": "<1447113021-1611-1-git-send-email-bpoirier@suse.com>", "Cc": "Frank Steiner <steiner-reg@bio.ifi.lmu.de>, linux-kernel@vger.kernel.org,\n\tintel-wired-lan@lists.osuosl.org, netdev@vger.kernel.org", "Subject": "[Intel-wired-lan] [PATCH v3 2/4] e1000e: Do not read icr in Other\n\tinterrupt", "X-BeenThere": "intel-wired-lan@lists.osuosl.org", "X-Mailman-Version": "2.1.18-1", "Precedence": "list", "List-Id": "Intel Wired Ethernet Linux Kernel Driver Development\n\t<intel-wired-lan.lists.osuosl.org>", "List-Unsubscribe": "<http://lists.osuosl.org/mailman/options/intel-wired-lan>, \n\t<mailto:intel-wired-lan-request@lists.osuosl.org?subject=unsubscribe>", "List-Archive": "<http://lists.osuosl.org/pipermail/intel-wired-lan/>", "List-Post": "<mailto:intel-wired-lan@lists.osuosl.org>", "List-Help": "<mailto:intel-wired-lan-request@lists.osuosl.org?subject=help>", "List-Subscribe": "<http://lists.osuosl.org/mailman/listinfo/intel-wired-lan>, \n\t<mailto:intel-wired-lan-request@lists.osuosl.org?subject=subscribe>", "MIME-Version": "1.0", "Content-Type": "text/plain; charset=\"us-ascii\"", "Content-Transfer-Encoding": "7bit", "Errors-To": "intel-wired-lan-bounces@lists.osuosl.org", "Sender": "\"Intel-wired-lan\" <intel-wired-lan-bounces@lists.osuosl.org>" }, "content": "removes the icr read in the other interrupt handler, uses eiac to\nautoclear the Other bit from icr and ims. This allows us to avoid\ninterference with rx and tx interrupts in the Other interrupt handler.\n\nThe information read from icr is not needed. IMS is configured such that\nthe only interrupt cause that can trigger the Other interrupt is Link\nStatus Change.\n\nSigned-off-by: Benjamin Poirier <bpoirier@suse.com>\n\n---\nI noticed a 8-16% improvement in netperf rr tests after applying this\npatch. This is a little surprising since this patch touches the handling\nof Other interrupts, which do not occur during such a test. Some\nprofiling was not very insightful but the improvement seems related to\nwriting Other to EIAC.\n---\n drivers/net/ethernet/intel/e1000e/netdev.c | 22 +++++++---------------\n 1 file changed, 7 insertions(+), 15 deletions(-)", "diff": "diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c\nindex a228167..a73e323 100644\n--- a/drivers/net/ethernet/intel/e1000e/netdev.c\n+++ b/drivers/net/ethernet/intel/e1000e/netdev.c\n@@ -1905,24 +1905,15 @@ static irqreturn_t e1000_msix_other(int __always_unused irq, void *data)\n \tstruct net_device *netdev = data;\n \tstruct e1000_adapter *adapter = netdev_priv(netdev);\n \tstruct e1000_hw *hw = &adapter->hw;\n-\tu32 icr = er32(ICR);\n \n-\tif (icr & adapter->eiac_mask)\n-\t\tew32(ICS, (icr & adapter->eiac_mask));\n+\thw->mac.get_link_status = true;\n \n-\tif (icr & E1000_ICR_OTHER) {\n-\t\tif (!(icr & E1000_ICR_LSC))\n-\t\t\tgoto no_link_interrupt;\n-\t\thw->mac.get_link_status = true;\n-\t\t/* guard against interrupt when we're going down */\n-\t\tif (!test_bit(__E1000_DOWN, &adapter->state))\n-\t\t\tmod_timer(&adapter->watchdog_timer, jiffies + 1);\n+\t/* guard against interrupt when we're going down */\n+\tif (!test_bit(__E1000_DOWN, &adapter->state)) {\n+\t\tmod_timer(&adapter->watchdog_timer, jiffies + 1);\n+\t\tew32(IMS, E1000_IMS_OTHER);\n \t}\n \n-no_link_interrupt:\n-\tif (!test_bit(__E1000_DOWN, &adapter->state))\n-\t\tew32(IMS, E1000_IMS_LSC | E1000_IMS_OTHER);\n-\n \treturn IRQ_HANDLED;\n }\n \n@@ -2019,6 +2010,7 @@ static void e1000_configure_msix(struct e1000_adapter *adapter)\n \t\t hw->hw_addr + E1000_EITR_82574(vector));\n \telse\n \t\twritel(1, hw->hw_addr + E1000_EITR_82574(vector));\n+\tadapter->eiac_mask |= E1000_IMS_OTHER;\n \n \t/* Cause Tx interrupts on every write back */\n \tivar |= (1 << 31);\n@@ -2247,7 +2239,7 @@ static void e1000_irq_enable(struct e1000_adapter *adapter)\n \n \tif (adapter->msix_entries) {\n \t\tew32(EIAC_82574, adapter->eiac_mask & E1000_EIAC_MASK_82574);\n-\t\tew32(IMS, adapter->eiac_mask | E1000_IMS_OTHER | E1000_IMS_LSC);\n+\t\tew32(IMS, adapter->eiac_mask | E1000_IMS_LSC);\n \t} else if ((hw->mac.type == e1000_pch_lpt) ||\n \t\t (hw->mac.type == e1000_pch_spt)) {\n \t\tew32(IMS, IMS_ENABLE_MASK | E1000_IMS_ECCER);\n", "prefixes": [ "v3", "2/4" ] }