
Can someone tell me how to use the mii command? I have the following from a dump:
uBOOT=>> mii dump MII not complete 0. (ffff) -- PHY control register -- (8000:8000) 0.15 = 1 reset (4000:4000) 0.14 = 1 loopback (2040:2040) 0. 6,13 = b11 speed selection = ??? Mbps (1000:1000) 0.12 = 1 A/N enable (0800:0800) 0.11 = 1 power-down (0400:0400) 0.10 = 1 isolate (0200:0200) 0. 9 = 1 restart A/N (0100:0100) 0. 8 = 1 duplex = full (0080:0080) 0. 7 = 1 collision test enable (003f:003f) 0. 5- 0 = 63 (reserved)
On Wed, Jan 7, 2009 at 12:58 PM, Jerry Van Baren gerald.vanbaren@ge.com wrote:
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