[vortex] The mysteries of on-chip MII.

Bill Cattey wdc@MIT.EDU
Fri Mar 22 20:24:00 2002


Having set EEPROM location 0x000d to the toxic 0x0160 value
here are our results:

Indeed no MII's are found as reported by dmesg from a vanilla 3c59x.o 1.1.16.

PCI: Found IRQ 11 for device 02:0c.0
3c59x: Donald Becker and others. www.scyld.com/network/vortex.html
02:0c.0: 3Com PCI 3c905C Tornado at 0xdc80. Vers LK1.1.16
  ***WARNING*** No MII transceivers found!

bash-2.04# ./vortex-diag -eva
vortex-diag.c:v2.05 5/15/2001 Donald Becker (becker@scyld.com)
 http://www.scyld.com/diag/index.html
Index #1: Found a 3c905C Tornado 100baseTx adapter at 0xdc80.
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 adad 00bf ffff 0000.
  Window 1: FIFO FIFO 0700 0000 0000 003f 0000 2000.
  Window 2: b000 c9d0 60ba 0000 0000 0000 0052 4000.
  Window 3: 0000 0180 05ea 0020 000a 0800 0800 6000.
  Window 4: 0000 0000 0000 0cc6 0001 88c0 0000 8000.
  Window 5: 1ffc 0000 0000 0600 0807 06ce 06c6 a000.
  Window 6: 0000 0000 0000 3900 0000 1989 0000 c000.
  Window 7: 0000 0000 0000 0000 0000 0000 0000 e000.
Vortex chip registers at 0xdc80
  0xDC90: **FIFO** 00000000 0000001a *STATUS*
  0xDCA0: 00000020 00000000 00080000 00000004
  0xDCB0: 00000000 3b69c497 1ee3e1e0 00080004
 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: full-duplex.
 Station address set to 00:b0:d0:c9:ba:60.
 Configuration options 0052.
EEPROM contents (64 words, offset 0):
 0x000: 00b0 d0c9 ba60 9200 00ca 0000 0000 6d50
 0x008: 2940 0001 00b0 d0c9 ba60 8010 0000 00aa
 0x010: 72a2 0000 0000 0160 0000 0004 0000 1028
 0x018: 00be 000a 0000 6300 ff68 6868 0000 0024
 0x020: 00de 1030 70f0 0000 0000 0000 0000 0000
 0x028: 0000 0000 0000 0000 0000 0000 0000 0000
 0x030: 0000 0000 ffff ffff ffff ffff ffff ffff
 0x038: ffff ffff ffff ffff ffff ffff ffff ffff
 The word-wide EEPROM checksum is 0x93a1.
Saved EEPROM settings of a 3Com Vortex/Boomerang:
 3Com Node Address 00:B0:D0:C9:BA:60 (used as a unique ID only).
 OEM Station address 00:B0:D0:C9:BA:60 (used as the ethernet address).
 Manufacture date (MM/DD/YYYY) 6/10/2000, division , product .
 Options: force full duplex, link beat required.
  Vortex format checksum is incorrect (0082 vs. 1028).
  Cyclone format checksum is incorrect (0x0e vs. 0xde).
  Hurricane format checksum is correct (0xde vs. 0xde).
 MII PHY found at address 1, status 0024.
 MII PHY found at address 2, status 0024.
 MII PHY found at address 3, status 0024.
 MII PHY found at address 4, status 0024.
 MII PHY 0 at #1 transceiver registers:
   0000 0024 0000 0000 0100 45e1 0003 0800
   0000 0000 0000 0000 0000 0000 0000 0000
   0600 c611 0000 4000 0000 0000 0000 0000
   0000 0200 0000 0000 0000 0aee 0000 0000.
 MII PHY 1 at #2 transceiver registers:
   0000 0024 0000 0000 0100 45e1 0003 0800
   0000 0000 0000 0000 0000 0000 0000 0000
   0600 c611 0000 4000 0000 0000 0000 0000
   0000 0200 0000 0000 0000 0aee 0000 0000.
 MII PHY 2 at #3 transceiver registers:
   0000 0024 0000 0000 0100 45e1 0003 0800
   0000 0000 0000 0000 0000 0000 0000 0000
   0600 c611 0000 4000 0000 0000 0000 0000
   0000 0200 0000 0000 0000 0aee 0000 0000.
 MII PHY 3 at #4 transceiver registers:
   0000 0024 0000 0000 0100 45e1 0003 0800
   0000 0000 0000 0000 0000 0000 0000 0000
   0600 c611 0000 4000 0000 0000 0000 0000
   0000 0200 0000 0000 0000 0aee 0000 0000.

Following test instructions:
options=8 debug=3

dmesg from insmod:

dmesg:

PCI: Found IRQ 11 for device 02:0c.0
3c59x: Donald Becker and others. www.scyld.com/network/vortex.html
See Documentation/networking/vortex.txt
02:0c.0: 3Com PCI 3c905C Tornado at 0xdc80. Vers LK1.1.16
 00:b0:d0:c9:ba:60, IRQ 11
  product code 0000 rev 00.3 date 06-10-00
