NETDEV WATCHDOG transmit error; 3c905B card, kernel 2.6.1 (long post)

Joaquín Pérez <[email protected]> Wed, 21 Jan 2004 12:28:50 -0300
Newsgroups gmane.linux.drivers.vortex.devel
Organization Intersoft
Message-ID <[email protected]>
Hello there!

I've been having a little bit of trouble with my 3C905B-TX NM Fast Etherlink 
XL PCI network card (yes, quite a mouthful, but that's what it says on the 
card). Whenever the traffic gets heavy (for example, running a bittorrent 
client) the network stops working. I can reproduce this situation, I run 
Azureus (a Java torrent client) and it goes wham almost immediately. 
Sometimes it will happen with other applications (so it's not 
torrent-related) but with torrent I can reproduce it at will.

I have attached the output of vortex-diag and mii-diag. "_ok" is when 
everything is running smoothly, "_bad" is taken after the network won't go 
anymore. Usually I have to turn off the machine and wait a while, if I reboot 
immediately it won't work.

The module is loaded with debug=7 and in kern.log this is what it prints:

NETDEV WATCHDOG: eth0: transmit timed out
Jan 21 12:21:53 ptolomeo kernel: eth0: transmit timed out, tx_status 00 status 
e000.
Jan 21 12:21:53 ptolomeo kernel:   diagnostics: net 0cd8 media 8880 dma 
000000a0 fifo 8000
Jan 21 12:21:53 ptolomeo kernel:   Flags; bus-master 1, dirty 12257(1) current 
12273(1)
Jan 21 12:21:53 ptolomeo kernel:   Transmit list 1d9db2a0 vs. dd9db2a0.
Jan 21 12:21:53 ptolomeo kernel:   0: @dd9db200  length 800005ea status 
8c0005ea
Jan 21 12:21:53 ptolomeo kernel:   1: @dd9db2a0  length 800005de status 
0c0105de
Jan 21 12:21:53 ptolomeo kernel:   2: @dd9db340  length 800005de status 
0c0105de
Jan 21 12:21:53 ptolomeo kernel:   3: @dd9db3e0  length 800005de status 
0c0105de
Jan 21 12:21:53 ptolomeo kernel:   4: @dd9db480  length 800005de status 
0c0105de
Jan 21 12:21:53 ptolomeo kernel:   5: @dd9db520  length 800005de status 
0c0005de
Jan 21 12:21:53 ptolomeo kernel:   6: @dd9db5c0  length 800005de status 
0c0005de
Jan 21 12:21:53 ptolomeo kernel:   7: @dd9db660  length 800005ea status 
0c0005ea
Jan 21 12:21:53 ptolomeo kernel:   8: @dd9db700  length 800005bc status 
0c0005bc
Jan 21 12:21:53 ptolomeo kernel:   9: @dd9db7a0  length 8000024e status 
0c00024e
Jan 21 12:21:53 ptolomeo kernel:   10: @dd9db840  length 8000024e status 
0c00024e
Jan 21 12:21:53 ptolomeo kernel:   11: @dd9db8e0  length 8000024e status 
0c00024e
Jan 21 12:21:53 ptolomeo kernel:   12: @dd9db980  length 800005ea status 
0c0005ea
Jan 21 12:21:53 ptolomeo kernel:   13: @dd9dba20  length 800005ea status 
0c0005ea
Jan 21 12:21:53 ptolomeo kernel:   14: @dd9dbac0  length 800005ea status 
0c0005ea
Jan 21 12:21:53 ptolomeo kernel:   15: @dd9dbb60  length 800005ea status 
8c0005ea
Jan 21 12:21:53 ptolomeo kernel: eth0: Resetting the Tx ring pointer.
Jan 21 12:21:55 ptolomeo kernel: boomerang_interrupt. status=0xe081
Jan 21 12:21:55 ptolomeo kernel: eth0: interrupt, status e081, latency 5 
ticks.
Jan 21 12:21:55 ptolomeo kernel: eth0: In interrupt loop, status e081.
Jan 21 12:21:55 ptolomeo kernel: eth0: vortex_error(), status=0xe081
Jan 21 12:21:55 ptolomeo kernel: eth0: Updating stats.
Jan 21 12:21:55 ptolomeo kernel: eth0: exiting interrupt, status e000.

I've been googling since yesterday and I found this problem widely reported, 
yet none of the solutions proposed fits me. I'm running a 2.6.1 kernel and 
I'm willing to work on this to fix it!

(Besides, the nvnet card that comes with my motherboard won't work, so if this 
3Com doesn't either, I've run out of NICs!)

Thanks for your help,
Joaquin
vortexdiag_ok.txt (text/plain, 3.6 KB)
         a) Run 'vortex-diag -aaee' and 'mii-diag -v' when the card is
            working correctly.  Save the output.

