From: Aleksander Jan Bajkowski Date: Sun, 5 Jul 2026 15:39:39 +0000 (+0200) Subject: kernel: backport quirk for Horaco SFP+ Copper module X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0256e6a1e470960e489c4ef212981b8a524304d8;p=thirdparty%2Fopenwrt.git kernel: backport quirk for Horaco SFP+ Copper module Backport quirks for Horaco SFP+ Copper modules. This module support RollBall protocol. Signed-off-by: Aleksander Jan Bajkowski Link: https://github.com/openwrt/openwrt/pull/24559 Signed-off-by: Jonas Jelonek --- diff --git a/target/linux/generic/backport-6.12/755-v7.3-net-sfp-add-quirk-for-HORACO-copper-SFP-module.patch b/target/linux/generic/backport-6.12/755-v7.3-net-sfp-add-quirk-for-HORACO-copper-SFP-module.patch new file mode 100644 index 00000000000..6cf2b117448 --- /dev/null +++ b/target/linux/generic/backport-6.12/755-v7.3-net-sfp-add-quirk-for-HORACO-copper-SFP-module.patch @@ -0,0 +1,28 @@ +From 1bb028baab541900d3603d4f93c1c0fb5aba5401 Mon Sep 17 00:00:00 2001 +From: Aleksander Jan Bajkowski +Date: Sun, 19 Jul 2026 12:01:55 +0200 +Subject: [PATCH] net: sfp: add quirk for HORACO copper SFP+ module + +Add quirk for a copper SFP+ module that identifies itself as "OEM" +"HC-10GE-113C". It uses RollBall protocol to talk to the PHY. + +Signed-off-by: Aleksander Jan Bajkowski +Reviewed-by: Andrew Lunn +Link: https://patch.msgid.link/20260719100158.874882-1-olek2@wp.pl +Signed-off-by: Jakub Kicinski +--- + drivers/net/phy/sfp.c | 3 +++ + 1 file changed, 3 insertions(+) + +--- a/drivers/net/phy/sfp.c ++++ b/drivers/net/phy/sfp.c +@@ -569,6 +569,9 @@ static const struct sfp_quirk sfp_quirks + + SFP_QUIRK_F("YV", "SFP+ONU-XGSPON", sfp_fixup_potron), + ++ // HORACO HC-10GE-113C uses Rollball protocol to talk to the PHY. ++ SFP_QUIRK_F("OEM", "HC-10GE-113C", sfp_fixup_rollball), ++ + // OEM SFP-GE-T is a 1000Base-T module with broken TX_FAULT indicator + SFP_QUIRK_F("OEM", "SFP-GE-T", sfp_fixup_ignore_tx_fault), + diff --git a/target/linux/generic/backport-6.18/755-v7.3-net-sfp-add-quirk-for-HORACO-copper-SFP-module.patch b/target/linux/generic/backport-6.18/755-v7.3-net-sfp-add-quirk-for-HORACO-copper-SFP-module.patch new file mode 100644 index 00000000000..6f7d4173801 --- /dev/null +++ b/target/linux/generic/backport-6.18/755-v7.3-net-sfp-add-quirk-for-HORACO-copper-SFP-module.patch @@ -0,0 +1,28 @@ +From 1bb028baab541900d3603d4f93c1c0fb5aba5401 Mon Sep 17 00:00:00 2001 +From: Aleksander Jan Bajkowski +Date: Sun, 19 Jul 2026 12:01:55 +0200 +Subject: [PATCH] net: sfp: add quirk for HORACO copper SFP+ module + +Add quirk for a copper SFP+ module that identifies itself as "OEM" +"HC-10GE-113C". It uses RollBall protocol to talk to the PHY. + +Signed-off-by: Aleksander Jan Bajkowski +Reviewed-by: Andrew Lunn +Link: https://patch.msgid.link/20260719100158.874882-1-olek2@wp.pl +Signed-off-by: Jakub Kicinski +--- + drivers/net/phy/sfp.c | 3 +++ + 1 file changed, 3 insertions(+) + +--- a/drivers/net/phy/sfp.c ++++ b/drivers/net/phy/sfp.c +@@ -593,6 +593,9 @@ static const struct sfp_quirk sfp_quirks + + SFP_QUIRK_F("YV", "SFP+ONU-XGSPON", sfp_fixup_potron), + ++ // HORACO HC-10GE-113C uses Rollball protocol to talk to the PHY. ++ SFP_QUIRK_F("OEM", "HC-10GE-113C", sfp_fixup_rollball), ++ + // OEM SFP-GE-T is a 1000Base-T module with broken TX_FAULT indicator + SFP_QUIRK_F("OEM", "SFP-GE-T", sfp_fixup_ignore_tx_fault), + diff --git a/target/linux/generic/pending-6.12/750-net-sfp-add-quirk-for-QINIYEK-BJ-SFP-10G-T-copper-SF.patch b/target/linux/generic/pending-6.12/750-net-sfp-add-quirk-for-QINIYEK-BJ-SFP-10G-T-copper-SF.patch index 3ce41b082ec..e5b93800259 100644 --- a/target/linux/generic/pending-6.12/750-net-sfp-add-quirk-for-QINIYEK-BJ-SFP-10G-T-copper-SF.patch +++ b/target/linux/generic/pending-6.12/750-net-sfp-add-quirk-for-QINIYEK-BJ-SFP-10G-T-copper-SF.patch @@ -16,7 +16,7 @@ Signed-off-by: Daniel Golle --- a/drivers/net/phy/sfp.c +++ b/drivers/net/phy/sfp.c -@@ -578,6 +578,7 @@ static const struct sfp_quirk sfp_quirks +@@ -581,6 +581,7 @@ static const struct sfp_quirk sfp_quirks SFP_QUIRK_S("OEM", "SFP-2.5G-BX10-U", sfp_quirk_2500basex), SFP_QUIRK_F("OEM", "RTSFP-10", sfp_fixup_rollball_cc), SFP_QUIRK_F("OEM", "RTSFP-10G", sfp_fixup_rollball_cc), diff --git a/target/linux/generic/pending-6.18/750-net-sfp-add-quirk-for-QINIYEK-BJ-SFP-10G-T-copper-SF.patch b/target/linux/generic/pending-6.18/750-net-sfp-add-quirk-for-QINIYEK-BJ-SFP-10G-T-copper-SF.patch index b09463fcddb..c9b9dacaf8b 100644 --- a/target/linux/generic/pending-6.18/750-net-sfp-add-quirk-for-QINIYEK-BJ-SFP-10G-T-copper-SF.patch +++ b/target/linux/generic/pending-6.18/750-net-sfp-add-quirk-for-QINIYEK-BJ-SFP-10G-T-copper-SF.patch @@ -16,7 +16,7 @@ Signed-off-by: Daniel Golle --- a/drivers/net/phy/sfp.c +++ b/drivers/net/phy/sfp.c -@@ -602,6 +602,7 @@ static const struct sfp_quirk sfp_quirks +@@ -605,6 +605,7 @@ static const struct sfp_quirk sfp_quirks SFP_QUIRK_S("OEM", "SFP-2.5G-BX10-U", sfp_quirk_2500basex), SFP_QUIRK_F("OEM", "RTSFP-10", sfp_fixup_rollball_cc), SFP_QUIRK_F("OEM", "RTSFP-10G", sfp_fixup_rollball_cc), diff --git a/target/linux/generic/pending-6.18/751-net-sfp-add-quirk-for-TP-LINK-SM410U.patch b/target/linux/generic/pending-6.18/751-net-sfp-add-quirk-for-TP-LINK-SM410U.patch index c1f17ae69b8..06bd8381b91 100644 --- a/target/linux/generic/pending-6.18/751-net-sfp-add-quirk-for-TP-LINK-SM410U.patch +++ b/target/linux/generic/pending-6.18/751-net-sfp-add-quirk-for-TP-LINK-SM410U.patch @@ -14,7 +14,7 @@ Signed-off-by: Daniel Golle --- a/drivers/net/phy/sfp.c +++ b/drivers/net/phy/sfp.c -@@ -608,6 +608,7 @@ static const struct sfp_quirk sfp_quirks +@@ -611,6 +611,7 @@ static const struct sfp_quirk sfp_quirks SFP_QUIRK_F("Turris", "RTSFP-10G", sfp_fixup_rollball), SFP_QUIRK_S("ZOERAX", "SFP-2.5G-T", sfp_quirk_oem_2_5g), diff --git a/target/linux/generic/pending-6.18/896-03-net-phy-own-phydev-psec-via-PSE-notifier-and-remove-.patch b/target/linux/generic/pending-6.18/896-03-net-phy-own-phydev-psec-via-PSE-notifier-and-remove-.patch index 68d0d6e55a4..794c4eb2843 100644 --- a/target/linux/generic/pending-6.18/896-03-net-phy-own-phydev-psec-via-PSE-notifier-and-remove-.patch +++ b/target/linux/generic/pending-6.18/896-03-net-phy-own-phydev-psec-via-PSE-notifier-and-remove-.patch @@ -369,7 +369,7 @@ Tested-by: Jonas Jelonek rtnl_lock(); --- a/drivers/net/phy/sfp.c +++ b/drivers/net/phy/sfp.c -@@ -1992,7 +1992,7 @@ static int sfp_sm_probe_phy(struct sfp * +@@ -1995,7 +1995,7 @@ static int sfp_sm_probe_phy(struct sfp * /* Mark this PHY as being on a SFP module */ phy->is_on_sfp_module = true; diff --git a/target/linux/realtek/patches-6.18/705-v7.1-net-sfp-initialize-i2c_block_size-at-adapter-configu.patch b/target/linux/realtek/patches-6.18/705-v7.1-net-sfp-initialize-i2c_block_size-at-adapter-configu.patch index ef5f5e714e7..bbcb74891c7 100644 --- a/target/linux/realtek/patches-6.18/705-v7.1-net-sfp-initialize-i2c_block_size-at-adapter-configu.patch +++ b/target/linux/realtek/patches-6.18/705-v7.1-net-sfp-initialize-i2c_block_size-at-adapter-configu.patch @@ -31,7 +31,7 @@ Signed-off-by: Jakub Kicinski --- a/drivers/net/phy/sfp.c +++ b/drivers/net/phy/sfp.c -@@ -1816,6 +1816,7 @@ static int sfp_hwmon_insert(struct sfp * +@@ -1819,6 +1819,7 @@ static int sfp_hwmon_insert(struct sfp * sfp->hwmon_tries = R_PROBE_RETRY_SLOW; } diff --git a/target/linux/realtek/patches-6.18/706-01-v7.2-net-sfp-apply-I2C-adapter-quirks-to-limit-block-size.patch b/target/linux/realtek/patches-6.18/706-01-v7.2-net-sfp-apply-I2C-adapter-quirks-to-limit-block-size.patch index d2ce503e810..e02dfabee68 100644 --- a/target/linux/realtek/patches-6.18/706-01-v7.2-net-sfp-apply-I2C-adapter-quirks-to-limit-block-size.patch +++ b/target/linux/realtek/patches-6.18/706-01-v7.2-net-sfp-apply-I2C-adapter-quirks-to-limit-block-size.patch @@ -24,7 +24,7 @@ Signed-off-by: Jakub Kicinski --- a/drivers/net/phy/sfp.c +++ b/drivers/net/phy/sfp.c -@@ -826,21 +826,29 @@ static int sfp_smbus_byte_write(struct s +@@ -829,21 +829,29 @@ static int sfp_smbus_byte_write(struct s static int sfp_i2c_configure(struct sfp *sfp, struct i2c_adapter *i2c) { diff --git a/target/linux/realtek/patches-6.18/706-02-v7.2-net-sfp-extend-SMBus-support.patch b/target/linux/realtek/patches-6.18/706-02-v7.2-net-sfp-extend-SMBus-support.patch index c00c0d85803..43aa3fc711a 100644 --- a/target/linux/realtek/patches-6.18/706-02-v7.2-net-sfp-extend-SMBus-support.patch +++ b/target/linux/realtek/patches-6.18/706-02-v7.2-net-sfp-extend-SMBus-support.patch @@ -75,7 +75,7 @@ Signed-off-by: Jakub Kicinski #include #include "sfp.h" -@@ -775,50 +776,113 @@ static int sfp_i2c_write(struct sfp *sfp +@@ -778,50 +779,113 @@ static int sfp_i2c_write(struct sfp *sfp return ret == ARRAY_SIZE(msgs) ? len : 0; } @@ -213,7 +213,7 @@ Signed-off-by: Jakub Kicinski } return data - (u8 *)buf; -@@ -834,10 +898,29 @@ static int sfp_i2c_configure(struct sfp +@@ -837,10 +901,29 @@ static int sfp_i2c_configure(struct sfp sfp->read = sfp_i2c_read; sfp->write = sfp_i2c_write; max_block_size = SFP_EEPROM_BLOCK_SIZE; diff --git a/target/linux/realtek/patches-6.18/714-net-phy-sfp-add-support-for-SMBus.patch b/target/linux/realtek/patches-6.18/714-net-phy-sfp-add-support-for-SMBus.patch index bd679d3a5d2..88646c3afb4 100644 --- a/target/linux/realtek/patches-6.18/714-net-phy-sfp-add-support-for-SMBus.patch +++ b/target/linux/realtek/patches-6.18/714-net-phy-sfp-add-support-for-SMBus.patch @@ -10,7 +10,7 @@ Signed-off-by: Antoine Tenart --- a/drivers/net/phy/sfp.c +++ b/drivers/net/phy/sfp.c -@@ -959,6 +959,29 @@ static int sfp_i2c_mdiobus_create(struct +@@ -962,6 +962,29 @@ static int sfp_i2c_mdiobus_create(struct return 0; } @@ -40,7 +40,7 @@ Signed-off-by: Antoine Tenart static void sfp_i2c_mdiobus_destroy(struct sfp *sfp) { mdiobus_unregister(sfp->i2c_mii); -@@ -2174,9 +2197,15 @@ static void sfp_sm_fault(struct sfp *sfp +@@ -2177,9 +2200,15 @@ static void sfp_sm_fault(struct sfp *sfp static int sfp_sm_add_mdio_bus(struct sfp *sfp) {