Linux and the DEC "Tulip" Chip

This page contains information on using Linux with the DEC 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 LiteOn, ASIX, and MXIC, and relabeled PNIC chips from LinkSys and Netgear. The master copy of this page resides on the CESDIS WWW server.

A better place for information...

You'll likely find Linux-Tulip information page more useful (maintained by Greg Siekas).

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 written to support the Beowulf cluster project at CESDIS. For Beowulf-specific information, read the Beowulf project description. Most of the current Beowulf cluster at least use one channel of Tulip-based Fast Ethernet.

Usage instructions

Installation instructions for the Modules version

Linux has a facility for linking device drivers into the running kernel. This is called Modules support. While probing for ISA devices at run time is a bad idea, some device drivers for PCI cards may be safely installed in this way. (And I'll even concede that it might be a Good Idea ;-)

Here's how to make and load the Modules version:

Possible problems and solutions

If you get an "linux/version.h no such file or directory" you either have not installed the kernel source code, or you haven't run

	cd /usr/src/linux; make include/linux/version.h
yet. Some distributions allow you to install just the essential header files of the kernel source code, including a pre-built "version.h", so this isn't always necessary.

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 compiling the driver with '-DREVERSE_PROBE_ORDER=1'.


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 below.)  Add 16 or 0x10 for full duplex.
Valid media types are:
index media
0 Auto-select (default to the 10baseT link)
1 10base2
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 10baseT (no autoselect), v0.69 and later only
13 MII 100baseTx
14 MII 100baseTx-FD
15 MII 100baseT4

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 advertise only a single capability).

An example of loading the Tulip module is insmod tulip.o debug=1 options=0,16 This sets the debug message level to minimal messages, sets the first card to the auto-sense the media type, and the second to forced-full-duplex. (Note: card ordering is set by the motherboard's PCI BIOS.)


Support for the Tulip driver is now being handled through the mailing lists for news general information and for bug reports and problems.

To subscribe to a list, send a message with the contents "subscribe" e.g.:

echo subscribe | /bin/mail to get on the low-volume information list, and echo subscribe | /bin/mail if you want to know more about bugs and driver development.

Diagnostic program

A diagnostic program is available to help debug media selection and board-setup problems.


Due inaccurate documentation, autonegotiation cannot be enabled on the PNIC chip.

Tulip Multicast Support

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.

Using the 10base2 or AUI Port

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,

Ethercards reported to use the DEC Tulip chips

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:

Accton EtherDuo PCI
Accton EN1207
All three media types supported.
Adaptec ANA6901/C
21040-AA, tested with v0.66
Adaptec ANA6911/TX
21140-AC, tested with v0.66
Cogent EM100
21140 with old-style 100mbps-only SYM transceiver
Cogent EM110
21140-A with DP83840 N-Way MII transceiver
Cogent EM400
EM100 with 4 21140 100mbps-only ports + PCI Bridge
Cogent EM960
21040, last tested with v0.66
Cogent EM964 Quartet
Four 21040 ports and a DEC 21050 PCI bridge.
Danpex EN-9400P3
D-Link DFE500-Tx
21140-A with DP83840 transceiver
D-Link DE-530CT
The DFE-530TX uses the VIA Rhine driver.
D-Link DFE-540TX
Linksys EtherPCI
Note: Recent cards use the similar PNIC chip, which requires a v0.83 or later Tulip driver.
Kingston EtherX KNT40T
Kingston EtherX KNE100TX
Netgear FX310 TX 10/100
21140AE, tested with 0.87.
SMC EtherPower
With DEC21040.
SMC 8432BT
With DEC21041.
SMC EtherPower10/100
With DEC21140 and 68836 SYM transceiver.
SMC EtherPower10/100
With DEC21140-AC and DP83840 MII transceiver.
Note: The EtherPower II uses the EPIC chip, which requires a different driver.
Surecom EP-320X
DEC 21140.
Thomas Conrad TC5048
Znyx ZX312 EtherAction
21040 or 21041
Znyx ZX314
Four 21040 10baseT port, DEC 21050 or IBM bridge.
Znyx ZX315 EtherArray
Two 21040 10baseT/10base2 ports and a DEC 21050 PCI bridge
Znyx ZX342
Early non-NWAY 21140 board with a Level One physicial layer for 10BaseT and a National PHY for 100BaseT.
Four 21140 100BaseTX only ports with a DEC 21050 bridge.
Znyx ZX345
21140-A, usually with the DP83840 N-Way MII transciever. Some ZX345 cards made in 1996 have an ICS 1890 transciver instead.
Znyx ZX346
Four 21140-A chips with ICS 1890 transcievers and either a 21052 or 21152 bridge chip.
Incorrect EEPROM (?) causes failed 10baseT detection.
Two 21140-A chips using ICS 1890 transcievers and either a 21052 or 21152 bridge. Early versions used National 83840 transcievers, but later versions are depopulated ZX346 boards.
21140 chip with a Broadcom 100BaseT4 transciever.

CESDIS is located at the NASA Goddard Space Flight Center in Greenbelt MD.

Author:Donald Becker,