Selecting and configuring Ethernet drivers
Knowing how to select the right ethernet driver module and configure
it is a big hairy subject in its own right.
Consult the Linux
Ethernet-Howto. Use, but don't trust the documentation. Read
between the lines. If it doesn't work according to the documentation,
try something different. Consult your friends.
Some drivers, especially for some of the old ISA cards, are goofy. Some
drivers require you to specify the io and irq parameters. Some require
you to NOT specify the io and irq parameters. Some drivers don't care
if you specify the io and irq parameters. Some drivers ignore what
you specify. Some drivers can only be used for one card in a machine.
For example, the ne driver for NE2000 cards will not work with two
NE2000 cards in one machine. Most of these wierdnesses are not documented
or are documented poorly. By the way, if you use two cards of the same
kind, it can be unclear which one is for the internet and which one is for
your local network. You can avoid this uncertainty by using different
kinds of network cards.
PCI ethernet cards
PCI ethernet cards are easier to work with than ISA ethernet
cards. You only need to know the module name. You don't have
to specify I/O addresses or IRQ numbers. An easy way to figure out
what driver module is required for a PCI ethernet card, is to let your
regular desktop Linux (like Red Hat) figure it out. Without the card
installed in your desktop Linux computer, run /sbin/lsmod and write down
the output. Shutdown the computer, install the PCI ethernet card,
boot the computer and run /sbin/lsmod again. The name at the beginning
of the new line is the name of the driver module for your card. For
example, if the old output of /sbin/lsmod is:
Module
Size Used by Not tainted
ac97_codec
11904 0 (autoclean) [trident]
soundcore
6692 2 (autoclean) [trident]
sis
53152 1
sis900
15140 1
tulip
43104 1
and the new output of /sbin/lsmod is:
Module
Size Used by Not tainted
ac97_codec
11904 0 (autoclean) [trident]
soundcore
6692 2 (autoclean) [trident]
sis
53152 1
sis900
15140 1
tulip
43104 1
eepro100
20240 2
then the new line:
eepro100
20240 2
is is for the PCI ethernet card you just put in. The first word on
the new line, is the name of the driver module: eepro100. Adding
".o" to that driver module name yields the name of the file that
the driver module is in:
eepro100.o.
ISA ethernet cards
ISA cards require expertise. Generally, you have to manually
configure the card, know what driver module to use and know what parameters
the driver module wants. You can try to figure out which module
to use (and maybe even the io and irq parameters (/etc/modules.conf?))
with the same technique as for PCI cards, but don't be surprised and brokenhearted
if it doesn't work. You often have to specify the starting I/O port
address and IRQ to the driver module. Avoid Plug and Play. If
you can, manually configure the starting I/O port address and IRQ for the
card. Avoid putting the I/O at 0x300, since much probing of cards
is done at that address that often messes up the ethernet cards. Avoid
Plug and Play. Some cards are configured with jumpers. Some
are configured by software; typically with a utility that runs until DOS.
Many drivers are variations on a common theme, and come in two or more parts.
One part for the common stuff, and another part for the special differences.
For example, the classic Novell NE2000
uses two drivers, the "ne" driver and the "8390" driver. The "8390"
driver is for the stuff common to the controller chip used by that ethernet
card and many others. The "ne" driver is for the stuff particular to
the NE2000 ethernet card. In the documentation
for the Novell
NE2000, the driver name is listed as:
... Driver Name: ne (+8390)
When you specify the modules to linux, you must specify the extra module
first. The extra module is the one with a '+' in front of it and surrounded
by parentheses. I.e., specify the "8390" driver module first, then the
"ne" driver module. Another oddity is that if more than one card needs
the same extra module, you only need to specify the extra module once. For
example, if you have a Novell NE2000
and an SMC
WD8013 card, you would specify the "8390" driver module once. (It
would also be specified before both the "ne" and "wd" modules.)
Remember, use, but don't trust the documentation. Read between the
lines. If it doesn't work according to the documentation, try something
different. Consult your friends.
"Adventure is a sign of incompetence" Vilhjalmur Stefanson
Last modified 2003-05-12