Full duplex capable
  Internal config register is 1600000, transceivers 0xa.
  8K byte-wide RAM 5:3 Rx:Tx split, autoselect/MII interface.
02:0c.0:  Media override to transceiver type 8 (Autonegotiate).
02:0c.0: Activating tranceiver ?
  MII transceiver found at address 24, status 782d.
  Enabling bus-master transmits and whole-frame receives.
eth0:  Filling in the Rx ring.
eth0: Media override to transceiver 8 (Autonegotiate).
eth0: Initial media type Autonegotiate.
eth0: MII #24 status 782d, link partner capability 45e1, info1 8010,
setting full-duplex.
eth0: vortex_up() InternalConfig 01800000.
eth0: vortex_up() irq 11 media status 88c0.
Starting AFS cache scan...found 2538 non-empty cache files (25%).
eth0: Media selection timer tick happened, Autonegotiate.
dev->watchdog_timeo=500
eth0: Media selection timer finished, Autonegotiate.

----
dmesg after bringing up timesharing et. al.

I started up a wget of my big mp3 file, and confirmed we were in SLOW mode.

Many errors in dmesg output of the form:
 Rx error: status 8c.
 Rx error: status 08.

Here is what dmesg said:

Starting AFS cache scan...found 2538 non-empty cache files (25%).
eth0: Media selection timer tick happened, Autonegotiate.
dev->watchdog_timeo=500
eth0: Media selection timer finished, Autonegotiate.
 Rx error: status 8c.
 Rx error: status 08.
 Rx error: status 8c.  (repeats 2x)
eth0: vortex_error(), status=0xe081
eth0: Media selection timer tick happened, Autonegotiate.
dev->watchdog_timeo=500
eth0: Media selection timer finished, Autonegotiate.
 Rx error: status 08.  (repeats 3x)
 Rx error: status 8c.  (repeats 2x)
 Rx error: status 08.
 Rx error: status 8c.  (repeats 3x)
 Rx error: status 08.  (repeats 2x)
 Rx error: status 8c.  (repeats 2x)
 Rx error: status 08.  (repeats 2x)
 Rx error: status 8c.
 Rx error: status 08.
eth0: vortex_error(), status=0xe481
 Rx error: status 08.  (repeats 3x)
 Rx error: status 8c.
 Rx error: status 08.
 Rx error: status 8c.
 Rx error: status 08.  (repeats 2x)
 Rx error: status 8c.
 Rx error: status 08.  (repeats 2x)
eth0: Media selection timer tick happened, Autonegotiate.
dev->watchdog_timeo=500
eth0: Media selection timer finished, Autonegotiate.
 Rx error: status 08. 
Rx error: status 8c.<alternated and repeated about 41 times>
eth0: vortex_error(), status=0xe081
 Rx error: status 8c.
 Rx error: status 08.<alternated and repeated about 25 times>
eth0: Media selection timer tick happened, Autonegotiate.
dev->watchdog_timeo=500
eth0: Media selection timer finished, Autonegotiate.
 Rx error: status 08. (repeats 2x)
 Rx error: status 8c.<alternated and repeated about 30 times>
eth0: vortex_error(), status=0xe081
 Rx error: status 08.
 Rx error: status 8c.<alternated and repeated about 25 times>
eth0: Media selection timer tick happened, Autonegotiate.
dev->watchdog_timeo=500
eth0: Media selection timer finished, Autonegotiate.
eth0: Media selection timer tick happened, Autonegotiate.
dev->watchdog_timeo=500
eth0: Media selection timer finished, Autonegotiate.
eth0: vortex_error(), status=0xe481
eth0: Media selection timer tick happened, Autonegotiate.
dev->watchdog_timeo=500
eth0: Media selection timer finished, Autonegotiate.
eth0: Media selection timer tick happened, Autonegotiate.
dev->watchdog_timeo=500
eth0: Media selection timer finished, Autonegotiate.
eth0: vortex_error(), status=0xe481
eth0: Media selection timer tick happened, Autonegotiate.
dev->watchdog_timeo=500
eth0: Media selection timer finished, Autonegotiate.

----

I think the receive errors were when I was speed testing trying to fetch
my big MP3.  They stopped happening so much when I stopped the wget.
At this point I did the mii-diag -v and -r:

bash-2.04# mii-diag -v
mii-diag.c:v2.02 5/21/2001 Donald Becker (becker@scyld.com)
 http://www.scyld.com/diag/index.html
Using the default interface 'eth0'.
 The autonegotiated capability is 0100.
The autonegotiated media type is 100baseTx-FD.
 Basic mode control register 0x1000: 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 advertised 45e1: Flow-control 100baseTx-FD 100baseTx