mii-diag.c:v2.07 11/15/2002 Donald Becker ([email protected])
 http://www.scyld.com/diag/index.html
Using the default interface 'eth0'.
  Using the new SIOCGMIIPHY value on PHY 24 (BMCR 0x3000).
 Basic mode control register 0x3000: Auto-negotiation enabled.
 You have link beat, and everything is working OK.
   This transceiver is capable of  100baseTx-FD 100baseTx 10baseT-FD 10baseT.
   Able to perform Auto-negotiation, negotiation complete.
 Your link partner is generating 10baseT link beat  (no autonegotiation).
   End of basic transceiver information.

 MII PHY #24 transceiver registers:
   3000 786d 0000 0000 01e1 0020 0004 2001
   0000 0000 0000 0000 0000 0000 0000 0000
   0000 0ecf 1fdd 0000 0000 0005 2001 0000
   0000 2040 07cf 1c11 0191 1000 0000 0000

   vortex-diag.c:v2.14 12/28/2002 Donald Becker ([email protected])
 http://www.scyld.com/diag/index.html
Index #1: Found a 3c905B Cyclone 100baseTx adapter at 0xb800.
 Station address 00:01:02:1b:88:5f.
  Receive mode is 0x07: Normal unicast and all multicast.
The Vortex chip may be active, so FIFO registers will not be read.
To see all register values use the '-f' flag.
Initial window 4, registers values by window:
  Window 0: 0000 0000 0000 0000 f5f5 00bf 0000 0000.
  Window 1: FIFO FIFO 0000 0000 0000 0000 0000 2000.
  Window 2: 0100 1b02 5f88 0000 0000 0000 000a 4000.
  Window 3: 0000 0180 05ea 0000 000a 0800 0800 6000.
  Window 4: 0000 0000 0000 0cd8 0001 8880 7500 8000.
  Window 5: 1ffc 0000 0000 0600 0807 06ce 06c6 a000.
  Window 6: 0000 1000 0000 bf01 2100 4e1a e883 c000.
  Window 7: 0000 0000 0000 0000 0000 0000 0002 e000.
Vortex chip registers at 0xb800
  0xB810: **FIFO** 00000000 0000007a *STATUS*
  0xB820: 00000020 00000000 00080000 00000004
  0xB830: 00000000 79f4860c 1d9bc050 00080004
  0xB840: 00d58dce 00000000 00000000 00000000
  0xB850: 00000000 00000000 00000000 00000000
  0xB860: 00000000 00000000 00000000 00000000
  0xB870: 00001000 00000000 01600140 00000000
  DMA control register is 00000020.
   Tx list starts at 00000000.
   Tx FIFO thresholds: min. burst 256 bytes, priority with 128 bytes to empty.
   Rx FIFO thresholds: min. burst 256 bytes, priority with 128 bytes to full.
   Poll period Tx 00 ns.,  Rx 0 ns.
   Maximum burst recorded Tx 320,  Rx 352.
 Indication enable is 06c6, interrupt enable is 06ce.
 No interrupt sources are pending.
 Transceiver/media interfaces available:  100baseTx 10baseT.
Transceiver type in use:  Autonegotiate.
 MAC settings: half-duplex.
 Station address set to 00:01:02:1b:88:5f.
 Configuration options 000a.
EEPROM format 64x16, configuration table at offset 0:
    00: 0001 021b 885f 9055 0083 0048 4743 6d50
  0x08: 2971 0000 0001 021b 885f 0010 0000 0022
  0x10: 32a2 0000 0000 0180 0000 0000 0000 10b7
  0x18: 9055 000a 0000 0000 0000 0000 0000 0000
  0x20: 0024 0000 0000 0000 0000 0000 0000 0000
  0x28: 0000 0000 0000 0000 0000 0000 0000 0000
      ...

 The word-wide EEPROM checksum is 0x59a8.
Saved EEPROM settings of a 3Com Vortex/Boomerang:
 3Com Node Address 00:01:02:1B:88:5F (used as a unique ID only).
 OEM Station address 00:01:02:1B:88:5F (used as the ethernet address).
  Device ID 9055,  Manufacturer ID 6d50.
  Manufacture date (MM/DD/YYYY) 4/3/2000, division H, product CG.
  No BIOS ROM is present.
 Transceiver selection: Autonegotiate.
   Options: negotiated duplex, link beat required.
 PCI Subsystem IDs: Vendor 10b7 Device 9055.
 100baseTx 10baseT.
  Vortex format checksum is incorrect (4c vs. 10b7).
  Cyclone format checksum is correct (0x24 vs. 0x24).
  Hurricane format checksum is correct (0x24 vs. 0x24).
vortexdiag_bad.txt (text/plain, 3.7 KB)
         a) Run 'vortex-diag -aaee' and 'mii-diag -v' when the card is
            working correctly.  Save the output.

