Blame view

Documentation/networking/3c509.txt 8.81 KB
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
  Linux and the 3Com EtherLink III Series Ethercards (driver v1.18c and higher)
  ----------------------------------------------------------------------------
  
  This file contains the instructions and caveats for v1.18c and higher versions
  of the 3c509 driver. You should not use the driver without reading this file.
  
  release 1.0
  28 February 2002
  Current maintainer (corrections to):
    David Ruggiero <jdr@farfalle.com>
  
  ----------------------------------------------------------------------------
  
  (0) Introduction
  
  The following are notes and information on using the 3Com EtherLink III series
  ethercards in Linux. These cards are commonly known by the most widely-used
  card's 3Com model number, 3c509. They are all 10mb/s ISA-bus cards and shouldn't
  be (but sometimes are) confused with the similarly-numbered PCI-bus "3c905"
  (aka "Vortex" or "Boomerang") series.  Kernel support for the 3c509 family is
  provided by the module 3c509.c, which has code to support all of the following
  models:
  
    3c509 (original ISA card)
    3c509B (later revision of the ISA card; supports full-duplex)
    3c589 (PCMCIA)
    3c589B (later revision of the 3c589; supports full-duplex)
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
28
29
30
31
32
    3c579 (EISA)
  
  Large portions of this documentation were heavily borrowed from the guide
  written the original author of the 3c509 driver, Donald Becker. The master
  copy of that document, which contains notes on older versions of the driver,
0ea6e6112   Justin P. Mattock   Documentation: up...
33
  currently resides on Scyld web server: http://www.scyld.com/.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
  
  
  (1) Special Driver Features
  
  Overriding card settings
  
  The driver allows boot- or load-time overriding of the card's detected IOADDR,
  IRQ, and transceiver settings, although this capability shouldn't generally be
  needed except to enable full-duplex mode (see below). An example of the syntax
  for LILO parameters for doing this:
  
      ether=10,0x310,3,0x3c509,eth0 
  
  This configures the first found 3c509 card for IRQ 10, base I/O 0x310, and
  transceiver type 3 (10base2). The flag "0x3c509" must be set to avoid conflicts
  with other card types when overriding the I/O address. When the driver is
aa4e2e171   Ben Hutchings   Documentation/3c5...
50
51
52
  loaded as a module, only the IRQ may be overridden. For example,
  setting two cards to IRQ10 and IRQ11 is done by using the irq module
  option:
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
53

aa4e2e171   Ben Hutchings   Documentation/3c5...
54
     options 3c509 irq=10,11
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
  
  
  (2) Full-duplex mode
  
  The v1.18c driver added support for the 3c509B's full-duplex capabilities.
  In order to enable and successfully use full-duplex mode, three conditions
  must be met: 
  
  (a) You must have a Etherlink III card model whose hardware supports full-
  duplex operations. Currently, the only members of the 3c509 family that are
  positively known to support full-duplex are the 3c509B (ISA bus) and 3c589B
  (PCMCIA) cards. Cards without the "B" model designation do *not* support
  full-duplex mode; these include the original 3c509 (no "B"), the original
  3c589, the 3c529 (MCA bus), and the 3c579 (EISA bus).
  
  (b) You must be using your card's 10baseT transceiver (i.e., the RJ-45
  connector), not its AUI (thick-net) or 10base2 (thin-net/coax) interfaces.
  AUI and 10base2 network cabling is physically incapable of full-duplex
  operation.
  
  (c) Most importantly, your 3c509B must be connected to a link partner that is
  itself full-duplex capable. This is almost certainly one of two things: a full-
  duplex-capable  Ethernet switch (*not* a hub), or a full-duplex-capable NIC on
  another system that's connected directly to the 3c509B via a crossover cable.
aa4e2e171   Ben Hutchings   Documentation/3c5...
79
80
  
  Full-duplex mode can be enabled using 'ethtool'.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
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
   
  /////Extremely important caution concerning full-duplex mode/////
  Understand that the 3c509B's hardware's full-duplex support is much more
  limited than that provide by more modern network interface cards. Although
  at the physical layer of the network it fully supports full-duplex operation,
  the card was designed before the current Ethernet auto-negotiation (N-way)
  spec was written. This means that the 3c509B family ***cannot and will not
  auto-negotiate a full-duplex connection with its link partner under any
  circumstances, no matter how it is initialized***. If the full-duplex mode
  of the 3c509B is enabled, its link partner will very likely need to be
  independently _forced_ into full-duplex mode as well; otherwise various nasty
  failures will occur - at the very least, you'll see massive numbers of packet
  collisions. This is one of very rare circumstances where disabling auto-
  negotiation and forcing the duplex mode of a network interface card or switch
  would ever be necessary or desirable.
  
  
  (3) Available Transceiver Types
  
  For versions of the driver v1.18c and above, the available transceiver types are:
   
  0  transceiver type from EEPROM config (normally 10baseT); force half-duplex
  1  AUI (thick-net / DB15 connector)
  2  (undefined)
  3  10base2 (thin-net == coax / BNC connector)
  4  10baseT (RJ-45 connector); force half-duplex mode
  8  transceiver type and duplex mode taken from card's EEPROM config settings
  12 10baseT (RJ-45 connector); force full-duplex mode
  
  Prior to driver version 1.18c, only transceiver codes 0-4 were supported. Note
  that the new transceiver codes 8 and 12 are the *only* ones that will enable
  full-duplex mode, no matter what the card's detected EEPROM settings might be.
  This insured that merely upgrading the driver from an earlier version would
  never automatically enable full-duplex mode in an existing installation;
  it must always be explicitly enabled via one of these code in order to be
  activated.
