[vortex-bug] 3c905B dead after kernel upgrade
Stephan Herrmann
stephan@cs.tu-berlin.de
Tue Aug 27 16:40:04 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