From e17cbd0488b4321dd823634986d3757151fe72d3 Mon Sep 17 00:00:00 2001 From: Robert Marko Date: Tue, 15 Apr 2025 13:50:12 +0200 Subject: [PATCH 1/4] ipq-wifi: update to Git HEAD (2025-04-15) 953ce37a3191 ipq40xx: Add TP-Link Deco M5 BDF f818835c7633 ipq5018: add BDF for GL.iNET GL-B3000 Add IPQ5018 BDF for GL.iNET GL-B3000. 38a18dc26c9b qcn6122: add BDF for GL.iNET GL-B3000 Add QCN6122 BDF for GL.iNET GL-B3000. Signed-off-by: Robert Marko --- package/firmware/ipq-wifi/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package/firmware/ipq-wifi/Makefile b/package/firmware/ipq-wifi/Makefile index bf7d553df3..72e3974438 100644 --- a/package/firmware/ipq-wifi/Makefile +++ b/package/firmware/ipq-wifi/Makefile @@ -6,9 +6,9 @@ PKG_RELEASE:=1 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL=$(PROJECT_GIT)/project/firmware/qca-wireless.git -PKG_SOURCE_DATE:=2025-04-08 -PKG_SOURCE_VERSION:=9591c9b7578af3548c35bb80cd6c37978669f7c9 -PKG_MIRROR_HASH:=b5c0024a0c0ebeb61ad6bc037f897685d161f1578aca5a1366dd33603661338b +PKG_SOURCE_DATE:=2025-04-15 +PKG_SOURCE_VERSION:=38a18dc26c9b150f06f56b9c5972d789eb5bc0c4 +PKG_MIRROR_HASH:=a10a9b524ecd91854265b04819303410ae77e1f5a093f9cc8eb43e25e99c1bae PKG_FLAGS:=nonshared include $(INCLUDE_DIR)/package.mk From f98ee3bbab6e48821dcbeb394a18722e00f54555 Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Mon, 14 Apr 2025 15:30:05 +0200 Subject: [PATCH 2/4] generic: drop redundant ATS SFP GT-T quirk patch The ATS SFP GT-T quirk patch was backported to stable kernel 6.6 but was not notice while bumping the kernel version as they listed the quirk at the bottom of the SFP quirk table while our hack patch put it at the top. With migrating to the upstream version, the duplication was made more apparent. Drop the double entry for the SFP module as it's already there and not needed and refresh patches. Link: https://github.com/openwrt/openwrt/pull/18484 Signed-off-by: Christian Marangi --- ...k-for-ATS-SFP-GE-T-1000Base-TX-modul.patch | 35 ------------------- ...rework-the-RollBall-PHY-waiting-code.patch | 8 ++--- ...HY-discovery-for-FS-SFP-10G-T-module.patch | 6 ++-- ...sfp-re-probe-modules-on-DEV_UP-event.patch | 4 +-- ...14-net-phy-sfp-add-support-for-SMBus.patch | 6 ++-- 5 files changed, 12 insertions(+), 47 deletions(-) delete mode 100644 target/linux/generic/backport-6.6/731-v6.10-net-sfp-add-quirk-for-ATS-SFP-GE-T-1000Base-TX-modul.patch diff --git a/target/linux/generic/backport-6.6/731-v6.10-net-sfp-add-quirk-for-ATS-SFP-GE-T-1000Base-TX-modul.patch b/target/linux/generic/backport-6.6/731-v6.10-net-sfp-add-quirk-for-ATS-SFP-GE-T-1000Base-TX-modul.patch deleted file mode 100644 index c006c8a045..0000000000 --- a/target/linux/generic/backport-6.6/731-v6.10-net-sfp-add-quirk-for-ATS-SFP-GE-T-1000Base-TX-modul.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 0805d67bc0ef95411228e802f31975cfb7555056 Mon Sep 17 00:00:00 2001 -From: Daniel Golle -Date: Tue, 23 Apr 2024 11:00:25 +0200 -Subject: [PATCH] net: sfp: add quirk for ATS SFP-GE-T 1000Base-TX module -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Add quirk for ATS SFP-GE-T 1000Base-TX module. - -This copper module comes with broken TX_FAULT indicator which must be -ignored for it to work. - -Co-authored-by: Josef Schlehofer -Signed-off-by: Daniel Golle -[ rebased on top of net-next ] -Signed-off-by: Marek BehĂșn -Link: https://lore.kernel.org/r/20240423090025.29231-1-kabel@kernel.org -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 -@@ -486,6 +486,9 @@ static const struct sfp_quirk sfp_quirks - // 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), - -+ // 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), -+ - SFP_QUIRK_F("OEM", "SFP-10G-T", sfp_fixup_rollball_cc), - SFP_QUIRK_M("OEM", "SFP-2.5G-T", sfp_quirk_oem_2_5g), - SFP_QUIRK_F("OEM", "RTSFP-10", sfp_fixup_rollball_cc), diff --git a/target/linux/generic/backport-6.6/785-01-v6.8-net-sfp-rework-the-RollBall-PHY-waiting-code.patch b/target/linux/generic/backport-6.6/785-01-v6.8-net-sfp-rework-the-RollBall-PHY-waiting-code.patch index 31b2c41d3a..f113014fa5 100644 --- a/target/linux/generic/backport-6.6/785-01-v6.8-net-sfp-rework-the-RollBall-PHY-waiting-code.patch +++ b/target/linux/generic/backport-6.6/785-01-v6.8-net-sfp-rework-the-RollBall-PHY-waiting-code.patch @@ -86,7 +86,7 @@ Signed-off-by: David S. Miller static void sfp_fixup_rollball_cc(struct sfp *sfp) { sfp_fixup_rollball(sfp); -@@ -2323,7 +2321,7 @@ static int sfp_sm_mod_probe(struct sfp * +@@ -2320,7 +2318,7 @@ static int sfp_sm_mod_probe(struct sfp * mask |= SFP_F_RS1; sfp->module_t_start_up = T_START_UP; @@ -95,7 +95,7 @@ Signed-off-by: David S. Miller sfp->state_ignore_mask = 0; -@@ -2559,10 +2557,9 @@ static void sfp_sm_main(struct sfp *sfp, +@@ -2556,10 +2554,9 @@ static void sfp_sm_main(struct sfp *sfp, /* We need to check the TX_FAULT state, which is not defined * while TX_DISABLE is asserted. The earliest we want to do @@ -108,7 +108,7 @@ Signed-off-by: David S. Miller break; case SFP_S_WAIT: -@@ -2576,8 +2573,8 @@ static void sfp_sm_main(struct sfp *sfp, +@@ -2573,8 +2570,8 @@ static void sfp_sm_main(struct sfp *sfp, * deasserting. */ timeout = sfp->module_t_start_up; @@ -119,7 +119,7 @@ Signed-off-by: David S. Miller else timeout = 1; -@@ -2620,7 +2617,11 @@ static void sfp_sm_main(struct sfp *sfp, +@@ -2617,7 +2614,11 @@ static void sfp_sm_main(struct sfp *sfp, ret = sfp_sm_probe_for_phy(sfp); if (ret == -ENODEV) { if (--sfp->sm_phy_retries) { diff --git a/target/linux/generic/backport-6.6/785-02-v6.8-net-sfp-fix-PHY-discovery-for-FS-SFP-10G-T-module.patch b/target/linux/generic/backport-6.6/785-02-v6.8-net-sfp-fix-PHY-discovery-for-FS-SFP-10G-T-module.patch index 998579c462..5ba8d0fabc 100644 --- a/target/linux/generic/backport-6.6/785-02-v6.8-net-sfp-fix-PHY-discovery-for-FS-SFP-10G-T-module.patch +++ b/target/linux/generic/backport-6.6/785-02-v6.8-net-sfp-fix-PHY-discovery-for-FS-SFP-10G-T-module.patch @@ -51,7 +51,7 @@ Signed-off-by: David S. Miller } static void sfp_fixup_halny_gsfp(struct sfp *sfp) -@@ -2321,6 +2328,7 @@ static int sfp_sm_mod_probe(struct sfp * +@@ -2318,6 +2325,7 @@ static int sfp_sm_mod_probe(struct sfp * mask |= SFP_F_RS1; sfp->module_t_start_up = T_START_UP; @@ -59,7 +59,7 @@ Signed-off-by: David S. Miller sfp->phy_t_retry = T_PHY_RETRY; sfp->state_ignore_mask = 0; -@@ -2557,9 +2565,10 @@ static void sfp_sm_main(struct sfp *sfp, +@@ -2554,9 +2562,10 @@ static void sfp_sm_main(struct sfp *sfp, /* We need to check the TX_FAULT state, which is not defined * while TX_DISABLE is asserted. The earliest we want to do @@ -72,7 +72,7 @@ Signed-off-by: David S. Miller break; case SFP_S_WAIT: -@@ -2573,8 +2582,8 @@ static void sfp_sm_main(struct sfp *sfp, +@@ -2570,8 +2579,8 @@ static void sfp_sm_main(struct sfp *sfp, * deasserting. */ timeout = sfp->module_t_start_up; diff --git a/target/linux/realtek/patches-6.6/710-net-phy-sfp-re-probe-modules-on-DEV_UP-event.patch b/target/linux/realtek/patches-6.6/710-net-phy-sfp-re-probe-modules-on-DEV_UP-event.patch index 607b6921b0..cab2d6bf3c 100644 --- a/target/linux/realtek/patches-6.6/710-net-phy-sfp-re-probe-modules-on-DEV_UP-event.patch +++ b/target/linux/realtek/patches-6.6/710-net-phy-sfp-re-probe-modules-on-DEV_UP-event.patch @@ -10,7 +10,7 @@ Signed-off-by: Antoine Tenart --- a/drivers/net/phy/sfp.c +++ b/drivers/net/phy/sfp.c -@@ -1571,6 +1571,10 @@ static void sfp_hwmon_probe(struct work_ +@@ -1568,6 +1568,10 @@ static void sfp_hwmon_probe(struct work_ struct sfp *sfp = container_of(work, struct sfp, hwmon_probe.work); int err; @@ -21,7 +21,7 @@ Signed-off-by: Antoine Tenart /* hwmon interface needs to access 16bit registers in atomic way to * guarantee coherency of the diagnostic monitoring data. If it is not * possible to guarantee coherency because EEPROM is broken in such way -@@ -2433,6 +2437,13 @@ static void sfp_sm_module(struct sfp *sf +@@ -2430,6 +2434,13 @@ static void sfp_sm_module(struct sfp *sf return; } diff --git a/target/linux/realtek/patches-6.6/714-net-phy-sfp-add-support-for-SMBus.patch b/target/linux/realtek/patches-6.6/714-net-phy-sfp-add-support-for-SMBus.patch index 857743d479..3b7a3b9db1 100644 --- a/target/linux/realtek/patches-6.6/714-net-phy-sfp-add-support-for-SMBus.patch +++ b/target/linux/realtek/patches-6.6/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 -@@ -676,10 +676,64 @@ static int sfp_i2c_write(struct sfp *sfp +@@ -673,10 +673,64 @@ static int sfp_i2c_write(struct sfp *sfp return ret == ARRAY_SIZE(msgs) ? len : 0; } @@ -77,7 +77,7 @@ Signed-off-by: Antoine Tenart sfp->i2c = i2c; sfp->read = sfp_i2c_read; -@@ -711,6 +765,29 @@ static int sfp_i2c_mdiobus_create(struct +@@ -708,6 +762,29 @@ static int sfp_i2c_mdiobus_create(struct return 0; } @@ -107,7 +107,7 @@ Signed-off-by: Antoine Tenart static void sfp_i2c_mdiobus_destroy(struct sfp *sfp) { mdiobus_unregister(sfp->i2c_mii); -@@ -1889,9 +1966,15 @@ static void sfp_sm_fault(struct sfp *sfp +@@ -1886,9 +1963,15 @@ static void sfp_sm_fault(struct sfp *sfp static int sfp_sm_add_mdio_bus(struct sfp *sfp) { From 87cb0446b7da0685d872feec832a480a9b7c681f Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Tue, 15 Apr 2025 20:04:35 +0200 Subject: [PATCH 3/4] generic: fix broken TCP fraglist GRO patch Some regression were reported with the backported upstream version. Old kernel require an additional flush in some case and this was handled in the old downstream patch. Reintroduce the flush to fix the regression and refresh affected patch. Fixes: f63d64ede06b ("generic: move patch from pending to backport") Link: https://github.com/openwrt/openwrt/pull/18501 Signed-off-by: Christian Marangi --- .../621-v6.10-03-net-add-code-for-TCP-fraglist-GRO.patch | 5 +++-- ...0-05-net-create-tcp_gro_header_pull-helper-function.patch | 4 ++-- ...-06-net-add-heuristic-for-enabling-TCP-fraglist-GRO.patch | 4 ++-- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/target/linux/generic/backport-6.6/621-v6.10-03-net-add-code-for-TCP-fraglist-GRO.patch b/target/linux/generic/backport-6.6/621-v6.10-03-net-add-code-for-TCP-fraglist-GRO.patch index b76431e8ed..a51b2ed9c9 100644 --- a/target/linux/generic/backport-6.6/621-v6.10-03-net-add-code-for-TCP-fraglist-GRO.patch +++ b/target/linux/generic/backport-6.6/621-v6.10-03-net-add-code-for-TCP-fraglist-GRO.patch @@ -20,7 +20,7 @@ Signed-off-by: Paolo Abeni --- a/net/ipv4/tcp_offload.c +++ b/net/ipv4/tcp_offload.c -@@ -342,6 +342,18 @@ found: +@@ -342,6 +342,19 @@ found: flush |= p->decrypted ^ skb->decrypted; #endif @@ -28,6 +28,7 @@ Signed-off-by: Paolo Abeni + flush |= (__force int)(flags ^ tcp_flag_word(th2)); + flush |= skb->ip_summed != p->ip_summed; + flush |= skb->csum_level != p->csum_level; ++ flush |= !pskb_may_pull(skb, skb_gro_offset(skb)); + flush |= NAPI_GRO_CB(p)->count >= 64; + + if (flush || skb_gro_receive_list(p, skb)) @@ -39,7 +40,7 @@ Signed-off-by: Paolo Abeni if (flush || skb_gro_receive(p, skb)) { mss = 1; goto out_check_final; -@@ -406,6 +418,15 @@ INDIRECT_CALLABLE_SCOPE int tcp4_gro_com +@@ -406,6 +419,15 @@ INDIRECT_CALLABLE_SCOPE int tcp4_gro_com const struct iphdr *iph = ip_hdr(skb); struct tcphdr *th = tcp_hdr(skb); diff --git a/target/linux/generic/backport-6.6/621-v6.10-05-net-create-tcp_gro_header_pull-helper-function.patch b/target/linux/generic/backport-6.6/621-v6.10-05-net-create-tcp_gro_header_pull-helper-function.patch index 607f21a665..03f674dc2b 100644 --- a/target/linux/generic/backport-6.6/621-v6.10-05-net-create-tcp_gro_header_pull-helper-function.patch +++ b/target/linux/generic/backport-6.6/621-v6.10-05-net-create-tcp_gro_header_pull-helper-function.patch @@ -96,7 +96,7 @@ Signed-off-by: Paolo Abeni len = skb_gro_len(skb); flags = tcp_flag_word(th); -@@ -384,7 +390,6 @@ out_check_final: +@@ -385,7 +391,6 @@ out_check_final: if (p && (!NAPI_GRO_CB(skb)->same_flow || flush)) pp = p; @@ -104,7 +104,7 @@ Signed-off-by: Paolo Abeni NAPI_GRO_CB(skb)->flush |= (flush != 0); return pp; -@@ -411,15 +416,23 @@ EXPORT_SYMBOL(tcp_gro_complete); +@@ -412,15 +417,23 @@ EXPORT_SYMBOL(tcp_gro_complete); INDIRECT_CALLABLE_SCOPE struct sk_buff *tcp4_gro_receive(struct list_head *head, struct sk_buff *skb) { diff --git a/target/linux/generic/backport-6.6/621-v6.10-06-net-add-heuristic-for-enabling-TCP-fraglist-GRO.patch b/target/linux/generic/backport-6.6/621-v6.10-06-net-add-heuristic-for-enabling-TCP-fraglist-GRO.patch index c3462c2545..6ce1f89123 100644 --- a/target/linux/generic/backport-6.6/621-v6.10-06-net-add-heuristic-for-enabling-TCP-fraglist-GRO.patch +++ b/target/linux/generic/backport-6.6/621-v6.10-06-net-add-heuristic-for-enabling-TCP-fraglist-GRO.patch @@ -35,7 +35,7 @@ Signed-off-by: Paolo Abeni --- a/net/ipv4/tcp_offload.c +++ b/net/ipv4/tcp_offload.c -@@ -413,6 +413,36 @@ void tcp_gro_complete(struct sk_buff *sk +@@ -414,6 +414,36 @@ void tcp_gro_complete(struct sk_buff *sk } EXPORT_SYMBOL(tcp_gro_complete); @@ -72,7 +72,7 @@ Signed-off-by: Paolo Abeni INDIRECT_CALLABLE_SCOPE struct sk_buff *tcp4_gro_receive(struct list_head *head, struct sk_buff *skb) { -@@ -428,6 +458,8 @@ struct sk_buff *tcp4_gro_receive(struct +@@ -429,6 +459,8 @@ struct sk_buff *tcp4_gro_receive(struct if (!th) goto flush; From 71446d8052da52b2deb43349197ddcdf0373d416 Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Tue, 15 Apr 2025 23:21:19 +0200 Subject: [PATCH 4/4] generic: fix broken ARM gc sections patch Upstream version of ARM gc sections skip eeping some section. It was reported some kernel load hang hence restore what we original did and introduce a new patch that add the additional entry on top of the upstream version. Fixes: #18500 Fixes: 7843f21c5120 ("generic: replace ARM gc sections patch with upstream version") Tested-by: Stefan Kalscheuer (Turris Omnia) Link: https://github.com/openwrt/openwrt/pull/18503 Signed-off-by: Christian Marangi --- ...-fix-boot-hang-with-HAVE_LD_DEAD_COD.patch | 79 +++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 target/linux/generic/pending-6.6/200-ARM-9404-1-arm32-fix-boot-hang-with-HAVE_LD_DEAD_COD.patch diff --git a/target/linux/generic/pending-6.6/200-ARM-9404-1-arm32-fix-boot-hang-with-HAVE_LD_DEAD_COD.patch b/target/linux/generic/pending-6.6/200-ARM-9404-1-arm32-fix-boot-hang-with-HAVE_LD_DEAD_COD.patch new file mode 100644 index 0000000000..2e5d1d9148 --- /dev/null +++ b/target/linux/generic/pending-6.6/200-ARM-9404-1-arm32-fix-boot-hang-with-HAVE_LD_DEAD_COD.patch @@ -0,0 +1,79 @@ +From cf3d39cfd29ab7bcbd6aa79d4a2f132817969e3d Mon Sep 17 00:00:00 2001 +From: Christian Marangi +Date: Tue, 15 Apr 2025 23:16:40 +0200 +Subject: [PATCH] ARM: 9404/1: arm32: fix boot hang with + HAVE_LD_DEAD_CODE_DATA_ELIMINATION + +It was reported that some SoC (mvebu based for example) hang on kernel +loading. A variant of the feature was present in OpenWrt from long ago +and adding the additional entry with KEEP, fix the problem. + +Fixes: ed0f94102251 ("ARM: 9404/1: arm32: enable HAVE_LD_DEAD_CODE_DATA_ELIMINATION") +Signed-off-by: Christian Marangi +--- + arch/arm/include/asm/vmlinux.lds.h | 10 +++++----- + arch/arm/kernel/vmlinux.lds.S | 4 ++-- + 2 files changed, 7 insertions(+), 7 deletions(-) + +--- a/arch/arm/include/asm/vmlinux.lds.h ++++ b/arch/arm/include/asm/vmlinux.lds.h +@@ -48,7 +48,7 @@ + #define IDMAP_TEXT \ + ALIGN_FUNCTION(); \ + __idmap_text_start = .; \ +- *(.idmap.text) \ ++ KEEP(*(.idmap.text)) \ + __idmap_text_end = .; \ + + #define ARM_DISCARD \ +@@ -108,12 +108,12 @@ + . = ALIGN(8); \ + .ARM.unwind_idx : { \ + __start_unwind_idx = .; \ +- *(.ARM.exidx*) \ ++ KEEP(*(.ARM.exidx*)) \ + __stop_unwind_idx = .; \ + } \ + .ARM.unwind_tab : { \ + __start_unwind_tab = .; \ +- *(.ARM.extab*) \ ++ KEEP(*(.ARM.extab*)) \ + __stop_unwind_tab = .; \ + } + +@@ -125,7 +125,7 @@ + __vectors_lma = .; \ + OVERLAY 0xffff0000 : NOCROSSREFS AT(__vectors_lma) { \ + .vectors { \ +- *(.vectors) \ ++ KEEP(*(.vectors)) \ + } \ + .vectors.bhb.loop8 { \ + *(.vectors.bhb.loop8) \ +@@ -143,7 +143,7 @@ + \ + __stubs_lma = .; \ + .stubs ADDR(.vectors) + 0x1000 : AT(__stubs_lma) { \ +- *(.stubs) \ ++ KEEP(*(.stubs)) \ + } \ + ARM_LMA(__stubs, .stubs); \ + . = __stubs_lma + SIZEOF(.stubs); \ +--- a/arch/arm/kernel/vmlinux.lds.S ++++ b/arch/arm/kernel/vmlinux.lds.S +@@ -104,13 +104,13 @@ SECTIONS + } + .init.tagtable : { + __tagtable_begin = .; +- *(.taglist.init) ++ KEEP(*(.taglist.init)) + __tagtable_end = .; + } + #ifdef CONFIG_SMP_ON_UP + .init.smpalt : { + __smpalt_begin = .; +- *(.alt.smp.init) ++ KEEP(*(.alt.smp.init)) + __smpalt_end = .; + } + #endif