]> git.hungrycats.org Git - linux/commitdiff
[SUNGEM]: Add polling support.
authorColin Leroy <colin@colino.net>
Wed, 29 Sep 2004 09:17:10 +0000 (02:17 -0700)
committerDavid S. Miller <davem@nuts.davemloft.net>
Wed, 29 Sep 2004 09:17:10 +0000 (02:17 -0700)
Signed-off-by: Colin Leroy <colin@colino.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/sungem.c

index 8e3e553ebc3632ace0b05659d8d4158253d2d502..949769e10750ec8d5e7cc2815ff084b8946962cc 100644 (file)
@@ -2742,6 +2742,23 @@ use_random:
 }
 #endif /* not Sparc and not PPC */
 
+#ifdef CONFIG_NET_POLL_CONTROLLER
+/*
+ * Polling 'interrupt' - used by things like netconsole to send skbs
+ * without having to re-enable interrupts. It's not called while
+ * the interrupt routine is executing.
+ */
+static void gem_netpoll(struct net_device *netdev)
+{
+       struct gem *gp = netdev->priv;
+       if (!gp->pdev)
+               return;
+       disable_irq(gp->pdev->irq);
+       gem_interrupt(gp->pdev->irq, netdev, NULL);
+       enable_irq(gp->pdev->irq);
+}
+#endif
+
 static int __devinit gem_get_device_address(struct gem *gp)
 {
 #if defined(__sparc__) || defined(CONFIG_PPC_PMAC)
@@ -2940,6 +2957,9 @@ static int __devinit gem_init_one(struct pci_dev *pdev,
        dev->set_multicast_list = gem_set_multicast;
        dev->do_ioctl = gem_ioctl;
        dev->poll = gem_poll;
+#ifdef CONFIG_NET_POLL_CONTROLLER
+       dev->poll_controller = gem_netpoll;
+#endif
        dev->weight = 64;
        dev->ethtool_ops = &gem_ethtool_ops;
        dev->tx_timeout = gem_tx_timeout;