← Documents Documentation/networking/device_drivers/ethernet/3com/3c509.rst GitHub 원문 ↗

Linux 6.18.37 · Networking

Linux and the 3Com EtherLink III Series Ethercards

3Com EtherLink III 3c509 계열의 설정 override, full-duplex 제약, transceiver code와 status error 해석을 설명합니다.

Source pathDocumentation/networking/device_drivers/ethernet/3com/3c509.rst
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

요약·해설

3c509.rst:1-249

3c509 driver는 EtherLink III 10 Mb/s ISA·PCMCIA·EISA card를 지원합니다. `B` revision의 10baseT에서만 제한적인 full-duplex가 가능하며 자동 협상을 지원하지 않으므로 link 양쪽을 모두 강제 설정해야 합니다. IRQ 충돌, media 선택, status bit를 이용한 오래된 ISA 환경의 진단 절차도 함께 다룹니다.

지원 EtherLink III model
ModelBusFull-duplex
3c509ISA미지원
3c509BISA지원
3c589PCMCIA미지원
3c589BPCMCIA지원
3c579EISA미지원

Bus와 full-duplex 지원 여부를 구분합니다.

Card 설정 override
`ether=10,0x310,3,0x3c509,eth0`IRQ 10I/O 0x31010base2
`options 3c509 irq=10,11`첫 card IRQ10둘째 card IRQ11

Boot parameter는 I/O·IRQ·media를, module option은 IRQ를 바꿉니다.

Full-duplex 필수 조건
3c509B 또는 3c589B10baseT RJ-45Full-duplex switch 또는 직접 연결 NIC양쪽 duplex 강제

세 조건을 모두 만족해야 합니다.

Auto-negotiation 제약
3c509B 설정Link partner결과
Full-duplex 강제Full-duplex 강제정상
Full-duplex 강제Auto 또는 half-duplex대량 collision
Half-duplexHalf-duplex정상

3c509B는 N-way 이전 hardware여서 duplex를 협상하지 못합니다.

Transceiver code
CodeMediaDuplex
0EEPROM, 보통 10baseTHalf 강제
1AUI / DB15Half
2Undefined해당 없음
310base2 / BNCHalf
410baseT / RJ-45Half 강제
8EEPROM 설정EEPROM 설정
1210baseT / RJ-45Full 강제

Code 8과 12만 full-duplex를 활성화할 수 있습니다.

일반 문제 진단
증상가능한 원인확인·조치
`status 2011`처리보다 빠른 RX·bus 독점`/proc/interrupts`, green mode
송신되나 수신 없음ISA IRQ 충돌IRQ count 확인·line 변경
수신되나 ping 실패RoutingRoute 확인
Tx carrier error 급증Termination·media 오류Cable·transceiver 확인
PnP BIOS에서 미검출PnP 호환 문제3Com setup으로 PnP 끄기
Overclock에서 미검출EEPROM delay 부족`id_read_eeprom()` delay 증가

증상에서 먼저 확인할 자원과 설정으로 연결합니다.

Main status register
Bit상태
0x01Interrupt latch
0x02Tx overrun 또는 Rx underrun
0x04Tx complete
0x08Tx FIFO room
0x10Complete Rx packet
0x20Rx packet 시작
0x40Driver interrupt 요청
0x80Statistics counter 거의 full

각 bit는 동시에 여러 condition을 나타낼 수 있습니다.

Tx status word
Bit상태
0x02Out-of-window collision
0x04Status stack overflow
0x0816 collisions
0x10Tx underrun
0x20Tx jabber
0x40Tx interrupt requested
0x80Status valid

0x80 valid bit와 error bit를 합쳐 status 값을 해석합니다.

대표 transmit error
Status해석대표 원인
0x82Valid + out-of-window collisionHalf-duplex network의 full-duplex host
0x88Valid + 16 collisions과부하·backoff 실패·duplex mismatch

두 값 모두 driver 결함이 아닌 network configuration 문제입니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

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

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

EtherLink III 계열과 지원 model

1-39

Linux와 3Com EtherLink III 계열 Ethercard(driver v1.18c 이상)

