[PATCHv3 net 2/2] net: asix: init mdiobus from one function
From: Grant Grundler
Date: Wed Mar 08 2023 - 15:22:41 EST
Make asix driver consistent with other drivers (e.g. tg3 and r8169) which
use mdiobus calls: setup and tear down be handled in one function each.
Signed-off-by: Grant Grundler <grundler@xxxxxxxxxxxx>
---
drivers/net/usb/asix_devices.c | 27 ++++++++++++++++-----------
1 file changed, 16 insertions(+), 11 deletions(-)
V3: rebase against netdev/net.git
add missing whitespace around "="
diff --git a/drivers/net/usb/asix_devices.c b/drivers/net/usb/asix_devices.c
index 538c84909913..9a1e54ef4ff0 100644
--- a/drivers/net/usb/asix_devices.c
+++ b/drivers/net/usb/asix_devices.c
@@ -663,7 +663,7 @@ static int asix_resume(struct usb_interface *intf)
return usbnet_resume(intf);
}
-static int ax88772_init_mdio(struct usbnet *dev)
+static int ax88772_mdio_register(struct usbnet *dev)
{
struct asix_common_private *priv = dev->driver_priv;
int ret;
@@ -683,10 +683,22 @@ static int ax88772_init_mdio(struct usbnet *dev)
ret = mdiobus_register(priv->mdio);
if (ret) {
netdev_err(dev->net, "Could not register MDIO bus (err %d)\n", ret);
- mdiobus_free(priv->mdio);
- priv->mdio = NULL;
+ goto mdio_register_err;
}
+ priv->phydev = mdiobus_get_phy(priv->mdio, priv->phy_addr);
+ if (!priv->phydev) {
+ netdev_err(dev->net, "Could not find PHY\n");
+ ret = -ENODEV;
+ goto mdio_phy_err;
+ }
+
+ return 0;
+
+mdio_phy_err:
+ mdiobus_unregister(priv->mdio);
+mdio_register_err:
+ mdiobus_free(priv->mdio);
return ret;
}
@@ -701,13 +713,6 @@ static int ax88772_init_phy(struct usbnet *dev)
struct asix_common_private *priv = dev->driver_priv;
int ret;
- priv->phydev = mdiobus_get_phy(priv->mdio, priv->phy_addr);
- if (!priv->phydev) {
- netdev_err(dev->net, "Could not find PHY\n");
- ax88772_mdio_unregister(priv);
- return -ENODEV;
- }
-
ret = phylink_connect_phy(priv->phylink, priv->phydev);
if (ret) {
netdev_err(dev->net, "Could not connect PHY\n");
@@ -909,7 +914,7 @@ static int ax88772_bind(struct usbnet *dev, struct usb_interface *intf)
priv->presvd_phy_bmcr = 0;
priv->presvd_phy_advertise = 0;
- ret = ax88772_init_mdio(dev);
+ ret = ax88772_mdio_register(dev);
if (ret)
return ret;
--
2.40.0.rc0.216.gc4246ad0f0-goog