[vortex-bug] full-duplex problem with 3CXFE575BT ?

Donald Becker becker@scyld.com
Wed Mar 6 19:03:00 2002

On Wed, 6 Mar 2002, Seb Wills wrote:

> I'm getting a wierd problem with a 3COM 3CXFE575BT CardBus card, which I
> hope someone might be able to help with. My system is running linux
> 2.4.9-31 (redhat 7.2). I haven't changed any module parameters or anything
> like that.
> I suspect the problem is something to do with the duplex negiotiation
> (perhaps similar to the problem described in
> http://www.tux.org/hypermail/linux-vortex-bug/2001-Feb/0008.html). What
> makes me think this is that the card reports half-duplex capability, yet
> when you plug in the PCMCIA card, there's a message in the syslog which
> says that it's enabling full-duplex mode.

Yes, that is likely what is happening.

There is something in the configuration of the card which causes the
transceiver to only advertise half duplex capabilities.

The driver is unaware that the transceiver is advertising a limited
capabilities set, and sets full duplex based on what it see from the
link partner.

>  kernel: cs: cb_alloc(bus 2): vendor 0x10b7, device 0x5157
>  kernel: 02:00.0: 3Com PCI 3CCFE575BT Cyclone CardBus at 0x4000. Vers LK1.1.16
>  cardmgr[864]: socket 0: 3Com 3CCFE575B/3CXFE575B Fast EtherLink XL
>  kernel: eth0: Setting full-duplex based on MII #0 link partner capability of 41e1.

There are two bugs here, and fixing either one will solve the problem.

There are two locations where the driver does an mdio_read(..., 5);
call to read the link partner's capability word.  This should be ANDed
with vp->advertising before using the result.

The second fix is to find out what is causing the transceiver to
advertise only half duplex modes.  I believe that it's controlled by one
of the (undocumented?) bit written into Wn2_ResetOptions.

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