mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-11-04 06:54:27 -05:00 
			
		
		
		
	Backport the phy/phylink/sfp patches currently queued in netdev or in mainline necessary to support GPON popular modules, specifically to support Huawei and Nokia GPON modules. Signed-off-by: Russell King <linux@armlinux.org.uk> [jonas.gorski: include kernel version in file names, refresh patches] Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
		
			
				
	
	
		
			53 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
From ecaa542cfed078dbc356dadff0bad4b6a8e704a0 Mon Sep 17 00:00:00 2001
 | 
						|
From: Russell King <rmk+kernel@armlinux.org.uk>
 | 
						|
Date: Fri, 17 May 2019 10:14:45 +0100
 | 
						|
Subject: [PATCH 641/660] net: sfp: add some quirks for GPON modules
 | 
						|
 | 
						|
Marc Micalizzi reports that Huawei MA5671A and Alcatel/Lucent G-010S-P
 | 
						|
modules are capable of 2500base-X, but incorrectly report their
 | 
						|
capabilities in the EEPROM.  It seems rather common that GPON modules
 | 
						|
mis-report.
 | 
						|
 | 
						|
Let's fix these modules by adding some quirks.
 | 
						|
 | 
						|
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
 | 
						|
---
 | 
						|
 drivers/net/phy/sfp-bus.c | 25 +++++++++++++++++++++++++
 | 
						|
 1 file changed, 25 insertions(+)
 | 
						|
 | 
						|
--- a/drivers/net/phy/sfp-bus.c
 | 
						|
+++ b/drivers/net/phy/sfp-bus.c
 | 
						|
@@ -37,7 +37,32 @@ struct sfp_bus {
 | 
						|
 	bool started;
 | 
						|
 };
 | 
						|
 
 | 
						|
+static void sfp_quirk_2500basex(const struct sfp_eeprom_id *id,
 | 
						|
+				unsigned long *modes)
 | 
						|
+{
 | 
						|
+	phylink_set(modes, 2500baseX_Full);
 | 
						|
+}
 | 
						|
+
 | 
						|
 static const struct sfp_quirk sfp_quirks[] = {
 | 
						|
+	{
 | 
						|
+		// Alcatel Lucent G-010S-P can operate at 2500base-X, but
 | 
						|
+		// incorrectly report 2500MBd NRZ in their EEPROM
 | 
						|
+		.vendor = "ALCATELLUCENT",
 | 
						|
+		.part = "G010SP",
 | 
						|
+		.modes = sfp_quirk_2500basex,
 | 
						|
+	}, {
 | 
						|
+		// Alcatel Lucent G-010S-A can operate at 2500base-X, but
 | 
						|
+		// report 3.2GBd NRZ in their EEPROM
 | 
						|
+		.vendor = "ALCATELLUCENT",
 | 
						|
+		.part = "3FE46541AA",
 | 
						|
+		.modes = sfp_quirk_2500basex,
 | 
						|
+	}, {
 | 
						|
+		// Huawei MA5671A can operate at 2500base-X, but report 1.2GBd
 | 
						|
+		// NRZ in their EEPROM
 | 
						|
+		.vendor = "HUAWEI",
 | 
						|
+		.part = "MA5671A",
 | 
						|
+		.modes = sfp_quirk_2500basex,
 | 
						|
+	},
 | 
						|
 };
 | 
						|
 
 | 
						|
 static size_t sfp_strlen(const char *str, size_t maxlen)
 |