More definitive results as to the Linksys 10/100 problems

Brian Denheyer briand@deldotd.com
Sat Feb 6 14:37:49 1999


OK. I _think_ it's official, there is a bug hiding in the driver or
the 82C169.  Here's why I think so :

When running netpipe or netperf the system does one of two things :

1. the transfers STOP in the middle of the test.  That's right,
   complete with warnings about "the transmitter stopped". Gotta
   reload the driver.

2. The box sending the packets gets an "ethernet frame too large"
   error and the ethernet interface becomes very flaky and pretty much
   unusable.  Gotta reload the driver.

My set-up : I have two machines (FIC and ASUS motherboards).  Both are
runnning 2.0.36 kernels.  I have swapped cards between the systems.  I
have swapped (the crossover) cables.

The nail in the coffin : My friend brought over 2 Samsung 1200TX cards
which use the real DEC21141 controller.  We put them in the system,
used the exact same 0.90k driver which I have been using with the
linksys cards, ran netpipe and netperf in both directions without a
single problem and with transfer rates of 90-95Mbits/s.

*** The linksys cards do NOT work properly with the 0.90k (or 0.90f)
*** driver ! To be more specific, a linksys etherfast 10/100 cards with
*** an LC82C169, datecode 9836 does not not work properly with the
*** 0.90k(0.90f) drivers.

The only possibility now is that one of the cards is bad, highly
doubtful since they will work for a while before dying.

At the end of the e-mail I have provided some additional debugging
information with regards to the frame-size problem.  It doesn't seem
to point me in any particular direction, I was hoping someone could
take a look and provide additional interpretation, and maybe let me
know in what direction to proceed.

Here is my plan. I'm going to order a couple of samsung cards and toss
these linksys cards in the junk-heap (I can't find my damn
receipt). However, until I get the new cards, I can keep working on
the problem if I can continue to get guidance on things to try.  I
know hardware but I don't know ethernet.  I figure by Thursday I'll
have the new cards and then that's the end of this annoying
experience.

Donald, you've got a lot of patience to have gotten all this sh*t
working with buggy docs and buggy chips !

Of course, Lite-On could pay me to figure out what's wrong :-)

Brian

Here's a data dump of the descriptors from one of the many failed
attempts to get these things to work.  As Bill Paul pointed out the
status for entry 16 is almost totally meaningless, something has
really broken :

