--- drivers/net/sungem.c.orig 2004-05-19 20:47:15.000000000 +0200 +++ drivers/net/sungem.c 2004-05-19 22:09:25.920632936 +0200 @@ -2441,6 +2441,22 @@ return 0; } +#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_poll(struct net_device *dev) +{ + struct gem *gp = dev->priv; + disable_irq(gp->pdev->irq); + gem_interrupt(gp->pdev->irq, (void *)dev, NULL); + enable_irq(gp->pdev->irq); +} +#endif + static int gem_set_settings(struct net_device *dev, struct ethtool_cmd *cmd) { struct gem *gp = dev->priv; @@ -2810,6 +2826,9 @@ dev->change_mtu = gem_change_mtu; dev->irq = pdev->irq; dev->dma = 0; +#ifdef CONFIG_NET_POLL_CONTROLLER + dev->poll_controller = gem_poll; +#endif if (register_netdev(dev)) { printk(KERN_ERR PFX "Cannot register net device, "