이 문서는 3c509 driver v1.18c 이상을 위한 사용 지침과 주의사항을 담고 있습니다. 이 문서를 읽지 않고 driver를 사용해서는 안 됩니다.

Release 1.0, 2002년 2월 28일

현재 maintainer와 정정 연락처: David Ruggiero `<jdr@farfalle.com>`

소개

다음 내용은 Linux에서 3Com EtherLink III 계열 Ethernet card를 사용하는 방법에 관한 주석과 정보입니다. 가장 널리 쓰인 model number인 3c509라는 이름으로 계열 전체를 흔히 부릅니다.

이들은 모두 10 Mb/s ISA bus card입니다. 이름이 비슷한 PCI bus `3c905`, 즉 Vortex 또는 Boomerang 계열과 혼동하면 안 되지만 실제로 종종 혼동됩니다. Kernel은 `3c509.c` module로 다음 model을 지원합니다.

  • 3c509: 원래 ISA card
  • 3c509B: ISA card의 후속 revision, full-duplex 지원
  • 3c589: PCMCIA
  • 3c589B: 3c589의 후속 revision, full-duplex 지원
  • 3c579: EISA

이 문서의 상당 부분은 3c509 driver 원저자인 Donald Becker의 안내서에서 가져왔습니다. 예전 driver version에 관한 주석까지 담은 master copy는 당시 Scyld web server `http://www.scyld.com/`에 있었습니다.

.. SPDX-License-Identifier: GPL-2.0

=============================================================================
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
of the 3c509 driver. You should not use the driver without reading this file.

release 1.0

28 February 2002

Current maintainer (corrections to):
  David Ruggiero <jdr@farfalle.com>

Introduction
============

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
card's 3Com model number, 3c509. They are all 10mb/s ISA-bus cards and shouldn't
be (but sometimes are) confused with the similarly-numbered PCI-bus "3c905"
(aka "Vortex" or "Boomerang") series.  Kernel support for the 3c509 family is
provided by the module 3c509.c, which has code to support all of the following
models:

 - 3c509 (original ISA card)
 - 3c509B (later revision of the ISA card; supports full-duplex)
 - 3c589 (PCMCIA)
 - 3c589B (later revision of the 3c589; supports full-duplex)
 - 3c579 (EISA)

Large portions of this documentation were heavily borrowed from the guide
written the original author of the 3c509 driver, Donald Becker. The master
copy of that document, which contains notes on older versions of the driver,
currently resides on Scyld web server: http://www.scyld.com/.

Card 설정 override

40-61

특수 driver 기능

Card 설정 override

Driver는 감지한 `IOADDR`, IRQ, transceiver 설정을 boot 또는 load 시점에 덮어쓸 수 있습니다. 일반적으로는 full-duplex 활성화 외에는 필요하지 않습니다.

LILO parameter 예시는 다음과 같습니다.

ether=10,0x310,3,0x3c509,eth0

첫 번째로 발견한 3c509 card를 IRQ 10, base I/O `0x310`, transceiver type 3(10base2)으로 구성합니다. I/O address를 override할 때 다른 card 종류와 충돌하지 않도록 `0x3c509` flag를 반드시 설정해야 합니다.

Driver를 module로 load하면 IRQ만 override할 수 있습니다. 두 card를 각각 IRQ 10과 IRQ 11로 설정하는 module option은 다음과 같습니다.

options 3c509 irq=10,11
Special Driver Features
=======================

Overriding card settings

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
needed except to enable full-duplex mode (see below). An example of the syntax
for LILO parameters for doing this::

    ether=10,0x310,3,0x3c509,eth0

This configures the first found 3c509 card for IRQ 10, base I/O 0x310, and
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
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
option::

   options 3c509 irq=10,11

Full-duplex 조건과 auto-negotiation 경고

62-106

Full-duplex mode

v1.18c driver부터 3c509B의 full-duplex 기능을 지원합니다. 이를 활성화해 정상적으로 사용하려면 세 조건을 모두 만족해야 합니다.

