Re: [Fwd: problem with dual 3com card]
Donald Becker <[email protected]>
| Newsgroups | gmane.linux.drivers.vortex.devel |
|---|---|
| Message-ID | <[email protected]> |
On Thu, 5 Jun 2003, Bogdan Costescu wrote:
> On 5 Jun 2003, maillists (josef radinger) wrote:
>
> > its clear that the combination autoneg + force does not work, but why
>
> I'll let Donald answer this question :-)
Because I've done it so very many times...
The complete answer is found by reading
http://scyld.com/expert/NWay.html
A shorter, more direct answer is found many times in the list archives
> > force force does not work (imho not ok)
>
> This is correct at least for the current Scyld driver which always uses
> the MII transceiver in autonegotiate mode for these cards. By forcing
> full-duplex, the half-duplex capabilities are not advertised anymore.
> Which means that actually this is not a "force force" situation, but again
> a "force auto" situation.
This is a driver parameter limitation from the early days of the 3c900
support in the driver.
I haven't changed the behavior in a misguided attempt at keeping
backwards compatibility.
The solution is to force the speed and duplex with
mii-diag -F 100baseTx-FDX eth0
instead of using the module option.
Why does this happen, and why is it difficult to "fix"?
Instead of interpreting "full_duplex" to mean
disable autonegotiation and force full duplex
the 3c59x driver (and only this driver) interprets it as
force full duplex and limit advertised media to FDX types.
That means if the other end is set to typical forced full duplex w/ no
autonegotiation, the transceiver fails to negotiate a common type and
gives up.
It is difficult to fix this and retain compatibility.
A transceiver can sense the link speed, but will do so only after
autonegotiation fails.
There is no way to tell a transceiver
turn off autonegotiation, but continue to sense the link speed
We can only tell it do the combination of
Use autonegotiation, advertising these types
Fall back to speed sensing if the link partner can not autonegotiate
or
Use this specific speed and duplex
Thus the driver can't assign a reasonable meaning to "full_duplex=1".
Other drivers solved this problem by deprecating "full_duplex=" and
providing a way to set the combined speed+duplex using "options=". The
common assignment is
Use option values 0x10/0x20 for 10Mbps, 0x100,0x200 for 100Mbps.
Use option values 0x10 and 0x100 for forcing half duplex fixed speed.
Use option values 0x20 and 0x200 for forcing full duplex operation.
But for some reason that I can remember, I decided that this would not
work with 3c59x.c The only conflict I can see now is with the
force-bus-master option (0x10), but that's not a real conflict as that
option only applies to the non-MII 3c590 series.
--
Donald Becker [email protected]
Scyld Computing Corporation http://www.scyld.com
914 Bay Ridge Road, Suite 220 Scyld Beowulf cluster system
Annapolis MD 21403 410-990-9993
_______________________________________________
vortex mailing list
[email protected]
http://www.scyld.com/mailman/listinfo/vortex