On Wed, 24 May 2000, Anders K. Pedersen wrote:
> We had a problem with a 3c590 card, that after a while stopped
> transmitting packets, and the only way to get it to work again was
> to unload the driver and restart the network. Every time it happened,
> a "Transmit error, Tx status register 90." (from time to time more
Hmmm, A PCI Tx underrun, on a Vortex.
(See http://www.scyld.com/network/vortex.html for a decode of the error
bits.)
> May 23 21:05:17 socks kernel: 3c59x.c:v0.99H 19May00 Donald Becker
>http://cesdis.gsfc.nasa.gov/linux/drivers/vortex.html
> May 23 21:05:17 socks kernel: eth1: 3Com 3c590 Vortex 10Mbps at 0x6200,
>00:a0:24:cb:d2:e4, IRQ 10
> May 23 21:05:17 socks kernel: 8K byte-wide RAM 1:1 Rx:Tx split, autoselect/10baseT
>interface.
Note: this is an old 3c590 card, not a 3c900 series card.
The transmit (and Tx error recovery) path is different.
> May 23 23:19:56 socks kernel: eth1: Transmit error, Tx status register 90.
Hmmm, it's very curious that this would be happening with a 10Mbps-only
card. The Tx FIFO is 4KB, and the chip shouldn't start transmitting until
the whole packet is in the FIFO. That should rule out a FIFO underrun as an
error source.
> --- 3c59x.c.orig Wed May 24 00:15:19 2000
> +++ 3c59x.c Wed May 24 00:20:21 2000
> @@ -1401,6 +1401,12 @@
> outw(TxEnable, ioaddr + EL3_CMD);
> dev->trans_start = jiffies;
>
> + /*
> + * AKP: Clear the transmitter busy flag
> + * otherwise the driver will never transmit again
> + */
> + dev->tbusy = 0;
> +
> /* Switch to register set 7 for normal use. */
> EL3WINDOW(7);
> }
This is a bad patch -- the tbusy should only be cleared for the Vortex
chips. Move it up a few lines:
outb(PKT_BUF_SZ>>8, ioaddr + TxFreeThreshold);
outw(DownUnstall, ioaddr + EL3_CMD);
- } else
+ } else {
vp->stats.tx_dropped++;
+ clear_bit(0, (void*)&dev->tbusy);
+ }
But this still should never be happening...
Donald Becker [EMAIL PROTECTED]
Scyld Computing Corporation
410 Severn Ave. Suite 210
Annapolis MD 21403
-
To unsubscribe from this list: send the line "unsubscribe linux-net" in
the body of a message to [EMAIL PROTECTED]