(a) Hardware가 full-duplex를 지원하는 EtherLink III model이어야 합니다. 3c509 계열에서 지원이 확실한 것은 ISA bus의 3c509B와 PCMCIA의 3c589B입니다. `B`가 없는 원래 3c509·3c589, MCA bus의 3c529, EISA bus의 3c579는 full-duplex를 지원하지 않습니다.

(b) AUI(thick-net)나 10base2(thin-net/coax)가 아니라 RJ-45 connector를 쓰는 10baseT transceiver를 사용해야 합니다. AUI와 10base2 cabling은 물리적으로 full-duplex가 불가능합니다.

(c) 가장 중요하게, 3c509B의 link partner도 full-duplex를 지원해야 합니다. 일반적으로 hub가 아닌 full-duplex Ethernet switch이거나 crossover cable로 직접 연결한 다른 system의 full-duplex NIC입니다.

Full-duplex mode는 `ethtool`로 활성화할 수 있습니다.

매우 중요한 full-duplex 주의사항

3c509B hardware의 full-duplex 지원은 현대 NIC보다 훨씬 제한적입니다. Physical layer에서는 full-duplex를 완전히 지원하지만 현재 Ethernet auto-negotiation(N-way) 규격이 만들어지기 전에 설계되었습니다.

따라서 3c509B 계열은 어떤 방식으로 초기화해도 link partner와 full-duplex를 자동 협상할 수 없고 실제로 하지 않습니다. 3c509B에서 full-duplex를 켰다면 link partner도 독립적으로 full-duplex로 강제 설정해야 할 가능성이 매우 높습니다.

상대편을 강제 설정하지 않으면 적어도 대량의 packet collision을 포함한 심각한 문제가 생깁니다. Network card나 switch의 auto-negotiation을 끄고 duplex mode를 강제해야 하는 매우 드문 사례입니다.

Full-duplex mode
================

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
must be met:

(a) You must have a Etherlink III card model whose hardware supports full-
duplex operations. Currently, the only members of the 3c509 family that are
positively known to support full-duplex are the 3c509B (ISA bus) and 3c589B
(PCMCIA) cards. Cards without the "B" model designation do *not* support
full-duplex mode; these include the original 3c509 (no "B"), the original
3c589, the 3c529 (MCA bus), and the 3c579 (EISA bus).

(b) You must be using your card's 10baseT transceiver (i.e., the RJ-45
connector), not its AUI (thick-net) or 10base2 (thin-net/coax) interfaces.
AUI and 10base2 network cabling is physically incapable of full-duplex
operation.

(c) Most importantly, your 3c509B must be connected to a link partner that is
itself full-duplex capable. This is almost certainly one of two things: a full-
duplex-capable  Ethernet switch (*not* a hub), or a full-duplex-capable NIC on
another system that's connected directly to the 3c509B via a crossover cable.

Full-duplex mode can be enabled using 'ethtool'.

.. warning::

  Extremely important caution concerning full-duplex mode

  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.

Transceiver type code

107-132

사용 가능한 transceiver type

Driver v1.18c 이상에서 사용할 수 있는 code는 다음과 같습니다.

  • 0: EEPROM configuration의 transceiver type, 보통 10baseT이며 half-duplex 강제
  • 1: AUI(thick-net, DB15 connector)
  • 2: 정의되지 않음
  • 3: 10base2(thin-net, coax, BNC connector)
  • 4: 10baseT(RJ-45 connector), half-duplex 강제
  • 8: Card EEPROM configuration에서 transceiver type과 duplex mode를 함께 가져옴
  • 12: 10baseT(RJ-45 connector), full-duplex 강제

Driver v1.18c 이전에는 code 0부터 4까지만 지원했습니다. 새 code 8과 12만 card에서 감지한 EEPROM 설정과 관계없이 full-duplex를 활성화할 수 있습니다.

이 설계는 예전 driver에서 단순히 upgrade했을 때 기존 설치에서 full-duplex가 자동으로 켜지는 일을 막습니다. Full-duplex는 code 8 또는 12로 항상 명시적으로 활성화해야 합니다.

Transceiver type은 `ethtool`로 변경할 수 있습니다.

