Commit eeee5a71 authored by Marek Behún's avatar Marek Behún Committed by Jakub Kicinski
Browse files

net: sfp: Fix Ubiquiti U-Fiber Instant SFP module on mvneta



In commit 8110633d ("net: sfp-bus: allow SFP quirks to override
Autoneg and pause bits") we moved the setting of Autoneg and pause bits
before the call to SFP quirk when parsing SFP module support.

Since the quirk for Ubiquiti U-Fiber Instant SFP module zeroes the
support bits and sets 1000baseX_Full only, the above mentioned commit
changed the overall computed support from
  1000baseX_Full, Autoneg, Pause, Asym_Pause
to just
  1000baseX_Full.

This broke the SFP module for mvneta, which requires Autoneg for
1000baseX since commit c762b7fa ("net: mvneta: deny disabling
autoneg for 802.3z modes").

Fix this by setting back the Autoneg, Pause and Asym_Pause bits in the
quirk.

Fixes: 8110633d ("net: sfp-bus: allow SFP quirks to override Autoneg and pause bits")
Signed-off-by: default avatarMarek Behún <kabel@kernel.org>
Reviewed-by: default avatarRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
Link: https://patch.msgid.link/20260326122038.2489589-1-kabel@kernel.org


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 5d17af9e
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -480,11 +480,16 @@ static void sfp_quirk_ubnt_uf_instant(const struct sfp_eeprom_id *id,
{
	/* Ubiquiti U-Fiber Instant module claims that support all transceiver
	 * types including 10G Ethernet which is not truth. So clear all claimed
	 * modes and set only one mode which module supports: 1000baseX_Full.
	 * modes and set only one mode which module supports: 1000baseX_Full,
	 * along with the Autoneg and pause bits.
	 */
	linkmode_zero(caps->link_modes);
	linkmode_set_bit(ETHTOOL_LINK_MODE_1000baseX_Full_BIT,
			 caps->link_modes);
	linkmode_set_bit(ETHTOOL_LINK_MODE_Autoneg_BIT, caps->link_modes);
	linkmode_set_bit(ETHTOOL_LINK_MODE_Pause_BIT, caps->link_modes);
	linkmode_set_bit(ETHTOOL_LINK_MODE_Asym_Pause_BIT, caps->link_modes);

	phy_interface_zero(caps->interfaces);
	__set_bit(PHY_INTERFACE_MODE_1000BASEX, caps->interfaces);
}