From fe42a75b0304a73a07438194b36556e1c9c34aeb Mon Sep 17 00:00:00 2001 From: Shiji Yang Date: Thu, 1 May 2025 00:38:19 +0800 Subject: [PATCH] ath79: refresh 6.12 kernel patches Remove upstreamed: 001-v6.11-gpio-ath79-convert-to-dynamic-GPIO-base-allocation.patch [1] Manually rebased: 341-wifi-ath9k-obtain-system-gpios.patch 900-unaligned_access_hacks.patch [1] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-6.12.y&id=9a473c2a093e0d1c466bf86073230e2c8b658977 Signed-off-by: Shiji Yang --- ...vert-to-dynamic-GPIO-base-allocation.patch | 32 --------- .../340-register_gpio_driver_earlier.patch | 2 +- .../341-wifi-ath9k-obtain-system-gpios.patch | 14 ++-- .../370-MIPS-ath79-sanitize-symbols.patch | 2 +- ...or-support-mtd-name-from-device-tree.patch | 4 +- .../410-mtd-cybertan-trx-parser.patch | 4 +- .../430-mtd-ar934x-nand-driver.patch | 4 +- ...ds-add-reset-controller-based-driver.patch | 8 +-- .../900-unaligned_access_hacks.patch | 71 +++++++++---------- .../patches-6.12/910-mikrotik-rb4xx.patch | 12 ++-- .../patches-6.12/911-mikrotik-rb91x.patch | 20 +++--- 11 files changed, 70 insertions(+), 103 deletions(-) delete mode 100644 target/linux/ath79/patches-6.12/001-v6.11-gpio-ath79-convert-to-dynamic-GPIO-base-allocation.patch diff --git a/target/linux/ath79/patches-6.12/001-v6.11-gpio-ath79-convert-to-dynamic-GPIO-base-allocation.patch b/target/linux/ath79/patches-6.12/001-v6.11-gpio-ath79-convert-to-dynamic-GPIO-base-allocation.patch deleted file mode 100644 index 4222639d4d2..00000000000 --- a/target/linux/ath79/patches-6.12/001-v6.11-gpio-ath79-convert-to-dynamic-GPIO-base-allocation.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 9a473c2a093e0d1c466bf86073230e2c8b658977 Mon Sep 17 00:00:00 2001 -From: Shiji Yang -Date: Wed, 26 Jun 2024 08:33:18 +0800 -Subject: gpio: ath79: convert to dynamic GPIO base allocation - -ath79 target has already been converted to device tree based platform. -Use dynamic GPIO numberspace base to suppress the warning: - -gpio gpiochip0: Static allocation of GPIO base is deprecated, use dynamic allocation. - -Tested on Atheros AR7241 and AR9344. - -Signed-off-by: Shiji Yang -Suggested-by: Jonas Gorski -Link: https://lore.kernel.org/r/TYCP286MB089598EA71E964BD8AB9EFD3BCD62@TYCP286MB0895.JPNP286.PROD.OUTLOOK.COM -[Bartosz: tweaked the commit message] -Signed-off-by: Bartosz Golaszewski ---- - drivers/gpio/gpio-ath79.c | 2 -- - 1 file changed, 2 deletions(-) - ---- a/drivers/gpio/gpio-ath79.c -+++ b/drivers/gpio/gpio-ath79.c -@@ -273,8 +273,6 @@ static int ath79_gpio_probe(struct platf - dev_err(dev, "bgpio_init failed\n"); - return err; - } -- /* Use base 0 to stay compatible with legacy platforms */ -- ctrl->gc.base = 0; - - /* Optional interrupt setup */ - if (!np || of_property_read_bool(np, "interrupt-controller")) { diff --git a/target/linux/ath79/patches-6.12/340-register_gpio_driver_earlier.patch b/target/linux/ath79/patches-6.12/340-register_gpio_driver_earlier.patch index a3bdf890c41..e6415b3dca3 100644 --- a/target/linux/ath79/patches-6.12/340-register_gpio_driver_earlier.patch +++ b/target/linux/ath79/patches-6.12/340-register_gpio_driver_earlier.patch @@ -11,7 +11,7 @@ Submitted-by: John Crispin --- a/drivers/gpio/gpio-ath79.c +++ b/drivers/gpio/gpio-ath79.c -@@ -300,7 +300,11 @@ static struct platform_driver ath79_gpio +@@ -291,7 +291,11 @@ static struct platform_driver ath79_gpio .probe = ath79_gpio_probe, }; diff --git a/target/linux/ath79/patches-6.12/341-wifi-ath9k-obtain-system-gpios.patch b/target/linux/ath79/patches-6.12/341-wifi-ath9k-obtain-system-gpios.patch index a43e3537e6e..e7017a4674f 100644 --- a/target/linux/ath79/patches-6.12/341-wifi-ath9k-obtain-system-gpios.patch +++ b/target/linux/ath79/patches-6.12/341-wifi-ath9k-obtain-system-gpios.patch @@ -172,14 +172,14 @@ Best regards, --- a/drivers/gpio/gpio-ath79.c +++ b/drivers/gpio/gpio-ath79.c -@@ -9,6 +9,7 @@ - */ +@@ -10,6 +10,7 @@ + #include #include +#include /* For WLAN GPIOs */ - #include - #include - #include + #include + #include + #include @@ -222,6 +223,37 @@ static const struct of_device_id ath79_g }; MODULE_DEVICE_TABLE(of, ath79_gpio_of_match); @@ -217,8 +217,8 @@ Best regards, + static int ath79_gpio_probe(struct platform_device *pdev) { - struct ath79_gpio_platform_data *pdata = dev_get_platdata(&pdev->dev); -@@ -289,7 +321,11 @@ static int ath79_gpio_probe(struct platf + struct device *dev = &pdev->dev; +@@ -280,7 +312,11 @@ static int ath79_gpio_probe(struct platf girq->handler = handle_simple_irq; } diff --git a/target/linux/ath79/patches-6.12/370-MIPS-ath79-sanitize-symbols.patch b/target/linux/ath79/patches-6.12/370-MIPS-ath79-sanitize-symbols.patch index e6aeef51151..b7cc5fe022e 100644 --- a/target/linux/ath79/patches-6.12/370-MIPS-ath79-sanitize-symbols.patch +++ b/target/linux/ath79/patches-6.12/370-MIPS-ath79-sanitize-symbols.patch @@ -15,7 +15,7 @@ Signed-off-by: John Crispin --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig -@@ -255,6 +255,8 @@ config ATH79 +@@ -242,6 +242,8 @@ config ATH79 select SYS_SUPPORTS_BIG_ENDIAN select SYS_SUPPORTS_MIPS16 select SYS_SUPPORTS_ZBOOT_UART_PROM diff --git a/target/linux/ath79/patches-6.12/400-mtd-nor-support-mtd-name-from-device-tree.patch b/target/linux/ath79/patches-6.12/400-mtd-nor-support-mtd-name-from-device-tree.patch index 62d402625d3..bbdc90c1cf3 100644 --- a/target/linux/ath79/patches-6.12/400-mtd-nor-support-mtd-name-from-device-tree.patch +++ b/target/linux/ath79/patches-6.12/400-mtd-nor-support-mtd-name-from-device-tree.patch @@ -10,7 +10,7 @@ Signed-off-by: Abhimanyu Vishwakarma --- a/drivers/mtd/spi-nor/core.c +++ b/drivers/mtd/spi-nor/core.c -@@ -3420,12 +3420,19 @@ static void spi_nor_set_mtd_info(struct +@@ -3385,12 +3385,19 @@ static int spi_nor_set_mtd_info(struct s { struct mtd_info *mtd = &nor->mtd; struct device *dev = nor->dev; @@ -33,7 +33,7 @@ Signed-off-by: Abhimanyu Vishwakarma mtd->flags = MTD_CAP_NORFLASH; --- a/drivers/mtd/mtdcore.c +++ b/drivers/mtd/mtdcore.c -@@ -870,6 +870,17 @@ out_error: +@@ -872,6 +872,17 @@ out_error: */ static void mtd_set_dev_defaults(struct mtd_info *mtd) { diff --git a/target/linux/ath79/patches-6.12/410-mtd-cybertan-trx-parser.patch b/target/linux/ath79/patches-6.12/410-mtd-cybertan-trx-parser.patch index d0e8aec0d5a..918ee42db08 100644 --- a/target/linux/ath79/patches-6.12/410-mtd-cybertan-trx-parser.patch +++ b/target/linux/ath79/patches-6.12/410-mtd-cybertan-trx-parser.patch @@ -18,7 +18,7 @@ Submitted-by: Christian Lamparter --- a/drivers/mtd/parsers/Makefile +++ b/drivers/mtd/parsers/Makefile -@@ -9,6 +9,7 @@ obj-$(CONFIG_MTD_OF_PARTS) += ofpart.o +@@ -8,6 +8,7 @@ obj-$(CONFIG_MTD_OF_PARTS) += ofpart.o ofpart-y += ofpart_core.o ofpart-$(CONFIG_MTD_OF_PARTS_BCM4908) += ofpart_bcm4908.o ofpart-$(CONFIG_MTD_OF_PARTS_LINKSYS_NS)+= ofpart_linksys_ns.o @@ -28,7 +28,7 @@ Submitted-by: Christian Lamparter obj-$(CONFIG_MTD_PARSER_TPLINK_SAFELOADER) += tplink_safeloader.o --- a/drivers/mtd/parsers/Kconfig +++ b/drivers/mtd/parsers/Kconfig -@@ -112,6 +112,14 @@ config MTD_OF_PARTS_LINKSYS_NS +@@ -107,6 +107,14 @@ config MTD_OF_PARTS_LINKSYS_NS two "firmware" partitions. Currently used firmware has to be detected using CFE environment variable. diff --git a/target/linux/ath79/patches-6.12/430-mtd-ar934x-nand-driver.patch b/target/linux/ath79/patches-6.12/430-mtd-ar934x-nand-driver.patch index fc4c3804a7e..e82c0a77c8e 100644 --- a/target/linux/ath79/patches-6.12/430-mtd-ar934x-nand-driver.patch +++ b/target/linux/ath79/patches-6.12/430-mtd-ar934x-nand-driver.patch @@ -9,7 +9,7 @@ SVN-Revision: 33385 --- a/drivers/mtd/nand/raw/Kconfig +++ b/drivers/mtd/nand/raw/Kconfig -@@ -542,4 +542,12 @@ config MTD_NAND_DISKONCHIP_BBTWRITE +@@ -548,4 +548,12 @@ config MTD_NAND_DISKONCHIP_BBTWRITE load time (assuming you build diskonchip as a module) with the module parameter "inftl_bbt_write=1". @@ -24,7 +24,7 @@ SVN-Revision: 33385 endif # MTD_RAW_NAND --- a/drivers/mtd/nand/raw/Makefile +++ b/drivers/mtd/nand/raw/Makefile -@@ -57,6 +57,7 @@ obj-$(CONFIG_MTD_NAND_INTEL_LGM) += inte +@@ -58,6 +58,7 @@ obj-$(CONFIG_MTD_NAND_INTEL_LGM) += inte obj-$(CONFIG_MTD_NAND_ROCKCHIP) += rockchip-nand-controller.o obj-$(CONFIG_MTD_NAND_PL35X) += pl35x-nand-controller.o obj-$(CONFIG_MTD_NAND_RENESAS) += renesas-nand-controller.o diff --git a/target/linux/ath79/patches-6.12/800-leds-add-reset-controller-based-driver.patch b/target/linux/ath79/patches-6.12/800-leds-add-reset-controller-based-driver.patch index e84cc00f4b1..b40982046e5 100644 --- a/target/linux/ath79/patches-6.12/800-leds-add-reset-controller-based-driver.patch +++ b/target/linux/ath79/patches-6.12/800-leds-add-reset-controller-based-driver.patch @@ -13,7 +13,7 @@ Signed-off-by: John Crispin --- a/drivers/leds/Kconfig +++ b/drivers/leds/Kconfig -@@ -911,6 +911,17 @@ source "drivers/leds/flash/Kconfig" +@@ -977,6 +977,17 @@ source "drivers/leds/flash/Kconfig" comment "RGB LED drivers" source "drivers/leds/rgb/Kconfig" @@ -176,11 +176,11 @@ Signed-off-by: John Crispin +MODULE_ALIAS("platform:leds-reset"); --- a/drivers/leds/Makefile +++ b/drivers/leds/Makefile -@@ -89,6 +89,7 @@ obj-$(CONFIG_LEDS_TURRIS_OMNIA) += leds +@@ -93,6 +93,7 @@ obj-$(CONFIG_LEDS_TURRIS_OMNIA) += leds obj-$(CONFIG_LEDS_WM831X_STATUS) += leds-wm831x-status.o obj-$(CONFIG_LEDS_WM8350) += leds-wm8350.o obj-$(CONFIG_LEDS_WRAP) += leds-wrap.o +obj-$(CONFIG_LEDS_RESET) += leds-reset.o - # LED SPI Drivers - obj-$(CONFIG_LEDS_CR0014114) += leds-cr0014114.o + # Kinetic ExpressWire Protocol + obj-$(CONFIG_LEDS_EXPRESSWIRE) += leds-expresswire.o diff --git a/target/linux/ath79/patches-6.12/900-unaligned_access_hacks.patch b/target/linux/ath79/patches-6.12/900-unaligned_access_hacks.patch index 870567c0589..364f8c5922e 100644 --- a/target/linux/ath79/patches-6.12/900-unaligned_access_hacks.patch +++ b/target/linux/ath79/patches-6.12/900-unaligned_access_hacks.patch @@ -255,11 +255,11 @@ SVN-Revision: 35130 #include #include #include -+#include ++#include #include #include #include -@@ -891,10 +892,10 @@ static void tcp_v6_send_response(const s +@@ -914,10 +915,10 @@ static void tcp_v6_send_response(const s topt = (__be32 *)(t1 + 1); if (tsecr) { @@ -276,7 +276,7 @@ SVN-Revision: 35130 if (mrst) --- a/include/linux/ipv6.h +++ b/include/linux/ipv6.h -@@ -6,6 +6,7 @@ +@@ -7,6 +7,7 @@ #define ipv6_optlen(p) (((p)->hdrlen+1) << 3) #define ipv6_authlen(p) (((p)->hdrlen+2) << 2) @@ -286,7 +286,7 @@ SVN-Revision: 35130 */ --- a/net/ipv6/datagram.c +++ b/net/ipv6/datagram.c -@@ -499,7 +499,7 @@ int ipv6_recv_error(struct sock *sk, str +@@ -498,7 +498,7 @@ int ipv6_recv_error(struct sock *sk, str ipv6_iface_scope_id(&sin->sin6_addr, IP6CB(skb)->iif); } else { @@ -295,7 +295,7 @@ SVN-Revision: 35130 &sin->sin6_addr); sin->sin6_scope_id = 0; } -@@ -853,12 +853,12 @@ int ip6_datagram_send_ctl(struct net *ne +@@ -852,12 +852,12 @@ int ip6_datagram_send_ctl(struct net *ne } if (fl6->flowlabel&IPV6_FLOWINFO_MASK) { @@ -312,7 +312,7 @@ SVN-Revision: 35130 case IPV6_2292HOPOPTS: --- a/net/ipv6/exthdrs.c +++ b/net/ipv6/exthdrs.c -@@ -982,7 +982,7 @@ static bool ipv6_hop_jumbo(struct sk_buf +@@ -980,7 +980,7 @@ static bool ipv6_hop_jumbo(struct sk_buf goto drop; } @@ -323,7 +323,7 @@ SVN-Revision: 35130 SKB_DROP_REASON_IP_INHDR); --- a/include/linux/types.h +++ b/include/linux/types.h -@@ -244,5 +244,11 @@ typedef void (*swap_func_t)(void *a, voi +@@ -247,5 +247,11 @@ typedef void (*swap_func_t)(void *a, voi typedef int (*cmp_r_func_t)(const void *a, const void *b, const void *priv); typedef int (*cmp_func_t)(const void *a, const void *b); @@ -337,23 +337,21 @@ SVN-Revision: 35130 #endif /* _LINUX_TYPES_H */ --- a/net/ipv4/af_inet.c +++ b/net/ipv4/af_inet.c -@@ -1506,8 +1506,8 @@ struct sk_buff *inet_gro_receive(struct +@@ -1507,7 +1507,7 @@ struct sk_buff *inet_gro_receive(struct goto out; NAPI_GRO_CB(skb)->proto = proto; -- id = ntohl(*(__be32 *)&iph->id); -- flush = (u16)((ntohl(*(__be32 *)iph) ^ skb_gro_len(skb)) | (id & ~IP_DF)); -+ id = ntohl(net_hdr_word(&iph->id)); -+ flush = (u16)((ntohl(net_hdr_word(iph)) ^ skb_gro_len(skb)) | (id & ~IP_DF)); - id >>= 16; +- flush = (u16)((ntohl(*(__be32 *)iph) ^ skb_gro_len(skb)) | (ntohl(*(__be32 *)&iph->id) & ~IP_DF)); ++ flush = (u16)((ntohl(net_hdr_word(iph)) ^ skb_gro_len(skb)) | (ntohl(net_hdr_word(&iph->id)) & ~IP_DF)); list_for_each_entry(p, head, list) { + struct iphdr *iph2; --- a/net/ipv4/tcp_output.c +++ b/net/ipv4/tcp_output.c -@@ -625,48 +625,53 @@ static void tcp_options_write(struct tcp +@@ -668,8 +668,9 @@ static void tcp_options_write(struct tcp u16 options = opts->options; /* mungable copy */ - if (unlikely(OPTION_MD5 & options)) { + if (tcp_key_is_md5(key)) { - *ptr++ = htonl((TCPOPT_NOP << 24) | (TCPOPT_NOP << 16) | - (TCPOPT_MD5SIG << 8) | TCPOLEN_MD5SIG); + net_hdr_word(ptr++) = @@ -362,8 +360,9 @@ SVN-Revision: 35130 /* overload cookie hash location */ opts->hash_location = (__u8 *)ptr; ptr += 4; +@@ -677,40 +678,44 @@ static void tcp_options_write(struct tcp + ptr = process_tcp_ao_options(tp, tcprsk, opts, key, ptr); } - if (unlikely(opts->mss)) { - *ptr++ = htonl((TCPOPT_MSS << 24) | - (TCPOLEN_MSS << 16) | @@ -427,7 +426,7 @@ SVN-Revision: 35130 } if (unlikely(opts->num_sack_blocks)) { -@@ -674,16 +679,17 @@ static void tcp_options_write(struct tcp +@@ -718,16 +723,17 @@ static void tcp_options_write(struct tcp tp->duplicate_sack : tp->selective_acks; int this_sack; @@ -451,7 +450,7 @@ SVN-Revision: 35130 } tp->rx_opt.dsack = 0; -@@ -696,13 +702,14 @@ static void tcp_options_write(struct tcp +@@ -740,13 +746,14 @@ static void tcp_options_write(struct tcp if (foc->exp) { len = TCPOLEN_EXP_FASTOPEN_BASE + foc->len; @@ -540,7 +539,7 @@ SVN-Revision: 35130 struct rd_msg { struct icmp6hdr icmph; -@@ -372,10 +372,10 @@ static inline u32 ndisc_hashfn(const voi +@@ -357,10 +357,10 @@ static inline u32 ndisc_hashfn(const voi { const u32 *p32 = pkey; @@ -579,7 +578,7 @@ SVN-Revision: 35130 goto next_ht; --- a/net/ipv6/ip6_offload.c +++ b/net/ipv6/ip6_offload.c -@@ -273,7 +273,7 @@ INDIRECT_CALLABLE_SCOPE struct sk_buff * +@@ -269,7 +269,7 @@ INDIRECT_CALLABLE_SCOPE struct sk_buff * continue; iph2 = (struct ipv6hdr *)(p->data + off); @@ -590,7 +589,7 @@ SVN-Revision: 35130 * XXX skbs on the gro_list have all been parsed and pulled --- a/include/net/addrconf.h +++ b/include/net/addrconf.h -@@ -52,7 +52,7 @@ struct prefix_info { +@@ -57,7 +57,7 @@ struct prefix_info { __be32 reserved2; struct in6_addr prefix; @@ -624,7 +623,7 @@ SVN-Revision: 35130 /* * Jumbo payload option, as described in RFC 2675 2. -@@ -649,8 +649,8 @@ static inline void __ipv6_addr_set_half( +@@ -651,8 +651,8 @@ static inline void __ipv6_addr_set_half( } #endif #endif @@ -635,7 +634,7 @@ SVN-Revision: 35130 } static inline void ipv6_addr_set(struct in6_addr *addr, -@@ -709,6 +709,8 @@ static inline bool ipv6_prefix_equal(con +@@ -711,6 +711,8 @@ static inline bool ipv6_prefix_equal(con const __be32 *a1 = addr1->s6_addr32; const __be32 *a2 = addr2->s6_addr32; unsigned int pdw, pbi; @@ -644,7 +643,7 @@ SVN-Revision: 35130 /* check complete u32 in prefix */ pdw = prefixlen >> 5; -@@ -717,7 +719,9 @@ static inline bool ipv6_prefix_equal(con +@@ -719,7 +721,9 @@ static inline bool ipv6_prefix_equal(con /* check incomplete u32 in prefix */ pbi = prefixlen & 0x1f; @@ -655,7 +654,7 @@ SVN-Revision: 35130 return false; return true; -@@ -839,13 +843,13 @@ static inline void ipv6_addr_set_v4mappe +@@ -836,13 +840,13 @@ static inline void ipv6_addr_set_v4mappe */ static inline int __ipv6_addr_diff32(const void *token1, const void *token2, int addrlen) { @@ -671,7 +670,7 @@ SVN-Revision: 35130 if (xb) return i * 32 + 31 - __fls(ntohl(xb)); } -@@ -1040,17 +1044,18 @@ static inline u32 ip6_multipath_hash_fie +@@ -1037,17 +1041,18 @@ static inline u32 ip6_multipath_hash_fie static inline void ip6_flow_hdr(struct ipv6hdr *hdr, unsigned int tclass, __be32 flowlabel) { @@ -705,7 +704,7 @@ SVN-Revision: 35130 --- a/include/uapi/linux/in.h +++ b/include/uapi/linux/in.h -@@ -91,7 +91,7 @@ enum { +@@ -93,7 +93,7 @@ enum { /* Internet address. */ struct in_addr { __be32 s_addr; @@ -738,7 +737,7 @@ SVN-Revision: 35130 | TCPOLEN_TIMESTAMP)) --- a/net/xfrm/xfrm_input.c +++ b/net/xfrm/xfrm_input.c -@@ -168,8 +168,8 @@ int xfrm_parse_spi(struct sk_buff *skb, +@@ -169,8 +169,8 @@ int xfrm_parse_spi(struct sk_buff *skb, if (!pskb_may_pull(skb, hlen)) return -EINVAL; @@ -751,7 +750,7 @@ SVN-Revision: 35130 EXPORT_SYMBOL(xfrm_parse_spi); --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c -@@ -4268,14 +4268,16 @@ static bool tcp_parse_aligned_timestamp( +@@ -4321,14 +4321,16 @@ static bool tcp_parse_aligned_timestamp( { const __be32 *ptr = (const __be32 *)(th + 1); @@ -830,7 +829,7 @@ SVN-Revision: 35130 *sum = csum_fold(csum_partial(diff, sizeof(diff), --- a/include/linux/etherdevice.h +++ b/include/linux/etherdevice.h -@@ -555,7 +555,7 @@ static inline bool is_etherdev_addr(cons +@@ -559,7 +559,7 @@ static inline bool is_etherdev_addr(cons * @b: Pointer to Ethernet header * * Compare two Ethernet headers, returns 0 if equal. @@ -839,7 +838,7 @@ SVN-Revision: 35130 * aligned OR the platform can handle unaligned access. This is the * case for all packets coming into netif_receive_skb or similar * entry points. -@@ -578,11 +578,12 @@ static inline unsigned long compare_ethe +@@ -582,11 +582,12 @@ static inline unsigned long compare_ethe fold |= *(unsigned long *)(a + 6) ^ *(unsigned long *)(b + 6); return fold; #else @@ -876,7 +875,7 @@ SVN-Revision: 35130 NAPI_GRO_CB(p)->same_flow = 0; continue; } -@@ -333,8 +333,8 @@ struct sk_buff *tcp_gro_receive(struct l +@@ -331,8 +331,8 @@ struct sk_buff *tcp_gro_receive(struct l ~(TCP_FLAG_CWR | TCP_FLAG_FIN | TCP_FLAG_PSH)); flush |= (__force int)(th->ack_seq ^ th2->ack_seq); for (i = sizeof(*th); i < thlen; i += 4) @@ -885,8 +884,8 @@ SVN-Revision: 35130 + flush |= net_hdr_word((u8 *)th + i) ^ + net_hdr_word((u8 *)th2 + i); - /* When we receive our second frame we can made a decision on if we - * continue this flow as an atomic flow with a fixed ID or if we use + flush |= gro_receive_network_flush(th, th2, p); + --- a/net/ipv6/netfilter/ip6table_mangle.c +++ b/net/ipv6/netfilter/ip6table_mangle.c @@ -44,7 +44,7 @@ ip6t_mangle_out(void *priv, struct sk_bu @@ -897,8 +896,8 @@ SVN-Revision: 35130 + flowlabel = net_hdr_word(ipv6_hdr(skb)); ret = ip6t_do_table(priv, skb, state); - -@@ -53,7 +53,7 @@ ip6t_mangle_out(void *priv, struct sk_bu + verdict = ret & NF_VERDICT_MASK; +@@ -54,7 +54,7 @@ ip6t_mangle_out(void *priv, struct sk_bu !ipv6_addr_equal(&ipv6_hdr(skb)->daddr, &daddr) || skb->mark != mark || ipv6_hdr(skb)->hop_limit != hop_limit || diff --git a/target/linux/ath79/patches-6.12/910-mikrotik-rb4xx.patch b/target/linux/ath79/patches-6.12/910-mikrotik-rb4xx.patch index 674cc2fe661..8ac8b384288 100644 --- a/target/linux/ath79/patches-6.12/910-mikrotik-rb4xx.patch +++ b/target/linux/ath79/patches-6.12/910-mikrotik-rb4xx.patch @@ -45,7 +45,7 @@ Submitted-by: Christopher Hill --- a/drivers/mfd/Kconfig +++ b/drivers/mfd/Kconfig -@@ -2261,6 +2261,14 @@ config RAVE_SP_CORE +@@ -2330,6 +2330,14 @@ config RAVE_SP_CORE Select this to get support for the Supervisory Processor device found on several devices in RAVE line of hardware. @@ -62,7 +62,7 @@ Submitted-by: Christopher Hill depends on PCI && MIPS && 64BIT --- a/drivers/mfd/Makefile +++ b/drivers/mfd/Makefile -@@ -269,6 +269,7 @@ obj-$(CONFIG_MFD_KHADAS_MCU) += khadas- +@@ -276,6 +276,7 @@ obj-$(CONFIG_MFD_KHADAS_MCU) += khadas- obj-$(CONFIG_MFD_ACER_A500_EC) += acer-ec-a500.o obj-$(CONFIG_MFD_QCOM_PM8008) += qcom-pm8008.o @@ -72,7 +72,7 @@ Submitted-by: Christopher Hill obj-$(CONFIG_MFD_SMPRO) += smpro-core.o --- a/drivers/gpio/Kconfig +++ b/drivers/gpio/Kconfig -@@ -1696,6 +1696,12 @@ config GPIO_SODAVILLE +@@ -1772,6 +1772,12 @@ config GPIO_SODAVILLE help Say Y here to support Intel Sodaville GPIO. @@ -87,7 +87,7 @@ Submitted-by: Christopher Hill menu "SPI GPIO expanders" --- a/drivers/gpio/Makefile +++ b/drivers/gpio/Makefile -@@ -131,6 +131,7 @@ obj-$(CONFIG_GPIO_PL061) += gpio-pl061. +@@ -136,6 +136,7 @@ obj-$(CONFIG_GPIO_PL061) += gpio-pl061. obj-$(CONFIG_GPIO_PMIC_EIC_SPRD) += gpio-pmic-eic-sprd.o obj-$(CONFIG_GPIO_PXA) += gpio-pxa.o obj-$(CONFIG_GPIO_RASPBERRYPI_EXP) += gpio-raspberrypi-exp.o @@ -97,7 +97,7 @@ Submitted-by: Christopher Hill obj-$(CONFIG_GPIO_RDA) += gpio-rda.o --- a/drivers/mtd/nand/raw/Kconfig +++ b/drivers/mtd/nand/raw/Kconfig -@@ -550,4 +550,11 @@ config MTD_NAND_AR934X +@@ -556,4 +556,11 @@ config MTD_NAND_AR934X Enables support for NAND controller on Qualcomm Atheros SoCs. This controller is found on AR934x and QCA955x SoCs. @@ -111,7 +111,7 @@ Submitted-by: Christopher Hill endif # MTD_RAW_NAND --- a/drivers/mtd/nand/raw/Makefile +++ b/drivers/mtd/nand/raw/Makefile -@@ -58,6 +58,7 @@ obj-$(CONFIG_MTD_NAND_ROCKCHIP) += rock +@@ -59,6 +59,7 @@ obj-$(CONFIG_MTD_NAND_ROCKCHIP) += rock obj-$(CONFIG_MTD_NAND_PL35X) += pl35x-nand-controller.o obj-$(CONFIG_MTD_NAND_RENESAS) += renesas-nand-controller.o obj-$(CONFIG_MTD_NAND_AR934X) += ar934x_nand.o diff --git a/target/linux/ath79/patches-6.12/911-mikrotik-rb91x.patch b/target/linux/ath79/patches-6.12/911-mikrotik-rb91x.patch index ddb7b52cbe5..ad76b655309 100644 --- a/target/linux/ath79/patches-6.12/911-mikrotik-rb91x.patch +++ b/target/linux/ath79/patches-6.12/911-mikrotik-rb91x.patch @@ -29,7 +29,7 @@ Tested-by: Koen Vandeputte --- a/drivers/gpio/Kconfig +++ b/drivers/gpio/Kconfig -@@ -371,6 +371,12 @@ config GPIO_IXP4XX +@@ -398,6 +398,12 @@ config GPIO_IXP4XX If unsure, say N. @@ -42,20 +42,20 @@ Tested-by: Koen Vandeputte config GPIO_LOGICVC tristate "Xylon LogiCVC GPIO support" depends on MFD_SYSCON && OF -@@ -553,6 +559,10 @@ config GPIO_ROCKCHIP +@@ -555,6 +561,10 @@ config GPIO_PXA help - Say yes here to support GPIO on Rockchip SoCs. + Say yes here to support the PXA GPIO device. +config GPIO_RB91X_KEY + tristate "MikroTik RB91x board series reset key support" + depends on ATH79 + - config GPIO_SAMA5D2_PIOBU - tristate "SAMA5D2 PIOBU GPIO support" - depends on MFD_SYSCON + config GPIO_RCAR + tristate "Renesas R-Car and RZ/G GPIO support" + depends on ARCH_RENESAS || COMPILE_TEST --- a/drivers/gpio/Makefile +++ b/drivers/gpio/Makefile -@@ -81,6 +81,7 @@ obj-$(CONFIG_GPIO_IXP4XX) += gpio-ixp4x +@@ -84,6 +84,7 @@ obj-$(CONFIG_GPIO_IXP4XX) += gpio-ixp4x obj-$(CONFIG_GPIO_JANZ_TTL) += gpio-janz-ttl.o obj-$(CONFIG_GPIO_KEMPLD) += gpio-kempld.o obj-$(CONFIG_GPIO_LATCH) += gpio-latch.o @@ -63,7 +63,7 @@ Tested-by: Koen Vandeputte obj-$(CONFIG_GPIO_LJCA) += gpio-ljca.o obj-$(CONFIG_GPIO_LOGICVC) += gpio-logicvc.o obj-$(CONFIG_GPIO_LOONGSON1) += gpio-loongson1.o -@@ -132,6 +133,7 @@ obj-$(CONFIG_GPIO_PMIC_EIC_SPRD) += gpio +@@ -137,6 +138,7 @@ obj-$(CONFIG_GPIO_PMIC_EIC_SPRD) += gpio obj-$(CONFIG_GPIO_PXA) += gpio-pxa.o obj-$(CONFIG_GPIO_RASPBERRYPI_EXP) += gpio-raspberrypi-exp.o obj-$(CONFIG_GPIO_RB4XX) += gpio-rb4xx.o @@ -73,7 +73,7 @@ Tested-by: Koen Vandeputte obj-$(CONFIG_GPIO_RDA) += gpio-rda.o --- a/drivers/mtd/nand/raw/Kconfig +++ b/drivers/mtd/nand/raw/Kconfig -@@ -557,4 +557,10 @@ config MTD_NAND_RB4XX +@@ -563,4 +563,10 @@ config MTD_NAND_RB4XX Enables support for the NAND flash chip on Mikrotik Routerboard RB4xx series. @@ -86,7 +86,7 @@ Tested-by: Koen Vandeputte endif # MTD_RAW_NAND --- a/drivers/mtd/nand/raw/Makefile +++ b/drivers/mtd/nand/raw/Makefile -@@ -59,6 +59,7 @@ obj-$(CONFIG_MTD_NAND_PL35X) += pl35x-n +@@ -60,6 +60,7 @@ obj-$(CONFIG_MTD_NAND_PL35X) += pl35x-n obj-$(CONFIG_MTD_NAND_RENESAS) += renesas-nand-controller.o obj-$(CONFIG_MTD_NAND_AR934X) += ar934x_nand.o obj-$(CONFIG_MTD_NAND_RB4XX) += nand_rb4xx.o