[vortex] Problems detecting 100Mbps with 3c59x (Vortex)

Donald Becker becker@scyld.com
Mon Dec 30 14:37:01 2002


On Mon, 30 Dec 2002, CJ Kucera wrote:

> I've got a couple of "3c595 100BaseTX [Vortex]" cards which have to be
> coerced very strongly into believing they're on a 100BaseTx-FD network.
> I've got a 100Mbps hub/swtich (just some cheap thing from Netgear) which
> works fine for my other 100Mbps network cards (my other PCs autodetect
> the rate just fine).  Here's the output from mii-diag on another PC on
> the network plugged into the same switch as the 3c595 card:

First: do not force full duplex!

When your switch allows forcing the setting, you have a long-term
network administration problem.
When your switch cannot be set, you have an immediate bug.

> >   Bus  0, device   9, function  0:
> >     Ethernet controller: 3Com Corporation 3c595 100BaseTX [Vortex] (rev 0).
> This is on a Linux Debian system running kernel 2.4.20.  The box the card
> is currently in is a 233MHz Cyrix MII processor; the other machine is
> a 90MHz Pentium.
...
> >   Manufacture date (MM/DD/YYYY) 6/5/1996, division 6, product BU.

I don't recommend using an old 590 series card if you care about
performance.
Even a rtl8139 will have far better performance.

> So there's definitely some kind of problem there.  Running
> "vortex-diag -aef", I notice that it gives me conflicting kinds of
> transceivers:

What is confliciting?
The part has both 100baseTx and 10baseT transceiver connections.
It defaults to 10baseT.

...
> so I downloaded the "current" version (labeled "0.99Xf") and tried that
> one out.  Without giving any options to the insmod or modprobe line,
> this driver functioned the same as the older driver.  The link light
> on the back of the NIC was giving me 10Mbps, and the mii-diag and
> vortex-diag programs gave similar results.

Hmmm, 'mii-diag' didn't produce accurate output?

...
>   3) At any rate, why isn't the proper speed of the network being
>      autodetected by *either* of the drivers?  The only way I've been able
>      to get things running properly is by forcing the options.

The '10baseT' setting is correct -- the driver detects the 10baseT link
beat from the switch (autonegotiation takes place on the 10baseT link
signal) and remains at 10Mbps.  If you had a 100baseTx repeater, or
100baseTx only switch, the 3c595 would have switch to 100baseTx (half
duplex).

> However, adding the
> "options=4 full_duplex=1" arguments into the module seemed to produce
> the correct results.  Here's the modprobe:
> 
> > pci-scan.c:v1.11 8/31/2002  Donald Becker <becker@scyld.com> http://www.scyld.com/linux/drivers.html
> > 3c59x.c:v0.99Xf 11/17/2002 Donald Becker, becker@scyld.com
> >   http://www.scyld.com/network/vortex.html
> > eth0: Overriding PCI latency timer (CFLT) setting of 32, new value is 248.

Note that this is required for the 3c595 and 3c590 boards.

> > eth0: 3Com 3c595 Vortex 100baseTx at 0xb800,  00:a0:24:a4:2b:2b, IRQ 10
> >   64K buffer 1:1 Rx:Tx split, autoselect/10baseT interface.
> >   Media override to transceiver type 4 (100baseTX).

Correct.
  (I should add a warning about forced full duplex.)

> And here's the output of "mii-diag -v":
.
> >  Basic mode control register 0x2100: Auto-negotiation disabled, with
> >  Speed fixed at 100 mbps, full-duplex.

This is accurate.

Note that you can also use
   mii-diag -F 100baseTx

> >  You have link beat, and everything is working OK.
> >    This transceiver is capable of  100baseTx-FD 100baseTx 10baseT-FD 10baseT.
> >    Unable to perform Auto-negotiation, negotiation not complete.

Pay attention to that last line.

> >  Transceiver/media interfaces available:  100baseTx 10baseT.
> > Transceiver type in use:  100baseTX.
> >  MAC settings: full-duplex.

OK, this is accurate.

-- 
Donald Becker				becker@scyld.com
Scyld Computing Corporation		http://www.scyld.com
410 Severn Ave. Suite 210		Scyld Beowulf cluster system
Annapolis MD 21403			410-990-9993