Message ID | 20250318093410.3047828-2-o.rempel@pengutronix.de (mailing list archive) |
---|---|
State | New |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | Convert LAN78xx to PHYLINK | expand |
On 18.03.2025 10:34:01, Oleksij Rempel wrote: > Add error handling for `lan78xx_write_reg()` and `lan78xx_read_reg()` > in `lan7801_phy_init()`. If any register operation fails, return > an appropriate error using `ERR_PTR(ret)` to prevent further execution > with invalid configurations. You have to convert the caller of lan7801_phy_init(), too. AFICS it checks for NULL only. Marc > Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de> > --- > drivers/net/usb/lan78xx.c | 11 +++++++++++ > 1 file changed, 11 insertions(+) > > diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c > index 137adf6d5b08..d03668c2c1c9 100644 > --- a/drivers/net/usb/lan78xx.c > +++ b/drivers/net/usb/lan78xx.c > @@ -2531,11 +2531,22 @@ static struct phy_device *lan7801_phy_init(struct lan78xx_net *dev) > dev->interface = PHY_INTERFACE_MODE_RGMII; > ret = lan78xx_write_reg(dev, MAC_RGMII_ID, > MAC_RGMII_ID_TXC_DELAY_EN_); > + if (ret < 0) > + return ERR_PTR(ret); > + > ret = lan78xx_write_reg(dev, RGMII_TX_BYP_DLL, 0x3D00); > + if (ret < 0) > + return ERR_PTR(ret); > + > ret = lan78xx_read_reg(dev, HW_CFG, &buf); > + if (ret < 0) > + return ERR_PTR(ret); > + > buf |= HW_CFG_CLK125_EN_; > buf |= HW_CFG_REFCLK25_EN_; > ret = lan78xx_write_reg(dev, HW_CFG, buf); > + if (ret < 0) > + return ERR_PTR(ret); > } else { > if (!phydev->drv) { > netdev_err(dev->net, "no PHY driver found\n"); > -- > 2.39.5 > > >
diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c index 137adf6d5b08..d03668c2c1c9 100644 --- a/drivers/net/usb/lan78xx.c +++ b/drivers/net/usb/lan78xx.c @@ -2531,11 +2531,22 @@ static struct phy_device *lan7801_phy_init(struct lan78xx_net *dev) dev->interface = PHY_INTERFACE_MODE_RGMII; ret = lan78xx_write_reg(dev, MAC_RGMII_ID, MAC_RGMII_ID_TXC_DELAY_EN_); + if (ret < 0) + return ERR_PTR(ret); + ret = lan78xx_write_reg(dev, RGMII_TX_BYP_DLL, 0x3D00); + if (ret < 0) + return ERR_PTR(ret); + ret = lan78xx_read_reg(dev, HW_CFG, &buf); + if (ret < 0) + return ERR_PTR(ret); + buf |= HW_CFG_CLK125_EN_; buf |= HW_CFG_REFCLK25_EN_; ret = lan78xx_write_reg(dev, HW_CFG, buf); + if (ret < 0) + return ERR_PTR(ret); } else { if (!phydev->drv) { netdev_err(dev->net, "no PHY driver found\n");
Add error handling for `lan78xx_write_reg()` and `lan78xx_read_reg()` in `lan7801_phy_init()`. If any register operation fails, return an appropriate error using `ERR_PTR(ret)` to prevent further execution with invalid configurations. Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de> --- drivers/net/usb/lan78xx.c | 11 +++++++++++ 1 file changed, 11 insertions(+)