#43 0.9.18pre4:eth0: transmit timed out

misc
closed-fixed
Jeff Garzik
8139too (65)
5
2001-10-26
2001-07-11
Malte Cornils
No

Hello,

I've tried reading LKML archives etc for this problem
and the advice usually is "fixed in the latest kernel
versions". So I've tried 2.2.18 (not with the 8139too
driver but Don Becker's, which is IIRC actually known
to have this bug) and your 8139too driver with 2.4.0
upwards to 2.4.6 and 2.4.6ac2.

After bootup, if I do something which takes up more
bandwidth than ICQ and IRC, soon I get in the syslog:

NETDEV WATCHDOG: eth0: transmit timed out
eth0: Tx queue start entry 4346 dirty entry 4342.
eth0: Tx descriptor 0 is 00002000.
eth0: Tx descriptor 1 is 00002000.
eth0: Tx descriptor 2 is 00002000. (queue head)
eth0: Tx descriptor 3 is 00002000.
eth0: Setting half-duplex based on auto-negotiated
partner ability 0000.

and this makes the network stop for a few seconds
before the Watchdog resets the ethernet card and makes
it work again, dropping my download throughput from
approx. 400 kB/s to 10 kB/s. Ugh.

I've also tried building the 8139too-0.9.18, but even
pointing to the stock kernel source for 2.4.6 I get the
error at module insertion time that the kernel module
is compiled for 2.4.6-pre1 instead of 2.4.6. I then
used a hex editor to mask out the -pre1, it did work
then but I still got the error.

I've also tried just setting the #define RTL8139_DEBUG
1, but this bombed out too at some later point:

/* define to 1 to enable copious debugging info */
/* #undef RTL8139_DEBUG */
#define RTL8319_DEBUG 1

is what I have at the beginning, but at row 1277 if I
don't take out the #ifdefs at

#ifdef RTL8139_DEBUG
void *ioaddr = tp->mmio_addr;
#endif

it stops at line 1317. Seems as if the RTL8139 define
is not *really* set or is unset somewhere. It's not
really important anyway (however, after taking out the
ifdefs it compiled, though running this module made the
console spit out "eth0: Setting full-duplex based on
auto-negotiated partner ability ffff." and something
about 100Mbps. While I'm too stupid to figure out
whether I really need full- or half-duplex I'm
connected to a 10 Mbit hub so 100Mbps is clearly wrong.
Very weird, I was probably doing something silly.)

OK, without having enabled debug info I'll also attach
the lspci -vvv and the rtl8139diag output.

Another question: How do I explicitly disable
auto-configuration and set the 8139 to full-duplex or
half-duplex manually so I can try which one works?

If you need further information, please feel free to
contact me via mail (e.g. malte@cornils.net), I'll
answer almost everything (because I tried switching
motherboards, processors, a new RTL8319C, network
cables... and I always got the same error. Argh. It
also happened on my old SuSE distro as it does now on
Debian unstable. I can try Mandrake if you like, too
;-))

So, now the output of lspci -vvv:

wh36-b407:/home/mcornils/8139too-0.9.18# lspci -vvv
00:00.0 Host bridge: VIA Technologies, Inc. VT8363/8365
[KT133/KM133] (rev 03)
Subsystem: Elitegroup Computer Systems: Unknown
device 0987
Control: I/O- Mem+ BusMaster+ SpecCycle-
MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66Mhz- UDF- FastB2B- ParErr-
DEVSEL=medium >TAbort- <TAbort- <MAbort+ >SERR- <PERR-
Latency: 32
Region 0: Memory at d0000000 (32-bit,
prefetchable) [size=64M]
Capabilities: [a0] AGP version 2.0
Status: RQ=31 SBA+ 64bit- FW-
Rate=x1,x2
Command: RQ=0 SBA- AGP- 64bit- FW-
Rate=<none>
Capabilities: [c0] Power Management version 2
Flags: PMEClk- DSI- D1- D2-
AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0
PME-

