mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-26 08:51:13 +00:00
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)
|