mirror of
				https://github.com/Ysurac/openmptcprouter.git
				synced 2025-03-09 15:40:20 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			32 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			32 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From 08749d7b1517be7d30bc1cf668273fc5efc3e824 Mon Sep 17 00:00:00 2001
 | |
| From: Phil Elwell <phil@raspberrypi.com>
 | |
| Date: Tue, 15 Dec 2020 16:38:37 +0000
 | |
| Subject: [PATCH] net: lan78xx: Ack pending PHY ints when resetting
 | |
| 
 | |
| 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
 | |
| @@ -1440,6 +1440,9 @@ static int lan78xx_link_reset(struct lan
 | |
|  	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;
 |