[realtek] CardBus 8139too hangs when sending packets > 1472 bytes

Ansgar W. Konermann ansgar.konermann@inf.tu-dresden.de
Fri Apr 19 18:39:01 2002


Hello Donald, hello everybody.

I have a problem with the realtek 8139too.c driver. In combination
with my system setup, it seems to hang the whole system whenever I 
try to send PING packets larger than 1472 bytes. Probably it also 
hangs the system with other applications than "ping", but I was not 
able to test that yet. I have no clue why the card works for small 
packets, but fails when the packets become larger.

Problem description:
I can send small ping packets up to a specific size and receive
the answer from the peer. If the packets get larger, the system
hangs. Since it's a laptop, neither the keyboard nor the soft-off
power button work anymore. I have to remove the AC power cord and
remove the battery to get the system back working... (in a rather
rude way).

When I issue:
"ping -s 1472 192.168.10.3", i get this output:
PING 192.168.10.3 (102.168.10.3): 1472 octets data
1480 octets from 192.168.10.3 icmp_seq=0 ttl=255 time=1.3 ms
1480 octets from 192.168.10.3 icmp_seq=1 ttl=255 time=1.2 ms
1480 octets from 192.168.10.3 icmp_seq=2 ttl=255 time=1.2 ms
1480 octets from 192.168.10.3 icmp_seq=3 ttl=255 time=1.2 ms
...

So 1472 data bytes are still ok. But when I try to send one more 
byte of data, the following happens.

"ping -s 1473 192.168.10.3" results in:
PING 192.168.10.3 (102.168.10.3): 1573 octets data
1481 octets from 192.168.10.3 icmp_seq=0 ttl=255 time=1.5 ms
[SYSTEM HANGS]

