Previous Next 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 an old 8 bit wd8003 card will keep you happy.

If you intend to set up a server, and you require the CPU overhead of Rx'ing and Tx'ing ether packets to be kept at a minimum, you probably want to look at one of the newer PCI cards with the DEC 21040 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, WD80x3, 3c509, 3c503/16, 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 lance cards do, and some el-cheapo NE2000 clones can have trouble getting detected at boot.

As for PCI cards, the PCnet-PCI cards that use the lance driver are a safe choice (except for the Boca cards as they have hardware flaws). The Allied Telsyn AT2450 is a PCnet-PCI implementation that is known to work well.

The DEC 21040 `tulip' driver and the 3c59x `vortex' driver are relatively new drivers, but have proven themselves to be quite stable already. (The newer 21041 based cards may be slightly problematic at the moment, but this will no doubt be resolved quickly.)

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.

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 10 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 / PCI Ethernet Cards

There aren't many 32 bit ethercard device drivers because there aren't that many 32 bit ethercards. There aren't many 32 bit ethercards out there because a 10Mbs network doesn't justify spending the 5x price increment for the 32 bit interface. (For a 100Mbs network, it is a different story though.)

See Programmed I/O vs. ... as to why having an 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.

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 21040 PCI chip is another option (see DEC 21040) for power-users. Many manufacturers produce cards that use this chip.

3Com's `Vortex' 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)

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 Vortex card; 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 as it has only been around since early 1.3.x kernels.

The EtherExpressPro10/100 is not presently supported. Getting documentation out of intel is difficult to impossible, which is the main reason.

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 has been doing most of his work with the SMC EtherPower-10/100 cards, and reports 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 Donald's 100VG Page

You may also be interested in looking at:

Dan Kegel's Fast Ethernet Page

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

Ethernet is 10Mbs. (Don't be pedantic, 3Mbs and 100Mbs don't count.) 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 come pretty close to sending back-to-back packets (depending on the current interrupt latency) and the 3c509 and AT1500 hardware has 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. You can use that bandwidth in several ways:

Programmed I/O (e.g. NE2000, HP)

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, only a minor 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.

Con: Requires low-memory buffers and a DMA channel. 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.6 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.


Previous Next Contents