sis900 ethernet driver problem in kernel 2.4.x

From: Michael JAKOB
Date: Sat Feb 28 2004 - 16:19:20 EST


Hello there,

the sis900 ethernet driver (revision 1.08.06, Sep 24 2002) fails to read
the card's MAC address with certain current chipsets. It seems that SiS
introduced new variants of their 962/963 chipsets, called 962L and 963L;
the only obvious difference to the standard versions is that the IEEE
1394a firewire controller has been removed. My motherboard uses the
963L; the PCI IDs are vendor 0x1034, device 0x900, revision 0x91, which
is exactly the same as for the standard 963, and so the driver identifies
it as the latter. The 962/963 have an EEPROM (which is shared with the
firewire controller), and the MAC address must be read from there.
However, it looks like this EEPROM is not present in the 963L (all reads
just return 0xFFFF words), and so the MAC address is detected as
FF:FF:FF:FF:FF:FF (which corresponds to the broadcast address, so some
things like ping actually work...) The correct procedure to obtain the
MAC address is the one from sis635_get_mac_addr(); at least this is what
works for my hardware.

Sorry, I can't provide a patch, since I'm not sure what the best way is
to distinguish between the 963 and 963L chipsets. One possibility is to
try the EEPROM approach first, check whether it returns a valid result,
and call sis635_get_mac_addr() otherwise (but there might be other
reasons why the EEPROM read fails on a real 963?) Alternatively, one
might do a PCI scan to check whether the firewire interface is present
(I can't test that since I only have the version without.)

BR,

Michael
-
To unsubscribe from this list: send the line "unsubscribe linux-net" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html