blob: dcc9eaf59395d0c7050be020590a42f1a2b55f7f [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001Linux and the 3Com EtherLink III Series Ethercards (driver v1.18c and higher)
2----------------------------------------------------------------------------
3
4This file contains the instructions and caveats for v1.18c and higher versions
5of the 3c509 driver. You should not use the driver without reading this file.
6
7release 1.0
828 February 2002
9Current maintainer (corrections to):
10 David Ruggiero <jdr@farfalle.com>
11
12----------------------------------------------------------------------------
13
14(0) Introduction
15
16The following are notes and information on using the 3Com EtherLink III series
17ethercards in Linux. These cards are commonly known by the most widely-used
18card's 3Com model number, 3c509. They are all 10mb/s ISA-bus cards and shouldn't
19be (but sometimes are) confused with the similarly-numbered PCI-bus "3c905"
20(aka "Vortex" or "Boomerang") series. Kernel support for the 3c509 family is
21provided by the module 3c509.c, which has code to support all of the following
22models:
23
24 3c509 (original ISA card)
25 3c509B (later revision of the ISA card; supports full-duplex)
26 3c589 (PCMCIA)
27 3c589B (later revision of the 3c589; supports full-duplex)
28 3c529 (MCA)
29 3c579 (EISA)
30
31Large portions of this documentation were heavily borrowed from the guide
32written the original author of the 3c509 driver, Donald Becker. The master
33copy of that document, which contains notes on older versions of the driver,
Justin P. Mattock0ea6e612010-07-23 20:51:24 -070034currently resides on Scyld web server: http://www.scyld.com/.
Linus Torvalds1da177e2005-04-16 15:20:36 -070035
36
37(1) Special Driver Features
38
39Overriding card settings
40
41The driver allows boot- or load-time overriding of the card's detected IOADDR,
42IRQ, and transceiver settings, although this capability shouldn't generally be
43needed except to enable full-duplex mode (see below). An example of the syntax
44for LILO parameters for doing this:
45
46 ether=10,0x310,3,0x3c509,eth0
47
48This configures the first found 3c509 card for IRQ 10, base I/O 0x310, and
49transceiver type 3 (10base2). The flag "0x3c509" must be set to avoid conflicts
50with other card types when overriding the I/O address. When the driver is
Ben Hutchingsaa4e2e12010-01-11 15:53:45 -080051loaded as a module, only the IRQ may be overridden. For example,
52setting two cards to IRQ10 and IRQ11 is done by using the irq module
53option:
Linus Torvalds1da177e2005-04-16 15:20:36 -070054
Ben Hutchingsaa4e2e12010-01-11 15:53:45 -080055 options 3c509 irq=10,11
Linus Torvalds1da177e2005-04-16 15:20:36 -070056
57
58(2) Full-duplex mode
59
60The v1.18c driver added support for the 3c509B's full-duplex capabilities.
61In order to enable and successfully use full-duplex mode, three conditions
62must be met:
63
64(a) You must have a Etherlink III card model whose hardware supports full-
65duplex operations. Currently, the only members of the 3c509 family that are
66positively known to support full-duplex are the 3c509B (ISA bus) and 3c589B
67(PCMCIA) cards. Cards without the "B" model designation do *not* support
68full-duplex mode; these include the original 3c509 (no "B"), the original
693c589, the 3c529 (MCA bus), and the 3c579 (EISA bus).
70
71(b) You must be using your card's 10baseT transceiver (i.e., the RJ-45
72connector), not its AUI (thick-net) or 10base2 (thin-net/coax) interfaces.
73AUI and 10base2 network cabling is physically incapable of full-duplex
74operation.
75
76(c) Most importantly, your 3c509B must be connected to a link partner that is
77itself full-duplex capable. This is almost certainly one of two things: a full-
78duplex-capable Ethernet switch (*not* a hub), or a full-duplex-capable NIC on
79another system that's connected directly to the 3c509B via a crossover cable.
Ben Hutchingsaa4e2e12010-01-11 15:53:45 -080080
81Full-duplex mode can be enabled using 'ethtool'.
Linus Torvalds1da177e2005-04-16 15:20:36 -070082
83/////Extremely important caution concerning full-duplex mode/////
84Understand that the 3c509B's hardware's full-duplex support is much more
85limited than that provide by more modern network interface cards. Although
86at the physical layer of the network it fully supports full-duplex operation,
87the card was designed before the current Ethernet auto-negotiation (N-way)
88spec was written. This means that the 3c509B family ***cannot and will not
89auto-negotiate a full-duplex connection with its link partner under any
90circumstances, no matter how it is initialized***. If the full-duplex mode
91of the 3c509B is enabled, its link partner will very likely need to be
92independently _forced_ into full-duplex mode as well; otherwise various nasty
93failures will occur - at the very least, you'll see massive numbers of packet
94collisions. This is one of very rare circumstances where disabling auto-
95negotiation and forcing the duplex mode of a network interface card or switch
96would ever be necessary or desirable.
97
98
99(3) Available Transceiver Types
100
101For versions of the driver v1.18c and above, the available transceiver types are:
102
1030 transceiver type from EEPROM config (normally 10baseT); force half-duplex
1041 AUI (thick-net / DB15 connector)
1052 (undefined)
1063 10base2 (thin-net == coax / BNC connector)
1074 10baseT (RJ-45 connector); force half-duplex mode
1088 transceiver type and duplex mode taken from card's EEPROM config settings
10912 10baseT (RJ-45 connector); force full-duplex mode
110
111Prior to driver version 1.18c, only transceiver codes 0-4 were supported. Note
112that the new transceiver codes 8 and 12 are the *only* ones that will enable
113full-duplex mode, no matter what the card's detected EEPROM settings might be.
114This insured that merely upgrading the driver from an earlier version would
115never automatically enable full-duplex mode in an existing installation;
116it must always be explicitly enabled via one of these code in order to be
117activated.
Ben Hutchingsaa4e2e12010-01-11 15:53:45 -0800118
119The transceiver type can be changed using 'ethtool'.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700120
121
122(4a) Interpretation of error messages and common problems
123
124Error Messages
125
126eth0: Infinite loop in interrupt, status 2011.
127These are "mostly harmless" message indicating that the driver had too much
128work during that interrupt cycle. With a status of 0x2011 you are receiving
129packets faster than they can be removed from the card. This should be rare
130or impossible in normal operation. Possible causes of this error report are:
131
132 - a "green" mode enabled that slows the processor down when there is no
Matt LaPlante3f6dee92006-10-03 22:45:33 +0200133 keyboard activity.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700134
135 - some other device or device driver hogging the bus or disabling interrupts.
136 Check /proc/interrupts for excessive interrupt counts. The timer tick
137 interrupt should always be incrementing faster than the others.
138
139No received packets
140If a 3c509, 3c562 or 3c589 can successfully transmit packets, but never
141receives packets (as reported by /proc/net/dev or 'ifconfig') you likely
142have an interrupt line problem. Check /proc/interrupts to verify that the
143card is actually generating interrupts. If the interrupt count is not
144increasing you likely have a physical conflict with two devices trying to
145use the same ISA IRQ line. The common conflict is with a sound card on IRQ10
146or IRQ5, and the easiest solution is to move the 3c509 to a different
147interrupt line. If the device is receiving packets but 'ping' doesn't work,
148you have a routing problem.
149
150Tx Carrier Errors Reported in /proc/net/dev
151If an EtherLink III appears to transmit packets, but the "Tx carrier errors"
152field in /proc/net/dev increments as quickly as the Tx packet count, you
153likely have an unterminated network or the incorrect media transceiver selected.
154
1553c509B card is not detected on machines with an ISA PnP BIOS.
156While the updated driver works with most PnP BIOS programs, it does not work
157with all. This can be fixed by disabling PnP support using the 3Com-supplied
158setup program.
159
1603c509 card is not detected on overclocked machines
161Increase the delay time in id_read_eeprom() from the current value, 500,
162to an absurdly high value, such as 5000.
163
164
165(4b) Decoding Status and Error Messages
166
167The bits in the main status register are:
168
169value description
1700x01 Interrupt latch
1710x02 Tx overrun, or Rx underrun
1720x04 Tx complete
1730x08 Tx FIFO room available
1740x10 A complete Rx packet has arrived
1750x20 A Rx packet has started to arrive
1760x40 The driver has requested an interrupt
1770x80 Statistics counter nearly full
178
179The bits in the transmit (Tx) status word are:
180
181value description
1820x02 Out-of-window collision.
1830x04 Status stack overflow (normally impossible).
1840x08 16 collisions.
1850x10 Tx underrun (not enough PCI bus bandwidth).
1860x20 Tx jabber.
1870x40 Tx interrupt requested.
1880x80 Status is valid (this should always be set).
189
190
191When a transmit error occurs the driver produces a status message such as
192
193 eth0: Transmit error, Tx status register 82
194
195The two values typically seen here are:
196
1970x82
198Out of window collision. This typically occurs when some other Ethernet
199host is incorrectly set to full duplex on a half duplex network.
200
2010x88
20216 collisions. This typically occurs when the network is exceptionally busy
203or when another host doesn't correctly back off after a collision. If this
204error is mixed with 0x82 errors it is the result of a host incorrectly set
205to full duplex (see above).
206
207Both of these errors are the result of network problems that should be
208corrected. They do not represent driver malfunction.
209
210
211(5) Revision history (this file)
212
21328Feb02 v1.0 DR New; major portions based on Becker original 3c509 docs
214