Merge Official Source

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
This commit is contained in:
Tianling Shen 2025-04-16 11:53:43 +08:00
commit c25b909304
No known key found for this signature in database
GPG Key ID: 6850B6345C862176
10 changed files with 101 additions and 56 deletions

View File

@ -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

View File

@ -20,7 +20,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
--- 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 <pabeni@redhat.com>
+ 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 <pabeni@redhat.com>
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);

View File

@ -96,7 +96,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
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 <pabeni@redhat.com>
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)
{

View File

@ -35,7 +35,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
--- 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 <pabeni@redhat.com>
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;

View File

@ -1,35 +0,0 @@
From 0805d67bc0ef95411228e802f31975cfb7555056 Mon Sep 17 00:00:00 2001
From: Daniel Golle <daniel@makrotopia.org>
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 <pepe.schlehofer@gmail.com>
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
[ rebased on top of net-next ]
Signed-off-by: Marek Behún <kabel@kernel.org>
Link: https://lore.kernel.org/r/20240423090025.29231-1-kabel@kernel.org
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
@@ -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),

View File

@ -86,7 +86,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
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 <davem@davemloft.net>
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 <davem@davemloft.net>
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 <davem@davemloft.net>
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) {

View File

@ -51,7 +51,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
}
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 <davem@davemloft.net>
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 <davem@davemloft.net>
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;

View File

@ -0,0 +1,79 @@
From cf3d39cfd29ab7bcbd6aa79d4a2f132817969e3d Mon Sep 17 00:00:00 2001
From: Christian Marangi <ansuelsmth@gmail.com>
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 <ansuelsmth@gmail.com>
---
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

View File

@ -10,7 +10,7 @@ Signed-off-by: Antoine Tenart <antoine.tenart@bootlin.com>
--- 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 <antoine.tenart@bootlin.com>
/* 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;
}

View File

@ -10,7 +10,7 @@ Signed-off-by: Antoine Tenart <antoine.tenart@bootlin.com>
--- 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 <antoine.tenart@bootlin.com>
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 <antoine.tenart@bootlin.com>
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)
{