00:01.0 PCI bridge: VIA Technologies, Inc. VT8363/8365
[KT133/KM133 AGP] (prog-if 00 [Normal decode])
Control: I/O+ Mem+ BusMaster+ SpecCycle-
MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66Mhz+ UDF- FastB2B- ParErr-
DEVSEL=medium >TAbort- <TAbort- <MAbort+ >SERR- <PERR-
Latency: 0
Bus: primary=00, secondary=01, subordinate=01,
sec-latency=0
I/O behind bridge: 0000f000-00000fff
Memory behind bridge: fff00000-000fffff
Prefetchable memory behind bridge:
fff00000-000fffff
BridgeCtl: Parity- SERR- NoISA+ VGA- MAbort-
>Reset- FastB2B-
Capabilities: [80] Power Management version 2
Flags: PMEClk- DSI- D1+ D2-
AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0
PME-

00:07.0 ISA bridge: VIA Technologies, Inc. VT82C686
[Apollo Super South] (rev 40)
Subsystem: VIA Technologies, Inc. VT82C686/A
PCI to ISA Bridge
Control: I/O+ Mem+ BusMaster+ SpecCycle-
MemWINV- VGASnoop- ParErr- Stepping+ SERR- FastB2B-
Status: Cap+ 66Mhz- UDF- FastB2B- ParErr-
DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 0
Capabilities: [c0] Power Management version 2
Flags: PMEClk- DSI- D1- D2-
AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0
PME-

00:07.1 IDE interface: VIA Technologies, Inc. Bus
Master IDE (rev 06) (prog-if 8a [Master SecP PriP])
Subsystem: VIA Technologies, Inc. Bus Master
IDE
Control: I/O+ Mem+ BusMaster+ SpecCycle-
MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66Mhz- UDF- FastB2B+ ParErr-
DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 32
Region 4: I/O ports at c000 [size=16]
Capabilities: [c0] Power Management version 2
Flags: PMEClk- DSI- D1- D2-
AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0
PME-

00:07.4 Host bridge: VIA Technologies, Inc. VT82C686
[Apollo Super ACPI] (rev 40)
Subsystem: Elitegroup Computer Systems: Unknown
device 0987
Control: I/O- Mem- BusMaster- SpecCycle-
MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66Mhz- UDF- FastB2B+ ParErr-
DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Interrupt: pin ? routed to IRQ 5
Capabilities: [68] Power Management version 2
Flags: PMEClk- DSI- D1- D2-
AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0
PME-

00:07.5 Multimedia audio controller: VIA Technologies,
Inc. AC97 Audio Controller (rev 50)
Subsystem: Elitegroup Computer Systems: Unknown
device 0987
Control: I/O+ Mem- BusMaster- SpecCycle-
MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66Mhz- UDF- FastB2B- ParErr-
DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Interrupt: pin C routed to IRQ 10
Region 0: I/O ports at cc00 [size=256]
Region 1: I/O ports at d000 [size=4]
Region 2: I/O ports at d400 [size=4]
Capabilities: [c0] Power Management version 2
Flags: PMEClk- DSI- D1- D2-
AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0
PME-

00:0a.0 Ethernet controller: Realtek Semiconductor Co.,
Ltd. RTL-8139 (rev 10)
Subsystem: Realtek Semiconductor Co., Ltd.
RT8139
Control: I/O+ Mem+ BusMaster+ SpecCycle-
MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66Mhz- UDF- FastB2B+ ParErr-
DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 32 (8000ns min, 16000ns max)
Interrupt: pin A routed to IRQ 11
Region 0: I/O ports at dc00 [size=256]
Region 1: Memory at d6001000 (32-bit,
non-prefetchable) [size=256]
Capabilities: [50] Power Management version 2
Flags: PMEClk- DSI- D1+ D2+
AuxCurrent=375mA PME(D0-,D1+,D2+,D3hot+,D3cold+)
Status: D0 PME-Enable- DSel=0 DScale=0
PME-

