From patchwork Wed Oct 25 22:04:15 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Doug Berger X-Patchwork-Id: 830403 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="aE6RSxFF"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3yMkkZ3CBGz9t2W for ; Thu, 26 Oct 2017 09:06:46 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752074AbdJYWGn (ORCPT ); Wed, 25 Oct 2017 18:06:43 -0400 Received: from mail-qt0-f193.google.com ([209.85.216.193]:53361 "EHLO mail-qt0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932329AbdJYWFM (ORCPT ); Wed, 25 Oct 2017 18:05:12 -0400 Received: by mail-qt0-f193.google.com with SMTP id n61so1968386qte.10; 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=w6vc1zhXq1Fhn9flRuBel2fHNPrGidgW4h/8WPFxVBQ=; b=aE6RSxFFIJ1OYjjJYhHaVbWKPTM2+Go8Lp/SHo9o/8VpVEUcyUV6oWg+AQKGfkLVs6 Y6rYLBsH6pSGK7WOj1H5MPZ7ljUHddKnKfDv0bkygjc3TK8P+tkCFRSIIfUCvhRaBgkh i8Lh/e1QvvKsei4KDpj/Mxy65BGTMIMEuKV4zYQmAWODBJ+q3YVz2761KSxhvMW5s9/U t5GH6RR5cFyVCa33C/A/sHL9NiWuUVPUUMsT6FrV8roT4IabqLhWb8HNUlrspcRJnRzJ Vl73LMHXuHPC3znER9JXEeZU1OMIt7DboecP+U5+YUuNEh+S9GFcKhlK/NFVtgz59HlE Btdw== 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=w6vc1zhXq1Fhn9flRuBel2fHNPrGidgW4h/8WPFxVBQ=; b=ZL5jnMzZuUHDMeNa08i5PyvV18I4Je5RfFg7SVvmZh9t/U4kxQtnhjmvo1w0qREfjU F4op0nhZKYOq73FDKzruY1UrpgmrN4pdVMd18m1+9wYHCyT1JcIW4D6KWeQr48Lft2Cw QqVaL1hqWYAMw47Q5nOWWj3UnvMzr2EpnBtk76A/keXoAvmKLwlI+IX8z7Ct7+ttVo81 78xaOLDU0cJZdzyNT8lEIXpJjdVCvmtVgBkdGuddHGwVnXUpgmCoeg0O9+N0+WbhGOzK MJtfnLKxNqZ8LD9sEzbeNqxcEn3fNCeSr47LYRg44OMG2MVHrJ/cKr7oXPtGAOvMhE5M WEmw== X-Gm-Message-State: AMCzsaWlZJyinKOI1NYCXVjYbKuO7pgI59E3PMkXXQg3/BijjQotqU3P i315YHqJkwuk0kRBbeLYpn4= X-Google-Smtp-Source: ABhQp+SJ1vHwQWwk0X/jVYd3UMO6V5SWql/2hjvGK7EzWpdwfL3DIw5favlExFldMaqdUJj+Y61SNg== X-Received: by 10.200.49.178 with SMTP id h47mr8156213qte.0.1508969111114; Wed, 25 Oct 2017 15:05:11 -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.10 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 25 Oct 2017 15:05:10 -0700 (PDT) From: Doug Berger To: Florian Fainelli Cc: Doug Berger , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next 5/9] net: bcmgenet: cleanup ring interrupt masking and unmasking Date: Wed, 25 Oct 2017 15:04:15 -0700 Message-Id: <20171025220419.24951-6-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 Since the NAPI interrupts are basically ignored when NAPI is disabled we don't need to mask them within the functions bcmgenet_disable_tx_napi() and bcmgenet_disable_rx_napi(). So wait until all NAPI instances are disabled and mask all of the bcmgenet driver interrupts together in bcmgenet_netif_stop(). The interrupts can still be enabled in the functions bcmgenet_enable_tx_napi() and bcmgenet_enable_rx_napi(), but use the ring context int_enable() method to keep the functionality consistent and the code cleaner. Signed-off-by: Doug Berger --- drivers/net/ethernet/broadcom/genet/bcmgenet.c | 28 +++++--------------------- 1 file changed, 5 insertions(+), 23 deletions(-) diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet.c b/drivers/net/ethernet/broadcom/genet/bcmgenet.c index 9ce6671e8916..88aacf3bf44f 100644 --- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c +++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c @@ -2147,33 +2147,24 @@ static int bcmgenet_init_rx_ring(struct bcmgenet_priv *priv, static void bcmgenet_enable_tx_napi(struct bcmgenet_priv *priv) { unsigned int i; - u32 int0_enable = UMAC_IRQ_TXDMA_DONE; - u32 int1_enable = 0; struct bcmgenet_tx_ring *ring; for (i = 0; i < priv->hw_params->tx_queues; ++i) { ring = &priv->tx_rings[i]; napi_enable(&ring->napi); - int1_enable |= (1 << i); + ring->int_enable(ring); } ring = &priv->tx_rings[DESC_INDEX]; napi_enable(&ring->napi); - - bcmgenet_intrl2_0_writel(priv, int0_enable, INTRL2_CPU_MASK_CLEAR); - bcmgenet_intrl2_1_writel(priv, int1_enable, INTRL2_CPU_MASK_CLEAR); + ring->int_enable(ring); } static void bcmgenet_disable_tx_napi(struct bcmgenet_priv *priv) { unsigned int i; - u32 int0_disable = UMAC_IRQ_TXDMA_DONE; - u32 int1_disable = 0xffff; struct bcmgenet_tx_ring *ring; - bcmgenet_intrl2_0_writel(priv, int0_disable, INTRL2_CPU_MASK_SET); - bcmgenet_intrl2_1_writel(priv, int1_disable, INTRL2_CPU_MASK_SET); - for (i = 0; i < priv->hw_params->tx_queues; ++i) { ring = &priv->tx_rings[i]; napi_disable(&ring->napi); @@ -2269,33 +2260,24 @@ static void bcmgenet_init_tx_queues(struct net_device *dev) static void bcmgenet_enable_rx_napi(struct bcmgenet_priv *priv) { unsigned int i; - u32 int0_enable = UMAC_IRQ_RXDMA_DONE; - u32 int1_enable = 0; struct bcmgenet_rx_ring *ring; for (i = 0; i < priv->hw_params->rx_queues; ++i) { ring = &priv->rx_rings[i]; napi_enable(&ring->napi); - int1_enable |= (1 << (UMAC_IRQ1_RX_INTR_SHIFT + i)); + ring->int_enable(ring); } ring = &priv->rx_rings[DESC_INDEX]; napi_enable(&ring->napi); - - bcmgenet_intrl2_0_writel(priv, int0_enable, INTRL2_CPU_MASK_CLEAR); - bcmgenet_intrl2_1_writel(priv, int1_enable, INTRL2_CPU_MASK_CLEAR); + ring->int_enable(ring); } static void bcmgenet_disable_rx_napi(struct bcmgenet_priv *priv) { unsigned int i; - u32 int0_disable = UMAC_IRQ_RXDMA_DONE; - u32 int1_disable = 0xffff << UMAC_IRQ1_RX_INTR_SHIFT; struct bcmgenet_rx_ring *ring; - bcmgenet_intrl2_0_writel(priv, int0_disable, INTRL2_CPU_MASK_SET); - bcmgenet_intrl2_1_writel(priv, int1_disable, INTRL2_CPU_MASK_SET); - for (i = 0; i < priv->hw_params->rx_queues; ++i) { ring = &priv->rx_rings[i]; napi_disable(&ring->napi); @@ -2888,9 +2870,9 @@ static void bcmgenet_netif_stop(struct net_device *dev) netif_tx_stop_all_queues(dev); phy_stop(priv->phydev); - bcmgenet_intr_disable(priv); bcmgenet_disable_rx_napi(priv); bcmgenet_disable_tx_napi(priv); + bcmgenet_intr_disable(priv); /* Wait for pending work items to complete. Since interrupts are * disabled no new work will be scheduled.