diff --git a/target/linux/bcm27xx/patches-6.12/950-0069-Improve-__copy_to_user-and-__copy_from_user-performa.patch b/target/linux/bcm27xx/patches-6.12/950-0069-Improve-__copy_to_user-and-__copy_from_user-performa.patch index 33fcc2ada7..794d02ad91 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0069-Improve-__copy_to_user-and-__copy_from_user-performa.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0069-Improve-__copy_to_user-and-__copy_from_user-performa.patch @@ -86,7 +86,7 @@ Signed-off-by: Phil Elwell --- a/arch/arm/include/asm/string.h +++ b/arch/arm/include/asm/string.h -@@ -68,4 +68,9 @@ static inline void *memset64(uint64_t *p +@@ -72,4 +72,9 @@ static inline void *memset64(uint64_t *p #endif diff --git a/target/linux/bcm27xx/patches-6.12/950-0132-hid-usb-Add-device-quirks-for-Freeway-Airmouse-T3-an.patch b/target/linux/bcm27xx/patches-6.12/950-0132-hid-usb-Add-device-quirks-for-Freeway-Airmouse-T3-an.patch index aa306da6f8..c38edf1184 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0132-hid-usb-Add-device-quirks-for-Freeway-Airmouse-T3-an.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0132-hid-usb-Add-device-quirks-for-Freeway-Airmouse-T3-an.patch @@ -32,7 +32,7 @@ Signed-off-by: Jonathan Bell #define USB_VENDOR_ID_BELKIN 0x050d #define USB_DEVICE_ID_FLIP_KVM 0x3201 -@@ -1479,6 +1482,9 @@ +@@ -1480,6 +1483,9 @@ #define USB_VENDOR_ID_XIAOMI 0x2717 #define USB_DEVICE_ID_MI_SILENT_MOUSE 0x5014 diff --git a/target/linux/bcm27xx/patches-6.12/950-0309-hwmon-aht10-Add-DT-compatible-string.patch b/target/linux/bcm27xx/patches-6.12/950-0309-hwmon-aht10-Add-DT-compatible-string.patch index 6fac3b1364..ab5cfc745e 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0309-hwmon-aht10-Add-DT-compatible-string.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0309-hwmon-aht10-Add-DT-compatible-string.patch @@ -10,7 +10,7 @@ Signed-off-by: Phil Elwell --- a/drivers/hwmon/aht10.c +++ b/drivers/hwmon/aht10.c -@@ -57,6 +57,12 @@ static const struct i2c_device_id aht10_ +@@ -62,6 +62,12 @@ static const struct i2c_device_id aht10_ }; MODULE_DEVICE_TABLE(i2c, aht10_id); @@ -23,7 +23,7 @@ Signed-off-by: Phil Elwell /** * struct aht10_data - All the data required to operate an AHT10/AHT20 chip * @client: the i2c client associated with the AHT10/AHT20 -@@ -380,6 +386,7 @@ static int aht10_probe(struct i2c_client +@@ -395,6 +401,7 @@ static int aht10_probe(struct i2c_client static struct i2c_driver aht10_driver = { .driver = { .name = "aht10", diff --git a/target/linux/bcm27xx/patches-6.12/950-0407-media-i2c-Add-ROHM-BU64754-Camera-Autofocus-Actuator.patch b/target/linux/bcm27xx/patches-6.12/950-0407-media-i2c-Add-ROHM-BU64754-Camera-Autofocus-Actuator.patch index 1a2261aa34..b6fe8e95e3 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0407-media-i2c-Add-ROHM-BU64754-Camera-Autofocus-Actuator.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0407-media-i2c-Add-ROHM-BU64754-Camera-Autofocus-Actuator.patch @@ -37,7 +37,7 @@ Signed-off-by: Jacopo Mondi + config VIDEO_DW9714 tristate "DW9714 lens voice coil support" - depends on I2C && VIDEO_DEV + depends on GPIOLIB && I2C && VIDEO_DEV --- a/drivers/media/i2c/Makefile +++ b/drivers/media/i2c/Makefile @@ -26,6 +26,7 @@ obj-$(CONFIG_VIDEO_ARDUCAM_PIVARIETY) += diff --git a/target/linux/bcm27xx/patches-6.12/950-0724-Revert-PCI-Warn-if-no-host-bridge-NUMA-node-info.patch b/target/linux/bcm27xx/patches-6.12/950-0724-Revert-PCI-Warn-if-no-host-bridge-NUMA-node-info.patch index f7f0a52f95..97ecdd7c59 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0724-Revert-PCI-Warn-if-no-host-bridge-NUMA-node-info.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0724-Revert-PCI-Warn-if-no-host-bridge-NUMA-node-info.patch @@ -12,7 +12,7 @@ Signed-off-by: Phil Elwell --- a/drivers/pci/probe.c +++ b/drivers/pci/probe.c -@@ -996,9 +996,6 @@ static int pci_register_host_bridge(stru +@@ -994,9 +994,6 @@ static int pci_register_host_bridge(stru else pr_info("PCI host bridge to bus %s\n", name); diff --git a/target/linux/bcm27xx/patches-6.12/950-0955-hwmon-aht10-Fix-AHT20-initialization.patch b/target/linux/bcm27xx/patches-6.12/950-0955-hwmon-aht10-Fix-AHT20-initialization.patch index c30b1b779c..45a7dd4b55 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0955-hwmon-aht10-Fix-AHT20-initialization.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0955-hwmon-aht10-Fix-AHT20-initialization.patch @@ -17,16 +17,7 @@ Signed-off-by: Josh Martinez <8892161+joshermar@users.noreply.github.com> --- a/drivers/hwmon/aht10.c +++ b/drivers/hwmon/aht10.c -@@ -37,6 +37,8 @@ - #define AHT10_CMD_MEAS 0b10101100 - #define AHT10_CMD_RST 0b10111010 - -+#define AHT20_CMD_INIT 0b10111110 -+ - /* - * Flags in the answer byte/command - */ -@@ -59,6 +61,7 @@ MODULE_DEVICE_TABLE(i2c, aht10_id); +@@ -64,6 +64,7 @@ MODULE_DEVICE_TABLE(i2c, aht10_id); static const struct of_device_id aht10_of_id[] = { { .compatible = "aosong,aht10", }, @@ -34,19 +25,3 @@ Signed-off-by: Josh Martinez <8892161+joshermar@users.noreply.github.com> { } }; MODULE_DEVICE_TABLE(of, aht10_of_id); -@@ -107,8 +110,13 @@ struct aht10_data { - */ - static int aht10_init(struct aht10_data *data) - { -- const u8 cmd_init[] = {AHT10_CMD_INIT, AHT10_CAL_ENABLED | AHT10_MODE_CYC, -- 0x00}; -+ u8 cmd_init[] = {AHT10_CMD_INIT, AHT10_CAL_ENABLED | AHT10_MODE_CYC, 0x00}; -+ -+ if (data->crc8) { /* AHT20 */ -+ cmd_init[0] = AHT20_CMD_INIT; -+ cmd_init[1] = AHT10_CAL_ENABLED; -+ } -+ - int res; - u8 status; - struct i2c_client *client = data->client; diff --git a/target/linux/econet/patches-6.12/913-pcie-fix-bogus-prefetch-window.patch b/target/linux/econet/patches-6.12/913-pcie-fix-bogus-prefetch-window.patch index a7ee7b7b6c..872843549d 100644 --- a/target/linux/econet/patches-6.12/913-pcie-fix-bogus-prefetch-window.patch +++ b/target/linux/econet/patches-6.12/913-pcie-fix-bogus-prefetch-window.patch @@ -16,7 +16,7 @@ Suggested-by: Bjorn Helgaas Signed-off-by: Ahmed Naseef --- a/drivers/pci/probe.c +++ b/drivers/pci/probe.c -@@ -351,6 +351,9 @@ static void pci_read_bridge_io(struct pc +@@ -349,6 +349,9 @@ static void pci_read_bridge_io(struct pc unsigned long io_mask, io_granularity, base, limit; struct pci_bus_region region; @@ -26,7 +26,7 @@ Signed-off-by: Ahmed Naseef io_mask = PCI_IO_RANGE_MASK; io_granularity = 0x1000; if (dev->io_window_1k) { -@@ -412,6 +415,9 @@ static void pci_read_bridge_mmio_pref(st +@@ -410,6 +413,9 @@ static void pci_read_bridge_mmio_pref(st pci_bus_addr_t base, limit; struct pci_bus_region region; diff --git a/target/linux/generic/backport-6.12/204-v6.13-resource-Add-resource-set-range-and-size-helpers.patch b/target/linux/generic/backport-6.12/204-v6.13-resource-Add-resource-set-range-and-size-helpers.patch deleted file mode 100644 index 0ea3e2ab5d..0000000000 --- a/target/linux/generic/backport-6.12/204-v6.13-resource-Add-resource-set-range-and-size-helpers.patch +++ /dev/null @@ -1,73 +0,0 @@ -From 9fb6fef0fb49124291837af1da5028f79d53f98e Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= -Date: Fri, 14 Jun 2024 13:06:03 +0300 -Subject: [PATCH] resource: Add resource set range and size helpers -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Setting the end address for a resource with a given size lacks a helper and -is therefore coded manually unlike the getter side which has a helper for -resource size calculation. Also, almost all callsites that calculate the -end address for a resource also set the start address right before it like -this: - - res->start = start_addr; - res->end = res->start + size - 1; - -Add resource_set_range(res, start_addr, size) that sets the start address -and calculates the end address to simplify this often repeated fragment. - -Also add resource_set_size() for the cases where setting the start address -of the resource is not necessary but mention in its kerneldoc that -resource_set_range() is preferred when setting both addresses. - -Link: https://lore.kernel.org/r/20240614100606.15830-2-ilpo.jarvinen@linux.intel.com -Signed-off-by: Ilpo Järvinen -Signed-off-by: Bjorn Helgaas -Reviewed-by: Jonathan Cameron ---- - include/linux/ioport.h | 32 ++++++++++++++++++++++++++++++++ - 1 file changed, 32 insertions(+) - ---- a/include/linux/ioport.h -+++ b/include/linux/ioport.h -@@ -249,6 +249,38 @@ struct resource *lookup_resource(struct - int adjust_resource(struct resource *res, resource_size_t start, - resource_size_t size); - resource_size_t resource_alignment(struct resource *res); -+ -+/** -+ * resource_set_size - Calculate resource end address from size and start -+ * @res: Resource descriptor -+ * @size: Size of the resource -+ * -+ * Calculate the end address for @res based on @size. -+ * -+ * Note: The start address of @res must be set when calling this function. -+ * Prefer resource_set_range() if setting both the start address and @size. -+ */ -+static inline void resource_set_size(struct resource *res, resource_size_t size) -+{ -+ res->end = res->start + size - 1; -+} -+ -+/** -+ * resource_set_range - Set resource start and end addresses -+ * @res: Resource descriptor -+ * @start: Start address for the resource -+ * @size: Size of the resource -+ * -+ * Set @res start address and calculate the end address based on @size. -+ */ -+static inline void resource_set_range(struct resource *res, -+ resource_size_t start, -+ resource_size_t size) -+{ -+ res->start = start; -+ resource_set_size(res, size); -+} -+ - static inline resource_size_t resource_size(const struct resource *res) - { - return res->end - res->start + 1; diff --git a/target/linux/generic/backport-6.12/721-01-v6.15-net-ethernet-mediatek-add-EEE-support.patch b/target/linux/generic/backport-6.12/721-01-v6.15-net-ethernet-mediatek-add-EEE-support.patch index c58635a284..7a94897c02 100644 --- a/target/linux/generic/backport-6.12/721-01-v6.15-net-ethernet-mediatek-add-EEE-support.patch +++ b/target/linux/generic/backport-6.12/721-01-v6.15-net-ethernet-mediatek-add-EEE-support.patch @@ -39,7 +39,7 @@ Signed-off-by: Qingfang Deng mcr |= MAC_MCR_TX_EN | MAC_MCR_RX_EN | MAC_MCR_FORCE_LINK; mtk_w32(mac->hw, mcr, MTK_MAC_MCR(mac->id)); } -@@ -4514,6 +4524,61 @@ static int mtk_set_pauseparam(struct net +@@ -4523,6 +4533,61 @@ static int mtk_set_pauseparam(struct net return phylink_ethtool_set_pauseparam(mac->phylink, pause); } @@ -101,7 +101,7 @@ Signed-off-by: Qingfang Deng static u16 mtk_select_queue(struct net_device *dev, struct sk_buff *skb, struct net_device *sb_dev) { -@@ -4546,6 +4611,8 @@ static const struct ethtool_ops mtk_etht +@@ -4555,6 +4620,8 @@ static const struct ethtool_ops mtk_etht .set_pauseparam = mtk_set_pauseparam, .get_rxnfc = mtk_get_rxnfc, .set_rxnfc = mtk_set_rxnfc, @@ -110,7 +110,7 @@ Signed-off-by: Qingfang Deng }; static const struct net_device_ops mtk_netdev_ops = { -@@ -4606,6 +4673,8 @@ static int mtk_add_mac(struct mtk_eth *e +@@ -4615,6 +4682,8 @@ static int mtk_add_mac(struct mtk_eth *e } mac = netdev_priv(eth->netdev[id]); eth->mac[id] = mac; diff --git a/target/linux/generic/hack-6.12/730-net-ethernet-mtk_eth_soc-add-hw-dump-for-forced-rese.patch b/target/linux/generic/hack-6.12/730-net-ethernet-mtk_eth_soc-add-hw-dump-for-forced-rese.patch index 4cb8c2903c..39446f6bac 100644 --- a/target/linux/generic/hack-6.12/730-net-ethernet-mtk_eth_soc-add-hw-dump-for-forced-rese.patch +++ b/target/linux/generic/hack-6.12/730-net-ethernet-mtk_eth_soc-add-hw-dump-for-forced-rese.patch @@ -37,7 +37,7 @@ Signed-off-by: Bo-Cun Chen .glo_cfg = 0x4604, .rst_idx = 0x4608, .delay_irq = 0x460c, -@@ -4060,6 +4063,56 @@ static void mtk_set_mcr_max_rx(struct mt +@@ -4069,6 +4072,56 @@ static void mtk_set_mcr_max_rx(struct mt mtk_w32(mac->hw, mcr_new, MTK_MAC_MCR(mac->id)); } @@ -94,7 +94,7 @@ Signed-off-by: Bo-Cun Chen static void mtk_hw_reset(struct mtk_eth *eth) { u32 val; -@@ -4539,6 +4592,8 @@ static void mtk_pending_work(struct work +@@ -4548,6 +4601,8 @@ static void mtk_pending_work(struct work rtnl_lock(); set_bit(MTK_RESETTING, ð->state); diff --git a/target/linux/generic/kernel-6.12 b/target/linux/generic/kernel-6.12 index 99bf5c5390..848f89c66c 100644 --- a/target/linux/generic/kernel-6.12 +++ b/target/linux/generic/kernel-6.12 @@ -1,2 +1,2 @@ -LINUX_VERSION-6.12 = .76 -LINUX_KERNEL_HASH-6.12.76 = bbb43e834c46e6bd49a5c28f22e679a937443404e1f653204d4b24929f3ad896 +LINUX_VERSION-6.12 = .77 +LINUX_KERNEL_HASH-6.12.77 = 358836ebe5caef41e7ae9492e7fbcdf5be6e53ee43c99752aebda81e1b2cff67 diff --git a/target/linux/generic/pending-6.12/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch b/target/linux/generic/pending-6.12/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch index c8693afbba..7e99fae6b8 100644 --- a/target/linux/generic/pending-6.12/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch +++ b/target/linux/generic/pending-6.12/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch @@ -138,7 +138,7 @@ Signed-off-by: Jonas Gorski static const struct rt6_info ip6_blk_hole_entry_template = { .dst = { .__rcuref = RCUREF_INIT(1), -@@ -1085,6 +1099,7 @@ static const int fib6_prop[RTN_MAX + 1] +@@ -1086,6 +1100,7 @@ static const int fib6_prop[RTN_MAX + 1] [RTN_BLACKHOLE] = -EINVAL, [RTN_UNREACHABLE] = -EHOSTUNREACH, [RTN_PROHIBIT] = -EACCES, @@ -146,7 +146,7 @@ Signed-off-by: Jonas Gorski [RTN_THROW] = -EAGAIN, [RTN_NAT] = -EINVAL, [RTN_XRESOLVE] = -EINVAL, -@@ -1120,6 +1135,10 @@ static void ip6_rt_init_dst_reject(struc +@@ -1121,6 +1136,10 @@ static void ip6_rt_init_dst_reject(struc rt->dst.output = ip6_pkt_prohibit_out; rt->dst.input = ip6_pkt_prohibit; break; @@ -157,7 +157,7 @@ Signed-off-by: Jonas Gorski case RTN_THROW: case RTN_UNREACHABLE: default: -@@ -4610,6 +4629,17 @@ static int ip6_pkt_prohibit_out(struct n +@@ -4609,6 +4628,17 @@ static int ip6_pkt_prohibit_out(struct n return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES); } @@ -175,7 +175,7 @@ Signed-off-by: Jonas Gorski /* * Allocate a dst for local (unicast / anycast) address. */ -@@ -5101,7 +5131,8 @@ static int rtm_to_fib6_config(struct sk_ +@@ -5100,7 +5130,8 @@ static int rtm_to_fib6_config(struct sk_ if (rtm->rtm_type == RTN_UNREACHABLE || rtm->rtm_type == RTN_BLACKHOLE || rtm->rtm_type == RTN_PROHIBIT || @@ -185,7 +185,7 @@ Signed-off-by: Jonas Gorski cfg->fc_flags |= RTF_REJECT; if (rtm->rtm_type == RTN_LOCAL) -@@ -6372,6 +6403,8 @@ static int ip6_route_dev_notify(struct n +@@ -6371,6 +6402,8 @@ static int ip6_route_dev_notify(struct n #ifdef CONFIG_IPV6_MULTIPLE_TABLES net->ipv6.ip6_prohibit_entry->dst.dev = dev; net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev); @@ -194,7 +194,7 @@ Signed-off-by: Jonas Gorski net->ipv6.ip6_blk_hole_entry->dst.dev = dev; net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev); #endif -@@ -6383,6 +6416,7 @@ static int ip6_route_dev_notify(struct n +@@ -6382,6 +6415,7 @@ static int ip6_route_dev_notify(struct n in6_dev_put_clear(&net->ipv6.ip6_null_entry->rt6i_idev); #ifdef CONFIG_IPV6_MULTIPLE_TABLES in6_dev_put_clear(&net->ipv6.ip6_prohibit_entry->rt6i_idev); @@ -202,7 +202,7 @@ Signed-off-by: Jonas Gorski in6_dev_put_clear(&net->ipv6.ip6_blk_hole_entry->rt6i_idev); #endif } -@@ -6578,6 +6612,8 @@ static int __net_init ip6_route_net_init +@@ -6577,6 +6611,8 @@ static int __net_init ip6_route_net_init #ifdef CONFIG_IPV6_MULTIPLE_TABLES net->ipv6.fib6_has_custom_rules = false; @@ -211,7 +211,7 @@ Signed-off-by: Jonas Gorski net->ipv6.ip6_prohibit_entry = kmemdup(&ip6_prohibit_entry_template, sizeof(*net->ipv6.ip6_prohibit_entry), GFP_KERNEL); -@@ -6588,11 +6624,21 @@ static int __net_init ip6_route_net_init +@@ -6587,11 +6623,21 @@ static int __net_init ip6_route_net_init ip6_template_metrics, true); INIT_LIST_HEAD(&net->ipv6.ip6_prohibit_entry->dst.rt_uncached); @@ -234,7 +234,7 @@ Signed-off-by: Jonas Gorski net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops; dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst, ip6_template_metrics, true); -@@ -6619,6 +6665,8 @@ out: +@@ -6618,6 +6664,8 @@ out: return ret; #ifdef CONFIG_IPV6_MULTIPLE_TABLES @@ -243,7 +243,7 @@ Signed-off-by: Jonas Gorski out_ip6_prohibit_entry: kfree(net->ipv6.ip6_prohibit_entry); out_ip6_null_entry: -@@ -6638,6 +6686,7 @@ static void __net_exit ip6_route_net_exi +@@ -6637,6 +6685,7 @@ static void __net_exit ip6_route_net_exi kfree(net->ipv6.ip6_null_entry); #ifdef CONFIG_IPV6_MULTIPLE_TABLES kfree(net->ipv6.ip6_prohibit_entry); @@ -251,7 +251,7 @@ Signed-off-by: Jonas Gorski kfree(net->ipv6.ip6_blk_hole_entry); #endif dst_entries_destroy(&net->ipv6.ip6_dst_ops); -@@ -6721,6 +6770,9 @@ void __init ip6_route_init_special_entri +@@ -6720,6 +6769,9 @@ void __init ip6_route_init_special_entri init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev); init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev; init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev); diff --git a/target/linux/generic/pending-6.12/702-net-ethernet-mtk_eth_soc-enable-threaded-NAPI.patch b/target/linux/generic/pending-6.12/702-net-ethernet-mtk_eth_soc-enable-threaded-NAPI.patch index d476465132..2fdb59d1d8 100644 --- a/target/linux/generic/pending-6.12/702-net-ethernet-mtk_eth_soc-enable-threaded-NAPI.patch +++ b/target/linux/generic/pending-6.12/702-net-ethernet-mtk_eth_soc-enable-threaded-NAPI.patch @@ -10,7 +10,7 @@ Signed-off-by: Felix Fietkau --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c -@@ -5148,6 +5148,8 @@ static int mtk_probe(struct platform_dev +@@ -5157,6 +5157,8 @@ static int mtk_probe(struct platform_dev dev_err(eth->dev, "failed to allocated dummy device\n"); goto err_unreg_netdev; } diff --git a/target/linux/generic/pending-6.12/732-03-net-ethernet-mtk_eth_soc-optimize-dma-ring-address-i.patch b/target/linux/generic/pending-6.12/732-03-net-ethernet-mtk_eth_soc-optimize-dma-ring-address-i.patch index ef46691878..6a51dbbfb4 100644 --- a/target/linux/generic/pending-6.12/732-03-net-ethernet-mtk_eth_soc-optimize-dma-ring-address-i.patch +++ b/target/linux/generic/pending-6.12/732-03-net-ethernet-mtk_eth_soc-optimize-dma-ring-address-i.patch @@ -294,7 +294,7 @@ Signed-off-by: Felix Fietkau eth->scratch_ring, eth->phy_scratch_ring); eth->scratch_ring = NULL; eth->phy_scratch_ring = 0; -@@ -5236,6 +5239,9 @@ static void mtk_remove(struct platform_d +@@ -5245,6 +5248,9 @@ static void mtk_remove(struct platform_d mtk_mdio_cleanup(eth); } @@ -304,7 +304,7 @@ Signed-off-by: Felix Fietkau static const struct mtk_soc_data mt2701_data = { .reg_map = &mtk_reg_map, .caps = MT7623_CAPS | MTK_HWLRO, -@@ -5244,14 +5250,14 @@ static const struct mtk_soc_data mt2701_ +@@ -5253,14 +5259,14 @@ static const struct mtk_soc_data mt2701_ .required_pctl = true, .version = 1, .tx = { @@ -321,7 +321,7 @@ Signed-off-by: Felix Fietkau .irq_done_mask = MTK_RX_DONE_INT, .dma_l4_valid = RX_DMA_L4_VALID, .dma_size = MTK_DMA_SIZE(2K), -@@ -5272,14 +5278,14 @@ static const struct mtk_soc_data mt7621_ +@@ -5281,14 +5287,14 @@ static const struct mtk_soc_data mt7621_ .hash_offset = 2, .foe_entry_size = MTK_FOE_ENTRY_V1_SIZE, .tx = { @@ -338,7 +338,7 @@ Signed-off-by: Felix Fietkau .irq_done_mask = MTK_RX_DONE_INT, .dma_l4_valid = RX_DMA_L4_VALID, .dma_size = MTK_DMA_SIZE(2K), -@@ -5302,14 +5308,14 @@ static const struct mtk_soc_data mt7622_ +@@ -5311,14 +5317,14 @@ static const struct mtk_soc_data mt7622_ .has_accounting = true, .foe_entry_size = MTK_FOE_ENTRY_V1_SIZE, .tx = { @@ -355,7 +355,7 @@ Signed-off-by: Felix Fietkau .irq_done_mask = MTK_RX_DONE_INT, .dma_l4_valid = RX_DMA_L4_VALID, .dma_size = MTK_DMA_SIZE(2K), -@@ -5331,14 +5337,14 @@ static const struct mtk_soc_data mt7623_ +@@ -5340,14 +5346,14 @@ static const struct mtk_soc_data mt7623_ .foe_entry_size = MTK_FOE_ENTRY_V1_SIZE, .disable_pll_modes = true, .tx = { @@ -372,7 +372,7 @@ Signed-off-by: Felix Fietkau .irq_done_mask = MTK_RX_DONE_INT, .dma_l4_valid = RX_DMA_L4_VALID, .dma_size = MTK_DMA_SIZE(2K), -@@ -5357,14 +5363,14 @@ static const struct mtk_soc_data mt7629_ +@@ -5366,14 +5372,14 @@ static const struct mtk_soc_data mt7629_ .has_accounting = true, .version = 1, .tx = { @@ -389,7 +389,7 @@ Signed-off-by: Felix Fietkau .irq_done_mask = MTK_RX_DONE_INT, .dma_l4_valid = RX_DMA_L4_VALID, .dma_size = MTK_DMA_SIZE(2K), -@@ -5387,14 +5393,14 @@ static const struct mtk_soc_data mt7981_ +@@ -5396,14 +5402,14 @@ static const struct mtk_soc_data mt7981_ .has_accounting = true, .foe_entry_size = MTK_FOE_ENTRY_V2_SIZE, .tx = { @@ -406,7 +406,7 @@ Signed-off-by: Felix Fietkau .irq_done_mask = MTK_RX_DONE_INT, .dma_l4_valid = RX_DMA_L4_VALID_V2, .dma_max_len = MTK_TX_DMA_BUF_LEN, -@@ -5417,14 +5423,14 @@ static const struct mtk_soc_data mt7986_ +@@ -5426,14 +5432,14 @@ static const struct mtk_soc_data mt7986_ .has_accounting = true, .foe_entry_size = MTK_FOE_ENTRY_V2_SIZE, .tx = { @@ -423,7 +423,7 @@ Signed-off-by: Felix Fietkau .irq_done_mask = MTK_RX_DONE_INT, .dma_l4_valid = RX_DMA_L4_VALID_V2, .dma_max_len = MTK_TX_DMA_BUF_LEN, -@@ -5447,14 +5453,14 @@ static const struct mtk_soc_data mt7988_ +@@ -5456,14 +5462,14 @@ static const struct mtk_soc_data mt7988_ .has_accounting = true, .foe_entry_size = MTK_FOE_ENTRY_V3_SIZE, .tx = { @@ -440,7 +440,7 @@ Signed-off-by: Felix Fietkau .irq_done_mask = MTK_RX_DONE_INT_V2, .dma_l4_valid = RX_DMA_L4_VALID_V2, .dma_max_len = MTK_TX_DMA_BUF_LEN_V2, -@@ -5471,13 +5477,13 @@ static const struct mtk_soc_data rt5350_ +@@ -5480,13 +5486,13 @@ static const struct mtk_soc_data rt5350_ .required_pctl = false, .version = 1, .tx = { diff --git a/target/linux/generic/pending-6.12/737-net-ethernet-mtk_eth_soc-add-paths-and-SerDes-modes-.patch b/target/linux/generic/pending-6.12/737-net-ethernet-mtk_eth_soc-add-paths-and-SerDes-modes-.patch index 93ceb9819a..d76797af92 100644 --- a/target/linux/generic/pending-6.12/737-net-ethernet-mtk_eth_soc-add-paths-and-SerDes-modes-.patch +++ b/target/linux/generic/pending-6.12/737-net-ethernet-mtk_eth_soc-add-paths-and-SerDes-modes-.patch @@ -497,7 +497,7 @@ Signed-off-by: Daniel Golle return 0; } -@@ -4828,6 +4979,7 @@ static const struct net_device_ops mtk_n +@@ -4837,6 +4988,7 @@ static const struct net_device_ops mtk_n static int mtk_add_mac(struct mtk_eth *eth, struct device_node *np) { const __be32 *_id = of_get_property(np, "reg", NULL); @@ -505,7 +505,7 @@ Signed-off-by: Daniel Golle phy_interface_t phy_mode; struct phylink *phylink; struct mtk_mac *mac; -@@ -4866,16 +5018,44 @@ static int mtk_add_mac(struct mtk_eth *e +@@ -4875,16 +5027,44 @@ static int mtk_add_mac(struct mtk_eth *e mac->id = id; mac->hw = eth; mac->of_node = np; @@ -558,7 +558,7 @@ Signed-off-by: Daniel Golle } memset(mac->hwlro_ip, 0, sizeof(mac->hwlro_ip)); -@@ -4958,8 +5138,21 @@ static int mtk_add_mac(struct mtk_eth *e +@@ -4967,8 +5147,21 @@ static int mtk_add_mac(struct mtk_eth *e phy_interface_zero(mac->phylink_config.supported_interfaces); __set_bit(PHY_INTERFACE_MODE_INTERNAL, mac->phylink_config.supported_interfaces); @@ -580,7 +580,7 @@ Signed-off-by: Daniel Golle phylink = phylink_create(&mac->phylink_config, of_fwnode_handle(mac->of_node), phy_mode, &mtk_phylink_ops); -@@ -5010,6 +5203,26 @@ free_netdev: +@@ -5019,6 +5212,26 @@ free_netdev: return err; } @@ -607,7 +607,7 @@ Signed-off-by: Daniel Golle void mtk_eth_set_dma_device(struct mtk_eth *eth, struct device *dma_dev) { struct net_device *dev, *tmp; -@@ -5156,7 +5369,8 @@ static int mtk_probe(struct platform_dev +@@ -5165,7 +5378,8 @@ static int mtk_probe(struct platform_dev regmap_write(cci, 0, 3); } @@ -617,7 +617,7 @@ Signed-off-by: Daniel Golle err = mtk_sgmii_init(eth); if (err) -@@ -5267,6 +5481,24 @@ static int mtk_probe(struct platform_dev +@@ -5276,6 +5490,24 @@ static int mtk_probe(struct platform_dev } } @@ -642,7 +642,7 @@ Signed-off-by: Daniel Golle if (MTK_HAS_CAPS(eth->soc->caps, MTK_SHARED_INT)) { err = devm_request_irq(eth->dev, eth->irq[0], mtk_handle_irq, 0, -@@ -5377,6 +5609,11 @@ static void mtk_remove(struct platform_d +@@ -5386,6 +5618,11 @@ static void mtk_remove(struct platform_d mtk_stop(eth->netdev[i]); mac = netdev_priv(eth->netdev[i]); phylink_disconnect_phy(mac->phylink); diff --git a/target/linux/generic/pending-6.12/738-01-net-ethernet-mtk_eth_soc-reduce-rx-ring-size-for-older.patch b/target/linux/generic/pending-6.12/738-01-net-ethernet-mtk_eth_soc-reduce-rx-ring-size-for-older.patch index 1ba5433466..95abd9459b 100644 --- a/target/linux/generic/pending-6.12/738-01-net-ethernet-mtk_eth_soc-reduce-rx-ring-size-for-older.patch +++ b/target/linux/generic/pending-6.12/738-01-net-ethernet-mtk_eth_soc-reduce-rx-ring-size-for-older.patch @@ -30,7 +30,7 @@ Signed-off-by: Felix Fietkau --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c -@@ -5647,7 +5647,7 @@ static const struct mtk_soc_data mt2701_ +@@ -5656,7 +5656,7 @@ static const struct mtk_soc_data mt2701_ DESC_SIZE(struct mtk_rx_dma), .irq_done_mask = MTK_RX_DONE_INT, .dma_l4_valid = RX_DMA_L4_VALID, @@ -39,7 +39,7 @@ Signed-off-by: Felix Fietkau .dma_max_len = MTK_TX_DMA_BUF_LEN, .dma_len_offset = 16, }, -@@ -5675,7 +5675,7 @@ static const struct mtk_soc_data mt7621_ +@@ -5684,7 +5684,7 @@ static const struct mtk_soc_data mt7621_ DESC_SIZE(struct mtk_rx_dma), .irq_done_mask = MTK_RX_DONE_INT, .dma_l4_valid = RX_DMA_L4_VALID, @@ -48,7 +48,7 @@ Signed-off-by: Felix Fietkau .dma_max_len = MTK_TX_DMA_BUF_LEN, .dma_len_offset = 16, }, -@@ -5705,7 +5705,7 @@ static const struct mtk_soc_data mt7622_ +@@ -5714,7 +5714,7 @@ static const struct mtk_soc_data mt7622_ DESC_SIZE(struct mtk_rx_dma), .irq_done_mask = MTK_RX_DONE_INT, .dma_l4_valid = RX_DMA_L4_VALID, @@ -57,7 +57,7 @@ Signed-off-by: Felix Fietkau .dma_max_len = MTK_TX_DMA_BUF_LEN, .dma_len_offset = 16, }, -@@ -5734,7 +5734,7 @@ static const struct mtk_soc_data mt7623_ +@@ -5743,7 +5743,7 @@ static const struct mtk_soc_data mt7623_ DESC_SIZE(struct mtk_rx_dma), .irq_done_mask = MTK_RX_DONE_INT, .dma_l4_valid = RX_DMA_L4_VALID, @@ -66,7 +66,7 @@ Signed-off-by: Felix Fietkau .dma_max_len = MTK_TX_DMA_BUF_LEN, .dma_len_offset = 16, }, -@@ -5760,7 +5760,7 @@ static const struct mtk_soc_data mt7629_ +@@ -5769,7 +5769,7 @@ static const struct mtk_soc_data mt7629_ DESC_SIZE(struct mtk_rx_dma), .irq_done_mask = MTK_RX_DONE_INT, .dma_l4_valid = RX_DMA_L4_VALID, @@ -75,7 +75,7 @@ Signed-off-by: Felix Fietkau .dma_max_len = MTK_TX_DMA_BUF_LEN, .dma_len_offset = 16, }, -@@ -5792,7 +5792,7 @@ static const struct mtk_soc_data mt7981_ +@@ -5801,7 +5801,7 @@ static const struct mtk_soc_data mt7981_ .dma_l4_valid = RX_DMA_L4_VALID_V2, .dma_max_len = MTK_TX_DMA_BUF_LEN, .dma_len_offset = 16, @@ -84,7 +84,7 @@ Signed-off-by: Felix Fietkau }, }; -@@ -5822,7 +5822,7 @@ static const struct mtk_soc_data mt7986_ +@@ -5831,7 +5831,7 @@ static const struct mtk_soc_data mt7986_ .dma_l4_valid = RX_DMA_L4_VALID_V2, .dma_max_len = MTK_TX_DMA_BUF_LEN, .dma_len_offset = 16, @@ -93,7 +93,7 @@ Signed-off-by: Felix Fietkau }, }; -@@ -5875,7 +5875,7 @@ static const struct mtk_soc_data rt5350_ +@@ -5884,7 +5884,7 @@ static const struct mtk_soc_data rt5350_ .dma_l4_valid = RX_DMA_L4_VALID_PDMA, .dma_max_len = MTK_TX_DMA_BUF_LEN, .dma_len_offset = 16, diff --git a/target/linux/generic/pending-6.12/738-02-net-ethernet-mtk_eth_soc-do-not-enable-page-pool-sta.patch b/target/linux/generic/pending-6.12/738-02-net-ethernet-mtk_eth_soc-do-not-enable-page-pool-sta.patch index 10712eb4fa..53216caeaa 100644 --- a/target/linux/generic/pending-6.12/738-02-net-ethernet-mtk_eth_soc-do-not-enable-page-pool-sta.patch +++ b/target/linux/generic/pending-6.12/738-02-net-ethernet-mtk_eth_soc-do-not-enable-page-pool-sta.patch @@ -25,7 +25,7 @@ Signed-off-by: Felix Fietkau help --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c -@@ -4747,6 +4747,7 @@ static int mtk_get_sset_count(struct net +@@ -4756,6 +4756,7 @@ static int mtk_get_sset_count(struct net static void mtk_ethtool_pp_stats(struct mtk_eth *eth, u64 *data) { @@ -33,7 +33,7 @@ Signed-off-by: Felix Fietkau struct page_pool_stats stats = {}; int i; -@@ -4759,6 +4760,7 @@ static void mtk_ethtool_pp_stats(struct +@@ -4768,6 +4769,7 @@ static void mtk_ethtool_pp_stats(struct page_pool_get_stats(ring->page_pool, &stats); } page_pool_ethtool_stats_get(data, &stats); diff --git a/target/linux/generic/pending-6.12/834-ledtrig-libata.patch b/target/linux/generic/pending-6.12/834-ledtrig-libata.patch index ba1f332df0..4b497d9fbf 100644 --- a/target/linux/generic/pending-6.12/834-ledtrig-libata.patch +++ b/target/linux/generic/pending-6.12/834-ledtrig-libata.patch @@ -63,7 +63,7 @@ Signed-off-by: Daniel Golle /** * ata_build_rw_tf - Build ATA taskfile for given read/write request * @qc: Metadata associated with the taskfile to build -@@ -4818,6 +4829,9 @@ void __ata_qc_complete(struct ata_queued +@@ -4807,6 +4818,9 @@ void __ata_qc_complete(struct ata_queued link->active_tag = ATA_TAG_POISON; ap->nr_active_links--; } @@ -73,7 +73,7 @@ Signed-off-by: Daniel Golle /* clear exclusive status */ if (unlikely(qc->flags & ATA_QCFLAG_CLEAR_EXCL && -@@ -5546,6 +5560,9 @@ struct ata_port *ata_port_alloc(struct a +@@ -5536,6 +5550,9 @@ struct ata_port *ata_port_alloc(struct a ap->stats.unhandled_irq = 1; ap->stats.idle_irq = 1; #endif @@ -83,7 +83,7 @@ Signed-off-by: Daniel Golle ata_sff_port_init(ap); ata_force_pflags(ap); -@@ -5562,6 +5579,12 @@ void ata_port_free(struct ata_port *ap) +@@ -5552,6 +5569,12 @@ void ata_port_free(struct ata_port *ap) kfree(ap->pmp_link); kfree(ap->slave_link); ida_free(&ata_ida, ap->print_id); @@ -96,7 +96,7 @@ Signed-off-by: Daniel Golle kfree(ap); } EXPORT_SYMBOL_GPL(ata_port_free); -@@ -5966,7 +5989,23 @@ int ata_host_register(struct ata_host *h +@@ -5956,7 +5979,23 @@ int ata_host_register(struct ata_host *h WARN_ON(1); return -EINVAL; } @@ -132,7 +132,7 @@ Signed-off-by: Daniel Golle /* * Define if arch has non-standard setup. This is a _PCI_ standard -@@ -935,6 +938,10 @@ struct ata_port { +@@ -937,6 +940,10 @@ struct ata_port { #ifdef CONFIG_ATA_ACPI struct ata_acpi_gtm __acpi_init_gtm; /* use ata_acpi_init_gtm() */ #endif diff --git a/target/linux/mediatek/patches-6.12/750-net-ethernet-mtk_eth_soc-add-mt7987-support.patch b/target/linux/mediatek/patches-6.12/750-net-ethernet-mtk_eth_soc-add-mt7987-support.patch index e4a46f0323..d27425592c 100644 --- a/target/linux/mediatek/patches-6.12/750-net-ethernet-mtk_eth_soc-add-mt7987-support.patch +++ b/target/linux/mediatek/patches-6.12/750-net-ethernet-mtk_eth_soc-add-mt7987-support.patch @@ -126,7 +126,7 @@ Signed-off-by: Bo-Cun Chen if (mtk_is_netsys_v1(eth)) val |= MTK_QTX_SCH_LEAKY_BUCKET_EN; mtk_w32(eth, val, soc->reg_map->qdma.qtx_sch + ofs); -@@ -5883,6 +5919,36 @@ static const struct mtk_soc_data mt7986_ +@@ -5892,6 +5928,36 @@ static const struct mtk_soc_data mt7986_ }, }; @@ -163,7 +163,7 @@ Signed-off-by: Bo-Cun Chen static const struct mtk_soc_data mt7988_data = { .reg_map = &mt7988_reg_map, .ana_rgc3 = 0x128, -@@ -5944,6 +6010,7 @@ const struct of_device_id of_mtk_match[] +@@ -5953,6 +6019,7 @@ const struct of_device_id of_mtk_match[] { .compatible = "mediatek,mt7629-eth", .data = &mt7629_data }, { .compatible = "mediatek,mt7981-eth", .data = &mt7981_data }, { .compatible = "mediatek,mt7986-eth", .data = &mt7986_data }, diff --git a/target/linux/mediatek/patches-6.12/751-net-ethernet-mtk_eth_soc-revise-hardware-configuration-for-mt7987.patch b/target/linux/mediatek/patches-6.12/751-net-ethernet-mtk_eth_soc-revise-hardware-configuration-for-mt7987.patch index 3510ee529e..cef30ef64e 100644 --- a/target/linux/mediatek/patches-6.12/751-net-ethernet-mtk_eth_soc-revise-hardware-configuration-for-mt7987.patch +++ b/target/linux/mediatek/patches-6.12/751-net-ethernet-mtk_eth_soc-revise-hardware-configuration-for-mt7987.patch @@ -15,7 +15,7 @@ Signed-off-by: Bo-Cun Chen --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c -@@ -4452,27 +4452,40 @@ static int mtk_hw_init(struct mtk_eth *e +@@ -4461,27 +4461,40 @@ static int mtk_hw_init(struct mtk_eth *e mtk_w32(eth, PSE_DUMMY_WORK_GDM(1) | PSE_DUMMY_WORK_GDM(2) | PSE_DUMMY_WORK_GDM(3) | DUMMY_PAGE_THR, PSE_DUMY_REQ); diff --git a/target/linux/microchipsw/patches-6.12/0098-v7.0-net-sparx5-lan969x-fix-DWRR-cost-max-to-match-hardwa.patch b/target/linux/microchipsw/patches-6.12/0098-v7.0-net-sparx5-lan969x-fix-DWRR-cost-max-to-match-hardwa.patch deleted file mode 100644 index 27c4a31912..0000000000 --- a/target/linux/microchipsw/patches-6.12/0098-v7.0-net-sparx5-lan969x-fix-DWRR-cost-max-to-match-hardwa.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 6c28aa8dfdf24f554d4c5d4ff7d723a95360d94a Mon Sep 17 00:00:00 2001 -From: Daniel Machon -Date: Tue, 10 Feb 2026 14:44:01 +0100 -Subject: [PATCH] net: sparx5/lan969x: fix DWRR cost max to match hardware - register width - -DWRR (Deficit Weighted Round Robin) scheduling distributes bandwidth -across traffic classes based on per-queue cost values, where lower cost -means higher bandwidth share. - -The SPX5_DWRR_COST_MAX constant is 63 (6 bits) but the hardware -register field HSCH_DWRR_ENTRY_DWRR_COST is GENMASK(24, 20), only -5 bits wide (max 31). This causes sparx5_weight_to_hw_cost() to -compute cost values that silently overflow via FIELD_PREP, resulting -in incorrect scheduling weights. - -Set SPX5_DWRR_COST_MAX to 31 to match the hardware register width. - -Fixes: 211225428d65 ("net: microchip: sparx5: add support for offloading ets qdisc") -Signed-off-by: Daniel Machon -Reviewed-by: Simon Horman -Link: https://patch.msgid.link/20260210-sparx5-fix-dwrr-cost-max-v1-1-58fbdbc25652@microchip.com -Signed-off-by: Jakub Kicinski ---- - drivers/net/ethernet/microchip/sparx5/sparx5_qos.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - ---- a/drivers/net/ethernet/microchip/sparx5/sparx5_qos.h -+++ b/drivers/net/ethernet/microchip/sparx5/sparx5_qos.h -@@ -35,7 +35,7 @@ - #define SPX5_SE_BURST_UNIT 4096 - - /* Dwrr */ --#define SPX5_DWRR_COST_MAX 63 -+#define SPX5_DWRR_COST_MAX 31 - - struct sparx5_shaper { - u32 mode; diff --git a/target/linux/starfive/patches-6.12/0017-plic-irq-Set-IRQCHIP_EOI_THREADED-in-PREEMPT_RT-case.patch b/target/linux/starfive/patches-6.12/0017-plic-irq-Set-IRQCHIP_EOI_THREADED-in-PREEMPT_RT-case.patch index 61491c57a2..b114c906d4 100644 --- a/target/linux/starfive/patches-6.12/0017-plic-irq-Set-IRQCHIP_EOI_THREADED-in-PREEMPT_RT-case.patch +++ b/target/linux/starfive/patches-6.12/0017-plic-irq-Set-IRQCHIP_EOI_THREADED-in-PREEMPT_RT-case.patch @@ -17,7 +17,7 @@ Signed-off-by: Minda Chen --- a/drivers/irqchip/irq-sifive-plic.c +++ b/drivers/irqchip/irq-sifive-plic.c -@@ -204,6 +204,9 @@ static struct irq_chip plic_edge_chip = +@@ -209,6 +209,9 @@ static struct irq_chip plic_edge_chip = #endif .irq_set_type = plic_irq_set_type, .flags = IRQCHIP_SKIP_SET_WAKE | @@ -27,7 +27,7 @@ Signed-off-by: Minda Chen IRQCHIP_AFFINITY_PRE_STARTUP, }; -@@ -219,6 +222,9 @@ static struct irq_chip plic_chip = { +@@ -224,6 +227,9 @@ static struct irq_chip plic_chip = { #endif .irq_set_type = plic_irq_set_type, .flags = IRQCHIP_SKIP_SET_WAKE |