Commit c79773e8 authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab Committed by David S. Miller

docs: networking: device drivers: convert 3com/3c509.txt to ReST

- add SPDX header;
- adjust titles and chapters, adding proper markups;
- mark code blocks and literals as such;
- add notes markups;
- mark tables as such;
- adjust identation, whitespaces and blank lines where needed;
- add to networking/index.rst.
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 0046db09
.. SPDX-License-Identifier: GPL-2.0
=============================================================================
Linux and the 3Com EtherLink III Series Ethercards (driver v1.18c and higher) Linux and the 3Com EtherLink III Series Ethercards (driver v1.18c and higher)
---------------------------------------------------------------------------- =============================================================================
This file contains the instructions and caveats for v1.18c and higher versions This file contains the instructions and caveats for v1.18c and higher versions
of the 3c509 driver. You should not use the driver without reading this file. of the 3c509 driver. You should not use the driver without reading this file.
release 1.0 release 1.0
28 February 2002 28 February 2002
Current maintainer (corrections to): Current maintainer (corrections to):
David Ruggiero <jdr@farfalle.com> David Ruggiero <jdr@farfalle.com>
---------------------------------------------------------------------------- Introduction
============
(0) Introduction
The following are notes and information on using the 3Com EtherLink III series The following are notes and information on using the 3Com EtherLink III series
ethercards in Linux. These cards are commonly known by the most widely-used ethercards in Linux. These cards are commonly known by the most widely-used
...@@ -21,11 +25,11 @@ be (but sometimes are) confused with the similarly-numbered PCI-bus "3c905" ...@@ -21,11 +25,11 @@ be (but sometimes are) confused with the similarly-numbered PCI-bus "3c905"
provided by the module 3c509.c, which has code to support all of the following provided by the module 3c509.c, which has code to support all of the following
models: models:
3c509 (original ISA card) - 3c509 (original ISA card)
3c509B (later revision of the ISA card; supports full-duplex) - 3c509B (later revision of the ISA card; supports full-duplex)
3c589 (PCMCIA) - 3c589 (PCMCIA)
3c589B (later revision of the 3c589; supports full-duplex) - 3c589B (later revision of the 3c589; supports full-duplex)
3c579 (EISA) - 3c579 (EISA)
Large portions of this documentation were heavily borrowed from the guide Large portions of this documentation were heavily borrowed from the guide
written the original author of the 3c509 driver, Donald Becker. The master written the original author of the 3c509 driver, Donald Becker. The master
...@@ -33,14 +37,15 @@ copy of that document, which contains notes on older versions of the driver, ...@@ -33,14 +37,15 @@ copy of that document, which contains notes on older versions of the driver,
currently resides on Scyld web server: http://www.scyld.com/. currently resides on Scyld web server: http://www.scyld.com/.
(1) Special Driver Features Special Driver Features
=======================
Overriding card settings Overriding card settings
The driver allows boot- or load-time overriding of the card's detected IOADDR, The driver allows boot- or load-time overriding of the card's detected IOADDR,
IRQ, and transceiver settings, although this capability shouldn't generally be IRQ, and transceiver settings, although this capability shouldn't generally be
needed except to enable full-duplex mode (see below). An example of the syntax needed except to enable full-duplex mode (see below). An example of the syntax
for LILO parameters for doing this: for LILO parameters for doing this::
ether=10,0x310,3,0x3c509,eth0 ether=10,0x310,3,0x3c509,eth0
...@@ -49,12 +54,13 @@ transceiver type 3 (10base2). The flag "0x3c509" must be set to avoid conflicts ...@@ -49,12 +54,13 @@ transceiver type 3 (10base2). The flag "0x3c509" must be set to avoid conflicts
with other card types when overriding the I/O address. When the driver is with other card types when overriding the I/O address. When the driver is
loaded as a module, only the IRQ may be overridden. For example, loaded as a module, only the IRQ may be overridden. For example,
setting two cards to IRQ10 and IRQ11 is done by using the irq module setting two cards to IRQ10 and IRQ11 is done by using the irq module
option: option::
options 3c509 irq=10,11 options 3c509 irq=10,11
(2) Full-duplex mode Full-duplex mode
================
The v1.18c driver added support for the 3c509B's full-duplex capabilities. The v1.18c driver added support for the 3c509B's full-duplex capabilities.
In order to enable and successfully use full-duplex mode, three conditions In order to enable and successfully use full-duplex mode, three conditions
...@@ -79,26 +85,31 @@ another system that's connected directly to the 3c509B via a crossover cable. ...@@ -79,26 +85,31 @@ another system that's connected directly to the 3c509B via a crossover cable.
Full-duplex mode can be enabled using 'ethtool'. Full-duplex mode can be enabled using 'ethtool'.
/////Extremely important caution concerning full-duplex mode///// .. warning::
Understand that the 3c509B's hardware's full-duplex support is much more
limited than that provide by more modern network interface cards. Although
at the physical layer of the network it fully supports full-duplex operation,
the card was designed before the current Ethernet auto-negotiation (N-way)
spec was written. This means that the 3c509B family ***cannot and will not
auto-negotiate a full-duplex connection with its link partner under any
circumstances, no matter how it is initialized***. If the full-duplex mode
of the 3c509B is enabled, its link partner will very likely need to be
independently _forced_ into full-duplex mode as well; otherwise various nasty
failures will occur - at the very least, you'll see massive numbers of packet
collisions. This is one of very rare circumstances where disabling auto-
negotiation and forcing the duplex mode of a network interface card or switch
would ever be necessary or desirable.
Extremely important caution concerning full-duplex mode
(3) Available Transceiver Types Understand that the 3c509B's hardware's full-duplex support is much more
limited than that provide by more modern network interface cards. Although
at the physical layer of the network it fully supports full-duplex operation,
the card was designed before the current Ethernet auto-negotiation (N-way)
spec was written. This means that the 3c509B family ***cannot and will not
auto-negotiate a full-duplex connection with its link partner under any
circumstances, no matter how it is initialized***. If the full-duplex mode
of the 3c509B is enabled, its link partner will very likely need to be
independently _forced_ into full-duplex mode as well; otherwise various nasty
failures will occur - at the very least, you'll see massive numbers of packet
collisions. This is one of very rare circumstances where disabling auto-
negotiation and forcing the duplex mode of a network interface card or switch
would ever be necessary or desirable.
Available Transceiver Types
===========================
For versions of the driver v1.18c and above, the available transceiver types are: For versions of the driver v1.18c and above, the available transceiver types are:
== =========================================================================
0 transceiver type from EEPROM config (normally 10baseT); force half-duplex 0 transceiver type from EEPROM config (normally 10baseT); force half-duplex
1 AUI (thick-net / DB15 connector) 1 AUI (thick-net / DB15 connector)
2 (undefined) 2 (undefined)
...@@ -106,6 +117,7 @@ For versions of the driver v1.18c and above, the available transceiver types are ...@@ -106,6 +117,7 @@ For versions of the driver v1.18c and above, the available transceiver types are
4 10baseT (RJ-45 connector); force half-duplex mode 4 10baseT (RJ-45 connector); force half-duplex mode
8 transceiver type and duplex mode taken from card's EEPROM config settings 8 transceiver type and duplex mode taken from card's EEPROM config settings
12 10baseT (RJ-45 connector); force full-duplex mode 12 10baseT (RJ-45 connector); force full-duplex mode
== =========================================================================
Prior to driver version 1.18c, only transceiver codes 0-4 were supported. Note Prior to driver version 1.18c, only transceiver codes 0-4 were supported. Note
that the new transceiver codes 8 and 12 are the *only* ones that will enable that the new transceiver codes 8 and 12 are the *only* ones that will enable
...@@ -118,9 +130,11 @@ activated. ...@@ -118,9 +130,11 @@ activated.
The transceiver type can be changed using 'ethtool'. The transceiver type can be changed using 'ethtool'.
(4a) Interpretation of error messages and common problems Interpretation of error messages and common problems
----------------------------------------------------
Error Messages Error Messages
^^^^^^^^^^^^^^
eth0: Infinite loop in interrupt, status 2011. eth0: Infinite loop in interrupt, status 2011.
These are "mostly harmless" message indicating that the driver had too much These are "mostly harmless" message indicating that the driver had too much
...@@ -136,6 +150,8 @@ or impossible in normal operation. Possible causes of this error report are: ...@@ -136,6 +150,8 @@ or impossible in normal operation. Possible causes of this error report are:
interrupt should always be incrementing faster than the others. interrupt should always be incrementing faster than the others.
No received packets No received packets
^^^^^^^^^^^^^^^^^^^
If a 3c509, 3c562 or 3c589 can successfully transmit packets, but never If a 3c509, 3c562 or 3c589 can successfully transmit packets, but never
receives packets (as reported by /proc/net/dev or 'ifconfig') you likely receives packets (as reported by /proc/net/dev or 'ifconfig') you likely
have an interrupt line problem. Check /proc/interrupts to verify that the have an interrupt line problem. Check /proc/interrupts to verify that the
...@@ -147,25 +163,36 @@ interrupt line. If the device is receiving packets but 'ping' doesn't work, ...@@ -147,25 +163,36 @@ interrupt line. If the device is receiving packets but 'ping' doesn't work,
you have a routing problem. you have a routing problem.
Tx Carrier Errors Reported in /proc/net/dev Tx Carrier Errors Reported in /proc/net/dev
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
If an EtherLink III appears to transmit packets, but the "Tx carrier errors" If an EtherLink III appears to transmit packets, but the "Tx carrier errors"
field in /proc/net/dev increments as quickly as the Tx packet count, you field in /proc/net/dev increments as quickly as the Tx packet count, you
likely have an unterminated network or the incorrect media transceiver selected. likely have an unterminated network or the incorrect media transceiver selected.
3c509B card is not detected on machines with an ISA PnP BIOS. 3c509B card is not detected on machines with an ISA PnP BIOS.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
While the updated driver works with most PnP BIOS programs, it does not work While the updated driver works with most PnP BIOS programs, it does not work
with all. This can be fixed by disabling PnP support using the 3Com-supplied with all. This can be fixed by disabling PnP support using the 3Com-supplied
setup program. setup program.
3c509 card is not detected on overclocked machines 3c509 card is not detected on overclocked machines
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Increase the delay time in id_read_eeprom() from the current value, 500, Increase the delay time in id_read_eeprom() from the current value, 500,
to an absurdly high value, such as 5000. to an absurdly high value, such as 5000.
(4b) Decoding Status and Error Messages Decoding Status and Error Messages
----------------------------------
The bits in the main status register are: The bits in the main status register are:
===== ======================================
value description value description
===== ======================================
0x01 Interrupt latch 0x01 Interrupt latch
0x02 Tx overrun, or Rx underrun 0x02 Tx overrun, or Rx underrun
0x04 Tx complete 0x04 Tx complete
...@@ -174,10 +201,13 @@ value description ...@@ -174,10 +201,13 @@ value description
0x20 A Rx packet has started to arrive 0x20 A Rx packet has started to arrive
0x40 The driver has requested an interrupt 0x40 The driver has requested an interrupt
0x80 Statistics counter nearly full 0x80 Statistics counter nearly full
===== ======================================
The bits in the transmit (Tx) status word are: The bits in the transmit (Tx) status word are:
===== ============================================
value description value description
===== ============================================
0x02 Out-of-window collision. 0x02 Out-of-window collision.
0x04 Status stack overflow (normally impossible). 0x04 Status stack overflow (normally impossible).
0x08 16 collisions. 0x08 16 collisions.
...@@ -185,19 +215,24 @@ value description ...@@ -185,19 +215,24 @@ value description
0x20 Tx jabber. 0x20 Tx jabber.
0x40 Tx interrupt requested. 0x40 Tx interrupt requested.
0x80 Status is valid (this should always be set). 0x80 Status is valid (this should always be set).
===== ============================================
When a transmit error occurs the driver produces a status message such as When a transmit error occurs the driver produces a status message such as::
eth0: Transmit error, Tx status register 82 eth0: Transmit error, Tx status register 82
The two values typically seen here are: The two values typically seen here are:
0x82 0x82
^^^^
Out of window collision. This typically occurs when some other Ethernet Out of window collision. This typically occurs when some other Ethernet
host is incorrectly set to full duplex on a half duplex network. host is incorrectly set to full duplex on a half duplex network.
0x88 0x88
^^^^
16 collisions. This typically occurs when the network is exceptionally busy 16 collisions. This typically occurs when the network is exceptionally busy
or when another host doesn't correctly back off after a collision. If this or when another host doesn't correctly back off after a collision. If this
error is mixed with 0x82 errors it is the result of a host incorrectly set error is mixed with 0x82 errors it is the result of a host incorrectly set
...@@ -207,7 +242,8 @@ Both of these errors are the result of network problems that should be ...@@ -207,7 +242,8 @@ Both of these errors are the result of network problems that should be
corrected. They do not represent driver malfunction. corrected. They do not represent driver malfunction.
(5) Revision history (this file) Revision history (this file)
============================
28Feb02 v1.0 DR New; major portions based on Becker original 3c509 docs 28Feb02 v1.0 DR New; major portions based on Becker original 3c509 docs
...@@ -27,6 +27,7 @@ Contents: ...@@ -27,6 +27,7 @@ Contents:
netronome/nfp netronome/nfp
pensando/ionic pensando/ionic
stmicro/stmmac stmicro/stmmac
3com/3c509
.. only:: subproject and html .. only:: subproject and html
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment