3c509.txt
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:9k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

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