00:0b.0 VGA compatible controller: ATI Technologies Inc
3D Rage LT Pro (rev dc) (prog-if 00 [VGA])
Subsystem: ATI Technologies Inc: Unknown device
0044
Control: I/O+ Mem+ BusMaster+ SpecCycle-
MemWINV- VGASnoop- ParErr- Stepping+ SERR- FastB2B-
Status: Cap+ 66Mhz- UDF- FastB2B+ ParErr-
DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 32 (2000ns min), cache line size 08
Interrupt: pin A routed to IRQ 10
Region 0: Memory at d4000000 (32-bit,
non-prefetchable) [size=16M]
Region 1: I/O ports at e000 [size=256]
Region 2: Memory at d6000000 (32-bit,
non-prefetchable) [size=4K]
Expansion ROM at <unassigned> [disabled]
[size=128K]
Capabilities: [5c] Power Management version 1
Flags: PMEClk- DSI- D1+ D2+
AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0
PME-

00:0c.0 Multimedia video controller: Brooktree
Corporation Bt878 (rev 02)
Subsystem: Hauppauge computer works Inc.
WinTV/GO
Control: I/O- Mem+ BusMaster+ SpecCycle-
MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap- 66Mhz- UDF- FastB2B+ ParErr-
DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 32 (4000ns min, 10000ns max)
Interrupt: pin A routed to IRQ 12
Region 0: Memory at d6002000 (32-bit,
prefetchable) [size=4K]

00:0c.1 Multimedia controller: Brooktree Corporation
Bt878 (rev 02)
Subsystem: Hauppauge computer works Inc.
WinTV/GO
Control: I/O- Mem+ BusMaster+ SpecCycle-
MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap- 66Mhz- UDF- FastB2B+ ParErr-
DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 32 (1000ns min, 63750ns max)
Interrupt: pin A routed to IRQ 12
Region 0: Memory at d6003000 (32-bit,
prefetchable) [size=4K]

and now the rtl-8319-diag-output (unfortunately it was
impossible to time this so that the output is from the
exact moment where it resets the card):

rtl8139-diag.c:v2.01 1/8/2001 Donald Becker
(becker@scyld.com)
http://www.scyld.com/diag/index.html
Index #1: Found a RealTek RTL8139 adapter at 0xdc00.
RealTek chip registers at 0xdc00
0x000: 767de000 0000f63d 80000000 00000000 080825ea
9708a5ea 9108a5ea 9408a5ea
0x020: 0f52c000 0f52c600 0f52cc00 0f52d200 0de50000
0d0a0000 45784568 2000c07f
0x040: 78000600 0e00f78e 30482234 00000000 004d10c6
00000000 0080c108 00100000
0x060: 1000e00f 05e1782d 00000000 00000000 00000005
000007c0 58fab388 a438d843.
No interrupt sources are pending.
(null) indication.
The chip configuration is 0x10 0x4d, MII full-duplex
mode.
EEPROM size test returned 6, 0x204a4 / 0x2.
Parsing the EEPROM of a RealTek chip:
PCI IDs -- Vendor 0x10ec, Device 0x8139, Subsystem
0x10ec.
PCI timer settings -- minimum grant 32, maximum
latency 64.
General purpose pins -- direction 0xe1 value 0x10.
Station Address 00:E0:7D:76:3D:F6.
Configuration register 0/1 -- 0x4d / 0xc2.
EEPROM active region checksum is 0a83.
EEPROM contents:
8129 10ec 8139 10ec 8139 4020 e110 e000
767d f63d 4d10 f7c2 8001 b388 58fa 0708
d843 a438 d843 a438 d843 a438 d843 a438
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
The word-wide EEPROM checksum is 0xdda6.

BTW, why it says full-duplex mode above, I don't know.
This might be the problem (that's why I asked how to
set this manually above)

It would be so cool if you could help me out here :-)

-Malte #8-)

Discussion

  • Jeff Garzik
    Jeff Garzik
    2001-09-22

    • assigned_to: nobody --> jgarzik
     
  • Jeff Garzik
    Jeff Garzik
    2001-10-26

    • status: open --> closed-fixed
     
  • Jeff Garzik
    Jeff Garzik
    2001-10-26

    Logged In: YES
    user_id=17443

    This problem is fixed in the latest version of the driver. You
    can download the driver from the download section on this
    SourceForge web page.