Feb  6 02:39:07 soggy kernel: eth0: Oversized Ethernet frame spanned multiple buffers, status 26cca300! 
Feb  6 02:39:07 soggy kernel: cur_rx = 166960 entry = 16. 
Feb  6 02:39:07 soggy kernel: csr5 = 02660010 csr6 = 812e2202. 
Feb  6 02:39:07 soggy kernel: Dump of rx_ring descriptors. 
Feb  6 02:39:07 soggy kernel: entry:0 status = 80000000 length = 00000600 bufffer1 = 01e16820 buffer2 = 00082830 
Feb  6 02:39:07 soggy kernel: Dump of rx_ring descriptors. 
Feb  6 02:39:07 soggy kernel: entry:1 status = 80000000 length = 00000600 bufffer1 = 03d8c028 buffer2 = 00082840 
Feb  6 02:39:07 soggy kernel: Dump of rx_ring descriptors. 
Feb  6 02:39:07 soggy kernel: entry:2 status = 80000000 length = 00000600 bufffer1 = 03d8c820 buffer2 = 00082850 
Feb  6 02:39:07 soggy kernel: Dump of rx_ring descriptors. 
Feb  6 02:39:07 soggy kernel: entry:3 status = 80000000 length = 00000600 bufffer1 = 00f46028 buffer2 = 00082860 
Feb  6 02:39:07 soggy kernel: Dump of rx_ring descriptors. 
Feb  6 02:39:07 soggy kernel: entry:4 status = 80000000 length = 00000600 bufffer1 = 00f46820 buffer2 = 00082870 
Feb  6 02:39:07 soggy kernel: Dump of rx_ring descriptors. 
Feb  6 02:39:07 soggy kernel: entry:5 status = 80000000 length = 00000600 bufffer1 = 016e1028 buffer2 = 00082880 
Feb  6 02:39:07 soggy kernel: Dump of rx_ring descriptors. 
Feb  6 02:39:07 soggy kernel: entry:6 status = 80000000 length = 00000600 bufffer1 = 016e1820 buffer2 = 00082890 
Feb  6 02:39:07 soggy kernel: Dump of rx_ring descriptors. 
Feb  6 02:39:07 soggy kernel: entry:7 status = 80000000 length = 00000600 bufffer1 = 01d6f028 buffer2 = 000828a0 
Feb  6 02:39:07 soggy kernel: Dump of rx_ring descriptors. 
Feb  6 02:39:07 soggy kernel: entry:8 status = 80000000 length = 00000600 bufffer1 = 01d6f820 buffer2 = 000828b0 
Feb  6 02:39:07 soggy kernel: Dump of rx_ring descriptors. 
Feb  6 02:39:07 soggy kernel: entry:9 status = 80000000 length = 00000600 bufffer1 = 01f09028 buffer2 = 000828c0 
Feb  6 02:39:07 soggy kernel: Dump of rx_ring descriptors. 
Feb  6 02:39:07 soggy kernel: entry:10 status = 80000000 length = 00000600 bufffer1 = 01f09820 buffer2 = 000828d0 
Feb  6 02:39:07 soggy kernel: Dump of rx_ring descriptors. 
Feb  6 02:39:07 soggy kernel: entry:11 status = 80000000 length = 00000600 bufffer1 = 02e4f028 buffer2 = 000828e0 
Feb  6 02:39:07 soggy kernel: Dump of rx_ring descriptors. 
Feb  6 02:39:07 soggy kernel: entry:12 status = 80000000 length = 00000600 bufffer1 = 02e4f820 buffer2 = 000828f0 
Feb  6 02:39:07 soggy kernel: Dump of rx_ring descriptors. 
Feb  6 02:39:07 soggy kernel: entry:13 status = 80000000 length = 00000600 bufffer1 = 006bc028 buffer2 = 00082900 
Feb  6 02:39:07 soggy kernel: Dump of rx_ring descriptors. 
Feb  6 02:39:07 soggy kernel: entry:14 status = 80000000 length = 00000600 bufffer1 = 006bc820 buffer2 = 00082910 
Feb  6 02:39:07 soggy kernel: Dump of rx_ring descriptors. 
Feb  6 02:39:07 soggy kernel: entry:15 status = 80000000 length = 00000600 bufffer1 = 033a2028 buffer2 = 00082920 
Feb  6 02:39:07 soggy kernel: Dump of rx_ring descriptors. 
Feb  6 02:39:07 soggy kernel: entry:16 status = 26cca300 length = 00000600 bufffer1 = 033a2820 buffer2 = 00082930 
Feb  6 02:39:07 soggy kernel: Dump of rx_ring descriptors. 
Feb  6 02:39:07 soggy kernel: entry:17 status = 00400300 length = 00000600 bufffer1 = 018dd028 buffer2 = 00082940 
Feb  6 02:39:07 soggy kernel: Dump of rx_ring descriptors. 
Feb  6 02:39:07 soggy kernel: entry:18 status = 80000000 length = 00000600 bufffer1 = 018dd820 buffer2 = 00082950 
Feb  6 02:39:07 soggy kernel: Dump of rx_ring descriptors. 
Feb  6 02:39:07 soggy kernel: entry:19 status = 80000000 length = 00000600 bufffer1 = 0336f028 buffer2 = 00082960 
Feb  6 02:39:07 soggy kernel: Dump of rx_ring descriptors. 
Feb  6 02:39:07 soggy kernel: entry:20 status = 80000000 length = 00000600 bufffer1 = 0336f820 buffer2 = 00082970 
Feb  6 02:39:07 soggy kernel: Dump of rx_ring descriptors. 
Feb  6 02:39:07 soggy kernel: entry:21 status = 80000000 length = 00000600 bufffer1 = 01802028 buffer2 = 00082980 
Feb  6 02:39:07 soggy kernel: Dump of rx_ring descriptors. 
Feb  6 02:39:07 soggy kernel: entry:22 status = 80000000 length = 00000600 bufffer1 = 01802820 buffer2 = 00082990 
Feb  6 02:39:07 soggy kernel: Dump of rx_ring descriptors. 
Feb  6 02:39:07 soggy kernel: entry:23 status = 80000000 length = 00000600 bufffer1 = 0256d028 buffer2 = 000829a0 
Feb  6 02:39:07 soggy kernel: Dump of rx_ring descriptors. 
Feb  6 02:39:07 soggy kernel: entry:24 status = 80000000 length = 00000600 bufffer1 = 0256d820 buffer2 = 000829b0 
Feb  6 02:39:07 soggy kernel: Dump of rx_ring descriptors. 
Feb  6 02:39:07 soggy kernel: entry:25 status = 80000000 length = 00000600 bufffer1 = 02de3028 buffer2 = 000829c0 
Feb  6 02:39:07 soggy kernel: Dump of rx_ring descriptors. 
Feb  6 02:39:07 soggy kernel: entry:26 status = 80000000 length = 00000600 bufffer1 = 02de3820 buffer2 = 000829d0 
Feb  6 02:39:07 soggy kernel: Dump of rx_ring descriptors. 
Feb  6 02:39:07 soggy kernel: entry:27 status = 80000000 length = 00000600 bufffer1 = 01cb9028 buffer2 = 000829e0 
Feb  6 02:39:07 soggy kernel: Dump of rx_ring descriptors. 
Feb  6 02:39:07 soggy kernel: entry:28 status = 80000000 length = 00000600 bufffer1 = 01cb9820 buffer2 = 000829f0 
Feb  6 02:39:07 soggy kernel: Dump of rx_ring descriptors. 
Feb  6 02:39:07 soggy kernel: entry:29 status = 80000000 length = 00000600 bufffer1 = 02d29028 buffer2 = 00082a00 
Feb  6 02:39:07 soggy kernel: Dump of rx_ring descriptors. 
Feb  6 02:39:07 soggy kernel: entry:30 status = 80000000 length = 00000600 bufffer1 = 02d29820 buffer2 = 00082a10 
Feb  6 02:39:07 soggy kernel: Dump of rx_ring descriptors. 
Feb  6 02:39:07 soggy kernel: entry:31 status = 80000000 length = 02000600 bufffer1 = 02967028 buffer2 = 00082820