net: dsa: microchip: ksz8_r_dyn_mac_table(): return read/write error if we got any
The read/write path may fail. So, return error if we got it. 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-8-o.rempel@pengutronix.de Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
081e84f267
commit
7caed786b3
@ -385,12 +385,16 @@ static int ksz8_valid_dyn_entry(struct ksz_device *dev, u8 *data)
|
||||
int timeout = 100;
|
||||
const u32 *masks;
|
||||
const u16 *regs;
|
||||
int ret;
|
||||
|
||||
masks = dev->info->masks;
|
||||
regs = dev->info->regs;
|
||||
|
||||
do {
|
||||
ksz_read8(dev, regs[REG_IND_DATA_CHECK], data);
|
||||
ret = ksz_read8(dev, regs[REG_IND_DATA_CHECK], data);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
timeout--;
|
||||
} while ((*data & masks[DYNAMIC_MAC_TABLE_NOT_READY]) && timeout);
|
||||
|
||||
@ -399,7 +403,9 @@ static int ksz8_valid_dyn_entry(struct ksz_device *dev, u8 *data)
|
||||
return -ETIMEDOUT;
|
||||
/* Entry is ready for accessing. */
|
||||
} else {
|
||||
ksz_read8(dev, regs[REG_IND_DATA_8], data);
|
||||
ret = ksz_read8(dev, regs[REG_IND_DATA_8], data);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
/* There is no valid entry in the table. */
|
||||
if (*data & masks[DYNAMIC_MAC_TABLE_MAC_EMPTY])
|
||||
@ -428,7 +434,9 @@ static int ksz8_r_dyn_mac_table(struct ksz_device *dev, u16 addr, u8 *mac_addr,
|
||||
ctrl_addr = IND_ACC_TABLE(TABLE_DYNAMIC_MAC | TABLE_READ) | addr;
|
||||
|
||||
mutex_lock(&dev->alu_mutex);
|
||||
ksz_write16(dev, regs[REG_IND_CTRL_0], ctrl_addr);
|
||||
ret = ksz_write16(dev, regs[REG_IND_CTRL_0], ctrl_addr);
|
||||
if (ret)
|
||||
goto unlock_alu;
|
||||
|
||||
ret = ksz8_valid_dyn_entry(dev, &data);
|
||||
if (ret == -ENXIO) {
|
||||
@ -439,7 +447,10 @@ static int ksz8_r_dyn_mac_table(struct ksz_device *dev, u16 addr, u8 *mac_addr,
|
||||
if (ret)
|
||||
goto unlock_alu;
|
||||
|
||||
ksz_read64(dev, regs[REG_IND_DATA_HI], &buf);
|
||||
ret = ksz_read64(dev, regs[REG_IND_DATA_HI], &buf);
|
||||
if (ret)
|
||||
goto unlock_alu;
|
||||
|
||||
data_hi = (u32)(buf >> 32);
|
||||
data_lo = (u32)buf;
|
||||
|
||||
@ -462,7 +473,6 @@ static int ksz8_r_dyn_mac_table(struct ksz_device *dev, u16 addr, u8 *mac_addr,
|
||||
|
||||
mac_addr[1] = (u8)data_hi;
|
||||
mac_addr[0] = (u8)(data_hi >> 8);
|
||||
ret = 0;
|
||||
|
||||
unlock_alu:
|
||||
mutex_unlock(&dev->alu_mutex);
|
||||
|
Loading…
x
Reference in New Issue
Block a user