]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
net: dsa: microchip: ksz8: Refactor ksz8_r_dyn_mac_table() for readability
authorOleksij Rempel <o.rempel@pengutronix.de>
Wed, 3 Apr 2024 12:50:35 +0000 (14:50 +0200)
committerJakub Kicinski <kuba@kernel.org>
Fri, 5 Apr 2024 02:08:42 +0000 (19:08 -0700)
Move the code out of a long if statement scope in ksz8_r_dyn_mac_table()
to improve code readability.

Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
Acked-by: Arun Ramadoss <arun.ramadoss@microchip.com>
Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
Link: https://lore.kernel.org/r/20240403125039.3414824-5-o.rempel@pengutronix.de
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/dsa/microchip/ksz8795.c

index c93eb351ab3d555ee51ba6899c2fda151e51c741..d258fb607b4afaa807b782014663722576bcd39b 100644 (file)
@@ -416,7 +416,9 @@ static int ksz8_r_dyn_mac_table(struct ksz_device *dev, u16 addr, u8 *mac_addr,
        const u32 *masks;
        const u16 *regs;
        u16 ctrl_addr;
+       u64 buf = 0;
        u8 data;
+       int cnt;
        int rc;
 
        shifts = dev->info->shifts;
@@ -432,38 +434,38 @@ static int ksz8_r_dyn_mac_table(struct ksz_device *dev, u16 addr, u8 *mac_addr,
        if (rc == -EAGAIN) {
                if (addr == 0)
                        *entries = 0;
+               goto unlock_alu;
        } else if (rc == -ENXIO) {
                *entries = 0;
-       /* At least one valid entry in the table. */
-       } else {
-               u64 buf = 0;
-               int cnt;
-
-               ksz_read64(dev, regs[REG_IND_DATA_HI], &buf);
-               data_hi = (u32)(buf >> 32);
-               data_lo = (u32)buf;
-
-               /* Check out how many valid entry in the table. */
-               cnt = data & masks[DYNAMIC_MAC_TABLE_ENTRIES_H];
-               cnt <<= shifts[DYNAMIC_MAC_ENTRIES_H];
-               cnt |= (data_hi & masks[DYNAMIC_MAC_TABLE_ENTRIES]) >>
-                       shifts[DYNAMIC_MAC_ENTRIES];
-               *entries = cnt + 1;
-
-               *fid = (data_hi & masks[DYNAMIC_MAC_TABLE_FID]) >>
-                       shifts[DYNAMIC_MAC_FID];
-               *src_port = (data_hi & masks[DYNAMIC_MAC_TABLE_SRC_PORT]) >>
-                       shifts[DYNAMIC_MAC_SRC_PORT];
-
-               mac_addr[5] = (u8)data_lo;
-               mac_addr[4] = (u8)(data_lo >> 8);
-               mac_addr[3] = (u8)(data_lo >> 16);
-               mac_addr[2] = (u8)(data_lo >> 24);
-
-               mac_addr[1] = (u8)data_hi;
-               mac_addr[0] = (u8)(data_hi >> 8);
-               rc = 0;
+               goto unlock_alu;
        }
+
+       ksz_read64(dev, regs[REG_IND_DATA_HI], &buf);
+       data_hi = (u32)(buf >> 32);
+       data_lo = (u32)buf;
+
+       /* Check out how many valid entry in the table. */
+       cnt = data & masks[DYNAMIC_MAC_TABLE_ENTRIES_H];
+       cnt <<= shifts[DYNAMIC_MAC_ENTRIES_H];
+       cnt |= (data_hi & masks[DYNAMIC_MAC_TABLE_ENTRIES]) >>
+               shifts[DYNAMIC_MAC_ENTRIES];
+       *entries = cnt + 1;
+
+       *fid = (data_hi & masks[DYNAMIC_MAC_TABLE_FID]) >>
+               shifts[DYNAMIC_MAC_FID];
+       *src_port = (data_hi & masks[DYNAMIC_MAC_TABLE_SRC_PORT]) >>
+               shifts[DYNAMIC_MAC_SRC_PORT];
+
+       mac_addr[5] = (u8)data_lo;
+       mac_addr[4] = (u8)(data_lo >> 8);
+       mac_addr[3] = (u8)(data_lo >> 16);
+       mac_addr[2] = (u8)(data_lo >> 24);
+
+       mac_addr[1] = (u8)data_hi;
+       mac_addr[0] = (u8)(data_hi >> 8);
+       rc = 0;
+
+unlock_alu:
        mutex_unlock(&dev->alu_mutex);
 
        return rc;