About Kernel Documentation Linux Kernel Contact Linux Resources Linux Blog

Documentation / networking / 3c509.txt




Custom Search

Based on kernel version 2.6.34. Page generated on 2010-05-31 16:03 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
Hide Line Numbers
About Kernel Documentation Linux Kernel Contact Linux Resources Linux Blog

Information is copyright its respective author. All material is available from the Linux Kernel Source distributed under a GPL License. This page is provided as a free service by mjmwired.net.