Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | Wed 2-Aug-95 <matti.aarnio@utu.fi> |
| 2 | |
| 3 | Linux network driver modules |
| 4 | |
| 5 | Do not mistake this for "README.modules" at the top-level |
| 6 | directory! That document tells about modules in general, while |
| 7 | this one tells only about network device driver modules. |
| 8 | |
| 9 | This is a potpourri of INSMOD-time(*) configuration options |
| 10 | (if such exists) and their default values of various modules |
| 11 | in the Linux network drivers collection. |
| 12 | |
| 13 | Some modules have also hidden (= non-documented) tunable values. |
| 14 | The choice of not documenting them is based on general belief, that |
| 15 | the less the user needs to know, the better. (There are things that |
| 16 | driver developers can use, others should not confuse themselves.) |
| 17 | |
| 18 | In many cases it is highly preferred that insmod:ing is done |
| 19 | ONLY with defining an explicit address for the card, AND BY |
| 20 | NOT USING AUTO-PROBING! |
| 21 | |
| 22 | Now most cards have some explicitly defined base address that they |
| 23 | are compiled with (to avoid auto-probing, among other things). |
| 24 | If that compiled value does not match your actual configuration, |
| 25 | do use the "io=0xXXX" -parameter for the insmod, and give there |
| 26 | a value matching your environment. |
| 27 | |
| 28 | If you are adventurous, you can ask the driver to autoprobe |
| 29 | by using the "io=0" parameter, however it is a potentially dangerous |
| 30 | thing to do in a live system. (If you don't know where the |
| 31 | card is located, you can try autoprobing, and after possible |
| 32 | crash recovery, insmod with proper IO-address..) |
| 33 | |
| 34 | -------------------------- |
| 35 | (*) "INSMOD-time" means when you load module with |
| 36 | /sbin/insmod you can feed it optional parameters. |
| 37 | See "man insmod". |
| 38 | -------------------------- |
| 39 | |
| 40 | |
| 41 | 8390 based Network Modules (Paul Gortmaker, Nov 12, 1995) |
| 42 | -------------------------- |
| 43 | |
| 44 | (Includes: smc-ultra, ne, wd, 3c503, hp, hp-plus, e2100 and ac3200) |
| 45 | |
| 46 | The 8390 series of network drivers now support multiple card systems without |
| 47 | reloading the same module multiple times (memory efficient!) This is done by |
| 48 | specifying multiple comma separated values, such as: |
| 49 | |
| 50 | insmod 3c503.o io=0x280,0x300,0x330,0x350 xcvr=0,1,0,1 |
| 51 | |
| 52 | The above would have the one module controlling four 3c503 cards, with card 2 |
| 53 | and 4 using external transceivers. The "insmod" manual describes the usage |
| 54 | of comma separated value lists. |
| 55 | |
| 56 | It is *STRONGLY RECOMMENDED* that you supply "io=" instead of autoprobing. |
| 57 | If an "io=" argument is not supplied, then the ISA drivers will complain |
| 58 | about autoprobing being not recommended, and begrudgingly autoprobe for |
| 59 | a *SINGLE CARD ONLY* -- if you want to use multiple cards you *have* to |
| 60 | supply an "io=0xNNN,0xQQQ,..." argument. |
| 61 | |
| 62 | The ne module is an exception to the above. A NE2000 is essentially an |
| 63 | 8390 chip, some bus glue and some RAM. Because of this, the ne probe is |
| 64 | more invasive than the rest, and so at boot we make sure the ne probe is |
| 65 | done last of all the 8390 cards (so that it won't trip over other 8390 based |
| 66 | cards) With modules we can't ensure that all other non-ne 8390 cards have |
| 67 | already been found. Because of this, the ne module REQUIRES an "io=0xNNN" |
| 68 | argument passed in via insmod. It will refuse to autoprobe. |
| 69 | |
| 70 | It is also worth noting that auto-IRQ probably isn't as reliable during |
| 71 | the flurry of interrupt activity on a running machine. Cards such as the |
| 72 | ne2000 that can't get the IRQ setting from an EEPROM or configuration |
| 73 | register are probably best supplied with an "irq=M" argument as well. |
| 74 | |
| 75 | |
| 76 | ---------------------------------------------------------------------- |
| 77 | Card/Module List - Configurable Parameters and Default Values |
| 78 | ---------------------------------------------------------------------- |
| 79 | |
| 80 | 3c501.c: |
| 81 | io = 0x280 IO base address |
| 82 | irq = 5 IRQ |
| 83 | (Probes ports: 0x280, 0x300) |
| 84 | |
| 85 | 3c503.c: |
| 86 | io = 0 (It will complain if you don't supply an "io=0xNNN") |
| 87 | irq = 0 (IRQ software selected by driver using autoIRQ) |
| 88 | xcvr = 0 (Use xcvr=1 to select external transceiver.) |
| 89 | (Probes ports: 0x300, 0x310, 0x330, 0x350, 0x250, 0x280, 0x2A0, 0x2E0) |
| 90 | |
| 91 | 3c505.c: |
| 92 | io = 0 |
| 93 | irq = 0 |
| 94 | dma = 6 (not autoprobed) |
| 95 | (Probes ports: 0x300, 0x280, 0x310) |
| 96 | |
| 97 | 3c507.c: |
| 98 | io = 0x300 |
| 99 | irq = 0 |
| 100 | (Probes ports: 0x300, 0x320, 0x340, 0x280) |
| 101 | |
| 102 | 3c509.c: |
| 103 | io = 0 |
| 104 | irq = 0 |
| 105 | ( Module load-time probing Works reliably only on EISA, ISA ID-PROBE |
| 106 | IS NOT RELIABLE! Compile this driver statically into kernel for |
| 107 | now, if you need it auto-probing on an ISA-bus machine. ) |
| 108 | |
| 109 | 8390.c: |
| 110 | (No public options, several other modules need this one) |
| 111 | |
| 112 | a2065.c: |
| 113 | Since this is a Zorro board, it supports full autoprobing, even for |
| 114 | multiple boards. (m68k/Amiga) |
| 115 | |
| 116 | ac3200.c: |
| 117 | io = 0 (Checks 0x1000 to 0x8fff in 0x1000 intervals) |
| 118 | irq = 0 (Read from config register) |
| 119 | (EISA probing..) |
| 120 | |
| 121 | apricot.c: |
| 122 | io = 0x300 (Can't be altered!) |
| 123 | irq = 10 |
| 124 | |
| 125 | arcnet.c: |
| 126 | io = 0 |
| 127 | irqnum = 0 |
| 128 | shmem = 0 |
| 129 | num = 0 |
| 130 | DO SET THESE MANUALLY AT INSMOD! |
| 131 | (When probing, looks at the following possible addresses: |
| 132 | Suggested ones: |
| 133 | 0x300, 0x2E0, 0x2F0, 0x2D0 |
| 134 | Other ones: |
| 135 | 0x200, 0x210, 0x220, 0x230, 0x240, 0x250, 0x260, 0x270, |
| 136 | 0x280, 0x290, 0x2A0, 0x2B0, 0x2C0, |
| 137 | 0x310, 0x320, 0x330, 0x340, 0x350, 0x360, 0x370, |
| 138 | 0x380, 0x390, 0x3A0, 0x3E0, 0x3F0 ) |
| 139 | |
| 140 | ariadne.c: |
| 141 | Since this is a Zorro board, it supports full autoprobing, even for |
| 142 | multiple boards. (m68k/Amiga) |
| 143 | |
| 144 | at1700.c: |
| 145 | io = 0x260 |
| 146 | irq = 0 |
| 147 | (Probes ports: 0x260, 0x280, 0x2A0, 0x240, 0x340, 0x320, 0x380, 0x300) |
| 148 | |
| 149 | atari_bionet.c: |
| 150 | Supports full autoprobing. (m68k/Atari) |
| 151 | |
| 152 | atari_pamsnet.c: |
| 153 | Supports full autoprobing. (m68k/Atari) |
| 154 | |
| 155 | atarilance.c: |
| 156 | Supports full autoprobing. (m68k/Atari) |
| 157 | |
| 158 | atp.c: *Not modularized* |
| 159 | (Probes ports: 0x378, 0x278, 0x3BC; |
| 160 | fixed IRQs: 5 and 7 ) |
| 161 | |
| 162 | cops.c: |
| 163 | io = 0x240 |
| 164 | irq = 5 |
| 165 | nodeid = 0 (AutoSelect = 0, NodeID 1-254 is hand selected.) |
| 166 | (Probes ports: 0x240, 0x340, 0x200, 0x210, 0x220, 0x230, 0x260, |
| 167 | 0x2A0, 0x300, 0x310, 0x320, 0x330, 0x350, 0x360) |
| 168 | |
| 169 | de4x5.c: |
| 170 | io = 0x000b |
| 171 | irq = 10 |
| 172 | is_not_dec = 0 -- For non-DEC card using DEC 21040/21041/21140 chip, set this to 1 |
| 173 | (EISA, and PCI probing) |
| 174 | |
| 175 | de600.c: |
| 176 | de600_debug = 0 |
| 177 | (On port 0x378, irq 7 -- lpt1; compile time configurable) |
| 178 | |
| 179 | de620.c: |
| 180 | bnc = 0, utp = 0 <-- Force media by setting either. |
| 181 | io = 0x378 (also compile-time configurable) |
| 182 | irq = 7 |
| 183 | |
| 184 | depca.c: |
| 185 | io = 0x200 |
| 186 | irq = 7 |
| 187 | (Probes ports: ISA: 0x300, 0x200; |
| 188 | EISA: 0x0c00 ) |
| 189 | |
| 190 | dummy.c: |
| 191 | No options |
| 192 | |
| 193 | e2100.c: |
| 194 | io = 0 (It will complain if you don't supply an "io=0xNNN") |
| 195 | irq = 0 (IRQ software selected by driver) |
| 196 | mem = 0 (Override default shared memory start of 0xd0000) |
| 197 | xcvr = 0 (Use xcvr=1 to select external transceiver.) |
| 198 | (Probes ports: 0x300, 0x280, 0x380, 0x220) |
| 199 | |
| 200 | eepro.c: |
| 201 | io = 0x200 |
| 202 | irq = 0 |
| 203 | (Probes ports: 0x200, 0x240, 0x280, 0x2C0, 0x300, 0x320, 0x340, 0x360) |
| 204 | |
| 205 | eexpress.c: |
| 206 | io = 0x300 |
| 207 | irq = 0 (IRQ value read from EEPROM) |
| 208 | (Probes ports: 0x300, 0x270, 0x320, 0x340) |
| 209 | |
| 210 | eql.c: |
| 211 | (No parameters) |
| 212 | |
| 213 | ewrk3.c: |
| 214 | io = 0x300 |
| 215 | irq = 5 |
| 216 | (With module no autoprobing! |
| 217 | On EISA-bus does EISA probing. |
| 218 | Static linkage probes ports on ISA bus: |
| 219 | 0x100, 0x120, 0x140, 0x160, 0x180, 0x1A0, 0x1C0, |
| 220 | 0x200, 0x220, 0x240, 0x260, 0x280, 0x2A0, 0x2C0, 0x2E0, |
| 221 | 0x300, 0x340, 0x360, 0x380, 0x3A0, 0x3C0) |
| 222 | |
| 223 | hp-plus.c: |
| 224 | io = 0 (It will complain if you don't supply an "io=0xNNN") |
| 225 | irq = 0 (IRQ read from configuration register) |
| 226 | (Probes ports: 0x200, 0x240, 0x280, 0x2C0, 0x300, 0x320, 0x340) |
| 227 | |
| 228 | hp.c: |
| 229 | io = 0 (It will complain if you don't supply an "io=0xNNN") |
| 230 | irq = 0 (IRQ software selected by driver using autoIRQ) |
| 231 | (Probes ports: 0x300, 0x320, 0x340, 0x280, 0x2C0, 0x200, 0x240) |
| 232 | |
| 233 | hp100.c: |
| 234 | hp100_port = 0 (IO-base address) |
| 235 | (Does EISA-probing, if on EISA-slot; |
| 236 | On ISA-bus probes all ports from 0x100 thru to 0x3E0 |
| 237 | in increments of 0x020) |
| 238 | |
| 239 | hydra.c: |
| 240 | Since this is a Zorro board, it supports full autoprobing, even for |
| 241 | multiple boards. (m68k/Amiga) |
| 242 | |
| 243 | ibmtr.c: |
| 244 | io = 0xa20, 0xa24 (autoprobed by default) |
| 245 | irq = 0 (driver cannot select irq - read from hardware) |
| 246 | mem = 0 (shared memory base set at 0xd0000 and not yet |
| 247 | able to override thru mem= parameter.) |
| 248 | |
| 249 | lance.c: *Not modularized* |
| 250 | (PCI, and ISA probing; "CONFIG_PCI" needed for PCI support) |
| 251 | (Probes ISA ports: 0x300, 0x320, 0x340, 0x360) |
| 252 | |
| 253 | loopback.c: *Static kernel component* |
| 254 | |
| 255 | ne.c: |
| 256 | io = 0 (Explicitly *requires* an "io=0xNNN" value) |
| 257 | irq = 0 (Tries to determine configured IRQ via autoIRQ) |
| 258 | (Probes ports: 0x300, 0x280, 0x320, 0x340, 0x360) |
| 259 | |
| 260 | net_init.c: *Static kernel component* |
| 261 | |
| 262 | ni52.c: *Not modularized* |
| 263 | (Probes ports: 0x300, 0x280, 0x360, 0x320, 0x340 |
| 264 | mems: 0xD0000, 0xD2000, 0xC8000, 0xCA000, |
| 265 | 0xD4000, 0xD6000, 0xD8000 ) |
| 266 | |
| 267 | ni65.c: *Not modularized* **16MB MEMORY BARRIER BUG** |
| 268 | (Probes ports: 0x300, 0x320, 0x340, 0x360) |
| 269 | |
| 270 | pi2.c: *Not modularized* (well, NON-STANDARD modularization!) |
| 271 | Only one card supported at this time. |
| 272 | (Probes ports: 0x380, 0x300, 0x320, 0x340, 0x360, 0x3A0) |
| 273 | |
| 274 | plip.c: |
| 275 | io = 0 |
| 276 | irq = 0 (by default, uses IRQ 5 for port at 0x3bc, IRQ 7 |
| 277 | for port at 0x378, and IRQ 2 for port at 0x278) |
| 278 | (Probes ports: 0x278, 0x378, 0x3bc) |
| 279 | |
| 280 | ppp.c: |
| 281 | No options (ppp-2.2+ has some, this is based on non-dynamic |
| 282 | version from ppp-2.1.2d) |
| 283 | |
| 284 | seeq8005.c: *Not modularized* |
| 285 | (Probes ports: 0x300, 0x320, 0x340, 0x360) |
| 286 | |
| 287 | sk_g16.c: *Not modularized* |
| 288 | (Probes ports: 0x100, 0x180, 0x208, 0x220m 0x288, 0x320, 0x328, 0x390) |
| 289 | |
| 290 | skeleton.c: *Skeleton* |
| 291 | |
| 292 | slhc.c: |
| 293 | No configuration parameters |
| 294 | |
| 295 | slip.c: |
| 296 | slip_maxdev = 256 (default value from SL_NRUNIT on slip.h) |
| 297 | |
| 298 | |
| 299 | smc-ultra.c: |
| 300 | io = 0 (It will complain if you don't supply an "io=0xNNN") |
| 301 | irq = 0 (IRQ val. read from EEPROM) |
| 302 | (Probes ports: 0x200, 0x220, 0x240, 0x280, 0x300, 0x340, 0x380) |
| 303 | |
| 304 | tulip.c: *Partial modularization* |
| 305 | (init-time memory allocation makes problems..) |
| 306 | |
| 307 | tunnel.c: |
| 308 | No insmod parameters |
| 309 | |
| 310 | wavelan.c: |
| 311 | io = 0x390 (Settable, but change not recommended) |
| 312 | irq = 0 (Not honoured, if changed..) |
| 313 | |
| 314 | wd.c: |
| 315 | io = 0 (It will complain if you don't supply an "io=0xNNN") |
| 316 | irq = 0 (IRQ val. read from EEPROM, ancient cards use autoIRQ) |
| 317 | mem = 0 (Force shared-memory on address 0xC8000, or whatever..) |
| 318 | mem_end = 0 (Force non-std. mem. size via supplying mem_end val.) |
| 319 | (eg. for 32k WD8003EBT, use mem=0xd0000 mem_end=0xd8000) |
| 320 | (Probes ports: 0x300, 0x280, 0x380, 0x240) |
| 321 | |
| 322 | znet.c: *Not modularized* |
| 323 | (Only one device on Zenith Z-Note (notebook?) systems, |
| 324 | configuration information from (EE)PROM) |