Available Transceiver Types
===========================

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
1  AUI (thick-net / DB15 connector)
2  (undefined)
3  10base2 (thin-net == coax / BNC connector)
4  10baseT (RJ-45 connector); force half-duplex mode
8  transceiver type and duplex mode taken from card's EEPROM config settings
12 10baseT (RJ-45 connector); force full-duplex mode
== =========================================================================

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
full-duplex mode, no matter what the card's detected EEPROM settings might be.
This insured that merely upgrading the driver from an earlier version would
never automatically enable full-duplex mode in an existing installation;
it must always be explicitly enabled via one of these code in order to be
activated.

The transceiver type can be changed using 'ethtool'.

Error message와 일반적인 문제

133-186

Error message 해석과 일반적인 문제

Error message

eth0: Infinite loop in interrupt, status 2011.

이 message는 해당 interrupt cycle에서 driver가 처리할 일이 너무 많았음을 나타내며 대체로 해롭지 않습니다. Status `0x2011`이면 card에서 packet을 제거하는 속도보다 더 빠르게 packet을 받고 있다는 뜻입니다. 정상 동작에서는 드물거나 발생하지 않아야 합니다.

가능한 원인은 다음과 같습니다.

  • Keyboard activity가 없을 때 processor 속도를 낮추는 `green` mode가 활성화됨
  • 다른 device나 driver가 bus를 독점하거나 interrupt를 disable함. `/proc/interrupts`에서 과도한 interrupt count를 확인하십시오. Timer tick interrupt는 항상 다른 항목보다 빠르게 증가해야 합니다.

수신 packet 없음

3c509, 3c562, 3c589가 packet 전송에는 성공하지만 `/proc/net/dev`나 `ifconfig`에서 수신이 전혀 없다면 interrupt line 문제일 가능성이 큽니다. `/proc/interrupts`에서 card가 실제 interrupt를 생성하는지 확인하십시오.

Interrupt count가 증가하지 않으면 두 device가 같은 ISA IRQ line을 쓰는 물리적 충돌일 가능성이 큽니다. 흔한 사례는 IRQ 10 또는 IRQ 5의 sound card와 충돌하는 것입니다. 가장 쉬운 해결책은 3c509를 다른 interrupt line으로 옮기는 것입니다. Packet은 수신하지만 `ping`이 되지 않으면 routing 문제입니다.

`/proc/net/dev`에 Tx carrier error가 보고됨

EtherLink III가 packet을 전송하는 것처럼 보이지만 `/proc/net/dev`의 `Tx carrier errors`가 Tx packet count만큼 빠르게 증가하면 network termination이 없거나 잘못된 media transceiver를 선택했을 가능성이 큽니다.

ISA PnP BIOS system에서 3c509B가 감지되지 않음

업데이트된 driver는 대부분의 PnP BIOS에서 동작하지만 전부는 아닙니다. 3Com이 제공한 setup program으로 PnP 지원을 끄면 해결할 수 있습니다.

Overclock된 system에서 3c509가 감지되지 않음

`id_read_eeprom()`의 delay time을 현재 값 500에서 5000처럼 매우 큰 값으로 늘리십시오.

Interpretation of error messages and common problems
----------------------------------------------------

Error Messages
^^^^^^^^^^^^^^

eth0: Infinite loop in interrupt, status 2011.
These are "mostly harmless" message indicating that the driver had too much
work during that interrupt cycle. With a status of 0x2011 you are receiving
packets faster than they can be removed from the card. This should be rare
or impossible in normal operation. Possible causes of this error report are:

   - a "green" mode enabled that slows the processor down when there is no
     keyboard activity.

   - some other device or device driver hogging the bus or disabling interrupts.
     Check /proc/interrupts for excessive interrupt counts. The timer tick
     interrupt should always be incrementing faster than the others.

No received packets
^^^^^^^^^^^^^^^^^^^