One more interesting detail: the activity LED of the NIC still
flashes irregularly (!! - this is clearly NOT 1 Hz as it's supposed
to be when pinging). However, the activity LED at the hub's port
which the NIC is connected to DOES NOT (strange, isn't it?)

I'd be very glad if somebody could have a look at my system 
configuration (see below) and point me to the right direction.
I've been trying for some days now. The card is working ok 
under MS Windows ME (in a different computer however). What could
be wrong - what can I do to correct it and get it working?


System configuration details:
=============================

Contents:

1. NIC
2. Kernel
3. Driver
3. PCI bus (lspci)

1. NIC in use:
==============

- "Unex MD010C" (10/100 Mbps Fast Ethernet PC Card)
- card is connected to a 100 Mbps hub in half duplex mode

<"cardctl status" output>
Socket 0:
  3.3V CardBus card
  function 0: [ready]
Socket 1:
  no card
</"cardctl status" output>

<"cardctl ident" output>
Socket 0:
  product info: "CardBus PC Card", "Fast Ethernet CardBus PC Card"
  manfid: 0x0000, 0x021b
  function: 6 (network)
Socket 1:
  no product info available
</"cardctl ident" output>



2. Kernel
=========

Kernel version is 2.4.18
- PCMCIA and CardBus support activated in kernel configuration
- Power management turned OFF (neither AGP nor ACPI)
- Kernel configuration file available upon request.

3. Driver
=========
  
Driver name and version: 8139too.c, Version 0.9.24

After inserting the NIC into a pcmcia slot, the system loads
the 8139too driver and logs the following messages:

<syslog>
Apr 19 23:58:19 eagle kernel: cs: cb_alloc(bus 1): vendor 0x10ec, device
0x8139
Apr 19 23:58:19 eagle kernel: PCI: Enabling device 01:00.0 (0000 -> 0003)
Apr 19 23:58:19 eagle kernel: 8139too Fast Ethernet driver 0.9.24
Apr 19 23:58:19 eagle kernel: PCI: Setting latency timer of device 01:00.0 to
64
Apr 19 23:58:19 eagle kernel: eth0: RealTek RTL8139 Fast Ethernet at
0xc483b000, 00:10:60:5a:00:12, IRQ 11
Apr 19 23:58:19 eagle kernel: [...]
[...]
Apr 19 23:58:20 eagle kernel: cs: IO port probe 0x0c00-0x0cff: clean.
Apr 19 23:58:20 eagle kernel: cs: IO port probe 0x0800-0x08ff: excluding
0x800-0x807
Apr 19 23:58:20 eagle kernel: cs: IO port probe 0x0100-0x04ff: excluding
0x330-0x337 0x388-0x38f 0x398-0x39f 0x4d0-0x4d7
Apr 19 23:58:20 eagle kernel: cs: IO port probe 0x0a00-0x0aff: clean.
Apr 19 23:58:20 eagle kernel: eth0: Setting half-duplex based on
auto-negotiated partner ability 0000.
Apr 19 23:59:04 eagle login[151]: ROOT LOGIN on `tty1'
[...]
</syslog>

4. PCI bus
==========

<"lspci" output>
00:00.0 Host bridge: Intel Corp. 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (AGP
disabled) (rev 02)
        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: 64
        Region 0: Memory at <unassigned> (32-bit, prefetchable) [size=256M]

00:06.0 VGA compatible controller: Neomagic Corporation NM2160 [MagicGraph
128XD] (rev 01) (prog-if 00 [VGA])
        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: 128 (4000ns min, 63750ns max)
        Interrupt: pin A routed to IRQ 0
        Region 0: Memory at fd000000 (32-bit, prefetchable) [size=16M]
        Region 1: Memory at fea00000 (32-bit, non-prefetchable) [size=2M]
        Region 2: Memory at fed00000 (32-bit, non-prefetchable) [size=1M]

00:07.0 Bridge: Intel Corp. 82371AB/EB/MB PIIX4 ISA (rev 01)
        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

00:07.1 IDE interface: Intel Corp. 82371AB/EB/MB PIIX4 IDE (rev 01) (prog-if
80 [Master])
        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: 64
        Region 4: I/O ports at fcd0 [size=16]
 
00:07.2 USB Controller: Intel Corp. 82371AB/EB/MB PIIX4 USB (rev 01) (prog-if
00 [UHCI])
        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: 64
        Interrupt: pin D routed to IRQ 9
        Region 4: I/O ports at fce0 [size=32]
 
00:07.3 Bridge: Intel Corp. 82371AB/EB/MB PIIX4 ACPI (rev 01)
        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 9
 
00:0a.0 CardBus bridge: O2 Micro, Inc. 6832 (rev 02)
        Subsystem: O2 Micro, Inc. 6832
        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
        Interrupt: pin A routed to IRQ 11
        Region 0: Memory at 10000000 (32-bit, non-prefetchable) [size=4K]
        Bus: primary=00, secondary=01, subordinate=04, sec-latency=176
        Memory window 0: 10400000-107ff000 (prefetchable)
        Memory window 1: 10800000-10bff000
        I/O window 0: 00004000-000040ff
        I/O window 1: 00004400-000044ff
        BridgeCtl: Parity- SERR- ISA- VGA- MAbort- >Reset- 16bInt- PostWrite+
        16-bit legacy interface ports at 0001
 
00:0a.1 CardBus bridge: O2 Micro, Inc. 6832 (rev 02)
        Subsystem: O2 Micro, Inc. 6832
        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
        Interrupt: pin B routed to IRQ 10
        Region 0: Memory at 10001000 (32-bit, non-prefetchable) [size=4K]
        Bus: primary=00, secondary=05, subordinate=08, sec-latency=176
        Memory window 0: 10c00000-10fff000 (prefetchable)
        Memory window 1: 11000000-113ff000
        I/O window 0: 00004800-000048ff
        I/O window 1: 00004c00-00004cff
        BridgeCtl: Parity- SERR- ISA- VGA- MAbort- >Reset- 16bInt- PostWrite+
        16-bit legacy interface ports at 0001
 
01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C
(rev 10)
        Subsystem: Billionton Systems Inc: Unknown device 0200
        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: 64 (8000ns min, 16000ns max)
        Interrupt: pin A routed to IRQ 11
        Region 0: I/O ports at 4000 [size=256]
        Region 1: Memory at 10800000 (32-bit, non-prefetchable) [size=512]
        Capabilities: [50] 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-
</"lspci" output>

-- 
Best regards, 
    Ansgar W. Konermann

--- Hello, I am a message footer. -------------------------------------