Subject: Re: [patch 2.4.28-pre3] 3c59x: resync with 2.6

From: Russell King <[email-masked]>
Date: Fri, 8 Oct 2004 19:13:24 +0100

On Fri, Oct 08, 2004 at 12:13:07PM -0400, John W. Linville wrote:
> Backport of current 3c59x driver (minus EISA/sysfs stuff) from 2.6 to
> 2.4.  This should ease further maintenance in 2.4.
> ---
> I've been chasing some 3c59x driver problems on both 2.4.x and 2.6.x
> kernels.  The 3c59x driver was pretty far out of sync between the two
> trees, so I thought it made sense to sync them back up.

Ah, if someone's looking at the 3c59x driver then please look into the
NWAY autonegotiation code - even maybe update it to use mii.c.

Currently 3c59x is rather buggy - it's a fairly simple bug.  Consider
this:

# mii-tool -v
eth0: negotiated 100baseTx-HD, link ok
  product info: TDK 78Q2120 rev 11
  basic mode:   autonegotiation enabled
  basic status: autonegotiation complete, link ok
  capabilities: 100baseTx-HD 10baseT-HD
  advertising:  100baseTx-HD 10baseT-HD
  link partner: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD flow-control

and then wonder why we end up like this:

eth0: Setting full-duplex based on MII #0 link partner capability of 45e1.

Obviously completely bogus.  Luckily, there isn't that much traffic
to this card _and_ it's connected to a switch so it doesn't interfere
much with other network traffic.  However, it is _dog_ slow when doing
large transfers to/from it.

FYI, it's:

04:00.0 Ethernet controller: 3Com Corporation 3c575 [Megahertz] 10/100 LAN CardBus (rev 01)

aka 3CCFE575BT.  The BT version only has a HD-capable MII transceiver,
whereas the CT version has a FD-capable MII transceiver fitted.

-- 
Russell King
 Linux kernel    2.6 ARM Linux   - http://www.arm.linux.org.uk/
 maintainer of:  2.6 PCMCIA      - http://pcmcia.arm.linux.org.uk/
                 2.6 Serial core