Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/631857/?format=api
{ "id": 631857, "url": "http://patchwork.ozlabs.org/api/patches/631857/?format=api", "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20160607230902.5457-16-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": "<20160607230902.5457-16-jacob.e.keller@intel.com>", "list_archive_url": null, "date": "2016-06-07T23:08:59", "name": "[v2,15/18] fm10k: implement request_lport_map pointer", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": false, "hash": "c4886b66a098ebd6cfa6e5446dcd132d304e2880", "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/20160607230902.5457-16-jacob.e.keller@intel.com/mbox/", "series": [], "comments": "http://patchwork.ozlabs.org/api/patches/631857/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/631857/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\t(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3rPS1v31sDz9sC3\n\tfor <incoming@patchwork.ozlabs.org>;\n\tWed, 8 Jun 2016 09:09:23 +1000 (AEST)", "from localhost (localhost [127.0.0.1])\n\tby whitealder.osuosl.org (Postfix) with ESMTP id F2DE18A6CD;\n\tTue, 7 Jun 2016 23:09:21 +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 QeIzT8CHVIMn; Tue, 7 Jun 2016 23:09:19 +0000 (UTC)", "from ash.osuosl.org (ash.osuosl.org [140.211.166.34])\n\tby whitealder.osuosl.org (Postfix) with ESMTP id 5D0048A92A;\n\tTue, 7 Jun 2016 23:09:13 +0000 (UTC)", "from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137])\n\tby ash.osuosl.org (Postfix) with ESMTP id D6C071C127A\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tTue, 7 Jun 2016 23:09:10 +0000 (UTC)", "from localhost (localhost [127.0.0.1])\n\tby fraxinus.osuosl.org (Postfix) with ESMTP id C9D97856E3\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tTue, 7 Jun 2016 23:09:10 +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 S--Yn2v4Twng for <intel-wired-lan@lists.osuosl.org>;\n\tTue, 7 Jun 2016 23:09:09 +0000 (UTC)", "from mga04.intel.com (mga04.intel.com [192.55.52.120])\n\tby fraxinus.osuosl.org (Postfix) with ESMTP id A19B585D6F\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tTue, 7 Jun 2016 23:09:06 +0000 (UTC)", "from fmsmga003.fm.intel.com ([10.253.24.29])\n\tby fmsmga104.fm.intel.com with ESMTP; 07 Jun 2016 16:09:06 -0700", "from jekeller-desk.amr.corp.intel.com (HELO\n\tjekeller-desk.jekeller.internal) ([134.134.3.116])\n\tby FMSMGA003.fm.intel.com with ESMTP; 07 Jun 2016 16:09:06 -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.26,436,1459839600\"; d=\"scan'208\";a=\"715507188\"", "From": "Jacob Keller <jacob.e.keller@intel.com>", "To": "Intel Wired LAN <intel-wired-lan@lists.osuosl.org>", "Date": "Tue, 7 Jun 2016 16:08:59 -0700", "Message-Id": "<20160607230902.5457-16-jacob.e.keller@intel.com>", "X-Mailer": "git-send-email 2.9.0.rc1.405.g81f467e", "In-Reply-To": "<20160607230902.5457-1-jacob.e.keller@intel.com>", "References": "<20160607230902.5457-1-jacob.e.keller@intel.com>", "Subject": "[Intel-wired-lan] [PATCH v2 15/18] fm10k: implement\n\trequest_lport_map pointer", "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": "If the fm10k interface is brought up, but the switch manager software is\nnot running, the driver will continuously request the lport map every\nfew seconds in the base driver watchdog routine. Eventually after\nseveral minutes the switch mailbox Tx fifo will fill up and the mailbox\nwill timeout, resulting in a reset. This reset will appear as if for no\nreason, and occurs regularly every few minutes until the switch manager\nsoftware is loaded.\n\nPrevent this from happening by only requesting the lport map after we've\nverified the switch mailbox is tx_ready. In order to simplify code logic\nand reduce code duplication, implement this as a new function pointer\n\"mac.ops.request_lport_map\" which the VF will not implement. Otherwise,\nwe have to duplicate the tx_ready check outside of\nfm10k_get_host_state_generic, or re-implement most of\nfm10k_get_host_state_generic in the pf version.\n\nThe resulting code is simpler and easier to understand, and prevents the\nPF from continuously requesting lport map and filling the Tx fifo of\na switch mailbox that isn't ready.\n\nSigned-off-by: Jacob Keller <jacob.e.keller@intel.com>\n---\n drivers/net/ethernet/intel/fm10k/fm10k_common.c | 6 +++++-\n drivers/net/ethernet/intel/fm10k/fm10k_pf.c | 15 +++------------\n drivers/net/ethernet/intel/fm10k/fm10k_type.h | 1 +\n 3 files changed, 9 insertions(+), 13 deletions(-)", "diff": "diff --git a/drivers/net/ethernet/intel/fm10k/fm10k_common.c b/drivers/net/ethernet/intel/fm10k/fm10k_common.c\nindex 5bbf19cfe29b..d6baaea8bc7c 100644\n--- a/drivers/net/ethernet/intel/fm10k/fm10k_common.c\n+++ b/drivers/net/ethernet/intel/fm10k/fm10k_common.c\n@@ -519,8 +519,12 @@ s32 fm10k_get_host_state_generic(struct fm10k_hw *hw, bool *host_ready)\n \t\tgoto out;\n \n \t/* interface cannot receive traffic without logical ports */\n-\tif (mac->dglort_map == FM10K_DGLORTMAP_NONE)\n+\tif (mac->dglort_map == FM10K_DGLORTMAP_NONE) {\n+\t\tif (hw->mac.ops.request_lport_map)\n+\t\t\tret_val = hw->mac.ops.request_lport_map(hw);\n+\n \t\tgoto out;\n+\t}\n \n \t/* if we passed all the tests above then the switch is ready and we no\n \t * longer need to check for link\ndiff --git a/drivers/net/ethernet/intel/fm10k/fm10k_pf.c b/drivers/net/ethernet/intel/fm10k/fm10k_pf.c\nindex 23f3566b17fc..682299dd0ce4 100644\n--- a/drivers/net/ethernet/intel/fm10k/fm10k_pf.c\n+++ b/drivers/net/ethernet/intel/fm10k/fm10k_pf.c\n@@ -1622,25 +1622,15 @@ static s32 fm10k_request_lport_map_pf(struct fm10k_hw *hw)\n **/\n static s32 fm10k_get_host_state_pf(struct fm10k_hw *hw, bool *switch_ready)\n {\n-\ts32 ret_val = 0;\n \tu32 dma_ctrl2;\n \n \t/* verify the switch is ready for interaction */\n \tdma_ctrl2 = fm10k_read_reg(hw, FM10K_DMA_CTRL2);\n \tif (!(dma_ctrl2 & FM10K_DMA_CTRL2_SWITCH_READY))\n-\t\tgoto out;\n+\t\treturn 0;\n \n \t/* retrieve generic host state info */\n-\tret_val = fm10k_get_host_state_generic(hw, switch_ready);\n-\tif (ret_val)\n-\t\tgoto out;\n-\n-\t/* interface cannot receive traffic without logical ports */\n-\tif (hw->mac.dglort_map == FM10K_DGLORTMAP_NONE)\n-\t\tret_val = fm10k_request_lport_map_pf(hw);\n-\n-out:\n-\treturn ret_val;\n+\treturn fm10k_get_host_state_generic(hw, switch_ready);\n }\n \n /* This structure defines the attibutes to be parsed below */\n@@ -1816,6 +1806,7 @@ static const struct fm10k_mac_ops mac_ops_pf = {\n \t.set_dma_mask\t\t= fm10k_set_dma_mask_pf,\n \t.get_fault\t\t= fm10k_get_fault_pf,\n \t.get_host_state\t\t= fm10k_get_host_state_pf,\n+\t.request_lport_map\t= fm10k_request_lport_map_pf,\n };\n \n static const struct fm10k_iov_ops iov_ops_pf = {\ndiff --git a/drivers/net/ethernet/intel/fm10k/fm10k_type.h b/drivers/net/ethernet/intel/fm10k/fm10k_type.h\nindex 1d65ad85d72e..f4e75c498287 100644\n--- a/drivers/net/ethernet/intel/fm10k/fm10k_type.h\n+++ b/drivers/net/ethernet/intel/fm10k/fm10k_type.h\n@@ -526,6 +526,7 @@ struct fm10k_mac_ops {\n \ts32 (*stop_hw)(struct fm10k_hw *);\n \ts32 (*get_bus_info)(struct fm10k_hw *);\n \ts32 (*get_host_state)(struct fm10k_hw *, bool *);\n+\ts32 (*request_lport_map)(struct fm10k_hw *);\n \ts32 (*update_vlan)(struct fm10k_hw *, u32, u8, bool);\n \ts32 (*read_mac_addr)(struct fm10k_hw *);\n \ts32 (*update_uc_addr)(struct fm10k_hw *, u16, const u8 *,\n", "prefixes": [ "v2", "15/18" ] }