Hi,
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
bits in the Tx status register were set) message was logged, followed
by a lot of "transmit timed out, tx_status 00 status e000." after a
few seconds as shown in the log dump below (21:05-21:20).
After trying several different things, I noticed, that the
"dev->tbusy" flag appararently never was cleared, when the transmit
timeout occured, so I tried adding the patch shown below, and this
seems to have solved the problem as shown by the log dump
(22:43-23:46). I am however not certain that this is the right way to
do it for all the cards supported by the 3c59x driver.
This happened on kernel 2.2.15 - I tried both the driver, that comes
with 2.2.15 and the driver from 2.2.16pre4 with the same results. The
patch below is made against the 2.2.16pre4 driver.
May 23 21:05:15 socks kernel: epic100.c:v1.07h 8/18/99 Donald Becker
http://cesdis.gsfc.nasa.gov/linux/drivers/epic100.html
May 23 21:05:15 socks kernel: eth0: SMSC EPIC/100 83c170 at 0x6100, IRQ 9,
00:e0:29:22:f2:b7.
May 23 21:05:15 socks kernel: eth0: MII transceiver #3 control 3000 status 7809.
May 23 21:05:15 socks kernel: eth0: Autonegotiation advertising 01e1 link partner
0001.
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.
May 23 21:15:59 socks kernel: eth1: Transmit error, Tx status register 90.
May 23 21:16:06 socks kernel: eth1: transmit timed out, tx_status 00 status e000.
May 23 21:16:41 socks last message repeated 7 times
May 23 21:17:46 socks last message repeated 13 times
May 23 21:18:51 socks last message repeated 13 times
May 23 21:19:56 socks last message repeated 13 times
May 23 21:20:11 socks last message repeated 3 times
...
May 23 22:43:32 socks kernel: epic100.c:v1.07h 8/18/99 Donald Becker
http://cesdis.gsfc.nasa.gov/linux/drivers/epic100.html
May 23 22:43:32 socks kernel: eth0: SMSC EPIC/100 83c170 at 0x6100, IRQ 9,
00:e0:29:22:f2:b7.
May 23 22:43:32 socks kernel: eth0: MII transceiver #3 control 3000 status 7809.
May 23 22:43:32 socks kernel: eth0: Autonegotiation advertising 01e1 link partner
0001.
May 23 22:43:33 socks kernel: 3c59x.c:v0.99H 19May00 Donald Becker
http://cesdis.gsfc.nasa.gov/linux/drivers/vortex.html
May 23 22:43:33 socks kernel: eth1: 3Com 3c590 Vortex 10Mbps at 0x6200,
00:a0:24:cb:d2:e4, IRQ 10
May 23 22:43:33 socks kernel: 8K byte-wide RAM 1:1 Rx:Tx split, autoselect/10baseT
interface.
May 23 23:19:56 socks kernel: eth1: Transmit error, Tx status register 90.
May 23 23:20:05 socks kernel: eth1: transmit timed out, tx_status 00 status e000.
May 23 23:24:17 socks kernel: eth1: Transmit error, Tx status register 90.
May 23 23:24:25 socks kernel: eth1: transmit timed out, tx_status 00 status e000.
May 23 23:46:35 socks kernel: eth1: Transmit error, Tx status register 90.
--- 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);
}
Regards,
Anders K. Pedersen
-
To unsubscribe from this list: send the line "unsubscribe linux-net" in
the body of a message to [EMAIL PROTECTED]