aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.19.8/0604-net-ethernet-Use-phy_set_max_speed-to-limit-advertis.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.19.8/0604-net-ethernet-Use-phy_set_max_speed-to-limit-advertis.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.19.8/0604-net-ethernet-Use-phy_set_max_speed-to-limit-advertis.patch535
1 files changed, 535 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.19.8/0604-net-ethernet-Use-phy_set_max_speed-to-limit-advertis.patch b/common/recipes-kernel/linux/linux-yocto-4.19.8/0604-net-ethernet-Use-phy_set_max_speed-to-limit-advertis.patch
new file mode 100644
index 00000000..58f2610d
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-4.19.8/0604-net-ethernet-Use-phy_set_max_speed-to-limit-advertis.patch
@@ -0,0 +1,535 @@
+From c1063c31b2a72c3f965a4a71970f2d2b02c7f804 Mon Sep 17 00:00:00 2001
+From: Andrew Lunn <andrew@lunn.ch>
+Date: Wed, 12 Sep 2018 01:53:11 +0200
+Subject: [PATCH 0604/2940] net: ethernet: Use phy_set_max_speed() to limit
+ advertised speed
+
+Many Ethernet MAC drivers want to limit the PHY to only advertise a
+maximum speed of 100Mbs or 1Gbps. Rather than using a mask, make use
+of the helper function phy_set_max_speed().
+
+Signed-off-by: Andrew Lunn <andrew@lunn.ch>
+Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Sudheesh Mavila <sudheesh.mavila@amd.com>
+---
+ 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, 47 insertions(+), 110 deletions(-)
+
+diff --git a/drivers/net/ethernet/8390/ax88796.c b/drivers/net/ethernet/8390/ax88796.c
+index 2a0ddec1dd56..3dcc61821ed5 100644
+--- a/drivers/net/ethernet/8390/ax88796.c
++++ b/drivers/net/ethernet/8390/ax88796.c
+@@ -377,9 +377,7 @@ static int ax_mii_probe(struct net_device *dev)
+ return ret;
+ }
+
+- /* mask with MAC supported features */
+- phy_dev->supported &= PHY_BASIC_FEATURES;
+- phy_dev->advertising = phy_dev->supported;
++ phy_set_max_speed(phy_dev, SPEED_100);
+
+ 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 4309be3724ad..7c9348a26cbb 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->supported &= PHY_GBIT_FEATURES;
++ phy_set_max_speed(phy, SPEED_1000);
+ else
+- phy->supported &= PHY_BASIC_FEATURES;
++ phy_set_max_speed(phy, SPEED_100);
+
+ phy->advertising = phy->supported;
+
+diff --git a/drivers/net/ethernet/agere/et131x.c b/drivers/net/ethernet/agere/et131x.c
+index 48220b6c600d..ea34bcb868b5 100644
+--- a/drivers/net/ethernet/agere/et131x.c
++++ b/drivers/net/ethernet/agere/et131x.c
+@@ -3258,19 +3258,11 @@ static int et131x_mii_probe(struct net_device *netdev)
+ return PTR_ERR(phydev);
+ }
+
+- phydev->supported &= (SUPPORTED_10baseT_Half |
+- SUPPORTED_10baseT_Full |
+- SUPPORTED_100baseT_Half |
+- SUPPORTED_100baseT_Full |
+- SUPPORTED_Autoneg |
+- SUPPORTED_MII |
+- SUPPORTED_TP);
++ phy_set_max_speed(phydev, SPEED_100);
+
+ if (adapter->pdev->device != ET131X_PCI_DEVICE_ID_FAST)
+- phydev->supported |= SUPPORTED_1000baseT_Half |
+- SUPPORTED_1000baseT_Full;
++ phy_set_max_speed(phydev, SPEED_1000);
+
+- 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 3143de45baaa..e1acafa82214 100644
+--- a/drivers/net/ethernet/allwinner/sun4i-emac.c
++++ b/drivers/net/ethernet/allwinner/sun4i-emac.c
+@@ -172,8 +172,7 @@ static int emac_mdio_probe(struct net_device *dev)
+ }
+
+ /* mask with MAC supported features */
+- phydev->supported &= PHY_BASIC_FEATURES;
+- phydev->advertising = phydev->supported;
++ phy_set_max_speed(phydev, SPEED_100);
+
+ 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 baca8f704a45..02921d877c08 100644
+--- a/drivers/net/ethernet/altera/altera_tse_main.c
++++ b/drivers/net/ethernet/altera/altera_tse_main.c
+@@ -835,13 +835,10 @@ 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))
+- phydev->advertising &= ~(SUPPORTED_1000baseT_Half |
+- SUPPORTED_1000baseT_Full);
++ phy_set_max_speed(phydev, SPEED_100);
+
+ /* 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 73ca8879ada7..7c1eb304c27e 100644
+--- a/drivers/net/ethernet/amd/au1000_eth.c
++++ b/drivers/net/ethernet/amd/au1000_eth.c
+@@ -564,17 +564,7 @@ static int au1000_mii_probe(struct net_device *dev)
+ return PTR_ERR(phydev);
+ }
+
+- /* 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;
++ phy_set_max_speed(phydev, SPEED_100);
+
+ 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 897302adc38e..2eee9459c2cf 100644
+--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c
++++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
+@@ -890,14 +890,8 @@ static int bcm_enet_open(struct net_device *dev)
+ }
+
+ /* mask with MAC supported features */
+- phydev->supported &= (SUPPORTED_10baseT_Half |
+- SUPPORTED_10baseT_Full |
+- SUPPORTED_100baseT_Half |
+- SUPPORTED_100baseT_Full |
+- SUPPORTED_Autoneg |
+- SUPPORTED_Pause |
+- SUPPORTED_MII);
+- phydev->advertising = phydev->supported;
++ phydev->supported |= SUPPORTED_Pause;
++ phy_set_max_speed(phydev, SPEED_100);
+
+ 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 de0e24d912fe..21fe15142c25 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";
+- phydev->supported &= PHY_BASIC_FEATURES;
++ phy_set_max_speed(phydev, SPEED_100);
+ 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 ef4a0c326736..4ce4b097ec05 100644
+--- a/drivers/net/ethernet/broadcom/sb1250-mac.c
++++ b/drivers/net/ethernet/broadcom/sb1250-mac.c
+@@ -2357,15 +2357,8 @@ static int sbmac_mii_probe(struct net_device *dev)
+ }
+
+ /* Remove any features not supported by the controller */
+- 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 |
++ phy_set_max_speed(phy_dev, SPEED_1000);
++ phy_dev->supported |= 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 a12962702611..878c9e7aa975 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)) {
+- phydev->supported &= (PHY_GBIT_FEATURES |
+- SUPPORTED_Pause |
++ phy_set_max_speed(phydev, SPEED_1000);
++ phydev->supported &= (SUPPORTED_Pause |
+ SUPPORTED_Asym_Pause);
+ break;
+ }
+ /* fallthru */
+ case PHY_INTERFACE_MODE_MII:
+- phydev->supported &= (PHY_BASIC_FEATURES |
+- SUPPORTED_Pause |
++ phy_set_max_speed(phydev, SPEED_100);
++ phydev->supported &= (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 58b9744c4058..05ba0a9cbd35 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)
+- phydev->supported &= PHY_GBIT_FEATURES;
++ phy_set_max_speed(phydev, SPEED_1000);
+ else
+- phydev->supported &= PHY_BASIC_FEATURES;
++ phy_set_max_speed(phydev, SPEED_100);
+
+ 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 dfd1ad0b1cb9..cf7dfd545760 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->supported &= PHY_GBIT_FEATURES;
++ phy_set_max_speed(phy, SPEED_1000);
+ 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 5a847941c46b..08b7ad1594ce 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)
+- phydev->supported &= PHY_GBIT_FEATURES;
++ phy_set_max_speed(phydev, SPEED_1000);
+ else
+- phydev->supported &= PHY_BASIC_FEATURES;
++ phy_set_max_speed(phydev, SPEED_100);
+
+ phydev->supported |= SUPPORTED_Asym_Pause | SUPPORTED_Pause;
+
+diff --git a/drivers/net/ethernet/ethoc.c b/drivers/net/ethernet/ethoc.c
+index 60da0499ad66..0f3e7f21c6fa 100644
+--- a/drivers/net/ethernet/ethoc.c
++++ b/drivers/net/ethernet/ethoc.c
+@@ -721,10 +721,7 @@ static int ethoc_mdio_probe(struct net_device *dev)
+ return err;
+ }
+
+- phy->advertising &= ~(ADVERTISED_1000baseT_Full |
+- ADVERTISED_1000baseT_Half);
+- phy->supported &= ~(SUPPORTED_1000baseT_Full |
+- SUPPORTED_1000baseT_Half);
++ phy_set_max_speed(phy, SPEED_100);
+
+ return 0;
+ }
+diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c
+index 7b98bb75ba8a..b5c9b79468eb 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_dev->supported &= PHY_GBIT_FEATURES;
++ phy_set_max_speed(phy_dev, 1000);
+ phy_dev->supported &= ~SUPPORTED_1000baseT_Half;
+ #if !defined(CONFIG_M5272)
+ phy_dev->supported |= SUPPORTED_Pause;
+ #endif
+ }
+ else
+- phy_dev->supported &= PHY_BASIC_FEATURES;
++ phy_set_max_speed(phy_dev, 100);
+
+ 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 22a817da861e..9600837f21b8 100644
+--- a/drivers/net/ethernet/freescale/ucc_geth.c
++++ b/drivers/net/ethernet/freescale/ucc_geth.c
+@@ -1742,12 +1742,7 @@ static int init_phy(struct net_device *dev)
+ if (priv->phy_interface == PHY_INTERFACE_MODE_SGMII)
+ uec_configure_serdes(dev);
+
+- phydev->supported &= (SUPPORTED_MII |
+- SUPPORTED_Autoneg |
+- ADVERTISED_10baseT_Half |
+- ADVERTISED_10baseT_Full |
+- ADVERTISED_100baseT_Half |
+- ADVERTISED_100baseT_Full);
++ phy_set_max_speed(phydev, SPEED_100);
+
+ 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 e08301d833e2..5a7af52d9deb 100644
+--- a/drivers/net/ethernet/lantiq_etop.c
++++ b/drivers/net/ethernet/lantiq_etop.c
+@@ -365,15 +365,8 @@ ltq_etop_mdio_probe(struct net_device *dev)
+ return PTR_ERR(phydev);
+ }
+
+- 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_set_max_speed(phydev, SPEED_100);
++
+ 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 6e6abdc399de..c7c4432de543 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;
+
+- dev->phydev->supported &= PHY_GBIT_FEATURES | SUPPORTED_Pause |
+- SUPPORTED_Asym_Pause;
++ phy_set_max_speed(dev->phydev, SPEED_1000);
++ dev->phydev->supported &= 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 08381ef8bdb4..8b23d2848457 100644
+--- a/drivers/net/ethernet/nxp/lpc_eth.c
++++ b/drivers/net/ethernet/nxp/lpc_eth.c
+@@ -797,8 +797,7 @@ static int lpc_mii_probe(struct net_device *ndev)
+ return PTR_ERR(phydev);
+ }
+
+- /* mask with MAC supported features */
+- phydev->supported &= PHY_BASIC_FEATURES;
++ phy_set_max_speed(phydev, SPEED_100);
+
+ phydev->advertising = phydev->supported;
+
+diff --git a/drivers/net/ethernet/rdc/r6040.c b/drivers/net/ethernet/rdc/r6040.c
+index aa11b70b9ca4..04aa592f35c3 100644
+--- a/drivers/net/ethernet/rdc/r6040.c
++++ b/drivers/net/ethernet/rdc/r6040.c
+@@ -1024,16 +1024,8 @@ static int r6040_mii_probe(struct net_device *dev)
+ return PTR_ERR(phydev);
+ }
+
+- /* 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;
++ phy_set_max_speed(phydev, SPEED_100);
++
+ 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 a9da1ad4b4f2..690aee88f0eb 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))
+- phydev->advertising &= ~(SUPPORTED_1000baseT_Half |
+- SUPPORTED_1000baseT_Full);
++ phy_set_max_speed(phydev, SPEED_1000);
++
+ 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 f0afb88d7bc2..f84dbd0beb8e 100644
+--- a/drivers/net/ethernet/smsc/smsc911x.c
++++ b/drivers/net/ethernet/smsc/smsc911x.c
+@@ -1048,9 +1048,10 @@ 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 &= (PHY_BASIC_FEATURES | SUPPORTED_Pause |
+- SUPPORTED_Asym_Pause);
++ phydev->supported &= (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 2fa3c1d03abc..795f60d92611 100644
+--- a/drivers/net/ethernet/smsc/smsc9420.c
++++ b/drivers/net/ethernet/smsc/smsc9420.c
+@@ -1135,9 +1135,10 @@ 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 &= (PHY_BASIC_FEATURES | SUPPORTED_Pause |
+- SUPPORTED_Asym_Pause);
++ phydev->supported &= (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 f7ecceeb1e28..76ff364c40e9 100644
+--- a/drivers/net/ethernet/socionext/sni_ave.c
++++ b/drivers/net/ethernet/socionext/sni_ave.c
+@@ -1223,10 +1223,8 @@ 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)) {
+- phydev->supported &= ~PHY_GBIT_FEATURES;
+- phydev->supported |= PHY_BASIC_FEATURES;
+- }
++ if (!phy_interface_is_rgmii(phydev))
++ phy_set_max_speed(phydev, SPEED_100);
+ 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 75896d6ba6e2..72c9bdca6549 100644
+--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
++++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+@@ -991,8 +991,7 @@ 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))
+- phydev->advertising &= ~(SUPPORTED_1000baseT_Half |
+- SUPPORTED_1000baseT_Full);
++ phy_set_max_speed(phydev, SPEED_100);
+
+ /*
+ * Half-duplex mode not supported with multiqueue
+diff --git a/drivers/net/ethernet/toshiba/tc35815.c b/drivers/net/ethernet/toshiba/tc35815.c
+index cce9c9ed46aa..7163a8d10dba 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 */
+- phydev->supported &= PHY_BASIC_FEATURES;
++ phy_set_max_speed(phydev, SPEED_100);
+ 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 42f1f518dad6..46d3092b8aad 100644
+--- a/drivers/net/ethernet/xilinx/xilinx_emaclite.c
++++ b/drivers/net/ethernet/xilinx/xilinx_emaclite.c
+@@ -941,8 +941,7 @@ static int xemaclite_open(struct net_device *dev)
+ }
+
+ /* EmacLite doesn't support giga-bit speeds */
+- lp->phy_dev->supported &= (PHY_BASIC_FEATURES);
+- lp->phy_dev->advertising = lp->phy_dev->supported;
++ phy_set_max_speed(lp->phy_dev, SPEED_100);
+
+ /* 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 7ad0c4141205..2c6e1800a3fd 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->supported &= PHY_BASIC_FEATURES;
++ phy_set_max_speed(phy, SPEED_100);
+ phy->advertising = phy->supported | ADVERTISED_Autoneg;
+
+ phy_start_aneg(phy);
+--
+2.17.1
+