[vortex] 3c905B dead after kernel upgrade

Stephan Herrmann stephan@cs.tu-berlin.de
Tue Aug 27 14:17:02 2002


Hi,

I have been using the 3c59x driver for years now, and last
uptime was 231 days without any problems. Now I decided to
upgrade my kernel from 2.4.0 to 2.4.19. The result:

No single packet gets delivered through the card, but
also no error message. Same computer, no hardware change. 
Booting the old kernel restores a functional system. 

More precisely, ping on my own address is ok, ping on
the gateway is dead.

Some diagnostics:

============================================================
dmesg:
Old version (this works):
------------------------------------------------------------
3c59x.c:LK1.1.11 13 Nov 2000  Donald Becker and others. http://www.scyld.com/network/vortex.html $Revision: 1.102.2.46 $
See Documentation/networking/vortex.txt
eth0: 3Com PCI 3c905B Cyclone 100baseTx at 0xd000, PCI: Found IRQ 11 for device 00:0c.0
 00:50:04:43:7a:b5, IRQ 11
  8K byte-wide RAM 5:3 Rx:Tx split, autoselect/Autonegotiate interface.
  MII transceiver found at address 24, status 782d.
  Enabling bus-master transmits and whole-frame receives.
[drm] Initialized tdfx 1.0.0 20000928 on minor 63
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP, IGMP
IP: routing cache hash table of 8192 buckets, 64Kbytes
TCP: Hash tables configured (established 65536 bind 65536)
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
VFS: Mounted root (ext2 filesystem) readonly.
Freeing unused kernel memory: 176k freed
Adding Swap: 128516k swap-space (priority -1)
eth0: using NWAY autonegotiation
------------------------------------------------------------
new version (dead):
------------------------------------------------------------
3c59x.c:v0.99Xc 6/27/2002 Donald Becker, becker@scyld.com
  http://www.scyld.com/network/vortex.html
eth0: 3Com 3c905B Cyclone 100baseTx at 0xd000,  00:50:04:43:7a:b5, IRQ 11
  Internal config register is 01800000, transceivers 0xa.
  8K buffer 5:3 Rx:Tx split, autoselect/Autonegotiate interface.
  MII transceiver found at address 24, status 782d.
  Using bus-master transmits and whole-frame receives.
XFS mounting filesystem ide0(3,7)
eth0: Initial media type Autonegotiate half-duplex.
eth0: MII #24 status 782d, link partner capability 41e1, setting full-duplex.
eth0: vortex_open() irq 11 media status 8880.
============================================================
Using vortex-diag -aa I see this difference:
(is the interrupt enable value significant?)
------------------------------------------------------------
--- vortex.aa	Tue Aug 27 03:04:24 2002
+++ vortex.aa-new	Tue Aug 27 05:14:33 2002
@@ -1,22 +1,22 @@
 vortex-diag.c:v2.06 4/18/2002 Donald Becker (becker@scyld.com)
  http://www.scyld.com/diag/index.html
Index #1: Found a 3c905B Cyclone 100baseTx adapter at 0xd000.
 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:
+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: 5000 4304 b57a 0000 0000 0000 000a 4000.
   Window 3: 0000 0180 05ea 0020 000a 0800 0800 6000.
   Window 4: 0000 0000 0000 0cf2 0001 8880 0000 8000.
-  Window 5: 1ffc 0000 0000 0600 0807 06ce 06c6 a000.
-  Window 6: 0000 0000 0000 fb01 0100 c2ff 01c2 c000.
+  Window 5: 1ffc 0000 0000 0600 0807 06de 06c6 a000.
+  Window 6: 0000 0000 0000 2301 0100 bb3c 0000 c000.
   Window 7: 0000 0000 0000 0000 0000 0000 0000 e000.
 Vortex chip registers at 0xd000
-  0xD010: **FIFO** 00000000 0000000a *STATUS*
-  0xD020: 00000020 00000000 00080000 00000004
-  0xD030: 00000000 2f38d0c8 2ffd3180 00080004
- Indication enable is 06c6, interrupt enable is 06ce.
+  0xD010: **FIFO** 00000000 00000002 *STATUS*
+  0xD020: 00000020 01864a20 00080000 00001404
+  0xD030: 00000000 d7ba2846 018649f0 00080004
+ Indication enable is 06c6, interrupt enable is 06de.
  No interrupt sources are pending.
  Transceiver/media interfaces available:  100baseTx 10baseT.
 Transceiver type in use:  Autonegotiate.
============================================================
No difference on vortex-diag -ee
------------------------------------------------------------
vortex-diag.c:v2.06 4/18/2002 Donald Becker (becker@scyld.com)
 http://www.scyld.com/diag/index.html
Index #1: Found a 3c905B Cyclone 100baseTx adapter at 0xd000.
EEPROM format 64x16, configuration table at offset 0:
    00: 0050 0443 7ab5 9055 c6a8 0036 4e54 6d50
  0x08: 2979 0000 0050 0443 7ab5 0010 0000 002a
  0x10: 32a2 0000 0000 0180 0000 0000 0000 10b7
  0x18: 9055 000a 0000 0000 0000 0000 0000 0000
  0x20: 00a9 0000 0000 0000 0000 0000 0000 0000
      ...

 The word-wide EEPROM checksum is 0x10fb.
Saved EEPROM settings of a 3Com Vortex/Boomerang:
 3Com Node Address 00:50:04:43:7A:B5 (used as a unique ID only).
 OEM Station address 00:50:04:43:7A:B5 (used as the ethernet address).
  Device ID 9055,  Manufacturer ID 6d50.
  Manufacture date (MM/DD/YYYY) 5/8/1999, division 6, product TN.
  No BIOS ROM is present.
 Options: negotiated duplex, link beat required.
  Vortex format checksum is incorrect (00c1 vs. 10b7).
  Cyclone format checksum is correct (0xa9 vs. 0xa9).
  Hurricane format checksum is correct (0xa9 vs. 0xa9).
============================================================
No difference for mii-diag
------------------------------------------------------------
Basic registers of MII PHY #24:  3000 782d 0040 6120 01e1 41e1 0003 0000.
 The autonegotiated capability is 01e0.
The autonegotiated media type is 100baseTx-FD.
 Basic mode control register 0x3000: Auto-negotiation enabled.
 You have link beat, and everything is working OK.
 Your link partner advertised 41e1: 100baseTx-FD 100baseTx 10baseT-FD 10baseT.
   End of basic transceiver information.
============================================================
Using debug=6, every second gives one entry of this kind:
------------------------------------------------------------
Aug 27 05:16:29 laus kernel: eth0: Media selection timer tick happened, Autonegotiate full duplex.
Aug 27 05:16:29 laus kernel: eth0: MII transceiver has status 782d.
Aug 27 05:16:29 laus kernel: eth0: Media selection timer finished, Autonegotiate full duplex.
============================================================

I'm not a network guru, but our network docs say, I'm connected
to our ATM backbone via a 10Base5-Segment. I've tried _many_
combinations of module parameters, to no good. Using 2.4.0 I
just used module defaults, and it worked (still works).

Has anything like this been reported before?
Do you need more information (which)?

Thanks for any help
Stephan