]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
net: usb: lan78xx: Add error handling to lan78xx_set_mac_addr
authorOleksij Rempel <o.rempel@pengutronix.de>
Mon, 9 Dec 2024 13:07:43 +0000 (14:07 +0100)
committerJakub Kicinski <kuba@kernel.org>
Wed, 11 Dec 2024 02:48:26 +0000 (18:48 -0800)
Update `lan78xx_set_mac_addr` to handle errors during MAC address
register write operations. Ensure that errors are properly propagated to
the caller, improving the robustness of MAC address updates.

Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Link: https://patch.msgid.link/20241209130751.703182-4-o.rempel@pengutronix.de
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/usb/lan78xx.c

index 26dc43bac84b55ce1945f2a738f6b3e369579814..5d318ff8b33deecf2395aa8ed88352a6cad0f891 100644 (file)
@@ -2763,6 +2763,7 @@ static int lan78xx_set_mac_addr(struct net_device *netdev, void *p)
        struct lan78xx_net *dev = netdev_priv(netdev);
        struct sockaddr *addr = p;
        u32 addr_lo, addr_hi;
+       int ret;
 
        if (netif_running(netdev))
                return -EBUSY;
@@ -2779,14 +2780,20 @@ static int lan78xx_set_mac_addr(struct net_device *netdev, void *p)
        addr_hi = netdev->dev_addr[4] |
                  netdev->dev_addr[5] << 8;
 
-       lan78xx_write_reg(dev, RX_ADDRL, addr_lo);
-       lan78xx_write_reg(dev, RX_ADDRH, addr_hi);
+       ret = lan78xx_write_reg(dev, RX_ADDRL, addr_lo);
+       if (ret < 0)
+               return ret;
+
+       ret = lan78xx_write_reg(dev, RX_ADDRH, addr_hi);
+       if (ret < 0)
+               return ret;
 
        /* Added to support MAC address changes */
-       lan78xx_write_reg(dev, MAF_LO(0), addr_lo);
-       lan78xx_write_reg(dev, MAF_HI(0), addr_hi | MAF_HI_VALID_);
+       ret = lan78xx_write_reg(dev, MAF_LO(0), addr_lo);
+       if (ret < 0)
+               return ret;
 
-       return 0;
+       return lan78xx_write_reg(dev, MAF_HI(0), addr_hi | MAF_HI_VALID_);
 }
 
 /* Enable or disable Rx checksum offload engine */