[U-Boot] Fw: TFTP fails when using network switch

Jerry Van Baren
2009-01-07T19:58:01Z

Ulf Samuelsson wrote:
> ons 2009-01-07 klockan 07:52 -0500 skrev Jerry Van Baren:
>> Wolfgang Denk wrote:
>>> Dear Ulf Samuelsson,
>>>
>>> In message <1231282371.32308.276.camel@elrond.atmel.com> you wrote:
>>>> It was tracked down to the autoconfiguration of the
>>>> Ethernet PHY, so one of the PHYs ended up in
>>>> 100 Mbps Half Duplex (think that was the switch)
>>>> while the other PHY ended up in 100 MBps Full Duplex.
>>> That would most probably be a bug in the U-Boot ethernet driver, then.
>>>
>>> Best regards,
>>>
>>> Wolfgang Denk
>> If auto-negotiation fails, the default is half duplex (10 or 100 - the
>> speed can be discovered independent of the autonegotiation by the encoding).
>>
>> Ulf's recollection that the switch was half duplex would indicate that
>> the cheap switch did not autonegotiate properly, but u-boot did. This
>> could be a u-boot bug (not setting up the negotiation properly), but
>> more likely would be a switch problem (not handling the u-boot auto-neg
>> options properly).
>>
>
> Don't remember all details, since it was 4 years ago.
> I talked to D-Link support and they claimed that the standard
> was to fall back to one of the options, if autonegotiation failed.

Autonegotiation enabled but fails => half duplex. It's in the spec.

> The customer might have had a PHY without autonegotation which
> was hardwired to 100 Mbps full duplex.

Manually configured (autoneg disabled) is no problem, *AS LONG AS* both
sides are manually configured to the same configuration. The problem is
when one side is configured to autonegotiate and the other side is set
to full duplex. The autonegotiation side is unable to negotiate with
the manually configured side, so it falls back to half duplex at
whatever rate is being used (10/100, determined from the encoding on the
wire).

It sorta works until there is more than a few packets on the wire, at
which time the half duplex end sees the full duplex packets as
collisions and the error rate (and runt packets) skyrockets because the
half duplex side keeps aborting packets.

It sounds like, in your case, the computer end was manually configured
to be (100bT) full duplex but the (cheap unmanaged) switch was still
running auto-negotiation. Recipe for disaster.

> With little communication, the packages were sent
> where this caused some problems.

Oh yeah, in spades, but only when the wire gets busier.

gvb