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

Jerry Van Baren gerald.vanbaren at ge.com
Wed Jan 7 20:58:01 CET 2009


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 at 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


More information about the U-Boot mailing list