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