aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux
diff options
context:
space:
mode:
authorPascal Ernster <git@hardfalcon.net>2023-01-03 23:01:11 +0100
committerSander Vanheule <sander@svanheule.net>2023-01-05 23:08:04 +0100
commitde2dc3feaea7deefcc816fb09167211965fdde9b (patch)
treef28a7aed7b2745fd2537b2c71ba70e134910adf7 /target/linux
parent44e07852856e65d4348185ed8042fa8a8c05530f (diff)
downloadupstream-de2dc3feaea7deefcc816fb09167211965fdde9b.tar.gz
upstream-de2dc3feaea7deefcc816fb09167211965fdde9b.tar.bz2
upstream-de2dc3feaea7deefcc816fb09167211965fdde9b.zip
realtek: return correct error value for phy ops
A behavioural change was introduced with commit 758c88b96963 ("realtek: Whitespace and codestyle cleanup") causing rtl838x_read_phy() and rtl838x_write_phy() to unconditionally return -ETIMEDOUT. As a result, probing the device during boot fails: Error setting up netdev, freeing it again. rtl838x-eth: probe of 1b00a300.ethernet failed with error -5 Fix the bootloop caused by this regression with kernel 5.15 on rtl838x devices, by properly returning 0 on success. Tested on a Netgear GS108T v3, a Netgear GS310TP v1, a Zyxel GS1900-8HP v1 and an HPE 1920-8G. Fixes: 758c88b969639d0e6b684669d2e54dd1be3102f4 ("realtek: Whitespace and codestyle cleanup") Tested-by: Stijn Segers <foss@volatilesystems.org> Tested-by: Jan Hoffmann <jan@3e8.eu> Signed-off-by: Pascal Ernster <git@hardfalcon.net>
Diffstat (limited to 'target/linux')
-rw-r--r--target/linux/realtek/files-5.15/drivers/net/dsa/rtl83xx/rtl838x.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/target/linux/realtek/files-5.15/drivers/net/dsa/rtl83xx/rtl838x.c b/target/linux/realtek/files-5.15/drivers/net/dsa/rtl83xx/rtl838x.c
index c1d6b0c554..cbd4543db4 100644
--- a/target/linux/realtek/files-5.15/drivers/net/dsa/rtl83xx/rtl838x.c
+++ b/target/linux/realtek/files-5.15/drivers/net/dsa/rtl83xx/rtl838x.c
@@ -1832,7 +1832,7 @@ int rtl838x_read_phy(u32 port, u32 page, u32 reg, u32 *val)
timeout:
mutex_unlock(&smi_lock);
- return -ETIMEDOUT;
+ return err;
}
/* Write to a register in a page of the PHY */
@@ -1868,7 +1868,7 @@ int rtl838x_write_phy(u32 port, u32 page, u32 reg, u32 val)
timeout:
mutex_unlock(&smi_lock);
- return -ETIMEDOUT;
+ return err;
}
/* Read an mmd register of a PHY */