|
| 1 | +From 95aca8602ef70ffd3d971675751c81826e124f90 Mon Sep 17 00:00:00 2001 |
| 2 | +From: John Pavlick <jspavlick@posteo.net> |
| 3 | +Date: Mon, 6 Apr 2026 13:23:33 +0000 |
| 4 | +Subject: [PATCH] net: sfp: add quirks for Hisense and HSGQ GPON ONT SFP |
| 5 | + modules |
| 6 | + |
| 7 | +Several GPON ONT SFP sticks based on Realtek RTL960x report |
| 8 | +1000BASE-LX at 1300MBd in their EEPROM but can operate at 2500base-X. |
| 9 | +On hosts capable of 2500base-X (e.g. Banana Pi R3 / MT7986), the |
| 10 | +kernel negotiates only 1G because it trusts the incorrect EEPROM data. |
| 11 | + |
| 12 | +Add quirks for: |
| 13 | +- Hisense-Leox LXT-010S-H |
| 14 | +- Hisense ZNID-GPON-2311NA |
| 15 | +- HSGQ HSGQ-XPON-Stick |
| 16 | + |
| 17 | +Each quirk advertises 2500base-X and ignores TX_FAULT during the |
| 18 | +module's ~40s Linux boot time. |
| 19 | + |
| 20 | +Tested on Banana Pi R3 (MT7986) with OpenWrt 25.12.1, confirmed |
| 21 | +2.5Gbps link and full throughput with flow offloading. |
| 22 | + |
| 23 | +Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk> |
| 24 | +Suggested-by: Marcin Nita <marcin.nita@leolabs.pl> |
| 25 | +Signed-off-by: John Pavlick <jspavlick@posteo.net> |
| 26 | +Link: https://patch.msgid.link/20260406132321.72563-1-jspavlick@posteo.net |
| 27 | +Signed-off-by: Jakub Kicinski <kuba@kernel.org> |
| 28 | +--- |
| 29 | + drivers/net/phy/sfp.c | 16 ++++++++++++++++ |
| 30 | + 1 file changed, 16 insertions(+) |
| 31 | + |
| 32 | +--- a/drivers/net/phy/sfp.c |
| 33 | ++++ b/drivers/net/phy/sfp.c |
| 34 | +@@ -538,6 +538,22 @@ static const struct sfp_quirk sfp_quirks |
| 35 | + SFP_QUIRK("HUAWEI", "MA5671A", sfp_quirk_2500basex, |
| 36 | + sfp_fixup_ignore_tx_fault_and_los), |
| 37 | + |
| 38 | ++ // Hisense LXT-010S-H is a GPON ONT SFP (sold as LEOX LXT-010S-H) that |
| 39 | ++ // can operate at 2500base-X, but reports 1000BASE-LX / 1300MBd in its |
| 40 | ++ // EEPROM |
| 41 | ++ SFP_QUIRK("Hisense-Leox", "LXT-010S-H", sfp_quirk_2500basex, |
| 42 | ++ sfp_fixup_ignore_tx_fault), |
| 43 | ++ |
| 44 | ++ // Hisense ZNID-GPON-2311NA can operate at 2500base-X, but reports |
| 45 | ++ // 1000BASE-LX / 1300MBd in its EEPROM |
| 46 | ++ SFP_QUIRK("Hisense", "ZNID-GPON-2311NA", sfp_quirk_2500basex, |
| 47 | ++ sfp_fixup_ignore_tx_fault), |
| 48 | ++ |
| 49 | ++ // HSGQ HSGQ-XPON-Stick can operate at 2500base-X, but reports |
| 50 | ++ // 1000BASE-LX / 1300MBd in its EEPROM |
| 51 | ++ SFP_QUIRK("HSGQ", "HSGQ-XPON-Stick", sfp_quirk_2500basex, |
| 52 | ++ sfp_fixup_ignore_tx_fault), |
| 53 | ++ |
| 54 | + // Lantech 8330-262D-E and 8330-265D can operate at 2500base-X, but |
| 55 | + // incorrectly report 2500MBd NRZ in their EEPROM. |
| 56 | + // Some 8330-265D modules have inverted LOS, while all of them report |
0 commit comments