|
@@ -433,13 +433,13 @@ int asix_mdio_read(struct net_device *netdev, int phy_id, int loc)
|
|
|
mutex_lock(&dev->phy_mutex);
|
|
|
do {
|
|
|
ret = asix_set_sw_mii(dev, 0);
|
|
|
- if (ret == -ENODEV)
|
|
|
+ if (ret == -ENODEV || ret == -ETIMEDOUT)
|
|
|
break;
|
|
|
usleep_range(1000, 1100);
|
|
|
ret = asix_read_cmd(dev, AX_CMD_STATMNGSTS_REG,
|
|
|
0, 0, 1, &smsr, 0);
|
|
|
} while (!(smsr & AX_HOST_EN) && (i++ < 30) && (ret != -ENODEV));
|
|
|
- if (ret == -ENODEV) {
|
|
|
+ if (ret == -ENODEV || ret == -ETIMEDOUT) {
|
|
|
mutex_unlock(&dev->phy_mutex);
|
|
|
return ret;
|
|
|
}
|
|
@@ -497,13 +497,13 @@ int asix_mdio_read_nopm(struct net_device *netdev, int phy_id, int loc)
|
|
|
mutex_lock(&dev->phy_mutex);
|
|
|
do {
|
|
|
ret = asix_set_sw_mii(dev, 1);
|
|
|
- if (ret == -ENODEV)
|
|
|
+ if (ret == -ENODEV || ret == -ETIMEDOUT)
|
|
|
break;
|
|
|
usleep_range(1000, 1100);
|
|
|
ret = asix_read_cmd(dev, AX_CMD_STATMNGSTS_REG,
|
|
|
0, 0, 1, &smsr, 1);
|
|
|
} while (!(smsr & AX_HOST_EN) && (i++ < 30) && (ret != -ENODEV));
|
|
|
- if (ret == -ENODEV) {
|
|
|
+ if (ret == -ENODEV || ret == -ETIMEDOUT) {
|
|
|
mutex_unlock(&dev->phy_mutex);
|
|
|
return ret;
|
|
|
}
|