[vortex] 3c905C: No MII transceiver present / 10 Mbit, half duplex, no link

Bogdan Velcea phil@rdsnet.ro
Wed Oct 8 11:12:03 2003


 Hi there !

 I have 2 ethernet cards 3Com905C (Tornado), that gives me some headaches:

1. sometimes the cards negotiate to Half-Duplex instead of Full-Duplex ( even if
a changed the cables, or the switch ), in random situations ( and sometimes on
huge amount of traffic ):

2. the utility from linux, named "mii-tool"  gives me wrong informations about
the status of my ethernet cards ( I asure you that my Cisco Switch tells me that
both NICs are on auto-100 auto-FD !):

# mii-tool
eth0: 10 Mbit, half duplex, no link
eth1: 10 Mbit, half duplex, no link

3. the utility "mii-diag" ( that I found on Scyld FTP site:
ftp://ftp.scyld.com/pub/diag/mii-diag.c with
ftp://ftp.scyld.com/pub/diag/libmii.c ) seems to not know the MII settings of my
NICs:

# mii-diag eth0
Basic registers of MII PHY #0:  0000 0000 0000 0000 0000 0000 0000 0000.
  No MII transceiver present!.
  Use '--force' to view the information anyway.

# mii-diag eth1
Basic registers of MII PHY #1:  0000 0000 0000 0000 0000 0000 0000 0000.
  No MII transceiver present!.
  Use '--force' to view the information anyway.


So I do:

# ./mii-diag --force eth0
Basic registers of MII PHY #0:  0000 0000 0000 0000 0000 0000 0000 0000.
  No MII transceiver present!.
 Basic mode control register 0x0000: Auto-negotiation disabled, with
 Speed fixed at 10 mbps, half-duplex.
 Basic mode status register 0x0000 ... 0000.
   Link status: not established.
 Link partner information is not exchanged when in fixed speed mode.
   End of basic transceiver information.

# ./mii-diag --force eth1
Basic registers of MII PHY #0:  0000 0000 0000 0000 0000 0000 0000 0000.
  No MII transceiver present!.
 Basic mode control register 0x0000: Auto-negotiation disabled, with
 Speed fixed at 10 mbps, half-duplex.
 Basic mode status register 0x0000 ... 0000.
   Link status: not established.
 Link partner information is not exchanged when in fixed speed mode.
   End of basic transceiver information.

So again, wrong informations !


4. the "vortex-diag" utility ( from the sime site ) gives me some good
information, but not that I'm interested ( like Link-State ), and strange
informations like "MAC settings: half-duplex":


# vortex-diag -v
vortex-diag.c:v2.14 12/28/2002 Donald Becker (becker@scyld.com)
 http://www.scyld.com/diag/index.html
Index #0: Found a 3c905C Tornado 100baseTx adapter at 0xe400.
 Station address 00:01:02:ae:6b:a8.
  Receive mode is 0x05: Normal unicast.
 Indication enable is 06c6, interrupt enable is 0000.
 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:ae:6b:a8.
 Configuration options 0052.
Saved EEPROM settings of a 3Com Vortex/Boomerang:
 3Com Node Address 00:01:02:AE:6B:A8 (used as a unique ID only).
 OEM Station address 00:01:02:AE:6B:A8 (used as the ethernet address).
  Device ID 9200,  Manufacturer ID 6d50.
  Manufacture date (MM/DD/YYYY) 8/4/2000, division H, product ER.
  No BIOS ROM is present.
 Transceiver selection: 100baseTX.
   Options: negotiated duplex, link beat required.
 PCI Subsystem IDs: Vendor 10b7 Device 1000.
 100baseTx 10baseT.
  Vortex format checksum is incorrect (90 vs. 10b7).
  Cyclone format checksum is correct (00 vs. 00).
  Hurricane format checksum is incorrect (0x29 vs. 00).
 MII PHY found at address 24, status 782d.
 MII PHY 0 at #24 transceiver registers:
   1000 782d 0040 6176 0101 41e1 0003 0000
   0000 0000 0000 0000 0000 0000 0000 0000
   1000 0300 0000 0000 0000 02db 0400 0000
   003b 853e 0f00 ff40 002b 0000 80a0 000b.
Index #1: Found a 3c905C Tornado 100baseTx adapter at 0xe800.
 Station address 00:04:76:1c:a4:de.
  Receive mode is 0x05: Normal unicast.
 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:04:76:1c:a4:de.
 Configuration options 0052.
Saved EEPROM settings of a 3Com Vortex/Boomerang:
 3Com Node Address 00:04:76:1C:A4:DE (used as a unique ID only).
 OEM Station address 00:04:76:1C:A4:DE (used as the ethernet address).
  Device ID 9200,  Manufacturer ID 6d50.
  Manufacture date (MM/DD/YYYY) 1/30/2001, division H, product MW.
  No BIOS ROM is present.
 Transceiver selection: 100baseTX.
   Options: force full duplex, link beat required.
 PCI Subsystem IDs: Vendor 10b7 Device 1000.
 100baseTx 10baseT.
  Vortex format checksum is incorrect (25 vs. 10b7).
  Cyclone format checksum is correct (0xb5 vs. 0xb5).
  Hurricane format checksum is incorrect (0x9c vs. 0xb5).
 MII PHY found at address 24, status 782d.
 MII PHY 0 at #24 transceiver registers:
   1000 782d 0040 6176 05e1 41e1 0003 0000
   0000 0000 0000 0000 0000 0000 0000 0000
   1000 0300 0000 0000 0000 00b3 0300 0000
   003b 853e 0f00 ff40 002b 0000 80a0 000b.
 Use '-a' or '-aa' to show device registers,
     '-e' to show EEPROM contents, -ee for parsed contents,
  or '-m' or '-mm' to show MII management registers.

5. I managed to see only once that the informations from all 3 utilities gived
me the good informations like: Link-State=On, Full Duplex, 100BaseTX,
Autonegociate; but after a cold reboot ( shutdown ) was like usualy :(

6. I forgot to say that I tryed even to force the settings with this utilities
and/or with "modprobe 3c59x full_duplex=1 options=4" !

What do you advice me to do about 3c905C NIC and kernel module 3c59x ?
It is the driver ( kernel module ) buggy ? or the NIC ?

Thanks in advance.