[tulip] tulip-diag updating EEPROM on Osicom

Donald Becker becker@scyld.com
Fri Jan 10 08:50:00 2003


On Fri, 10 Jan 2003, Edmond E. Shwayri wrote:

> I ran into an interesting "problem" and I was hoping someone would have an 
> answer.  First the history :
> 
> I have an Osicom 4 port card.  I have used the card in Linux for a few 
> years now.  It has worked well.   6 months ago I hooked up a hub to one of 
> the Osicom ports and I found that the "Autosense" wasn't working 
> right.

What driver version?
What was the detection message?

...
> asked tulip-diag to dump out the eeprom for the 4 ports.  The port that was 
> working looked like this :
> 
> tulip-diag.c:v2.09 1/28/2002 Donald Becker (becker@scyld.com)
>   http://www.scyld.com/diag/index.html
> Index #2: Found a Digital DS21140 Tulip adapter at 0xa400.
...
> Leaf node at offset 30, default media type 0800 (Autosense).
...
>    21140 Non-MII transceiver for media 3 (100baseTx).
>     CSR12 control port setting 0x01, command 00 0x6d.
>     Media detection by looking for a 1 on bit 6 of the CSR12 control port.

OK, you have a 21140 with a SYM transceiver.
This is an old board cannot do autonegotiation.
By default the driver should sense the link speed and switch to that
media type in standard (half duplex) mode.

> The one port that was not working looked like :
> 
> tulip-diag.c:v2.09 1/28/2002 Donald Becker (becker@scyld.com)
> Index #1: Found a Digital DS21140 Tulip adapter at 0xa000.
> Leaf node at offset 30, default media type 0203 (100baseTx).

What was the driver detection message?

> So, I used tulip-diag and told that port to switch from 203 back 800 for 
> media (its original setting before I played with it).  Once I did that the 
> tulip-diag after the change was :

The interface must be up for the link selection to take place.

> all 4 ports show up as working.  The question is why?  Could be the 
> auto-sense / fixed media; however, what is more striking is the Full 
> Contents CRC.
> Before the switch back to the original 800 :
> Full contents CRC 0x29e0 (read as 0xbb5d).
> After the switch :
> Full contents CRC 0xbb5d (read as 0xbb5d).
> So, what it looks like is that tulip-diag doesn't change the CRC when it 
> updates a setting.  The Windows driver could very well be looking at the 
> CRC and saying, ooops corrupt eeprom - don't load port.  Isn't there any 
> way to update CRC when one updates a setting?

The 'tulip-diag' does not update the CRC.
Some boards don't follow the defined format, and it seems safer to only
change the single specific field that the user requests.

It would be easy to add the code to write the CRC only if the previous
value was correct, but I'll have to think if this might break other
boards.


-- 
Donald Becker				becker@scyld.com
Scyld Computing Corporation		http://www.scyld.com
410 Severn Ave. Suite 210		Scyld Beowulf cluster system
Annapolis MD 21403			410-990-9993