net: phy: Propagate error from bus->reset
authorFlorian Fainelli <f.fainelli@gmail.com>
Sun, 19 Apr 2020 03:17:13 +0000 (20:17 -0700)
committerDavid S. Miller <davem@davemloft.net>
Mon, 20 Apr 2020 18:55:13 +0000 (11:55 -0700)
If a bus->reset() call for the mii_bus structure returns an error (e.g.:
-EPROE_DEFER) we should propagate it accordingly.

Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/phy/mdio_bus.c

index 7a4eb3f2cb743a007903edaf8362eaee75602870..346e88435d2960f85b268e3c9b38a562669aaea6 100644 (file)
@@ -627,8 +627,11 @@ int __mdiobus_register(struct mii_bus *bus, struct module *owner)
                gpiod_set_value_cansleep(gpiod, 0);
        }
 
-       if (bus->reset)
-               bus->reset(bus);
+       if (bus->reset) {
+               err = bus->reset(bus);
+               if (err)
+                       goto error_reset_gpiod;
+       }
 
        for (i = 0; i < PHY_MAX_ADDR; i++) {
                if ((bus->phy_mask & (1 << i)) == 0) {
@@ -657,7 +660,7 @@ error:
                mdiodev->device_remove(mdiodev);
                mdiodev->device_free(mdiodev);
        }
-
+error_reset_gpiod:
        /* Put PHYs in RESET to save power */
        if (bus->reset_gpiod)
                gpiod_set_value_cansleep(bus->reset_gpiod, 1);