| From 0ba20eabb7ad1b40df3d547b787700a1dcbd71d3 Mon Sep 17 00:00:00 2001 |
| From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> |
| Date: Fri, 8 Dec 2017 16:35:40 +0100 |
| Subject: [PATCH 0180/1795] 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> |
| (cherry picked from commit 2aab6b40b03154a263463a5d992ddd7d122a016a) |
| Signed-off-by: Simon Horman <horms+renesas@verge.net.au> |
| Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> |
| --- |
| drivers/net/ethernet/renesas/sh_eth.c | 10 ++++++++++ |
| 1 file changed, 10 insertions(+) |
| |
| diff --git a/drivers/net/ethernet/renesas/sh_eth.c b/drivers/net/ethernet/renesas/sh_eth.c |
| index 158ebe520505..00e2c2bc4693 100644 |
| --- a/drivers/net/ethernet/renesas/sh_eth.c |
| +++ b/drivers/net/ethernet/renesas/sh_eth.c |
| @@ -1906,6 +1906,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; |
| -- |
| 2.19.0 |
| |