--- via-rhine.c.orig Fri Dec 21 18:41:54 2001 +++ via-rhine.c Thu Jan 24 09:30:42 2002 @@ -1264,7 +1264,7 @@ /* Abnormal error summary/uncommon events handlers. */ if (intr_status & (IntrPCIErr | IntrLinkChange | IntrMIIChange | - IntrStatsMax | IntrTxAbort | IntrTxUnderrun)) + IntrStatsMax | IntrTxAbort | IntrTxUnderrun | 0x0100)) via_rhine_error(dev, intr_status); if (--boguscnt < 0) { @@ -1481,8 +1481,14 @@ printk(KERN_INFO "%s: Transmitter underrun, increasing Tx " "threshold setting to %2.2x.\n", dev->name, np->tx_thresh); } + if (intr_status & 0x0100) { + /* VIA hack */ + writew(CmdTxOn | np->chip_cmd, dev->base_addr + ChipCmd); + /* Restart Tx */ + writew(CmdTxDemand | np->chip_cmd, dev->base_addr + ChipCmd); + } if ((intr_status & ~( IntrLinkChange | IntrStatsMax | - IntrTxAbort | IntrTxAborted))) { + IntrTxAbort | IntrTxAborted | 0x0100))) { if (debug > 1) printk(KERN_ERR "%s: Something Wicked happened! %4.4x.\n", dev->name, intr_status);