If a 3c509, 3c562 or 3c589 can successfully transmit packets, but never
receives packets (as reported by /proc/net/dev or 'ifconfig') you likely
have an interrupt line problem. Check /proc/interrupts to verify that the
card is actually generating interrupts. If the interrupt count is not
increasing you likely have a physical conflict with two devices trying to
use the same ISA IRQ line. The common conflict is with a sound card on IRQ10
or IRQ5, and the easiest solution is to move the 3c509 to a different
interrupt line. If the device is receiving packets but 'ping' doesn't work,
you have a routing problem.

Tx Carrier Errors Reported in /proc/net/dev
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


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
likely have an unterminated network or the incorrect media transceiver selected.

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
with all. This can be fixed by disabling PnP support using the 3Com-supplied
setup program.

3c509 card is not detected on overclocked machines
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Increase the delay time in id_read_eeprom() from the current value, 500,
to an absurdly high value, such as 5000.

Status register와 transmit error 해석

187-249

Status와 error message 해독

Main status register의 bit는 다음과 같습니다.

  • `0x01`: Interrupt latch
  • `0x02`: Tx overrun 또는 Rx underrun
  • `0x04`: Tx 완료
  • `0x08`: Tx FIFO 공간 사용 가능
  • `0x10`: 완전한 Rx packet 도착
  • `0x20`: Rx packet 도착 시작
  • `0x40`: Driver가 interrupt를 요청함
  • `0x80`: Statistics counter가 거의 가득 참

Transmit(Tx) status word의 bit는 다음과 같습니다.

  • `0x02`: Window 밖 collision
  • `0x04`: Status stack overflow, 정상적으로는 불가능
  • `0x08`: 16회 collision
  • `0x10`: Tx underrun, PCI bus bandwidth 부족
  • `0x20`: Tx jabber
  • `0x40`: Tx interrupt 요청
  • `0x80`: Status 유효, 항상 설정되어야 함

Transmit error가 발생하면 driver는 다음과 같은 status message를 냅니다.

eth0: Transmit error, Tx status register 82

일반적으로 관찰되는 값은 `0x82`와 `0x88`입니다.

`0x82`는 window 밖 collision입니다. 일반적으로 half-duplex network에서 다른 Ethernet host를 잘못 full-duplex로 설정했을 때 발생합니다.

`0x88`은 16회 collision입니다. Network가 매우 바쁘거나 다른 host가 collision 뒤에 올바르게 backoff하지 않을 때 발생합니다. `0x82`와 섞여 나타나면 host 하나를 잘못 full-duplex로 설정한 결과입니다.

두 error 모두 수정해야 할 network 문제이며 driver 오동작을 뜻하지 않습니다.

이 문서의 revision history

2002년 2월 28일 v1.0, DR: 새 문서. 주요 부분은 Becker의 원래 3c509 문서를 기반으로 작성했습니다.

Decoding Status and Error Messages
----------------------------------


The bits in the main status register are:

=====        ======================================
value         description
=====        ======================================
0x01         Interrupt latch
0x02         Tx overrun, or Rx underrun
0x04         Tx complete
0x08         Tx FIFO room available
0x10         A complete Rx packet has arrived
0x20         A Rx packet has started to arrive
0x40         The driver has requested an interrupt
0x80         Statistics counter nearly full
=====        ======================================

The bits in the transmit (Tx) status word are:

=====        ============================================
value        description
=====        ============================================
0x02        Out-of-window collision.
0x04        Status stack overflow (normally impossible).
0x08        16 collisions.
0x10        Tx underrun (not enough PCI bus bandwidth).
0x20        Tx jabber.
0x40        Tx interrupt requested.
0x80        Status is valid (this should always be set).
=====        ============================================


When a transmit error occurs the driver produces a status message such as::

   eth0: Transmit error, Tx status register 82

The two values typically seen here are:

0x82
^^^^

Out of window collision. This typically occurs when some other Ethernet
host is incorrectly set to full duplex on a half duplex network.

0x88
^^^^

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
error is mixed with 0x82 errors it is the result of a host incorrectly set
to full duplex (see above).

Both of these errors are the result of network problems that should be
corrected. They do not represent driver malfunction.


Revision history (this file)
============================

28Feb02 v1.0  DR   New; major portions based on Becker original 3c509 docs