]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
net: sfp: add quirks for Hisense and HSGQ GPON ONT SFP modules
authorJohn Pavlick <jspavlick@posteo.net>
Mon, 6 Apr 2026 13:23:33 +0000 (13:23 +0000)
committerJakub Kicinski <kuba@kernel.org>
Wed, 8 Apr 2026 01:13:51 +0000 (18:13 -0700)
Several GPON ONT SFP sticks based on Realtek RTL960x report
1000BASE-LX at 1300MBd in their EEPROM but can operate at 2500base-X.
On hosts capable of 2500base-X (e.g. Banana Pi R3 / MT7986), the
kernel negotiates only 1G because it trusts the incorrect EEPROM data.

Add quirks for:
- Hisense-Leox LXT-010S-H
- Hisense ZNID-GPON-2311NA
- HSGQ HSGQ-XPON-Stick

Each quirk advertises 2500base-X and ignores TX_FAULT during the
module's ~40s Linux boot time.

Tested on Banana Pi R3 (MT7986) with OpenWrt 25.12.1, confirmed
2.5Gbps link and full throughput with flow offloading.

Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Suggested-by: Marcin Nita <marcin.nita@leolabs.pl>
Signed-off-by: John Pavlick <jspavlick@posteo.net>
Link: https://patch.msgid.link/20260406132321.72563-1-jspavlick@posteo.net
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/phy/sfp.c

index ce8924613363b1528989388ace2c7a284d6035a3..6b7b8ae15d10652f8bfb316a2b80b765c772bdaa 100644 (file)
@@ -543,6 +543,22 @@ static const struct sfp_quirk sfp_quirks[] = {
        SFP_QUIRK("HUAWEI", "MA5671A", sfp_quirk_2500basex,
                  sfp_fixup_ignore_tx_fault_and_los),
 
+       // Hisense LXT-010S-H is a GPON ONT SFP (sold as LEOX LXT-010S-H) that
+       // can operate at 2500base-X, but reports 1000BASE-LX / 1300MBd in its
+       // EEPROM
+       SFP_QUIRK("Hisense-Leox", "LXT-010S-H", sfp_quirk_2500basex,
+                 sfp_fixup_ignore_tx_fault),
+
+       // Hisense ZNID-GPON-2311NA can operate at 2500base-X, but reports
+       // 1000BASE-LX / 1300MBd in its EEPROM
+       SFP_QUIRK("Hisense", "ZNID-GPON-2311NA", sfp_quirk_2500basex,
+                 sfp_fixup_ignore_tx_fault),
+
+       // HSGQ HSGQ-XPON-Stick can operate at 2500base-X, but reports
+       // 1000BASE-LX / 1300MBd in its EEPROM
+       SFP_QUIRK("HSGQ", "HSGQ-XPON-Stick", sfp_quirk_2500basex,
+                 sfp_fixup_ignore_tx_fault),
+
        // Lantech 8330-262D-E and 8330-265D can operate at 2500base-X, but
        // incorrectly report 2500MBd NRZ in their EEPROM.
        // Some 8330-265D modules have inverted LOS, while all of them report