Skip to contentSkip to conversation

net: sfp: improve Huawei MA5671a fixup

PATCH Superseded Álvaro Fernández Rojas 3 participants 5 messages Mar 5 – Mar 6

Subsystems (4)

v2 of 3 Superseded Latest is v3 →

lore
Share & tools
lore
#0 lore raw

PATCH v2 1/1 net: sfp: improve Huawei MA5671a fixup

With the current sfp_fixup_ignore_tx_fault() fixup we ignore the TX_FAULT signal, but we also need to apply sfp_fixup_ignore_los() in order to be able to communicate with the module even if the fiber isn't connected for configuration purposes.
This is needed for all the MA5671a firmwares, excluding the FS modded firmware.

Fixes 2069624dac19 ("net: sfp: Add tx-fault workaround for Huawei MA5671A SFP ONT")

---
v2: rebase on top of net/main instead of linux/master

 drivers/net/phy/sfp.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)
drivers/net/phy/sfp.c +7 -1
index f4bf53da3d4f..34773cbbd811 100644
@@ -372,6 +372,12 @@ static void sfp_fixup_ignore_hw(struct sfp *sfp, unsigned int mask)
 	sfp->state_hw_mask &= ~mask;
 }
 
+static void sfp_fixup_huawei(struct sfp *sfp)
+{
+	sfp_fixup_ignore_tx_fault(sfp);
+	sfp_fixup_ignore_los(sfp);
+}
+
 static void sfp_fixup_nokia(struct sfp *sfp)
 {
 	sfp_fixup_long_startup(sfp);
@@ -530,7 +536,7 @@ static const struct sfp_quirk sfp_quirks[] = {
 	// Huawei MA5671A can operate at 2500base-X, but report 1.2GBd NRZ in
 	// their EEPROM
 	SFP_QUIRK("HUAWEI", "MA5671A", sfp_quirk_2500basex,
-		  sfp_fixup_ignore_tx_fault),
+		  sfp_fixup_huawei),
 
 	// Lantech 8330-262D-E and 8330-265D can operate at 2500base-X, but
 	// incorrectly report 2500MBd NRZ in their EEPROM.
Signature · 1 line
2.47.3
maintainer
#1 lore raw
Quoted 1 line

+static void sfp_fixup_huawei(struct sfp *sfp)

Please avoid using a vendor name. It is unlikely just this vendor produces an SFP broken like this, other vendors will break their SFPs in the same way. And then we will want to reuse this helper.

So maybe sfp_fixup_ignore_tx_fault_and_loss()?

Andrew

#2 lore raw
Quoted 6 lines · Andrew Lunn
Quoted 2 lines

+static void sfp_fixup_huawei(struct sfp *sfp)

Please avoid using a vendor name. It is unlikely just this vendor produces an SFP broken like this, other vendors will break their SFPs in the same way. And then we will want to reuse this helper.

I just followed the same logic used for sfp_fixup_nokia()
https://github.com/torvalds/linux/blob/5ee8dbf54602dc340d6235b1d6aa17c0f283f48c/drivers/net/phy/sfp.c#L375-L379

Quoted 2 lines

So maybe sfp_fixup_ignore_tx_fault_and_loss()?

Sure, I can change that in v3.

Quoted 2 lines

Andrew

Best regards,
Álvaro.

maintainer
#3 lore raw
In reply to Álvaro Fernández Rojas
Quoted 6 lines · On Thu, 5 Mar 2026 13:50:32 +0100 Álvaro Fernández Rojas wrote:

With the current sfp_fixup_ignore_tx_fault() fixup we ignore the TX_FAULT signal, but we also need to apply sfp_fixup_ignore_los() in order to be able to communicate with the module even if the fiber isn't connected for configuration purposes.
This is needed for all the MA5671a firmwares, excluding the FS modded firmware.

Also please don't repost things more than once in a 24h period per:
https://www.kernel.org/doc/html/next/process/maintainer-netdev.html

Andrew could have given you the same feedback on v1 :/

#4 lore raw
Quoted 9 lines · Jakub Kicinski
Quoted 6 lines · On Thu, 5 Mar 2026 13:50:32 +0100 Álvaro Fernández Rojas wrote:

With the current sfp_fixup_ignore_tx_fault() fixup we ignore the TX_FAULT signal, but we also need to apply sfp_fixup_ignore_los() in order to be able to communicate with the module even if the fiber isn't connected for configuration purposes.
This is needed for all the MA5671a firmwares, excluding the FS modded firmware.

Quoted 4 lines

Also please don't repost things more than once in a 24h period per:
https://www.kernel.org/doc/html/next/process/maintainer-netdev.html

Andrew could have given you the same feedback on v1 :/

I'm really sorry for the trouble.