10baseT-FD 10baseT, w/ 802.3X flow control.
   End of basic transceiver information.

 MII PHY #24 transceiver registers:
   1000 782d 0041 6800 0501 45e1 0007 2801
   0000 0000 0000 0000 0000 0000 0000 0000
   0618 8711 0010 4001 40c8 a000 0000 0000
   d300 0220 8084 9119 0065 1aee 7fff 0000.
 Basic mode control register 0x1000: Auto-negotiation enabled.
 Basic mode status register 0x782d ... 782d.
   Link status: established.
   Capable of  100baseTx-FD 100baseTx 10baseT-FD 10baseT.
   Able to perform Auto-negotiation, negotiation complete.
 Vendor ID is 00:10:5a:--:--:--, model 0 rev. 0.
   No specific information is known about this transceiver type.
 I'm advertising 0501: Flow-control 100baseTx-FD
   Advertising no additional info pages.
   IEEE 802.3 CSMA/CD protocol.
 Link partner capability is 45e1: Flow-control 100baseTx-FD 100baseTx
10baseT-FD 10baseT.
   Negotiation  completed.
bash-2.04# mii-diag -r
Using the default interface 'eth0'.
Restarting negotiation...
Basic registers of MII PHY #24:  1000 7829 0041 6800 0501 0000 0006 2001.
 Basic mode control register 0x1000: Auto-negotiation enabled.
 Basic mode status register 0x7829 ... 7809.
   Link status: not established.
   End of basic transceiver information.

Dmesg showed three additional lines:

eth0: Media selection timer tick happened, Autonegotiate.
dev->watchdog_timeo=500
eth0: Media selection timer finished, Autonegotiate.

And the network was observed to be fast.

bash-2.04# ./vortex-diag -aev
vortex-diag.c:v2.05 5/15/2001 Donald Becker (becker@scyld.com)
 http://www.scyld.com/diag/index.html
Index #1: Found a 3c905C Tornado 100baseTx adapter at 0xdc80.
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 adad 00bf ffff 0000.
  Window 1: FIFO FIFO 0700 0000 0000 003f 0000 2000.
  Window 2: b000 c9d0 60ba 0000 0000 0000 0052 4000.
  Window 3: 0000 0180 05ea 0020 000a 0800 0800 6000.
  Window 4: 0000 0000 8000 0cc6 0001 88c0 0600 8000.
  Window 5: 1ffc 0000 0000 0600 0807 06ce 06c6 a000.
  Window 6: 0000 0000 0000 3200 0000 1c5a 020d c000.
  Window 7: 0000 0000 0000 0000 0000 0000 0000 e000.
Vortex chip registers at 0xdc80
  0xDC90: **FIFO** 00000000 0000001a *STATUS*
  0xDCA0: 00000020 00000000 00080000 00000004
  0xDCB0: 00000000 e3db1c25 01e18050 00080004
 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: full-duplex.
 Station address set to 00:b0:d0:c9:ba:60.
 Configuration options 0052.
EEPROM contents (64 words, offset 0):
 0x000: 00b0 d0c9 ba60 9200 00ca 0000 0000 6d50
 0x008: 2940 0001 00b0 d0c9 ba60 8010 0000 00aa
 0x010: 72a2 0000 0000 0160 0000 0004 0000 1028
 0x018: 00be 000a 0000 6300 ff68 6868 0000 0024
 0x020: 00de 1030 70f0 0000 0000 0000 0000 0000
 0x028: 0000 0000 0000 0000 0000 0000 0000 0000
 0x030: 0000 0000 ffff ffff ffff ffff ffff ffff
 0x038: ffff ffff ffff ffff ffff ffff ffff ffff
 The word-wide EEPROM checksum is 0x93a1.
Saved EEPROM settings of a 3Com Vortex/Boomerang:
 3Com Node Address 00:B0:D0:C9:BA:60 (used as a unique ID only).
 OEM Station address 00:B0:D0:C9:BA:60 (used as the ethernet address).
 Manufacture date (MM/DD/YYYY) 6/10/2000, division , product .
 Options: force full duplex, link beat required.
  Vortex format checksum is incorrect (0082 vs. 1028).
  Cyclone format checksum is incorrect (0x0e vs. 0xde).
  Hurricane format checksum is correct (0xde vs. 0xde).
 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 0100 45e1 0003 0800
   0000 0000 0000 0000 0000 0000 0000 0000
   0600 c610 0000 4000 0000 0000 0000 0000
   0000 0200 0000 0000 0000 0aee 0000 0000.
 MII PHY 1 at #2 transceiver registers:
   0000 0020 0000 0000 0100 45e1 0003 0800
   0000 0000 0000 0000 0000 0000 0000 0000
   0600 c610 0000 4000 0000 0000 0000 0000
   0000 0200 0000 0000 0000 0aee 0000 0000.
 MII PHY 2 at #3 transceiver registers:
   0000 0020 0000 0000 0100 45e1 0003 0800
   0000 0000 0000 0000 0000 0000 0000 0000
   0600 c610 0000 4000 0000 0000 0000 0000
   0000 0200 0000 0000 0000 0aee 0000 0000.
 MII PHY 3 at #4 transceiver registers:
   0000 0020 0000 0000 0100 45e1 0003 0800
   0000 0000 0000 0000 0000 0000 0000 0000
   0600 c610 0000 4000 0000 0000 0000 0000
   0000 0200 0000 0000 0000 0aee 0000 0000.