Blame view

Documentation/networking/vortex.txt 14.8 KB
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1
  Documentation/networking/vortex.txt
e1f8e8744   Francois Cami   Remove Andrew Mor...
2
  Andrew Morton
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
3
4
5
6
7
8
9
10
11
12
  30 April 2000
  
  
  This document describes the usage and errata of the 3Com "Vortex" device
  driver for Linux, 3c59x.c.
  
  The driver was written by Donald Becker <becker@scyld.com>
  
  Don is no longer the prime maintainer of this version of the driver. 
  Please report problems to one or more of:
e1f8e8744   Francois Cami   Remove Andrew Mor...
13
    Andrew Morton
979b6c135   Ralf Baechle   [NET]: Move the n...
14
    Netdev mailing list <netdev@vger.kernel.org>
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
15
16
17
18
19
20
21
22
23
24
    Linux kernel mailing list <linux-kernel@vger.kernel.org>
  
  Please note the 'Reporting and Diagnosing Problems' section at the end
  of this file.
  
  
  Since kernel 2.3.99-pre6, this driver incorporates the support for the
  3c575-series Cardbus cards which used to be handled by 3c575_cb.c.
  
  This driver supports the following hardware:
8219dd571   Steffen Klassert   [PATCH] 3c59x: do...
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
  	3c590 Vortex 10Mbps
  	3c592 EISA 10Mbps Demon/Vortex
  	3c597 EISA Fast Demon/Vortex
  	3c595 Vortex 100baseTx
  	3c595 Vortex 100baseT4
  	3c595 Vortex 100base-MII
  	3c900 Boomerang 10baseT
  	3c900 Boomerang 10Mbps Combo
  	3c900 Cyclone 10Mbps TPO
  	3c900 Cyclone 10Mbps Combo
  	3c900 Cyclone 10Mbps TPC
  	3c900B-FL Cyclone 10base-FL
  	3c905 Boomerang 100baseTx
  	3c905 Boomerang 100baseT4
  	3c905B Cyclone 100baseTx
  	3c905B Cyclone 10/100/BNC
  	3c905B-FX Cyclone 100baseFx
  	3c905C Tornado
  	3c920B-EMB-WNM (ATI Radeon 9100 IGP)
  	3c980 Cyclone
  	3c980C Python-T
  	3cSOHO100-TX Hurricane
  	3c555 Laptop Hurricane
  	3c556 Laptop Tornado
  	3c556B Laptop Hurricane
  	3c575 [Megahertz] 10/100 LAN  CardBus
  	3c575 Boomerang CardBus
  	3CCFE575BT Cyclone CardBus
  	3CCFE575CT Tornado CardBus
  	3CCFE656 Cyclone CardBus
  	3CCFEM656B Cyclone+Winmodem CardBus
  	3CXFEM656C Tornado+Winmodem CardBus
  	3c450 HomePNA Tornado
  	3c920 Tornado
  	3c982 Hydra Dual Port A
  	3c982 Hydra Dual Port B
  	3c905B-T4
  	3c920B-EMB-WNM Tornado
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
  
  Module parameters
  =================
  
  There are several parameters which may be provided to the driver when
  its module is loaded.  These are usually placed in /etc/modprobe.conf
  (/etc/modules.conf in 2.4).  Example:
  
  options 3c59x debug=3 rx_copybreak=300
  
  If you are using the PCMCIA tools (cardmgr) then the options may be
  placed in /etc/pcmcia/config.opts:
  
  module "3c59x" opts "debug=3 rx_copybreak=300"
  
  
  The supported parameters are:
  
  debug=N
  
    Where N is a number from 0 to 7.  Anything above 3 produces a lot
    of output in your system logs.  debug=1 is default.
  
  options=N1,N2,N3,...
  
    Each number in the list provides an option to the corresponding
    network card.  So if you have two 3c905's and you wish to provide
    them with option 0x204 you would use:
  
      options=0x204,0x204
  
    The individual options are composed of a number of bitfields which
    have the following meanings:
  
    Possible media type settings
  	0	10baseT
  	1	10Mbs AUI
  	2	undefined
  	3	10base2 (BNC)
  	4	100base-TX
  	5	100base-FX
  	6	MII (Media Independent Interface)
  	7	Use default setting from EEPROM
  	8       Autonegotiate
  	9       External MII
  	10      Use default setting from EEPROM
  
    When generating a value for the 'options' setting, the above media
    selection values may be OR'ed (or added to) the following:
  
    0x8000  Set driver debugging level to 7
    0x4000  Set driver debugging level to 2
    0x0400  Enable Wake-on-LAN
    0x0200  Force full duplex mode.
    0x0010  Bus-master enable bit (Old Vortex cards only)
  
    For example:
  
      insmod 3c59x options=0x204
  
    will force full-duplex 100base-TX, rather than allowing the usual
    autonegotiation.
  
  global_options=N
  
    Sets the `options' parameter for all 3c59x NICs in the machine. 
    Entries in the `options' array above will override any setting of
    this.
  
  full_duplex=N1,N2,N3...
  
    Similar to bit 9 of 'options'.  Forces the corresponding card into
    full-duplex mode.  Please use this in preference to the `options'
    parameter.
  
    In fact, please don't use this at all! You're better off getting
    autonegotiation working properly.
  
  global_full_duplex=N1
  
    Sets full duplex mode for all 3c59x NICs in the machine.  Entries
    in the `full_duplex' array above will override any setting of this.
  
  flow_ctrl=N1,N2,N3...
  
    Use 802.3x MAC-layer flow control.  The 3com cards only support the
    PAUSE command, which means that they will stop sending packets for a
    short period if they receive a PAUSE frame from the link partner. 
  
    The driver only allows flow control on a link which is operating in
    full duplex mode.
  
    This feature does not appear to work on the 3c905 - only 3c905B and
    3c905C have been tested.
  
    The 3com cards appear to only respond to PAUSE frames which are
    sent to the reserved destination address of 01:80:c2:00:00:01.  They
    do not honour PAUSE frames which are sent to the station MAC address.
  
  rx_copybreak=M
  
    The driver preallocates 32 full-sized (1536 byte) network buffers
    for receiving.  When a packet arrives, the driver has to decide
    whether to leave the packet in its full-sized buffer, or to allocate
    a smaller buffer and copy the packet across into it.
  
    This is a speed/space tradeoff.
  
    The value of rx_copybreak is used to decide when to make the copy. 
    If the packet size is less than rx_copybreak, the packet is copied. 
    The default value for rx_copybreak is 200 bytes.
  
  max_interrupt_work=N
  
    The driver's interrupt service routine can handle many receive and
    transmit packets in a single invocation.  It does this in a loop. 
    The value of max_interrupt_work governs how mnay times the interrupt
    service routine will loop.  The default value is 32 loops.  If this
    is exceeded the interrupt service routine gives up and generates a
    warning message "eth0: Too much work in interrupt".
  
  hw_checksums=N1,N2,N3,...
  
    Recent 3com NICs are able to generate IPv4, TCP and UDP checksums
    in hardware.  Linux has used the Rx checksumming for a long time. 
    The "zero copy" patch which is planned for the 2.4 kernel series
    allows you to make use of the NIC's DMA scatter/gather and transmit
    checksumming as well.
  
    The driver is set up so that, when the zerocopy patch is applied,
    all Tornado and Cyclone devices will use S/G and Tx checksums.
  
    This module parameter has been provided so you can override this
    decision.  If you think that Tx checksums are causing a problem, you
    may disable the feature with `hw_checksums=0'.
  
    If you think your NIC should be performing Tx checksumming and the
    driver isn't enabling it, you can force the use of hardware Tx
    checksumming with `hw_checksums=1'.
  
    The driver drops a message in the logfiles to indicate whether or
    not it is using hardware scatter/gather and hardware Tx checksums.
  
    Scatter/gather and hardware checksums provide considerable
    performance improvement for the sendfile() system call, but a small
    decrease in throughput for send().  There is no effect upon receive
    efficiency.
  
  compaq_ioaddr=N
  compaq_irq=N
  compaq_device_id=N
  
    "Variables to work-around the Compaq PCI BIOS32 problem"....
  
  watchdog=N
  
    Sets the time duration (in milliseconds) after which the kernel
    decides that the transmitter has become stuck and needs to be reset. 
    This is mainly for debugging purposes, although it may be advantageous
    to increase this value on LANs which have very high collision rates.
    The default value is 5000 (5.0 seconds).
  
  enable_wol=N1,N2,N3,...
  
    Enable Wake-on-LAN support for the relevant interface.  Donald
    Becker's `ether-wake' application may be used to wake suspended
    machines.
  
    Also enables the NIC's power management support.
  
  global_enable_wol=N
  
    Sets enable_wol mode for all 3c59x NICs in the machine.  Entries in
    the `enable_wol' array above will override any setting of this.
  
  Media selection
  ---------------
  
  A number of the older NICs such as the 3c590 and 3c900 series have
  10base2 and AUI interfaces.
  
  Prior to January, 2001 this driver would autoeselect the 10base2 or AUI
  port if it didn't detect activity on the 10baseT port.  It would then
  get stuck on the 10base2 port and a driver reload was necessary to
  switch back to 10baseT.  This behaviour could not be prevented with a
  module option override.
  
  Later (current) versions of the driver _do_ support locking of the
  media type.  So if you load the driver module with
  
  	modprobe 3c59x options=0
  
  it will permanently select the 10baseT port.  Automatic selection of
  other media types does not occur.
  
  
  Transmit error, Tx status register 82
  -------------------------------------
  
  This is a common error which is almost always caused by another host on
  the same network being in full-duplex mode, while this host is in
  half-duplex mode.  You need to find that other host and make it run in
  half-duplex mode or fix this host to run in full-duplex mode.
  
  As a last resort, you can force the 3c59x driver into full-duplex mode
  with
  
  	options 3c59x full_duplex=1
  
  but this has to be viewed as a workaround for broken network gear and
  should only really be used for equipment which cannot autonegotiate.
  
  
  Additional resources
  --------------------
  
  Details of the device driver implementation are at the top of the source file.
  
  Additional documentation is available at Don Becker's Linux Drivers site:
98766fbe6   Randy Dunlap   [PATCH] kernel Do...
282
       http://www.scyld.com/vortex.html
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
283
284
  
  Donald Becker's driver development site:
98766fbe6   Randy Dunlap   [PATCH] kernel Do...
285
       http://www.scyld.com/network.html
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
286
287
  
  Donald's vortex-diag program is useful for inspecting the NIC's state:
98766fbe6   Randy Dunlap   [PATCH] kernel Do...
288
       http://www.scyld.com/ethercard_diag.html
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
289
290
291
  
  Donald's mii-diag program may be used for inspecting and manipulating
  the NIC's Media Independent Interface subsystem:
98766fbe6   Randy Dunlap   [PATCH] kernel Do...
292
       http://www.scyld.com/ethercard_diag.html#mii-diag
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
293
294
  
  Donald's wake-on-LAN page:
98766fbe6   Randy Dunlap   [PATCH] kernel Do...
295
       http://www.scyld.com/wakeonlan.html
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
296

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
297
298
299
  3Com's DOS-based application for setting up the NICs EEPROMs:
  
  	ftp://ftp.3com.com/pub/nic/3c90x/3c90xx2.exe
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
300
301
302
303
304
  
  Autonegotiation notes
  ---------------------
  
    The driver uses a one-minute heartbeat for adapting to changes in
8219dd571   Steffen Klassert   [PATCH] 3c59x: do...
305
306
307
308
    the external LAN environment if link is up and 5 seconds if link is down.
    This means that when, for example, a machine is unplugged from a hubbed
    10baseT LAN plugged into a  switched 100baseT LAN, the throughput
    will be quite dreadful for up to sixty seconds.  Be patient.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
  
    Cisco interoperability note from Walter Wong <wcw+@CMU.EDU>:
  
    On a side note, adding HAS_NWAY seems to share a problem with the
    Cisco 6509 switch.  Specifically, you need to change the spanning
    tree parameter for the port the machine is plugged into to 'portfast'
    mode.  Otherwise, the negotiation fails.  This has been an issue
    we've noticed for a while but haven't had the time to track down.
  
    Cisco switches    (Jeff Busch <jbusch@deja.com>)
  
      My "standard config" for ports to which PC's/servers connect directly:
  
          interface FastEthernet0/N
          description machinename
          load-interval 30
          spanning-tree portfast
  
      If autonegotiation is a problem, you may need to specify "speed
      100" and "duplex full" as well (or "speed 10" and "duplex half").
  
      WARNING: DO NOT hook up hubs/switches/bridges to these
      specially-configured ports! The switch will become very confused.
  
  
  Reporting and diagnosing problems
  ---------------------------------
  
  Maintainers find that accurate and complete problem reports are
  invaluable in resolving driver problems.  We are frequently not able to
  reproduce problems and must rely on your patience and efforts to get to
  the bottom of the problem.
  
  If you believe you have a driver problem here are some of the
  steps you should take:
  
  - Is it really a driver problem?
  
     Eliminate some variables: try different cards, different
     computers, different cables, different ports on the switch/hub,
992caacf1   Matt LaPlante   Fix typos in Docu...
349
     different versions of the kernel or of the driver, etc.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
350
351
352
353
354
  
  - OK, it's a driver problem.
  
     You need to generate a report.  Typically this is an email to the
     maintainer and/or linux-net@vger.kernel.org.  The maintainer's
992caacf1   Matt LaPlante   Fix typos in Docu...
355
     email address will be in the driver source or in the MAINTAINERS file.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
  
  - The contents of your report will vary a lot depending upon the
    problem.  If it's a kernel crash then you should refer to the
    REPORTING-BUGS file.
  
    But for most problems it is useful to provide the following:
  
     o Kernel version, driver version
  
     o A copy of the banner message which the driver generates when
       it is initialised.  For example:
  
       eth0: 3Com PCI 3c905C Tornado at 0xa400,  00:50:da:6a:88:f0, IRQ 19
       8K byte-wide RAM 5:3 Rx:Tx split, autoselect/Autonegotiate interface.
       MII transceiver found at address 24, status 782d.
       Enabling bus-master transmits and whole-frame receives.
  
       NOTE: You must provide the `debug=2' modprobe option to generate
       a full detection message.  Please do this:
  
  	modprobe 3c59x debug=2
  
     o If it is a PCI device, the relevant output from 'lspci -vx', eg:
  
       00:09.0 Ethernet controller: 3Com Corporation 3c905C-TX [Fast Etherlink] (rev 74)
               Subsystem: 3Com Corporation: Unknown device 9200
               Flags: bus master, medium devsel, latency 32, IRQ 19
               I/O ports at a400 [size=128]
               Memory at db000000 (32-bit, non-prefetchable) [size=128]
               Expansion ROM at <unassigned> [disabled] [size=128K]
               Capabilities: [dc] Power Management version 2
       00: b7 10 00 92 07 00 10 02 74 00 00 02 08 20 00 00
       10: 01 a4 00 00 00 00 00 db 00 00 00 00 00 00 00 00
       20: 00 00 00 00 00 00 00 00 00 00 00 00 b7 10 00 10
       30: 00 00 00 00 dc 00 00 00 00 00 00 00 05 01 0a 0a
  
     o A description of the environment: 10baseT? 100baseT?
       full/half duplex? switched or hubbed?
  
     o Any additional module parameters which you may be providing to the driver.
  
     o Any kernel logs which are produced.  The more the merrier. 
       If this is a large file and you are sending your report to a
       mailing list, mention that you have the logfile, but don't send
       it.  If you're reporting direct to the maintainer then just send
       it.
  
       To ensure that all kernel logs are available, add the
       following line to /etc/syslog.conf:
  
           kern.* /var/log/messages
  
       Then restart syslogd with:
  
           /etc/rc.d/init.d/syslog restart
  
       (The above may vary, depending upon which Linux distribution you use).
  
      o If your problem is reproducible then that's great.  Try the
        following:
  
        1) Increase the debug level.  Usually this is done via:
  
           a) modprobe driver debug=7
           b) In /etc/modprobe.conf (or /etc/modules.conf for 2.4):
              options driver debug=7
  
        2) Recreate the problem with the higher debug level,
           send all logs to the maintainer.
  
        3) Download you card's diagnostic tool from Donald
98766fbe6   Randy Dunlap   [PATCH] kernel Do...
427
428
           Becker's website <http://www.scyld.com/ethercard_diag.html>.
           Download mii-diag.c as well.  Build these.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
429
430
431
432
433
434
  
           a) Run 'vortex-diag -aaee' and 'mii-diag -v' when the card is
              working correctly.  Save the output.
  
           b) Run the above commands when the card is malfunctioning.  Send
              both sets of output.
98766fbe6   Randy Dunlap   [PATCH] kernel Do...
435
436
437
438
439
  Finally, please be patient and be prepared to do some work.  You may
  end up working on this problem for a week or more as the maintainer
  asks more questions, asks for more tests, asks for patches to be
  applied, etc.  At the end of it all, the problem may even remain
  unresolved.