|  | Wed 2-Aug-95  <matti.aarnio@utu.fi> | 
|  |  | 
|  | Linux network driver modules | 
|  |  | 
|  | Do not mistake this for "README.modules" at the top-level | 
|  | directory!  That document tells about modules in general, while | 
|  | this one tells only about network device driver modules. | 
|  |  | 
|  | This is a potpourri of INSMOD-time(*) configuration options | 
|  | (if such exists) and their default values of various modules | 
|  | in the Linux network drivers collection. | 
|  |  | 
|  | Some modules have also hidden (= non-documented) tunable values. | 
|  | The choice of not documenting them is based on general belief, that | 
|  | the less the user needs to know, the better.  (There are things that | 
|  | driver developers can use, others should not confuse themselves.) | 
|  |  | 
|  | In many cases it is highly preferred that insmod:ing is done | 
|  | ONLY with defining an explicit address for the card, AND BY | 
|  | NOT USING AUTO-PROBING! | 
|  |  | 
|  | Now most cards have some explicitly defined base address that they | 
|  | are compiled with (to avoid auto-probing, among other things). | 
|  | If that compiled value does not match your actual configuration, | 
|  | do use the "io=0xXXX" -parameter for the insmod, and give there | 
|  | a value matching your environment. | 
|  |  | 
|  | If you are adventurous, you can ask the driver to autoprobe | 
|  | by using the "io=0" parameter, however it is a potentially dangerous | 
|  | thing to do in a live system.  (If you don't know where the | 
|  | card is located, you can try autoprobing, and after possible | 
|  | crash recovery, insmod with proper IO-address..) | 
|  |  | 
|  | -------------------------- | 
|  | (*)	"INSMOD-time" means when you load module with | 
|  | /sbin/insmod  you can feed it optional parameters. | 
|  | See "man insmod". | 
|  | -------------------------- | 
|  |  | 
|  |  | 
|  | 8390 based Network Modules		(Paul Gortmaker, Nov 12, 1995) | 
|  | -------------------------- | 
|  |  | 
|  | (Includes: smc-ultra, ne, wd, 3c503, hp, hp-plus, e2100 and ac3200) | 
|  |  | 
|  | The 8390 series of network drivers now support multiple card systems without | 
|  | reloading the same module multiple times (memory efficient!) This is done by | 
|  | specifying multiple comma separated values, such as: | 
|  |  | 
|  | insmod 3c503.o io=0x280,0x300,0x330,0x350  xcvr=0,1,0,1 | 
|  |  | 
|  | The above would have the one module controlling four 3c503 cards, with card 2 | 
|  | and 4 using external transceivers. The "insmod" manual describes the usage | 
|  | of comma separated value lists. | 
|  |  | 
|  | It is *STRONGLY RECOMMENDED* that you supply "io=" instead of autoprobing. | 
|  | If an "io=" argument is not supplied, then the ISA drivers will complain | 
|  | about autoprobing being not recommended, and begrudgingly autoprobe for | 
|  | a *SINGLE CARD ONLY* -- if you want to use multiple cards you *have* to | 
|  | supply an "io=0xNNN,0xQQQ,..." argument. | 
|  |  | 
|  | The ne module is an exception to the above. A NE2000 is essentially an | 
|  | 8390 chip, some bus glue and some RAM. Because of this, the ne probe is | 
|  | more invasive than the rest, and so at boot we make sure the ne probe is | 
|  | done last of all the 8390 cards (so that it won't trip over other 8390 based | 
|  | cards) With modules we can't ensure that all other non-ne 8390 cards have | 
|  | already been found. Because of this, the ne module REQUIRES an "io=0xNNN" | 
|  | argument passed in via insmod. It will refuse to autoprobe. | 
|  |  | 
|  | It is also worth noting that auto-IRQ probably isn't as reliable during | 
|  | the flurry of interrupt activity on a running machine. Cards such as the | 
|  | ne2000 that can't get the IRQ setting from an EEPROM or configuration | 
|  | register are probably best supplied with an "irq=M" argument as well. | 
|  |  | 
|  |  | 
|  | ---------------------------------------------------------------------- | 
|  | Card/Module List - Configurable Parameters and Default Values | 
|  | ---------------------------------------------------------------------- | 
|  |  | 
|  | 3c501.c: | 
|  | io  = 0x280	IO base address | 
|  | irq = 5		IRQ | 
|  | (Probes ports:	0x280, 0x300) | 
|  |  | 
|  | 3c503.c: | 
|  | io = 0		(It will complain if you don't supply an "io=0xNNN") | 
|  | irq = 0		(IRQ software selected by driver using autoIRQ) | 
|  | xcvr = 0	(Use xcvr=1 to select external transceiver.) | 
|  | (Probes ports: 0x300, 0x310, 0x330, 0x350, 0x250, 0x280, 0x2A0, 0x2E0) | 
|  |  | 
|  | 3c505.c: | 
|  | io = 0 | 
|  | irq = 0 | 
|  | dma = 6         (not autoprobed) | 
|  | (Probes ports: 0x300, 0x280, 0x310) | 
|  |  | 
|  | 3c507.c: | 
|  | io = 0x300 | 
|  | irq = 0 | 
|  | (Probes ports: 0x300, 0x320, 0x340, 0x280) | 
|  |  | 
|  | 3c509.c: | 
|  | io = 0 | 
|  | irq = 0 | 
|  | ( Module load-time probing Works reliably only on EISA, ISA ID-PROBE | 
|  | IS NOT RELIABLE!  Compile this driver statically into kernel for | 
|  | now, if you need it auto-probing on an ISA-bus machine. ) | 
|  |  | 
|  | 8390.c: | 
|  | (No public options, several other modules need this one) | 
|  |  | 
|  | a2065.c: | 
|  | Since this is a Zorro board, it supports full autoprobing, even for | 
|  | multiple boards. (m68k/Amiga) | 
|  |  | 
|  | ac3200.c: | 
|  | io = 0		(Checks 0x1000 to 0x8fff in 0x1000 intervals) | 
|  | irq = 0		(Read from config register) | 
|  | (EISA probing..) | 
|  |  | 
|  | apricot.c: | 
|  | io = 0x300  (Can't be altered!) | 
|  | irq = 10 | 
|  |  | 
|  | arcnet.c: | 
|  | io = 0 | 
|  | irqnum = 0 | 
|  | shmem = 0 | 
|  | num = 0 | 
|  | DO SET THESE MANUALLY AT INSMOD! | 
|  | (When probing, looks at the following possible addresses: | 
|  | Suggested ones: | 
|  | 0x300, 0x2E0, 0x2F0, 0x2D0 | 
|  | Other ones: | 
|  | 0x200, 0x210, 0x220, 0x230, 0x240, 0x250, 0x260, 0x270, | 
|  | 0x280, 0x290, 0x2A0, 0x2B0, 0x2C0, | 
|  | 0x310, 0x320, 0x330, 0x340, 0x350, 0x360, 0x370, | 
|  | 0x380, 0x390, 0x3A0,			  0x3E0, 0x3F0  ) | 
|  |  | 
|  | ariadne.c: | 
|  | Since this is a Zorro board, it supports full autoprobing, even for | 
|  | multiple boards. (m68k/Amiga) | 
|  |  | 
|  | at1700.c: | 
|  | io = 0x260 | 
|  | irq = 0 | 
|  | (Probes ports: 0x260, 0x280, 0x2A0, 0x240, 0x340, 0x320, 0x380, 0x300) | 
|  |  | 
|  | atari_bionet.c: | 
|  | Supports full autoprobing. (m68k/Atari) | 
|  |  | 
|  | atari_pamsnet.c: | 
|  | Supports full autoprobing. (m68k/Atari) | 
|  |  | 
|  | atarilance.c: | 
|  | Supports full autoprobing. (m68k/Atari) | 
|  |  | 
|  | atp.c: *Not modularized* | 
|  | (Probes ports: 0x378, 0x278, 0x3BC; | 
|  | fixed IRQs: 5 and 7			) | 
|  |  | 
|  | cops.c: | 
|  | io = 0x240 | 
|  | irq = 5 | 
|  | nodeid = 0	(AutoSelect = 0, NodeID 1-254 is hand selected.) | 
|  | (Probes ports: 0x240, 0x340, 0x200, 0x210, 0x220, 0x230, 0x260, | 
|  | 0x2A0, 0x300, 0x310, 0x320, 0x330, 0x350, 0x360) | 
|  |  | 
|  | de4x5.c: | 
|  | io = 0x000b | 
|  | irq = 10 | 
|  | is_not_dec = 0  -- For non-DEC card using DEC 21040/21041/21140 chip, set this to 1 | 
|  | (EISA, and PCI probing) | 
|  |  | 
|  | de600.c: | 
|  | de600_debug = 0 | 
|  | (On port 0x378, irq 7 -- lpt1;  compile time configurable) | 
|  |  | 
|  | de620.c: | 
|  | bnc = 0, utp = 0  <-- Force media by setting either. | 
|  | io = 0x378	(also compile-time configurable) | 
|  | irq = 7 | 
|  |  | 
|  | depca.c: | 
|  | io = 0x200 | 
|  | irq = 7 | 
|  | (Probes ports:	ISA:  0x300, 0x200; | 
|  | EISA: 0x0c00		) | 
|  |  | 
|  | dummy.c: | 
|  | No options | 
|  |  | 
|  | e2100.c: | 
|  | io = 0		(It will complain if you don't supply an "io=0xNNN") | 
|  | irq = 0		(IRQ software selected by driver) | 
|  | mem = 0		(Override default shared memory start of 0xd0000) | 
|  | xcvr = 0	(Use xcvr=1 to select external transceiver.) | 
|  | (Probes ports: 0x300, 0x280, 0x380, 0x220) | 
|  |  | 
|  | eepro.c: | 
|  | io = 0x200 | 
|  | irq = 0 | 
|  | (Probes ports: 0x200, 0x240, 0x280, 0x2C0, 0x300, 0x320, 0x340, 0x360) | 
|  |  | 
|  | eexpress.c: | 
|  | io = 0x300 | 
|  | irq = 0		(IRQ value read from EEPROM) | 
|  | (Probes ports: 0x300, 0x270, 0x320, 0x340) | 
|  |  | 
|  | eql.c: | 
|  | (No parameters) | 
|  |  | 
|  | ewrk3.c: | 
|  | io = 0x300 | 
|  | irq = 5 | 
|  | (With module no autoprobing! | 
|  | On EISA-bus does EISA probing. | 
|  | Static linkage probes ports on ISA bus: | 
|  | 0x100, 0x120, 0x140, 0x160, 0x180, 0x1A0, 0x1C0, | 
|  | 0x200, 0x220, 0x240, 0x260, 0x280, 0x2A0, 0x2C0, 0x2E0, | 
|  | 0x300,        0x340, 0x360, 0x380, 0x3A0, 0x3C0) | 
|  |  | 
|  | hp-plus.c: | 
|  | io = 0		(It will complain if you don't supply an "io=0xNNN") | 
|  | irq = 0		(IRQ read from configuration register) | 
|  | (Probes ports: 0x200, 0x240, 0x280, 0x2C0, 0x300, 0x320, 0x340) | 
|  |  | 
|  | hp.c: | 
|  | io = 0		(It will complain if you don't supply an "io=0xNNN") | 
|  | irq = 0		(IRQ software selected by driver using autoIRQ) | 
|  | (Probes ports: 0x300, 0x320, 0x340, 0x280, 0x2C0, 0x200, 0x240) | 
|  |  | 
|  | hp100.c: | 
|  | hp100_port = 0 (IO-base address) | 
|  | (Does EISA-probing, if on EISA-slot; | 
|  | On ISA-bus probes all ports from 0x100 thru to 0x3E0 | 
|  | in increments of 0x020) | 
|  |  | 
|  | hydra.c: | 
|  | Since this is a Zorro board, it supports full autoprobing, even for | 
|  | multiple boards. (m68k/Amiga) | 
|  |  | 
|  | ibmtr.c: | 
|  | io = 0xa20, 0xa24 (autoprobed by default) | 
|  | irq = 0 (driver cannot select irq - read from hardware) | 
|  | mem = 0 (shared memory base set at 0xd0000 and not yet | 
|  | able to override thru mem= parameter.) | 
|  |  | 
|  | lance.c: *Not modularized* | 
|  | (PCI, and ISA probing; "CONFIG_PCI" needed for PCI support) | 
|  | (Probes ISA ports: 0x300, 0x320, 0x340, 0x360) | 
|  |  | 
|  | loopback.c: *Static kernel component* | 
|  |  | 
|  | ne.c: | 
|  | io = 0		(Explicitly *requires* an "io=0xNNN" value) | 
|  | irq = 0		(Tries to determine configured IRQ via autoIRQ) | 
|  | (Probes ports: 0x300, 0x280, 0x320, 0x340, 0x360) | 
|  |  | 
|  | net_init.c: *Static kernel component* | 
|  |  | 
|  | ni52.c: *Not modularized* | 
|  | (Probes ports:	0x300, 0x280, 0x360, 0x320, 0x340 | 
|  | mems:	0xD0000, 0xD2000, 0xC8000, 0xCA000, | 
|  | 0xD4000, 0xD6000, 0xD8000 ) | 
|  |  | 
|  | ni65.c: *Not modularized*  **16MB MEMORY BARRIER BUG** | 
|  | (Probes ports:	0x300, 0x320, 0x340, 0x360) | 
|  |  | 
|  | pi2.c:	*Not modularized* (well, NON-STANDARD modularization!) | 
|  | Only one card supported at this time. | 
|  | (Probes ports: 0x380, 0x300, 0x320, 0x340, 0x360, 0x3A0) | 
|  |  | 
|  | plip.c: | 
|  | io = 0 | 
|  | irq = 0		(by default, uses IRQ 5 for port at 0x3bc, IRQ 7 | 
|  | for port at 0x378, and IRQ 2 for port at 0x278) | 
|  | (Probes ports: 0x278, 0x378, 0x3bc) | 
|  |  | 
|  | ppp.c: | 
|  | No options (ppp-2.2+ has some, this is based on non-dynamic | 
|  | version from ppp-2.1.2d) | 
|  |  | 
|  | seeq8005.c: *Not modularized* | 
|  | (Probes ports: 0x300, 0x320, 0x340, 0x360) | 
|  |  | 
|  | skeleton.c: *Skeleton* | 
|  |  | 
|  | slhc.c: | 
|  | No configuration parameters | 
|  |  | 
|  | slip.c: | 
|  | slip_maxdev = 256 (default value from SL_NRUNIT on slip.h) | 
|  |  | 
|  |  | 
|  | smc-ultra.c: | 
|  | io = 0		(It will complain if you don't supply an "io=0xNNN") | 
|  | irq = 0		(IRQ val. read from EEPROM) | 
|  | (Probes ports:	0x200, 0x220, 0x240, 0x280, 0x300, 0x340, 0x380) | 
|  |  | 
|  | tulip.c: *Partial modularization* | 
|  | (init-time memory allocation makes problems..) | 
|  |  | 
|  | tunnel.c: | 
|  | No insmod parameters | 
|  |  | 
|  | wavelan.c: | 
|  | io = 0x390	(Settable, but change not recommended) | 
|  | irq = 0		(Not honoured, if changed..) | 
|  |  | 
|  | wd.c: | 
|  | io = 0		(It will complain if you don't supply an "io=0xNNN") | 
|  | irq = 0		(IRQ val. read from EEPROM, ancient cards use autoIRQ) | 
|  | mem = 0		(Force shared-memory on address 0xC8000, or whatever..) | 
|  | mem_end = 0	(Force non-std. mem. size via supplying mem_end val.) | 
|  | (eg. for 32k WD8003EBT, use mem=0xd0000 mem_end=0xd8000) | 
|  | (Probes ports:	0x300, 0x280, 0x380, 0x240) | 
|  |  | 
|  | znet.c: *Not modularized* | 
|  | (Only one device on  Zenith Z-Note (notebook?) systems, | 
|  | configuration information from (EE)PROM) |