[vortex] 3c905C not auto-negotiating full duplex 100BaseT

David LANDGREN dlandgre@bpinet.com
Thu, 27 Sep 2001 10:41:04 +0200


|> # mii-diag eth0
|> Basic registers of MII PHY #0:  0000 0000 0000 0000 0000 0000 0000 0000.
|
|This is wrong -- the transceiver should PHY #24.
|
|> dmesg contains:
|> 3c59x.c 16Aug00 Donald Becker and others
|> http://www.scyld.com/network/vortex.html
|> eth0: 3Com 3c905C Tornado at 0xe800,  00:xx:xx:xx:xx:xx, IRQ 11
|>   8K byte-wide RAM 5:3 Rx:Tx split, 10baseT interface.
|
|The card should be set to "Autonegotiate" for this driver version.
|
|Either change the EEPROM setting or get an updated driver.

Given that I haven't found out how to play with the EEPROM to set the card
to autonegotiate, I updated the driver (aside: I would like to mention that
http://www.scyld.com/network/updates.html is very well written and easy to
follow. I wish all documentation was this clear). I couldn't unload the
module (device busy), so I rebooted the box and dmesg now reports:

[...]
3c59x.c:v0.99U 7/30/2001 Donald Becker, becker@scyld.com
  http://www.scyld.com/network/vortex.html
eth0: 3Com 3c905C Tornado at 0xe800,  00:50:da:4a:37:65, IRQ 11
  8K buffer 5:3 Rx:Tx split, 10baseT interface.
  MII transceiver found at address 24, status 780d.
  Using bus-master transmits and whole-frame receives.

mii-diag reports

# mii-diag eth0
Basic registers of MII PHY #24:  1000 780d 0040 6176 0541 0000 0000 0000.
 Basic mode control register 0x1000: Auto-negotiation enabled.
 You have link beat, and everything is working OK.
 Your link partner does not do autonegotiation, and this transceiver type
  does not report the sensed link speed.
   End of basic transceiver information.

# mii-diag -r eth0
Restarting negotiation...
Basic registers of MII PHY #24:  1000 780d 0040 6176 0541 0000 0000 0000.
 Basic mode control register 0x1000: Auto-negotiation enabled.
 You have link beat, and everything is working OK.
 Your link partner does not do autonegotiation, and this transceiver type
  does not report the sensed link speed.
   End of basic transceiver information.

Just for completeness, lsmod reports

[...]
3c59x                  20956   1
pci-scan                3516   1  [3c59x]

(so I know I have pci-scan in there too).

What's wrong with this picture? The link partner is an HP ProCurve 1600,
and the port in question is configured for autoneg. In fact all ports on
that switch are, in the unlikely event that I traced cables incorrectly.

Further info: I have the same model card, same model PC, same switch, but
running under FreeBSD 4.2 and its ifconfig reports

xl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        inet x.x.x.x netmask 0xffffffff broadcast x.x.x.x
        inet6 fe80::xxx:xxx:xxxx:xxxx%xl0 prefixlen 64 scopeid 0x1
        ether 00:xx:xx:xx:xx:xx
        media: autoselect (100baseTX <full-duplex>) status: active

I would like to know whether I should be doing something like

insmod 3c95x.o options=x

where x is one of 4, 5, 0x204, 0x205...

Or is there something else I should be doing?

Thanks,
David