]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
net: dsa: microchip: lan937x: Add error handling in lan937x_setup
authorOleksij Rempel <o.rempel@pengutronix.de>
Wed, 3 Jul 2024 08:38:20 +0000 (10:38 +0200)
committerPaolo Abeni <pabeni@redhat.com>
Thu, 4 Jul 2024 11:05:20 +0000 (13:05 +0200)
Introduce error handling for lan937x_cfg function calls in lan937x_setup.
This change ensures that if any lan937x_cfg or ksz_rmw32 calls fails, the
function will return the appropriate error code.

Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
Acked-by: Arun Ramadoss <arun.ramadoss@microchip.com>
Link: https://patch.msgid.link/20240703083820.3152100-1-o.rempel@pengutronix.de
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
drivers/net/dsa/microchip/lan937x_main.c

index 0606796b148567ce7423759018c523b794281a80..83ac33fede3f56f52c22b7984e34b7d0e257a7ba 100644 (file)
@@ -374,26 +374,33 @@ int lan937x_setup(struct dsa_switch *ds)
        ds->vlan_filtering_is_global = true;
 
        /* Enable aggressive back off for half duplex & UNH mode */
-       lan937x_cfg(dev, REG_SW_MAC_CTRL_0,
-                   (SW_PAUSE_UNH_MODE | SW_NEW_BACKOFF | SW_AGGR_BACKOFF),
-                   true);
+       ret = lan937x_cfg(dev, REG_SW_MAC_CTRL_0, (SW_PAUSE_UNH_MODE |
+                                                  SW_NEW_BACKOFF |
+                                                  SW_AGGR_BACKOFF), true);
+       if (ret < 0)
+               return ret;
 
        /* If NO_EXC_COLLISION_DROP bit is set, the switch will not drop
         * packets when 16 or more collisions occur
         */
-       lan937x_cfg(dev, REG_SW_MAC_CTRL_1, NO_EXC_COLLISION_DROP, true);
+       ret = lan937x_cfg(dev, REG_SW_MAC_CTRL_1, NO_EXC_COLLISION_DROP, true);
+       if (ret < 0)
+               return ret;
 
        /* enable global MIB counter freeze function */
-       lan937x_cfg(dev, REG_SW_MAC_CTRL_6, SW_MIB_COUNTER_FREEZE, true);
+       ret = lan937x_cfg(dev, REG_SW_MAC_CTRL_6, SW_MIB_COUNTER_FREEZE, true);
+       if (ret < 0)
+               return ret;
 
        /* disable CLK125 & CLK25, 1: disable, 0: enable */
-       lan937x_cfg(dev, REG_SW_GLOBAL_OUTPUT_CTRL__1,
-                   (SW_CLK125_ENB | SW_CLK25_ENB), true);
+       ret = lan937x_cfg(dev, REG_SW_GLOBAL_OUTPUT_CTRL__1,
+                         (SW_CLK125_ENB | SW_CLK25_ENB), true);
+       if (ret < 0)
+               return ret;
 
        /* Disable global VPHY support. Related to CPU interface only? */
-       ksz_rmw32(dev, REG_SW_CFG_STRAP_OVR, SW_VPHY_DISABLE, SW_VPHY_DISABLE);
-
-       return 0;
+       return ksz_rmw32(dev, REG_SW_CFG_STRAP_OVR, SW_VPHY_DISABLE,
+                        SW_VPHY_DISABLE);
 }
 
 void lan937x_teardown(struct dsa_switch *ds)