Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 11 May 1999 03:38:21 +0800
From:      Peter Wemm <peter@netplex.com.au>
To:        Matthew Dillon <dillon@apollo.backplane.com>
Cc:        "Pedro J. Lobo" <pjlobo@euitt.upm.es>, freebsd-hackers@FreeBSD.ORG
Subject:   Re: What is a "transmit underflow"? 
Message-ID:  <19990510193823.C9FF61F73@spinner.netplex.com.au>
In-Reply-To: Your message of "Mon, 10 May 1999 11:37:57 MST." <199905101837.LAA69281@apollo.backplane.com> 

next in thread | previous in thread | raw e-mail | index | archive | help
Matthew Dillon wrote:
> :Hi, all.
> :
> :I've got two FreeBSD boxes (3.1-R) working as routers, one with two 4-port
> :ZNYX 10/100 ethernet cards and the other with one of those cards. The
> :cards have DEC chips (21140A).
> :
> :The routers are working perfectly, but from time to time I get the
> :following messages:
> :
> :de0: abnormal interrupt: transmit underflow (raising TX threshold to 96|256)
> :de1: abnormal interrupt: transmit underflow (raising TX threshold to 96|256)
> :
> :What do they mean? Everything seems to be OK, but I'd like to know wether
> :I have to worry about this or not.
> :
> :TIA,
> :
> :	Pedro.
> :
> :Pedro José Lobo Perea                   Tel:    +34 91 336 78 19
> 
>     Don't worry about it, it happens with most tulip-based cards.  The cards
>     seem to have a hard time staging DMA but the device driver takes care
>     of it.  We have some machines that bump it all the way up to 1024.
> 
> de0: enabling 100baseTX port
> de0: enabling Full Duplex 100baseTX port
> ...
> de0: abnormal interrupt: transmit underflow (raising TX threshold to 96|256)
> ...
> de0: abnormal interrupt: transmit underflow (raising TX threshold to 8|512)
> ...
> de0: abnormal interrupt: transmit underflow (raising TX threshold to 1024)

And the next in the sequence is 'switching to store-and-forward mode'.

It's a real puzzle to me why this happens.  Take the 1024 example, the
busmaster engine fetches 1024 bytes into the 2K fifo before beginning the
packet transmission, and yet, with 1024 out of ~1500 bytes prefetched, it
still exhausts the fifo..  The transmitter has managed to send 1024 bytes
at 100mbit/sec (~10mbyte/sec) faster than the PCI bus could fetch the
remaining 512 bytes via bursting at 133mbyte/sec.

The refill should be ~13 times faster than the transmit rate and yet it gets
an underflow and chops the packet.

The only thing I can think of is that the PCI configuration is hosed and
the bus-master engine is getting completely starved for a while (latency
timers wrong?), or the chipset goes off to lala land and forgets to refill,
or something that the driver is doing to the chip is somehow stalling the
transmit process.

I think Bill Paul has found another chipset (if_mx? macronix?) that has
similar behavior.  I think I recall Bill telling me the windows dc2x4x
driver runs in store-and-forward mode always.

As a footnote, one of these cards (SMC9332BDT) is in a VIA MVP3 chipset
motherboard, with a Matrox card in a pci slot, the other system that's
having these problems is an old P5-90 SMP system and it's sharing it's
bus with an EISA bus and an AHA2742T eisa controller.

Cheers,
-Peter




To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?19990510193823.C9FF61F73>