Next Previous Contents

2. What card should I buy for Linux?

The answer to this question depends heavily on exactly what you intend on doing with your net connection, and how much traffic it will see.

If you only expect a single user to be doing the occasional ftp session or WWW connection, then even an old 8 bit ISA card will probably keep you happy.

If you intend to set up a server, and you require the CPU overhead of Rx'ing and Tx'ing network data to be kept to a minimum, you probably want to look at one of the newer PCI cards that has bus-mastering capapbility, such as with the DEC tulip (21xxx) chip, or the AMD PCnet-PCI chip.

If you fall somewhere in the middle of the above, then any one of the 16 bit ISA cards with stable drivers will do the job for you.

2.1 So What Drivers are Stable?

Of the 16 bit ISA cards, the following drivers are very mature, and you shouldn't have any problems if you buy a card that uses these drivers.

SMC-Ultra/EtherEZ, SMC-Elite (WD80x3), 3c509, Lance, NE2000.

This is not to say that all the other drivers are unstable. It just happens that the above are the oldest and most used of all the linux drivers, making them the safest choice.

Note that some el-cheapo motherboards can have trouble with the bus-mastering that the ISA Lance cards do, and some el-cheapo NE2000 clones can have trouble getting detected at boot.

The most commonly used linux PCI drivers are probably the 3Com Vortex/Boomerang (3c59x/3c9xx), the DEC tulip (21xxx), and the Intel EtherExpressPro 100. The various PCI-NE2000 clone cards are also extremely common, but purchasing a PCI-NE2000 clone card is not recommended unless the lowest possible price is more important than having a modern high-performace design card.

2.2 Eight bit vs 16 bit Cards

You probably can't buy a new 8 bit ISA ethercard anymore, but you will find lots of them turning up at computer swap meets and the like for the next few years, at very low prices. This will make them popular for ``home-ethernet'' systems. The above holds true for 16 bit ISA cards now as well, since PCI cards are now very common.

Some 8 bit cards that will provide adequate performance for light to average use are the wd8003, the 3c503 and the ne1000. The 3c501 provides poor performance, and these poor 12 year old relics of the XT days should be avoided.

The 8 bit data path doesn't hurt performance that much, as you can still expect to get about 500 to 800kB/s ftp download speed to an 8 bit wd8003 card (on a fast ISA bus) from a fast host. And if most of your net-traffic is going to remote sites, then the bottleneck in the path will be elsewhere, and the only speed difference you will notice is during net activity on your local subnet.

2.3 32 Bit (VLB/EISA/PCI) Ethernet Cards

Note that a 10Mbs network typically doesn't justify requiring a 32 bit interface. See Programmed I/O vs. ... as to why having a 10Mbps ethercard on an 8MHz ISA bus is really not a bottleneck. Even though having the ethercard on a fast bus won't necessarily mean faster transfers, it will usually mean reduced CPU overhead, which is good for multi-user systems.

Of course for 100Mbps networks, which are now commonplace, the 32 bit interface is a must to make use of the full bandwidth. AMD has the 32 bit PCnet-VLB and PCnet-PCI chips. See AMD PCnet-32 for info on the 32 bit versions of the LANCE / PCnet-ISA chip.

The DEC 21xxx PCI `tulip' chip is another option (see DEC 21040) for power-users. Many manufacturers produce cards that use this chip, and the prices of such no-name cards is usually quite cheap.

3Com's `Vortex' and `Boomerang' PCI cards are also another option, and the price is quite cheap if you can get one under their evaluation deal while it lasts. (see 3c590/3c595)

Intel's EtherExpress Pro 10/100 PCI cards have also been reported to work well with linux. (see EtherExpress)

Various clone manufacturers have started making PCI NE2000 clones based on a RealTek or Winbond chip. These cards are also supported by the linux ne2000 driver for v2.0.31 and newer kernels. However you only benefit from the faster bus interface, as the card is still using the age-old ne2000 driver interface. As of v2.0.34 (and above) a separate PCI-specific driver for these cards ne2k-pci.c is also available, which will be sightly more efficient than the ISA ne.c driver.

2.4 Available 100Mbs Cards and Drivers

The present list of supported 100Mbs hardware is as follows: cards with the DEC 21140 chip; the 3c595/3c90x Vortex cards; and the HP 100VG ANY-LAN. The drivers for the first two are quite stable, but feedback on the HP driver has been low so far.

The EtherExpressPro10/100B now also has a driver in the current v2.0 kenrel. For updates and/or support, see the relevant section in this document.

The 21140 100Base-? chip is supported with the same driver as its 10Mbs counterpart, the 21040. SMC's 100Mbs EtherPower PCI card uses this chip. As with the 21040, you have a choice of two drivers to pick from.

Also have a look at the information on Donald's WWW site, at the following URL:

100Mbs Ethernet

Donald had done a fair bit of work with the SMC EtherPower-10/100 cards, and reported getting about 4.6MB/s application to application with TCP on P5-100 Triton machines.

(See 3c595 and DEC 21140 for more details.)

For 100VG information, see the following section, and this URL on Donald's Site:

