From: Shiji Yang Date: Fri, 24 Jul 2026 22:52:39 +0000 (+0800) Subject: kernel: bump 6.12 to 6.12.97 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cd0496035c5ff47955a892f5f517b003790f2d56;p=thirdparty%2Fopenwrt.git kernel: bump 6.12 to 6.12.97 Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.97 Upstream merged patches: - generic/backport-6.12/200-01-v6.13-jiffies-Define-secs_to_jiffies.patch[1] - generic/backport-6.12/200-02-v6.14-jiffies-Cast-to-unsigned-long-in-secs_to_jiffies-con.patch[2] - generic/backport-6.12/752-v7.2-net-dsa-qca8k-fix-led-devicename-when-using-external.patch[3] Manually rebased patches: - bcm27xx/patches-6.12/950-0358-mmc-sdhci-of-dwcmshc-define-sdio-timeout-clocks.patch[4] - generic/backport-6.12/906-v6.17-PCI-dwc-Switch-to-msi_create_parent_irq_domain.patch[5] - loongarch64/patches-6.12/004-v6.17-LoongArch-BPF-Add-basic-bpf-trampoline-support.patch[6-7] New kconfig symbol: - DEBUG_NET_SMALL_RTNL[8] All other patches are automatically refreshed. [1] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.97&id=5dc96cd938181dec01c77445c39da26f645e10e5 [2] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.97&id=b17b73e1178aced9006b887e67e8b88fed0a08c9 [3] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.97&id=562a838a689b6080a977deeb706a18ae8d7774a1 [4] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.97&id=5ca45195c78bc13e5e7fad8e9c1ccfaf2859699a [5] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.97&id=a44c473ba778b05f9bf0f4873271fab0cec6981a [6] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.97&id=8ea20054e8d40a51c82ac4ef625e24a11cf1c0a7 [7] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-6.18.y&id=666fc2e6e4d0a37592e5a3029deddc272e10df1e [8] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.97&&id=54ddb19c3d7a625d80364fd526af8849ba61e8aa Signed-off-by: Shiji Yang Link: https://github.com/openwrt/openwrt/pull/24081 Signed-off-by: Hauke Mehrtens --- diff --git a/target/linux/bcm27xx/patches-6.12/950-0057-MMC-added-alternative-MMC-driver.patch b/target/linux/bcm27xx/patches-6.12/950-0057-MMC-added-alternative-MMC-driver.patch index 748eb2b7cc1..eec17cacd03 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0057-MMC-added-alternative-MMC-driver.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0057-MMC-added-alternative-MMC-driver.patch @@ -285,7 +285,7 @@ Signed-off-by: Phil Elwell static inline int mmc_blk_part_switch(struct mmc_card *card, unsigned int part_type); static void mmc_blk_rw_rq_prep(struct mmc_queue_req *mqrq, -@@ -3321,6 +3328,8 @@ static int mmc_blk_probe(struct mmc_card +@@ -3320,6 +3327,8 @@ static int mmc_blk_probe(struct mmc_card { struct mmc_blk_data *md; int ret = 0; @@ -294,7 +294,7 @@ Signed-off-by: Phil Elwell /* * Check that the card supports the command class(es) we need. -@@ -3328,7 +3337,16 @@ static int mmc_blk_probe(struct mmc_card +@@ -3327,7 +3336,16 @@ static int mmc_blk_probe(struct mmc_card if (!(card->csd.cmdclass & CCC_BLOCK_READ)) return -ENODEV; @@ -312,7 +312,7 @@ Signed-off-by: Phil Elwell card->complete_wq = alloc_workqueue("mmc_complete", WQ_MEM_RECLAIM | WQ_HIGHPRI, 0); -@@ -3343,6 +3361,17 @@ static int mmc_blk_probe(struct mmc_card +@@ -3342,6 +3360,17 @@ static int mmc_blk_probe(struct mmc_card goto out_free; } diff --git a/target/linux/bcm27xx/patches-6.12/950-0094-net-lan78xx-Disable-TCP-Segmentation-Offload-TSO.patch b/target/linux/bcm27xx/patches-6.12/950-0094-net-lan78xx-Disable-TCP-Segmentation-Offload-TSO.patch index 930c7493ae7..1823c046784 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0094-net-lan78xx-Disable-TCP-Segmentation-Offload-TSO.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0094-net-lan78xx-Disable-TCP-Segmentation-Offload-TSO.patch @@ -37,7 +37,7 @@ Signed-off-by: Dave Stevenson static int lan78xx_read_reg(struct lan78xx_net *dev, u32 index, u32 *data) { u32 *buf; -@@ -3466,8 +3475,14 @@ static int lan78xx_bind(struct lan78xx_n +@@ -3476,8 +3485,14 @@ static int lan78xx_bind(struct lan78xx_n if (DEFAULT_RX_CSUM_ENABLE) dev->net->features |= NETIF_F_RXCSUM; diff --git a/target/linux/bcm27xx/patches-6.12/950-0096-lan78xx-Debounce-link-events-to-minimize-poll-storm.patch b/target/linux/bcm27xx/patches-6.12/950-0096-lan78xx-Debounce-link-events-to-minimize-poll-storm.patch index 9dd0937ddcc..d4edd6ccdb6 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0096-lan78xx-Debounce-link-events-to-minimize-poll-storm.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0096-lan78xx-Debounce-link-events-to-minimize-poll-storm.patch @@ -28,7 +28,7 @@ See: https://github.com/raspberrypi/linux/issues/2447 static int lan78xx_read_reg(struct lan78xx_net *dev, u32 index, u32 *data) { u32 *buf; -@@ -4452,7 +4457,13 @@ static int lan78xx_probe(struct usb_inte +@@ -4462,7 +4467,13 @@ static int lan78xx_probe(struct usb_inte if (ret < 0) goto out4; diff --git a/target/linux/bcm27xx/patches-6.12/950-0097-net-lan78xx-Ack-pending-PHY-ints-when-resetting.patch b/target/linux/bcm27xx/patches-6.12/950-0097-net-lan78xx-Ack-pending-PHY-ints-when-resetting.patch index 5dd8395b9bc..e99010fbc88 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0097-net-lan78xx-Ack-pending-PHY-ints-when-resetting.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0097-net-lan78xx-Ack-pending-PHY-ints-when-resetting.patch @@ -20,7 +20,7 @@ Signed-off-by: Phil Elwell --- a/drivers/net/usb/lan78xx.c +++ b/drivers/net/usb/lan78xx.c -@@ -1435,6 +1435,9 @@ static int lan78xx_link_reset(struct lan +@@ -1598,6 +1598,9 @@ static int lan78xx_link_reset(struct lan if (unlikely(ret < 0)) return ret; diff --git a/target/linux/bcm27xx/patches-6.12/950-0098-Patching-lan78xx-for-SOF_TIMESTAMPING_TX_SOFTWARE-su.patch b/target/linux/bcm27xx/patches-6.12/950-0098-Patching-lan78xx-for-SOF_TIMESTAMPING_TX_SOFTWARE-su.patch index de734ca0c7e..328d992fdd2 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0098-Patching-lan78xx-for-SOF_TIMESTAMPING_TX_SOFTWARE-su.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0098-Patching-lan78xx-for-SOF_TIMESTAMPING_TX_SOFTWARE-su.patch @@ -9,7 +9,7 @@ Subject: [PATCH] Patching lan78xx for SOF_TIMESTAMPING_TX_SOFTWARE support --- a/drivers/net/usb/lan78xx.c +++ b/drivers/net/usb/lan78xx.c -@@ -1935,6 +1935,7 @@ static const struct ethtool_ops lan78xx_ +@@ -2098,6 +2098,7 @@ static const struct ethtool_ops lan78xx_ .set_link_ksettings = lan78xx_set_link_ksettings, .get_regs_len = lan78xx_get_regs_len, .get_regs = lan78xx_get_regs, diff --git a/target/linux/bcm27xx/patches-6.12/950-0099-lan78xx-Enable-LEDs-and-auto-negotiation.patch b/target/linux/bcm27xx/patches-6.12/950-0099-lan78xx-Enable-LEDs-and-auto-negotiation.patch index a92714c493f..59aa9962856 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0099-lan78xx-Enable-LEDs-and-auto-negotiation.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0099-lan78xx-Enable-LEDs-and-auto-negotiation.patch @@ -14,7 +14,7 @@ Signed-off-by: Phil Elwell --- a/drivers/net/usb/lan78xx.c +++ b/drivers/net/usb/lan78xx.c -@@ -2917,6 +2917,11 @@ static int lan78xx_reset(struct lan78xx_ +@@ -2927,6 +2927,11 @@ static int lan78xx_reset(struct lan78xx_ int ret; u32 buf; u8 sig; @@ -26,7 +26,7 @@ Signed-off-by: Phil Elwell ret = lan78xx_read_reg(dev, HW_CFG, &buf); if (ret < 0) -@@ -2985,6 +2990,10 @@ static int lan78xx_reset(struct lan78xx_ +@@ -2995,6 +3000,10 @@ static int lan78xx_reset(struct lan78xx_ buf |= HW_CFG_CLK125_EN_; buf |= HW_CFG_REFCLK25_EN_; @@ -37,7 +37,7 @@ Signed-off-by: Phil Elwell ret = lan78xx_write_reg(dev, HW_CFG, buf); if (ret < 0) return ret; -@@ -3087,6 +3096,9 @@ static int lan78xx_reset(struct lan78xx_ +@@ -3097,6 +3106,9 @@ static int lan78xx_reset(struct lan78xx_ buf |= MAC_CR_AUTO_DUPLEX_ | MAC_CR_AUTO_SPEED_; } } diff --git a/target/linux/bcm27xx/patches-6.12/950-0122-bcmgenet-Better-coalescing-parameter-defaults.patch b/target/linux/bcm27xx/patches-6.12/950-0122-bcmgenet-Better-coalescing-parameter-defaults.patch index c521f1ecedb..a00e2af24a9 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0122-bcmgenet-Better-coalescing-parameter-defaults.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0122-bcmgenet-Better-coalescing-parameter-defaults.patch @@ -18,7 +18,7 @@ Signed-off-by: Phil Elwell --- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c +++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c -@@ -2674,7 +2674,7 @@ static void bcmgenet_init_tx_ring(struct +@@ -2666,7 +2666,7 @@ static void bcmgenet_init_tx_ring(struct bcmgenet_tdma_ring_writel(priv, index, 0, TDMA_PROD_INDEX); bcmgenet_tdma_ring_writel(priv, index, 0, TDMA_CONS_INDEX); @@ -27,7 +27,7 @@ Signed-off-by: Phil Elwell /* Disable rate control for now */ bcmgenet_tdma_ring_writel(priv, index, flow_period_val, TDMA_FLOW_PERIOD); -@@ -4073,8 +4073,10 @@ static int bcmgenet_probe(struct platfor +@@ -4066,8 +4066,10 @@ static int bcmgenet_probe(struct platfor netif_set_real_num_rx_queues(priv->dev, priv->hw_params->rx_queues + 1); /* Set default coalescing parameters */ diff --git a/target/linux/bcm27xx/patches-6.12/950-0130-drm-v3d-Clock-V3D-down-when-not-in-use.patch b/target/linux/bcm27xx/patches-6.12/950-0130-drm-v3d-Clock-V3D-down-when-not-in-use.patch index 3a733d13fb5..a3d6656df33 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0130-drm-v3d-Clock-V3D-down-when-not-in-use.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0130-drm-v3d-Clock-V3D-down-when-not-in-use.patch @@ -187,7 +187,7 @@ Signed-off-by: popcornmix kref_init(&job->refcount); return 0; -@@ -1414,3 +1459,14 @@ fail: +@@ -1416,3 +1461,14 @@ fail: return ret; } diff --git a/target/linux/bcm27xx/patches-6.12/950-0133-net-bcmgenet-Workaround-2-for-Pi4-Ethernet-fail.patch b/target/linux/bcm27xx/patches-6.12/950-0133-net-bcmgenet-Workaround-2-for-Pi4-Ethernet-fail.patch index c044b2ae2e1..c4506f5ef57 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0133-net-bcmgenet-Workaround-2-for-Pi4-Ethernet-fail.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0133-net-bcmgenet-Workaround-2-for-Pi4-Ethernet-fail.patch @@ -27,7 +27,7 @@ Signed-off-by: Phil Elwell --- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c +++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c -@@ -65,6 +65,9 @@ +@@ -64,6 +64,9 @@ /* Forward declarations */ static void bcmgenet_set_rx_mode(struct net_device *dev); @@ -37,7 +37,7 @@ Signed-off-by: Phil Elwell static inline void bcmgenet_writel(u32 value, void __iomem *offset) { -@@ -2512,6 +2515,11 @@ static void reset_umac(struct bcmgenet_p +@@ -2504,6 +2507,11 @@ static void reset_umac(struct bcmgenet_p bcmgenet_rbuf_ctrl_set(priv, 0); udelay(10); diff --git a/target/linux/bcm27xx/patches-6.12/950-0167-bcmgenet-Disable-skip_umac_reset-by-default.patch b/target/linux/bcm27xx/patches-6.12/950-0167-bcmgenet-Disable-skip_umac_reset-by-default.patch index e0cd4c2249b..16d244e3242 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0167-bcmgenet-Disable-skip_umac_reset-by-default.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0167-bcmgenet-Disable-skip_umac_reset-by-default.patch @@ -12,7 +12,7 @@ Signed-off-by: popcornmix --- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c +++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c -@@ -65,7 +65,7 @@ +@@ -64,7 +64,7 @@ /* Forward declarations */ static void bcmgenet_set_rx_mode(struct net_device *dev); diff --git a/target/linux/bcm27xx/patches-6.12/950-0297-net-bcmgenet-Add-eee-module-parameter.patch b/target/linux/bcm27xx/patches-6.12/950-0297-net-bcmgenet-Add-eee-module-parameter.patch index 4b8942dddef..be4feb4c72b 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0297-net-bcmgenet-Add-eee-module-parameter.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0297-net-bcmgenet-Add-eee-module-parameter.patch @@ -16,7 +16,7 @@ Signed-off-by: Phil Elwell --- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c +++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c -@@ -68,6 +68,9 @@ static void bcmgenet_set_rx_mode(struct +@@ -67,6 +67,9 @@ static void bcmgenet_set_rx_mode(struct static bool skip_umac_reset = false; module_param(skip_umac_reset, bool, 0444); MODULE_PARM_DESC(skip_umac_reset, "Skip UMAC reset step"); @@ -26,7 +26,7 @@ Signed-off-by: Phil Elwell static inline void bcmgenet_writel(u32 value, void __iomem *offset) { -@@ -3359,6 +3362,17 @@ static int bcmgenet_open(struct net_devi +@@ -3352,6 +3355,17 @@ static int bcmgenet_open(struct net_devi bcmgenet_phy_pause_set(dev, priv->rx_pause, priv->tx_pause); diff --git a/target/linux/bcm27xx/patches-6.12/950-0322-Bluetooth-hci_sync-Add-fallback-bd-address-prop.patch b/target/linux/bcm27xx/patches-6.12/950-0322-Bluetooth-hci_sync-Add-fallback-bd-address-prop.patch index b50b49f2a4f..d7a6e65a4c0 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0322-Bluetooth-hci_sync-Add-fallback-bd-address-prop.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0322-Bluetooth-hci_sync-Add-fallback-bd-address-prop.patch @@ -20,7 +20,7 @@ Signed-off-by: Phil Elwell --- a/net/bluetooth/hci_sync.c +++ b/net/bluetooth/hci_sync.c -@@ -4961,6 +4961,7 @@ static const struct { +@@ -4985,6 +4985,7 @@ static const struct { */ static int hci_dev_setup_sync(struct hci_dev *hdev) { @@ -28,7 +28,7 @@ Signed-off-by: Phil Elwell int ret = 0; bool invalid_bdaddr; size_t i; -@@ -4989,7 +4990,8 @@ static int hci_dev_setup_sync(struct hci +@@ -5013,7 +5014,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) && diff --git a/target/linux/bcm27xx/patches-6.12/950-0358-mmc-sdhci-of-dwcmshc-define-sdio-timeout-clocks.patch b/target/linux/bcm27xx/patches-6.12/950-0358-mmc-sdhci-of-dwcmshc-define-sdio-timeout-clocks.patch index a9ee1ad96c0..b47fab36dfe 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0358-mmc-sdhci-of-dwcmshc-define-sdio-timeout-clocks.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0358-mmc-sdhci-of-dwcmshc-define-sdio-timeout-clocks.patch @@ -101,47 +101,66 @@ Signed-off-by: Jonathan Bell .compatible = "rockchip,rk3588-dwcmshc", .data = &sdhci_dwcmshc_rk35xx_pdata, }, -@@ -1470,13 +1498,32 @@ static int dwcmshc_probe(struct platform - priv->bus_clk = devm_clk_get(dev, "bus"); - if (!IS_ERR(priv->bus_clk)) - clk_prepare_enable(priv->bus_clk); +@@ -1473,13 +1501,32 @@ static int dwcmshc_probe(struct platform + if (err) + goto err_clk; + } + + pltfm_host->timeout_clk = devm_clk_get(dev, "timeout"); + if (!IS_ERR(pltfm_host->timeout_clk)) + err = clk_prepare_enable(pltfm_host->timeout_clk); + if (err) -+ goto free_pltfm; ++ goto err_bus_clk; + + priv->sdio_clk = devm_clk_get_optional(&pdev->dev, "sdio"); -+ } -+ + } + +- err = mmc_of_parse(host->mmc); + pltfm_host->timeout_clk = devm_clk_get(&pdev->dev, "timeout"); + if (IS_ERR(pltfm_host->timeout_clk)) { + err = PTR_ERR(pltfm_host->timeout_clk); + dev_err(&pdev->dev, "failed to get timeout clk: %d\n", err); -+ goto free_pltfm; - } ++ goto err_bus_clk; ++ } + err = clk_prepare_enable(pltfm_host->timeout_clk); -+ if (err) -+ goto free_pltfm; - - err = mmc_of_parse(host->mmc); if (err) - goto err_clk; + goto err_bus_clk; ++ err = mmc_of_parse(host->mmc); ++ if (err) ++ goto err_timeout_clk; ++ sdhci_get_of_property(pdev); + sdhci_enable_v4_mode(host); priv->vendor_specific_area1 = sdhci_readl(host, DWCMSHC_P_VENDOR_AREA1) & DWCMSHC_AREA1_MASK; -@@ -1536,6 +1583,7 @@ err_rpm: +@@ -1491,7 +1538,7 @@ static int dwcmshc_probe(struct platform + if (pltfm_data->init) { + err = pltfm_data->init(&pdev->dev, host, priv); + if (err) +- goto err_bus_clk; ++ goto err_timeout_clk; + } + + #ifdef CONFIG_ACPI +@@ -1537,6 +1584,8 @@ err_setup_host: + err_rpm: + pm_runtime_disable(dev); pm_runtime_put_noidle(dev); ++err_timeout_clk: ++ clk_disable_unprepare(pltfm_host->timeout_clk); + err_bus_clk: + clk_disable_unprepare(priv->bus_clk); err_clk: +@@ -1574,6 +1623,7 @@ static void dwcmshc_remove(struct platfo + clk_disable_unprepare(pltfm_host->clk); -+ clk_disable_unprepare(pltfm_host->timeout_clk); clk_disable_unprepare(priv->bus_clk); ++ clk_disable_unprepare(pltfm_host->timeout_clk); clk_bulk_disable_unprepare(priv->num_other_clks, priv->other_clks); - free_pltfm: + sdhci_pltfm_free(pdev); + } --- a/drivers/mmc/host/sdhci-pltfm.c +++ b/drivers/mmc/host/sdhci-pltfm.c @@ -32,6 +32,14 @@ unsigned int sdhci_pltfm_clk_get_max_clo diff --git a/target/linux/bcm27xx/patches-6.12/950-0369-hwmon-Add-RP1-ADC-and-temperature-driver.patch b/target/linux/bcm27xx/patches-6.12/950-0369-hwmon-Add-RP1-ADC-and-temperature-driver.patch index f04d7b78a4d..305a24e271f 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0369-hwmon-Add-RP1-ADC-and-temperature-driver.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0369-hwmon-Add-RP1-ADC-and-temperature-driver.patch @@ -21,7 +21,7 @@ Signed-off-by: Jonathan Bell --- a/drivers/hwmon/Kconfig +++ b/drivers/hwmon/Kconfig -@@ -2551,6 +2551,13 @@ config SENSORS_INTEL_M10_BMC_HWMON +@@ -2554,6 +2554,13 @@ config SENSORS_INTEL_M10_BMC_HWMON sensors monitor various telemetry data of different components on the card, e.g. board temperature, FPGA core temperature/voltage/current. diff --git a/target/linux/bcm27xx/patches-6.12/950-0476-lan78xx-Read-initial-EEE-status-from-DT.patch b/target/linux/bcm27xx/patches-6.12/950-0476-lan78xx-Read-initial-EEE-status-from-DT.patch index 9dddcb304a6..e9f7ac8a1ef 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0476-lan78xx-Read-initial-EEE-status-from-DT.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0476-lan78xx-Read-initial-EEE-status-from-DT.patch @@ -15,7 +15,7 @@ Signed-off-by: Phil Elwell --- a/drivers/net/usb/lan78xx.c +++ b/drivers/net/usb/lan78xx.c -@@ -2438,7 +2438,26 @@ static int lan78xx_phy_init(struct lan78 +@@ -2601,7 +2601,26 @@ static int lan78xx_phy_init(struct lan78 mii_adv_to_linkmode_adv_t(fc, mii_adv); linkmode_or(phydev->advertising, fc, phydev->advertising); diff --git a/target/linux/bcm27xx/patches-6.12/950-0477-lan78xx-Return-tx_lpi_timer-even-if-disabled.patch b/target/linux/bcm27xx/patches-6.12/950-0477-lan78xx-Return-tx_lpi_timer-even-if-disabled.patch index 1a3efa35ef4..a6654a61718 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0477-lan78xx-Return-tx_lpi_timer-even-if-disabled.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0477-lan78xx-Return-tx_lpi_timer-even-if-disabled.patch @@ -13,7 +13,7 @@ Signed-off-by: Phil Elwell --- a/drivers/net/usb/lan78xx.c +++ b/drivers/net/usb/lan78xx.c -@@ -1702,14 +1702,11 @@ static int lan78xx_get_eee(struct net_de +@@ -1865,14 +1865,11 @@ static int lan78xx_get_eee(struct net_de if (ret < 0) goto exit; diff --git a/target/linux/bcm27xx/patches-6.12/950-0502-Bluetooth-hci_sync-Fix-crash-on-NULL-parent.patch b/target/linux/bcm27xx/patches-6.12/950-0502-Bluetooth-hci_sync-Fix-crash-on-NULL-parent.patch index 98c428e7a8e..e9fb21c99ab 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0502-Bluetooth-hci_sync-Fix-crash-on-NULL-parent.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0502-Bluetooth-hci_sync-Fix-crash-on-NULL-parent.patch @@ -15,7 +15,7 @@ Signed-off-by: Phil Elwell --- a/net/bluetooth/hci_sync.c +++ b/net/bluetooth/hci_sync.c -@@ -4961,7 +4961,8 @@ static const struct { +@@ -4985,7 +4985,8 @@ static const struct { */ static int hci_dev_setup_sync(struct hci_dev *hdev) { diff --git a/target/linux/bcm27xx/patches-6.12/950-0775-drm-v3d-Add-DRM_IOCTL_V3D_PERFMON_SET_GLOBAL.patch b/target/linux/bcm27xx/patches-6.12/950-0775-drm-v3d-Add-DRM_IOCTL_V3D_PERFMON_SET_GLOBAL.patch index c8b74d13b0a..fa5655318ff 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0775-drm-v3d-Add-DRM_IOCTL_V3D_PERFMON_SET_GLOBAL.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0775-drm-v3d-Add-DRM_IOCTL_V3D_PERFMON_SET_GLOBAL.patch @@ -145,7 +145,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/20241202140615.74802-1-chris static void --- a/drivers/gpu/drm/v3d/v3d_submit.c +++ b/drivers/gpu/drm/v3d/v3d_submit.c -@@ -1050,6 +1050,11 @@ v3d_submit_cl_ioctl(struct drm_device *d +@@ -1052,6 +1052,11 @@ v3d_submit_cl_ioctl(struct drm_device *d goto fail; if (args->perfmon_id) { @@ -157,7 +157,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/20241202140615.74802-1-chris render->base.perfmon = v3d_perfmon_find(v3d_priv, args->perfmon_id); -@@ -1265,6 +1270,11 @@ v3d_submit_csd_ioctl(struct drm_device * +@@ -1267,6 +1272,11 @@ v3d_submit_csd_ioctl(struct drm_device * goto fail; if (args->perfmon_id) { diff --git a/target/linux/generic/backport-6.12/200-01-v6.13-jiffies-Define-secs_to_jiffies.patch b/target/linux/generic/backport-6.12/200-01-v6.13-jiffies-Define-secs_to_jiffies.patch deleted file mode 100644 index ad9af1d4bb7..00000000000 --- a/target/linux/generic/backport-6.12/200-01-v6.13-jiffies-Define-secs_to_jiffies.patch +++ /dev/null @@ -1,60 +0,0 @@ -From b35108a51cf7bab58d7eace1267d7965978bcdb8 Mon Sep 17 00:00:00 2001 -From: Easwar Hariharan -Date: Wed, 30 Oct 2024 17:47:35 +0000 -Subject: [PATCH] jiffies: Define secs_to_jiffies() - -secs_to_jiffies() is defined in hci_event.c and cannot be reused by -other call sites. Hoist it into the core code to allow conversion of the -~1150 usages of msecs_to_jiffies() that either: - - - use a multiplier value of 1000 or equivalently MSEC_PER_SEC, or - - have timeouts that are denominated in seconds (i.e. end in 000) - -It's implemented as a macro to allow usage in static initializers. - -This will also allow conversion of yet more sites that use (sec * HZ) -directly, and improve their readability. - -Suggested-by: Michael Kelley -Signed-off-by: Easwar Hariharan -Signed-off-by: Thomas Gleixner -Reviewed-by: Luiz Augusto von Dentz -Link: https://lore.kernel.org/all/20241030-open-coded-timeouts-v3-1-9ba123facf88@linux.microsoft.com ---- - include/linux/jiffies.h | 13 +++++++++++++ - net/bluetooth/hci_event.c | 2 -- - 2 files changed, 13 insertions(+), 2 deletions(-) - ---- a/include/linux/jiffies.h -+++ b/include/linux/jiffies.h -@@ -526,6 +526,19 @@ static __always_inline unsigned long mse - } - } - -+/** -+ * secs_to_jiffies: - convert seconds to jiffies -+ * @_secs: time in seconds -+ * -+ * Conversion is done by simple multiplication with HZ -+ * -+ * secs_to_jiffies() is defined as a macro rather than a static inline -+ * function so it can be used in static initializers. -+ * -+ * Return: jiffies value -+ */ -+#define secs_to_jiffies(_secs) ((_secs) * HZ) -+ - extern unsigned long __usecs_to_jiffies(const unsigned int u); - #if !(USEC_PER_SEC % HZ) - static inline unsigned long _usecs_to_jiffies(const unsigned int u) ---- a/net/bluetooth/hci_event.c -+++ b/net/bluetooth/hci_event.c -@@ -42,8 +42,6 @@ - #define ZERO_KEY "\x00\x00\x00\x00\x00\x00\x00\x00" \ - "\x00\x00\x00\x00\x00\x00\x00\x00" - --#define secs_to_jiffies(_secs) msecs_to_jiffies((_secs) * 1000) -- - /* Handle HCI Event packets */ - - static void *hci_ev_skb_pull(struct hci_dev *hdev, struct sk_buff *skb, diff --git a/target/linux/generic/backport-6.12/200-02-v6.14-jiffies-Cast-to-unsigned-long-in-secs_to_jiffies-con.patch b/target/linux/generic/backport-6.12/200-02-v6.14-jiffies-Cast-to-unsigned-long-in-secs_to_jiffies-con.patch deleted file mode 100644 index cddd558dee7..00000000000 --- a/target/linux/generic/backport-6.12/200-02-v6.14-jiffies-Cast-to-unsigned-long-in-secs_to_jiffies-con.patch +++ /dev/null @@ -1,35 +0,0 @@ -From bb2784d9ab49587ba4fbff37a319fff2924db289 Mon Sep 17 00:00:00 2001 -From: Easwar Hariharan -Date: Thu, 30 Jan 2025 19:26:58 +0000 -Subject: [PATCH] jiffies: Cast to unsigned long in secs_to_jiffies() - conversion - -While converting users of msecs_to_jiffies(), lkp reported that some range -checks would always be true because of the mismatch between the implied int -value of secs_to_jiffies() vs the unsigned long return value of the -msecs_to_jiffies() calls it was replacing. - -Fix this by casting the secs_to_jiffies() input value to unsigned long. - -Fixes: b35108a51cf7ba ("jiffies: Define secs_to_jiffies()") -Reported-by: kernel test robot -Signed-off-by: Easwar Hariharan -Signed-off-by: Thomas Gleixner -Cc: stable@vger.kernel.org -Link: https://lore.kernel.org/all/20250130192701.99626-1-eahariha@linux.microsoft.com -Closes: https://lore.kernel.org/oe-kbuild-all/202501301334.NB6NszQR-lkp@intel.com/ ---- - include/linux/jiffies.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - ---- a/include/linux/jiffies.h -+++ b/include/linux/jiffies.h -@@ -537,7 +537,7 @@ static __always_inline unsigned long mse - * - * Return: jiffies value - */ --#define secs_to_jiffies(_secs) ((_secs) * HZ) -+#define secs_to_jiffies(_secs) (unsigned long)((_secs) * HZ) - - extern unsigned long __usecs_to_jiffies(const unsigned int u); - #if !(USEC_PER_SEC % HZ) diff --git a/target/linux/generic/backport-6.12/700-02-v7.0-net-sched-sch_cake-Factor-out-config-variables-into-.patch b/target/linux/generic/backport-6.12/700-02-v7.0-net-sched-sch_cake-Factor-out-config-variables-into-.patch index 0ec012c97d8..f85cc0d7d42 100644 --- a/target/linux/generic/backport-6.12/700-02-v7.0-net-sched-sch_cake-Factor-out-config-variables-into-.patch +++ b/target/linux/generic/backport-6.12/700-02-v7.0-net-sched-sch_cake-Factor-out-config-variables-into-.patch @@ -116,9 +116,9 @@ Signed-off-by: Paolo Abeni + if (qd->min_netlen > len) + qd->min_netlen = len; - len += q->rate_overhead; + len = max((s32)len + q->rate_overhead, (s32)q->rate_mpu); -@@ -1382,10 +1386,10 @@ static u32 cake_calc_overhead(struct cak +@@ -1379,10 +1383,10 @@ static u32 cake_calc_overhead(struct cak len += (len + 63) / 64; } @@ -133,7 +133,7 @@ Signed-off-by: Paolo Abeni return len; } -@@ -1587,7 +1591,7 @@ static unsigned int cake_drop(struct Qdi +@@ -1584,7 +1588,7 @@ static unsigned int cake_drop(struct Qdi b->tin_dropped++; sch->qstats.drops++; @@ -142,7 +142,7 @@ Signed-off-by: Paolo Abeni cake_advance_shaper(q, b, skb, now, true); __qdisc_drop(skb, to_free); -@@ -1657,7 +1661,8 @@ static u8 cake_handle_diffserv(struct sk +@@ -1654,7 +1658,8 @@ static u8 cake_handle_diffserv(struct sk static struct cake_tin_data *cake_select_tin(struct Qdisc *sch, struct sk_buff *skb) { @@ -152,7 +152,7 @@ Signed-off-by: Paolo Abeni u32 tin, mark; bool wash; u8 dscp; -@@ -1674,24 +1679,24 @@ static struct cake_tin_data *cake_select +@@ -1671,24 +1676,24 @@ static struct cake_tin_data *cake_select if (q->tin_mode == CAKE_DIFFSERV_BESTEFFORT) tin = 0; @@ -184,7 +184,7 @@ Signed-off-by: Paolo Abeni } static u32 cake_classify(struct Qdisc *sch, struct cake_tin_data **t, -@@ -1747,7 +1752,7 @@ static s32 cake_enqueue(struct sk_buff * +@@ -1744,7 +1749,7 @@ static s32 cake_enqueue(struct sk_buff * bool same_flow = false; /* choose flow to insert into */ @@ -193,7 +193,7 @@ Signed-off-by: Paolo Abeni if (idx == 0) { if (ret & __NET_XMIT_BYPASS) qdisc_qstats_drop(sch); -@@ -1782,7 +1787,7 @@ static s32 cake_enqueue(struct sk_buff * +@@ -1779,7 +1784,7 @@ static s32 cake_enqueue(struct sk_buff * if (unlikely(len > b->max_skblen)) b->max_skblen = len; @@ -202,7 +202,7 @@ Signed-off-by: Paolo Abeni struct sk_buff *segs, *nskb; netdev_features_t features = netif_skb_features(skb); unsigned int slen = 0, numsegs = 0; -@@ -1823,7 +1828,7 @@ static s32 cake_enqueue(struct sk_buff * +@@ -1820,7 +1825,7 @@ static s32 cake_enqueue(struct sk_buff * get_cobalt_cb(skb)->adjusted_len = cake_overhead(q, skb); flow_queue_add(flow, skb); @@ -211,7 +211,7 @@ Signed-off-by: Paolo Abeni ack = cake_ack_filter(q, flow); if (ack) { -@@ -1832,7 +1837,7 @@ static s32 cake_enqueue(struct sk_buff * +@@ -1829,7 +1834,7 @@ static s32 cake_enqueue(struct sk_buff * ack_pkt_len = qdisc_pkt_len(ack); b->bytes += ack_pkt_len; q->buffer_used += skb->truesize - ack->truesize; @@ -220,7 +220,7 @@ Signed-off-by: Paolo Abeni cake_advance_shaper(q, b, ack, now, true); qdisc_tree_reduce_backlog(sch, 1, ack_pkt_len); -@@ -1855,7 +1860,7 @@ static s32 cake_enqueue(struct sk_buff * +@@ -1852,7 +1857,7 @@ static s32 cake_enqueue(struct sk_buff * cake_heapify_up(q, b->overflow_idx[idx]); /* incoming bandwidth capacity estimate */ @@ -229,7 +229,7 @@ Signed-off-by: Paolo Abeni u64 packet_interval = \ ktime_to_ns(ktime_sub(now, q->last_packet_time)); -@@ -1887,7 +1892,7 @@ static s32 cake_enqueue(struct sk_buff * +@@ -1884,7 +1889,7 @@ static s32 cake_enqueue(struct sk_buff * if (ktime_after(now, ktime_add_ms(q->last_reconfig_time, 250))) { @@ -238,7 +238,7 @@ Signed-off-by: Paolo Abeni cake_reconfigure(sch); } } -@@ -1907,7 +1912,7 @@ static s32 cake_enqueue(struct sk_buff * +@@ -1904,7 +1909,7 @@ static s32 cake_enqueue(struct sk_buff * flow->set = CAKE_SET_SPARSE; b->sparse_flow_count++; @@ -247,7 +247,7 @@ Signed-off-by: Paolo Abeni } else if (flow->set == CAKE_SET_SPARSE_WAIT) { /* this flow was empty, accounted as a sparse flow, but actually * in the bulk rotation. -@@ -1916,8 +1921,8 @@ static s32 cake_enqueue(struct sk_buff * +@@ -1913,8 +1918,8 @@ static s32 cake_enqueue(struct sk_buff * b->sparse_flow_count--; b->bulk_flow_count++; @@ -258,7 +258,7 @@ Signed-off-by: Paolo Abeni } if (q->buffer_used > q->buffer_max_used) -@@ -2103,8 +2108,8 @@ retry: +@@ -2100,8 +2105,8 @@ retry: b->sparse_flow_count--; b->bulk_flow_count++; @@ -269,7 +269,7 @@ Signed-off-by: Paolo Abeni flow->set = CAKE_SET_BULK; } else { -@@ -2116,7 +2121,7 @@ retry: +@@ -2113,7 +2118,7 @@ retry: } } @@ -278,7 +278,7 @@ Signed-off-by: Paolo Abeni list_move_tail(&flow->flowchain, &b->old_flows); goto retry; -@@ -2140,8 +2145,8 @@ retry: +@@ -2137,8 +2142,8 @@ retry: if (flow->set == CAKE_SET_BULK) { b->bulk_flow_count--; @@ -289,7 +289,7 @@ Signed-off-by: Paolo Abeni b->decaying_flow_count++; } else if (flow->set == CAKE_SET_SPARSE || -@@ -2159,8 +2164,8 @@ retry: +@@ -2156,8 +2161,8 @@ retry: else if (flow->set == CAKE_SET_BULK) { b->bulk_flow_count--; @@ -300,7 +300,7 @@ Signed-off-by: Paolo Abeni } else b->decaying_flow_count--; -@@ -2172,13 +2177,13 @@ retry: +@@ -2169,13 +2174,13 @@ retry: /* Last packet in queue may be marked, shouldn't be dropped */ if (!cobalt_should_drop(&flow->cvars, &b->cparams, now, skb, (b->bulk_flow_count * @@ -316,7 +316,7 @@ Signed-off-by: Paolo Abeni len = cake_advance_shaper(q, b, skb, now, true); flow->deficit -= len; -@@ -2189,7 +2194,7 @@ retry: +@@ -2186,7 +2191,7 @@ retry: qdisc_tree_reduce_backlog(sch, 1, qdisc_pkt_len(skb)); qdisc_qstats_drop(sch); kfree_skb(skb); @@ -325,7 +325,7 @@ Signed-off-by: Paolo Abeni goto retry; } -@@ -2312,7 +2317,7 @@ static int cake_config_besteffort(struct +@@ -2309,7 +2314,7 @@ static int cake_config_besteffort(struct struct cake_sched_data *q = qdisc_priv(sch); struct cake_tin_data *b = &q->tins[0]; u32 mtu = psched_mtu(qdisc_dev(sch)); @@ -334,7 +334,7 @@ Signed-off-by: Paolo Abeni q->tin_cnt = 1; -@@ -2320,7 +2325,7 @@ static int cake_config_besteffort(struct +@@ -2317,7 +2322,7 @@ static int cake_config_besteffort(struct q->tin_order = normal_order; cake_set_rate(b, rate, mtu, @@ -343,7 +343,7 @@ Signed-off-by: Paolo Abeni b->tin_quantum = 65535; return 0; -@@ -2331,7 +2336,7 @@ static int cake_config_precedence(struct +@@ -2328,7 +2333,7 @@ static int cake_config_precedence(struct /* convert high-level (user visible) parameters into internal format */ struct cake_sched_data *q = qdisc_priv(sch); u32 mtu = psched_mtu(qdisc_dev(sch)); @@ -352,7 +352,7 @@ Signed-off-by: Paolo Abeni u32 quantum = 256; u32 i; -@@ -2342,8 +2347,8 @@ static int cake_config_precedence(struct +@@ -2339,8 +2344,8 @@ static int cake_config_precedence(struct for (i = 0; i < q->tin_cnt; i++) { struct cake_tin_data *b = &q->tins[i]; @@ -363,7 +363,7 @@ Signed-off-by: Paolo Abeni b->tin_quantum = max_t(u16, 1U, quantum); -@@ -2420,7 +2425,7 @@ static int cake_config_diffserv8(struct +@@ -2417,7 +2422,7 @@ static int cake_config_diffserv8(struct struct cake_sched_data *q = qdisc_priv(sch); u32 mtu = psched_mtu(qdisc_dev(sch)); @@ -372,7 +372,7 @@ Signed-off-by: Paolo Abeni u32 quantum = 256; u32 i; -@@ -2434,8 +2439,8 @@ static int cake_config_diffserv8(struct +@@ -2431,8 +2436,8 @@ static int cake_config_diffserv8(struct for (i = 0; i < q->tin_cnt; i++) { struct cake_tin_data *b = &q->tins[i]; @@ -383,7 +383,7 @@ Signed-off-by: Paolo Abeni b->tin_quantum = max_t(u16, 1U, quantum); -@@ -2464,7 +2469,7 @@ static int cake_config_diffserv4(struct +@@ -2461,7 +2466,7 @@ static int cake_config_diffserv4(struct struct cake_sched_data *q = qdisc_priv(sch); u32 mtu = psched_mtu(qdisc_dev(sch)); @@ -392,7 +392,7 @@ Signed-off-by: Paolo Abeni u32 quantum = 1024; q->tin_cnt = 4; -@@ -2475,13 +2480,13 @@ static int cake_config_diffserv4(struct +@@ -2472,13 +2477,13 @@ static int cake_config_diffserv4(struct /* class characteristics */ cake_set_rate(&q->tins[0], rate, mtu, @@ -410,7 +410,7 @@ Signed-off-by: Paolo Abeni /* bandwidth-sharing weights */ q->tins[0].tin_quantum = quantum; -@@ -2501,7 +2506,7 @@ static int cake_config_diffserv3(struct +@@ -2498,7 +2503,7 @@ static int cake_config_diffserv3(struct */ struct cake_sched_data *q = qdisc_priv(sch); u32 mtu = psched_mtu(qdisc_dev(sch)); @@ -419,7 +419,7 @@ Signed-off-by: Paolo Abeni u32 quantum = 1024; q->tin_cnt = 3; -@@ -2512,11 +2517,11 @@ static int cake_config_diffserv3(struct +@@ -2509,11 +2514,11 @@ static int cake_config_diffserv3(struct /* class characteristics */ cake_set_rate(&q->tins[0], rate, mtu, @@ -434,7 +434,7 @@ Signed-off-by: Paolo Abeni /* bandwidth-sharing weights */ q->tins[0].tin_quantum = quantum; -@@ -2528,7 +2533,8 @@ static int cake_config_diffserv3(struct +@@ -2525,7 +2530,8 @@ static int cake_config_diffserv3(struct static void cake_reconfigure(struct Qdisc *sch) { @@ -444,7 +444,7 @@ Signed-off-by: Paolo Abeni int c, ft; switch (q->tin_mode) { -@@ -2554,36 +2560,37 @@ static void cake_reconfigure(struct Qdis +@@ -2551,36 +2557,37 @@ static void cake_reconfigure(struct Qdis break; } @@ -493,7 +493,7 @@ Signed-off-by: Paolo Abeni struct nlattr *tb[TCA_CAKE_MAX + 1]; u16 rate_flags; u8 flow_mode; -@@ -2637,19 +2644,19 @@ static int cake_change(struct Qdisc *sch +@@ -2634,19 +2641,19 @@ static int cake_change(struct Qdisc *sch nla_get_s32(tb[TCA_CAKE_OVERHEAD])); rate_flags |= CAKE_FLAG_OVERHEAD; @@ -521,7 +521,7 @@ Signed-off-by: Paolo Abeni } if (tb[TCA_CAKE_MPU]) -@@ -2705,7 +2712,7 @@ static int cake_change(struct Qdisc *sch +@@ -2702,7 +2709,7 @@ static int cake_change(struct Qdisc *sch WRITE_ONCE(q->rate_flags, rate_flags); WRITE_ONCE(q->flow_mode, flow_mode); @@ -530,7 +530,7 @@ Signed-off-by: Paolo Abeni sch_tree_lock(sch); cake_reconfigure(sch); sch_tree_unlock(sch); -@@ -2721,14 +2728,20 @@ static void cake_destroy(struct Qdisc *s +@@ -2718,14 +2725,20 @@ static void cake_destroy(struct Qdisc *s qdisc_watchdog_cancel(&q->watchdog); tcf_block_put(q->block); kvfree(q->tins); @@ -552,7 +552,7 @@ Signed-off-by: Paolo Abeni sch->limit = 10240; q->tin_mode = CAKE_DIFFSERV_DIFFSERV3; q->flow_mode = CAKE_FLOW_TRIPLE; -@@ -2740,33 +2753,36 @@ static int cake_init(struct Qdisc *sch, +@@ -2737,33 +2750,36 @@ static int cake_init(struct Qdisc *sch, * for 5 to 10% of interval */ q->rate_flags |= CAKE_FLAG_SPLIT_GSO; @@ -600,7 +600,7 @@ Signed-off-by: Paolo Abeni INIT_LIST_HEAD(&b->new_flows); INIT_LIST_HEAD(&b->old_flows); -@@ -2782,22 +2798,27 @@ static int cake_init(struct Qdisc *sch, +@@ -2779,22 +2795,27 @@ static int cake_init(struct Qdisc *sch, INIT_LIST_HEAD(&flow->flowchain); cobalt_vars_init(&flow->cvars); diff --git a/target/linux/generic/backport-6.12/700-03-v7.0-net-sched-sch_cake-Add-cake_mq-qdisc-for-using-cake-.patch b/target/linux/generic/backport-6.12/700-03-v7.0-net-sched-sch_cake-Add-cake_mq-qdisc-for-using-cake-.patch index 9f64e93c1ed..e392a2bbd8b 100644 --- a/target/linux/generic/backport-6.12/700-03-v7.0-net-sched-sch_cake-Add-cake_mq-qdisc-for-using-cake-.patch +++ b/target/linux/generic/backport-6.12/700-03-v7.0-net-sched-sch_cake-Add-cake_mq-qdisc-for-using-cake-.patch @@ -32,7 +32,7 @@ Signed-off-by: Paolo Abeni #include #include #include -@@ -3155,14 +3156,89 @@ static struct Qdisc_ops cake_qdisc_ops _ +@@ -3152,14 +3153,89 @@ static struct Qdisc_ops cake_qdisc_ops _ }; MODULE_ALIAS_NET_SCH("cake"); @@ -123,7 +123,7 @@ Signed-off-by: Paolo Abeni } module_init(cake_module_init) -@@ -3170,3 +3246,4 @@ module_exit(cake_module_exit) +@@ -3167,3 +3243,4 @@ module_exit(cake_module_exit) MODULE_AUTHOR("Jonathan Morton"); MODULE_LICENSE("Dual BSD/GPL"); MODULE_DESCRIPTION("The CAKE shaper."); diff --git a/target/linux/generic/backport-6.12/700-04-v7.0-net-sched-sch_cake-Share-config-across-cake_mq-sub-q.patch b/target/linux/generic/backport-6.12/700-04-v7.0-net-sched-sch_cake-Share-config-across-cake_mq-sub-q.patch index b9f58e3fc7a..c8c73df9996 100644 --- a/target/linux/generic/backport-6.12/700-04-v7.0-net-sched-sch_cake-Share-config-across-cake_mq-sub-q.patch +++ b/target/linux/generic/backport-6.12/700-04-v7.0-net-sched-sch_cake-Share-config-across-cake_mq-sub-q.patch @@ -27,7 +27,7 @@ Signed-off-by: Paolo Abeni }; struct cake_sched_data { -@@ -2587,14 +2588,12 @@ static void cake_reconfigure(struct Qdis +@@ -2584,14 +2585,12 @@ static void cake_reconfigure(struct Qdis q->buffer_config_limit)); } @@ -46,7 +46,7 @@ Signed-off-by: Paolo Abeni int err; err = nla_parse_nested_deprecated(tb, TCA_CAKE_MAX, opt, cake_policy, -@@ -2602,7 +2601,6 @@ static int cake_change(struct Qdisc *sch +@@ -2599,7 +2598,6 @@ static int cake_change(struct Qdisc *sch if (err < 0) return err; @@ -54,7 +54,7 @@ Signed-off-by: Paolo Abeni if (tb[TCA_CAKE_NAT]) { #if IS_ENABLED(CONFIG_NF_CONNTRACK) flow_mode &= ~CAKE_FLOW_NAT_FLAG; -@@ -2615,6 +2613,19 @@ static int cake_change(struct Qdisc *sch +@@ -2612,6 +2610,19 @@ static int cake_change(struct Qdisc *sch #endif } @@ -74,7 +74,7 @@ Signed-off-by: Paolo Abeni if (tb[TCA_CAKE_BASE_RATE64]) WRITE_ONCE(q->rate_bps, nla_get_u64(tb[TCA_CAKE_BASE_RATE64])); -@@ -2623,7 +2634,6 @@ static int cake_change(struct Qdisc *sch +@@ -2620,7 +2631,6 @@ static int cake_change(struct Qdisc *sch WRITE_ONCE(q->tin_mode, nla_get_u32(tb[TCA_CAKE_DIFFSERV_MODE])); @@ -82,7 +82,7 @@ Signed-off-by: Paolo Abeni if (tb[TCA_CAKE_WASH]) { if (!!nla_get_u32(tb[TCA_CAKE_WASH])) rate_flags |= CAKE_FLAG_WASH; -@@ -2644,20 +2654,12 @@ static int cake_change(struct Qdisc *sch +@@ -2641,20 +2651,12 @@ static int cake_change(struct Qdisc *sch WRITE_ONCE(q->rate_overhead, nla_get_s32(tb[TCA_CAKE_OVERHEAD])); rate_flags |= CAKE_FLAG_OVERHEAD; @@ -105,7 +105,7 @@ Signed-off-by: Paolo Abeni } if (tb[TCA_CAKE_MPU]) -@@ -2676,13 +2678,6 @@ static int cake_change(struct Qdisc *sch +@@ -2673,13 +2675,6 @@ static int cake_change(struct Qdisc *sch WRITE_ONCE(q->target, max(target, 1U)); } @@ -119,7 +119,7 @@ Signed-off-by: Paolo Abeni if (tb[TCA_CAKE_INGRESS]) { if (!!nla_get_u32(tb[TCA_CAKE_INGRESS])) rate_flags |= CAKE_FLAG_INGRESS; -@@ -2713,6 +2708,34 @@ static int cake_change(struct Qdisc *sch +@@ -2710,6 +2705,34 @@ static int cake_change(struct Qdisc *sch WRITE_ONCE(q->rate_flags, rate_flags); WRITE_ONCE(q->flow_mode, flow_mode); @@ -154,7 +154,7 @@ Signed-off-by: Paolo Abeni if (qd->tins) { sch_tree_lock(sch); cake_reconfigure(sch); -@@ -2729,7 +2752,23 @@ static void cake_destroy(struct Qdisc *s +@@ -2726,7 +2749,23 @@ static void cake_destroy(struct Qdisc *s qdisc_watchdog_cancel(&q->watchdog); tcf_block_put(q->block); kvfree(q->tins); @@ -179,7 +179,7 @@ Signed-off-by: Paolo Abeni } static int cake_init(struct Qdisc *sch, struct nlattr *opt, -@@ -2743,17 +2782,9 @@ static int cake_init(struct Qdisc *sch, +@@ -2740,17 +2779,9 @@ static int cake_init(struct Qdisc *sch, if (!q) return -ENOMEM; @@ -199,7 +199,7 @@ Signed-off-by: Paolo Abeni qd->cur_tin = 0; qd->cur_flow = 0; qd->config = q; -@@ -2816,10 +2847,21 @@ err: +@@ -2813,10 +2844,21 @@ err: return err; } @@ -222,7 +222,7 @@ Signed-off-by: Paolo Abeni struct nlattr *opts; u16 rate_flags; u8 flow_mode; -@@ -2895,6 +2937,13 @@ nla_put_failure: +@@ -2892,6 +2934,13 @@ nla_put_failure: return -1; } @@ -236,7 +236,7 @@ Signed-off-by: Paolo Abeni static int cake_dump_stats(struct Qdisc *sch, struct gnet_dump *d) { struct nlattr *stats = nla_nest_start_noflag(d->skb, TCA_STATS_APP); -@@ -3158,6 +3207,7 @@ MODULE_ALIAS_NET_SCH("cake"); +@@ -3155,6 +3204,7 @@ MODULE_ALIAS_NET_SCH("cake"); struct cake_mq_sched { struct mq_sched mq_priv; /* must be first */ @@ -244,7 +244,7 @@ Signed-off-by: Paolo Abeni }; static void cake_mq_destroy(struct Qdisc *sch) -@@ -3168,25 +3218,68 @@ static void cake_mq_destroy(struct Qdisc +@@ -3165,25 +3215,68 @@ static void cake_mq_destroy(struct Qdisc static int cake_mq_init(struct Qdisc *sch, struct nlattr *opt, struct netlink_ext_ack *extack) { diff --git a/target/linux/generic/backport-6.12/700-05-v7.0-net-sched-sch_cake-share-shaper-state-across-sub-ins.patch b/target/linux/generic/backport-6.12/700-05-v7.0-net-sched-sch_cake-share-shaper-state-across-sub-ins.patch index 1ccfd455d4e..459671c77f3 100644 --- a/target/linux/generic/backport-6.12/700-05-v7.0-net-sched-sch_cake-share-shaper-state-across-sub-ins.patch +++ b/target/linux/generic/backport-6.12/700-05-v7.0-net-sched-sch_cake-share-shaper-state-across-sub-ins.patch @@ -88,7 +88,7 @@ Signed-off-by: Paolo Abeni /* http://en.wikipedia.org/wiki/Methods_of_computing_square_roots * new_invsqrt = (invsqrt / 2) * (3 - count * invsqrt^2) * -@@ -2003,6 +2011,40 @@ static struct sk_buff *cake_dequeue(stru +@@ -2000,6 +2008,40 @@ static struct sk_buff *cake_dequeue(stru u64 delay; u32 len; @@ -129,7 +129,7 @@ Signed-off-by: Paolo Abeni begin: if (!sch->q.qlen) return NULL; -@@ -2202,6 +2244,7 @@ retry: +@@ -2199,6 +2241,7 @@ retry: b->tin_ecn_mark += !!flow->cvars.ecn_marked; qdisc_bstats_update(sch, skb); @@ -137,7 +137,7 @@ Signed-off-by: Paolo Abeni /* collect delay stats */ delay = ktime_to_ns(ktime_sub(now, cobalt_get_enqueue_time(skb))); -@@ -2302,6 +2345,9 @@ static void cake_set_rate(struct cake_ti +@@ -2299,6 +2342,9 @@ static void cake_set_rate(struct cake_ti b->tin_rate_ns = rate_ns; b->tin_rate_shft = rate_shft; @@ -147,7 +147,7 @@ Signed-off-by: Paolo Abeni byte_target_ns = (byte_target * rate_ns) >> rate_shft; WRITE_ONCE(b->cparams.target, -@@ -2769,6 +2815,7 @@ static void cake_config_init(struct cake +@@ -2766,6 +2812,7 @@ static void cake_config_init(struct cake */ q->rate_flags |= CAKE_FLAG_SPLIT_GSO; q->is_shared = is_shared; @@ -155,7 +155,7 @@ Signed-off-by: Paolo Abeni } static int cake_init(struct Qdisc *sch, struct nlattr *opt, -@@ -2840,6 +2887,9 @@ static int cake_init(struct Qdisc *sch, +@@ -2837,6 +2884,9 @@ static int cake_init(struct Qdisc *sch, qd->avg_peak_bandwidth = q->rate_bps; qd->min_netlen = ~0; qd->min_adjlen = ~0; @@ -165,7 +165,7 @@ Signed-off-by: Paolo Abeni return 0; err: kvfree(qd->config); -@@ -2972,6 +3022,7 @@ static int cake_dump_stats(struct Qdisc +@@ -2969,6 +3019,7 @@ static int cake_dump_stats(struct Qdisc PUT_STAT_U32(MAX_ADJLEN, q->max_adjlen); PUT_STAT_U32(MIN_NETLEN, q->min_netlen); PUT_STAT_U32(MIN_ADJLEN, q->min_adjlen); diff --git a/target/linux/generic/backport-6.12/700-07-v7.0-net-sched-cake-avoid-separate-allocation-of-struct-c.patch b/target/linux/generic/backport-6.12/700-07-v7.0-net-sched-cake-avoid-separate-allocation-of-struct-c.patch index 6ec8f8d80f2..6d8e8b4fbcf 100644 --- a/target/linux/generic/backport-6.12/700-07-v7.0-net-sched-cake-avoid-separate-allocation-of-struct-c.patch +++ b/target/linux/generic/backport-6.12/700-07-v7.0-net-sched-cake-avoid-separate-allocation-of-struct-c.patch @@ -33,7 +33,7 @@ Signed-off-by: Jakub Kicinski struct cake_heap_entry overflow_heap[CAKE_QUEUES * CAKE_MAX_TINS]; -@@ -2798,8 +2799,6 @@ static void cake_destroy(struct Qdisc *s +@@ -2795,8 +2796,6 @@ static void cake_destroy(struct Qdisc *s qdisc_watchdog_cancel(&q->watchdog); tcf_block_put(q->block); kvfree(q->tins); @@ -42,7 +42,7 @@ Signed-off-by: Jakub Kicinski } static void cake_config_init(struct cake_sched_config *q, bool is_shared) -@@ -2822,13 +2821,9 @@ static int cake_init(struct Qdisc *sch, +@@ -2819,13 +2818,9 @@ static int cake_init(struct Qdisc *sch, struct netlink_ext_ack *extack) { struct cake_sched_data *qd = qdisc_priv(sch); @@ -57,7 +57,7 @@ Signed-off-by: Jakub Kicinski cake_config_init(q, false); sch->limit = 10240; -@@ -2840,14 +2835,13 @@ static int cake_init(struct Qdisc *sch, +@@ -2837,14 +2832,13 @@ static int cake_init(struct Qdisc *sch, if (opt) { err = cake_change(sch, opt, extack); @@ -74,7 +74,7 @@ Signed-off-by: Jakub Kicinski quantum_div[0] = ~0; for (i = 1; i <= CAKE_QUEUES; i++) -@@ -2855,10 +2849,8 @@ static int cake_init(struct Qdisc *sch, +@@ -2852,10 +2846,8 @@ static int cake_init(struct Qdisc *sch, qd->tins = kvcalloc(CAKE_MAX_TINS, sizeof(struct cake_tin_data), GFP_KERNEL); @@ -87,7 +87,7 @@ Signed-off-by: Jakub Kicinski for (i = 0; i < CAKE_MAX_TINS; i++) { struct cake_tin_data *b = qd->tins + i; -@@ -2891,22 +2883,13 @@ static int cake_init(struct Qdisc *sch, +@@ -2888,22 +2880,13 @@ static int cake_init(struct Qdisc *sch, qd->last_checked_active = 0; return 0; diff --git a/target/linux/generic/backport-6.12/701-01-v7.0-net-sched-sch_cake-avoid-sync-overhead-when-unlimite.patch b/target/linux/generic/backport-6.12/701-01-v7.0-net-sched-sch_cake-avoid-sync-overhead-when-unlimite.patch index 60a003c1de4..57ed54d6ad8 100644 --- a/target/linux/generic/backport-6.12/701-01-v7.0-net-sched-sch_cake-avoid-sync-overhead-when-unlimite.patch +++ b/target/linux/generic/backport-6.12/701-01-v7.0-net-sched-sch_cake-avoid-sync-overhead-when-unlimite.patch @@ -20,7 +20,7 @@ Signed-off-by: Jakub Kicinski --- a/net/sched/sch_cake.c +++ b/net/sched/sch_cake.c -@@ -2012,7 +2012,8 @@ static struct sk_buff *cake_dequeue(stru +@@ -2009,7 +2009,8 @@ static struct sk_buff *cake_dequeue(stru u64 delay; u32 len; diff --git a/target/linux/generic/backport-6.12/701-02-v7.0-net-sched-sch_cake-fixup-cake_mq-rate-adjustment-for.patch b/target/linux/generic/backport-6.12/701-02-v7.0-net-sched-sch_cake-fixup-cake_mq-rate-adjustment-for.patch index e7aa6688932..3661caabb5e 100644 --- a/target/linux/generic/backport-6.12/701-02-v7.0-net-sched-sch_cake-fixup-cake_mq-rate-adjustment-for.patch +++ b/target/linux/generic/backport-6.12/701-02-v7.0-net-sched-sch_cake-fixup-cake_mq-rate-adjustment-for.patch @@ -34,7 +34,7 @@ Signed-off-by: Jakub Kicinski /* http://en.wikipedia.org/wiki/Methods_of_computing_square_roots * new_invsqrt = (invsqrt / 2) * (3 - count * invsqrt^2) * -@@ -2039,12 +2039,9 @@ static struct sk_buff *cake_dequeue(stru +@@ -2036,12 +2036,9 @@ static struct sk_buff *cake_dequeue(stru if (num_active_qs > 1) new_rate = div64_u64(q->config->rate_bps, num_active_qs); @@ -48,7 +48,7 @@ Signed-off-by: Jakub Kicinski } begin: -@@ -2362,12 +2359,10 @@ static void cake_set_rate(struct cake_ti +@@ -2359,12 +2356,10 @@ static void cake_set_rate(struct cake_ti b->cparams.p_dec = 1 << 20; /* 1/4096 */ } @@ -62,7 +62,7 @@ Signed-off-by: Jakub Kicinski q->tin_cnt = 1; -@@ -2381,12 +2376,10 @@ static int cake_config_besteffort(struct +@@ -2378,12 +2373,10 @@ static int cake_config_besteffort(struct return 0; } @@ -76,7 +76,7 @@ Signed-off-by: Jakub Kicinski u32 quantum = 256; u32 i; -@@ -2457,7 +2450,7 @@ static int cake_config_precedence(struct +@@ -2454,7 +2447,7 @@ static int cake_config_precedence(struct * Total 12 traffic classes. */ @@ -85,7 +85,7 @@ Signed-off-by: Jakub Kicinski { /* Pruned list of traffic classes for typical applications: * -@@ -2474,8 +2467,6 @@ static int cake_config_diffserv8(struct +@@ -2471,8 +2464,6 @@ static int cake_config_diffserv8(struct */ struct cake_sched_data *q = qdisc_priv(sch); @@ -94,7 +94,7 @@ Signed-off-by: Jakub Kicinski u32 quantum = 256; u32 i; -@@ -2505,7 +2496,7 @@ static int cake_config_diffserv8(struct +@@ -2502,7 +2493,7 @@ static int cake_config_diffserv8(struct return 0; } @@ -103,7 +103,7 @@ Signed-off-by: Jakub Kicinski { /* Further pruned list of traffic classes for four-class system: * -@@ -2518,8 +2509,6 @@ static int cake_config_diffserv4(struct +@@ -2515,8 +2506,6 @@ static int cake_config_diffserv4(struct */ struct cake_sched_data *q = qdisc_priv(sch); @@ -112,7 +112,7 @@ Signed-off-by: Jakub Kicinski u32 quantum = 1024; q->tin_cnt = 4; -@@ -2547,7 +2536,7 @@ static int cake_config_diffserv4(struct +@@ -2544,7 +2533,7 @@ static int cake_config_diffserv4(struct return 0; } @@ -121,7 +121,7 @@ Signed-off-by: Jakub Kicinski { /* Simplified Diffserv structure with 3 tins. * Latency Sensitive (CS7, CS6, EF, VA, TOS4) -@@ -2555,8 +2544,6 @@ static int cake_config_diffserv3(struct +@@ -2552,8 +2541,6 @@ static int cake_config_diffserv3(struct * Low Priority (LE, CS1) */ struct cake_sched_data *q = qdisc_priv(sch); @@ -130,7 +130,7 @@ Signed-off-by: Jakub Kicinski u32 quantum = 1024; q->tin_cnt = 3; -@@ -2581,32 +2568,33 @@ static int cake_config_diffserv3(struct +@@ -2578,32 +2565,33 @@ static int cake_config_diffserv3(struct return 0; } @@ -170,7 +170,7 @@ Signed-off-by: Jakub Kicinski break; } -@@ -2617,6 +2605,14 @@ static void cake_reconfigure(struct Qdis +@@ -2614,6 +2602,14 @@ static void cake_reconfigure(struct Qdis qd->rate_ns = qd->tins[ft].tin_rate_ns; qd->rate_shft = qd->tins[ft].tin_rate_shft; diff --git a/target/linux/generic/backport-6.12/752-v7.2-net-dsa-qca8k-fix-led-devicename-when-using-external.patch b/target/linux/generic/backport-6.12/752-v7.2-net-dsa-qca8k-fix-led-devicename-when-using-external.patch deleted file mode 100644 index 195e1719747..00000000000 --- a/target/linux/generic/backport-6.12/752-v7.2-net-dsa-qca8k-fix-led-devicename-when-using-external.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 0b7b378ce6cafbb948786cb6f17f406d94016c8c Mon Sep 17 00:00:00 2001 -From: George Moussalem -Date: Mon, 8 Jun 2026 11:22:08 +0400 -Subject: [PATCH] net: dsa: qca8k: fix led devicename when using external mdio - bus - -The qca8k dsa switch can use either an external or internal mdio bus. -This depends on whether the mdio node is defined under the switch node -itself. Upon registering the internal mdio bus, the internal_mdio_bus -of the dsa switch is assigned to this bus. When an external mdio bus is -used, the driver still uses the internal_mdio_bus id which is used to -create the device names of the leds. -This leads to the leds being prefixed with '(efault)' as the -internal_mii_bus is null. So let's fix this by adding a null check and -use the devicename of the external bus instead when an external bus is -configured. - -Fixes: 1e264f9d2918 ("net: dsa: qca8k: add LEDs basic support") -Signed-off-by: George Moussalem -Reviewed-by: Andrew Lunn -Link: https://patch.msgid.link/20260608-qca8k-leds-fix-v3-1-a915bb2f37ae@outlook.com -Signed-off-by: Jakub Kicinski ---- - drivers/net/dsa/qca/qca8k-leds.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - ---- a/drivers/net/dsa/qca/qca8k-leds.c -+++ b/drivers/net/dsa/qca/qca8k-leds.c -@@ -429,7 +429,8 @@ qca8k_parse_port_leds(struct qca8k_priv - init_data.fwnode = led; - init_data.devname_mandatory = true; - init_data.devicename = kasprintf(GFP_KERNEL, "%s:0%d", -- priv->internal_mdio_bus->id, -+ priv->internal_mdio_bus ? -+ priv->internal_mdio_bus->id : priv->bus->id, - port_num); - if (!init_data.devicename) { - fwnode_handle_put(led); diff --git a/target/linux/generic/backport-6.12/906-v6.17-PCI-dwc-Switch-to-msi_create_parent_irq_domain.patch b/target/linux/generic/backport-6.12/906-v6.17-PCI-dwc-Switch-to-msi_create_parent_irq_domain.patch index 7e027a15d21..b0d5f2ca1e9 100644 --- a/target/linux/generic/backport-6.12/906-v6.17-PCI-dwc-Switch-to-msi_create_parent_irq_domain.patch +++ b/target/linux/generic/backport-6.12/906-v6.17-PCI-dwc-Switch-to-msi_create_parent_irq_domain.patch @@ -95,9 +95,9 @@ Link: https://patch.msgid.link/04d4a96046490e50139826c16423954e033cdf89.17508580 int dw_pcie_allocate_domains(struct dw_pcie_rp *pp) { struct dw_pcie *pci = to_dw_pcie_from_pp(pp); -- struct fwnode_handle *fwnode = of_node_to_fwnode(pci->dev->of_node); +- struct fwnode_handle *fwnode = dev_fwnode(pci->dev); + struct irq_domain_info info = { -+ .fwnode = of_node_to_fwnode(pci->dev->of_node), ++ .fwnode = dev_fwnode(pci->dev), + .ops = &dw_pcie_msi_domain_ops, + .size = pp->num_vectors, + .host_data = pp, diff --git a/target/linux/generic/config-6.12 b/target/linux/generic/config-6.12 index 6c1d9e52073..d73fe1b9ab5 100644 --- a/target/linux/generic/config-6.12 +++ b/target/linux/generic/config-6.12 @@ -1346,6 +1346,7 @@ CONFIG_DEBUG_KERNEL=y # CONFIG_DEBUG_MISC is not set # CONFIG_DEBUG_MUTEXES is not set # CONFIG_DEBUG_NET is not set +# CONFIG_DEBUG_NET_SMALL_RTNL is not set # CONFIG_DEBUG_NOTIFIERS is not set # CONFIG_DEBUG_OBJECTS is not set # CONFIG_DEBUG_PAGEALLOC is not set diff --git a/target/linux/generic/hack-6.12/205-kconfig-abort-configuration-on-unset-symbol.patch b/target/linux/generic/hack-6.12/205-kconfig-abort-configuration-on-unset-symbol.patch index d7416d81a9e..e80153765ff 100644 --- a/target/linux/generic/hack-6.12/205-kconfig-abort-configuration-on-unset-symbol.patch +++ b/target/linux/generic/hack-6.12/205-kconfig-abort-configuration-on-unset-symbol.patch @@ -19,7 +19,7 @@ Signed-off-by: David Bauer --- a/scripts/kconfig/conf.c +++ b/scripts/kconfig/conf.c -@@ -312,6 +312,9 @@ static int conf_askvalue(struct symbol * +@@ -310,6 +310,9 @@ static int conf_askvalue(struct symbol * } /* fall through */ default: @@ -29,7 +29,7 @@ Signed-off-by: David Bauer fflush(stdout); xfgets(line, sizeof(line), stdin); break; -@@ -470,6 +473,9 @@ static void conf_choice(struct menu *men +@@ -468,6 +471,9 @@ static void conf_choice(struct menu *men } /* fall through */ case oldaskconfig: diff --git a/target/linux/generic/hack-6.12/645-netfilter-connmark-introduce-set-dscpmark.patch b/target/linux/generic/hack-6.12/645-netfilter-connmark-introduce-set-dscpmark.patch index bb802857d6b..a1e7f4b3bee 100644 --- a/target/linux/generic/hack-6.12/645-netfilter-connmark-introduce-set-dscpmark.patch +++ b/target/linux/generic/hack-6.12/645-netfilter-connmark-introduce-set-dscpmark.patch @@ -195,7 +195,7 @@ Signed-off-by: Kevin Darbyshire-Bryant return connmark_tg_shift(skb, info); } -@@ -168,6 +195,16 @@ static struct xt_target connmark_tg_reg[ +@@ -178,6 +205,16 @@ static struct xt_target connmark_tg_reg[ .destroy = connmark_tg_destroy, .me = THIS_MODULE, }, @@ -212,7 +212,7 @@ Signed-off-by: Kevin Darbyshire-Bryant #if IS_ENABLED(CONFIG_IP6_NF_IPTABLES) { .name = "CONNMARK", -@@ -189,6 +226,16 @@ static struct xt_target connmark_tg_reg[ +@@ -199,6 +236,16 @@ static struct xt_target connmark_tg_reg[ .destroy = connmark_tg_destroy, .me = THIS_MODULE, }, diff --git a/target/linux/generic/hack-6.12/660-fq_codel_defaults.patch b/target/linux/generic/hack-6.12/660-fq_codel_defaults.patch index 4d7b01d2437..4ec9e5a1406 100644 --- a/target/linux/generic/hack-6.12/660-fq_codel_defaults.patch +++ b/target/linux/generic/hack-6.12/660-fq_codel_defaults.patch @@ -13,7 +13,7 @@ Signed-off-by: Felix Fietkau --- a/net/sched/sch_fq_codel.c +++ b/net/sched/sch_fq_codel.c -@@ -472,7 +472,11 @@ static int fq_codel_init(struct Qdisc *s +@@ -509,7 +509,11 @@ static int fq_codel_init(struct Qdisc *s sch->limit = 10*1024; q->flows_cnt = 1024; diff --git a/target/linux/generic/hack-6.12/661-kernel-ct-size-the-hashtable-more-adequately.patch b/target/linux/generic/hack-6.12/661-kernel-ct-size-the-hashtable-more-adequately.patch index b4bf160e824..1a46fd74042 100644 --- a/target/linux/generic/hack-6.12/661-kernel-ct-size-the-hashtable-more-adequately.patch +++ b/target/linux/generic/hack-6.12/661-kernel-ct-size-the-hashtable-more-adequately.patch @@ -14,7 +14,7 @@ Signed-off-by: Rui Salvaterra --- a/net/netfilter/nf_conntrack_core.c +++ b/net/netfilter/nf_conntrack_core.c -@@ -2648,7 +2648,7 @@ int nf_conntrack_init_start(void) +@@ -2605,7 +2605,7 @@ int nf_conntrack_init_start(void) if (!nf_conntrack_htable_size) { nf_conntrack_htable_size diff --git a/target/linux/generic/hack-6.12/710-net-sched-sch_cake-configure-sync_time-via-debugfs.patch b/target/linux/generic/hack-6.12/710-net-sched-sch_cake-configure-sync_time-via-debugfs.patch index 54fa9df608f..87c49654b73 100644 --- a/target/linux/generic/hack-6.12/710-net-sched-sch_cake-configure-sync_time-via-debugfs.patch +++ b/target/linux/generic/hack-6.12/710-net-sched-sch_cake-configure-sync_time-via-debugfs.patch @@ -34,7 +34,7 @@ Signed-off-by: Jonas Köppeler /* struct cobalt_params - contains codel and blue parameters * @interval: codel initial drop rate -@@ -2013,7 +2016,7 @@ static struct sk_buff *cake_dequeue(stru +@@ -2010,7 +2013,7 @@ static struct sk_buff *cake_dequeue(stru u32 len; if (q->config->is_shared && q->rate_ns && @@ -43,7 +43,7 @@ Signed-off-by: Jonas Köppeler struct net_device *dev = qdisc_dev(sch); struct cake_sched_data *other_priv; u64 new_rate = q->config->rate_bps; -@@ -3353,8 +3356,13 @@ static int __init cake_module_init(void) +@@ -3350,8 +3353,13 @@ static int __init cake_module_init(void) return ret; ret = register_qdisc(&cake_mq_qdisc_ops); @@ -58,7 +58,7 @@ Signed-off-by: Jonas Köppeler return ret; } -@@ -3363,6 +3371,7 @@ static void __exit cake_module_exit(void +@@ -3360,6 +3368,7 @@ static void __exit cake_module_exit(void { unregister_qdisc(&cake_qdisc_ops); unregister_qdisc(&cake_mq_qdisc_ops); diff --git a/target/linux/generic/kernel-6.12 b/target/linux/generic/kernel-6.12 index 1ae2e8efad6..b9dab984919 100644 --- a/target/linux/generic/kernel-6.12 +++ b/target/linux/generic/kernel-6.12 @@ -1,2 +1,2 @@ -LINUX_VERSION-6.12 = .96 -LINUX_KERNEL_HASH-6.12.96 = 7d2e1b5d5ab36b3a01856e71782dad2a54e634fb2b37c0a42998def3bbf957c1 +LINUX_VERSION-6.12 = .97 +LINUX_KERNEL_HASH-6.12.97 = 6cbddfa3bbd2229026f7cc5e48f6b7d6b46d39742de39a9257a2f490a0f45c6f diff --git a/target/linux/generic/pending-6.12/402-mtd-spi-nor-write-support-for-minor-aligned-partitions.patch b/target/linux/generic/pending-6.12/402-mtd-spi-nor-write-support-for-minor-aligned-partitions.patch index c9bbe1442b7..78c634ba249 100644 --- a/target/linux/generic/pending-6.12/402-mtd-spi-nor-write-support-for-minor-aligned-partitions.patch +++ b/target/linux/generic/pending-6.12/402-mtd-spi-nor-write-support-for-minor-aligned-partitions.patch @@ -174,7 +174,7 @@ Reported-by: Dan Carpenter child->size = child->part.size; --- a/drivers/mtd/spi-nor/Kconfig +++ b/drivers/mtd/spi-nor/Kconfig -@@ -10,6 +10,16 @@ menuconfig MTD_SPI_NOR +@@ -9,6 +9,16 @@ menuconfig MTD_SPI_NOR if MTD_SPI_NOR 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 861090d31ea..dc19b20b217 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 @@ -175,7 +175,7 @@ Signed-off-by: Jonas Gorski /* * Allocate a dst for local (unicast / anycast) address. */ -@@ -5103,7 +5133,8 @@ static int rtm_to_fib6_config(struct sk_ +@@ -5106,7 +5136,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) -@@ -6376,6 +6407,8 @@ static int ip6_route_dev_notify(struct n +@@ -6379,6 +6410,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 -@@ -6387,6 +6420,7 @@ static int ip6_route_dev_notify(struct n +@@ -6390,6 +6423,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 } -@@ -6582,6 +6616,8 @@ static int __net_init ip6_route_net_init +@@ -6585,6 +6619,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); -@@ -6592,11 +6628,21 @@ static int __net_init ip6_route_net_init +@@ -6595,11 +6631,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); -@@ -6623,6 +6669,8 @@ out: +@@ -6626,6 +6672,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: -@@ -6642,6 +6690,7 @@ static void __net_exit ip6_route_net_exi +@@ -6645,6 +6693,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); -@@ -6725,6 +6774,9 @@ void __init ip6_route_init_special_entri +@@ -6728,6 +6777,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/710-bridge-add-knob-for-filtering-rx-tx-BPDU-pack.patch b/target/linux/generic/pending-6.12/710-bridge-add-knob-for-filtering-rx-tx-BPDU-pack.patch index 8a5822b53c0..91ba5f54f7f 100644 --- a/target/linux/generic/pending-6.12/710-bridge-add-knob-for-filtering-rx-tx-BPDU-pack.patch +++ b/target/linux/generic/pending-6.12/710-bridge-add-knob-for-filtering-rx-tx-BPDU-pack.patch @@ -161,7 +161,7 @@ Signed-off-by: Felix Fietkau struct rtnl_link { rtnl_doit_func doit; -@@ -5021,7 +5021,9 @@ int ndo_dflt_bridge_getlink(struct sk_bu +@@ -5102,7 +5102,9 @@ int ndo_dflt_bridge_getlink(struct sk_bu brport_nla_put_flag(skb, flags, mask, IFLA_BRPORT_MCAST_FLOOD, BR_MCAST_FLOOD) || brport_nla_put_flag(skb, flags, mask, diff --git a/target/linux/generic/pending-6.12/736-05-net-ethernet-mtk_eth_soc-zero-initialize-PPE-flow-ta.patch b/target/linux/generic/pending-6.12/736-05-net-ethernet-mtk_eth_soc-zero-initialize-PPE-flow-ta.patch index 2ca5ace3678..437fafbf40e 100644 --- a/target/linux/generic/pending-6.12/736-05-net-ethernet-mtk_eth_soc-zero-initialize-PPE-flow-ta.patch +++ b/target/linux/generic/pending-6.12/736-05-net-ethernet-mtk_eth_soc-zero-initialize-PPE-flow-ta.patch @@ -19,7 +19,7 @@ Signed-off-by: Felix Fietkau foe_flow_size = (MTK_PPE_ENTRIES / soc->hash_offset) * @@ -928,6 +929,7 @@ struct mtk_ppe *mtk_ppe_init(struct mtk_ if (!mib) - return NULL; + goto err_free_l2_flows; + memset(mib, 0, MTK_PPE_ENTRIES * sizeof(*mib)); ppe->mib_table = mib; diff --git a/target/linux/generic/pending-6.12/812-PCI-sysfs-enforce-single-creation-of-sysfs-entry-for.patch b/target/linux/generic/pending-6.12/812-PCI-sysfs-enforce-single-creation-of-sysfs-entry-for.patch index 7ff4b37fb04..e6a8f5d814d 100644 --- a/target/linux/generic/pending-6.12/812-PCI-sysfs-enforce-single-creation-of-sysfs-entry-for.patch +++ b/target/linux/generic/pending-6.12/812-PCI-sysfs-enforce-single-creation-of-sysfs-entry-for.patch @@ -68,7 +68,7 @@ Signed-off-by: Christian Marangi /* show configuration fields */ #define pci_config_attr(field, format_string) \ -@@ -1523,12 +1525,32 @@ static const struct attribute_group pci_ +@@ -1516,12 +1518,32 @@ static const struct attribute_group pci_ .is_visible = resource_resize_is_visible, }; @@ -102,7 +102,7 @@ Signed-off-by: Christian Marangi } /** -@@ -1549,21 +1571,23 @@ static int __init pci_sysfs_init(void) +@@ -1542,21 +1564,23 @@ static int __init pci_sysfs_init(void) { struct pci_dev *pdev = NULL; struct pci_bus *pbus = NULL; 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 72abaeab992..ea8f34ae853 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 -@@ -4812,6 +4823,9 @@ void __ata_qc_complete(struct ata_queued +@@ -4827,6 +4838,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 && -@@ -5541,6 +5555,9 @@ struct ata_port *ata_port_alloc(struct a +@@ -5556,6 +5570,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); -@@ -5557,6 +5574,12 @@ void ata_port_free(struct ata_port *ap) +@@ -5572,6 +5589,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); -@@ -5961,7 +5984,23 @@ int ata_host_register(struct ata_host *h +@@ -5976,7 +5999,23 @@ int ata_host_register(struct ata_host *h WARN_ON(1); return -EINVAL; } diff --git a/target/linux/loongarch64/patches-6.12/004-v6.17-LoongArch-BPF-Add-basic-bpf-trampoline-support.patch b/target/linux/loongarch64/patches-6.12/004-v6.17-LoongArch-BPF-Add-basic-bpf-trampoline-support.patch index 58210f6a921..24bb81eceb7 100644 --- a/target/linux/loongarch64/patches-6.12/004-v6.17-LoongArch-BPF-Add-basic-bpf-trampoline-support.patch +++ b/target/linux/loongarch64/patches-6.12/004-v6.17-LoongArch-BPF-Add-basic-bpf-trampoline-support.patch @@ -177,7 +177,7 @@ Signed-off-by: Huacai Chen + +void *arch_alloc_bpf_trampoline(unsigned int size) +{ -+ return bpf_prog_pack_alloc(size, jit_fill_hole); ++ return bpf_prog_pack_alloc(size, jit_fill_hole, false); +} + +void arch_free_bpf_trampoline(void *image, unsigned int size) diff --git a/target/linux/qualcommax/patches-6.12/0047-v6.16-PCI-qcom-Add-support-for-IPQ5018.patch b/target/linux/qualcommax/patches-6.12/0047-v6.16-PCI-qcom-Add-support-for-IPQ5018.patch index 70e681475f7..de1277aade9 100644 --- a/target/linux/qualcommax/patches-6.12/0047-v6.16-PCI-qcom-Add-support-for-IPQ5018.patch +++ b/target/linux/qualcommax/patches-6.12/0047-v6.16-PCI-qcom-Add-support-for-IPQ5018.patch @@ -21,7 +21,7 @@ Link: https://patch.msgid.link/20250326-ipq5018-pcie-v7-4-e1828fef06c9@outlook.c --- a/drivers/pci/controller/dwc/pcie-qcom.c +++ b/drivers/pci/controller/dwc/pcie-qcom.c -@@ -1827,6 +1827,7 @@ static const struct of_device_id qcom_pc +@@ -1838,6 +1838,7 @@ static const struct of_device_id qcom_pc { .compatible = "qcom,pcie-apq8064", .data = &cfg_2_1_0 }, { .compatible = "qcom,pcie-apq8084", .data = &cfg_1_0_0 }, { .compatible = "qcom,pcie-ipq4019", .data = &cfg_2_4_0 },