diff -urpN -X /home/fletch/.diff.exclude 104-poll_tg3/drivers/net/8139too.c 105-poll_8139too/drivers/net/8139too.c
--- 104-poll_tg3/drivers/net/8139too.c	Mon Dec  8 09:55:51 2003
+++ 105-poll_8139too/drivers/net/8139too.c	Wed Dec 24 18:25:12 2003
@@ -620,6 +620,10 @@ static void __set_rx_mode (struct net_de
 static void rtl8139_hw_start (struct net_device *dev);
 static struct ethtool_ops rtl8139_ethtool_ops;
 
+#ifdef CONFIG_NET_POLL_CONTROLLER
+static void rtl8139_rx_poll (struct net_device *dev);
+#endif
+
 #ifdef USE_IO_OPS
 
 #define RTL_R8(reg)		inb (((unsigned long)ioaddr) + (reg))
@@ -972,6 +976,10 @@ static int __devinit rtl8139_init_one (s
 	dev->tx_timeout = rtl8139_tx_timeout;
 	dev->watchdog_timeo = TX_TIMEOUT;
 
+#ifdef CONFIG_NET_POLL_CONTROLLER
+	dev->poll_controller = rtl8139_rx_poll;
+#endif
+
 	/* note: the hardware is not capable of sg/csum/highdma, however
 	 * through the use of skb_copy_and_csum_dev we enable these
 	 * features
@@ -2389,6 +2397,15 @@ static struct net_device_stats *rtl8139_
 
 	return &tp->stats;
 }
+
+#ifdef CONFIG_NET_POLL_CONTROLLER
+static void rtl8139_rx_poll (struct net_device *dev)
+{
+	disable_irq(dev->irq);
+	rtl8139_interrupt(dev->irq, (void *)dev, 0);
+	enable_irq(dev->irq);
+}
+#endif
 
 /* Set or clear the multicast filter for this adaptor.
    This routine is not state sensitive and need not be SMP locked. */