Skip to contentSkip to conversation

via-velocity: add netpoll functionality for the benefit of netconsole

PATCH In review Jan Ceuleers 2 participants 5 messages Jan 4, 2010 – Jan 10, 2010

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 via-velocity: add netpoll functionality for the benefit of netconsole

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.

---
 drivers/net/via-velocity.c |   17 +++++++++++++++++
 1 files changed, 17 insertions(+), 0 deletions(-)
drivers/net/via-velocity.c +17 -0
index 4ceb441..90718f5 100644
@@ -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
 };
 
 /**
Signature · 1 line
1.6.3.3
#1 lore raw

Hi,

Does the patch still work with the new NAPI support in the driver? Some comments below:

drivers/net/via-velocity.c static irqreturn_t velocity_intr(int irq, void *dev_instance) · line 2230

Quoted 6 lines · On Mon, 04 Jan 2010 19:32:32 +0100 Jan Ceuleers <[email protected]>…
drivers/net/via-velocity.c +6 -0
+static void velocity_poll_controller(struct net_device *dev)
+{
+	disable_irq(dev->irq);
+	velocity_intr(dev->irq, dev);
+	enable_irq(dev->irq);
+}

This should probably have an

#ifdef CONFIG_NET_POLL_CONTROLLER
...
#endif

around it since

drivers/net/via-velocity.c static const struct net_device_ops velocity_netdev_ops = { · line 2647

Quoted 7 lines
drivers/net/via-velocity.c +3 -0
@@ -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

This one has it (to avoid a warning when building without it).

// Simon

#2 lore raw
Quoted 1 line · Simon Kagstrom

Does the patch still work with the new NAPI support in the driver?

Errr. (Is my ignorance showing yet?)

I will have to study this, based on other drivers and your commit dfff71.

I would be grateful for any hints, but otherwise will endeavour to figure it out myself.

Quoted 9 lines

drivers/net/via-velocity.c static irqreturn_t velocity_intr(int irq, void *dev_instance) · line 2230

Quoted 6 lines
drivers/net/via-velocity.c +6 -0
+static void velocity_poll_controller(struct net_device *dev)
+{
+	disable_irq(dev->irq);
+	velocity_intr(dev->irq, dev);
+	enable_irq(dev->irq);
+}

This should probably have an

Quoted 5 lines

#ifdef CONFIG_NET_POLL_CONTROLLER
...
#endif

around it

You are right, will add.

Thanks, Jan

#3 lore raw
Quoted 6 lines · On Tue, 05 Jan 2010 21:19:33 +0100 Jan Ceuleers <[email protected]>…
Quoted 1 line · Simon Kagstrom

Does the patch still work with the new NAPI support in the driver?

Errr. (Is my ignorance showing yet?)

I will have to study this, based on other drivers and your commit dfff71.

Well, if you have tested it and netconsole works with the new driver I would guess it's OK. I don't know netconsole myself, but I know the interrupt handler (which you call from your patch) has changed with the NAPI support, so that's why I was wondering if it still worked.

// Simon

#4 lore raw
Quoted 6 lines · Simon Kagstrom
Quoted 1 line

I will have to study this, based on other drivers and your commit dfff71.

Well, if you have tested it and netconsole works with the new driver I would guess it's OK. I don't know netconsole myself, but I know the interrupt handler (which you call from your patch) has changed with the NAPI support, so that's why I was wondering if it still worked.

I want to double-check but can't get my hands on the test machine at the moment. I will revert as soon as.

Thanks, Jan