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

Seb Wills saw27@mrao.cam.ac.uk
Wed Mar 6 15:09:01 2002


Hi folks,

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.

Basically, with this network card, anything over TCP goes incredibly
slowly. I'm on a 100Mbit ethernet, but I'm getting transfer speeds of a
few 10's of K a second over a plain rsh connection! Same with FTP, scp,
etc. On the other hand, transferring files over NFS (which I believe uses
UDP, not TCP) gives about 4Mb/sec! So it seems to be a problem specific to
TCP.

I've tried another (very similar; only difference is that the model number
starts 3CC instead of 3CX) card in the same laptop, and it works fine.
I've also tried this card in another laptop and it suffers the same
problem. In windows 2000, the card works fine, too, so its not a hardware
problem.

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.

Does anyone have any suggestions?

Full details follow.

First, the output of "mii-tool -v -w". I start with the PCMCIA card
totally unplugged, then plug it in, upon which it says:

19:38:56 eth0: no link
19:38:57 negotiated 100baseTx-HD, link ok

OK, so this says it's in half-duplex mode, as does the output of mii-diag
(see later). But look in the syslog:

Mar  6 19:38:56 yell kernel: cs: cb_alloc(bus 2): vendor 0x10b7, device 0x5157
Mar  6 19:38:56 yell kernel: PCI: Enabling device 02:00.0 (0000 -> 0003)
Mar  6 19:38:56 yell kernel: 02:00.0: 3Com PCI 3CCFE575BT Cyclone CardBus at 0x4000. Vers LK1.1.16
Mar  6 19:38:56 yell kernel: PCI: Setting latency timer of device 02:00.0 to 64
Mar  6 19:38:56 yell cardmgr[864]: initializing socket 0
Mar  6 19:38:56 yell cardmgr[864]: socket 0: 3Com 3CCFE575B/3CXFE575B Fast EtherLink XL
Mar  6 19:38:59 yell kernel: eth0: Setting full-duplex based on MII #0 link partner capability of 41e1.

Note the last line - a few seconds *after* mii-tool reports that HD has
been negiotiated, the kernel reports that it's going to full-duplex mode
(which the card does not support, according to mii-diag!).

Finally, the output of "mii-diag -v", run long after all the above has
taken place, is:

mii-diag.c:v2.03 11/5/2001 Donald Becker (becker@scyld.com)
 http://www.scyld.com/diag/index.html
Using the default interface 'eth0'.
 The autonegotiated capability is 00a0.
The autonegotiated media type is 100baseTx.
 Basic mode control register 0x3000: Auto-negotiation enabled.
 You have link beat, and everything is working OK.
   This transceiver is capable of  100baseTx 10baseT.
   Able to perform Auto-negotiation, negotiation complete.
 Your link partner advertised 41e1: 100baseTx-FD 100baseTx 10baseT-FD
10baseT.
   End of basic transceiver information.

 MII PHY #0 transceiver registers:
   3000 282d 0300 e54b 00a1 41e1 0001 0000
   0000 0000 0000 0000 0000 0000 0000 0000
   0140 002d 0600 0000 0000 0000 0000 0000
   0000 0000 0000 0000 0000 0000 0000 0000.
 Basic mode control register 0x3000: Auto-negotiation enabled.
 Basic mode status register 0x282d ... 282d.
   Link status: established.
   Capable of  100baseTx 10baseT.
   Able to perform Auto-negotiation, negotiation complete.
 Vendor ID is 00:c0:39:--:--:--, model 20 rev. 11.
   Vendor/Part: TDK transceiver (unknown type).
 I'm advertising 00a1: 100baseTx 10baseT
   Advertising no additional info pages.
   IEEE 802.3 CSMA/CD protocol.
 Link partner capability is 41e1: 100baseTx-FD 100baseTx 10baseT-FD 10baseT.
   Negotiation  completed.
  TDK format vendor-specific registers 16..18 are 0x0140 0x002d 0x0600
      Link polarity is detected as normal.
      Auto-negotiation complete, 100Mbps half duplex.
      Rx link in pass state, PLL locked.
      Events since last read:  Jabber  Negotiation page received  Link detection fault  Link status change





So mii-diag still says its in half-duplex mode, despite the syslog message
saying it's going to full-duplex. Whatever the truth, something's
definitely wrong. I can send tcpdumps if that would help diagnose the
problem.

thanks in advance for any assistance,

Seb Wills
University of Cambridge, UK.