aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.19.8/0617-Revert-net-ethernet-Use-phy_set_max_speed-to-limit-a.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.19.8/0617-Revert-net-ethernet-Use-phy_set_max_speed-to-limit-a.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.19.8/0617-Revert-net-ethernet-Use-phy_set_max_speed-to-limit-a.patch528
1 files changed, 528 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.19.8/0617-Revert-net-ethernet-Use-phy_set_max_speed-to-limit-a.patch b/common/recipes-kernel/linux/linux-yocto-4.19.8/0617-Revert-net-ethernet-Use-phy_set_max_speed-to-limit-a.patch
new file mode 100644
index 00000000..c6972430
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-4.19.8/0617-Revert-net-ethernet-Use-phy_set_max_speed-to-limit-a.patch
@@ -0,0 +1,528 @@
+From aa2a600cb050a5dabc79273707ccc6b6462c9322 Mon Sep 17 00:00:00 2001
+From: Sudheesh Mavila <sudheesh.mavila@amd.com>
+Date: Mon, 4 Feb 2019 11:49:42 +0530
+Subject: [PATCH 0617/2940] Revert "net: ethernet: Use phy_set_max_speed() to
+ limit advertised speed"
+
+This reverts commit cd3615280df4cd745153c4454cc77b7e2f24ba55.
+---
+ drivers/net/ethernet/8390/ax88796.c | 4 +++-
+ drivers/net/ethernet/aeroflex/greth.c | 4 ++--
+ drivers/net/ethernet/agere/et131x.c | 12 ++++++++++--
+ drivers/net/ethernet/allwinner/sun4i-emac.c | 3 ++-
+ drivers/net/ethernet/altera/altera_tse_main.c | 5 ++++-
+ drivers/net/ethernet/amd/au1000_eth.c | 12 +++++++++++-
+ drivers/net/ethernet/broadcom/bcm63xx_enet.c | 10 ++++++++--
+ drivers/net/ethernet/broadcom/genet/bcmmii.c | 2 +-
+ drivers/net/ethernet/broadcom/sb1250-mac.c | 11 +++++++++--
+ drivers/net/ethernet/broadcom/tg3.c | 8 ++++----
+ drivers/net/ethernet/cadence/macb_main.c | 4 ++--
+ drivers/net/ethernet/cortina/gemini.c | 2 +-
+ drivers/net/ethernet/dnet.c | 4 ++--
+ drivers/net/ethernet/ethoc.c | 5 ++++-
+ drivers/net/ethernet/freescale/fec_main.c | 4 ++--
+ drivers/net/ethernet/freescale/ucc_geth.c | 7 ++++++-
+ drivers/net/ethernet/lantiq_etop.c | 11 +++++++++--
+ drivers/net/ethernet/mediatek/mtk_eth_soc.c | 4 ++--
+ drivers/net/ethernet/nxp/lpc_eth.c | 3 ++-
+ drivers/net/ethernet/rdc/r6040.c | 12 ++++++++++--
+ drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c | 4 ++--
+ drivers/net/ethernet/smsc/smsc911x.c | 5 ++---
+ drivers/net/ethernet/smsc/smsc9420.c | 5 ++---
+ drivers/net/ethernet/socionext/sni_ave.c | 6 ++++--
+ drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 3 ++-
+ drivers/net/ethernet/toshiba/tc35815.c | 2 +-
+ drivers/net/ethernet/xilinx/xilinx_emaclite.c | 3 ++-
+ drivers/staging/mt7621-eth/mdio.c | 2 +-
+ 28 files changed, 110 insertions(+), 47 deletions(-)
+
+diff --git a/drivers/net/ethernet/8390/ax88796.c b/drivers/net/ethernet/8390/ax88796.c
+index 3dcc61821ed5..2a0ddec1dd56 100644
+--- a/drivers/net/ethernet/8390/ax88796.c
++++ b/drivers/net/ethernet/8390/ax88796.c
+@@ -377,7 +377,9 @@ static int ax_mii_probe(struct net_device *dev)
+ return ret;
+ }
+
+- phy_set_max_speed(phy_dev, SPEED_100);
++ /* mask with MAC supported features */
++ phy_dev->supported &= PHY_BASIC_FEATURES;
++ phy_dev->advertising = phy_dev->supported;
+
+ netdev_info(dev, "PHY driver [%s] (mii_bus:phy_addr=%s, irq=%d)\n",
+ phy_dev->drv->name, phydev_name(phy_dev), phy_dev->irq);
+diff --git a/drivers/net/ethernet/aeroflex/greth.c b/drivers/net/ethernet/aeroflex/greth.c
+index 7c9348a26cbb..4309be3724ad 100644
+--- a/drivers/net/ethernet/aeroflex/greth.c
++++ b/drivers/net/ethernet/aeroflex/greth.c
+@@ -1279,9 +1279,9 @@ static int greth_mdio_probe(struct net_device *dev)
+ }
+
+ if (greth->gbit_mac)
+- phy_set_max_speed(phy, SPEED_1000);
++ phy->supported &= PHY_GBIT_FEATURES;
+ else
+- phy_set_max_speed(phy, SPEED_100);
++ phy->supported &= PHY_BASIC_FEATURES;
+
+ phy->advertising = phy->supported;
+
+diff --git a/drivers/net/ethernet/agere/et131x.c b/drivers/net/ethernet/agere/et131x.c
+index ea34bcb868b5..48220b6c600d 100644
+--- a/drivers/net/ethernet/agere/et131x.c
++++ b/drivers/net/ethernet/agere/et131x.c
+@@ -3258,11 +3258,19 @@ static int et131x_mii_probe(struct net_device *netdev)
+ return PTR_ERR(phydev);
+ }
+
+- phy_set_max_speed(phydev, SPEED_100);
++ phydev->supported &= (SUPPORTED_10baseT_Half |
++ SUPPORTED_10baseT_Full |
++ SUPPORTED_100baseT_Half |
++ SUPPORTED_100baseT_Full |
++ SUPPORTED_Autoneg |
++ SUPPORTED_MII |
++ SUPPORTED_TP);
+
+ if (adapter->pdev->device != ET131X_PCI_DEVICE_ID_FAST)
+- phy_set_max_speed(phydev, SPEED_1000);
++ phydev->supported |= SUPPORTED_1000baseT_Half |
++ SUPPORTED_1000baseT_Full;
+
++ phydev->advertising = phydev->supported;
+ phydev->autoneg = AUTONEG_ENABLE;
+
+ phy_attached_info(phydev);
+diff --git a/drivers/net/ethernet/allwinner/sun4i-emac.c b/drivers/net/ethernet/allwinner/sun4i-emac.c
+index e1acafa82214..3143de45baaa 100644
+--- a/drivers/net/ethernet/allwinner/sun4i-emac.c
++++ b/drivers/net/ethernet/allwinner/sun4i-emac.c
+@@ -172,7 +172,8 @@ static int emac_mdio_probe(struct net_device *dev)
+ }
+
+ /* mask with MAC supported features */
+- phy_set_max_speed(phydev, SPEED_100);
++ phydev->supported &= PHY_BASIC_FEATURES;
++ phydev->advertising = phydev->supported;
+
+ db->link = 0;
+ db->speed = 0;
+diff --git a/drivers/net/ethernet/altera/altera_tse_main.c b/drivers/net/ethernet/altera/altera_tse_main.c
+index 02921d877c08..baca8f704a45 100644
+--- a/drivers/net/ethernet/altera/altera_tse_main.c
++++ b/drivers/net/ethernet/altera/altera_tse_main.c
+@@ -835,10 +835,13 @@ static int init_phy(struct net_device *dev)
+ }
+
+ /* Stop Advertising 1000BASE Capability if interface is not GMII
++ * Note: Checkpatch throws CHECKs for the camel case defines below,
++ * it's ok to ignore.
+ */
+ if ((priv->phy_iface == PHY_INTERFACE_MODE_MII) ||
+ (priv->phy_iface == PHY_INTERFACE_MODE_RMII))
+- phy_set_max_speed(phydev, SPEED_100);
++ phydev->advertising &= ~(SUPPORTED_1000baseT_Half |
++ SUPPORTED_1000baseT_Full);
+
+ /* Broken HW is sometimes missing the pull-up resistor on the
+ * MDIO line, which results in reads to non-existent devices returning
+diff --git a/drivers/net/ethernet/amd/au1000_eth.c b/drivers/net/ethernet/amd/au1000_eth.c
+index 7c1eb304c27e..73ca8879ada7 100644
+--- a/drivers/net/ethernet/amd/au1000_eth.c
++++ b/drivers/net/ethernet/amd/au1000_eth.c
+@@ -564,7 +564,17 @@ static int au1000_mii_probe(struct net_device *dev)
+ return PTR_ERR(phydev);
+ }
+
+- phy_set_max_speed(phydev, SPEED_100);
++ /* mask with MAC supported features */
++ phydev->supported &= (SUPPORTED_10baseT_Half
++ | SUPPORTED_10baseT_Full
++ | SUPPORTED_100baseT_Half
++ | SUPPORTED_100baseT_Full
++ | SUPPORTED_Autoneg
++ /* | SUPPORTED_Pause | SUPPORTED_Asym_Pause */
++ | SUPPORTED_MII
++ | SUPPORTED_TP);
++
++ phydev->advertising = phydev->supported;
+
+ aup->old_link = 0;
+ aup->old_speed = 0;
+diff --git a/drivers/net/ethernet/broadcom/bcm63xx_enet.c b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
+index 2eee9459c2cf..897302adc38e 100644
+--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c
++++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
+@@ -890,8 +890,14 @@ static int bcm_enet_open(struct net_device *dev)
+ }
+
+ /* mask with MAC supported features */
+- phydev->supported |= SUPPORTED_Pause;
+- phy_set_max_speed(phydev, SPEED_100);
++ phydev->supported &= (SUPPORTED_10baseT_Half |
++ SUPPORTED_10baseT_Full |
++ SUPPORTED_100baseT_Half |
++ SUPPORTED_100baseT_Full |
++ SUPPORTED_Autoneg |
++ SUPPORTED_Pause |
++ SUPPORTED_MII);
++ phydev->advertising = phydev->supported;
+
+ if (priv->pause_auto && priv->pause_rx && priv->pause_tx)
+ phydev->advertising |= SUPPORTED_Pause;
+diff --git a/drivers/net/ethernet/broadcom/genet/bcmmii.c b/drivers/net/ethernet/broadcom/genet/bcmmii.c
+index 21fe15142c25..de0e24d912fe 100644
+--- a/drivers/net/ethernet/broadcom/genet/bcmmii.c
++++ b/drivers/net/ethernet/broadcom/genet/bcmmii.c
+@@ -214,7 +214,7 @@ int bcmgenet_mii_config(struct net_device *dev, bool init)
+
+ case PHY_INTERFACE_MODE_MII:
+ phy_name = "external MII";
+- phy_set_max_speed(phydev, SPEED_100);
++ phydev->supported &= PHY_BASIC_FEATURES;
+ bcmgenet_sys_writel(priv,
+ PORT_MODE_EXT_EPHY, SYS_PORT_CTRL);
+ break;
+diff --git a/drivers/net/ethernet/broadcom/sb1250-mac.c b/drivers/net/ethernet/broadcom/sb1250-mac.c
+index 4ce4b097ec05..ef4a0c326736 100644
+--- a/drivers/net/ethernet/broadcom/sb1250-mac.c
++++ b/drivers/net/ethernet/broadcom/sb1250-mac.c
+@@ -2357,8 +2357,15 @@ static int sbmac_mii_probe(struct net_device *dev)
+ }
+
+ /* Remove any features not supported by the controller */
+- phy_set_max_speed(phy_dev, SPEED_1000);
+- phy_dev->supported |= SUPPORTED_Pause |
++ phy_dev->supported &= SUPPORTED_10baseT_Half |
++ SUPPORTED_10baseT_Full |
++ SUPPORTED_100baseT_Half |
++ SUPPORTED_100baseT_Full |
++ SUPPORTED_1000baseT_Half |
++ SUPPORTED_1000baseT_Full |
++ SUPPORTED_Autoneg |
++ SUPPORTED_MII |
++ SUPPORTED_Pause |
+ SUPPORTED_Asym_Pause;
+
+ phy_attached_info(phy_dev);
+diff --git a/drivers/net/ethernet/broadcom/tg3.c b/drivers/net/ethernet/broadcom/tg3.c
+index 878c9e7aa975..a12962702611 100644
+--- a/drivers/net/ethernet/broadcom/tg3.c
++++ b/drivers/net/ethernet/broadcom/tg3.c
+@@ -2122,15 +2122,15 @@ static int tg3_phy_init(struct tg3 *tp)
+ case PHY_INTERFACE_MODE_GMII:
+ case PHY_INTERFACE_MODE_RGMII:
+ if (!(tp->phy_flags & TG3_PHYFLG_10_100_ONLY)) {
+- phy_set_max_speed(phydev, SPEED_1000);
+- phydev->supported &= (SUPPORTED_Pause |
++ phydev->supported &= (PHY_GBIT_FEATURES |
++ SUPPORTED_Pause |
+ SUPPORTED_Asym_Pause);
+ break;
+ }
+ /* fallthru */
+ case PHY_INTERFACE_MODE_MII:
+- phy_set_max_speed(phydev, SPEED_100);
+- phydev->supported &= (SUPPORTED_Pause |
++ phydev->supported &= (PHY_BASIC_FEATURES |
++ SUPPORTED_Pause |
+ SUPPORTED_Asym_Pause);
+ break;
+ default:
+diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c
+index 05ba0a9cbd35..58b9744c4058 100644
+--- a/drivers/net/ethernet/cadence/macb_main.c
++++ b/drivers/net/ethernet/cadence/macb_main.c
+@@ -544,9 +544,9 @@ static int macb_mii_probe(struct net_device *dev)
+
+ /* mask with MAC supported features */
+ if (macb_is_gem(bp) && bp->caps & MACB_CAPS_GIGABIT_MODE_AVAILABLE)
+- phy_set_max_speed(phydev, SPEED_1000);
++ phydev->supported &= PHY_GBIT_FEATURES;
+ else
+- phy_set_max_speed(phydev, SPEED_100);
++ phydev->supported &= PHY_BASIC_FEATURES;
+
+ if (bp->caps & MACB_CAPS_NO_GIGABIT_HALF)
+ phydev->supported &= ~SUPPORTED_1000baseT_Half;
+diff --git a/drivers/net/ethernet/cortina/gemini.c b/drivers/net/ethernet/cortina/gemini.c
+index cf7dfd545760..dfd1ad0b1cb9 100644
+--- a/drivers/net/ethernet/cortina/gemini.c
++++ b/drivers/net/ethernet/cortina/gemini.c
+@@ -372,7 +372,7 @@ static int gmac_setup_phy(struct net_device *netdev)
+ return -ENODEV;
+ netdev->phydev = phy;
+
+- phy_set_max_speed(phy, SPEED_1000);
++ phy->supported &= PHY_GBIT_FEATURES;
+ phy->supported |= SUPPORTED_Asym_Pause | SUPPORTED_Pause;
+ phy->advertising = phy->supported;
+
+diff --git a/drivers/net/ethernet/dnet.c b/drivers/net/ethernet/dnet.c
+index 08b7ad1594ce..5a847941c46b 100644
+--- a/drivers/net/ethernet/dnet.c
++++ b/drivers/net/ethernet/dnet.c
+@@ -284,9 +284,9 @@ static int dnet_mii_probe(struct net_device *dev)
+
+ /* mask with MAC supported features */
+ if (bp->capabilities & DNET_HAS_GIGABIT)
+- phy_set_max_speed(phydev, SPEED_1000);
++ phydev->supported &= PHY_GBIT_FEATURES;
+ else
+- phy_set_max_speed(phydev, SPEED_100);
++ phydev->supported &= PHY_BASIC_FEATURES;
+
+ phydev->supported |= SUPPORTED_Asym_Pause | SUPPORTED_Pause;
+
+diff --git a/drivers/net/ethernet/ethoc.c b/drivers/net/ethernet/ethoc.c
+index 0f3e7f21c6fa..60da0499ad66 100644
+--- a/drivers/net/ethernet/ethoc.c
++++ b/drivers/net/ethernet/ethoc.c
+@@ -721,7 +721,10 @@ static int ethoc_mdio_probe(struct net_device *dev)
+ return err;
+ }
+
+- phy_set_max_speed(phy, SPEED_100);
++ phy->advertising &= ~(ADVERTISED_1000baseT_Full |
++ ADVERTISED_1000baseT_Half);
++ phy->supported &= ~(SUPPORTED_1000baseT_Full |
++ SUPPORTED_1000baseT_Half);
+
+ return 0;
+ }
+diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c
+index b5c9b79468eb..7b98bb75ba8a 100644
+--- a/drivers/net/ethernet/freescale/fec_main.c
++++ b/drivers/net/ethernet/freescale/fec_main.c
+@@ -1948,14 +1948,14 @@ static int fec_enet_mii_probe(struct net_device *ndev)
+
+ /* mask with MAC supported features */
+ if (fep->quirks & FEC_QUIRK_HAS_GBIT) {
+- phy_set_max_speed(phy_dev, 1000);
++ phy_dev->supported &= PHY_GBIT_FEATURES;
+ phy_dev->supported &= ~SUPPORTED_1000baseT_Half;
+ #if !defined(CONFIG_M5272)
+ phy_dev->supported |= SUPPORTED_Pause;
+ #endif
+ }
+ else
+- phy_set_max_speed(phy_dev, 100);
++ phy_dev->supported &= PHY_BASIC_FEATURES;
+
+ phy_dev->advertising = phy_dev->supported;
+
+diff --git a/drivers/net/ethernet/freescale/ucc_geth.c b/drivers/net/ethernet/freescale/ucc_geth.c
+index 9600837f21b8..22a817da861e 100644
+--- a/drivers/net/ethernet/freescale/ucc_geth.c
++++ b/drivers/net/ethernet/freescale/ucc_geth.c
+@@ -1742,7 +1742,12 @@ static int init_phy(struct net_device *dev)
+ if (priv->phy_interface == PHY_INTERFACE_MODE_SGMII)
+ uec_configure_serdes(dev);
+
+- phy_set_max_speed(phydev, SPEED_100);
++ phydev->supported &= (SUPPORTED_MII |
++ SUPPORTED_Autoneg |
++ ADVERTISED_10baseT_Half |
++ ADVERTISED_10baseT_Full |
++ ADVERTISED_100baseT_Half |
++ ADVERTISED_100baseT_Full);
+
+ if (priv->max_speed == SPEED_1000)
+ phydev->supported |= ADVERTISED_1000baseT_Full;
+diff --git a/drivers/net/ethernet/lantiq_etop.c b/drivers/net/ethernet/lantiq_etop.c
+index 5a7af52d9deb..e08301d833e2 100644
+--- a/drivers/net/ethernet/lantiq_etop.c
++++ b/drivers/net/ethernet/lantiq_etop.c
+@@ -365,8 +365,15 @@ ltq_etop_mdio_probe(struct net_device *dev)
+ return PTR_ERR(phydev);
+ }
+
+- phy_set_max_speed(phydev, SPEED_100);
+-
++ phydev->supported &= (SUPPORTED_10baseT_Half
++ | SUPPORTED_10baseT_Full
++ | SUPPORTED_100baseT_Half
++ | SUPPORTED_100baseT_Full
++ | SUPPORTED_Autoneg
++ | SUPPORTED_MII
++ | SUPPORTED_TP);
++
++ phydev->advertising = phydev->supported;
+ phy_attached_info(phydev);
+
+ return 0;
+diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+index c7c4432de543..6e6abdc399de 100644
+--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
++++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+@@ -359,8 +359,8 @@ static int mtk_phy_connect(struct net_device *dev)
+ dev->phydev->supported |=
+ SUPPORTED_Pause | SUPPORTED_Asym_Pause;
+
+- phy_set_max_speed(dev->phydev, SPEED_1000);
+- dev->phydev->supported &= SUPPORTED_Pause | SUPPORTED_Asym_Pause;
++ dev->phydev->supported &= PHY_GBIT_FEATURES | SUPPORTED_Pause |
++ SUPPORTED_Asym_Pause;
+ dev->phydev->advertising = dev->phydev->supported |
+ ADVERTISED_Autoneg;
+ phy_start_aneg(dev->phydev);
+diff --git a/drivers/net/ethernet/nxp/lpc_eth.c b/drivers/net/ethernet/nxp/lpc_eth.c
+index 8b23d2848457..08381ef8bdb4 100644
+--- a/drivers/net/ethernet/nxp/lpc_eth.c
++++ b/drivers/net/ethernet/nxp/lpc_eth.c
+@@ -797,7 +797,8 @@ static int lpc_mii_probe(struct net_device *ndev)
+ return PTR_ERR(phydev);
+ }
+
+- phy_set_max_speed(phydev, SPEED_100);
++ /* mask with MAC supported features */
++ phydev->supported &= PHY_BASIC_FEATURES;
+
+ phydev->advertising = phydev->supported;
+
+diff --git a/drivers/net/ethernet/rdc/r6040.c b/drivers/net/ethernet/rdc/r6040.c
+index 04aa592f35c3..aa11b70b9ca4 100644
+--- a/drivers/net/ethernet/rdc/r6040.c
++++ b/drivers/net/ethernet/rdc/r6040.c
+@@ -1024,8 +1024,16 @@ static int r6040_mii_probe(struct net_device *dev)
+ return PTR_ERR(phydev);
+ }
+
+- phy_set_max_speed(phydev, SPEED_100);
+-
++ /* mask with MAC supported features */
++ phydev->supported &= (SUPPORTED_10baseT_Half
++ | SUPPORTED_10baseT_Full
++ | SUPPORTED_100baseT_Half
++ | SUPPORTED_100baseT_Full
++ | SUPPORTED_Autoneg
++ | SUPPORTED_MII
++ | SUPPORTED_TP);
++
++ phydev->advertising = phydev->supported;
+ lp->old_link = 0;
+ lp->old_duplex = -1;
+
+diff --git a/drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c b/drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c
+index 690aee88f0eb..a9da1ad4b4f2 100644
+--- a/drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c
++++ b/drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c
+@@ -298,8 +298,8 @@ static int sxgbe_init_phy(struct net_device *ndev)
+ /* Stop Advertising 1000BASE Capability if interface is not GMII */
+ if ((phy_iface == PHY_INTERFACE_MODE_MII) ||
+ (phy_iface == PHY_INTERFACE_MODE_RMII))
+- phy_set_max_speed(phydev, SPEED_1000);
+-
++ phydev->advertising &= ~(SUPPORTED_1000baseT_Half |
++ SUPPORTED_1000baseT_Full);
+ if (phydev->phy_id == 0) {
+ phy_disconnect(phydev);
+ return -ENODEV;
+diff --git a/drivers/net/ethernet/smsc/smsc911x.c b/drivers/net/ethernet/smsc/smsc911x.c
+index f84dbd0beb8e..f0afb88d7bc2 100644
+--- a/drivers/net/ethernet/smsc/smsc911x.c
++++ b/drivers/net/ethernet/smsc/smsc911x.c
+@@ -1048,10 +1048,9 @@ static int smsc911x_mii_probe(struct net_device *dev)
+
+ phy_attached_info(phydev);
+
+- phy_set_max_speed(phydev, SPEED_100);
+-
+ /* mask with MAC supported features */
+- phydev->supported &= (SUPPORTED_Pause | SUPPORTED_Asym_Pause);
++ phydev->supported &= (PHY_BASIC_FEATURES | SUPPORTED_Pause |
++ SUPPORTED_Asym_Pause);
+ phydev->advertising = phydev->supported;
+
+ pdata->last_duplex = -1;
+diff --git a/drivers/net/ethernet/smsc/smsc9420.c b/drivers/net/ethernet/smsc/smsc9420.c
+index 795f60d92611..2fa3c1d03abc 100644
+--- a/drivers/net/ethernet/smsc/smsc9420.c
++++ b/drivers/net/ethernet/smsc/smsc9420.c
+@@ -1135,10 +1135,9 @@ static int smsc9420_mii_probe(struct net_device *dev)
+ return PTR_ERR(phydev);
+ }
+
+- phy_set_max_speed(phydev, SPEED_100);
+-
+ /* mask with MAC supported features */
+- phydev->supported &= (SUPPORTED_Pause | SUPPORTED_Asym_Pause);
++ phydev->supported &= (PHY_BASIC_FEATURES | SUPPORTED_Pause |
++ SUPPORTED_Asym_Pause);
+ phydev->advertising = phydev->supported;
+
+ phy_attached_info(phydev);
+diff --git a/drivers/net/ethernet/socionext/sni_ave.c b/drivers/net/ethernet/socionext/sni_ave.c
+index 76ff364c40e9..f7ecceeb1e28 100644
+--- a/drivers/net/ethernet/socionext/sni_ave.c
++++ b/drivers/net/ethernet/socionext/sni_ave.c
+@@ -1223,8 +1223,10 @@ static int ave_init(struct net_device *ndev)
+ phy_ethtool_get_wol(phydev, &wol);
+ device_set_wakeup_capable(&ndev->dev, !!wol.supported);
+
+- if (!phy_interface_is_rgmii(phydev))
+- phy_set_max_speed(phydev, SPEED_100);
++ if (!phy_interface_is_rgmii(phydev)) {
++ phydev->supported &= ~PHY_GBIT_FEATURES;
++ phydev->supported |= PHY_BASIC_FEATURES;
++ }
+ phydev->supported |= SUPPORTED_Pause | SUPPORTED_Asym_Pause;
+
+ phy_attached_info(phydev);
+diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+index 72c9bdca6549..75896d6ba6e2 100644
+--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
++++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+@@ -991,7 +991,8 @@ static int stmmac_init_phy(struct net_device *dev)
+ if ((interface == PHY_INTERFACE_MODE_MII) ||
+ (interface == PHY_INTERFACE_MODE_RMII) ||
+ (max_speed < 1000 && max_speed > 0))
+- phy_set_max_speed(phydev, SPEED_100);
++ phydev->advertising &= ~(SUPPORTED_1000baseT_Half |
++ SUPPORTED_1000baseT_Full);
+
+ /*
+ * Half-duplex mode not supported with multiqueue
+diff --git a/drivers/net/ethernet/toshiba/tc35815.c b/drivers/net/ethernet/toshiba/tc35815.c
+index 7163a8d10dba..cce9c9ed46aa 100644
+--- a/drivers/net/ethernet/toshiba/tc35815.c
++++ b/drivers/net/ethernet/toshiba/tc35815.c
+@@ -628,7 +628,7 @@ static int tc_mii_probe(struct net_device *dev)
+ phy_attached_info(phydev);
+
+ /* mask with MAC supported features */
+- phy_set_max_speed(phydev, SPEED_100);
++ phydev->supported &= PHY_BASIC_FEATURES;
+ dropmask = 0;
+ if (options.speed == 10)
+ dropmask |= SUPPORTED_100baseT_Half | SUPPORTED_100baseT_Full;
+diff --git a/drivers/net/ethernet/xilinx/xilinx_emaclite.c b/drivers/net/ethernet/xilinx/xilinx_emaclite.c
+index 46d3092b8aad..42f1f518dad6 100644
+--- a/drivers/net/ethernet/xilinx/xilinx_emaclite.c
++++ b/drivers/net/ethernet/xilinx/xilinx_emaclite.c
+@@ -941,7 +941,8 @@ static int xemaclite_open(struct net_device *dev)
+ }
+
+ /* EmacLite doesn't support giga-bit speeds */
+- phy_set_max_speed(lp->phy_dev, SPEED_100);
++ lp->phy_dev->supported &= (PHY_BASIC_FEATURES);
++ lp->phy_dev->advertising = lp->phy_dev->supported;
+
+ /* Don't advertise 1000BASE-T Full/Half duplex speeds */
+ phy_write(lp->phy_dev, MII_CTRL1000, 0);
+diff --git a/drivers/staging/mt7621-eth/mdio.c b/drivers/staging/mt7621-eth/mdio.c
+index 2c6e1800a3fd..7ad0c4141205 100644
+--- a/drivers/staging/mt7621-eth/mdio.c
++++ b/drivers/staging/mt7621-eth/mdio.c
+@@ -112,7 +112,7 @@ static void phy_init(struct mtk_eth *eth, struct mtk_mac *mac,
+ phy->autoneg = AUTONEG_ENABLE;
+ phy->speed = 0;
+ phy->duplex = 0;
+- phy_set_max_speed(phy, SPEED_100);
++ phy->supported &= PHY_BASIC_FEATURES;
+ phy->advertising = phy->supported | ADVERTISED_Autoneg;
+
+ phy_start_aneg(phy);
+--
+2.17.1
+