mirror of
https://github.com/kernelkit/infix.git
synced 2026-07-22 01:13:00 +02:00
57 lines
2.4 KiB
Diff
57 lines
2.4 KiB
Diff
From 362a0c4114ed4d4e4b4d963f1e24d758e44b3b55 Mon Sep 17 00:00:00 2001
|
|
From: Joachim Wiberg <troglobit@gmail.com>
|
|
Date: Tue, 7 Apr 2026 07:34:52 +0200
|
|
Subject: [PATCH 47/50] net: phy: sfp: add OEM SFP-10G-T-I quirk
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
The industrial-temperature variant of the OEM SFP-10G-T copper module
|
|
reports vendor PN "SFP-10G-T-I". Unlike the base "SFP-10G-T" which is a
|
|
genuine RollBall module, the -I variant uses a plain XFI (10GBASER) host
|
|
interface and does not implement the RollBall MDIO protocol.
|
|
|
|
Both variants zero the extended_cc field in EEPROM, which causes
|
|
sfp_module_parse_support() to hit SFF8024_ECC_UNSPEC and set no interface
|
|
modes, making phylink reject the module with "no common interface modes".
|
|
|
|
For the -I variant, add sfp_fixup_xfi_cc which only corrects the extended
|
|
compliance code to SFF8024_ECC_10GBASE_T_SFI so the driver picks 10GBASER.
|
|
Skipping the RollBall PHY probe avoids a ~7-minute boot-time delay
|
|
(sfp_poll_timeout * retries ≈ 440 s) when no RollBall PHY is found.
|
|
|
|
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
|
|
---
|
|
drivers/net/phy/sfp.c | 11 +++++++++++
|
|
1 file changed, 11 insertions(+)
|
|
|
|
diff --git a/drivers/net/phy/sfp.c b/drivers/net/phy/sfp.c
|
|
index 25223cfe017b..f2ced24f42cf 100644
|
|
--- a/drivers/net/phy/sfp.c
|
|
+++ b/drivers/net/phy/sfp.c
|
|
@@ -451,6 +451,16 @@ static void sfp_fixup_rollball_cc(struct sfp *sfp)
|
|
sfp->id.base.extended_cc = SFF8024_ECC_10GBASE_T_SFI;
|
|
}
|
|
|
|
+static void sfp_fixup_xfi_cc(struct sfp *sfp)
|
|
+{
|
|
+ /* Module has zeroed extended compliance code but uses a plain XFI
|
|
+ * (10GBASER) host interface and does not support the Rollball MDIO
|
|
+ * protocol. Only fix the compliance code so the driver picks 10GBASER;
|
|
+ * skipping Rollball avoids a ~7 minute PHY probe retry delay on boot.
|
|
+ */
|
|
+ sfp->id.base.extended_cc = SFF8024_ECC_10GBASE_T_SFI;
|
|
+}
|
|
+
|
|
static void sfp_quirk_2500basex(const struct sfp_eeprom_id *id,
|
|
struct sfp_module_caps *caps)
|
|
{
|
|
@@ -580,6 +590,7 @@ static const struct sfp_quirk sfp_quirks[] = {
|
|
SFP_QUIRK_F("OEM", "SFP-GE-T", sfp_fixup_ignore_tx_fault),
|
|
|
|
SFP_QUIRK_F("OEM", "SFP-10G-T", sfp_fixup_rollball_cc),
|
|
+ SFP_QUIRK_F("OEM", "SFP-10G-T-I", sfp_fixup_xfi_cc),
|
|
SFP_QUIRK_S("OEM", "SFP-2.5G-T", sfp_quirk_oem_2_5g),
|
|
SFP_QUIRK_S("OEM", "SFP-2.5G-BX10-D", sfp_quirk_2500basex),
|
|
SFP_QUIRK_S("OEM", "SFP-2.5G-BX10-U", sfp_quirk_2500basex),
|