net: phy: reset only targeted phy
authorJérôme Pouiller <jezz@sysmic.org>
Thu, 3 Dec 2015 09:02:35 +0000 (10:02 +0100)
committerDavid S. Miller <davem@davemloft.net>
Thu, 3 Dec 2015 20:26:13 +0000 (15:26 -0500)
It is possible to address another chip on same MDIO bus. The case is
correctly handled for media advertising. It is taken into account
only if mii_data->phy_id == phydev->addr. However, this condition
was missing for reset case.

Signed-off-by: Jérôme Pouiller <jezz@sysmic.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/phy/phy.c

index 48ce6ef..47cd306 100644 (file)
@@ -448,7 +448,8 @@ int phy_mii_ioctl(struct phy_device *phydev, struct ifreq *ifr, int cmd)
                mdiobus_write(phydev->bus, mii_data->phy_id,
                              mii_data->reg_num, val);
 
-               if (mii_data->reg_num == MII_BMCR &&
+               if (mii_data->phy_id == phydev->addr &&
+                   mii_data->reg_num == MII_BMCR &&
                    val & BMCR_RESET)
                        return phy_init_hw(phydev);