[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: 3C509B



>> I have just installed Redhat 6.2 and it is failing to see my ethernet card.
>> the card is 3com 3C509B. I have tried probing it but not seen still. Anybody
>> aware of compatibility issue of redhat 6.2 with this card??

> You could also try the lspci command to list all PCI
> devices if it is a pci device and see whether it can be seen by the
> system.

> Try looking for the 3c59x.o or 3c5xx.o modules in your
> /lib/modules/2.2.x/net folder. If it's not available, you may need to
> recompile your kernel with the modules.

Many problems with the 3C509B stem from the card being very flexible
and often misunderstood.
The 3C509B is an ISA card (hence lspci probably won't work), that can
be configured in two ways:
A. 3com-specific probing mechanism (3C509 and 3C509B)
B. PNP probing mechanism (3C509B only)

The 3com-specific mechanism is based on sending a specific sequence
of bytes to port 0x100. After the sequence has been sent, the driver
code can read out the MAC address, I/O port and IRQ settings as stored
in the EEPROM, and a few other things. The mechanism is also used to 
configure the card for a specific I/O port and interrupt and activate 
the card.
In case multiple cards are installed, the mechanism even allows 
the driver to select the cards individually.
I note that, in contrast to ISA NE2000 clones, the 3C509(B) doesn't
automatically occupy the I/O ports set by the EEPROM. This is a driver
function, and drivers can (and our drivers do!) use different addresses,
so that you don't need to mess with DOS setup programs to set up
the card.
(BTW, media selection, 10BASE-T, BNC or AUI, is just an EEPROM setting too)

The other method, PNP, looks a bit like the 3com-specific probing,
but works differently and isn't specific to 3com cards as it's a late
industry standard: other cards, like sound cards and the like, use it too.

It is possible that a 3C509 driver tries to find cards using 
both mechanisms, 3com-specific and PNP. This has the potential problem
that a card can be recognized both in PNP mode and in 3com-specific mode.
Potentially, the same card could be recognized *twice*. To avoid that,
the 3com-specific probing is disabled if a successful PNP configuration
has taken place.

Many problems stem from the fact that a newer BIOS may set PNP resources,
and the linux 3C509 driver doesn't (didn't?) support the card in PNP mode.
Hence, the BIOS also disables the 3com-specific probing mechanism and
the 3C509 driver ends up empty-handed.
As far as I can tell, the linux driver also wants to use the I/O port
and interrupt as set in the EEPROM, and fails if they are in use.
(our driver doesn't have these problems, but then again, it's not linux ;-)

So there are a couple of things you should try:
1. Using the 3com setup program, set the card to I/O ports/interrupts that
   you know are free. For the interrupt, set it to 'legacy/ISA' in BIOS
   setup if you can so that it doesn't get used for PCI devices.
2. To avoid the problems with linux not doing PNP, disable PNP mode
   in the 3com setup program.
3. Make sure that no other card uses I/O port 0x100.
   (actually, card setup can be done on I/O port 0x1x0 where x=0-f
   but I don't think the linux driver takes advantage of that)

The 3C509 is a wonderful piece of engineering, designed to deal with
many, many idiosyncracies typically found on the ISA bus. It's too bad
that an incomplete driver implementation causes problems, 
but blame it on the pinguin, not 3com.

Self-enumerating busses like the PCI bus are sooo much easier,

Geert Jan


-----
This is the afnog mailing list, managed by Majordomo 1.94.5

To send a message to this list, e-mail afnog at afnog.org
To send a request to majordomo, e-mail majordomo at afnog.org and put
your request in the body of the message (i.e use "help" for help)

This list is maintained by owner-afnog at afnog.org