From patchwork Mon Mar 28 20:41:18 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ezequiel Garcia X-Patchwork-Id: 602640 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 3qYm6T6CsDz9sBf for ; Tue, 29 Mar 2016 07:41:53 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=vanguardiasur-com-ar.20150623.gappssmtp.com header.i=@vanguardiasur-com-ar.20150623.gappssmtp.com header.b=MSYTR2JN; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753567AbcC1Ulw (ORCPT ); Mon, 28 Mar 2016 16:41:52 -0400 Received: from mail-qk0-f177.google.com ([209.85.220.177]:36779 "EHLO mail-qk0-f177.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751537AbcC1Ulu (ORCPT ); Mon, 28 Mar 2016 16:41:50 -0400 Received: by mail-qk0-f177.google.com with SMTP id i4so90080641qkc.3 for ; Mon, 28 Mar 2016 13:41:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vanguardiasur-com-ar.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id; bh=IEqSxF/DkaKI21lg9l49DU49VGk4NfULdp20n6SHVNI=; b=MSYTR2JN+vXj2fXE22JC42LkwVZ9A671cFcdPEv4IAbyTvSQu5VAMmPT/mBSEDKrGB B70t84vtgktrmElaNOvWecqztZUhe0QQkSQYBkdDy5LLFo4iMsN5R/hzfDG00+YPRn8+ 1MsefnSsTASQHm5LzrqF78vpgKi/OoxbZPl9MaJH0QnKzv1jECd0FrFTmog3um26M6ad hlDkbcBVdGFaHzHOQCWvxuQVN5C8pLm0PKB/qjJzhg1QijqJEmKXSuugLnjd89JcDAZD HVSuTeRRMgnmeq+gL6g5O3/y+/ZgPFGFGoroZ7PCm7fyPwxOqLNXtx7AeWOQgc0W3kmh 5WPw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=IEqSxF/DkaKI21lg9l49DU49VGk4NfULdp20n6SHVNI=; b=Fcaw6lLpzsZaHupn5oBgrxbKTOEgwiBt6WP7PPiTRZRhZJVa0ehy0RLkcAINbC5m6L PEJFXblPjJDMtkTdrvwF3j1XlCg+2/Kl6oeNtUwsQP7YE6g8Al1JAQ7NFjV4sfZw2m5y /KDMgIhNAzjF+lkPNpK0ftK5C7aUORMuxkOhbGaMjbEo77J4AJDAfJQDo0xbqseJuyvh tCsTpCV2jE2X8SyhLqBChnm+KNXME0wT4MvJzf1FSADtioqSTrM3A6ent9hxAs8IusSN ZG+EYJnOsh8MEfiKFQfo95krb2rFM5jMekzjioIvYgm9QPKDMQlogEhMBVksUMZ1kFlw w9sw== X-Gm-Message-State: AD7BkJKNPWusTPCOM8neTiX/icr15ydBzTXOy6kQbmObFBJLhJcowYP9Yf/8dbaU8axK1w== X-Received: by 10.55.22.103 with SMTP id g100mr35437451qkh.0.1459197709793; Mon, 28 Mar 2016 13:41:49 -0700 (PDT) Received: from localhost.localdomain ([190.2.108.156]) by smtp.gmail.com with ESMTPSA id y200sm12563578qka.48.2016.03.28.13.41.47 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 28 Mar 2016 13:41:48 -0700 (PDT) From: Ezequiel Garcia To: Thomas Petazzoni Cc: , Ezequiel Garcia Subject: [PATCH] ethernet: mvneta: Support netpoll Date: Mon, 28 Mar 2016 17:41:18 -0300 Message-Id: <1459197678-12022-1-git-send-email-ezequiel@vanguardiasur.com.ar> X-Mailer: git-send-email 2.7.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org This commit adds the support for netpoll, which is used to implement netconsole. Signed-off-by: Ezequiel Garcia --- Tested on Armada 370 Mirabox and Armada XP Openblocks AX3-4 with netconsole. drivers/net/ethernet/marvell/mvneta.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/drivers/net/ethernet/marvell/mvneta.c b/drivers/net/ethernet/marvell/mvneta.c index 577f7ca7deba..dd114303c98f 100644 --- a/drivers/net/ethernet/marvell/mvneta.c +++ b/drivers/net/ethernet/marvell/mvneta.c @@ -3813,6 +3813,24 @@ static int mvneta_ethtool_get_rxfh(struct net_device *dev, u32 *indir, u8 *key, return 0; } +#ifdef CONFIG_NET_POLL_CONTROLLER +static void mvneta_percpu_poll_controller(void *arg) +{ + struct mvneta_port *pp = arg; + struct mvneta_pcpu_port *pcpu_port = + this_cpu_ptr(pp->ports); + mvneta_isr(pp->dev->irq, pcpu_port); +} + +/* Polled functionality used by netconsole and others in non interrupt mode */ +static void mvneta_poll_controller(struct net_device *dev) +{ + struct mvneta_port *pp = netdev_priv(dev); + + on_each_cpu(mvneta_percpu_poll_controller, pp, false); +} +#endif + static const struct net_device_ops mvneta_netdev_ops = { .ndo_open = mvneta_open, .ndo_stop = mvneta_stop, @@ -3823,6 +3841,9 @@ static const struct net_device_ops mvneta_netdev_ops = { .ndo_fix_features = mvneta_fix_features, .ndo_get_stats64 = mvneta_get_stats64, .ndo_do_ioctl = mvneta_ioctl, +#ifdef CONFIG_NET_POLL_CONTROLLER + .ndo_poll_controller = mvneta_poll_controller, +#endif }; const struct ethtool_ops mvneta_eth_tool_ops = {