Subject: Re: tlp problems
To: None <kpneal@pobox.com>
From: Erik E. Fair <fair@clock.org>
List: port-alpha
Date: 04/17/2003 20:50:10
At 20:06 -0400 4/17/03, kpneal@pobox.com wrote:

>So, is the important part the chip or the board it sits on? Also, is
>the 21140A different from the 21140?

We're treading right near the edge of my understanding of this stuff 
here; anything more detailed will require a response from someone 
like Jason Thorpe (who wrote the tlp driver), or someone else who has 
written other Ethernet drivers (and I would appreciate corrections to 
what I write here by someone who knows better). I went diving into 
the world of the Media Independent Interface (MII) and the associated 
PHYsical interfaces last fall when I was trying to debug a problem 
with the sip(4) driver for the SiS 900 10/100 Ethernet chip.

The two things that seem to matter are the Ethernet chip, and the 
PHY. The PHYs typically (but not always) live on the MII, behind 
Ethernet chips that support them, so at boot time, we probe various 
system busses, we find Ethernet chips, and if those chips support 
MII, we probe the MII behind the chip, looking for PHYs to attach 
with specific PHY drivers, or with the generic PHY driver ukphy(4). 
There can be up to 32 PHYs per MII; the basic idea is that you have 
one PHY for each medium your interface can connect to (e.g. AUI, 
thinnet, etc.) and then you can select in software which physical 
interface you actually shoot packets through.

DEC made the "tulip" Ethernet chips (DECchip 21040 (10Mb/s), 21140 
(10/100), and 21143 (10/100)). My understanding based on the behavior 
I see is that the particular PHY paired with the chip determines 
things like whether the board supports 10base-2, 10base-5, 10base-T, 
100base-TX, 100base-T4, 100base-FX, and low-level things like Nway 
(802.3u) negotiation).

I bought a lot of Ethernet boards with tulip chips in them (thank 
you, eBay) after listening to the groans and curses at all the "PNIC" 
knock-offs (Macronix, Lite-On Communications, etc). Apparently the 
tulip was so good that everyone wanted it, and when DEC's fab 
couldn't keep up with demand, the licensed the design. Alas, it seems 
that each of the licensees decided to put their own stamp on the 
design, and each broke it in their own unique ways (reading drivers 
can be quite  enlightening in this way; most programmers I know do 
not pull punches when it comes to their opinions of hardware...).

What I found is that, main chip aside, some PHYs liked my switches 
(Dlink DSS-8, Netgear FS108) and immediately negotiated 100base-TX 
with FDX, and some couldn't or wouldn't negotiate FDX. I've also revs 
of the 21140 from -AA to -AF, and revs of the 21143 mostly being -PC 
and -PD. I have no idea what changed from rev to rev; you'd have to 
poke the remnants of DEC Microelectronics (now part of HP? Or Intel? 
I'm not sure) for the actual changes they made - they all seem to 
work equally well for the uses I've put them all to. An assortment of 
the different boards I bought is now on loan and in the hands of the 
current maintainer of the tlp driver, via Jason Thorpe, for the 
purpose of testing the tlp driver against them to handle a wider 
range than just the DEC DE500 variants (e.g. Zynx, Cogent, Asante).

There is an issue with the 21143, in that it has its own internal 
PHY, which, alas, does not present itself on the MII - you have to do 
different things to access it. A design mistake from the programmer's 
point of view, and it lead to complications in the tlp driver to 
handle that case.

Does this answer your questions?

	Erik <fair@clock.org>