| 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) |
| |
| sk_g16.c: *Not modularized* |
| (Probes ports: 0x100, 0x180, 0x208, 0x220m 0x288, 0x320, 0x328, 0x390) |
| |
| 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) |