Linux and 3Com PCI EtherLink XL Vortex/Boomerang Cyclone Ethercards
Products Supported
This page contains Linux device drivers and information on the 3Com "Vortex", "Boomerang", "Cyclone", "Hurricane", and "Tornado" series ethercards. This covers all 3c590 series (3c592, 3c595, and 3c597) and 3c900 series (3c900, 3c905, 3c980 and 3c450) Ethernet adapters. The driver also supports all 3Com CardBus and mini-PCI adapters such as the 3c555, 556 655, 656 and 3c575.
The master copy of this page resides on the Scyld web server.
This driver was written to support Scyld Beowulf clusters. For commercial Beowulf support, contact SCYLD directly. For generic Beowulf information, read the Beowulf project web page.
Other Drivers
3Com Vendor-supported driver
A second driver implementation is now available for certain 3Com PCI boards.In September 1999 3Com released a driver for the 3c905B and 3c905C series. This driver was written in-house, and is available under the GPL from. http://support.3com.com/infodeli/tools/nic/linux.htm
Note that the 3Com driver, named 3c90x.c, supports only recent production boards. The driver described on this page, named 3c59x.c, supports all generations of PCI boards. (See the complete list below.)
Supported boards
PCI boards
The supported models are the PCI EtherLink III 3c590 "Vortex" series, (3c590 and 3c595), the PCI EtherLink XL "Boomerang" series (3c900 and 3c905), the 3c905B "Cyclone" series, and the 3c905C "Tornado" series.
EISA boards
Also supported are 3c592 and 3c597 EISA boards.CardBus cards
The "3c59x.c" driver source supports the 3Com CardBus Ethernet adapters. The driver must either be compiled with pci-scan support, or be compiled with the -DCARDBUS flag. If using the -DCARDBUS flag, the resulting driver binary differs from the PCI version and may only be used with the user-level PCMCIA package. The suggested compile command is at the bottom of the file. Additional directions are included with the PCMCIA package.
ISA EtherLink cards
The ISA 3c515 "Corkscrew" has its own driver named 3c515.c. The 3c515.c driver is similar, however a different register layout and the quirks of ISA detection makes it impractical to combine the support into a unified Vortex-series driver.
Usage instructions
Installation
Read the Network Drivers as Modules page for instructions. You should, of course, substitute the "3c59x.c" as the driver file name.
Run-time Configuration
This driver provide a interface to the Media Independent Interface, "MII" transceiver configuration and diagnostic settings. This interface allows the media type (i.e. 10Mbps or 100Mbps, half or full duplex) to be configured. The settings are usually configured by the (slightly misnamed) mii-diag program. The details of this program may found on the diagnostic home page.
Special Usage Instructions
When loaded as a module the following variables may be set:
name | type | description |
debug | int | The debug message level, 0 (no messages) to 6 (wordy). |
options | int[] | The media type override and card operation settings (See list below.) |
full_duplex | int[] | Force full duplex. |
max_interrupt_work | int | Maximum number of events to handle at each interrupt, default 20. |
rx_copybreak | int | See driver source for tuning details. |
An example of loading the vortex module is
insmod 3c59x.o debug=1 options=0,,4 full_duplex=0,0,1This sets the debug message level to minimal messages, sets the first card to the 10baseT transceiver, the second to the EEPROM-set transceiver, and the third card, a 3c595, to operate in full-duplex mode using its 100baseTx transceiver. (Note: card ordering is set by the PCI BIOS.) Possible media type settings
index | media |
0 | Auto-select (default to the 10baseT link) |
1 | AUI |
2 | undefined (special case: 10baseT from the LILO prompt) |
3 | 10base2 (BNC) |
4 | 100baseTx Symbol mode, valid for 3c595 only. |
5 | 100baseFx Symbol mode, valid for 3c595 only. |
6 | MII (the correct transceiver type on the 3c905A) |
8 | 3c905B internal transceiver (the correct transceiver type on the Cyclone) |
9 | External MII, for the 3c905B Cyclone |
0x200 | Add to above values to force full-duplex. |
Note that the preferred method of using full duplex is to allow autonegotiation to take place. If you must force full duplex when communicating with older equipment use the full_duplex module parameter in preference to the options flag.
Additional Driver Information
Why do we use names like "Vortex"?
These are the 3Com internal names for the implementations. The names make it clear which product we are talking about, and the product numbers are often mistyped -- even I've made the mistake of referring to the 3c509 when I meant 3c905. (3Com only purchased rights to the numbers '3' '5' and '9', Intel owns '4', '8', '6', and '2'. '0' and '1' are still in the public domain ;-)
See also the
Driver Source Code
The driver source code is available from
ftp://ftp.scyld.com/pub/network/3c59x.c.
The latest Development/Test version may be available as
ftp://ftp.scyld.com/pub/network/test/3c59x.c.
Pre-compiled Driver Modules
I do not provide pre-compile driver modules, since each distribution would require its own binary for warning-free module insertion.Building and Using the Driver as a Module
See Using Linux Network Drivers as Modules
Support
- Mailing lists
- Mailing List archive
- The 'ifconfig' program is reporting only 10Mbps.
- Compile problem: 'modversions.h' not found
Mailing lists
Support for the Vortex and Boomerang drivers is now being handled through the following mailing lists:
- vortex-announce
- Announcements of new drivers and features.
- vortex
- General driver discussions, including bug fixes.
- vortex-bug
- Reporting driver bugs.
Typical Problems
"modversions.h not found" reported when compiling the driver.
Delete '-DMODVERSIONS' from the command used to compile the driver module.
Transmit error status
When a transmit error occurs the driver produces a status message such as
- 0x82
- Out of window collision. This typically occurs when some other Ethernet host is incorrectly set to full duplex on a half duplex network.
- 0x88
- 16 collisions. This typically occurs when the network is exceptionally busy or when another host doesn't correctly back off after a collision. If this error is mixed with 0x82 errors it is the result of a host incorrectly set to full duplex (see above).
The bits in the status word are:
value | description |
0x02 | Out-of-window collision. |
0x04 | Status stack overflow (normally impossible). |
0x08 | 16 collisions. |
0x10 | Tx underrun (not enough PCI bus bandwidth). |
0x20 | Tx jabber. |
0x40 | Tx interrupt requested. |
0x80 | Status is valid (this should always be set). |
PCI bus error bits
A typical PCI or CardBus problem will result in the following message: eth0: PCI bus error, bus status 80000020.
value | description |
0x40000000 | PCI target abort: The NIC has experienced a target abort while operating as a bus master. This is a fatal error. |
0x80000000 | PCI master abort: The NIC has experienced a master abort while operating as a bus master. This is a fatal error. |
Related resources
This driver was originally written by Donald Becker while he was working on the Beowulf cluster project at CESDIS. For generic Beowulf information, read the Beowulf web site.
- Technical information about 100 Mbps networks.
- Other Scyld software.
- 3Com's description of the EtherLink III Family.
- Charles Spurgeon's 100Mbps Ethernet Guide at the University of Texas.
Acknowledgments
Thanks to Terry Murphy, Terry_Murphy at 3mail.3Com.COM, and Cameron Spitzer, cls at truffula.sj.ca.us, of 3Com for providing the various card samples and databooks. Both have since moved on from their 3Com jobs, but were instrumental in making possible the early Linux support of 3Com hardware.
Linux Network Drivers Page
SCYLD information.
Author: Donald Becker
See the drivers for the contact email address. Do not bother sending email to zinc.anode@scyld.com, as email to that address adds your domain or IP address to the known-spammer list.