tools: mkimage: provide dtc path during build
[openwrt/openwrt.git] / target / linux / mvebu / patches-4.9 / 403-net-phy-avoid-setting-unsupported-EEE-advertisments.patch
index 421a3082069f1c769692b9e19dadb34e0f346ff3..1ef8c922ab724643bd11d5c935786d76f47613a4 100644 (file)
@@ -30,22 +30,27 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
 
 --- a/drivers/net/phy/phy.c
 +++ b/drivers/net/phy/phy.c
-@@ -1311,11 +1311,16 @@ EXPORT_SYMBOL(phy_ethtool_get_eee);
+@@ -1352,14 +1352,19 @@ EXPORT_SYMBOL(phy_ethtool_get_eee);
   */
  int phy_ethtool_set_eee(struct phy_device *phydev, struct ethtool_eee *data)
  {
 -      int val = ethtool_adv_to_mmd_eee_adv_t(data->advertised);
 +      int cap, adv;
  
--      phy_write_mmd_indirect(phydev, MDIO_AN_EEE_ADV, MDIO_MMD_AN, val);
+-      /* Mask prohibited EEE modes */
+-      val &= ~phydev->eee_broken_modes;
 +      /* Get Supported EEE */
 +      cap = phy_read_mmd(phydev, MDIO_MMD_PCS, MDIO_PCS_EEE_ABLE);
 +      if (cap < 0)
 +              return cap;
++
++      adv = ethtool_adv_to_mmd_eee_adv_t(data->advertised) & cap;
+-      phy_write_mmd_indirect(phydev, MDIO_AN_EEE_ADV, MDIO_MMD_AN, val);
++      /* Mask prohibited EEE modes */
++      adv &= ~phydev->eee_broken_modes;
  
 -      return 0;
-+      adv = ethtool_adv_to_mmd_eee_adv_t(data->advertised) & cap;
-+
 +      return phy_write_mmd(phydev, MDIO_MMD_AN, MDIO_AN_EEE_ADV, adv);
  }
  EXPORT_SYMBOL(phy_ethtool_set_eee);