diff options
author | Thomas Petazzoni <thomas.petazzoni@free-electrons.com> | 2017-12-08 16:35:40 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-12-11 11:53:55 -0500 |
commit | 2aab6b40b03154a263463a5d992ddd7d122a016a (patch) | |
tree | ab299ac7ce1e1d4bbe17caa17282f432ad8be7a2 | |
parent | f1e2400a80ff55eb7c5f4fd9d7eb163fd0de9a2c (diff) | |
download | linux-2aab6b40b03154a263463a5d992ddd7d122a016a.tar.gz linux-2aab6b40b03154a263463a5d992ddd7d122a016a.tar.bz2 linux-2aab6b40b03154a263463a5d992ddd7d122a016a.zip |
net: sh_eth: do not advertise Gigabit capabilities when not available
Not all variants of the sh_eth hardware have Gigabit
support. Unfortunately, the current driver doesn't tell the PHY about
the limited MAC capabilities. Due to this, if you have a Gigabit
capable PHY, the PHY will advertise its Gigabit capability and
establish a link at 1Gbit/s, even though the MAC doesn't support it.
In order to avoid this, we use the recently introduced
phy_set_max_speed() to tell the PHY to not advertise speed higher than
100 MBit/s.
Tested on a SH7786 platform, with a Gigabit PHY.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/ethernet/renesas/sh_eth.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/net/ethernet/renesas/sh_eth.c b/drivers/net/ethernet/renesas/sh_eth.c index db72d13cebb9..75323000c364 100644 --- a/drivers/net/ethernet/renesas/sh_eth.c +++ b/drivers/net/ethernet/renesas/sh_eth.c @@ -1892,6 +1892,16 @@ static int sh_eth_phy_init(struct net_device *ndev) return PTR_ERR(phydev); } + /* mask with MAC supported features */ + if (mdp->cd->register_type != SH_ETH_REG_GIGABIT) { + int err = phy_set_max_speed(phydev, SPEED_100); + if (err) { + netdev_err(ndev, "failed to limit PHY to 100 Mbit/s\n"); + phy_disconnect(phydev); + return err; + } + } + phy_attached_info(phydev); return 0; |