eth0: Transmit error, Tx status register 82.
Michael Packer
pac@stingrayboats.com
Thu Oct 7 07:23:19 1999
This is a multi-part message in MIME format.
------=_NextPart_000_0037_01BF1094.550A3600
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
I have attached to this a patch that I found somewhere on the web....
this fixed the problem for me...
--
Michael Packer -- Stingray Powerboats -- http://www.stingrayboats.com
Visit here to make money while surfing the web!
http://alladvantage.com/go.asp?refid=ATA568
----- Original Message -----
From: Andrew Lauder <admin@neuimage.com>
To: <linux-vortex-bug@cesdis1.gsfc.nasa.gov>
Sent: Wednesday, October 06, 1999 6:34 PM
Subject: eth0: Transmit error, Tx status register 82.
> I have a DEC Alpha 21064A Cabriolet box, running redhat 6.0 axp, and
I
> continue to get this error in my syslog.
>
> eth0: Transmit error, Tx status register 82.
>
> If something is wrong, what can I do to fix it, should I just not
worry
> about it?
>
> Thanks
> -Andy Lauder
> admin@neuimage.com
>
------=_NextPart_000_0037_01BF1094.550A3600
Content-Type: text/plain;
name="TX-problem.txt"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
filename="TX-problem.txt"
=0A=
Re: Transmit Errors??!=0A=
=0A=
Bill Paul (wpaul@ctr.columbia.edu)=0A=
Thu, 22 Oct 1998 16:44:13 -0400 (EDT)=0A=
=0A=
The transmit error codes for the 3c905B are as follows:=0A=
=0A=
/*=0A=
* TX status codes=0A=
*/=0A=
#define XL_TXSTATUS_RECLAIM 0x02 /* 3c905B only */=0A=
#define XL_TXSTATUS_OVERFLOW 0x04=0A=
#define XL_TXSTATUS_MAXCOLS 0x08=0A=
#define XL_TXSTATUS_UNDERRUN 0x10=0A=
#define XL_TXSTATUS_JABBER 0x20=0A=
#define XL_TXSTATUS_INTREQ 0x40=0A=
#define XL_TXSTATUS_COMPLETE 0x80=0A=
=0A=
The value is in hex, so 0x82 really means both 0x80 (transmit =
complete)=0A=
and 0x02 (reclaim error). A reclaim error means that a transmission =
error=0A=
(most likely too many collisions) was detected after part of the =
transmit=0A=
FIFO was already reclaimed. In other words, the chip had already=0A=
transmitted the packet and was in the process of flushing it from its=0A=
memory when it noticed the error.=0A=
=0A=
Note that there is a special command to set the transmit reclaim=0A=
threshold:=0A=
=0A=
#define XL_CMD_SET_TX_RECLAIM 0xC000 /* 3c905B only */=0A=
=0A=
There is also a register in register window 5 for reading the current=0A=
transmit reclaim threshold setting:=0A=
=0A=
/*=0A=
* Window 5=0A=
*/=0A=
#define XL_W5_STAT_ENB 0x0C=0A=
#define XL_W5_INTR_ENB 0x0A=0A=
#define XL_W5_RECLAIM_THRESH 0x09 /* 3c905B only */=0A=
#define XL_W5_RX_FILTER 0x08=0A=
#define XL_W5_RX_EARLYTHRESH 0x06=0A=
#define XL_W5_TX_AVAILTHRESH 0x02=0A=
#define XL_W5_TX_STARTTHRESH 0x00=0A=
=0A=
As the comments suggest, only the 3c90xB 'cyclone' chips have this=0A=
feature: it's not available on the older 3c90x 'boomerang' series.=0A=
This means the error can only happen on 3c900B or 3c905B (or 3c980)=0A=
adapters.=0A=
=0A=
=0A=
You can try to reduce these errors by increasing the transmit reclaim=0A=
threshold. This should probably be done in the vortex_open() function.=0A=
I don't have a Linux system available so I can't really generate a=0A=
=0A=
working source patch for the driver, but here's something which should=0A=
work:=0A=
=0A=
=0A=
- In the 3c59x.c source file, find the vortex_open() routine. Near the=0A=
end, you should see the following code:=0A=
=0A=
[...]=0A=
if (vp->full_bus_master_tx) { /* Boomerang bus master Tx. */=0A=
dev->hard_start_xmit =3D &boomerang_start_xmit;=0A=
vp->cur_tx =3D vp->dirty_tx =3D 0;=0A=
outb(PKT_BUF_SZ>>8, ioaddr + TxFreeThreshold); /* Room for a packet.=0A=
*/=0A=
[...]=0A=
=0A=
- Immediately after the outb(), add the following lines:=0A=
=0A=
/* Jack up the tx reclaim threshold. */=0A=
#define XL_CMD_SET_TX_RECLAIM 0xC000=0A=
outw(XL_CMD_SET_TX_RECLAIM|(PKT_BUF_SZ>>4), ioaddr + EL3_CMD);=0A=
=0A=
Ideally, this should only be done if the adapter is a 3c90xB, so there=0A=
should be some test to check the card type and only set the reclaim=0A=
threshold if the chip is a cyclone. For now though, this is just a =
kludge=0A=
to deal with your particular situation. Try modifying your copy of the=0A=
driver code, recompile the driver and see if this makes any=0A=
difference.=0A=
=0A=
-Bill=0A=
=0A=
--=0A=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=0A=
-Bill Paul (212) 854-6020 | System Manager, Master of Unix-Fu=0A=
Work: wpaul@ctr.columbia.edu | Center for Telecommunications =
Research=0A=
Home: wpaul@skynet.ctr.columbia.edu | Columbia University, New York City=0A=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=0A=
"Mulder, toads just fell from the sky!" "I guess their parachutes didn't=0A=
open."=0A=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=0A=
=0A=
=0A=
------=_NextPart_000_0037_01BF1094.550A3600--