ACK: [SRU][G/raspi][F/raspi][PATCH] net: lan78xx: Ack pending PHY ints when resetting
Kelsey Skunberg
kelsey.skunberg at canonical.com
Mon Jan 4 17:27:20 UTC 2021
On 2020-12-16 13:26:57 , Juerg Haefliger wrote:
> From: Phil Elwell <phil at raspberrypi.com>
>
> BugLink: https://bugs.launchpad.net/bugs/1890487
>
> 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 at raspberrypi.com>
>
> (cherry picked from commit 44c11fa2063f00994cbce6708097f521f0b2c493 rpi-5.4.y)
> Signed-off-by: Juerg Haefliger <juergh at canonical.com>
Acked-by: Kelsey Skunberg <kelsey.skunberg at canonical.com>
> ---
> drivers/net/usb/lan78xx.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c
> index ad93e7f28dde..dcd68781e730 100644
> --- a/drivers/net/usb/lan78xx.c
> +++ b/drivers/net/usb/lan78xx.c
> @@ -1181,6 +1181,9 @@ static int lan78xx_link_reset(struct lan78xx_net *dev)
> if (unlikely(ret < 0))
> return -EIO;
>
> + /* Acknowledge any pending PHY interrupt, lest it be the last */
> + phy_read(phydev, LAN88XX_INT_STS);
> +
> phy_read_status(phydev);
>
> if (!phydev->link && dev->link_on) {
> --
> 2.25.1
>
>
> --
> kernel-team mailing list
> kernel-team at lists.ubuntu.com
> https://lists.ubuntu.com/mailman/listinfo/kernel-team
More information about the kernel-team
mailing list