Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/531509/?format=api
{ "id": 531509, "url": "http://patchwork.ozlabs.org/api/patches/531509/?format=api", "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/1445018231-3196-4-git-send-email-jacob.e.keller@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": "<1445018231-3196-4-git-send-email-jacob.e.keller@intel.com>", "list_archive_url": null, "date": "2015-10-16T17:56:58", "name": "[next-queue,v5,04/17] fm10k: always check init_hw for errors", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": false, "hash": "74041145512f8cf6238d71b03efb4bd14ac2a14e", "submitter": { "id": 9784, "url": "http://patchwork.ozlabs.org/api/people/9784/?format=api", "name": "Jacob Keller", "email": "jacob.e.keller@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/1445018231-3196-4-git-send-email-jacob.e.keller@intel.com/mbox/", "series": [], "comments": "http://patchwork.ozlabs.org/api/patches/531509/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/531509/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 silver.osuosl.org (smtp3.osuosl.org [140.211.166.136])\n\tby ozlabs.org (Postfix) with ESMTP id 3C1831402B2\n\tfor <incoming@patchwork.ozlabs.org>;\n\tSat, 17 Oct 2015 04:57:30 +1100 (AEDT)", "from localhost (localhost [127.0.0.1])\n\tby silver.osuosl.org (Postfix) with ESMTP id 6F21530BEE;\n\tFri, 16 Oct 2015 17:57:29 +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 EyVuN6UfJqcI; Fri, 16 Oct 2015 17:57:27 +0000 (UTC)", "from ash.osuosl.org (ash.osuosl.org [140.211.166.34])\n\tby silver.osuosl.org (Postfix) with ESMTP id 29578332F7;\n\tFri, 16 Oct 2015 17:57:20 +0000 (UTC)", "from hemlock.osuosl.org (smtp2.osuosl.org [140.211.166.133])\n\tby ash.osuosl.org (Postfix) with ESMTP id 6011E1C16C8\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tFri, 16 Oct 2015 17:57:16 +0000 (UTC)", "from localhost (localhost [127.0.0.1])\n\tby hemlock.osuosl.org (Postfix) with ESMTP id 5AC9F8B0C5\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tFri, 16 Oct 2015 17:57:16 +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 SQNb2TcwdL7d for <intel-wired-lan@lists.osuosl.org>;\n\tFri, 16 Oct 2015 17:57:13 +0000 (UTC)", "from mga03.intel.com (mga03.intel.com [134.134.136.65])\n\tby hemlock.osuosl.org (Postfix) with ESMTP id CD2988ACD5\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tFri, 16 Oct 2015 17:57:13 +0000 (UTC)", "from fmsmga001.fm.intel.com ([10.253.24.23])\n\tby orsmga103.jf.intel.com with ESMTP; 16 Oct 2015 10:57:13 -0700", "from jekeller-desk.amr.corp.intel.com ([134.134.3.123])\n\tby fmsmga001.fm.intel.com with ESMTP; 16 Oct 2015 10:57:14 -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-ExtLoop1": "1", "X-IronPort-AV": "E=Sophos;i=\"5.17,689,1437462000\"; d=\"scan'208\";a=\"812781742\"", "From": "Jacob Keller <jacob.e.keller@intel.com>", "To": "Intel Wired LAN <intel-wired-lan@lists.osuosl.org>", "Date": "Fri, 16 Oct 2015 10:56:58 -0700", "Message-Id": "<1445018231-3196-4-git-send-email-jacob.e.keller@intel.com>", "X-Mailer": "git-send-email 2.6.1.264.gbab76a9", "In-Reply-To": "<1445018231-3196-1-git-send-email-jacob.e.keller@intel.com>", "References": "<1445018231-3196-1-git-send-email-jacob.e.keller@intel.com>", "Subject": "[Intel-wired-lan] [next-queue v5 04/17] fm10k: always check init_hw\n\tfor errors", "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": "A recent change modified init_hw in some flows the function may fail on\nVF devices. For example, if a VF doesn't yet own its own queues.\nHowever, many callers of init_hw didn't bother to check the error code.\nOther callers checked but only displayed diagnostic messages without\nactually handling the consequences.\n\nFix this by (a) always returning and preventing the netdevice from going\nup, and (b) printing the diagnostic in every flow for consistency. This\nshould resolve an issue where VF drivers would attempt to come up\nbefore the PF has finished assigning queues.\n\nIn addition, change the dmesg output to explicitly show the actual\nfunction that failed, instead of combining reset_hw and init_hw into a\nsingle check, to help for future debugging.\n\nFixes: 1d568b0f6424 (\"fm10k: do not assume VF always has 1 queue\")\nSigned-off-by: Jacob Keller <jacob.e.keller@intel.com>\n---\n drivers/net/ethernet/intel/fm10k/fm10k_pci.c | 34 ++++++++++++++++++++++++----\n 1 file changed, 29 insertions(+), 5 deletions(-)", "diff": "diff --git a/drivers/net/ethernet/intel/fm10k/fm10k_pci.c b/drivers/net/ethernet/intel/fm10k/fm10k_pci.c\nindex 1af4b222d003..9c21d1e45543 100644\n--- a/drivers/net/ethernet/intel/fm10k/fm10k_pci.c\n+++ b/drivers/net/ethernet/intel/fm10k/fm10k_pci.c\n@@ -163,9 +163,17 @@ static void fm10k_reinit(struct fm10k_intfc *interface)\n \tinterface->last_reset = jiffies + (10 * HZ);\n \n \t/* reset and initialize the hardware so it is in a known state */\n-\terr = hw->mac.ops.reset_hw(hw) ? : hw->mac.ops.init_hw(hw);\n-\tif (err)\n+\terr = hw->mac.ops.reset_hw(hw);\n+\tif (err) {\n+\t\tdev_err(&interface->pdev->dev, \"reset_hw failed: %d\\n\", err);\n+\t\tgoto reinit_err;\n+\t}\n+\n+\terr = hw->mac.ops.init_hw(hw);\n+\tif (err) {\n \t\tdev_err(&interface->pdev->dev, \"init_hw failed: %d\\n\", err);\n+\t\tgoto reinit_err;\n+\t}\n \n \t/* reassociate interrupts */\n \tfm10k_mbx_request_irq(interface);\n@@ -193,6 +201,10 @@ static void fm10k_reinit(struct fm10k_intfc *interface)\n \n \tfm10k_iov_resume(interface->pdev);\n \n+reinit_err:\n+\tif (err)\n+\t\tnetif_device_detach(netdev);\n+\n \trtnl_unlock();\n \n \tclear_bit(__FM10K_RESETTING, &interface->state);\n@@ -1684,7 +1696,13 @@ static int fm10k_sw_init(struct fm10k_intfc *interface,\n \tinterface->last_reset = jiffies + (10 * HZ);\n \n \t/* reset and initialize the hardware so it is in a known state */\n-\terr = hw->mac.ops.reset_hw(hw) ? : hw->mac.ops.init_hw(hw);\n+\terr = hw->mac.ops.reset_hw(hw);\n+\tif (err) {\n+\t\tdev_err(&pdev->dev, \"reset_hw failed: %d\\n\", err);\n+\t\treturn err;\n+\t}\n+\n+\terr = hw->mac.ops.init_hw(hw);\n \tif (err) {\n \t\tdev_err(&pdev->dev, \"init_hw failed: %d\\n\", err);\n \t\treturn err;\n@@ -2064,8 +2082,10 @@ static int fm10k_resume(struct pci_dev *pdev)\n \n \t/* reset hardware to known state */\n \terr = hw->mac.ops.init_hw(&interface->hw);\n-\tif (err)\n+\tif (err) {\n+\t\tdev_err(&pdev->dev, \"init_hw failed: %d\\n\", err);\n \t\treturn err;\n+\t}\n \n \t/* reset statistics starting values */\n \thw->mac.ops.rebind_hw_stats(hw, &interface->stats);\n@@ -2241,7 +2261,11 @@ static void fm10k_io_resume(struct pci_dev *pdev)\n \tint err = 0;\n \n \t/* reset hardware to known state */\n-\thw->mac.ops.init_hw(&interface->hw);\n+\terr = hw->mac.ops.init_hw(&interface->hw);\n+\tif (err) {\n+\t\tdev_err(&pdev->dev, \"init_hw failed: %d\\n\", err);\n+\t\treturn;\n+\t}\n \n \t/* reset statistics starting values */\n \thw->mac.ops.rebind_hw_stats(hw, &interface->stats);\n", "prefixes": [ "next-queue", "v5", "04/17" ] }