1
0
Fork 0
mirror of https://github.com/Ysurac/openmptcprouter.git synced 2025-02-15 04:42:02 +00:00
openmptcprouter/root/target/linux/bcm27xx/patches-5.15/950-0327-net-lan78xx-Ack-pending-PHY-ints-when-resetting.patch

33 lines
1.1 KiB
Diff
Raw Normal View History

2022-04-22 15:00:47 +00:00
From 872a25fe160c6f770c94fba4090aefa9d23793a7 Mon Sep 17 00:00:00 2001
2021-11-24 17:32:01 +00:00
From: Phil Elwell <phil@raspberrypi.com>
Date: Tue, 15 Dec 2020 16:38:37 +0000
2022-04-22 15:00:47 +00:00
Subject: [PATCH 327/828] net: lan78xx: Ack pending PHY ints when resetting
2021-11-24 17:32:01 +00:00
lan78xx_link_reset explicitly clears the MAC's view of the PHY's IRQ
status. In doing so it potentially leaves the PHY with a pending
interrupt that will never be acknowledged, at which point no further
interrupts will be generated.
Avoid the problem by acknowledging any pending PHY interrupt after
clearing the MAC's status bit.
See: https://github.com/raspberrypi/linux/issues/2937
Signed-off-by: Phil Elwell <phil@raspberrypi.com>
---
drivers/net/usb/lan78xx.c | 3 +++
1 file changed, 3 insertions(+)
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
2022-04-22 15:00:47 +00:00
@@ -1274,6 +1274,9 @@ static int lan78xx_link_reset(struct lan
2021-11-24 17:32:01 +00:00
if (unlikely(ret < 0))
return ret;
+ /* Acknowledge any pending PHY interrupt, lest it be the last */
+ phy_read(phydev, LAN88XX_INT_STS);
+
mutex_lock(&phydev->lock);
phy_read_status(phydev);
link = phydev->link;