All of lore.kernel.org
 help / color / mirror / Atom feed
* via-velocity netpoll enable (patch proposal)
@ 2008-02-26 23:08 Stéphane BERTHELOT
  0 siblings, 0 replies; only message in thread
From: Stéphane BERTHELOT @ 2008-02-26 23:08 UTC (permalink / raw)
  To: romieu; +Cc: netdev

Hello all,

I tried to use netconsole on via-velocity hardware to get some dmesg 
remotely.
Surprisingly the current driver does not seem to have netpoll function code.

I had a look at how it is done in 8139cp and tg3 and borrowed some lines 
to make a patch for via-velocity.
Though I tested it for some time, I didn't put the hardware at stress 
especially with high number of netpoll packets.
I am no expert of the via-velocity hardware so I don't know if disabling 
interrupts is necessary, but it works for me this way and netconsole is 
happy and didn't crash yet...


--- via-velocity.c.orig    2008-02-26 23:47:42.000000000 +0100
+++ via-velocity.c    2008-02-23 10:58:58.000000000 +0100
@@ -378,6 +379,9 @@
 static int velocity_change_mtu(struct net_device *dev, int mtu);
 static int velocity_xmit(struct sk_buff *skb, struct net_device *dev);
 static int velocity_intr(int irq, void *dev_instance);
+#ifdef CONFIG_NET_POLL_CONTROLLER
+static void velocity_poll_controller(struct net_device *dev);
+#endif
 static void velocity_set_multi(struct net_device *dev);
 static struct net_device_stats *velocity_get_stats(struct net_device *dev);
 static int velocity_ioctl(struct net_device *dev, struct ifreq *rq, int 
cmd);
@@ -955,6 +959,9 @@
     dev->set_multicast_list = velocity_set_multi;
     dev->do_ioctl = velocity_ioctl;
     dev->ethtool_ops = &velocity_ethtool_ops;
+#ifdef CONFIG_NET_POLL_CONTROLLER
+        dev->poll_controller = velocity_poll_controller;
+#endif
     dev->change_mtu = velocity_change_mtu;
 
     dev->vlan_rx_add_vid = velocity_vlan_rx_add_vid;
@@ -2252,6 +2264,18 @@
 
 }
 
+#ifdef CONFIG_NET_POLL_CONTROLLER
+/*
+ * Polling receive - 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);
+}
+#endif
 
 /**
  *    velocity_set_multi    -    filter list change callback

-- 
Stéphane BERTHELOT
EmisFR
- Réseau : Sécurité et Serveurs , Développements métier et spécifiques -
10 rue Mazagran, 54000 NANCY, France
http://www.emisfr.com
Tel/Fax. 03 83 32 25 75


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2008-02-26 23:37 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-02-26 23:08 via-velocity netpoll enable (patch proposal) Stéphane BERTHELOT

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.