PATCH 2.2.15-pre15: tulip fix for 21041 chips

Donald Becker becker@scyld.com
Fri Mar 24 15:53:52 2000


On Fri, 24 Mar 2000, Hal Murray wrote:

> > It typically takes 60 minutes for a 10-only and 90 minutes for 
> > a 10/100 card to test a change to driver transceivers setting.  You 
> > will want it to *power off* the machine to make certain the residual 
> > settings don't keep a driver working -- the reset signal doesn't 
> > go to all board areas. 
> 
> You said "60 minutes". 
..
> Did "change to driver transceivers setting" mean change to the code 
> that sets those bits?  And "60 minutes" refer to running through 
> a set of tests by hand?

It certainly doesn't take 60 minutes for the driver to change media types.
I meant that it takes that long to do just a transceiver test by hand.

I know that seems like a long time, and it doesn't *feel* that long when I'm
doing it, but I've casually timed it.  (I frequently do this.  I habitually
timed how long it took me to reach each landmark on my old 30 mile drive to
work.  But, like any programmer, I mentally discard rather than average
unusual delays or diversions.  And I stop timing after turning off the car
rather than actually arriving at my destination, so using the timing in my
subsequent schedule always results in being a few minutes late. )

It has taken me most of a day to run through tests of a single Tulip board
type.  The D-Link board, with the bogus transceiver default wiring, was a
special pain.  The transceiver selects its power-up configuration with
external biasing resistors, and they had configured it to 10baseT-HD-only.
It used a new (at the time) Level One transceiver, which had its own quirks.
It actually took a about a week to change the driver to work reasonably, and
I spent the final days just testing "frozen" code.

I usually do only a few from-power-on tests, checking only 10 and 100,
unless I suspect that there is a special reset sequence.  Waiting a few
minutes each of the dozen times needed to test all power-on-reboot
combinations is pretty distracting.

> If so, do you have a list of the tests?  Or is it as simple as plug 
> it into one of everything and verify that it gets the right answer?

No.  You have switch types while in active use.  So you can't set up a
script to do it.

I do have a script that looks like

________________
mii-diag -F 100baseTx
sleep 4
ping -c 4 $(desthost)
mii-diag -F 10baseT
sleep 4
ping -c 4 $(desthost)
...
mii-diag -A 0x01d0
mii-diag -A 0x01d0 -R
sleep 4
ping -c 4 $(desthost)
... and so on.
________________

But this script should really be C program that measures how long it takes for
communications to be re-established with every transition.
Does anyone want to write it?

We also need a user-level multicast filter test.  I currently add in some
ad-hoc code to the driver itself during development.  This puts the device
into loopback mode and tests the filter accept and reject bit-by-bit.
This is ugly code, and a PITA to run, so I strip that code out before
release.  After that the multicast functionality is only indirectly tested.

A proper test program would both sample random addresses and know about the
common multicast filter hardware implementations to test the corner cases.
(Most filters are 8390-like, because they started from a 8390 clone design.)

Donald Becker
Scyld Computing Corporation, becker@scyld.com

-------------------------------------------------------------------
To unsubscribe send a message body containing "unsubscribe"
to linux-tulip-request@beowulf.org