[vortex] The mysteries of on-chip MII.

Bogdan Costescu bogdan.costescu@iwr.uni-heidelberg.de
Mon Mar 25 10:59:25 2002


On Sat, 23 Mar 2002, Bill Cattey wrote:

> Having set EEPROM location 0x000d to the toxic 0x0160 value
> here are our results:

To answer your previous post, 0x0160 means "use autoselect+MII", while 
0x0180 means "use autoselect+NWAY". "use MII" is a relict value from the 
older cards (up to and including Boomerang), so having the card not 
activate the on-chip transceiver in this case is somehow understandable.
I'm a bit surprised that the 3c90x driver (if it's the 3Com one) does this 
as it was supposed to only support Cyclone and later chips where "use MII"
(=6) doesn't make sense, the right value for external MII transceivers is 
9 (if it makes sense at all to use this as default media...)

> Many errors in dmesg output of the form:
>  Rx error: status 8c.
>  Rx error: status 08.

They mean:
08 - crcError
8c - dribbleBits, crcError and alignmentError

dribbleBits is tagged as informative only.

I haven't seen such errors before, but I guess that they are caused by 
a duplex mismatch.

>  I'm advertising 0501: Flow-control 100baseTx-FD

But that's not quite what I expected, I expected 10baseT-FD to be there as 
well. Did you play with 'mii-diag -A' ?

OK, so you say that restarting the autonegotiation fixes the problem. Hmm, 
this is good news for getting this type of cards to work, but we can't do 
it for the general case: leaving the link alone when the driver comes up 
was introduced in the driver some months ago and supposed to be the proper 
thing to do. So maybe it's time for a new module option to request 
restarting of the autonegotiation in _up/_open; actually, immediately 
after this modification was made to the driver, I posted a message 
explaining some problems that I had where restarting autonegotiation might 
have helped; see this message and the rest of the thread:

http://www.scyld.com/pipermail/vortex-bug/2001-July/000997.html

Can somebody else please confirm or infirm my judgement ?

Another option might be to do the restart only when all these conditions 
are met:
 - the card is a Cyclone or newer
 - EEPROM media is set to 10baseT, 100baseTx or MII (=6) - but not to
AUI, FX, T4 and external MII (=9); we also don't do it when EEPROM media 
is set to Autonegotiate - in this case the card is supposed to come up 
properly
 - EEPROM media Autoselect bit is set; this is the ideal case, to let 
people who really know what they are doing... wrong 8-)) get the desired 
media.
 - media related module options are missing or "force" autonegotiation

So people (like me 8-)) who make sure that the EEPROM media setting says 
"Autonegotiate" (with or without Autoselect bit turned on) are unaffected.
This would however not solve the problem mentioned in the above thread, 
maybe we should have a module option anyway...

-- 
Bogdan Costescu

IWR - Interdisziplinaeres Zentrum fuer Wissenschaftliches Rechnen
Universitaet Heidelberg, INF 368, D-69120 Heidelberg, GERMANY
Telephone: +49 6221 54 8869, Telefax: +49 6221 54 8868
E-mail: Bogdan.Costescu@IWR.Uni-Heidelberg.De