--- drivers/net/8139too.c | 10 +++++++++- 1 files changed, 9 insertions(+), 1 deletion(-) diff -puN drivers/net/8139too.c~8139too-revert04 drivers/net/8139too.c --- linux-2.6.4-rc1/drivers/net/8139too.c~8139too-revert04 2004-02-29 21:30:19.000000000 +0900 +++ linux-2.6.4-rc1-hirofumi/drivers/net/8139too.c 2004-02-29 21:31:05.000000000 +0900 @@ -1374,7 +1374,7 @@ static int rtl8139_open (struct net_devi rtl8139_start_thread(dev); - printk("%s: revert03\n", dev->name); + printk("%s: revert04\n", dev->name); spin_lock_irq(&tp->lock); RTL8139_DUMP(dev); spin_unlock_irq(&tp->lock); @@ -2225,6 +2225,14 @@ static irqreturn_t rtl8139_interrupt (in out: spin_unlock (&tp->lock); + if (boguscnt <= 0) { + printk (KERN_WARNING "%s: Too much work at interrupt, " + "IntrStatus=0x%4.4x.\n", dev->name, status); + + /* Clear all interrupt sources. */ + RTL_W16 (IntrStatus, 0xffff); + } + DPRINTK ("%s: exiting interrupt, intr_status=%#4.4x.\n", dev->name, RTL_R16 (IntrStatus)); return IRQ_RETVAL(handled); _