Linux and the 3Com EtherLink III Ethercards

This page contains information on using Linux with 3Com EtherLink III series ethercards. The master copy resides on the CESDIS WWW server.

Special Driver Features

The 1.14 and later versions allow overriding the IOADDR, IRQ, and transceiver setting of detected cards. This capability should be rarely needed. The syntax for LILO parameters is

   ether=10,0x310,3,0x3c509,eth0
This configures the first found 3c509 card for IRQ 10, base I/O 0x310, and transceiver #3 (10base2). The flag "0x3c509" must be set to avoid conflicts with other card types when overriding the I/O address.

Only the IRQ and transceiver setting may be overridden when using the driver as a module. Setting two cards to 10base2/IRQ10 and AUI/IRQ11 is done by using the xcvr and irq module options:

options 3c509 xcvr=3,3 irq=10,11

Available Transceiver Types

The available transceiver types are
0 default from EEPROM, normally 10baseT
1 AUI (DB15 connector)
2 undefined
3 10base2 (BNC)
4 10baseT only (RJ45 connector)

Common problems

eth0: Infinite loop in interrupt, status 2011.

These are "mostly harmless" message indicating that the driver had too much work during that interrupt cycle. With a status of 0x2011 you are receiving packets faster than they can be removed from the card. This should be rare or impossible in normal operation.

Possible causes of this error report are

No received packets
If a 3c509, 3c562 or 3c589 can successfully transmit packets, but never receives packets (as reported by /proc/net/dev or 'ifconfig') you likely have an interrupt line problem. Check /proc/interrupts to verify that the card is actually generating interrupts. If the interrupt count is not increasing you likely have a physical conflict with two devices trying to use the same ISA IRQ line. The common conflict is with a sound card on IRQ10 or IRQ5. The easiest solution is to move the 3c509 to a different interrupt line.
If the device is receiving packets but 'ping' doesn't work, you have a routing problem.
Tx Carrier Errors Reported in /proc/net/dev
If an EtherLink III appears to transmit packets, but the "Tx carrier errors" field in /proc/net/dev increments as quickly as the Tx packet count, you likely have an unterminated network or the incorrect media tranceiver selected.
3c509B card is not detected on machines with an ISA PnP BIOS.
While the updated driver works with most PnP BIOS programs, it does not work with all. This can be fixed by disabling PnP support using the 3Com setup program.
3c509 card is not detected on overclocked machines
Increase the delay time in id_read_eeprom() from the current value, 500, to an absurdly high value, such as 5000.

Errata

These are the current errata for the distributed Linux-2.0 3c509 driver:

These are current errata for the distributed Linux-1.2.13 3c509 driver:

The driver update is on cesdis.gsfc.nasa.gov:/pub/linux/drivers/3c509.c This update addresses all of the above problems. Please send a report if this updated driver fixes a problem you have encountered.

Change summary

Acknowledgments

Thanks to John Murphy, murf@perftech.com , for pointing out what was really happening with the Plug-and-Play conflict.

Thanks to Terry Murphy, Terry_Murphy@3mail.3Com.COM, and Cameron Spitzer, cls@truffula.sj.ca.us, of 3Com for providing the EtherLink III technical reference manuals.

Thanks to Erik Nygren, nygren@mit.edu, for the MCA support.


Top
Linux at CESDIS
CESDIS is located at the NASA Goddard Space Flight Center in Greenbelt MD.
Contact:Donald Becker, becker@cesdis.gsfc.nasa.gov.