From patchwork Fri Jul 31 18:42:54 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Fainelli X-Patchwork-Id: 502717 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 30D7F1402B2 for ; Sat, 1 Aug 2015 04:45:26 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b=AQhaLO63; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751722AbbGaSpT (ORCPT ); Fri, 31 Jul 2015 14:45:19 -0400 Received: from mail-pd0-f178.google.com ([209.85.192.178]:35159 "EHLO mail-pd0-f178.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751028AbbGaSpQ (ORCPT ); Fri, 31 Jul 2015 14:45:16 -0400 Received: by pdrg1 with SMTP id g1so46844798pdr.2 for ; Fri, 31 Jul 2015 11:45:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=BzccapA0sKWyKPh12ziIeVLuLHM2qCdW9QuAMuNPSps=; b=AQhaLO63q8opMs4qjnQcCE9NPj2RItQRi/NMWKPjSfNtTk+mWZxzFHkeoY6OJCfkGR dsWC06hqYhikNTaWJXIhUkK4yBt+bDISVQIzdmvWfyWlm4YYFmCtBgphpCZOCmGjJTBP uOUOW5MRGIJduJs81Uiug2vIpNQ9Dc+XeeXNnomUVpB20+8gFbAoLXhQgpUbjzuFKsWj NTykIy/GpbuaSBxRbCVJk1E5yrF/CFypzrm448cFSNgi5GgDEH2b/umFCD8JSvaJdn2B WxBjkdeVghUrLqhX00CUk84BmbFeW4P8QT7Ue9uLz7bAWqIUsg7uQ2ja4J3Mi86E5khs jFLA== X-Received: by 10.70.40.203 with SMTP id z11mr2476808pdk.78.1438368315751; Fri, 31 Jul 2015 11:45:15 -0700 (PDT) Received: from fainelli-desktop.broadcom.com (5520-maca-inet1-outside.broadcom.com. [216.31.211.11]) by smtp.gmail.com with ESMTPSA id os7sm8991577pdb.51.2015.07.31.11.45.14 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 31 Jul 2015 11:45:15 -0700 (PDT) From: Florian Fainelli To: netdev@vger.kernel.org Cc: davem@davemloft.net, pgynther@google.com, jaedon.shin@gmail.com, Florian Fainelli , vivien.didelot@savoirfairelinux.com, jerome.oufella@savoirfairelinux.com, linux@roeck-us.net, andrew@lunn.ch, cphealy@gmail.com, mathieu@codeaurora.org, jonasj76@gmail.com, andrey.volkov@nexvision.fr, Chris.Packham@alliedtelesis.co.nz, alexander.h.duyck@redhat.com Subject: [PATCH net-next v2 1/4] net: bcmgenet: Add netconsole support Date: Fri, 31 Jul 2015 11:42:54 -0700 Message-Id: <1438368177-23942-2-git-send-email-f.fainelli@gmail.com> X-Mailer: git-send-email 2.1.0 In-Reply-To: <1438368177-23942-1-git-send-email-f.fainelli@gmail.com> References: <1438368177-23942-1-git-send-email-f.fainelli@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Implement a poll controller for netconsole which invokes both of our interrupt handlers for the different RX/TX queues. Signed-off-by: Florian Fainelli --- Changes in v2: - properly pair the interrupt handler with disable/enable_irq pairs - remove the call to bcmgenet_tx_reclaim, this is done by the handler drivers/net/ethernet/broadcom/genet/bcmgenet.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet.c b/drivers/net/ethernet/broadcom/genet/bcmgenet.c index c6f2d396edf0..eb080ef8ee97 100644 --- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c +++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c @@ -2388,6 +2388,23 @@ static irqreturn_t bcmgenet_wol_isr(int irq, void *dev_id) return IRQ_HANDLED; } +#ifdef CONFIG_NET_POLL_CONTROLLER +static void bcmgenet_poll_controller(struct net_device *dev) +{ + struct bcmgenet_priv *priv = netdev_priv(dev); + + /* Invoke the main RX/TX interrupt handler */ + disable_irq(priv->irq0); + bcmgenet_isr0(priv->irq0, priv); + enable_irq(priv->irq0); + + /* And the interrupt handler for RX/TX priority queues */ + disable_irq(priv->irq1); + bcmgenet_isr1(priv->irq1, priv); + enable_irq(priv->irq1); +} +#endif + static void bcmgenet_umac_reset(struct bcmgenet_priv *priv) { u32 reg; @@ -2939,6 +2956,9 @@ static const struct net_device_ops bcmgenet_netdev_ops = { .ndo_set_mac_address = bcmgenet_set_mac_addr, .ndo_do_ioctl = bcmgenet_ioctl, .ndo_set_features = bcmgenet_set_features, +#ifdef CONFIG_NET_POLL_CONTROLLER + .ndo_poll_controller = bcmgenet_poll_controller, +#endif }; /* Array of GENET hardware parameters/characteristics */