Subject: QUESTION ABOUT IF_ED DRIVER FOR I386
To: None <tech-kern@NetBSD.ORG>
From: Brian Buhrow <buhrow@cats.ucsc.edu>
List: port-i386
Date: 07/24/1996 17:09:10
	Hello NetBSD users.  I'm running a very old NetBSD 0.9A machine which
has a generic (Actually Diamond Flowers Industries) NE2000 clone in it. If
I put a lot of traffic through the card, the chip jams, and I get the
message:
ed2: nic remote transmit dma failed to complete.
If the error condition persists, I can also see the message:
ed2: NIC memory corrupt, - invalid packet length (some number)

	These messages would be a mere annoyance if it weren't for the fact that 
if I see the transmit failed to complete message, I will also often see the
freezing of my current telnet session.  After some investigation, we found
that the machine is still sending the packet over and over again that
presumably didn't go out right the first time it was sent, however, it has
since scribbled all over the packet, at least the data portion of the
packet, yielding the TCP checksum wrong. 
	After reading through the code in ip_output.c, it looks like we never 
retry sending out a packet if it makes it down to the ethernet output
routine without first mfreeing the mbufs which make up the packet.  I could
see us getting invalid packets if we're sending out reused mbufs.  In
addition, I looked through the bugs database, and found no mention of
corrupted buffers with respect to ethernet cards.  So I presume this bug
has not been fixed.

	If anyone can shed light on this problem, or has suggestions on what to
look at what happens when a packet doesn't make it out the ethernet port the first time
for some hardware reason, I'd be most appreciative.

-thanks
-Brian

P.S.  I can send more information, such as a detailed trace of an example
session if anyone is interested.