Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.50
Dropped upstreamed:
backport-6.12/787-v6.17-net-sfp-add-quirk-for-FLYPRO-copper-SFP-module.patch[1]
All patches automatically rebased.
1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.50&id=
d2be6c429d8cc952ff42fdf31b6a7cffb5e233b0
Build system: x86/64
Build-tested: flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3, x86/64-glibc
Run-tested: flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3, x86/64-glibc
Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/20280
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* For devices with more than one control interface, we assume the
--- a/sound/usb/quirks.c
+++ b/sound/usb/quirks.c
-@@ -2360,6 +2360,8 @@ static const struct usb_audio_quirk_flag
+@@ -2378,6 +2378,8 @@ static const struct usb_audio_quirk_flag
QUIRK_FLAG_ALIGN_TRANSFER),
DEVICE_FLG(0x534d, 0x2109, /* MacroSilicon MS2109 */
QUIRK_FLAG_ALIGN_TRANSFER),
--- a/net/bluetooth/hci_sync.c
+++ b/net/bluetooth/hci_sync.c
-@@ -4921,6 +4921,7 @@ static const struct {
+@@ -4928,6 +4928,7 @@ static const struct {
*/
static int hci_dev_setup_sync(struct hci_dev *hdev)
{
int ret = 0;
bool invalid_bdaddr;
size_t i;
-@@ -4949,7 +4950,8 @@ static int hci_dev_setup_sync(struct hci
+@@ -4956,7 +4957,8 @@ static int hci_dev_setup_sync(struct hci
test_bit(HCI_QUIRK_USE_BDADDR_PROPERTY, &hdev->quirks);
if (!ret) {
if (test_bit(HCI_QUIRK_USE_BDADDR_PROPERTY, &hdev->quirks) &&
--- a/drivers/usb/host/xhci-mem.c
+++ b/drivers/usb/host/xhci-mem.c
-@@ -1383,6 +1383,7 @@ int xhci_endpoint_init(struct xhci_hcd *
+@@ -1387,6 +1387,7 @@ int xhci_endpoint_init(struct xhci_hcd *
unsigned int ep_index;
struct xhci_ep_ctx *ep_ctx;
struct xhci_ring *ep_ring;
unsigned int max_packet;
enum xhci_ring_type ring_type;
u32 max_esit_payload;
-@@ -1392,6 +1393,8 @@ int xhci_endpoint_init(struct xhci_hcd *
+@@ -1396,6 +1397,8 @@ int xhci_endpoint_init(struct xhci_hcd *
unsigned int mult;
unsigned int avg_trb_len;
unsigned int err_count = 0;
ep_index = xhci_get_endpoint_index(&ep->desc);
ep_ctx = xhci_get_ep_ctx(xhci, virt_dev->in_ctx, ep_index);
-@@ -1427,9 +1430,35 @@ int xhci_endpoint_init(struct xhci_hcd *
+@@ -1431,9 +1434,35 @@ int xhci_endpoint_init(struct xhci_hcd *
mult = xhci_get_endpoint_mult(udev, ep);
max_packet = usb_endpoint_maxp(&ep->desc);
--- a/net/bluetooth/hci_sync.c
+++ b/net/bluetooth/hci_sync.c
-@@ -4921,7 +4921,8 @@ static const struct {
+@@ -4928,7 +4928,8 @@ static const struct {
*/
static int hci_dev_setup_sync(struct hci_dev *hdev)
{
--- a/drivers/usb/host/xhci-mem.c
+++ b/drivers/usb/host/xhci-mem.c
-@@ -701,6 +701,14 @@ void xhci_setup_streams_ep_input_ctx(str
+@@ -705,6 +705,14 @@ void xhci_setup_streams_ep_input_ctx(str
ep_ctx->ep_info &= cpu_to_le32(~EP_MAXPSTREAMS_MASK);
ep_ctx->ep_info |= cpu_to_le32(EP_MAXPSTREAMS(max_primary_streams)
| EP_HAS_LSA);
+++ /dev/null
-From ddbf0e78a8b20ec18d314d31336a0230fdc9b394 Mon Sep 17 00:00:00 2001
-From: Aleksander Jan Bajkowski <olek2@wp.pl>
-Date: Sun, 31 Aug 2025 12:59:07 +0200
-Subject: net: sfp: add quirk for FLYPRO copper SFP+ module
-
-Add quirk for a copper SFP that identifies itself as "FLYPRO"
-"SFP-10GT-CS-30M". It uses RollBall protocol to talk to the PHY.
-
-Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>
-Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
-Link: https://patch.msgid.link/20250831105910.3174-1-olek2@wp.pl
-Signed-off-by: Jakub Kicinski <kuba@kernel.org>
----
- drivers/net/phy/sfp.c | 3 +++
- 1 file changed, 3 insertions(+)
-
---- a/drivers/net/phy/sfp.c
-+++ b/drivers/net/phy/sfp.c
-@@ -474,6 +474,9 @@ static const struct sfp_quirk sfp_quirks
- SFP_QUIRK("ALCATELLUCENT", "3FE46541AA", sfp_quirk_2500basex,
- sfp_fixup_nokia),
-
-+ // FLYPRO SFP-10GT-CS-30M uses Rollball protocol to talk to the PHY.
-+ SFP_QUIRK_F("FLYPRO", "SFP-10GT-CS-30M", sfp_fixup_rollball),
-+
- // Fiberstore SFP-10G-T doesn't identify as copper, uses the Rollball
- // protocol to talk to the PHY and needs 4 sec wait before probing the
- // PHY.
-LINUX_VERSION-6.12 = .49
-LINUX_KERNEL_HASH-6.12.49 = 234621e146dacce2241049555d550e4f7a6bde67ccd7ef232d47ac8145425526
+LINUX_VERSION-6.12 = .50
+LINUX_KERNEL_HASH-6.12.50 = c435bd74d1c21fc5a950781a50d78bae2b93944144694843359948ad3afc72a5
--- a/drivers/net/phy/sfp.c
+++ b/drivers/net/phy/sfp.c
-@@ -694,10 +694,64 @@ static int sfp_i2c_write(struct sfp *sfp
+@@ -713,10 +713,64 @@ static int sfp_i2c_write(struct sfp *sfp
return ret == ARRAY_SIZE(msgs) ? len : 0;
}
sfp->i2c = i2c;
sfp->read = sfp_i2c_read;
-@@ -729,6 +783,29 @@ static int sfp_i2c_mdiobus_create(struct
+@@ -748,6 +802,29 @@ static int sfp_i2c_mdiobus_create(struct
return 0;
}
static void sfp_i2c_mdiobus_destroy(struct sfp *sfp)
{
mdiobus_unregister(sfp->i2c_mii);
-@@ -1903,9 +1980,15 @@ static void sfp_sm_fault(struct sfp *sfp
+@@ -1922,9 +1999,15 @@ static void sfp_sm_fault(struct sfp *sfp
static int sfp_sm_add_mdio_bus(struct sfp *sfp)
{