Donald's 100VG Page

You may also be interested in looking at:

Dan Kegel's Fast Ethernet Page

2.5 100VG versus 100BaseT

100BaseT is much more prominent than 100VG, and the following blurb from an older one of Donald's informative comp.os.linux postings summarizes the situation quite well:

``For those not in the know, there are two competing 100Mbs ethernet standards, 100VG (aka 100baseVG and 100VG-AnyLAN) and 100baseT (with 100baseTx, 100baseT4 and 100baseFx cable types).

100VG was on the market first, and I feel that it is better engineered than 100baseTx. I was rooting for it to win, but it clearly isn't going to. HP et al. made several bad choices:

1) Delaying the standard so that they could accommodate IBM and support token ring frames. It `seemed like a good idea at the time', since it would enable token ring shops to upgrade without the managers having to admit they made a very expensive mistake committing to the wrong technology. But there was nothing to be gained, as the two frame types couldn't coexist on a network, token ring is a morass of complexity, and IBM went with 100baseT anyway.

2) Producing only ISA and EISA cards. (A PCI model was only recently announced.) The ISA bus is too slow for 100mbs, and relatively few EISA machines exist. At the time VLB was common, fast, and cheap with PCI a viable choice. But "old-timer" wisdom held that servers would stay with the more expensive EISA bus.

3) Not sending me a databook. Yes, this action was the real reason for the 100VGs downfall :-). I called all over for programming info, and all I could get was a few page color glossy brochure from AT&T describing how wonderful the Regatta chipset was.''

2.6 Programmed I/O vs. Shared Memory vs. DMA

If you can already send and receive back-to-back packets, you just can't put more bits over the wire. Every modern ethercard can receive back-to-back packets. The Linux DP8390 drivers (wd80x3, SMC-Ultra, 3c503, ne2000, etc) come pretty close to sending back-to-back packets (depending on the current interrupt latency) and the 3c509 and AT1500 hardware have no problem at all automatically sending back-to-back packets.

The ISA bus can do 5.3MB/sec (42Mb/sec), which sounds like more than enough for 10Mbps ethernet. In the case of the 100Mbps cards, you clearly need a faster bus to take advantage of the network bandwidth.

Programmed I/O (e.g. NE2000, 3c509)

Pro: Doesn't use any constrained system resources, just a few I/O registers, and has no 16M limit.

Con: Usually the slowest transfer rate, the CPU is waiting the whole time, and interleaved packet access is usually difficult to impossible.

Shared memory (e.g. WD80x3, SMC-Ultra, 3c503)

Pro: Simple, faster than programmed I/O, and allows random access to packets. The linux drivers compute the checksum of incoming IP packets as they are copied off the card, resulting in a further reduction of CPU usage vs. an equivalent PIO card.

Con: Uses up memory space (a big one for DOS users, essentially a non-issue under Linux), and it still ties up the CPU.

Slave (normal) Direct Memory Access (e.g. none for Linux!)

Pro: Frees up the CPU during the actual data transfer.

Con: Checking boundary conditions, allocating contiguous buffers, and programming the DMA registers makes it the slowest of all techniques. It also uses up a scarce DMA channel, and requires aligned low memory buffers.

Bus Master Direct Memory Access (e.g. LANCE, DEC 21040)

Pro: Frees up the CPU during the data transfer, can string together buffers, can require little or no CPU time lost on the ISA bus. Most of the bus-mastering linux drivers now use a `copybreak' scheme where large packets are put directly into a kernel networking buffer by the card, and small packets are copied by the CPU which primes the cache for subsequent processing.

Con: (Only applicable to ISA bus cards) Requires low-memory buffers and a DMA channel for cards. Any bus-master will have problems with other bus-masters that are bus-hogs, such as some primitive SCSI adaptors. A few badly-designed motherboard chipsets have problems with bus-masters. And a reason for not using any type of DMA device is using a 486 processor designed for plug-in replacement of a 386: these processors must flush their cache with each DMA cycle. (This includes the Cx486DLC, Ti486DLC, Cx486SLC, Ti486SLC, etc.)

2.7 Type of cable that your card should support

If you are setting up a small ``personal'' network, you will probably want to use thinnet or thin ethernet cable. This is the style with the standard BNC connectors. See Cables, Coax... for other concerns with different types of ethernet cable.

Most ethercards also come in a `Combo' version for only $10-$20 more. These have both twisted pair and thinnet transceiver built-in, allowing you to change your mind later.

The twisted pair cables, with the RJ-45 (giant phone jack) connectors is technically called 10BaseT. You may also hear it called UTP (Unsheilded Twisted Pair).

The thinnet, or thin ethernet cabling, (RG-58 coaxial cable) with the BNC (metal push and turn-to-lock) connectors is technically called 10Base2.

The older thick ethernet (10mm coaxial cable) which is only found in older installations is called 10Base5.

Large corporate installations will most likely use 10BaseT instead of 10Base2. 10Base2 does not offer an easy upgrade path to the new upcoming 100Base-whatever.


Next Previous Contents