요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
.. 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 <[email protected]>
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/.
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 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.
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'.
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.
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
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
EtherLink III 계열과 지원 model
1-39Linux와 3Com EtherLink III 계열 Ethercard(driver v1.18c 이상)
이 문서는 3c509 driver v1.18c 이상을 위한 사용 지침과 주의사항을 담고 있습니다. 이 문서를 읽지 않고 driver를 사용해서는 안 됩니다.
Release 1.0, 2002년 2월 28일
현재 maintainer와 정정 연락처: David Ruggiero `<[email protected]>`
소개
다음 내용은 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 <[email protected]>
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-106Full-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-186Error 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-249Status와 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
요약·해설
3c509.rst:1-2493c509 driver는 EtherLink III 10 Mb/s ISA·PCMCIA·EISA card를 지원합니다. `B` revision의 10baseT에서만 제한적인 full-duplex가 가능하며 자동 협상을 지원하지 않으므로 link 양쪽을 모두 강제 설정해야 합니다. IRQ 충돌, media 선택, status bit를 이용한 오래된 ISA 환경의 진단 절차도 함께 다룹니다.
Bus와 full-duplex 지원 여부를 구분합니다.
Boot parameter는 I/O·IRQ·media를, module option은 IRQ를 바꿉니다.
세 조건을 모두 만족해야 합니다.
3c509B는 N-way 이전 hardware여서 duplex를 협상하지 못합니다.
Code 8과 12만 full-duplex를 활성화할 수 있습니다.
증상에서 먼저 확인할 자원과 설정으로 연결합니다.
각 bit는 동시에 여러 condition을 나타낼 수 있습니다.
0x80 valid bit와 error bit를 합쳐 status 값을 해석합니다.
두 값 모두 driver 결함이 아닌 network configuration 문제입니다.