From patchwork Wed Oct 25 22:04:16 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Doug Berger X-Patchwork-Id: 830402 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@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; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="MY5o1oqF"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3yMkkK4zk8z9t2W for ; Thu, 26 Oct 2017 09:06:33 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752035AbdJYWGW (ORCPT ); Wed, 25 Oct 2017 18:06:22 -0400 Received: from mail-qk0-f194.google.com ([209.85.220.194]:53182 "EHLO mail-qk0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932141AbdJYWFN (ORCPT ); Wed, 25 Oct 2017 18:05:13 -0400 Received: by mail-qk0-f194.google.com with SMTP id b15so1979945qkg.9; Wed, 25 Oct 2017 15:05:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=Rw9GgEAkSO9vVAPf0RfBRN/spJWzsnk60NEHjDmwobM=; b=MY5o1oqFPkdUrRx30dYDZqf2kY42Hau87t7RKke0mnTdHCAmzk2RSPuYDKfRs38FqX LkDTABXFsVP001UYCQ4Kg+GLGf/NJ8wd+19G/zio0tAjGsYlp7Uo0bCoFNVoGhBBHGZ/ EEr7KAE2J4d1sslo+0C9UghFEA9zxauMExlL+7DWdIsA//hqYvcCNpl+ktsNTYilkI5v BrdWhxIRFq3X0V9DIsdsy7F9d/JOLC//dQCL7465BOSRIwW7CgoI/VEYFBfqtdLlbz/y B0abgU1/kv0X84EFCOZBF7raTKmzpfi+RSj1SsqQVVNobaHKFPJyuQ8drpQtyCAATSg/ wB4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=Rw9GgEAkSO9vVAPf0RfBRN/spJWzsnk60NEHjDmwobM=; b=QAYdDQnS8qKXsGuDvcVQ6YCJk63sQpfVl7yadp1mikpUoE/zPXa14aGYwU/LdvuUhX jc2etY5nv3yzkHJ3ZWmfE3Jk5dPRSqJRAcCbngaUKhGcp49P2wPKLUmNjQ/Ay9U/8K3l PSDZTyCDHxEQPn0EqS75D9eaM4kijxwQwf8Z0KkuYt2m3jGLcM8NK/MnvgKOXL5d4IVC RAygGkeNTBDVZRNnLD94jrldeLL0QCPXfv6yZNxN2PasXwcvB9N8wpTdLR96pKLp6eB8 Ds9B6XLAZprwthfXAkXcPnI+c2pjD8f39o3YMhOtFtSK7ahX2Sc6XRLPUQBoa1seAm7Q CA3Q== X-Gm-Message-State: AMCzsaX9TpLM48HehfsAN0In/Fo+iC49aMgXbsl7Bbo2a89B3XHS2qa+ L0FvAvOiqxp07N5nGlMQtA3cT6Qh X-Google-Smtp-Source: ABhQp+R2y0V1sG8utqAKW0oQ9+8abCQF0vrS08NTiE7yX8SAR23INU2L43K4+oJh6+gAl5R141rN8w== X-Received: by 10.55.98.205 with SMTP id w196mr5580541qkb.322.1508969112305; Wed, 25 Oct 2017 15:05:12 -0700 (PDT) Received: from stb-bld-02.irv.broadcom.com ([192.19.255.250]) by smtp.gmail.com with ESMTPSA id f38sm2690246qtf.17.2017.10.25.15.05.11 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 25 Oct 2017 15:05:11 -0700 (PDT) From: Doug Berger To: Florian Fainelli Cc: Doug Berger , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next 6/9] net: bcmgenet: rework bcmgenet_netif_start and bcmgenet_netif_stop Date: Wed, 25 Oct 2017 15:04:16 -0700 Message-Id: <20171025220419.24951-7-opendmb@gmail.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20171025220419.24951-1-opendmb@gmail.com> References: <20171025220419.24951-1-opendmb@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org This commit consolidates more common functionality from bcmgenet_close and bcmgenet_suspend into bcmgenet_netif_stop and modifies the start and stop sequences to better suit the design of the GENET hardware. Signed-off-by: Doug Berger --- drivers/net/ethernet/broadcom/genet/bcmgenet.c | 49 +++++++++----------------- 1 file changed, 17 insertions(+), 32 deletions(-) diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet.c b/drivers/net/ethernet/broadcom/genet/bcmgenet.c index 88aacf3bf44f..747224714394 100644 --- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c +++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c @@ -2763,11 +2763,11 @@ static void bcmgenet_netif_start(struct net_device *dev) /* Start the network engine */ bcmgenet_enable_rx_napi(priv); - bcmgenet_enable_tx_napi(priv); umac_enable_set(priv, CMD_TX_EN | CMD_RX_EN, true); netif_tx_start_all_queues(dev); + bcmgenet_enable_tx_napi(priv); /* Monitor link interrupts now */ bcmgenet_link_intr_enable(priv); @@ -2868,10 +2868,19 @@ static void bcmgenet_netif_stop(struct net_device *dev) { struct bcmgenet_priv *priv = netdev_priv(dev); + bcmgenet_disable_tx_napi(priv); netif_tx_stop_all_queues(dev); + + /* Disable MAC receive */ + umac_enable_set(priv, CMD_RX_EN, false); + + bcmgenet_dma_teardown(priv); + + /* Disable MAC transmit. TX DMA disabled must be done before this */ + umac_enable_set(priv, CMD_TX_EN, false); + phy_stop(priv->phydev); bcmgenet_disable_rx_napi(priv); - bcmgenet_disable_tx_napi(priv); bcmgenet_intr_disable(priv); /* Wait for pending work items to complete. Since interrupts are @@ -2883,12 +2892,16 @@ static void bcmgenet_netif_stop(struct net_device *dev) priv->old_speed = -1; priv->old_duplex = -1; priv->old_pause = -1; + + /* tx reclaim */ + bcmgenet_tx_reclaim_all(dev); + bcmgenet_fini_dma(priv); } static int bcmgenet_close(struct net_device *dev) { struct bcmgenet_priv *priv = netdev_priv(dev); - int ret; + int ret = 0; netif_dbg(priv, ifdown, dev, "bcmgenet_close\n"); @@ -2897,20 +2910,6 @@ static int bcmgenet_close(struct net_device *dev) /* Really kill the PHY state machine and disconnect from it */ phy_disconnect(priv->phydev); - /* Disable MAC receive */ - umac_enable_set(priv, CMD_RX_EN, false); - - ret = bcmgenet_dma_teardown(priv); - if (ret) - return ret; - - /* Disable MAC transmit. TX DMA disabled must be done before this */ - umac_enable_set(priv, CMD_TX_EN, false); - - /* tx reclaim */ - bcmgenet_tx_reclaim_all(dev); - bcmgenet_fini_dma(priv); - free_irq(priv->irq0, priv); free_irq(priv->irq1, priv); @@ -3522,7 +3521,7 @@ static int bcmgenet_suspend(struct device *d) { struct net_device *dev = dev_get_drvdata(d); struct bcmgenet_priv *priv = netdev_priv(dev); - int ret; + int ret = 0; if (!netif_running(dev)) return 0; @@ -3534,20 +3533,6 @@ static int bcmgenet_suspend(struct device *d) netif_device_detach(dev); - /* Disable MAC receive */ - umac_enable_set(priv, CMD_RX_EN, false); - - ret = bcmgenet_dma_teardown(priv); - if (ret) - return ret; - - /* Disable MAC transmit. TX DMA disabled must be done before this */ - umac_enable_set(priv, CMD_TX_EN, false); - - /* tx reclaim */ - bcmgenet_tx_reclaim_all(dev); - bcmgenet_fini_dma(priv); - /* Prepare the device for Wake-on-LAN and switch to the slow clock */ if (device_may_wakeup(d) && priv->wolopts) { ret = bcmgenet_power_down(priv, GENET_POWER_WOL_MAGIC);