There is a fix for that in
http://cesdis.gsfc.nasa.gov/linux/drivers/3c509.html
The fix is this:
--- linux/drivers/net/3c509.c.orig Wed Oct 30 03:42:40 1996
+++ linux/drivers/net/3c509.c Wed Mar 19 13:26:39 1997
@@ -682,8 +682,9 @@
printk("%s: Couldn't allocate a sk_buff of size %d.\n",
dev->name, pkt_len);
}
- lp->stats.rx_dropped++;
outw(RxDiscard, ioaddr + EL3_CMD);
+ lp->stats.rx_dropped++;
+ SLOW_DOWN_IO;
while (inw(ioaddr + EL3_STATUS) & 0x1000)
printk(" Waiting for 3c509 to discard packet, status %x.\n",
inw(ioaddr + EL3_STATUS) );