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