[tulip] Tulip driver hangs detecting MAC

Donald Becker becker@scyld.com
Wed Nov 6 11:23:08 2002


On Wed, 6 Nov 2002, Bernardo Reino wrote:

> I have a Compaq Presario 17XL573 laptop, with a 'Conexant LANfinity'
> network card (14f1/1803, rev 08).
> 
> It works correctly using the netdrivers.tgz package from Donald
> Becker (pci-scan.c v1.10 7/13/2002, and tulip.c v0.95b 8/2/2002),
> using the 2.4.19 kernel version (compiled with gcc 2.95.3, like
> the tulip module) but only when I start the computer from a power-off
> state.
...
> (I don't know why the BIOS doesn't enable the NIC, and I can't
> seem to change that, but that doesn't seem to be a/the problem..)

It's not a problem -- the pci-scan code activates the card.  The Linux
kernel didn't activate the card until recent versions.  The message
is there to indicate that pci-scan did a good thing.

> The problem is that when I reboot Linux, or reboot from Windows 2000
> to Linux, the initialization hangs before displaying the MAC address,
> so I get something like this:

That's new.

> eth0: Conexant LANfinity rev 8 at 0xd0877000, [ HERE IT LOCKS ]
>
> I have tried waiting for a reasonable amount of time (5 minutes..),
> but it seems to stop responding to anything. All I can do is turn
> off the computer (btw. I can use the kernel 'magic' sequence for
> that, so the kernel is itself not being locked, but only the
> driver initialization)

Is

> And 'tulip-diag' (v2.11 6/7/2002), with option '-a' shows:

What does 'tulip-diag -ee' report in the situation where the driver
would hang if loaded.  (This likely means disabling the automatic driver
loading.)

> # tulip-diag  -ee
> EEPROM 256 words, 8 address bits.
> Conexant EEPROM format is undocumented.
> EEPROM contents (256 words):
> 0x00:  1815 14f1 0780 0000 0000 1002 0042 0e11
> 0x08:  2814 0000 0000 0000 0000 0000 c1af 0313
...
> I hope somebody can tell me what the problem might be, or how
> to fix it. It appears that the Conexant EEPROM format is not
> documented,

That's not a problem.  Reading the station address from the EEPROM is
the only thing required.  The address location is trivial to
reverse-engineer once you can read the EEPROM.

> I will try to add a few printk()'s here and there, to try to
> locate the problem more precisely..

Almost all driver debugging is done with the 'printk' debugger...

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