[vortex] 3c59x, 3c90x and RedHat 7.2

Paton J. Lewis pjl@symbolcraft.com
Wed Feb 13 04:14:00 2002


I just upgraded from RedHat 6.0 to 7.2, and was not too surprised to find 
that the scyld 3c59x driver had stopped working since many things have changed.

I downloaded the latest version of the 3c59x driver, compiled it and ran 
insmod, but insmod reports about forty unresolved symbols, starting with 
pci_write_config_byte. Perhaps that driver has not yet been updated to 
support the 2.4.x kernel?

I swapped my 3c59x network card out with a 3c905b-combo, downloaded the 
3c90x driver from 3Com and compiled it with no warnings or errors. I then 
ran "insmod 3c59x.o media_select=1". The module seems to load correctly (no 
unresolved symbols), and "ifconfig eth0 up" appears to work fine, but no 
network comes up. (insmod without the media_select parameter has the same 
effect).

I compiled the debug version and after examining 3c90x.c and 
/var/log/messages I have the following problems:

1) The driver appears to load successfully, but the network is unreachable. 
The only message in /var/log/messages which appears to indicate failure is 
"WaitAsicReady: timeout".

2) At the end of the function GlobalReset (at the bottom of 3c90x.c, 
version 1.0.2) if the count==100000 an error message ("WaitAsicReady: 
timeout") is displayed. However, no error condition is returned in this 
case as it was in a similar case further above in this function. Is this a 
bug? In other words, should

     DBGPRINT_INITIALIZE(("count of EEPROM Data is :%ld\n", count));
     if (count == 100000) {
		DBGPRINT_ERROR(("WaitAsicReady: timeout\n"));
     }

     return NIC_STATUS_SUCCESS;

be

     DBGPRINT_INITIALIZE(("count of EEPROM Data is :%ld\n", count));
     if (count == 100000) {
		DBGPRINT_ERROR(("WaitAsicReady: timeout\n"));
		return NIC_STATUS_FAILURE;
     }

     return NIC_STATUS_SUCCESS;

3) However, the return value from GlobalReset is never checked in NICOpen. 
Since it appears that GlobalReset is failing with my card, perhaps NICOpen 
should bail out if GlobalReset fails?

I tried increasing from 100000 to 1000000 the number of iterations that 
GlobalReset would wait for EEPROM data register 0xe000. No luck.

Increasing NIC_DELAY from 10 to 100 in that same loop eliminates the 
problem where strings over-write each other in /var/log/messages, but still 
no network.

At this point I would be grateful for any suggestions that anyone on this 
list might have. Hopefully I'm missing something obvious and it's just my 
lack of Linux experience that's impeding me.

Thanks for your attention,
Pat

----------------------------------------
http://symbolcraft.com/pjl/