[vortex] AST Bravo cannot detect 3c905B-TX (must be a PCI problem)

Donald Becker becker@scyld.com
Wed Nov 28 16:03:01 2001


On Wed, 28 Nov 2001, Alessandro Selli wrote:

> I tried to setup a LAN between two PCs, a Pentium 200 AST Bravo 5166 and
> another one I assembled mostly from refuse/second hand parts (the
> mother board is an MVP7598, VIA chipset and an AMDK6-2/400 cpu).

> I have three 3Com 3c905B-TX "Cyclone" cards.  On both computers I
> installed Debian 2.2r4, kernel 2.2.20.  The AMD computer recognizes
> the network card correctly and configures it to use io_add 0xe800 and
> irq 10, the AST just does not, as if the card was not there.

Hmmm, what does /proc/pci report about the connected devices?
Is there any message about a missing PCI table during boot-up?

> but nothing about any eth0 3Com card.  Same result when I tried to pass the
> driver the following parameters from Lilo:  ether=10,0xe800,0,0,eth0 .

There is no reason (and no way) to pass the I/O and IRQ parameters for a
PCI card.  If the driver can find the card, the driver can reliably read the
settings.  The driver cannot influence the settings.

> So I made the driver a module to load it by hand.  I read in
> http://scyld.com/network/vortex.html  that the correct parameter to pass the
> driver for a 3c905B-Tx to set its media type is:

Actually, you shouldn't need to pass a parameter.  Setting the
transceiver type shouldn't be done unless you have an unusual configuration.

> [root@obscuritas ~/problems/ethernet]# insmod 3c59x options=8
> Using /lib/modules/2.2.20/net/3c59x.o
> /lib/modules/2.2.20/net/3c59x.o: init_module: Device or resource busy

The driver actually returns ENODEV, but 'insmod' reports the wrong error
type...

> Hint: this error can be caused by incorrect module parameters,
> including invalid IO or IRQ parameters 

.. and compounds the confusion with a bogus message.


The real problem is that no card has been detected.  And with an old
motherboard, I'm guessing that the problem is somehow with the PCI table
from the BIOS.

>   I then checked the PCI bus:
> ambapali@obscuritas ~/technical-stuff>$ /sbin/lspci -vx

A good debugging step.

[[ No card reported. ]]

>   Still no trace of the 3c905B.  I go back at Donald Beckers web page,
> http://www.scyld.com/network/vortex.html, where I find his diagnostic tools:
> vortex-diag, covering the 3c905B, pci-config and mii-diag.
...
> [root@obscuritas ~/problems/ethernet]# vortex-diag
> vortex-diag.c:v2.05 5/15/2001 Donald Becker (becker@scyld.com)
>  http://www.scyld.com/diag/index.html
> Unable to find a recognized card in /proc/pci.
...
>   I try it with the port number the AMD configured its 3c905B card to use:

As you found out, that won't work -- the I/O base address is set by the
BIOS, and is different for each BIOS type and each motherboard configuration.

It's worth running 'pci-config' to see if it can find the card.
You should also check that the card is plugged into the PCI slot, and
that it's powered.

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