0001 .. SPDX-License-Identifier: GPL-2.0
0002
0003 =============================================================================
0004 Linux and the 3Com EtherLink III Series Ethercards (driver v1.18c and higher)
0005 =============================================================================
0006
0007 This file contains the instructions and caveats for v1.18c and higher versions
0008 of the 3c509 driver. You should not use the driver without reading this file.
0009
0010 release 1.0
0011
0012 28 February 2002
0013
0014 Current maintainer (corrections to):
0015 David Ruggiero <jdr@farfalle.com>
0016
0017 Introduction
0018 ============
0019
0020 The following are notes and information on using the 3Com EtherLink III series
0021 ethercards in Linux. These cards are commonly known by the most widely-used
0022 card's 3Com model number, 3c509. They are all 10mb/s ISA-bus cards and shouldn't
0023 be (but sometimes are) confused with the similarly-numbered PCI-bus "3c905"
0024 (aka "Vortex" or "Boomerang") series. Kernel support for the 3c509 family is
0025 provided by the module 3c509.c, which has code to support all of the following
0026 models:
0027
0028 - 3c509 (original ISA card)
0029 - 3c509B (later revision of the ISA card; supports full-duplex)
0030 - 3c589 (PCMCIA)
0031 - 3c589B (later revision of the 3c589; supports full-duplex)
0032 - 3c579 (EISA)
0033
0034 Large portions of this documentation were heavily borrowed from the guide
0035 written the original author of the 3c509 driver, Donald Becker. The master
0036 copy of that document, which contains notes on older versions of the driver,
0037 currently resides on Scyld web server: http://www.scyld.com/.
0038
0039
0040 Special Driver Features
0041 =======================
0042
0043 Overriding card settings
0044
0045 The driver allows boot- or load-time overriding of the card's detected IOADDR,
0046 IRQ, and transceiver settings, although this capability shouldn't generally be
0047 needed except to enable full-duplex mode (see below). An example of the syntax
0048 for LILO parameters for doing this::
0049
0050 ether=10,0x310,3,0x3c509,eth0
0051
0052 This configures the first found 3c509 card for IRQ 10, base I/O 0x310, and
0053 transceiver type 3 (10base2). The flag "0x3c509" must be set to avoid conflicts
0054 with other card types when overriding the I/O address. When the driver is
0055 loaded as a module, only the IRQ may be overridden. For example,
0056 setting two cards to IRQ10 and IRQ11 is done by using the irq module
0057 option::
0058
0059 options 3c509 irq=10,11
0060
0061
0062 Full-duplex mode
0063 ================
0064
0065 The v1.18c driver added support for the 3c509B's full-duplex capabilities.
0066 In order to enable and successfully use full-duplex mode, three conditions
0067 must be met:
0068
0069 (a) You must have a Etherlink III card model whose hardware supports full-
0070 duplex operations. Currently, the only members of the 3c509 family that are
0071 positively known to support full-duplex are the 3c509B (ISA bus) and 3c589B
0072 (PCMCIA) cards. Cards without the "B" model designation do *not* support
0073 full-duplex mode; these include the original 3c509 (no "B"), the original
0074 3c589, the 3c529 (MCA bus), and the 3c579 (EISA bus).
0075
0076 (b) You must be using your card's 10baseT transceiver (i.e., the RJ-45
0077 connector), not its AUI (thick-net) or 10base2 (thin-net/coax) interfaces.
0078 AUI and 10base2 network cabling is physically incapable of full-duplex
0079 operation.
0080
0081 (c) Most importantly, your 3c509B must be connected to a link partner that is
0082 itself full-duplex capable. This is almost certainly one of two things: a full-
0083 duplex-capable Ethernet switch (*not* a hub), or a full-duplex-capable NIC on
0084 another system that's connected directly to the 3c509B via a crossover cable.
0085
0086 Full-duplex mode can be enabled using 'ethtool'.
0087
0088 .. warning::
0089
0090 Extremely important caution concerning full-duplex mode
0091
0092 Understand that the 3c509B's hardware's full-duplex support is much more
0093 limited than that provide by more modern network interface cards. Although
0094 at the physical layer of the network it fully supports full-duplex operation,
0095 the card was designed before the current Ethernet auto-negotiation (N-way)
0096 spec was written. This means that the 3c509B family ***cannot and will not
0097 auto-negotiate a full-duplex connection with its link partner under any
0098 circumstances, no matter how it is initialized***. If the full-duplex mode
0099 of the 3c509B is enabled, its link partner will very likely need to be
0100 independently _forced_ into full-duplex mode as well; otherwise various nasty
0101 failures will occur - at the very least, you'll see massive numbers of packet
0102 collisions. This is one of very rare circumstances where disabling auto-
0103 negotiation and forcing the duplex mode of a network interface card or switch
0104 would ever be necessary or desirable.
0105
0106
0107 Available Transceiver Types
0108 ===========================
0109
0110 For versions of the driver v1.18c and above, the available transceiver types are:
0111
0112 == =========================================================================
0113 0 transceiver type from EEPROM config (normally 10baseT); force half-duplex
0114 1 AUI (thick-net / DB15 connector)
0115 2 (undefined)
0116 3 10base2 (thin-net == coax / BNC connector)
0117 4 10baseT (RJ-45 connector); force half-duplex mode
0118 8 transceiver type and duplex mode taken from card's EEPROM config settings
0119 12 10baseT (RJ-45 connector); force full-duplex mode
0120 == =========================================================================
0121
0122 Prior to driver version 1.18c, only transceiver codes 0-4 were supported. Note
0123 that the new transceiver codes 8 and 12 are the *only* ones that will enable
0124 full-duplex mode, no matter what the card's detected EEPROM settings might be.
0125 This insured that merely upgrading the driver from an earlier version would
0126 never automatically enable full-duplex mode in an existing installation;
0127 it must always be explicitly enabled via one of these code in order to be
0128 activated.
0129
0130 The transceiver type can be changed using 'ethtool'.
0131
0132
0133 Interpretation of error messages and common problems
0134 ----------------------------------------------------
0135
0136 Error Messages
0137 ^^^^^^^^^^^^^^
0138
0139 eth0: Infinite loop in interrupt, status 2011.
0140 These are "mostly harmless" message indicating that the driver had too much
0141 work during that interrupt cycle. With a status of 0x2011 you are receiving
0142 packets faster than they can be removed from the card. This should be rare
0143 or impossible in normal operation. Possible causes of this error report are:
0144
0145 - a "green" mode enabled that slows the processor down when there is no
0146 keyboard activity.
0147
0148 - some other device or device driver hogging the bus or disabling interrupts.
0149 Check /proc/interrupts for excessive interrupt counts. The timer tick
0150 interrupt should always be incrementing faster than the others.
0151
0152 No received packets
0153 ^^^^^^^^^^^^^^^^^^^
0154
0155 If a 3c509, 3c562 or 3c589 can successfully transmit packets, but never
0156 receives packets (as reported by /proc/net/dev or 'ifconfig') you likely
0157 have an interrupt line problem. Check /proc/interrupts to verify that the
0158 card is actually generating interrupts. If the interrupt count is not
0159 increasing you likely have a physical conflict with two devices trying to
0160 use the same ISA IRQ line. The common conflict is with a sound card on IRQ10
0161 or IRQ5, and the easiest solution is to move the 3c509 to a different
0162 interrupt line. If the device is receiving packets but 'ping' doesn't work,
0163 you have a routing problem.
0164
0165 Tx Carrier Errors Reported in /proc/net/dev
0166 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
0167
0168
0169 If an EtherLink III appears to transmit packets, but the "Tx carrier errors"
0170 field in /proc/net/dev increments as quickly as the Tx packet count, you
0171 likely have an unterminated network or the incorrect media transceiver selected.
0172
0173 3c509B card is not detected on machines with an ISA PnP BIOS.
0174 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
0175
0176 While the updated driver works with most PnP BIOS programs, it does not work
0177 with all. This can be fixed by disabling PnP support using the 3Com-supplied
0178 setup program.
0179
0180 3c509 card is not detected on overclocked machines
0181 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
0182
0183 Increase the delay time in id_read_eeprom() from the current value, 500,
0184 to an absurdly high value, such as 5000.
0185
0186
0187 Decoding Status and Error Messages
0188 ----------------------------------
0189
0190
0191 The bits in the main status register are:
0192
0193 ===== ======================================
0194 value description
0195 ===== ======================================
0196 0x01 Interrupt latch
0197 0x02 Tx overrun, or Rx underrun
0198 0x04 Tx complete
0199 0x08 Tx FIFO room available
0200 0x10 A complete Rx packet has arrived
0201 0x20 A Rx packet has started to arrive
0202 0x40 The driver has requested an interrupt
0203 0x80 Statistics counter nearly full
0204 ===== ======================================
0205
0206 The bits in the transmit (Tx) status word are:
0207
0208 ===== ============================================
0209 value description
0210 ===== ============================================
0211 0x02 Out-of-window collision.
0212 0x04 Status stack overflow (normally impossible).
0213 0x08 16 collisions.
0214 0x10 Tx underrun (not enough PCI bus bandwidth).
0215 0x20 Tx jabber.
0216 0x40 Tx interrupt requested.
0217 0x80 Status is valid (this should always be set).
0218 ===== ============================================
0219
0220
0221 When a transmit error occurs the driver produces a status message such as::
0222
0223 eth0: Transmit error, Tx status register 82
0224
0225 The two values typically seen here are:
0226
0227 0x82
0228 ^^^^
0229
0230 Out of window collision. This typically occurs when some other Ethernet
0231 host is incorrectly set to full duplex on a half duplex network.
0232
0233 0x88
0234 ^^^^
0235
0236 16 collisions. This typically occurs when the network is exceptionally busy
0237 or when another host doesn't correctly back off after a collision. If this
0238 error is mixed with 0x82 errors it is the result of a host incorrectly set
0239 to full duplex (see above).
0240
0241 Both of these errors are the result of network problems that should be
0242 corrected. They do not represent driver malfunction.
0243
0244
0245 Revision history (this file)
0246 ============================
0247
0248 28Feb02 v1.0 DR New; major portions based on Becker original 3c509 docs
0249