From patchwork Wed Jun 27 00:06:07 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul Burton X-Patchwork-Id: 935184 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=mips.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=wavesemi.onmicrosoft.com header.i=@wavesemi.onmicrosoft.com header.b="C9zerVpv"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 41Fjrz3VbRz9s0n for ; Wed, 27 Jun 2018 10:07:15 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S964801AbeF0AHM (ORCPT ); Tue, 26 Jun 2018 20:07:12 -0400 Received: from mail-eopbgr700099.outbound.protection.outlook.com ([40.107.70.99]:11034 "EHLO NAM04-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752964AbeF0AGk (ORCPT ); Tue, 26 Jun 2018 20:06:40 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=wavesemi.onmicrosoft.com; s=selector1-wavecomp-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=NGkfg4kx96i0O2B1iM1SEuj6jwZYM4HClAQo0rqGjJM=; b=C9zerVpvEW2bMMqAXSc2oyN8tFC0XDCjKE5Z94Rwfrhy9DYU2U6KCwdqoOQIz4AOedOy6qXc1y/5BB9fXMQhQR69nfTAR3WaF1f9wSqxs6Op42U2yZj8jsjUBJfe1wGrFXcg/AtYH6me7vS1LWp09345bg6DorjNU4H3WzY6+NE= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=pburton@wavecomp.com; Received: from pburton-laptop.mipstec.com (4.16.204.77) by DM6PR08MB4940.namprd08.prod.outlook.com (2603:10b6:5:4b::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.884.21; Wed, 27 Jun 2018 00:06:34 +0000 From: Paul Burton To: netdev@vger.kernel.org Cc: "David S . Miller" , Andrew Lunn , paul.burton@mips.com Subject: [PATCH v7 06/11] net: pch_gbe: Only enable MAC when PHY link is active Date: Tue, 26 Jun 2018 17:06:07 -0700 Message-Id: <20180627000612.27263-7-paul.burton@mips.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180627000612.27263-1-paul.burton@mips.com> References: <20180627000612.27263-1-paul.burton@mips.com> MIME-Version: 1.0 X-Originating-IP: [4.16.204.77] X-ClientProxiedBy: MWHPR1701CA0014.namprd17.prod.outlook.com (2603:10b6:301:14::24) To DM6PR08MB4940.namprd08.prod.outlook.com (2603:10b6:5:4b::21) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 91cb856b-a9e6-42b5-6e61-08d5dbc1d89e X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(7021125)(8989117)(4534165)(7022125)(4603075)(4627221)(201702281549075)(8990107)(7048125)(7024125)(7027125)(7028125)(7023125)(5600026)(711020)(2017052603328)(7153060)(7193020); SRVR:DM6PR08MB4940; X-Microsoft-Exchange-Diagnostics: 1; DM6PR08MB4940; 3:KNRvs1O4FvqTwcNEnUt9wtzEKX4yUPrPVNPzfxuCZPTtI51thd5wDhobkHC85p0Imkiw05SeUGK00i/IOSqXywIpJvpk21kOOPi/ykIl/dcsj7rWcXXwihUF16SSeTCG/ujS94s+MoNDfuOTiWYBJ3+RIyCbreRIySHZezAYwtS1xFOvcKM05X/EmDvaccrJVs96gDZ/r0B9zfRN5SxzMhBvNNF29fiQ2p78ZuSrcrIUvMqUqztp7eObL8j8Cauc; 25:bB2NP5+w7Yer2Yrk4ofO8VNO+K9qQoJZhIJXLFsfatKuKiJ3buZ2iBT63dlV8GDiAgbOs2wVOnvk50HIagtzPdROEL6fIbL22TYLY1cCOJXqH/HcTAIfsCy7Lhj4qwhmPEoq+Axn8R0ftfV0qELw60aEh/PDwTMe+5nK7IlLSFrEzm6dEF14m8W08vJsPNYtx7Ns9+m2vpKl7jBaFeaX2cPy7PzeLTRrJAtuujmYmUe2rLmjM7b60ufuNXjCkZ4T7HDV4lU7ZXvDgHeiuihdKo+I53W00A57nHcv67QzfBDqwy4fX7BCB+m74/Rd5uXIlwNrV9/ZjyjiWTtCagn9zg==; 31:b7H1X7i2xV7Vjt0OOTX0LnbQshrBJmx9fBvnTAi67TAtMOOF6EGluAzgscURqW4O84PnXPamm6wgjmLs4l5prwAurD207MSe9r/DOXGyz3UVC28ky+RGXrDImO/ngoMFOSSN2bq6++AKkyPlEvQtf6im9b9QQ4E3g0jZaAioEgmi3nISmpuVyw6EbL4SwpDAJHi4+zrq+O1sRZBtxneGxq8+19ttIj0CCmtTnnRKF2s= X-MS-TrafficTypeDiagnostic: DM6PR08MB4940: X-Microsoft-Exchange-Diagnostics: 1; DM6PR08MB4940; 20:iMRDpspZioPwEcMFTTeb3anGzjj3mUrCAH2Vlxotqcff+gzCj03KamFOxU/02qHYOqwKjcl8nM7sJ7kPED5opMkodK+hb78n8joSxSKmy0IF/RHlbPd7ULEyWKVsMJtYEX8Q6tPDWHKgiudurru11ag1rnStfoL/LxtJ+Mn/zzfLx6E7Uffjq3U5SXdNx8criYQlD7ty69+xTcybLvK2eIlm780n1BGK0N8erPUODJ1QaCGnMA23qm17QfDdSHb5; 4:5WqKfCc3qhXONCgK08YDdXlLxmNQULSLGqW3/9Gjt/4XPyKxPGEwvH+HFMqxvV8Ztxthpkrd6NzClhMT2BnPczgjGk38vDK3rUqm4kWBPfueGwKqPExPajwuG/3Dk6kmY27JAK3p11N41ywvTyG4dRcHkjqBn3ZyJQlSAxYd1n8Wq51MwLW4mIAiUpwSl0AoWluB8Xzi70IHT4GgUNVHPq/AjcDCNGTlouvrasY0DzyPNyH5za5JND7MSuaIUXWuP6pNKfmZnXbJzbjYrRdCtjBMb1qlg40gXPrJlfnSYEkFCJiJ5NIu4OCVXG2oPNZA X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(9452136761055); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040522)(2401047)(5005006)(8121501046)(3002001)(10201501046)(93006095)(3231254)(944501410)(52105095)(149027)(150027)(6041310)(2016111802025)(20161123562045)(20161123560045)(20161123564045)(20161123558120)(6043046)(6072148)(201708071742011)(7699016); SRVR:DM6PR08MB4940; BCL:0; PCL:0; RULEID:; SRVR:DM6PR08MB4940; X-Forefront-PRVS: 0716E70AB6 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(366004)(346002)(136003)(39840400004)(376002)(396003)(199004)(189003)(52116002)(36756003)(6666003)(5660300001)(16526019)(51416003)(66066001)(6916009)(2351001)(42882007)(14444005)(316002)(386003)(53416004)(54906003)(47776003)(26005)(76176011)(6506007)(186003)(16586007)(6486002)(2361001)(48376002)(486006)(6116002)(8936002)(956004)(476003)(50466002)(3846002)(446003)(1076002)(6512007)(69596002)(2906002)(25786009)(4326008)(81156014)(8676002)(50226002)(107886003)(7736002)(2616005)(44832011)(106356001)(11346002)(97736004)(68736007)(105586002)(305945005)(478600001)(81166006)(53936002); DIR:OUT; SFP:1102; SCL:1; SRVR:DM6PR08MB4940; H:pburton-laptop.mipstec.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: wavecomp.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; DM6PR08MB4940; 23:Omju9W9Uf1DA3yXW+6RsaBMUr3nOMtZh59M9jtUc2AzqkPuELsHbRZ+VLs9P8Z23Nxj6q7rC/xhEL85sgjToMlWlARtK4HeOzAPn5nLN22he/ZYJZoJq5mYmMszG79RSRI9BMZRyTA9hlLrriUnOp/dtsFggmUAchRKvlrxrYpqfMT9ZLziG8MnQFk8XgKUD0liTUiEoTmblTfJHXZxnspVbmQP+V08IbsQsJARU4vEw6c3F5oFqlYi23NGsm7YQS8p2bCh/tjZDBzWabjgFFVv5dQmEf+iDffSTHiFhvNzM/tndyetIt1l1k2NedEPs81hFiUbSI23l/m/LD2oqdsT6esXrEK33wLIK2lQ60TMTIOc2AaQt1Z9a53Z8dmCb0yyuEXn2BV8xWZIfrOgMt+0rZOkTEAor5dWQO3n2lDb1CGUYb+w1bvJ3mwPt0a1RBAeVeWFk957CbRnDvdIN9n0W0trd0+4x/fGmE+GOtl1rUBxwYFpWykofl4eu9YYo0PPZhjrXBrMNoWypathFK0isRaCJS6hq72gttPWyf5B6SKooCP+YPbculRPBaRaYsMpPZM7rAzp9wG228CC6avz4lC8H72tjt8fZqeLihapYk9mEjJ0hTlrIt/KyrMA+iAErFYMqMFTYZVyzwvzxC2MoUJTdaa977t3ArpA6HVxf+kVeyr1SejXRfGThnQWIpolSyx95cq+bDto3T0I4054APXz9CuDpVlGPDcweSytHnNffKqgvYZq7ZfG3TYzjivZX/NRpQmKjpu7u77a1VqW23znrByfOFCmhQ6SiGNiVhb3WAHyvrrbyxw8JWw1hiztTHr6NV2c8YnbeaX/qdlZmySSjaUpaEBR0RwW6SjMZ5sleO6OXgeAVGseAOku5lHsZON08P+lRtShOMHid6fW1ooVticPEM7nSWei1nbjnqqv27GWZd8hL/vLAU6sN/p6xia9Zz2DrOFPaE2MMHjqbamkeuPIavvMfn0mAZgzSDQbip3+Dxpl8D2o+kje3Q47szF+gT/Q3GjpFR5epCuNTfZFEbwp9IwPKydFzvDhjxRBk+4wdFawZBBFyNJVvy2KaQfzclrNB5tT469gxGujAri1enzh+tFgnVendO2mPxGtgHSCJCEKfQb/gGZrQVJK2Fuczaa4ETKFubgsDTAt2MUotnYLRt9ozIMyiFkErcIblF61BWv3Jhr8HiWqDtIMIoBGFO1W8RhYKtqakNapmiOCeovLkZVVmyW38sIvAkkwsA+LppQF2t3zlbMAkYlXmteSMl8890toUlPWJW44WIyOuhwZev67K70atkfUGGcZamkxf77OeGjGVw/eywMiqmojs/mrfVT+ue63Jdg== X-Microsoft-Antispam-Message-Info: r1oLes1wpzTlmXEVWUH7FKN7Lg3YUx4cixEaFzlX5nxl5cz+FlqXX+QA3cov0AlY6338EqLTrS/KdrQ9izR5DcVQeBruegnD8Lt2o3cbhWjmNDtGG4VsR3VxN/7m/MAYquwMZHGi2/SCf50/asFzYfGePjMPExD6YF1roon9wIEkVPoLqvC7vQQtm6bHszhY1nat/fKkg6FO/XQYGOgth+TNRwgk4SRjjjdu+XdR/qPOV4YwOyXt/6sfNkzV2v0oURM7tteMRJJZ9asvT5j8vbPdEnBkjYX8/vYKlenGuxE2gEyvaL8ZZ6rXLAcSwXdQeYIMwhi+R9/e9qMjI30q12CYqGRqmYm1JBHHfo281sQ= X-Microsoft-Exchange-Diagnostics: 1; DM6PR08MB4940; 6:jHxY4sUiPBsFP7+/MOvw5NdcOwy/cvAxsam6fJTKgSBOvqTnAa9Sa67jv25Z4LidZ/eI1+zU5xsXv2KXTn0SFHiQPEgZtepmgEI/PbNGI7kk7sEsxSqBPNaUKu72OeRZdtuUT5r3iFBuB7NtcTcVHYcNrNg/6kLlqJlWKSUWs7hJtY6y7681QZk/Qy/Sjyu+u5i9Y8Szp66CfCcf+Z4i5I9Ka5HBYbIgP2QnPh/eOT8vgmFkcYCB9NpZd38oUKcjwmejytkxZywzo/3F1/1+NbvaOys8mVvsTIRKYh42kMliuw6LTfF6vT7A8gpL2bb0bY450Tsswrj4UREQxJ35exPGcXEkNMTLA31Mpgs0BPxBx6Ua4HTBSaf49IBG+vD0kGvgyNzzxZWZUAf4Yi4jD/ij27yK/naCx8r3JU437BFebhovBrW0SmPOuQUa2bwb/VnvxEx1stfn/tD2G0k9eA==; 5:eiBZB9usgIUbYo7vWCHo0kkIx9wtllIiHDxrQURhrTJh1ufC3M0GzThLbKkrGZdNs9exXOFHVTxsuG/04wcZeNzM8AEjEP/8GuNQPAJE1ECTT+fPrwIl407aMwOf+0Rb6Z+bNaddH0o3yOkmjqSJkxES/0tAtpm/V+mo6O/myRA=; 24:a8fQn3VsoPZqswV41iotRUJfDHxfPrYAM2jXkZhGwVrM1gdQgzcdUwA4yNJHdo+La9HjuBe3f+RZ/gJpEWmVmQa/9FEOlXN5wOYYriWzblI= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM6PR08MB4940; 7:g7U3ObqIie2mQEU6gWee37MAl6MGB4zdOu2sE5pBQyGlss0de5eilO5xp5WOUVKleZJGzwhzgQM7NW5U1VLxdJmAtm5iKA+cHzzwtcjxhZf0nzcwODJ3PegFUqO6isWKPWll+CDOi7GLckiNqNlNPX3sAnapG5MOYhLRhIF389tmfKccbAvn/5FsLe1J6XLIBjwwtOoz40LTiV/9Ca9s3436eRfZCtomAh6lZQ2QFuwlQRb2eLJ47jDXbZYJCO7j X-OriginatorOrg: mips.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jun 2018 00:06:34.8653 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 91cb856b-a9e6-42b5-6e61-08d5dbc1d89e X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 463607d3-1db3-40a0-8a29-970c56230104 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR08MB4940 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org When using a PHY connected via RGMII, as the pch_gbe driver presumes is the case, the RX clock is provided by the PHY to the MAC. Various PHYs, including both the AR8031 used by the Minnowboard & the RTL8211E used by the MIPS Boston development board, will stop generating the RX clock when the ethernet link is down (eg. the ethernet cable is unplugged). Various pieces of functionality in the EG20T MAC, ranging from basics like completing a MAC reset to programming MAC addresses, rely upon the RX clock being provided. When the clock is not provided these pieces of functionality simply never complete, and the busy bits that indicate they're in progress remain set indefinitely. The pch_gbe driver currently requires that the RX clock is always provided, and attempts to enforce this by disabling the hibernation feature of the AR8031 PHY to keep it generating the RX clock. This patch moves us away from this model by only configuring the MAC when the PHY indicates that the ethernet link is up. When the link is up we should be able to safely expect that the RX clock is being provided, and therefore safely reset & configure the MAC. Signed-off-by: Paul Burton Cc: Andrew Lunn Cc: David S. Miller Cc: netdev@vger.kernel.org --- Changes in v7: New patch .../ethernet/oki-semi/pch_gbe/pch_gbe_main.c | 44 +++++++++---------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c index eb290c1edce0..721ce29b6467 100644 --- a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c +++ b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c @@ -1837,7 +1837,6 @@ static int pch_gbe_request_irq(struct pch_gbe_adapter *adapter) int pch_gbe_up(struct pch_gbe_adapter *adapter) { struct net_device *netdev = adapter->netdev; - struct pch_gbe_tx_ring *tx_ring = adapter->tx_ring; struct pch_gbe_rx_ring *rx_ring = adapter->rx_ring; int err = -EINVAL; @@ -1847,14 +1846,6 @@ int pch_gbe_up(struct pch_gbe_adapter *adapter) goto out; } - /* hardware has been reset, we need to reload some things */ - pch_gbe_set_multi(netdev); - - pch_gbe_setup_tctl(adapter); - pch_gbe_configure_tx(adapter); - pch_gbe_setup_rctl(adapter); - pch_gbe_configure_rx(adapter); - err = pch_gbe_request_irq(adapter); if (err) { netdev_err(netdev, @@ -1867,18 +1858,9 @@ int pch_gbe_up(struct pch_gbe_adapter *adapter) "Error: can't bring device up - alloc rx buffers pool failed\n"); goto freeirq; } - pch_gbe_alloc_tx_buffers(adapter, tx_ring); - pch_gbe_alloc_rx_buffers(adapter, rx_ring, rx_ring->count); adapter->tx_queue_len = netdev->tx_queue_len; - pch_gbe_enable_dma_rx(&adapter->hw); - pch_gbe_enable_mac_rx(&adapter->hw); mod_timer(&adapter->watchdog_timer, jiffies); - - napi_enable(&adapter->napi); - pch_gbe_irq_enable(adapter); - netif_start_queue(adapter->netdev); - return 0; freeirq: @@ -1930,6 +1912,8 @@ static void pch_gbe_watchdog(struct timer_list *t) { struct pch_gbe_adapter *adapter = from_timer(adapter, t, watchdog_timer); + struct pch_gbe_rx_ring *rx_ring = adapter->rx_ring; + struct pch_gbe_tx_ring *tx_ring = adapter->tx_ring; struct net_device *netdev = adapter->netdev; struct pch_gbe_hw *hw = &adapter->hw; @@ -1950,12 +1934,32 @@ static void pch_gbe_watchdog(struct timer_list *t) } hw->mac.link_speed = ethtool_cmd_speed(&cmd); hw->mac.link_duplex = cmd.duplex; + + pch_gbe_reset(adapter); + /* Set the RGMII control. */ pch_gbe_set_rgmii_ctrl(adapter, hw->mac.link_speed, hw->mac.link_duplex); /* Set the communication mode */ pch_gbe_set_mode(adapter, hw->mac.link_speed, hw->mac.link_duplex); + + pch_gbe_set_multi(netdev); + pch_gbe_setup_tctl(adapter); + pch_gbe_configure_tx(adapter); + pch_gbe_setup_rctl(adapter); + pch_gbe_configure_rx(adapter); + + pch_gbe_alloc_tx_buffers(adapter, tx_ring); + pch_gbe_alloc_rx_buffers(adapter, rx_ring, rx_ring->count); + + pch_gbe_enable_dma_rx(&adapter->hw); + pch_gbe_enable_mac_rx(&adapter->hw); + + napi_enable(&adapter->napi); + pch_gbe_irq_enable(adapter); + netif_start_queue(adapter->netdev); + netdev_dbg(netdev, "Link is Up %d Mbps %s-Duplex\n", hw->mac.link_speed, @@ -2568,7 +2572,6 @@ static int pch_gbe_probe(struct pci_dev *pdev, (ETH_HLEN + ETH_FCS_LEN); pch_gbe_mac_load_mac_addr(&adapter->hw); - pch_gbe_mac_reset_hw(&adapter->hw); /* setup the private structure */ ret = pch_gbe_sw_init(adapter); @@ -2610,9 +2613,6 @@ static int pch_gbe_probe(struct pci_dev *pdev, adapter->wake_up_evt = PCH_GBE_WL_INIT_SETTING; dev_info(&pdev->dev, "MAC address : %pM\n", netdev->dev_addr); - /* reset the hardware with the new settings */ - pch_gbe_reset(adapter); - ret = register_netdev(netdev); if (ret) goto err_free_adapter;