net: phy: micrel: Disable B_CAST on config
authorAlexandre Messier <amessier@tycoint.com>
Fri, 22 Jan 2016 19:06:33 +0000 (14:06 -0500)
committerJoe Hershberger <joe.hershberger@ni.com>
Thu, 28 Jan 2016 19:20:21 +0000 (13:20 -0600)
commit79e3efd5e54acba20a5af94f713d7aae5e540d09
treec1080e3e14198916bfbe8cb1b9d286302fd73d57
parentc4998f9634a023d498f647fa0f7fea7b08b22852
net: phy: micrel: Disable B_CAST on config

Micrel PHYs KSZ8021/31 and KSZ8081 have a feature where MDIO address 0
is considered as a broadcast address; the PHY will respond even if it
is not its configured (pinstrapped) address. This feature is enabled
by default.

The Linux kernel disables that feature at initialisation, but not
before it probes the MDIO bus. This causes an issue, because a PHY
at address 3 will be discovered at addresses 0 and 3, but will then
only respond at address 3. Because Linux attaches the first PHY it
discovers on 'eth0', it will attach the PHY from address 0, which
will never answer again.

Fix the issue by disabling the broadcast feature in U-Boot, before
Linux is started.

Signed-off-by: Alexandre Messier <amessier@tycoint.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
drivers/net/phy/micrel.c