[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/