Subject: [PATCH] via-velocity: add netpoll functionality for the benefit of netconsole

From: Jan Ceuleers <[email-masked]>
Date: Mon, 04 Jan 2010 19:32:32 +0100

In February 2008, Stéphane Bertelot submitted a patch to netdev adding
netpoll functionality to the via-velocity driver so that netconsole
could be used with it.

There was no discussion at the time and the patch was not committed to
mainline.

I'd like to try again with this version, which has been ported to the
current code base.

---------------------
This patch is a port to net-next-2.6 of a submission by Stéphane
Bertelot in February 2008.

Signed-off-by: Stéphane Berthelot <[email-masked]>
Signed-off-by: Jan Ceuleers <[email-masked]>
---
 drivers/net/via-velocity.c |   17 +++++++++++++++++
 1 files changed, 17 insertions(+), 0 deletions(-)

diff --git a/drivers/net/via-velocity.c b/drivers/net/via-velocity.c
index 4ceb441..90718f5 100644
--- a/drivers/net/via-velocity.c
+++ b/drivers/net/via-velocity.c
@@ -2216,6 +2216,20 @@ static irqreturn_t velocity_intr(int irq, void *dev_instance)
 }
 
 /**
+ *	velocity_poll_controller	- netpoll controller
+ *	@dev: network device
+ *
+ *	Used by netconsole and other diagnostic tools to allow network
+ *	i/o with interrupts disabled.
+ */
+static void velocity_poll_controller(struct net_device *dev)
+{
+	disable_irq(dev->irq);
+	velocity_intr(dev->irq, dev);
+	enable_irq(dev->irq);
+}
+
+/**
  *	velocity_open		-	interface activation callback
  *	@dev: network layer device to open
  *
@@ -2628,6 +2642,9 @@ static const struct net_device_ops velocity_netdev_ops = {
 	.ndo_vlan_rx_add_vid	= velocity_vlan_rx_add_vid,
 	.ndo_vlan_rx_kill_vid	= velocity_vlan_rx_kill_vid,
 	.ndo_vlan_rx_register	= velocity_vlan_rx_register,
+#ifdef CONFIG_NET_POLL_CONTROLLER
+	.ndo_poll_controller	= velocity_poll_controller,
+#endif
 };
 
 /**
-- 
1.6.3.3