From patchwork Wed Jun 27 00:06:09 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul Burton X-Patchwork-Id: 935183 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="iDq/w7xg"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 41Fjrw3tcYz9s0n for ; Wed, 27 Jun 2018 10:07:12 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934415AbeF0AHK (ORCPT ); Tue, 26 Jun 2018 20:07:10 -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 S964781AbeF0AGp (ORCPT ); Tue, 26 Jun 2018 20:06:45 -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=bOKDwxE2C95+Sz8tAGzq1HrxoV/IKOebmbb3IAFKpfw=; b=iDq/w7xgRyFgamVxPEiqjjLiOAxCmNLIVBw5GnrkfutW/II7944GCCYdmgCj/mOpBWvUB3BAo31j87W97svW1Qov4Ytd2RKcwlzjf5rFtMhPf6CzeT0H0UBUTGf53NSYoRCtoQn3CSaLGYpc90kwDNsSnH7dTkn0GZsVZ27RU6s= 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:36 +0000 From: Paul Burton To: netdev@vger.kernel.org Cc: "David S . Miller" , Andrew Lunn , paul.burton@mips.com Subject: [PATCH v7 08/11] net: pch_gbe: Clean up resets Date: Tue, 26 Jun 2018 17:06:09 -0700 Message-Id: <20180627000612.27263-9-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: 0bc7f0f3-4d19-4eba-cd6b-08d5dbc1d995 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:6r9AsezcZD23lhZajY0vqcoxkHtzvjZSHq3AUDSs2ca+0+dZY9dWuaGjTZj8ItB1iHC886d609l3yd+VEj5I/f0+2cdfzJBl68Wa99EgxTi8+0iUkye8Fp09zVl0S+o6AIXXUif5IURgrQpBg3vf/bzwFX0oNh29QRoMb5IYZDOht2O3Cg4Ny7jyINt+ZdpylJcT9GrrSTqk2EXK0U27YKoRwFPHEPaXOoakKhpSNrULNVFviO/8keg87EsWZg1j; 25:ephcYxlPkHkLhCkcGFTPPvSNZfFNJdIgBZXScoso5j75AxBBvYSGQtZH3DAhj6nrExAiAZ+RGbSRoEzwl+gLJO5qf4oUaP6yXqRpLhqmH4LGBC9qRVKdViVL7gtdLhr3nG9pcHr3pQ1G6x01DoKeO/DwDtq+OX5YIfH0TUOpDASicobIC/k7sbO9+0GwcD+RWELcH8U5PGBX7DmBHdWFWpCkTw/35NeU9+lDHnn03iKPquPz7Oj0qAGzJ7w7U8ZGKGcVgoZ3qjanxOX/aw5nUWstCJeWdzf6pJ0WH+PvIA7TLFXyU44Ql+n1XXrar6yO7JYIs3ALs5G8gsjeyFL1Ag==; 31:3Ugg3zJR/qP9qX02aFFdu5qZBDIzC+xdbSZNCvEksXnSJKJ7HiEdHcXBp21FUrUG1B51+c3Y4r8/t585oAT+Gm1Dg+aj/FQYqZDJLVggyrRyamKQSa5wTrPDOV9sdt17ZanWnlMi78K8++ovtlpPibj+W39jEnwqfLCD+FlIBgDPtLrxt67wod+iMzekU0+HvQE3Jc7pJICnK7uuVL8Ert9ReSgZUNEPO8m1ta+33yc= X-MS-TrafficTypeDiagnostic: DM6PR08MB4940: X-Microsoft-Exchange-Diagnostics: 1; DM6PR08MB4940; 20:kbZXRTKzJMncwFZoGb0s3FiP5DcQ6VSj0abJRBctXFyhBLAJ8zCuKh+eCRFobhopHM7rgd0r8Rk/iJ57GAh4KglVXbKm4ughCxmG2N/LqcUJViLqsgmj3ExoiccYB8ewFTWDOHs4eFOQArLibyUjY2yy82oi7YZnwKIWATiyNE/cNUEwuKaDoLeufMm31BsmoAs0lYkv+HBTM9oIXYZsgVU+/ylm5Gro6nd2vGD3+w+lOu9javOYNpW63T1eHHjv; 4:2kvmSg+LoLBy945iuhHiQKTSsCQoE1vvf1VvyZv7RngrViq1GBEMN2kDp7eUjoSWj9Fn/TBwzrU/EXM4u1yPhp+SykoDilr8A+gZviWAcwm+fqpmRRgDG2SZZXZ3GOYEWWmeYwtrqJpziqDHKiBhjxONm/3QyRbI6GdL6r6fOE/tbxoZHasEWMr3yr5nIOl6HvUs5hsQjBtBzuZf1n4yAkMOMLXkv5J3i7PkOlGaPVOPbtoe0wqJ7fpmY9fDntG8jcJwzp3fa05s0ms8RENSr2NPJFZeEDZCL5H09/hEYI5k0MANwZW0RyYvF2+g1qEG 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)(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:H5ywTTBFgE9Jk7hqcXk5q0vgf9GAgPA9enSEOqRkocVMvEiWhaA4WDwDCWhq+hXp4YHhnxpnmZ/L5GLK37FR0e+FHIW2v+0PYtEdGwfIUIRi5d3GBNtDpPSIoDDlC/nlmOiEbHTCJ3vsfNFD3xqyCp1JPBedd5+dntsI2NfVHUQJZoaIi9RXdaFNONIBqh7bfZCQbScC6kFGIR7MDqiHiNS7Dadun1sKg8F3BEA88NK1/221euI39kRPj3j1JXy7OiiNwZkIMSaj5j/RaoQRjH/enqX94rdu3L1Y3+Jse7v+NRjNpCGuGVoisyUXMM62nLuEirahubvQnHPIiESEm0BZ8xi3ES8ODsHUFyku+q6HakXwL+orv9SdpuIt7/N8GsZcMahx+YIXVe1qo1mmuISeRixmVhBD6ct5BcQW7pIjM5dl07//2d9h5f+wzRO66EsbMHhAlD2IlzufklCLtHUahbnFq8W9vzuWnu5AJoTqj8WgkdDhnbv+U3/HGm1M+nL5Wjw3uNH1pWVJ9XTWMP7k1NV5C+k60IpvbnA7wBOID9cB/f9mAwuHBpYMZp0MDTwMJkpZqSUjraUZUAWCvo7B3u3E/N6RovjuivHatbFMuwN5sR5WhxgGgrnaIliZGURoMZQVdu6HhR/9ITlOQNnbXfDko7a/esE2n5rBLx5j6PRtE8jRon5NiyyrT2lUyQxE1rFpZWYCdpizfbq3647sZsOg/tJ9wGBiCGGRoSKUiHnVkaV+Uxg9+rGh32qlgejwGvGl/fYo7hALnEvzm5i11ogY48+REQuADuJXaqrti0Wdetta1k4fYhMk+UeC510P/P0LG0cr5ZjYMh+11mZt0YzqKMgimjlXW6qOPhztbvyDEFA/Ay3urabWogByXwXIlw8RFhrarZpLx8dLDaNqqtlNtZvcRxqNxkNfBUcuPNkyGk8tfxnuuYWMWeBSEOJbN0Lp3TCjk8Mx/e8Qqxos+4naUGBLKkmP/VcbrjQrFWaBHdQEK38AIqe93cwo17801Y7BXGFzbZS9VTVsSIS4BYEFQosFGD91irbfXbPoiqX3ERvslDJZxyJ5o8ZDz7gWX5CUsQL3/TKji3FrVyji1+ojlr1AdzSjvM5wOyr1kVbNH07jIZBEwLw0MpfFaizlR+gj6aba5LTYAtPcKCMuEBrK+3dM+urogZDUqOLZ4i+K83ZggjKnLyj7xyd3tKkZEir6XSbwVtmA+gSvGO+IK1//iQm1g94BgqNz68AkKVkGine6BY5jfgSwjA9wOmybOmZVsdLvjuYhYDnCwLtRyXBS2ugDj4o/3B5OsDdHTTcr/YCWZSUUVTTym+X/ X-Microsoft-Antispam-Message-Info: Ptq5wMCV2wjFdtOVdmRC8PV47L16eHfqDc9vsr0NXwVBQqmuw3EkJr9w1WXUNhafi3crJkNv2HiNJ390RP5MHW7Pa8dPTVQ8LMger/cvfmDG1YAiTSY4JzMnRvZGXMvXDjWgVcCGMyhqznHsxslBfPfXPhnLgq7Te9dtVnO94/pNEWIG62VLyZpzov3xKG6Nx0+vU+3FO+Kfb3woLl0yVPusrfQrAzTlYsZeS6XxapkgIzQa+cEiBIHeI/SRGkCvS+GvZ3FFmFm2TM0PRZiK6Krt1LUwxbcvdeSM+KrFO0gU4oSQzZ+yV1DMi+2Qce7Iub02VnuaJvw+w/9+T4vl1Kr8mxqV86l9YEyL6fG7HXo= X-Microsoft-Exchange-Diagnostics: 1; DM6PR08MB4940; 6:a3CpERetWoJ3MH0WFm0D6cNhKzHDSNMFpvRkXLWXA7KwTI3jOIPL81wsuu3Zp3Uv5P4l5/Zdf9vG69AHzzR3t7Fqz6jm7MwzqD/v4A6MqWMnqXfwJJ4/80qh/XOKvanPBT2apueYDutbmQEcOidBYpdvsvgPz/U1bTwXu/jxPIwZXTuQXN2T9DT6/JaDeuYd/ZilijxKyBVaqB3ZAlq98vjK+43++o43Y2n+MH2X5JEK169DZMr/QfWeY5Z07U7avhazBhCCsSqSiTVnti5BYRzycmXzsv+dh9mDeRIF4awwAdkR/6RPqJX1kuRb40TkAk57aPMeM7L3hlgjWyyNykRMM/VGPjN+sW+zS+zxm3wNZ8PwlghF56ZbUgka7exOzFebYzbZ5yy5Kl3EVrc8xVjsU4/0+h+JdKKXXKCyEBx5urR3ZbyDgOgFcIJpKyDeei3V26DemJJX/Qsqxn9Z+Q==; 5:ejk1MdAtc2b+H88zr+PGbHIyDTpl+G8nJsLTcZktcr0MSGwUkYeYaP3YDcG8n8vnuKnHMv5R0VdQ6XGO9p03vmMNgmw2ILtqE3kA/KSTk53jIvNNeBA7xOMVzp5DQEMKdsOuiAia17pM13p15697HEA6lzvArNPCY1vc4u/kcZ4=; 24:X8ymYJmRISjrgedRvsoiipLTN1iCfigsxdpuK2QWsRApg1FXsdDk73vfoRjYFBd2USIdZ1ynhjp80JpZJNGIdTofuvHUIjv83D8JtbnyPlE= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM6PR08MB4940; 7:inkLTWayefcMBzOi48jE+Nz1F8utQ3mcYVM0OHzTT6M3nEe0Lu0ColSzhf9g6J/CmJLQWWKi42iDOoI3oZlViMoW7QRwgYx/pTSRo84ARtr53bdh34pfPD25xXbc5tyn0C5WRqh01aF23RtON2Qxv2Q/IVqATS3n5AaniOaPXeKndODFplbfS0e2h3w6Jh9wjhIVeFlnrQ+0BTnn5QnCx3dck8Kd8CzPJou4vZ91pWBrmywHppYtN++82CLU5sSJ X-OriginatorOrg: mips.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jun 2018 00:06:36.4875 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0bc7f0f3-4d19-4eba-cd6b-08d5dbc1d995 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 Currently pch_gbe_reset() performs a number of tasks: 1) Calls pch_gbe_reset_hw(), which: 1a) Reads the MAC address from the hardware, even though we already did that in pch_gbe_open() & it should not have changed. 1b) Writes to the RESET register to reset the MAC. 1c) Writes the MODE register to configure GMII/RGMII mode, potentially before the MAC reset has finished. 1d) Polls for the completion of the MAC reset. 1e) Configures the device MAC address. 2) Calls pch_gbe_set_multi() to configure multicast addresses & hardware MAC filtering. 3) Calls pch_gbe_mac_init_rx_addrs(), which: 3a) Configures the device MAC address again, duplicating step 1e. 3b) Masks & clears all other MAC registers, wiping out the configuration performed by step 2. This is needlessly repetitive & split across 3 functions for no good reason. This patch cleans this up significantly by: a) Inlining pch_gbe_mac_reset_hw() into pch_gbe_reset(), moving the MODE register write to after the MAC reset has completed & removing the initial read of the MAC address. b) Removing pch_gbe_mac_init_rx_addrs() entirely, leaving the address configuration performed by pch_gbe_set_multi() intact. With this done we know that pch_gbe_reset() will leave us with the multicast MAC addresses & filtering configured correctly, so we can remove the call to pch_gbe_set_multi() in pch_gbe_watchdog(). 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 | 54 ++++--------------- 1 file changed, 11 insertions(+), 43 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 c9b064ac06a1..123c7818698d 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 @@ -357,22 +357,6 @@ static void pch_gbe_mac_mar_set(struct pch_gbe_hw *hw, u8 * addr, u32 index) pch_gbe_wait_clr_bit(&hw->reg->ADDR_MASK, PCH_GBE_BUSY); } -/** - * pch_gbe_mac_reset_hw - Reset hardware - * @hw: Pointer to the HW structure - */ -static void pch_gbe_mac_reset_hw(struct pch_gbe_hw *hw) -{ - /* Read the MAC address. and store to the private data */ - pch_gbe_mac_read_mac_addr(hw); - iowrite32(PCH_GBE_ALL_RST, &hw->reg->RESET); - iowrite32(PCH_GBE_MODE_GMII_ETHER, &hw->reg->MODE); - pch_gbe_wait_clr_bit(&hw->reg->RESET, PCH_GBE_ALL_RST); - /* Setup the receive addresses */ - pch_gbe_mac_mar_set(hw, hw->mac.addr, 0); - return; -} - static void pch_gbe_disable_mac_rx(struct pch_gbe_hw *hw) { u32 rctl; @@ -389,28 +373,6 @@ static void pch_gbe_enable_mac_rx(struct pch_gbe_hw *hw) iowrite32((rctl | PCH_GBE_MRE_MAC_RX_EN), &hw->reg->MAC_RX_EN); } -/** - * pch_gbe_mac_init_rx_addrs - Initialize receive address's - * @hw: Pointer to the HW structure - * @mar_count: Receive address registers - */ -static void pch_gbe_mac_init_rx_addrs(struct pch_gbe_hw *hw, u16 mar_count) -{ - u32 i; - - /* Setup the receive address */ - pch_gbe_mac_mar_set(hw, hw->mac.addr, 0); - - /* Zero out the other receive addresses */ - for (i = 1; i < mar_count; i++) { - iowrite32(0, &hw->reg->mac_adr[i].high); - iowrite32(0, &hw->reg->mac_adr[i].low); - } - iowrite32(0xFFFE, &hw->reg->ADDR_MASK); - /* wait busy */ - pch_gbe_wait_clr_bit(&hw->reg->ADDR_MASK, PCH_GBE_BUSY); -} - /** * pch_gbe_mac_force_mac_fc - Force the MAC's flow control settings * @hw: Pointer to the HW structure @@ -734,11 +696,18 @@ void pch_gbe_reset(struct pch_gbe_adapter *adapter) struct net_device *netdev = adapter->netdev; struct pch_gbe_hw *hw = &adapter->hw; - pch_gbe_mac_reset_hw(hw); - /* reprogram multicast address register after reset */ + /* Perform the reset & wait for it to complete */ + iowrite32(PCH_GBE_ALL_RST, &hw->reg->RESET); + pch_gbe_wait_clr_bit(&hw->reg->RESET, PCH_GBE_ALL_RST); + + /* Configure GMII/RGMII mode */ + iowrite32(PCH_GBE_MODE_GMII_ETHER, &hw->reg->MODE); + + /* Program the MAC address */ + pch_gbe_mac_mar_set(hw, hw->mac.addr, 0); + + /* Configure multicast addresses & filtering */ pch_gbe_set_multi(netdev); - /* Setup the receive address. */ - pch_gbe_mac_init_rx_addrs(hw, PCH_GBE_MAR_ENTRIES); } /** @@ -1944,7 +1913,6 @@ static void pch_gbe_watchdog(struct timer_list *t) 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);