[vortex-bug] Re: Asymetric throughput with 3c905b NIC (workaround)

Bogdan Costescu Bogdan.Costescu@IWR.Uni-Heidelberg.De
Fri, 30 Jun 2000 21:16:51 +0200 (CEST)


On 30 Jun 2000, Regis Duchesne wrote:

> ttcp
> ----
>  A -> B OK  (93 Mb/s)
>  A <- B Bad (40 Mb/s)
> 
> This confirms my previous test
> 
> ping
> ----
>  A -> B OK (10 s.)
>  A <- B OK (10 s.)
> 
> So it seems that unidirectional works fine. This is when there is
> two-way traffic that the problem occurs.
> 
> ttcp -u
> -------
>  A -> B OK (95 Mb/s)
>  A <- B OK (95 Mb/s)
> 
> This confirms the result obtained by the ping method.

So far this also showed the difference between using TCP (ttcp) and UDP
(ping and ttcp -u). 

> OK, it seems that this one if half-duplex only. It is strange because
> autonegotiate is on, and the NIC knows the other NIC very well :)

This is the really interesting part. TCP is a bidirectional protocol while
UDP is unidirectional. So with a HD and a FD card, you can have
unidirectional UDP traffic at the maximum speed, while the bidirectional
traffic (TCP) will have dropouts, because the HD card cannot keep up with
the FD card.

> Is this a driver bug? When do card negotiate the duplex mode? At
> module load time, or each time you plug a new cable into the NIC?

The card tries to negotiate shortly after power-up and also if you
unplug/plug the cable. At module load time, it does not restart the
autonegotiation, it just reads the values from the MII registers.
If you force FD mode, the autonegotiation only advertise FD modes (both
100 and 10 MBit), so if the remote end also supports 100FD, this mode will
be chosen (again by the MII interface which is only read by the driver).

Sincerely,

Bogdan Costescu

IWR - Interdisziplinaeres Zentrum fuer Wissenschaftliches Rechnen
Universitaet Heidelberg, INF 368, D-69120 Heidelberg, GERMANY
Telephone: +49 6221 54 8869, Telefax: +49 6221 54 8868
E-mail: Bogdan.Costescu@IWR.Uni-Heidelberg.De