[vortex] 3c905CX-TXM
Berkan Eskikaya
berkan@runtime-collective.com
Thu, 23 Nov 2000 15:44:42 +0000
Hi,
I recently bought several OEM 3Com NICs. The stickers on the bubble-wrap
said they're 3C980TX, on the cards themselves the model id is given as
3c905CX-TXM.
I haven't been able to get them working so far. The driver loads fine,
I can bring up the eth device, but the network remains unreachable.
The MII transceivers have status 0x0020 which makes me think that things
don't progress beyond the negotiation step.
I have other 3Com cards on the network -- 3c905C-TX [Fast Etherlink]
(rev 74) as reported by lspci -- which work fine, so it's probably not
a network/cabling problem.
I'm including some diagnostics below (vortex-diag/mii-diag output among
others); they will surely make more sense to some of you than this humble
user. At the end of the mail, you can also find debug messages produced
by 3Com's 3c90x driver (which fails at the ifconfig stage).
I'd really appreciate any comments/suggestions.
Cheers,
Berkan
#----------------------------------------------------------------------------
$ lspci -vv
01:05.0 Ethernet controller: 3Com Corporation 3c905C-TX [Fast Etherlink](rev 78)
Subsystem: 3Com Corporation: Unknown device 1000
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: 10 min, 10 max, 32 set, cache line size 08
Interrupt: pin A routed to IRQ 10
Region 0: I/O ports at c000
Region 1: Memory at d5000000 (32-bit, non-prefetchable)
Capabilities: [dc] Power Management version 2
Flags: PMEClk- AuxPwr- DSI- D1+ D2+ PME+
Status: D0 PME-Enable- DSel=0 DScale=2 PME-
#----------------------------------------------------------------------------
$ insmod pci-scan.o debug=7
$ insmod 3c59x.o debug=7
$ dmesg
[...]
3c59x.c:v0.99Ra 8/7/2000 Donald Becker, becker@scyld.com
http://www.scyld.com/network/vortex.html
PCI ID 920010b7 subsystem ID is 100010b7.
Found 3c905C Tornado at PCI address 0xc001, mapped IRQ 10.
eth1: 3Com 3c905C Tornado at 0xc000, 00:01:03:23:f5:b7, IRQ 10
Internal config register is 1800000, transceivers 0xa.
8K byte-wide RAM 5:3 Rx:Tx split, autoselect/Autonegotiate interface.
MII transceiver found at address 1, status 24.
MII transceiver found at address 2, status 24.
Enabling bus-master transmits and whole-frame receives.
PCI ID 12111113 subsystem ID is 92111113.
#----------------------------------------------------------------------------
$ ifconfig eth1 11.0.0.1 netmask 255.255.255.0 up
$ mii-diag eth1
Basic registers of MII PHY #1: 0000 0020 0000 0000 01e0 40a1 0003 0800.
Basic mode control register 0x0000: Auto-negotiation disabled, with
Speed fixed at 10 mbps, half-duplex.
Basic mode status register 0x0020 ... 0020.
Link status: not established.
Your link partner advertised 40a1: 100baseTx 10baseT.
#----------------------------------------------------------------------------
$ ping 11.0.0.2
PING 11.0.0.2 (11.0.0.2): 56 data bytes
--- 11.0.0.2 ping statistics ---
4 packets transmitted, 0 packets received, 100% packet loss
$ dmesg
[...]
eth1: Initial media type Autonegotiate half-duplex.
eth1: MII #1 status 0024, link partner capability 40a1, setting half-duplex.
eth1: vortex_open() irq 10 media status 8000.
eth1: Media selection timer tick happened, Autonegotiate.
eth1: MII transceiver has status 0020.
eth1: Media selection timer finished, Autonegotiate.
eth1: Media selection timer tick happened, Autonegotiate.
eth1: MII transceiver has status 0020.
eth1: Media selection timer finished, Autonegotiate.
eth1: Media selection timer tick happened, Autonegotiate.
eth1: MII transceiver has status 0020.
eth1: Media selection timer finished, Autonegotiate.
eth1: Media selection timer tick happened, Autonegotiate.
eth1: MII transceiver has status 0020.
eth1: Media selection timer finished, Autonegotiate.
eth1: Media selection timer tick happened, Autonegotiate.
eth1: MII transceiver has status 0020.
eth1: Media selection timer finished, Autonegotiate.
eth1: Queuing Tx packet, index 0.
eth1: interrupt, status 8201, latency 10 ticks.
eth1: In interrupt loop, status 8201.
eth1: exiting interrupt, status 8000.
eth1: Queuing Tx packet, index 1.
eth1: interrupt, status 8201, latency 3 ticks.
eth1: In interrupt loop, status 8201.
eth1: exiting interrupt, status 8000.
eth1: Queuing Tx packet, index 2.
eth1: interrupt, status 8201, latency 8 ticks.
eth1: In interrupt loop, status 8201.
eth1: exiting interrupt, status 8000.
eth1: Queuing Tx packet, index 3.
eth1: interrupt, status 8201, latency 3 ticks.
eth1: In interrupt loop, status 8201.
eth1: exiting interrupt, status 8000.
eth1: Queuing Tx packet, index 4.
eth1: interrupt, status 8201, latency 2 ticks.
eth1: In interrupt loop, status 8201.
eth1: exiting interrupt, status 8000.
#----------------------------------------------------------------------------
$ vortex-diag -t 17 -p 0xc000 -mm -v
vortex-diag.c:v2.03 9/26/2000 Donald Becker (becker@scyld.com)
http://www.scyld.com/diag/index.html
Assuming a 3c905C Tornado 100baseTx adapter at 0xc000.
Indication enable is 06c6, interrupt enable is 06de.
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:03:23:f5:b7.
Configuration options 0052.
Parsing the EEPROM of a 3Com Vortex/Boomerang:
3Com Node Address 00:01:03:23:F5:B7 (used as a unique ID only).
OEM Station address 00:01:03:23:F5:B7 (used as the ethernet address).
Manufacture date (MM/DD/YYYY) 9/23/2000, division H, product HN.
Options: none.
Vortex format checksum is incorrect (005d vs. 10b7).
Cyclone format checksum is incorrect (0xcd vs. 0xcb).
Hurricane format checksum is incorrect (0xe4 vs. 0xcb).
MII PHY found at address 1, status 0020.
MII PHY found at address 2, status 0020.
MII PHY found at address 3, status 0020.
MII PHY found at address 4, status 0020.
MII PHY 0 at #1 transceiver registers:
0000 0020 0000 0000 01e0 40a1 0003 0800
0000 0000 0000 0000 0000 0000 0000 0000
0600 86d0 0000 4000 0000 0000 0000 0000
0000 0600 0000 0000 0000 0b6b 0000 0000.
MII PHY 1 at #2 transceiver registers:
0000 0020 0000 0000 01e0 40a1 0003 0800
0000 0000 0000 0000 0000 0000 0000 0000
0600 86d0 0000 4000 0000 0000 0000 0000
0000 0600 0000 0000 0000 0b6b 0000 0000.
MII PHY 2 at #3 transceiver registers:
0000 0020 0000 0000 01e0 40a1 0003 0800
0000 0000 0000 0000 0000 0000 0000 0000
0600 86d0 0000 4000 0000 0000 0000 0000
0000 0600 0000 0000 0000 0b6b 0000 0000.
MII PHY 3 at #4 transceiver registers:
0000 0020 0000 0000 01e0 40a1 0003 0800
0000 0000 0000 0000 0000 0000 0000 0000
0600 86d0 0000 4000 0000 0000 0000 0000
0000 0600 0000 0000 0000 0b6b 0000 0000.
MII PHY #1 transceiver registers:
0000 0020 0000 0000 01e0 40a1 0003 0800
0000 0000 0000 0000 0000 0000 0000 0000
0600 86d0 0000 4000 0000 0000 0000 0000
0000 0600 0000 0000 0000 0b6b 0000 0000.
Basic mode control register 0x0000: Auto-negotiation disabled!
Speed fixed at 10 mbps, half-duplex.
Basic mode status register 0x0020 ... 0020.
Link status: not established.
Capable of <Warning! No media capabilities>.
Unable to perform Auto-negotiation, negotiation complete.
This transceiver has no vendor identification.
I'm advertising 01e0: 100baseTx-FD 100baseTx 10baseT-FD 10baseT
Advertising no additional info pages.
Using an unknown (non 802.3) encapsulation.
Link partner capability is 40a1: 100baseTx 10baseT.
Negotiation completed.
#----------------------------------------------------------------------------
$ vortex-diag -t 17 -p 0xc000 -a -f
vortex-diag.c:v2.03 9/26/2000 Donald Becker (becker@scyld.com)
http://www.scyld.com/diag/index.html
Assuming a 3c905C Tornado 100baseTx adapter at 0xc000.
Initial window 4, registers values by window:
Window 0: 0000 0000 e4cf 0000 8d8d 00bf ffff 0000.
Window 1: 6300 043e 0700 0000 0000 007f 0000 2000.
Window 2: 0100 2303 b7f5 0000 0000 0000 0052 4000.
Window 3: 0000 0180 05ea 0000 000a 0800 0800 6000.
Window 4: 0000 0000 0000 08c6 0001 8800 0000 8000.
Window 5: 1ffc 0000 0000 1ffc 0800 06de 06c6 a000.
Window 6: 0000 0000 0000 0000 0000 0000 0000 c000.
Window 7: 0000 0000 0000 0000 0000 0000 0000 e000.
Vortex chip registers at 0xc000
0xC010: 00000000 00000000 0000000a 00000000
0xC020: 00000020 0f094250 00080000 00001404
0xC030: 00000000 3e5fc1a1 00000000 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.
MAC settings: half-duplex.
Station address set to 00:01:03:23:f5:b7.
Configuration options 0052.
#----------------------------------------------------------------------------
$ cat /proc/interrupts
CPU0
0: 7079562 XT-PIC timer
1: 2 XT-PIC keyboard
2: 0 XT-PIC cascade
8: 1 XT-PIC rtc
10: 6 XT-PIC eth1
11: 186566 XT-PIC eth0
13: 1 XT-PIC fpu
14: 6636 XT-PIC ide0
15: 2 XT-PIC ide1
NMI: 0
#----------------------------------------------------------------------------
$ cat /proc/ioports
0000-001f : dma1
0020-003f : pic1
0040-005f : timer
0060-006f : keyboard
0070-007f : rtc
0080-008f : dma page reg
00a0-00bf : pic2
00c0-00df : dma2
00f0-00ff : fpu
0170-0177 : ide1
01f0-01f7 : ide0
02f8-02ff : serial(set)
0376-0376 : ide1
03c0-03df : vga+
03f6-03f6 : ide0
03f8-03ff : serial(set)
c000-c07f : eth1
c400-c47f : eth0
f000-f007 : ide0
f008-f00f : ide1
#==========================================================================
$ rmmod 3c59x pci-scan
$ insmod 3c90x.o debug=0x7f
$ dmesg
[...]
init_module: IN
tc90xbc_ScanDevices: IN
Tornado NIC found
3Com device eth1
Bus Mastering enabled by BIOS
Irq = a , IoAddress = c000
FillDeviceStructure: IN
FillDeviceStructure: OUT
ReadCommandLineChanges: IN index=0
SendCount = 40
ReceiveCount=40
FlowControl is enabled by default
DownPollRate is 8 by default
ReadCommandLineChanges: OUT
tc90x_AllocateSharedMemory: In
memoryBaseVirtual = cd7e0000, memoryBasePhysical =d7e0000
tc90x_AllocateSharedMemory: Out
tc90xbc_ScanDevices: OUT
NoAdapter = 1
init_module: OUT
3Com 3c90x Version 1.0.0i 1999 <linux_drivers@3com.com>
#----------------------------------------------------------------------------
$ ifconfig eth1 11.0.0.1 netmask 255.255.255.0 up
SIOCSIFFLAGS: No such device
SIOCSIFFLAGS: No such device
$ dmesg
[...]
New NICOpen: IN
RegisterAdapter: IN
SA_SHIRQ registering IRQ a
RegisterAdapter: OUT
GetAdapterProperties: IN
intStatus =e000
ioBase =c000
s/w information 1 - Full duplex disabled
s/w info1 - optimize Normal
Adapter supports power management
Adapter has BroadcastRxErrDone
Adapter has MWIErrDone
WOL is connected
GetAdapterProperties: OUT
BasicInitializeAdapter: In
BasicInitializeAdapter: Out with success
TestAdapter: IN
In WaitTimer-Time=7018a3
CHECK_DOWNLOAD_STATUS
Out WaitTimer
In WaitTimer-Time=7018ad
CHECK_DOWNLOAD_STATUS
Out WaitTimer
Packet not picked up by the hardware
TestAdapter: Out with error
NICOpen: TestAdapter failed
NICOpen: Out with error
FreeAdapterResources: IN
Releasing interrupt
Releasing WaitTimer
Releasing memory
Releasing IO port region
FreeAdapterResources: OUT
New NICOpen: IN
RegisterAdapter: IN
SA_SHIRQ registering IRQ a
RegisterAdapter: OUT
GetAdapterProperties: IN
intStatus =e400
ioBase =c000
s/w information 1 - Full duplex disabled
s/w info1 - optimize Normal
Adapter supports power management
Adapter has BroadcastRxErrDone
Adapter has MWIErrDone
WOL is connected
GetAdapterProperties: OUT
BasicInitializeAdapter: In
BasicInitializeAdapter: Out with success
TestAdapter: IN
In WaitTimer-Time=701907
CHECK_DOWNLOAD_STATUS
Out WaitTimer
In WaitTimer-Time=701911
CHECK_DOWNLOAD_STATUS
Out WaitTimer
Packet not picked up by the hardware
TestAdapter: Out with error
NICOpen: TestAdapter failed
NICOpen: Out with error
FreeAdapterResources: IN
Releasing interrupt
Releasing WaitTimer
FreeAdapterResources: OUT