Hi, I’m trying 6.17-rc with my SFP stick ODI DFP-34G-2C2 and I can not get FIBRE as supported port. I’m building a nixos with frank-w repo here:
I have already edited module’s eeprom to enable 2500basex.
[root@nixos:~]# ethtool end2
Settings for end2:
Supported ports: [ MII ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
10000baseT/Full
2500baseX/Full
1000baseKX/Full
10000baseKX4/Full
10000baseKR/Full
10000baseR_FEC
1000baseX/Full
10000baseCR/Full
10000baseSR/Full
10000baseLR/Full
10000baseLRM/Full
10000baseER/Full
2500baseT/Full
5000baseT/Full
100baseT1/Full
1000baseT1/Full
100baseFX/Half 100baseFX/Full
10baseT1L/Full
10baseT1S/Full
10baseT1S/Half 10baseT1S_P2MP/Half 10baseT1BRR/Full
Supported pause frame use: Symmetric Receive-only
Supports auto-negotiation: Yes
Supported FEC modes: Not reported
Advertised link modes: Not reported
Advertised pause frame use: No
Advertised auto-negotiation: No
Advertised FEC modes: Not reported
Speed: Unknown!
Duplex: Half
Auto-negotiation: off
Port: MII
PHYAD: 0
Transceiver: internal
Current message level: 0x000000ff (255)
drv probe link timer ifdown ifup rx_err tx_err
Link detected: no
[root@nixos:~]# ethtool -m end2
Identifier : 0x03 (SFP)
Extended identifier : 0x04 (GBIC/SFP defined by 2-wire interface ID)
Connector : 0x01 (SC)
Transceiver codes : 0x00 0x00 0x00 0x00 0x22 0x00 0x01 0x00 0x00
Transceiver type : FC: Single Mode (SM)
Encoding : 0x01 (8B/10B)
BR Nominal : 3100MBd
Rate identifier : 0x00 (unspecified)
Length (SMF) : 20km
Length (OM2) : 0m
Length (OM1) : 0m
Length (Copper or Active cable) : 0m
Length (OM3) : 0m
Laser wavelength : 1310nm
Vendor name : ODI
Vendor OUI : 00:00:00
Vendor PN : DFP-34G-2C2
Vendor rev :
Option values : 0x00 0x1a
Option : TX_DISABLE implemented
BR margin max : 0%
BR margin min : 0%
Vendor SN : GPON23010092
Date code : 230105
[root@nixos:~]# dmesg | grep end2
[ 2.026864] mtk_soc_eth 15100000.ethernet end2: renamed from eth2
[ 136.637462] mtk_soc_eth 15100000.ethernet end2: autoneg setting not compatible with PCS # <-- tried ethtool -s end2 autoneg off
[root@nixos:~]# dmesg | grep sfp
[ 0.997763] sfp sfp1: Host maximum power 3.0W
[ 0.998442] sfp sfp2: Host maximum power 3.0W
[ 1.317757] sfp sfp1: module ODI DFP-34G-2C2 rev sn GPON23010092 dc 230105
[root@nixos:~]# dmesg | grep eth
[ 0.000000] psci: probing for conduit method from DT.
[ 1.262515] mtk_soc_eth 15100000.ethernet eth0: mediatek frame engine at 0xffffffc083240000, irq 102
[ 1.276744] mtk_soc_eth 15100000.ethernet eth1: mediatek frame engine at 0xffffffc083240000, irq 102
[ 1.277191] mtk_soc_eth 15100000.ethernet eth2: mediatek frame engine at 0xffffffc083240000, irq 102
[ 1.317800] mtk_soc_eth 15100000.ethernet eth2: autoneg setting not compatible with PCS
[ 1.456410] mtk_soc_eth 15100000.ethernet eth0: entered promiscuous mode
[ 2.019135] mtk_soc_eth 15100000.ethernet end0: renamed from eth0
[ 2.026385] mtk_soc_eth 15100000.ethernet end1: renamed from eth1
[ 2.026864] mtk_soc_eth 15100000.ethernet end2: renamed from eth2
[ 136.637462] mtk_soc_eth 15100000.ethernet end2: autoneg setting not compatible with PCS
I also tried this patch below to force 2500-basex, to no avail:
Date: Sat, 6 Sep 2025 15:51:45 +0200
Subject: [PATCH] sfp: quirks to enable 2500base-x
---
drivers/net/phy/sfp.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/net/phy/sfp.c b/drivers/net/phy/sfp.c
index 5347c95d1e77..a4188fd774eb 100644
--- a/drivers/net/phy/sfp.c
+++ b/drivers/net/phy/sfp.c
@@ -543,6 +543,7 @@ static const struct sfp_quirk sfp_quirks[] = {
SFP_QUIRK_F("Turris", "RTSFP-2.5G", sfp_fixup_rollball),
SFP_QUIRK_F("Turris", "RTSFP-10", sfp_fixup_rollball),
SFP_QUIRK_F("Turris", "RTSFP-10G", sfp_fixup_rollball),
+ SFP_QUIRK_M("ODI", "DFP-34G-2C2", sfp_quirk_2500basex),
};
static size_t sfp_strlen(const char *str, size_t maxlen)
--
2.51.0
I also don’t observe this issue with branch 6.12-main, module works fine on that branch. (FIBRE 2500 basex)
Maybe 6.17-rc is lacking a couple of patches ?
Thanks for kind help