mii-diag.c:v2.07 11/15/2002 Donald Becker ([email protected])
 http://www.scyld.com/diag/index.html
Using the default interface 'eth0'.
  Using the new SIOCGMIIPHY value on PHY 24 (BMCR 0x3000).
 Basic mode control register 0x3000: Auto-negotiation enabled.
 You have link beat, and everything is working OK.
   This transceiver is capable of  100baseTx-FD 100baseTx 10baseT-FD 10baseT.
   Able to perform Auto-negotiation, negotiation complete.
 Your link partner is generating 10baseT link beat  (no autonegotiation).
   End of basic transceiver information.

 MII PHY #24 transceiver registers:
   3000 786d 0000 0000 01e1 0020 0004 2001
   0000 0000 0000 0000 0000 0000 0000 0000
   0000 0008 0810 0000 0000 0005 2001 0000
   0000 2040 07cf 1c11 0111 1000 0000 0000

   vortex-diag.c:v2.14 12/28/2002 Donald Becker ([email protected])
 http://www.scyld.com/diag/index.html
Index #1: Found a 3c905B Cyclone 100baseTx adapter at 0xb800.
 Station address 00:01:02:1b:88:5f.
  Receive mode is 0x07: Normal unicast and all multicast.
The Vortex chip may be active, so FIFO registers will not be read.
To see all register values use the '-f' flag.
Initial window 7, registers values by window:
  Window 0: 0000 0000 0000 0000 f5f5 00bf 0000 0000.
  Window 1: FIFO FIFO 0000 0000 0000 0000 0000 2000.
  Window 2: 0100 1b02 5f88 0000 0000 0000 000a 4000.
  Window 3: 0000 0180 05ea 0000 000a 0000 0800 6000.
  Window 4: 0000 0000 0800 0cd8 0001 8880 0000 8000.
  Window 5: 1ffc 0000 0000 0600 0807 06ce 06c6 a000.
  Window 6: 0000 0000 1000 0000 0000 0000 0000 c000.
  Window 7: 0000 0000 0000 0000 0000 0000 0002 e000.
Vortex chip registers at 0xb800
  0xB810: **FIFO** 00000000 00000000 *STATUS*
  0xB820: 000000a0 1d9bc2a0 00080000 00000004
  0xB830: 00008000 cb5834a8 1d9bc0e0 00080004
  0xB840: 004fcc00 00000000 00000000 00000000
  0xB850: 00000000 00000000 00000000 00000000
  0xB860: 00000000 00000000 00000000 00000000
  0xB870: 00001040 00000000 01600000 00000000
  DMA control register is 000000a0.
   DMA control register is 000000a4 (during Tx Stall).
   Tx list starts at 1d9bc2a0.
   Tx FIFO thresholds: min. burst 256 bytes, priority with 128 bytes to empty.
   Rx FIFO thresholds: min. burst 256 bytes, priority with 128 bytes to full.
   Poll period Tx 00 ns.,  Rx 0 ns.
   Maximum burst recorded Tx 0,  Rx 352.
 Indication enable is 06c6, interrupt enable is 06ce.
 No interrupt sources are pending.
 Transceiver/media interfaces available:  100baseTx 10baseT.
Transceiver type in use:  Autonegotiate.
 MAC settings: half-duplex.
 Station address set to 00:01:02:1b:88:5f.
 Configuration options 000a.
EEPROM format 64x16, configuration table at offset 0:
    00: 0001 021b 885f 9055 0083 0048 4743 6d50
  0x08: 2971 0000 0001 021b 885f 0010 0000 0022
  0x10: 32a2 0000 0000 0180 0000 0000 0000 10b7
  0x18: 9055 000a 0000 0000 0000 0000 0000 0000
  0x20: 0024 0000 0000 0000 0000 0000 0000 0000
  0x28: 0000 0000 0000 0000 0000 0000 0000 0000
      ...

 The word-wide EEPROM checksum is 0x59a8.
Saved EEPROM settings of a 3Com Vortex/Boomerang:
 3Com Node Address 00:01:02:1B:88:5F (used as a unique ID only).
 OEM Station address 00:01:02:1B:88:5F (used as the ethernet address).
  Device ID 9055,  Manufacturer ID 6d50.
  Manufacture date (MM/DD/YYYY) 4/3/2000, division H, product CG.
  No BIOS ROM is present.
 Transceiver selection: Autonegotiate.
   Options: negotiated duplex, link beat required.
 PCI Subsystem IDs: Vendor 10b7 Device 9055.
 100baseTx 10baseT.
  Vortex format checksum is incorrect (4c vs. 10b7).
  Cyclone format checksum is correct (0x24 vs. 0x24).
  Hurricane format checksum is correct (0x24 vs. 0x24).