aa4e2e171   Ben Hutchings   Documentation/3c5...
117
118
  
  The transceiver type can be changed using 'ethtool'.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
119
120
121
122
123
124
125
126
127
128
129
130
131
    
  
  (4a) Interpretation of error messages and common problems
  
  Error Messages
  
  eth0: Infinite loop in interrupt, status 2011. 
  These are "mostly harmless" message indicating that the driver had too much
  work during that interrupt cycle. With a status of 0x2011 you are receiving
  packets faster than they can be removed from the card. This should be rare
  or impossible in normal operation. Possible causes of this error report are:
   
     - a "green" mode enabled that slows the processor down when there is no
3f6dee9b2   Matt LaPlante   Fix some typos in...
132
       keyboard activity. 
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
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
  
     - some other device or device driver hogging the bus or disabling interrupts.
       Check /proc/interrupts for excessive interrupt counts. The timer tick
       interrupt should always be incrementing faster than the others. 
  
  No received packets 
  If a 3c509, 3c562 or 3c589 can successfully transmit packets, but never
  receives packets (as reported by /proc/net/dev or 'ifconfig') you likely
  have an interrupt line problem. Check /proc/interrupts to verify that the
  card is actually generating interrupts. If the interrupt count is not
  increasing you likely have a physical conflict with two devices trying to
  use the same ISA IRQ line. The common conflict is with a sound card on IRQ10
  or IRQ5, and the easiest solution is to move the 3c509 to a different
  interrupt line. If the device is receiving packets but 'ping' doesn't work,
  you have a routing problem.
  
  Tx Carrier Errors Reported in /proc/net/dev 
  If an EtherLink III appears to transmit packets, but the "Tx carrier errors"
  field in /proc/net/dev increments as quickly as the Tx packet count, you
  likely have an unterminated network or the incorrect media transceiver selected. 
  
  3c509B card is not detected on machines with an ISA PnP BIOS. 
  While the updated driver works with most PnP BIOS programs, it does not work
  with all. This can be fixed by disabling PnP support using the 3Com-supplied
  setup program. 
  
  3c509 card is not detected on overclocked machines 
  Increase the delay time in id_read_eeprom() from the current value, 500,
  to an absurdly high value, such as 5000. 
  
  
  (4b) Decoding Status and Error Messages
  
  The bits in the main status register are: 
  
  value 	description
  0x01 	Interrupt latch
  0x02 	Tx overrun, or Rx underrun
  0x04 	Tx complete
  0x08 	Tx FIFO room available
  0x10 	A complete Rx packet has arrived
  0x20 	A Rx packet has started to arrive
  0x40 	The driver has requested an interrupt
  0x80 	Statistics counter nearly full
  
  The bits in the transmit (Tx) status word are: 
  
  value 	description
  0x02 	Out-of-window collision.
  0x04 	Status stack overflow (normally impossible).
  0x08 	16 collisions.
  0x10 	Tx underrun (not enough PCI bus bandwidth).
  0x20 	Tx jabber.
  0x40 	Tx interrupt requested.
  0x80 	Status is valid (this should always be set).
  
  
  When a transmit error occurs the driver produces a status message such as 
  
     eth0: Transmit error, Tx status register 82
  
  The two values typically seen here are:
  
  0x82 
  Out of window collision. This typically occurs when some other Ethernet
  host is incorrectly set to full duplex on a half duplex network. 
  
  0x88 
  16 collisions. This typically occurs when the network is exceptionally busy
  or when another host doesn't correctly back off after a collision. If this
  error is mixed with 0x82 errors it is the result of a host incorrectly set
  to full duplex (see above).
  
  Both of these errors are the result of network problems that should be
  corrected. They do not represent driver malfunction.
  
  
  (5) Revision history (this file)
  
  28Feb02 v1.0  DR   New; major portions based on Becker original 3c509 docs