dec 21143 : Problem FULLDUPLEX Performance

Bill Paul wpaul@ctr.columbia.edu
Tue Nov 30 13:32:32 1999


>   Hi .
     
>   I use linux redhat 6.0 kernel 2.2.9 on my dual pII 500 ,
>   with a netcard 21143 ( labeled Intel ), works fine
>   when i set manually to options 13 that disable fullduplex .
     
>   The system in half duplex perform 5Mbytes/s transfer
>   but in autodetect ( netcard in 100TX FD) the performance
>   descrease to 200Kbytes/s .
                 
>   I have tryed varius switch , and i've changed the netcard,
>   but the problem persist .
   
>   Have anyone a solution
>   Thank you very much for any respose or solution .

This sounds like a driver bug, however it may be only a bug in the
particular version of the driver that you have. I don't know what
driver comes with the 2.2.9 kernel, but it's probably not as up to
date as the one Donald Becker distributes from his web site.

The problem you describe sounds familiar, and is related to the
design differences between the 21140 and the 21143. Both chips
support 10mps and 100mbps in either full or half duplex, however
the 21143 also supports NWAY autonegotiation. This allows you to
create 10/100 NIC designs with autonegotiation without having to
use an MII transeceiver. However in adding the NWAY support, DEC/Intel
changed the behavior of some of the existing registers in a way
which is not obvious unless you stare at the 21143 manual for a
while.

In CSR6, there is a bit that can be used to enable and disable
full duplex operation. With the 21140, that's all that this bit
does: when you set it, the chip operates in full duplex mode,
otherwise it operates in half duplex mode. However with the 21143,
this bit has another meaning depending on whether you have NWAY
autonegotiation turned on or not. When autonegotiation is disabled,
the bit can be used to enable or disable full duplex mode as before,
however when autonegotiation is switched on, the same bit controls
whether or not the 21143 advertises 10Mbps full duplex mode to its
link partner.

This means that in order to make autoneg work properly, you really
have to do the following:

1)  Set the chip for 10baseT half-duplex mode: NWAY autonegotiation
    only works in this mode.
2)  Set the full duplex bit in CSR6 and all the appropriate bits in
    CSR14 to advertise all of the desired media selections.
3)  Turn autoneg on.
4)  Wait for NWAY to complete.
5)  Turn autoneg *off*.
6)  Program the chip to use the autonegotiated mode (i.e. the best
    media settings common to both link partners).
7)  Keep an eye on the link state and if the link goes down (NIC is
    unplugged, other side wants to renegotiate, etc...), go back to
    step 1.

Step 5 above is the kicker. If you autonegotiate full duplex with the
link partner, you *must* turn off autonegotiation in order to configure
the 21143 to actually operate in full duplex mode. If you leave autoneg
turned on, setting the full duplex bit in CSR6 has no effect.

This sounds almost exactly like what's happening to you: when you
set the card to autoneg mode, it properly negotiates 100Mbps full
duplex with the switch, however the driver then tries to set the chip
for full duplex mode while autonegotiation is still tunred on, which
doesn't work. So the switch is operating in full duplex mode, but the
21143 is still operating in half duplex mode, and this media setting
mismatch is what's killing your performance.

You don't say exactly what card you have, however I'm guessing it's
probably a Digital DE500-BA (currently being distributed by Cabletron)
since this is the only one I know of that uses a non-MII design, and the
problem I have described does not occur with boards that use an MII
transceiver in conjunction with the 21143 chip. (This same design is
also used for the built-in 10/100 ethernet on certain DEC Alpha
machines.)

I can also guess that you are using an old driver version since I'm
positive Donald Becker has encountered this problem already and dealt
with it, so you should try downloading an updated version of tulip.c
from his site (http://cesdis.gsfc.nasa.gov/linux/drivers).

-Bill

-- 
=============================================================================
-Bill Paul            (212) 854-6020 | System Manager, Master of Unix-Fu
Work:         wpaul@ctr.columbia.edu | Department of Electrical Engineering
Home:  wpaul@skynet.ctr.columbia.edu | Columbia University, New York City
=============================================================================
"Mulder, toads just fell from the sky!" "I guess their parachutes didn't open."
=============================================================================