From patchwork Fri Jul 31 18:42:55 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Fainelli X-Patchwork-Id: 502720 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 8D9971402B2 for ; Sat, 1 Aug 2015 04:45:38 +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=ccKmRXn6; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751816AbbGaSpe (ORCPT ); Fri, 31 Jul 2015 14:45:34 -0400 Received: from mail-pa0-f48.google.com ([209.85.220.48]:35382 "EHLO mail-pa0-f48.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751284AbbGaSpS (ORCPT ); Fri, 31 Jul 2015 14:45:18 -0400 Received: by pabkd10 with SMTP id kd10so44931724pab.2 for ; Fri, 31 Jul 2015 11:45:17 -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=9DjBaFIK4cTK0+Vux0Jp4FNjzJlWqVQ3iPKt0IDh1vM=; b=ccKmRXn62S8vspu/abjL/JLZn/EfLAYnSmaovVyM82fiKuuZv8K2qKJFXWv/uuQ8Br TdlCUN3Js0sZ4+1HnEfr10APnYyBxVmFlhEMS9O6irVYbdyK/RgM7mAHvGDHe6WsRnXg rpQwA8l55TPJcaECvrCby+ig3gKNeT4vhhd5/dOrx+mAEkwG81lzIfQrtYSnmZ8dvvY8 12SqGycl/wlxooG+AIC8lrg88NbvLXEWUK7MlrzdoureVchJdvO0poALs85uixqyYJnC Ry4YGGwcUm4MemKxKLO5TX105+3jutyYcdnil7TrXunpsz68RnqW1Txm5kvS2oXuJH6e fRhg== X-Received: by 10.66.236.39 with SMTP id ur7mr9776853pac.123.1438368317351; Fri, 31 Jul 2015 11:45:17 -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.15 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 31 Jul 2015 11:45:16 -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 2/4] net: systemport: Add netconsole support Date: Fri, 31 Jul 2015 11:42:55 -0700 Message-Id: <1438368177-23942-3-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 the RX interrupt handler to poll for incoming packets, and cleans up all TX queues by invoking the TX interrupt handler. Signed-off-by: Florian Fainelli --- Changes in v2: - properly pair the interrupt handler calls with disable/enable_irq - remove the call to bcm_sysport_tx_reclaim, handler does this drivers/net/ethernet/broadcom/bcmsysport.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/drivers/net/ethernet/broadcom/bcmsysport.c b/drivers/net/ethernet/broadcom/bcmsysport.c index 4566cdf0bc39..b9a5a97ed4dd 100644 --- a/drivers/net/ethernet/broadcom/bcmsysport.c +++ b/drivers/net/ethernet/broadcom/bcmsysport.c @@ -933,6 +933,21 @@ static irqreturn_t bcm_sysport_wol_isr(int irq, void *dev_id) return IRQ_HANDLED; } +#ifdef CONFIG_NET_POLL_CONTROLLER +static void bcm_sysport_poll_controller(struct net_device *dev) +{ + struct bcm_sysport_priv *priv = netdev_priv(dev); + + disable_irq(priv->irq0); + bcm_sysport_rx_isr(priv->irq0, priv); + enable_irq(priv->irq0); + + disable_irq(priv->irq1); + bcm_sysport_tx_isr(priv->irq1, priv); + enable_irq(priv->irq1); +} +#endif + static struct sk_buff *bcm_sysport_insert_tsb(struct sk_buff *skb, struct net_device *dev) { @@ -1723,6 +1738,9 @@ static const struct net_device_ops bcm_sysport_netdev_ops = { .ndo_set_features = bcm_sysport_set_features, .ndo_set_rx_mode = bcm_sysport_set_rx_mode, .ndo_set_mac_address = bcm_sysport_change_mac, +#ifdef CONFIG_NET_POLL_CONTROLLER + .ndo_poll_controller = bcm_sysport_poll_controller, +#endif }; #define REV_FMT "v%2x.%02x"