 8222f8e1b9
			
		
	
	8222f8e1b9
	
	
	
		
			
			This fixes incorrect supported link modes indicated when using ethtool on the Ubiquiti UniFi AC lite / LR / Mesh. eroot@OpenWrt:~# ethtool eth0 Settings for eth0: Supported ports: [ TP MII ] Supported link modes: 100baseT/Half 100baseT/Full 1000baseT/Full 1000baseX/Full The reason for this is, that since kernel 5.4 the PHY capabilities are read dynamically from the PHY. As Ubiquiti leaves the PHY in a wrong state, the capabilities of the SGMII side of the PHY are read. As a side effect, 10 Mbit/s link modes did not work on these boards. Signed-off-by: David Bauer <mail@david-bauer.net>
		
			
				
	
	
		
			37 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| Add back explicit PHY feature flags for the AR8031 and
 | |
| AR8033 PHY instead of reading them from the PHY.
 | |
| 
 | |
| The Botloader for Ubiquiti UniFi AC boards (and possibly more)
 | |
| leave fiber page selected, thus we will end up reading the PHY
 | |
| capabilities of the SGMII side (which does not offer 10 Mbit/s).
 | |
| 
 | |
| We already have a hack in place, which switches back to the copper
 | |
| page, however this happens after capabilities are read.
 | |
| 
 | |
| The original conversation about 735-net-phy-at803x-fix-at8033-sgmii-mode
 | |
| back in 2015 explicitly mention the UniFi AC Lite. The issue however is
 | |
| not missing autonegotiation on the Fiber side, but the fact the PHY
 | |
| is never switched to the copper side. So half of this patch is superfluous.
 | |
| 
 | |
| A fix is currently being upstreamed. Once this is mainlined and available to us,
 | |
| these patches can be dropped:
 | |
| 
 | |
| 735-net-phy-at803x-fix-at8033-sgmii-mode.patch
 | |
| 736-net-phy-at803x-add-at8031-features.patch
 | |
| 
 | |
| This was tested on a UniFi AC Lite.
 | |
| 
 | |
| See https://patchwork.kernel.org/project/netdevbpf/list/?series=467341
 | |
| 
 | |
| --- a/drivers/net/phy/at803x.c
 | |
| +++ b/drivers/net/phy/at803x.c
 | |
| @@ -490,7 +490,7 @@ static struct phy_driver at803x_driver[]
 | |
|  	.get_wol		= at803x_get_wol,
 | |
|  	.suspend		= at803x_suspend,
 | |
|  	.resume			= at803x_resume,
 | |
| -	/* PHY_GBIT_FEATURES */
 | |
| +	.features               = PHY_GBIT_FEATURES,
 | |
|  	.read_status		= at803x_read_status,
 | |
|  	.aneg_done		= at803x_aneg_done,
 | |
|  	.ack_interrupt		= &at803x_ack_interrupt,
 |