| 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 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 149 | atarilance.c: | 
 | 150 | 	Supports full autoprobing. (m68k/Atari) | 
 | 151 |  | 
 | 152 | atp.c: *Not modularized* | 
 | 153 | 	(Probes ports: 0x378, 0x278, 0x3BC; | 
 | 154 | 	 fixed IRQs: 5 and 7			) | 
 | 155 |  | 
 | 156 | cops.c: | 
 | 157 | 	io = 0x240 | 
 | 158 | 	irq = 5 | 
 | 159 | 	nodeid = 0	(AutoSelect = 0, NodeID 1-254 is hand selected.) | 
 | 160 | 	(Probes ports: 0x240, 0x340, 0x200, 0x210, 0x220, 0x230, 0x260, | 
 | 161 | 		       0x2A0, 0x300, 0x310, 0x320, 0x330, 0x350, 0x360)	 | 
 | 162 |  | 
 | 163 | de4x5.c: | 
 | 164 | 	io = 0x000b | 
 | 165 | 	irq = 10 | 
 | 166 | 	is_not_dec = 0  -- For non-DEC card using DEC 21040/21041/21140 chip, set this to 1 | 
 | 167 | 	(EISA, and PCI probing) | 
 | 168 |  | 
 | 169 | de600.c: | 
 | 170 | 	de600_debug = 0 | 
 | 171 | 	(On port 0x378, irq 7 -- lpt1;  compile time configurable) | 
 | 172 |  | 
 | 173 | de620.c: | 
 | 174 | 	bnc = 0, utp = 0  <-- Force media by setting either. | 
 | 175 | 	io = 0x378	(also compile-time configurable) | 
 | 176 | 	irq = 7 | 
 | 177 |  | 
 | 178 | depca.c: | 
 | 179 | 	io = 0x200 | 
 | 180 | 	irq = 7 | 
 | 181 | 	(Probes ports:	ISA:  0x300, 0x200; | 
 | 182 | 			EISA: 0x0c00		) | 
 | 183 |  | 
 | 184 | dummy.c: | 
 | 185 | 	No options | 
 | 186 |  | 
 | 187 | e2100.c: | 
 | 188 | 	io = 0		(It will complain if you don't supply an "io=0xNNN") | 
 | 189 | 	irq = 0		(IRQ software selected by driver) | 
 | 190 | 	mem = 0		(Override default shared memory start of 0xd0000) | 
 | 191 | 	xcvr = 0	(Use xcvr=1 to select external transceiver.) | 
 | 192 | 	(Probes ports: 0x300, 0x280, 0x380, 0x220) | 
 | 193 |  | 
 | 194 | eepro.c: | 
 | 195 | 	io = 0x200 | 
 | 196 | 	irq = 0 | 
 | 197 | 	(Probes ports: 0x200, 0x240, 0x280, 0x2C0, 0x300, 0x320, 0x340, 0x360) | 
 | 198 |  | 
 | 199 | eexpress.c: | 
 | 200 | 	io = 0x300 | 
 | 201 | 	irq = 0		(IRQ value read from EEPROM) | 
 | 202 | 	(Probes ports: 0x300, 0x270, 0x320, 0x340) | 
 | 203 |  | 
 | 204 | eql.c: | 
 | 205 | 	(No parameters) | 
 | 206 |  | 
 | 207 | ewrk3.c: | 
 | 208 | 	io = 0x300 | 
 | 209 | 	irq = 5 | 
 | 210 | 	(With module no autoprobing! | 
 | 211 | 	 On EISA-bus does EISA probing. | 
 | 212 | 	 Static linkage probes ports on ISA bus: | 
 | 213 | 		0x100, 0x120, 0x140, 0x160, 0x180, 0x1A0, 0x1C0, | 
 | 214 | 		0x200, 0x220, 0x240, 0x260, 0x280, 0x2A0, 0x2C0, 0x2E0, | 
 | 215 | 		0x300,        0x340, 0x360, 0x380, 0x3A0, 0x3C0) | 
 | 216 |  | 
 | 217 | hp-plus.c: | 
 | 218 | 	io = 0		(It will complain if you don't supply an "io=0xNNN") | 
 | 219 | 	irq = 0		(IRQ read from configuration register) | 
 | 220 | 	(Probes ports: 0x200, 0x240, 0x280, 0x2C0, 0x300, 0x320, 0x340) | 
 | 221 |  | 
 | 222 | hp.c: | 
 | 223 | 	io = 0		(It will complain if you don't supply an "io=0xNNN") | 
 | 224 | 	irq = 0		(IRQ software selected by driver using autoIRQ) | 
 | 225 | 	(Probes ports: 0x300, 0x320, 0x340, 0x280, 0x2C0, 0x200, 0x240) | 
 | 226 |  | 
 | 227 | hp100.c: | 
 | 228 | 	hp100_port = 0 (IO-base address) | 
 | 229 | 	(Does EISA-probing, if on EISA-slot; | 
 | 230 | 	 On ISA-bus probes all ports from 0x100 thru to 0x3E0 | 
 | 231 | 	 in increments of 0x020) | 
 | 232 |  | 
 | 233 | hydra.c: | 
 | 234 | 	Since this is a Zorro board, it supports full autoprobing, even for | 
 | 235 | 	multiple boards. (m68k/Amiga) | 
 | 236 |  | 
 | 237 | ibmtr.c: | 
 | 238 | 	io = 0xa20, 0xa24 (autoprobed by default) | 
 | 239 | 	irq = 0 (driver cannot select irq - read from hardware) | 
 | 240 | 	mem = 0 (shared memory base set at 0xd0000 and not yet  | 
 | 241 | 	         able to override thru mem= parameter.) | 
 | 242 |  | 
 | 243 | lance.c: *Not modularized* | 
 | 244 | 	(PCI, and ISA probing; "CONFIG_PCI" needed for PCI support) | 
 | 245 | 	(Probes ISA ports: 0x300, 0x320, 0x340, 0x360) | 
 | 246 |  | 
 | 247 | loopback.c: *Static kernel component* | 
 | 248 |  | 
 | 249 | ne.c: | 
 | 250 | 	io = 0		(Explicitly *requires* an "io=0xNNN" value) | 
 | 251 | 	irq = 0		(Tries to determine configured IRQ via autoIRQ) | 
 | 252 | 	(Probes ports: 0x300, 0x280, 0x320, 0x340, 0x360) | 
 | 253 |  | 
 | 254 | net_init.c: *Static kernel component* | 
 | 255 |  | 
 | 256 | ni52.c: *Not modularized* | 
 | 257 | 	(Probes ports:	0x300, 0x280, 0x360, 0x320, 0x340 | 
 | 258 | 		mems:	0xD0000, 0xD2000, 0xC8000, 0xCA000, | 
 | 259 | 			0xD4000, 0xD6000, 0xD8000 ) | 
 | 260 |  | 
 | 261 | ni65.c: *Not modularized*  **16MB MEMORY BARRIER BUG** | 
 | 262 | 	(Probes ports:	0x300, 0x320, 0x340, 0x360) | 
 | 263 |  | 
 | 264 | pi2.c:	*Not modularized* (well, NON-STANDARD modularization!) | 
 | 265 | 	Only one card supported at this time. | 
 | 266 | 	(Probes ports: 0x380, 0x300, 0x320, 0x340, 0x360, 0x3A0) | 
 | 267 |  | 
 | 268 | plip.c: | 
 | 269 | 	io = 0 | 
 | 270 | 	irq = 0		(by default, uses IRQ 5 for port at 0x3bc, IRQ 7 | 
 | 271 | 			for port at 0x378, and IRQ 2 for port at 0x278) | 
 | 272 | 	(Probes ports: 0x278, 0x378, 0x3bc) | 
 | 273 |  | 
 | 274 | ppp.c: | 
 | 275 | 	No options (ppp-2.2+ has some, this is based on non-dynamic | 
 | 276 | 	version from ppp-2.1.2d) | 
 | 277 |  | 
 | 278 | seeq8005.c: *Not modularized* | 
 | 279 | 	(Probes ports: 0x300, 0x320, 0x340, 0x360) | 
 | 280 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 281 | skeleton.c: *Skeleton* | 
 | 282 |  | 
 | 283 | slhc.c: | 
 | 284 | 	No configuration parameters | 
 | 285 |  | 
 | 286 | slip.c: | 
 | 287 | 	slip_maxdev = 256 (default value from SL_NRUNIT on slip.h) | 
 | 288 |  | 
 | 289 |  | 
 | 290 | smc-ultra.c: | 
 | 291 | 	io = 0		(It will complain if you don't supply an "io=0xNNN") | 
 | 292 | 	irq = 0		(IRQ val. read from EEPROM) | 
 | 293 | 	(Probes ports:	0x200, 0x220, 0x240, 0x280, 0x300, 0x340, 0x380) | 
 | 294 |  | 
 | 295 | tulip.c: *Partial modularization* | 
 | 296 | 	(init-time memory allocation makes problems..) | 
 | 297 |  | 
 | 298 | tunnel.c: | 
 | 299 | 	No insmod parameters | 
 | 300 |  | 
 | 301 | wavelan.c: | 
 | 302 | 	io = 0x390	(Settable, but change not recommended) | 
 | 303 | 	irq = 0		(Not honoured, if changed..) | 
 | 304 |  | 
 | 305 | wd.c: | 
 | 306 | 	io = 0		(It will complain if you don't supply an "io=0xNNN") | 
 | 307 | 	irq = 0		(IRQ val. read from EEPROM, ancient cards use autoIRQ) | 
 | 308 | 	mem = 0		(Force shared-memory on address 0xC8000, or whatever..) | 
 | 309 | 	mem_end = 0	(Force non-std. mem. size via supplying mem_end val.) | 
 | 310 | 			(eg. for 32k WD8003EBT, use mem=0xd0000 mem_end=0xd8000) | 
 | 311 | 	(Probes ports:	0x300, 0x280, 0x380, 0x240) | 
 | 312 |  | 
 | 313 | znet.c: *Not modularized* | 
 | 314 | 	(Only one device on  Zenith Z-Note (notebook?) systems, | 
 | 315 | 	 configuration information from (EE)PROM) |