This page contains information on using Linux with the Intel/Digital 21040/21041/21140/21142/21143 "Tulip" chips, as used on the SMC PCI EtherPower and many other ethercards. This device driver also supports work-alike chips from ADMtek, ASIX, LiteOn, MXIC, STmicro, and relabeled PNIC chips from LinkSys and Netgear.
The master copy of this page resides on the Scyld web server.
See also the
The driver for the DEC "Tulip" series chips is available from this web page. It has been integrated with the kernel source tree since 1.1.90, although it remained commented out in the configuration file through 1.2.13. The driver version now available works with far more cards than the driver version available prior to kernel 2.0.31.
This driver was originally written to support the Beowulf cluster project at CESDIS, and is being updated in support of the Scyld Beowulf Cluster distribution. For Beowulf-specific information, read the Beowulf project description.
The driver installation directions are on the Driver Updates page. You may install just one driver (see below), or install all updated drivers using either the netdriver.tgz file or the SRPM.
You may also install just the single, specific driver update. Read the Network Drivers as Modules page for instructions. You should, of course, substitute the proper driver file name.
When updating a single driver you will need to build pci-scan.o along with the specific driver.o file. This means that in addition to the driver.c file, you must download pci-scan.c, pci-scan.h, and kern_compat.h.
When using multiport cards with some (brain-damaged, but technically not broken) PCI BIOSes the Tulip chips are detected in reverse order. This isn't a problem if where all chips have individual address EEPROMs, but some multiport cards have only a single EEPROM on the "first" chip which is now detected last. The current work-around is implemented by loading the module with the parameter 'reverse_probe=1' or compiling the driver with '-DREVERSE_PROBE_ORDER=1'.
When loaded as a module, operational parameters may be set by assigning a module parameter. These are usually configured in a distribution-specific GUI or in the /etc/conf.modules file. An example line is
| 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 media 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. |
Valid media types are:
| index | media |
| 0 | Auto-select (default to the 10baseT link) |
| 1 | 10base2 |
| 2 | AUI |
| 3 | 100baseTx |
| 4 | 10baseT-FD |
| 5 | 100baseTx-FD |
| 6 | 100baseT4 |
| 7 | 100baseFx |
| 8 | 100baseFx-FD |
| 9 | MII 10baseT |
| 10 | MII 10baseT-FD |
| 11 | MII (autoselect) |
| 12 | Serial 10baseT (no autoselect) |
| 13 | MII 100baseTx |
| 14 | MII 100baseTx-FD |
| 15 | MII 100baseT4 |
| 16 | MII 100baseFx-HDX (half duplex) |
| 17 | MII 100baseFx-FDX (full duplex) |
| 18 | MII Home-PNA 1Mbps |
| 0x200 (0x200) | Added to other values to set full duplex |
Notes: Not all cards can have their media type set with 'options'. Many cards support multiple media types with a single MII transceiver, and must always be set to an MII type (preferably 11, but other values 9-15 force a specific setting).
An example of loading the Tulip module is
When the driver is pre-linked with the kernel the media type option above may be set as the third "LILO" parameter e.g.
Support for the Tulip driver is handled through the following mailing lists:
A Tulip diagnostic program is available to show the current state of the hardware, configure the EEPROM, and help debug media selection and board-setup problems. Please send the output from this program with any bug reports.
The diagnostic programs are described at http://www.scyld.com/diag/index.html and source and binary packages are available from ftp://ftp.scyld.com/pub/diag/*
Due inaccurate documentation, autonegotiation cannot be enabled on the PNIC chip when used with a SYM transceiver.
Most Ethernet chips can match a single unicast address -- their own station address -- and support a statistical (aka hash) filter for initial filtering of unwanted multicast packets. This is typically done by taking the CRC intermediate result just after destination address arrives, and using a few bits as the index into a table of which multicast packets are acceptable. The typical chip has 64 bins and uses six bits of CRC.
The Tulip does much better than this. The typical operating mode is matching the incoming destination address against a list of 16 addresses. After reserving two entries for the broadcast and station address, that means up to 14 multicast addresses may be perfectly filtered. With more than 14 multicast addresses the chip matches against a single unicast address and uses a statistical multicast filter with 512 bins, resulting in much better filtering than the 64 bin chips.
The new driver automatically switches media types attempting to find a valid selection. 21040 boards start with the 10baseT port, and switch to the AUI (usually 10base2) media if no link beat is detected. 21041 boards rotate among 10baseT, 10base2 and AUI connectors looking for activity. 21140 and later boards use the EEPROM information to select and switch among media types. If there is no valid EEPROM media table (i.e. a old board design), the driver uses an internal table based on the ethernet address prefix. If no internal table is found, the driver configures the chip to use an MII transceiver.
Macronix network products web page, http://www.mxic.com.tw/publish/2276.htm.
Many Ethernet adapter cards use the Tulip chip. The list grows so rapidly that it's impossible to keep up to date, but here are cards that I have received reports on:
Scyld
provides support and development servies for Linux and Beowulf clusters.
Top