From: John Audia Date: Tue, 28 Jul 2026 10:52:48 +0000 (-0400) Subject: kernel: bump 6.18 to 6.18.40 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7105bec48f27ea189f0b4a2f41c5e114af2774bd;p=thirdparty%2Fopenwrt.git kernel: bump 6.18 to 6.18.40 Removed upstreamed: airoha/patches-6.18/109-01-v6.19-pinctrl-airoha-generalize-pins-group-function-confs-.patch[1] airoha/patches-6.18/112-v6.19-pinctrl-airoha-fix-pinctrl-function-mismatch-issue.patch[2] airoha/patches-6.18/170-v7.2-net-airoha-Fix-register-index-for-Tx-fwd-counter-con.patch[3] airoha/patches-6.18/171-v7.2-net-airoha-Fix-debugfs-new-tuple-display-for-IPv4-RO.patch[4] airoha/patches-6.18/172-v7.2-net-airoha-fix-foe_check_time-allocation-size.patch[5] airoha/patches-6.18/174-v7.2-net-airoha-Fix-skb-priority-underflow-in-airoha_dev_.patch[6] generic/backport-6.18/300-v7.1-MIPS-mm-fix-highmem-init.patch[7] generic/backport-6.18/627-v7.2-net-pse-pd-scope-pse_control-regulator-handle-to-kre.patch[8] generic/backport-6.18/752-v7.2-net-dsa-qca8k-fix-led-devicename-when-using-external.patch[9] qualcommax/patches-6.18/0084-v7.2-clk-qcom-cmnpll-Account-for-reference-clock-divider.patch[10] airoha/patches-6.18/180-02-v7.2-pinctrl-airoha-an7581-add-missed-gpio32-pin-group.patch[11] airoha/patches-6.18/180-04-v7.2-pinctrl-airoha-an7581-fix-misprint-in-gpio19-pinconf.patch[12] Manually rebased: airoha/patches-6.18/180-01-v7.2-pinctrl-Move-Airoha-driver-to-dedicated-directory.patch bcm27xx/patches-6.18/0299-mmc-sdhci-of-dwcmshc-define-sdio-timeout-clocks.patch mediatek/patches-6.18/942-net-ethernet-mtk_wed-move-cpuboot-in-a-dedicated-dts.patch Removed CONFIG_CRYPTO_DEV_SUN4I_SS_PRNG, it was removed upstream [13] All other patches automatically rebased via update_kernel.sh 1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.40&id=db3cd694ded4c8d492b62c7228e9c0d9230b13d0 2. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.40&id=a888f3d5970ff21e092bc9edcf3d9ffee9ae68a7 3. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.40&id=dcac6e4221f39f4f80adc7fb761c358a612fca62 4. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.40&id=4d48c08a0bf6c6ab8c07df37ee8794da891eec80 5. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.40&id=112b5eff24e044561ee9599a0d34e0fcea1df4e0 6. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.40&id=2066e692ec7a10af63d9c75899c9a66946cfede9 7. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.40&id=3d3638fe921371e52be77baefe792c126fcdfc8c 8. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.40&id=8d501b1411548442aaf1de3268654046f5bcf4c1 9. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.40&id=10e05634ddc19953d7357a39eebee4e142dc8397 10. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.40&id=226feccaac81833f227e7ad4b7702ff5c918211f 11. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.40&id=5985ddfd3e83fee2e021ed6908d4026516f47278 12. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.40&id=ad6963c3bb458fc1b722627405800c32e4cd840b 13. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.40&id=c401492e01c7bfd38cf14c94d85c7efafe7d1a25 Build system: x86/64 Build-tested: x86/64-glibc Run-tested: x86/64-glibc Signed-off-by: John Audia [Fixed 0299-mmc-sdhci-of-dwcmshc-define-sdio-timeout-clocks.patch, 180-01-v7.2-pinctrl-Move-Airoha-driver-to-dedicated-directory.patch and removed CONFIG_CRYPTO_DEV_SUN4I_SS_PRNG] Link: https://github.com/openwrt/openwrt/pull/24419 Signed-off-by: Hauke Mehrtens --- diff --git a/target/linux/airoha/patches-6.18/099-08-v6.19-net-airoha-ppe-Flush-PPE-SRAM-table-during-PPE-setup.patch b/target/linux/airoha/patches-6.18/099-08-v6.19-net-airoha-ppe-Flush-PPE-SRAM-table-during-PPE-setup.patch index dd4bda60013..65944fa4971 100644 --- a/target/linux/airoha/patches-6.18/099-08-v6.19-net-airoha-ppe-Flush-PPE-SRAM-table-during-PPE-setup.patch +++ b/target/linux/airoha/patches-6.18/099-08-v6.19-net-airoha-ppe-Flush-PPE-SRAM-table-during-PPE-setup.patch @@ -58,7 +58,7 @@ Signed-off-by: Paolo Abeni airoha_ppe_foe_flow_stats_reset(ppe, npu); rcu_assign_pointer(eth->npu, npu); -@@ -1554,6 +1554,10 @@ int airoha_ppe_init(struct airoha_eth *e +@@ -1555,6 +1555,10 @@ int airoha_ppe_init(struct airoha_eth *e if (!ppe->foe_check_time) return -ENOMEM; diff --git a/target/linux/airoha/patches-6.18/109-01-v6.19-pinctrl-airoha-generalize-pins-group-function-confs-.patch b/target/linux/airoha/patches-6.18/109-01-v6.19-pinctrl-airoha-generalize-pins-group-function-confs-.patch deleted file mode 100644 index e3c3ab27c88..00000000000 --- a/target/linux/airoha/patches-6.18/109-01-v6.19-pinctrl-airoha-generalize-pins-group-function-confs-.patch +++ /dev/null @@ -1,775 +0,0 @@ -From 4043b0c45f8555a079bdac69a19ed08695a47a7b Mon Sep 17 00:00:00 2001 -From: Christian Marangi -Date: Fri, 7 Nov 2025 00:57:04 +0100 -Subject: [PATCH] pinctrl: airoha: generalize pins/group/function/confs - handling - -In preparation for support of Airoha AN7583, generalize -pins/group/function/confs handling and move them in match_data. -Inner function will base the values on the pinctrl priv struct instead of -relying on hardcoded struct. - -This permits to use different PIN data while keeping the same logic. - -Signed-off-by: Christian Marangi -Signed-off-by: Linus Walleij ---- - drivers/pinctrl/mediatek/pinctrl-airoha.c | 567 ++++++++++++---------- - 1 file changed, 318 insertions(+), 249 deletions(-) - ---- a/drivers/pinctrl/mediatek/pinctrl-airoha.c -+++ b/drivers/pinctrl/mediatek/pinctrl-airoha.c -@@ -30,15 +30,15 @@ - #include "../pinconf.h" - #include "../pinmux.h" - --#define PINCTRL_PIN_GROUP(id) \ -- PINCTRL_PINGROUP(#id, id##_pins, ARRAY_SIZE(id##_pins)) -+#define PINCTRL_PIN_GROUP(id, table) \ -+ PINCTRL_PINGROUP(id, table##_pins, ARRAY_SIZE(table##_pins)) - --#define PINCTRL_FUNC_DESC(id) \ -+#define PINCTRL_FUNC_DESC(id, table) \ - { \ -- .desc = PINCTRL_PINFUNCTION(#id, id##_groups, \ -- ARRAY_SIZE(id##_groups)), \ -- .groups = id##_func_group, \ -- .group_size = ARRAY_SIZE(id##_func_group), \ -+ .desc = PINCTRL_PINFUNCTION(#id, table##_groups, \ -+ ARRAY_SIZE(table##_groups)),\ -+ .groups = table##_func_group, \ -+ .group_size = ARRAY_SIZE(table##_func_group), \ - } - - #define PINCTRL_CONF_DESC(p, offset, mask) \ -@@ -357,16 +357,46 @@ struct airoha_pinctrl_gpiochip { - u32 irq_type[AIROHA_NUM_PINS]; - }; - -+struct airoha_pinctrl_confs_info { -+ const struct airoha_pinctrl_conf *confs; -+ unsigned int num_confs; -+}; -+ -+enum airoha_pinctrl_confs_type { -+ AIROHA_PINCTRL_CONFS_PULLUP, -+ AIROHA_PINCTRL_CONFS_PULLDOWN, -+ AIROHA_PINCTRL_CONFS_DRIVE_E2, -+ AIROHA_PINCTRL_CONFS_DRIVE_E4, -+ AIROHA_PINCTRL_CONFS_PCIE_RST_OD, -+ -+ AIROHA_PINCTRL_CONFS_MAX, -+}; -+ - struct airoha_pinctrl { - struct pinctrl_dev *ctrl; - -+ struct pinctrl_desc desc; -+ const struct pingroup *grps; -+ const struct airoha_pinctrl_func *funcs; -+ const struct airoha_pinctrl_confs_info *confs_info; -+ - struct regmap *chip_scu; - struct regmap *regmap; - - struct airoha_pinctrl_gpiochip gpiochip; - }; - --static struct pinctrl_pin_desc airoha_pinctrl_pins[] = { -+struct airoha_pinctrl_match_data { -+ const struct pinctrl_pin_desc *pins; -+ const unsigned int num_pins; -+ const struct pingroup *grps; -+ const unsigned int num_grps; -+ const struct airoha_pinctrl_func *funcs; -+ const unsigned int num_funcs; -+ const struct airoha_pinctrl_confs_info confs_info[AIROHA_PINCTRL_CONFS_MAX]; -+}; -+ -+static struct pinctrl_pin_desc en7581_pinctrl_pins[] = { - PINCTRL_PIN(0, "uart1_txd"), - PINCTRL_PIN(1, "uart1_rxd"), - PINCTRL_PIN(2, "i2c_scl"), -@@ -427,172 +457,172 @@ static struct pinctrl_pin_desc airoha_pi - PINCTRL_PIN(63, "pcie_reset2"), - }; - --static const int pon_pins[] = { 49, 50, 51, 52, 53, 54 }; --static const int pon_tod_1pps_pins[] = { 46 }; --static const int gsw_tod_1pps_pins[] = { 46 }; --static const int sipo_pins[] = { 16, 17 }; --static const int sipo_rclk_pins[] = { 16, 17, 43 }; --static const int mdio_pins[] = { 14, 15 }; --static const int uart2_pins[] = { 48, 55 }; --static const int uart2_cts_rts_pins[] = { 46, 47 }; --static const int hsuart_pins[] = { 28, 29 }; --static const int hsuart_cts_rts_pins[] = { 26, 27 }; --static const int uart4_pins[] = { 38, 39 }; --static const int uart5_pins[] = { 18, 19 }; --static const int i2c0_pins[] = { 2, 3 }; --static const int i2c1_pins[] = { 14, 15 }; --static const int jtag_udi_pins[] = { 16, 17, 18, 19, 20 }; --static const int jtag_dfd_pins[] = { 16, 17, 18, 19, 20 }; --static const int i2s_pins[] = { 26, 27, 28, 29 }; --static const int pcm1_pins[] = { 22, 23, 24, 25 }; --static const int pcm2_pins[] = { 18, 19, 20, 21 }; --static const int spi_quad_pins[] = { 32, 33 }; --static const int spi_pins[] = { 4, 5, 6, 7 }; --static const int spi_cs1_pins[] = { 34 }; --static const int pcm_spi_pins[] = { 18, 19, 20, 21, 22, 23, 24, 25 }; --static const int pcm_spi_int_pins[] = { 14 }; --static const int pcm_spi_rst_pins[] = { 15 }; --static const int pcm_spi_cs1_pins[] = { 43 }; --static const int pcm_spi_cs2_pins[] = { 40 }; --static const int pcm_spi_cs2_p128_pins[] = { 40 }; --static const int pcm_spi_cs2_p156_pins[] = { 40 }; --static const int pcm_spi_cs3_pins[] = { 41 }; --static const int pcm_spi_cs4_pins[] = { 42 }; --static const int emmc_pins[] = { 4, 5, 6, 30, 31, 32, 33, 34, 35, 36, 37 }; --static const int pnand_pins[] = { 4, 5, 6, 7, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42 }; --static const int gpio0_pins[] = { 13 }; --static const int gpio1_pins[] = { 14 }; --static const int gpio2_pins[] = { 15 }; --static const int gpio3_pins[] = { 16 }; --static const int gpio4_pins[] = { 17 }; --static const int gpio5_pins[] = { 18 }; --static const int gpio6_pins[] = { 19 }; --static const int gpio7_pins[] = { 20 }; --static const int gpio8_pins[] = { 21 }; --static const int gpio9_pins[] = { 22 }; --static const int gpio10_pins[] = { 23 }; --static const int gpio11_pins[] = { 24 }; --static const int gpio12_pins[] = { 25 }; --static const int gpio13_pins[] = { 26 }; --static const int gpio14_pins[] = { 27 }; --static const int gpio15_pins[] = { 28 }; --static const int gpio16_pins[] = { 29 }; --static const int gpio17_pins[] = { 30 }; --static const int gpio18_pins[] = { 31 }; --static const int gpio19_pins[] = { 32 }; --static const int gpio20_pins[] = { 33 }; --static const int gpio21_pins[] = { 34 }; --static const int gpio22_pins[] = { 35 }; --static const int gpio23_pins[] = { 36 }; --static const int gpio24_pins[] = { 37 }; --static const int gpio25_pins[] = { 38 }; --static const int gpio26_pins[] = { 39 }; --static const int gpio27_pins[] = { 40 }; --static const int gpio28_pins[] = { 41 }; --static const int gpio29_pins[] = { 42 }; --static const int gpio30_pins[] = { 43 }; --static const int gpio31_pins[] = { 44 }; --static const int gpio33_pins[] = { 46 }; --static const int gpio34_pins[] = { 47 }; --static const int gpio35_pins[] = { 48 }; --static const int gpio36_pins[] = { 49 }; --static const int gpio37_pins[] = { 50 }; --static const int gpio38_pins[] = { 51 }; --static const int gpio39_pins[] = { 52 }; --static const int gpio40_pins[] = { 53 }; --static const int gpio41_pins[] = { 54 }; --static const int gpio42_pins[] = { 55 }; --static const int gpio43_pins[] = { 56 }; --static const int gpio44_pins[] = { 57 }; --static const int gpio45_pins[] = { 58 }; --static const int gpio46_pins[] = { 59 }; --static const int pcie_reset0_pins[] = { 61 }; --static const int pcie_reset1_pins[] = { 62 }; --static const int pcie_reset2_pins[] = { 63 }; -- --static const struct pingroup airoha_pinctrl_groups[] = { -- PINCTRL_PIN_GROUP(pon), -- PINCTRL_PIN_GROUP(pon_tod_1pps), -- PINCTRL_PIN_GROUP(gsw_tod_1pps), -- PINCTRL_PIN_GROUP(sipo), -- PINCTRL_PIN_GROUP(sipo_rclk), -- PINCTRL_PIN_GROUP(mdio), -- PINCTRL_PIN_GROUP(uart2), -- PINCTRL_PIN_GROUP(uart2_cts_rts), -- PINCTRL_PIN_GROUP(hsuart), -- PINCTRL_PIN_GROUP(hsuart_cts_rts), -- PINCTRL_PIN_GROUP(uart4), -- PINCTRL_PIN_GROUP(uart5), -- PINCTRL_PIN_GROUP(i2c0), -- PINCTRL_PIN_GROUP(i2c1), -- PINCTRL_PIN_GROUP(jtag_udi), -- PINCTRL_PIN_GROUP(jtag_dfd), -- PINCTRL_PIN_GROUP(i2s), -- PINCTRL_PIN_GROUP(pcm1), -- PINCTRL_PIN_GROUP(pcm2), -- PINCTRL_PIN_GROUP(spi), -- PINCTRL_PIN_GROUP(spi_quad), -- PINCTRL_PIN_GROUP(spi_cs1), -- PINCTRL_PIN_GROUP(pcm_spi), -- PINCTRL_PIN_GROUP(pcm_spi_int), -- PINCTRL_PIN_GROUP(pcm_spi_rst), -- PINCTRL_PIN_GROUP(pcm_spi_cs1), -- PINCTRL_PIN_GROUP(pcm_spi_cs2_p128), -- PINCTRL_PIN_GROUP(pcm_spi_cs2_p156), -- PINCTRL_PIN_GROUP(pcm_spi_cs2), -- PINCTRL_PIN_GROUP(pcm_spi_cs3), -- PINCTRL_PIN_GROUP(pcm_spi_cs4), -- PINCTRL_PIN_GROUP(emmc), -- PINCTRL_PIN_GROUP(pnand), -- PINCTRL_PIN_GROUP(gpio0), -- PINCTRL_PIN_GROUP(gpio1), -- PINCTRL_PIN_GROUP(gpio2), -- PINCTRL_PIN_GROUP(gpio3), -- PINCTRL_PIN_GROUP(gpio4), -- PINCTRL_PIN_GROUP(gpio5), -- PINCTRL_PIN_GROUP(gpio6), -- PINCTRL_PIN_GROUP(gpio7), -- PINCTRL_PIN_GROUP(gpio8), -- PINCTRL_PIN_GROUP(gpio9), -- PINCTRL_PIN_GROUP(gpio10), -- PINCTRL_PIN_GROUP(gpio11), -- PINCTRL_PIN_GROUP(gpio12), -- PINCTRL_PIN_GROUP(gpio13), -- PINCTRL_PIN_GROUP(gpio14), -- PINCTRL_PIN_GROUP(gpio15), -- PINCTRL_PIN_GROUP(gpio16), -- PINCTRL_PIN_GROUP(gpio17), -- PINCTRL_PIN_GROUP(gpio18), -- PINCTRL_PIN_GROUP(gpio19), -- PINCTRL_PIN_GROUP(gpio20), -- PINCTRL_PIN_GROUP(gpio21), -- PINCTRL_PIN_GROUP(gpio22), -- PINCTRL_PIN_GROUP(gpio23), -- PINCTRL_PIN_GROUP(gpio24), -- PINCTRL_PIN_GROUP(gpio25), -- PINCTRL_PIN_GROUP(gpio26), -- PINCTRL_PIN_GROUP(gpio27), -- PINCTRL_PIN_GROUP(gpio28), -- PINCTRL_PIN_GROUP(gpio29), -- PINCTRL_PIN_GROUP(gpio30), -- PINCTRL_PIN_GROUP(gpio31), -- PINCTRL_PIN_GROUP(gpio33), -- PINCTRL_PIN_GROUP(gpio34), -- PINCTRL_PIN_GROUP(gpio35), -- PINCTRL_PIN_GROUP(gpio36), -- PINCTRL_PIN_GROUP(gpio37), -- PINCTRL_PIN_GROUP(gpio38), -- PINCTRL_PIN_GROUP(gpio39), -- PINCTRL_PIN_GROUP(gpio40), -- PINCTRL_PIN_GROUP(gpio41), -- PINCTRL_PIN_GROUP(gpio42), -- PINCTRL_PIN_GROUP(gpio43), -- PINCTRL_PIN_GROUP(gpio44), -- PINCTRL_PIN_GROUP(gpio45), -- PINCTRL_PIN_GROUP(gpio46), -- PINCTRL_PIN_GROUP(pcie_reset0), -- PINCTRL_PIN_GROUP(pcie_reset1), -- PINCTRL_PIN_GROUP(pcie_reset2), -+static const int en7581_pon_pins[] = { 49, 50, 51, 52, 53, 54 }; -+static const int en7581_pon_tod_1pps_pins[] = { 46 }; -+static const int en7581_gsw_tod_1pps_pins[] = { 46 }; -+static const int en7581_sipo_pins[] = { 16, 17 }; -+static const int en7581_sipo_rclk_pins[] = { 16, 17, 43 }; -+static const int en7581_mdio_pins[] = { 14, 15 }; -+static const int en7581_uart2_pins[] = { 48, 55 }; -+static const int en7581_uart2_cts_rts_pins[] = { 46, 47 }; -+static const int en7581_hsuart_pins[] = { 28, 29 }; -+static const int en7581_hsuart_cts_rts_pins[] = { 26, 27 }; -+static const int en7581_uart4_pins[] = { 38, 39 }; -+static const int en7581_uart5_pins[] = { 18, 19 }; -+static const int en7581_i2c0_pins[] = { 2, 3 }; -+static const int en7581_i2c1_pins[] = { 14, 15 }; -+static const int en7581_jtag_udi_pins[] = { 16, 17, 18, 19, 20 }; -+static const int en7581_jtag_dfd_pins[] = { 16, 17, 18, 19, 20 }; -+static const int en7581_i2s_pins[] = { 26, 27, 28, 29 }; -+static const int en7581_pcm1_pins[] = { 22, 23, 24, 25 }; -+static const int en7581_pcm2_pins[] = { 18, 19, 20, 21 }; -+static const int en7581_spi_quad_pins[] = { 32, 33 }; -+static const int en7581_spi_pins[] = { 4, 5, 6, 7 }; -+static const int en7581_spi_cs1_pins[] = { 34 }; -+static const int en7581_pcm_spi_pins[] = { 18, 19, 20, 21, 22, 23, 24, 25 }; -+static const int en7581_pcm_spi_int_pins[] = { 14 }; -+static const int en7581_pcm_spi_rst_pins[] = { 15 }; -+static const int en7581_pcm_spi_cs1_pins[] = { 43 }; -+static const int en7581_pcm_spi_cs2_pins[] = { 40 }; -+static const int en7581_pcm_spi_cs2_p128_pins[] = { 40 }; -+static const int en7581_pcm_spi_cs2_p156_pins[] = { 40 }; -+static const int en7581_pcm_spi_cs3_pins[] = { 41 }; -+static const int en7581_pcm_spi_cs4_pins[] = { 42 }; -+static const int en7581_emmc_pins[] = { 4, 5, 6, 30, 31, 32, 33, 34, 35, 36, 37 }; -+static const int en7581_pnand_pins[] = { 4, 5, 6, 7, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42 }; -+static const int en7581_gpio0_pins[] = { 13 }; -+static const int en7581_gpio1_pins[] = { 14 }; -+static const int en7581_gpio2_pins[] = { 15 }; -+static const int en7581_gpio3_pins[] = { 16 }; -+static const int en7581_gpio4_pins[] = { 17 }; -+static const int en7581_gpio5_pins[] = { 18 }; -+static const int en7581_gpio6_pins[] = { 19 }; -+static const int en7581_gpio7_pins[] = { 20 }; -+static const int en7581_gpio8_pins[] = { 21 }; -+static const int en7581_gpio9_pins[] = { 22 }; -+static const int en7581_gpio10_pins[] = { 23 }; -+static const int en7581_gpio11_pins[] = { 24 }; -+static const int en7581_gpio12_pins[] = { 25 }; -+static const int en7581_gpio13_pins[] = { 26 }; -+static const int en7581_gpio14_pins[] = { 27 }; -+static const int en7581_gpio15_pins[] = { 28 }; -+static const int en7581_gpio16_pins[] = { 29 }; -+static const int en7581_gpio17_pins[] = { 30 }; -+static const int en7581_gpio18_pins[] = { 31 }; -+static const int en7581_gpio19_pins[] = { 32 }; -+static const int en7581_gpio20_pins[] = { 33 }; -+static const int en7581_gpio21_pins[] = { 34 }; -+static const int en7581_gpio22_pins[] = { 35 }; -+static const int en7581_gpio23_pins[] = { 36 }; -+static const int en7581_gpio24_pins[] = { 37 }; -+static const int en7581_gpio25_pins[] = { 38 }; -+static const int en7581_gpio26_pins[] = { 39 }; -+static const int en7581_gpio27_pins[] = { 40 }; -+static const int en7581_gpio28_pins[] = { 41 }; -+static const int en7581_gpio29_pins[] = { 42 }; -+static const int en7581_gpio30_pins[] = { 43 }; -+static const int en7581_gpio31_pins[] = { 44 }; -+static const int en7581_gpio33_pins[] = { 46 }; -+static const int en7581_gpio34_pins[] = { 47 }; -+static const int en7581_gpio35_pins[] = { 48 }; -+static const int en7581_gpio36_pins[] = { 49 }; -+static const int en7581_gpio37_pins[] = { 50 }; -+static const int en7581_gpio38_pins[] = { 51 }; -+static const int en7581_gpio39_pins[] = { 52 }; -+static const int en7581_gpio40_pins[] = { 53 }; -+static const int en7581_gpio41_pins[] = { 54 }; -+static const int en7581_gpio42_pins[] = { 55 }; -+static const int en7581_gpio43_pins[] = { 56 }; -+static const int en7581_gpio44_pins[] = { 57 }; -+static const int en7581_gpio45_pins[] = { 58 }; -+static const int en7581_gpio46_pins[] = { 59 }; -+static const int en7581_pcie_reset0_pins[] = { 61 }; -+static const int en7581_pcie_reset1_pins[] = { 62 }; -+static const int en7581_pcie_reset2_pins[] = { 63 }; -+ -+static const struct pingroup en7581_pinctrl_groups[] = { -+ PINCTRL_PIN_GROUP("pon", en7581_pon), -+ PINCTRL_PIN_GROUP("pon_tod_1pps", en7581_pon_tod_1pps), -+ PINCTRL_PIN_GROUP("gsw_tod_1pps", en7581_gsw_tod_1pps), -+ PINCTRL_PIN_GROUP("sipo", en7581_sipo), -+ PINCTRL_PIN_GROUP("sipo_rclk", en7581_sipo_rclk), -+ PINCTRL_PIN_GROUP("mdio", en7581_mdio), -+ PINCTRL_PIN_GROUP("uart2", en7581_uart2), -+ PINCTRL_PIN_GROUP("uart2_cts_rts", en7581_uart2_cts_rts), -+ PINCTRL_PIN_GROUP("hsuart", en7581_hsuart), -+ PINCTRL_PIN_GROUP("hsuart_cts_rts", en7581_hsuart_cts_rts), -+ PINCTRL_PIN_GROUP("uart4", en7581_uart4), -+ PINCTRL_PIN_GROUP("uart5", en7581_uart5), -+ PINCTRL_PIN_GROUP("i2c0", en7581_i2c0), -+ PINCTRL_PIN_GROUP("i2c1", en7581_i2c1), -+ PINCTRL_PIN_GROUP("jtag_udi", en7581_jtag_udi), -+ PINCTRL_PIN_GROUP("jtag_dfd", en7581_jtag_dfd), -+ PINCTRL_PIN_GROUP("i2s", en7581_i2s), -+ PINCTRL_PIN_GROUP("pcm1", en7581_pcm1), -+ PINCTRL_PIN_GROUP("pcm2", en7581_pcm2), -+ PINCTRL_PIN_GROUP("spi", en7581_spi), -+ PINCTRL_PIN_GROUP("spi_quad", en7581_spi_quad), -+ PINCTRL_PIN_GROUP("spi_cs1", en7581_spi_cs1), -+ PINCTRL_PIN_GROUP("pcm_spi", en7581_pcm_spi), -+ PINCTRL_PIN_GROUP("pcm_spi_int", en7581_pcm_spi_int), -+ PINCTRL_PIN_GROUP("pcm_spi_rst", en7581_pcm_spi_rst), -+ PINCTRL_PIN_GROUP("pcm_spi_cs1", en7581_pcm_spi_cs1), -+ PINCTRL_PIN_GROUP("pcm_spi_cs2_p128", en7581_pcm_spi_cs2_p128), -+ PINCTRL_PIN_GROUP("pcm_spi_cs2_p156", en7581_pcm_spi_cs2_p156), -+ PINCTRL_PIN_GROUP("pcm_spi_cs2", en7581_pcm_spi_cs2), -+ PINCTRL_PIN_GROUP("pcm_spi_cs3", en7581_pcm_spi_cs3), -+ PINCTRL_PIN_GROUP("pcm_spi_cs4", en7581_pcm_spi_cs4), -+ PINCTRL_PIN_GROUP("emmc", en7581_emmc), -+ PINCTRL_PIN_GROUP("pnand", en7581_pnand), -+ PINCTRL_PIN_GROUP("gpio0", en7581_gpio0), -+ PINCTRL_PIN_GROUP("gpio1", en7581_gpio1), -+ PINCTRL_PIN_GROUP("gpio2", en7581_gpio2), -+ PINCTRL_PIN_GROUP("gpio3", en7581_gpio3), -+ PINCTRL_PIN_GROUP("gpio4", en7581_gpio4), -+ PINCTRL_PIN_GROUP("gpio5", en7581_gpio5), -+ PINCTRL_PIN_GROUP("gpio6", en7581_gpio6), -+ PINCTRL_PIN_GROUP("gpio7", en7581_gpio7), -+ PINCTRL_PIN_GROUP("gpio8", en7581_gpio8), -+ PINCTRL_PIN_GROUP("gpio9", en7581_gpio9), -+ PINCTRL_PIN_GROUP("gpio10", en7581_gpio10), -+ PINCTRL_PIN_GROUP("gpio11", en7581_gpio11), -+ PINCTRL_PIN_GROUP("gpio12", en7581_gpio12), -+ PINCTRL_PIN_GROUP("gpio13", en7581_gpio13), -+ PINCTRL_PIN_GROUP("gpio14", en7581_gpio14), -+ PINCTRL_PIN_GROUP("gpio15", en7581_gpio15), -+ PINCTRL_PIN_GROUP("gpio16", en7581_gpio16), -+ PINCTRL_PIN_GROUP("gpio17", en7581_gpio17), -+ PINCTRL_PIN_GROUP("gpio18", en7581_gpio18), -+ PINCTRL_PIN_GROUP("gpio19", en7581_gpio19), -+ PINCTRL_PIN_GROUP("gpio20", en7581_gpio20), -+ PINCTRL_PIN_GROUP("gpio21", en7581_gpio21), -+ PINCTRL_PIN_GROUP("gpio22", en7581_gpio22), -+ PINCTRL_PIN_GROUP("gpio23", en7581_gpio23), -+ PINCTRL_PIN_GROUP("gpio24", en7581_gpio24), -+ PINCTRL_PIN_GROUP("gpio25", en7581_gpio25), -+ PINCTRL_PIN_GROUP("gpio26", en7581_gpio26), -+ PINCTRL_PIN_GROUP("gpio27", en7581_gpio27), -+ PINCTRL_PIN_GROUP("gpio28", en7581_gpio28), -+ PINCTRL_PIN_GROUP("gpio29", en7581_gpio29), -+ PINCTRL_PIN_GROUP("gpio30", en7581_gpio30), -+ PINCTRL_PIN_GROUP("gpio31", en7581_gpio31), -+ PINCTRL_PIN_GROUP("gpio33", en7581_gpio33), -+ PINCTRL_PIN_GROUP("gpio34", en7581_gpio34), -+ PINCTRL_PIN_GROUP("gpio35", en7581_gpio35), -+ PINCTRL_PIN_GROUP("gpio36", en7581_gpio36), -+ PINCTRL_PIN_GROUP("gpio37", en7581_gpio37), -+ PINCTRL_PIN_GROUP("gpio38", en7581_gpio38), -+ PINCTRL_PIN_GROUP("gpio39", en7581_gpio39), -+ PINCTRL_PIN_GROUP("gpio40", en7581_gpio40), -+ PINCTRL_PIN_GROUP("gpio41", en7581_gpio41), -+ PINCTRL_PIN_GROUP("gpio42", en7581_gpio42), -+ PINCTRL_PIN_GROUP("gpio43", en7581_gpio43), -+ PINCTRL_PIN_GROUP("gpio44", en7581_gpio44), -+ PINCTRL_PIN_GROUP("gpio45", en7581_gpio45), -+ PINCTRL_PIN_GROUP("gpio46", en7581_gpio46), -+ PINCTRL_PIN_GROUP("pcie_reset0", en7581_pcie_reset0), -+ PINCTRL_PIN_GROUP("pcie_reset1", en7581_pcie_reset1), -+ PINCTRL_PIN_GROUP("pcie_reset2", en7581_pcie_reset2), - }; - - static const char *const pon_groups[] = { "pon" }; -@@ -1955,33 +1985,33 @@ static const struct airoha_pinctrl_func_ - }, - }; - --static const struct airoha_pinctrl_func airoha_pinctrl_funcs[] = { -- PINCTRL_FUNC_DESC(pon), -- PINCTRL_FUNC_DESC(tod_1pps), -- PINCTRL_FUNC_DESC(sipo), -- PINCTRL_FUNC_DESC(mdio), -- PINCTRL_FUNC_DESC(uart), -- PINCTRL_FUNC_DESC(i2c), -- PINCTRL_FUNC_DESC(jtag), -- PINCTRL_FUNC_DESC(pcm), -- PINCTRL_FUNC_DESC(spi), -- PINCTRL_FUNC_DESC(pcm_spi), -- PINCTRL_FUNC_DESC(i2s), -- PINCTRL_FUNC_DESC(emmc), -- PINCTRL_FUNC_DESC(pnand), -- PINCTRL_FUNC_DESC(pcie_reset), -- PINCTRL_FUNC_DESC(pwm), -- PINCTRL_FUNC_DESC(phy1_led0), -- PINCTRL_FUNC_DESC(phy2_led0), -- PINCTRL_FUNC_DESC(phy3_led0), -- PINCTRL_FUNC_DESC(phy4_led0), -- PINCTRL_FUNC_DESC(phy1_led1), -- PINCTRL_FUNC_DESC(phy2_led1), -- PINCTRL_FUNC_DESC(phy3_led1), -- PINCTRL_FUNC_DESC(phy4_led1), -+static const struct airoha_pinctrl_func en7581_pinctrl_funcs[] = { -+ PINCTRL_FUNC_DESC("pon", pon), -+ PINCTRL_FUNC_DESC("tod_1pps", tod_1pps), -+ PINCTRL_FUNC_DESC("sipo", sipo), -+ PINCTRL_FUNC_DESC("mdio", mdio), -+ PINCTRL_FUNC_DESC("uart", uart), -+ PINCTRL_FUNC_DESC("i2c", i2c), -+ PINCTRL_FUNC_DESC("jtag", jtag), -+ PINCTRL_FUNC_DESC("pcm", pcm), -+ PINCTRL_FUNC_DESC("spi", spi), -+ PINCTRL_FUNC_DESC("pcm_spi", pcm_spi), -+ PINCTRL_FUNC_DESC("i2s", i2s), -+ PINCTRL_FUNC_DESC("emmc", emmc), -+ PINCTRL_FUNC_DESC("pnand", pnand), -+ PINCTRL_FUNC_DESC("pcie_reset", pcie_reset), -+ PINCTRL_FUNC_DESC("pwm", pwm), -+ PINCTRL_FUNC_DESC("phy1_led0", phy1_led0), -+ PINCTRL_FUNC_DESC("phy2_led0", phy2_led0), -+ PINCTRL_FUNC_DESC("phy3_led0", phy3_led0), -+ PINCTRL_FUNC_DESC("phy4_led0", phy4_led0), -+ PINCTRL_FUNC_DESC("phy1_led1", phy1_led1), -+ PINCTRL_FUNC_DESC("phy2_led1", phy2_led1), -+ PINCTRL_FUNC_DESC("phy3_led1", phy3_led1), -+ PINCTRL_FUNC_DESC("phy4_led1", phy4_led1), - }; - --static const struct airoha_pinctrl_conf airoha_pinctrl_pullup_conf[] = { -+static const struct airoha_pinctrl_conf en7581_pinctrl_pullup_conf[] = { - PINCTRL_CONF_DESC(0, REG_I2C_SDA_PU, UART1_TXD_PU_MASK), - PINCTRL_CONF_DESC(1, REG_I2C_SDA_PU, UART1_RXD_PU_MASK), - PINCTRL_CONF_DESC(2, REG_I2C_SDA_PU, I2C_SDA_PU_MASK), -@@ -2042,7 +2072,7 @@ static const struct airoha_pinctrl_conf - PINCTRL_CONF_DESC(63, REG_I2C_SDA_PU, PCIE2_RESET_PU_MASK), - }; - --static const struct airoha_pinctrl_conf airoha_pinctrl_pulldown_conf[] = { -+static const struct airoha_pinctrl_conf en7581_pinctrl_pulldown_conf[] = { - PINCTRL_CONF_DESC(0, REG_I2C_SDA_PD, UART1_TXD_PD_MASK), - PINCTRL_CONF_DESC(1, REG_I2C_SDA_PD, UART1_RXD_PD_MASK), - PINCTRL_CONF_DESC(2, REG_I2C_SDA_PD, I2C_SDA_PD_MASK), -@@ -2103,7 +2133,7 @@ static const struct airoha_pinctrl_conf - PINCTRL_CONF_DESC(63, REG_I2C_SDA_PD, PCIE2_RESET_PD_MASK), - }; - --static const struct airoha_pinctrl_conf airoha_pinctrl_drive_e2_conf[] = { -+static const struct airoha_pinctrl_conf en7581_pinctrl_drive_e2_conf[] = { - PINCTRL_CONF_DESC(0, REG_I2C_SDA_E2, UART1_TXD_E2_MASK), - PINCTRL_CONF_DESC(1, REG_I2C_SDA_E2, UART1_RXD_E2_MASK), - PINCTRL_CONF_DESC(2, REG_I2C_SDA_E2, I2C_SDA_E2_MASK), -@@ -2164,7 +2194,7 @@ static const struct airoha_pinctrl_conf - PINCTRL_CONF_DESC(63, REG_I2C_SDA_E2, PCIE2_RESET_E2_MASK), - }; - --static const struct airoha_pinctrl_conf airoha_pinctrl_drive_e4_conf[] = { -+static const struct airoha_pinctrl_conf en7581_pinctrl_drive_e4_conf[] = { - PINCTRL_CONF_DESC(0, REG_I2C_SDA_E4, UART1_TXD_E4_MASK), - PINCTRL_CONF_DESC(1, REG_I2C_SDA_E4, UART1_RXD_E4_MASK), - PINCTRL_CONF_DESC(2, REG_I2C_SDA_E4, I2C_SDA_E4_MASK), -@@ -2225,7 +2255,7 @@ static const struct airoha_pinctrl_conf - PINCTRL_CONF_DESC(63, REG_I2C_SDA_E4, PCIE2_RESET_E4_MASK), - }; - --static const struct airoha_pinctrl_conf airoha_pinctrl_pcie_rst_od_conf[] = { -+static const struct airoha_pinctrl_conf en7581_pinctrl_pcie_rst_od_conf[] = { - PINCTRL_CONF_DESC(61, REG_PCIE_RESET_OD, PCIE0_RESET_OD_MASK), - PINCTRL_CONF_DESC(62, REG_PCIE_RESET_OD, PCIE1_RESET_OD_MASK), - PINCTRL_CONF_DESC(63, REG_PCIE_RESET_OD, PCIE2_RESET_OD_MASK), -@@ -2546,12 +2576,17 @@ airoha_pinctrl_get_conf_reg(const struct - } - - static int airoha_pinctrl_get_conf(struct airoha_pinctrl *pinctrl, -- const struct airoha_pinctrl_conf *conf, -- int conf_size, int pin, u32 *val) -+ enum airoha_pinctrl_confs_type conf_type, -+ int pin, u32 *val) - { -+ const struct airoha_pinctrl_confs_info *confs_info; - const struct airoha_pinctrl_reg *reg; - -- reg = airoha_pinctrl_get_conf_reg(conf, conf_size, pin); -+ confs_info = &pinctrl->confs_info[conf_type]; -+ -+ reg = airoha_pinctrl_get_conf_reg(confs_info->confs, -+ confs_info->num_confs, -+ pin); - if (!reg) - return -EINVAL; - -@@ -2564,12 +2599,17 @@ static int airoha_pinctrl_get_conf(struc - } - - static int airoha_pinctrl_set_conf(struct airoha_pinctrl *pinctrl, -- const struct airoha_pinctrl_conf *conf, -- int conf_size, int pin, u32 val) -+ enum airoha_pinctrl_confs_type conf_type, -+ int pin, u32 val) - { -+ const struct airoha_pinctrl_confs_info *confs_info; - const struct airoha_pinctrl_reg *reg = NULL; - -- reg = airoha_pinctrl_get_conf_reg(conf, conf_size, pin); -+ confs_info = &pinctrl->confs_info[conf_type]; -+ -+ reg = airoha_pinctrl_get_conf_reg(confs_info->confs, -+ confs_info->num_confs, -+ pin); - if (!reg) - return -EINVAL; - -@@ -2582,44 +2622,34 @@ static int airoha_pinctrl_set_conf(struc - } - - #define airoha_pinctrl_get_pullup_conf(pinctrl, pin, val) \ -- airoha_pinctrl_get_conf((pinctrl), airoha_pinctrl_pullup_conf, \ -- ARRAY_SIZE(airoha_pinctrl_pullup_conf), \ -+ airoha_pinctrl_get_conf((pinctrl), AIROHA_PINCTRL_CONFS_PULLUP, \ - (pin), (val)) - #define airoha_pinctrl_get_pulldown_conf(pinctrl, pin, val) \ -- airoha_pinctrl_get_conf((pinctrl), airoha_pinctrl_pulldown_conf, \ -- ARRAY_SIZE(airoha_pinctrl_pulldown_conf), \ -+ airoha_pinctrl_get_conf((pinctrl), AIROHA_PINCTRL_CONFS_PULLDOWN, \ - (pin), (val)) - #define airoha_pinctrl_get_drive_e2_conf(pinctrl, pin, val) \ -- airoha_pinctrl_get_conf((pinctrl), airoha_pinctrl_drive_e2_conf, \ -- ARRAY_SIZE(airoha_pinctrl_drive_e2_conf), \ -+ airoha_pinctrl_get_conf((pinctrl), AIROHA_PINCTRL_CONFS_DRIVE_E2, \ - (pin), (val)) - #define airoha_pinctrl_get_drive_e4_conf(pinctrl, pin, val) \ -- airoha_pinctrl_get_conf((pinctrl), airoha_pinctrl_drive_e4_conf, \ -- ARRAY_SIZE(airoha_pinctrl_drive_e4_conf), \ -+ airoha_pinctrl_get_conf((pinctrl), AIROHA_PINCTRL_CONFS_DRIVE_E4, \ - (pin), (val)) - #define airoha_pinctrl_get_pcie_rst_od_conf(pinctrl, pin, val) \ -- airoha_pinctrl_get_conf((pinctrl), airoha_pinctrl_pcie_rst_od_conf, \ -- ARRAY_SIZE(airoha_pinctrl_pcie_rst_od_conf), \ -+ airoha_pinctrl_get_conf((pinctrl), AIROHA_PINCTRL_CONFS_PCIE_RST_OD, \ - (pin), (val)) - #define airoha_pinctrl_set_pullup_conf(pinctrl, pin, val) \ -- airoha_pinctrl_set_conf((pinctrl), airoha_pinctrl_pullup_conf, \ -- ARRAY_SIZE(airoha_pinctrl_pullup_conf), \ -+ airoha_pinctrl_set_conf((pinctrl), AIROHA_PINCTRL_CONFS_PULLUP, \ - (pin), (val)) - #define airoha_pinctrl_set_pulldown_conf(pinctrl, pin, val) \ -- airoha_pinctrl_set_conf((pinctrl), airoha_pinctrl_pulldown_conf, \ -- ARRAY_SIZE(airoha_pinctrl_pulldown_conf), \ -+ airoha_pinctrl_set_conf((pinctrl), AIROHA_PINCTRL_CONFS_PULLDOWN, \ - (pin), (val)) - #define airoha_pinctrl_set_drive_e2_conf(pinctrl, pin, val) \ -- airoha_pinctrl_set_conf((pinctrl), airoha_pinctrl_drive_e2_conf, \ -- ARRAY_SIZE(airoha_pinctrl_drive_e2_conf), \ -+ airoha_pinctrl_set_conf((pinctrl), AIROHA_PINCTRL_CONFS_DRIVE_E2, \ - (pin), (val)) - #define airoha_pinctrl_set_drive_e4_conf(pinctrl, pin, val) \ -- airoha_pinctrl_set_conf((pinctrl), airoha_pinctrl_drive_e4_conf, \ -- ARRAY_SIZE(airoha_pinctrl_drive_e4_conf), \ -+ airoha_pinctrl_set_conf((pinctrl), AIROHA_PINCTRL_CONFS_DRIVE_E4, \ - (pin), (val)) - #define airoha_pinctrl_set_pcie_rst_od_conf(pinctrl, pin, val) \ -- airoha_pinctrl_set_conf((pinctrl), airoha_pinctrl_pcie_rst_od_conf, \ -- ARRAY_SIZE(airoha_pinctrl_pcie_rst_od_conf), \ -+ airoha_pinctrl_set_conf((pinctrl), AIROHA_PINCTRL_CONFS_PCIE_RST_OD, \ - (pin), (val)) - - static int airoha_pinconf_get_direction(struct pinctrl_dev *pctrl_dev, u32 p) -@@ -2796,12 +2826,13 @@ static int airoha_pinconf_set(struct pin - static int airoha_pinconf_group_get(struct pinctrl_dev *pctrl_dev, - unsigned int group, unsigned long *config) - { -+ struct airoha_pinctrl *pinctrl = pinctrl_dev_get_drvdata(pctrl_dev); - u32 cur_config = 0; - int i; - -- for (i = 0; i < airoha_pinctrl_groups[group].npins; i++) { -+ for (i = 0; i < pinctrl->grps[group].npins; i++) { - if (airoha_pinconf_get(pctrl_dev, -- airoha_pinctrl_groups[group].pins[i], -+ pinctrl->grps[group].pins[i], - config)) - return -ENOTSUPP; - -@@ -2818,13 +2849,14 @@ static int airoha_pinconf_group_set(stru - unsigned int group, unsigned long *configs, - unsigned int num_configs) - { -+ struct airoha_pinctrl *pinctrl = pinctrl_dev_get_drvdata(pctrl_dev); - int i; - -- for (i = 0; i < airoha_pinctrl_groups[group].npins; i++) { -+ for (i = 0; i < pinctrl->grps[group].npins; i++) { - int err; - - err = airoha_pinconf_set(pctrl_dev, -- airoha_pinctrl_groups[group].pins[i], -+ pinctrl->grps[group].pins[i], - configs, num_configs); - if (err) - return err; -@@ -2850,23 +2882,16 @@ static const struct pinctrl_ops airoha_p - .dt_free_map = pinconf_generic_dt_free_map, - }; - --static const struct pinctrl_desc airoha_pinctrl_desc = { -- .name = KBUILD_MODNAME, -- .owner = THIS_MODULE, -- .pctlops = &airoha_pctlops, -- .pmxops = &airoha_pmxops, -- .confops = &airoha_confops, -- .pins = airoha_pinctrl_pins, -- .npins = ARRAY_SIZE(airoha_pinctrl_pins), --}; -- - static int airoha_pinctrl_probe(struct platform_device *pdev) - { -+ const struct airoha_pinctrl_match_data *data; - struct device *dev = &pdev->dev; - struct airoha_pinctrl *pinctrl; - struct regmap *map; - int err, i; - -+ data = device_get_match_data(dev); -+ - pinctrl = devm_kzalloc(dev, sizeof(*pinctrl), GFP_KERNEL); - if (!pinctrl) - return -ENOMEM; -@@ -2881,14 +2906,23 @@ static int airoha_pinctrl_probe(struct p - - pinctrl->chip_scu = map; - -- err = devm_pinctrl_register_and_init(dev, &airoha_pinctrl_desc, -+ /* Init pinctrl desc struct */ -+ pinctrl->desc.name = KBUILD_MODNAME; -+ pinctrl->desc.owner = THIS_MODULE, -+ pinctrl->desc.pctlops = &airoha_pctlops, -+ pinctrl->desc.pmxops = &airoha_pmxops, -+ pinctrl->desc.confops = &airoha_confops, -+ pinctrl->desc.pins = data->pins, -+ pinctrl->desc.npins = data->num_pins, -+ -+ err = devm_pinctrl_register_and_init(dev, &pinctrl->desc, - pinctrl, &pinctrl->ctrl); - if (err) - return err; - - /* build pin groups */ -- for (i = 0; i < ARRAY_SIZE(airoha_pinctrl_groups); i++) { -- const struct pingroup *grp = &airoha_pinctrl_groups[i]; -+ for (i = 0; i < data->num_grps; i++) { -+ const struct pingroup *grp = &data->grps[i]; - - err = pinctrl_generic_add_group(pinctrl->ctrl, grp->name, - grp->pins, grp->npins, -@@ -2901,10 +2935,10 @@ static int airoha_pinctrl_probe(struct p - } - - /* build functions */ -- for (i = 0; i < ARRAY_SIZE(airoha_pinctrl_funcs); i++) { -+ for (i = 0; i < data->num_funcs; i++) { - const struct airoha_pinctrl_func *func; - -- func = &airoha_pinctrl_funcs[i]; -+ func = &data->funcs[i]; - err = pinmux_generic_add_pinfunction(pinctrl->ctrl, - &func->desc, - (void *)func); -@@ -2915,6 +2949,10 @@ static int airoha_pinctrl_probe(struct p - } - } - -+ pinctrl->grps = data->grps; -+ pinctrl->funcs = data->funcs; -+ pinctrl->confs_info = data->confs_info; -+ - err = pinctrl_enable(pinctrl->ctrl); - if (err) - return err; -@@ -2923,8 +2961,39 @@ static int airoha_pinctrl_probe(struct p - return airoha_pinctrl_add_gpiochip(pinctrl, pdev); - } - -+static const struct airoha_pinctrl_match_data en7581_pinctrl_match_data = { -+ .pins = en7581_pinctrl_pins, -+ .num_pins = ARRAY_SIZE(en7581_pinctrl_pins), -+ .grps = en7581_pinctrl_groups, -+ .num_grps = ARRAY_SIZE(en7581_pinctrl_groups), -+ .funcs = en7581_pinctrl_funcs, -+ .num_funcs = ARRAY_SIZE(en7581_pinctrl_funcs), -+ .confs_info = { -+ [AIROHA_PINCTRL_CONFS_PULLUP] = { -+ .confs = en7581_pinctrl_pullup_conf, -+ .num_confs = ARRAY_SIZE(en7581_pinctrl_pullup_conf), -+ }, -+ [AIROHA_PINCTRL_CONFS_PULLDOWN] = { -+ .confs = en7581_pinctrl_pulldown_conf, -+ .num_confs = ARRAY_SIZE(en7581_pinctrl_pulldown_conf), -+ }, -+ [AIROHA_PINCTRL_CONFS_DRIVE_E2] = { -+ .confs = en7581_pinctrl_drive_e2_conf, -+ .num_confs = ARRAY_SIZE(en7581_pinctrl_drive_e2_conf), -+ }, -+ [AIROHA_PINCTRL_CONFS_DRIVE_E4] = { -+ .confs = en7581_pinctrl_drive_e4_conf, -+ .num_confs = ARRAY_SIZE(en7581_pinctrl_drive_e4_conf), -+ }, -+ [AIROHA_PINCTRL_CONFS_PCIE_RST_OD] = { -+ .confs = en7581_pinctrl_pcie_rst_od_conf, -+ .num_confs = ARRAY_SIZE(en7581_pinctrl_pcie_rst_od_conf), -+ }, -+ }, -+}; -+ - static const struct of_device_id airoha_pinctrl_of_match[] = { -- { .compatible = "airoha,en7581-pinctrl" }, -+ { .compatible = "airoha,en7581-pinctrl", .data = &en7581_pinctrl_match_data }, - { /* sentinel */ } - }; - MODULE_DEVICE_TABLE(of, airoha_pinctrl_of_match); diff --git a/target/linux/airoha/patches-6.18/109-02-v6.19-pinctrl-airoha-convert-PHY-LED-GPIO-to-macro.patch b/target/linux/airoha/patches-6.18/109-02-v6.19-pinctrl-airoha-convert-PHY-LED-GPIO-to-macro.patch index 0f96183a266..a48020c2d75 100644 --- a/target/linux/airoha/patches-6.18/109-02-v6.19-pinctrl-airoha-convert-PHY-LED-GPIO-to-macro.patch +++ b/target/linux/airoha/patches-6.18/109-02-v6.19-pinctrl-airoha-convert-PHY-LED-GPIO-to-macro.patch @@ -16,7 +16,7 @@ Signed-off-by: Linus Walleij --- a/drivers/pinctrl/mediatek/pinctrl-airoha.c +++ b/drivers/pinctrl/mediatek/pinctrl-airoha.c -@@ -1473,516 +1473,128 @@ static const struct airoha_pinctrl_func_ +@@ -1475,516 +1475,128 @@ static const struct airoha_pinctrl_func_ }, }; diff --git a/target/linux/airoha/patches-6.18/109-03-v6.19-pinctrl-airoha-convert-PWM-GPIO-to-macro.patch b/target/linux/airoha/patches-6.18/109-03-v6.19-pinctrl-airoha-convert-PWM-GPIO-to-macro.patch index a38ef0574c9..204ad1cd621 100644 --- a/target/linux/airoha/patches-6.18/109-03-v6.19-pinctrl-airoha-convert-PWM-GPIO-to-macro.patch +++ b/target/linux/airoha/patches-6.18/109-03-v6.19-pinctrl-airoha-convert-PWM-GPIO-to-macro.patch @@ -17,7 +17,7 @@ Signed-off-by: Linus Walleij --- a/drivers/pinctrl/mediatek/pinctrl-airoha.c +++ b/drivers/pinctrl/mediatek/pinctrl-airoha.c -@@ -1073,404 +1073,75 @@ static const struct airoha_pinctrl_func_ +@@ -1075,404 +1075,75 @@ static const struct airoha_pinctrl_func_ }; /* PWM */ diff --git a/target/linux/airoha/patches-6.18/109-05-v6.19-pinctrl-airoha-add-support-for-Airoha-AN7583-PINs.patch b/target/linux/airoha/patches-6.18/109-05-v6.19-pinctrl-airoha-add-support-for-Airoha-AN7583-PINs.patch index ad0ff9f4109..1206e962794 100644 --- a/target/linux/airoha/patches-6.18/109-05-v6.19-pinctrl-airoha-add-support-for-Airoha-AN7583-PINs.patch +++ b/target/linux/airoha/patches-6.18/109-05-v6.19-pinctrl-airoha-add-support-for-Airoha-AN7583-PINs.patch @@ -94,7 +94,7 @@ Signed-off-by: Linus Walleij #define UART1_RXD_PD_MASK BIT(3) #define UART1_TXD_PD_MASK BIT(2) #define I2C_SCL_PD_MASK BIT(1) -@@ -625,10 +642,223 @@ static const struct pingroup en7581_pinc +@@ -627,10 +644,223 @@ static const struct pingroup en7581_pinc PINCTRL_PIN_GROUP("pcie_reset2", en7581_pcie_reset2), }; @@ -318,7 +318,7 @@ Signed-off-by: Linus Walleij static const char *const uart_groups[] = { "uart2", "uart2_cts_rts", "hsuart", "hsuart_cts_rts", "uart4", "uart5" }; -@@ -641,11 +871,16 @@ static const char *const pcm_spi_groups[ +@@ -643,11 +873,16 @@ static const char *const pcm_spi_groups[ "pcm_spi_cs2_p156", "pcm_spi_cs2_p128", "pcm_spi_cs3", "pcm_spi_cs4" }; @@ -335,7 +335,7 @@ Signed-off-by: Linus Walleij static const char *const pwm_groups[] = { "gpio0", "gpio1", "gpio2", "gpio3", "gpio4", "gpio5", -@@ -684,6 +919,22 @@ static const char *const phy3_led1_group +@@ -686,6 +921,22 @@ static const char *const phy3_led1_group "gpio45", "gpio46" }; static const char *const phy4_led1_groups[] = { "gpio43", "gpio44", "gpio45", "gpio46" }; @@ -358,7 +358,7 @@ Signed-off-by: Linus Walleij static const struct airoha_pinctrl_func_group pon_func_group[] = { { -@@ -761,6 +1012,25 @@ static const struct airoha_pinctrl_func_ +@@ -763,6 +1014,25 @@ static const struct airoha_pinctrl_func_ }, }; @@ -384,7 +384,7 @@ Signed-off-by: Linus Walleij static const struct airoha_pinctrl_func_group uart_func_group[] = { { .name = "uart2", -@@ -1002,6 +1272,73 @@ static const struct airoha_pinctrl_func_ +@@ -1004,6 +1274,73 @@ static const struct airoha_pinctrl_func_ }, }; @@ -458,7 +458,7 @@ Signed-off-by: Linus Walleij static const struct airoha_pinctrl_func_group i2s_func_group[] = { { .name = "i2s", -@@ -1072,6 +1409,28 @@ static const struct airoha_pinctrl_func_ +@@ -1074,6 +1411,28 @@ static const struct airoha_pinctrl_func_ }, }; @@ -487,7 +487,7 @@ Signed-off-by: Linus Walleij /* PWM */ #define AIROHA_PINCTRL_PWM(gpio, mux_val) \ { \ -@@ -1268,6 +1627,94 @@ static const struct airoha_pinctrl_func_ +@@ -1270,6 +1629,94 @@ static const struct airoha_pinctrl_func_ LAN3_LED_MAPPING_MASK, LAN3_PHY_LED_MAP(2)), }; @@ -582,7 +582,7 @@ Signed-off-by: Linus Walleij static const struct airoha_pinctrl_func en7581_pinctrl_funcs[] = { PINCTRL_FUNC_DESC("pon", pon), PINCTRL_FUNC_DESC("tod_1pps", tod_1pps), -@@ -1294,6 +1741,31 @@ static const struct airoha_pinctrl_func +@@ -1296,6 +1743,31 @@ static const struct airoha_pinctrl_func PINCTRL_FUNC_DESC("phy4_led1", phy4_led1), }; @@ -614,7 +614,7 @@ Signed-off-by: Linus Walleij static const struct airoha_pinctrl_conf en7581_pinctrl_pullup_conf[] = { PINCTRL_CONF_DESC(0, REG_I2C_SDA_PU, UART1_TXD_PU_MASK), PINCTRL_CONF_DESC(1, REG_I2C_SDA_PU, UART1_RXD_PU_MASK), -@@ -1355,6 +1827,62 @@ static const struct airoha_pinctrl_conf +@@ -1357,6 +1829,62 @@ static const struct airoha_pinctrl_conf PINCTRL_CONF_DESC(63, REG_I2C_SDA_PU, PCIE2_RESET_PU_MASK), }; @@ -677,7 +677,7 @@ Signed-off-by: Linus Walleij static const struct airoha_pinctrl_conf en7581_pinctrl_pulldown_conf[] = { PINCTRL_CONF_DESC(0, REG_I2C_SDA_PD, UART1_TXD_PD_MASK), PINCTRL_CONF_DESC(1, REG_I2C_SDA_PD, UART1_RXD_PD_MASK), -@@ -1416,6 +1944,62 @@ static const struct airoha_pinctrl_conf +@@ -1418,6 +1946,62 @@ static const struct airoha_pinctrl_conf PINCTRL_CONF_DESC(63, REG_I2C_SDA_PD, PCIE2_RESET_PD_MASK), }; @@ -740,7 +740,7 @@ Signed-off-by: Linus Walleij static const struct airoha_pinctrl_conf en7581_pinctrl_drive_e2_conf[] = { PINCTRL_CONF_DESC(0, REG_I2C_SDA_E2, UART1_TXD_E2_MASK), PINCTRL_CONF_DESC(1, REG_I2C_SDA_E2, UART1_RXD_E2_MASK), -@@ -1477,6 +2061,62 @@ static const struct airoha_pinctrl_conf +@@ -1479,6 +2063,62 @@ static const struct airoha_pinctrl_conf PINCTRL_CONF_DESC(63, REG_I2C_SDA_E2, PCIE2_RESET_E2_MASK), }; @@ -803,7 +803,7 @@ Signed-off-by: Linus Walleij static const struct airoha_pinctrl_conf en7581_pinctrl_drive_e4_conf[] = { PINCTRL_CONF_DESC(0, REG_I2C_SDA_E4, UART1_TXD_E4_MASK), PINCTRL_CONF_DESC(1, REG_I2C_SDA_E4, UART1_RXD_E4_MASK), -@@ -1538,12 +2178,73 @@ static const struct airoha_pinctrl_conf +@@ -1540,12 +2180,73 @@ static const struct airoha_pinctrl_conf PINCTRL_CONF_DESC(63, REG_I2C_SDA_E4, PCIE2_RESET_E4_MASK), }; @@ -877,7 +877,7 @@ Signed-off-by: Linus Walleij static int airoha_convert_pin_to_reg_offset(struct pinctrl_dev *pctrl_dev, struct pinctrl_gpio_range *range, int pin) -@@ -1708,7 +2409,7 @@ static const struct irq_chip airoha_gpio +@@ -1710,7 +2411,7 @@ static const struct irq_chip airoha_gpio }; static int airoha_pinctrl_add_gpiochip(struct airoha_pinctrl *pinctrl, @@ -886,7 +886,7 @@ Signed-off-by: Linus Walleij { struct airoha_pinctrl_gpiochip *chip = &pinctrl->gpiochip; struct gpio_chip *gc = &chip->chip; -@@ -1743,7 +2444,7 @@ static int airoha_pinctrl_add_gpiochip(s +@@ -1745,7 +2446,7 @@ static int airoha_pinctrl_add_gpiochip(s return irq; err = devm_request_irq(dev, irq, airoha_irq_handler, IRQF_SHARED, @@ -895,7 +895,7 @@ Signed-off-by: Linus Walleij if (err) { dev_err(dev, "error requesting irq %d: %d\n", irq, err); return err; -@@ -1807,8 +2508,8 @@ static int airoha_pinmux_set_mux(struct +@@ -1809,8 +2510,8 @@ static int airoha_pinmux_set_mux(struct } static int airoha_pinmux_set_direction(struct pinctrl_dev *pctrl_dev, @@ -906,7 +906,7 @@ Signed-off-by: Linus Walleij { struct airoha_pinctrl *pinctrl = pinctrl_dev_get_drvdata(pctrl_dev); u32 mask, index; -@@ -1898,7 +2599,7 @@ static int airoha_pinctrl_set_conf(struc +@@ -1900,7 +2601,7 @@ static int airoha_pinctrl_set_conf(struc if (regmap_update_bits(pinctrl->chip_scu, reg->offset, reg->mask, @@ -915,7 +915,7 @@ Signed-off-by: Linus Walleij return -EINVAL; return 0; -@@ -2115,8 +2816,8 @@ static int airoha_pinconf_group_get(stru +@@ -2117,8 +2818,8 @@ static int airoha_pinconf_group_get(stru for (i = 0; i < pinctrl->grps[group].npins; i++) { if (airoha_pinconf_get(pctrl_dev, @@ -926,7 +926,7 @@ Signed-off-by: Linus Walleij return -ENOTSUPP; if (i && cur_config != *config) -@@ -2275,8 +2976,40 @@ static const struct airoha_pinctrl_match +@@ -2277,8 +2978,40 @@ static const struct airoha_pinctrl_match }, }; diff --git a/target/linux/airoha/patches-6.18/112-v6.19-pinctrl-airoha-fix-pinctrl-function-mismatch-issue.patch b/target/linux/airoha/patches-6.18/112-v6.19-pinctrl-airoha-fix-pinctrl-function-mismatch-issue.patch deleted file mode 100644 index e55475f81f4..00000000000 --- a/target/linux/airoha/patches-6.18/112-v6.19-pinctrl-airoha-fix-pinctrl-function-mismatch-issue.patch +++ /dev/null @@ -1,38 +0,0 @@ -From f2bd5a0f59d052d16749bccf637690e51947a5d6 Mon Sep 17 00:00:00 2001 -From: Chukun Pan -Date: Sat, 15 Nov 2025 18:00:00 +0800 -Subject: [PATCH] pinctrl: airoha: fix pinctrl function mismatch issue - -The blamed commit made the following changes: - --#define PINCTRL_FUNC_DESC(id)... -- .desc = PINCTRL_PINFUNCTION(#id, ... -+#define PINCTRL_FUNC_DESC(id, table)... -+ .desc = PINCTRL_PINFUNCTION(#id, ... - -- PINCTRL_FUNC_DESC(pon)... -+ PINCTRL_FUNC_DESC("pon", pon)... - -It's clear that the id of funcs doesn't match the definition. -Remove redundant #string from the definition to fix this issue: -pinctrl-airoha ...: invalid function mdio in map table - -Fixes: 4043b0c45f85 ("pinctrl: airoha: generalize pins/group/function/confs handling") -Signed-off-by: Chukun Pan -Acked-by: Christian Marangi -Signed-off-by: Linus Walleij ---- - drivers/pinctrl/mediatek/pinctrl-airoha.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - ---- a/drivers/pinctrl/mediatek/pinctrl-airoha.c -+++ b/drivers/pinctrl/mediatek/pinctrl-airoha.c -@@ -35,7 +35,7 @@ - - #define PINCTRL_FUNC_DESC(id, table) \ - { \ -- .desc = PINCTRL_PINFUNCTION(#id, table##_groups, \ -+ .desc = PINCTRL_PINFUNCTION(id, table##_groups, \ - ARRAY_SIZE(table##_groups)),\ - .groups = table##_func_group, \ - .group_size = ARRAY_SIZE(table##_func_group), \ diff --git a/target/linux/airoha/patches-6.18/113-v6.19-pinctrl-airoha-Fix-AIROHA_PINCTRL_CONFS_DRIVE_E2.patch b/target/linux/airoha/patches-6.18/113-v6.19-pinctrl-airoha-Fix-AIROHA_PINCTRL_CONFS_DRIVE_E2.patch index ac5b1d2ca31..a4aea1d89ec 100644 --- a/target/linux/airoha/patches-6.18/113-v6.19-pinctrl-airoha-Fix-AIROHA_PINCTRL_CONFS_DRIVE_E2.patch +++ b/target/linux/airoha/patches-6.18/113-v6.19-pinctrl-airoha-Fix-AIROHA_PINCTRL_CONFS_DRIVE_E2.patch @@ -29,7 +29,7 @@ Signed-off-by: Linus Walleij --- a/drivers/pinctrl/mediatek/pinctrl-airoha.c +++ b/drivers/pinctrl/mediatek/pinctrl-airoha.c -@@ -2993,7 +2993,7 @@ static const struct airoha_pinctrl_match +@@ -2995,7 +2995,7 @@ static const struct airoha_pinctrl_match .num_confs = ARRAY_SIZE(an7583_pinctrl_pulldown_conf), }, [AIROHA_PINCTRL_CONFS_DRIVE_E2] = { diff --git a/target/linux/airoha/patches-6.18/114-v6.19-pinctrl-airoha-convert-comma-to-semicolon.patch b/target/linux/airoha/patches-6.18/114-v6.19-pinctrl-airoha-convert-comma-to-semicolon.patch index cb3e579c200..0afa7841035 100644 --- a/target/linux/airoha/patches-6.18/114-v6.19-pinctrl-airoha-convert-comma-to-semicolon.patch +++ b/target/linux/airoha/patches-6.18/114-v6.19-pinctrl-airoha-convert-comma-to-semicolon.patch @@ -21,7 +21,7 @@ Signed-off-by: Linus Walleij --- a/drivers/pinctrl/mediatek/pinctrl-airoha.c +++ b/drivers/pinctrl/mediatek/pinctrl-airoha.c -@@ -2892,12 +2892,12 @@ static int airoha_pinctrl_probe(struct p +@@ -2894,12 +2894,12 @@ static int airoha_pinctrl_probe(struct p /* Init pinctrl desc struct */ pinctrl->desc.name = KBUILD_MODNAME; diff --git a/target/linux/airoha/patches-6.18/161-01-v7.2-net-airoha-Introduce-airoha_gdm_dev-struct.patch b/target/linux/airoha/patches-6.18/161-01-v7.2-net-airoha-Introduce-airoha_gdm_dev-struct.patch index c095e00cfcd..8e9a0bc59ed 100644 --- a/target/linux/airoha/patches-6.18/161-01-v7.2-net-airoha-Introduce-airoha_gdm_dev-struct.patch +++ b/target/linux/airoha/patches-6.18/161-01-v7.2-net-airoha-Introduce-airoha_gdm_dev-struct.patch @@ -235,7 +235,7 @@ Signed-off-by: Jakub Kicinski - channel = netdev_uses_dsa(dev) ? skb_get_queue_mapping(skb) : port->id; + channel = netdev_uses_dsa(netdev) ? skb_get_queue_mapping(skb) : port->id; channel = channel % AIROHA_NUM_QOS_CHANNELS; - queue = (skb->priority - 1) % AIROHA_NUM_QOS_QUEUES; /* QoS queue */ + queue = skb->priority % AIROHA_NUM_QOS_QUEUES; queue = channel * AIROHA_NUM_QOS_QUEUES + queue; - return queue < dev->num_tx_queues ? queue : 0; diff --git a/target/linux/airoha/patches-6.18/170-v7.2-net-airoha-Fix-register-index-for-Tx-fwd-counter-con.patch b/target/linux/airoha/patches-6.18/170-v7.2-net-airoha-Fix-register-index-for-Tx-fwd-counter-con.patch deleted file mode 100644 index 30591786612..00000000000 --- a/target/linux/airoha/patches-6.18/170-v7.2-net-airoha-Fix-register-index-for-Tx-fwd-counter-con.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 1402ecccf5630a0b7fa4749d7d2e72abc3f3d73d Mon Sep 17 00:00:00 2001 -Message-ID: <1402ecccf5630a0b7fa4749d7d2e72abc3f3d73d.1782312403.git.lorenzo@kernel.org> -From: "Wayen.Yan" -Date: Fri, 12 Jun 2026 07:09:13 +0800 -Subject: [PATCH 1/2] net: airoha: Fix register index for Tx-fwd counter - configuration - -In airoha_qdma_init_qos_stats(), the Tx-fwd counter configuration -register uses the same index (i << 1) as the Tx-cpu counter, which -overwrites the Tx-cpu configuration. The Tx-fwd counter value register -correctly uses (i << 1) + 1, so the configuration register should use -the same index. - -Fix the REG_CNTR_CFG index from (i << 1) to ((i << 1) + 1) so that -the Tx-fwd counter is properly configured instead of clobbering the -Tx-cpu counter config. - -Fixes: 20bf7d07c956 ("net: airoha: Add sched ETS offload support") -Signed-off-by: Wayen.Yan -Acked-by: Lorenzo Bianconi -Link: https://patch.msgid.link/6a2b40e7.4dd82583.3a5c46.e566@mx.google.com -Signed-off-by: Jakub Kicinski ---- - drivers/net/ethernet/airoha/airoha_eth.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - ---- a/drivers/net/ethernet/airoha/airoha_eth.c -+++ b/drivers/net/ethernet/airoha/airoha_eth.c -@@ -1331,7 +1331,7 @@ static void airoha_qdma_init_qos_stats(s - FIELD_PREP(CNTR_CHAN_MASK, i)); - /* Tx-fwd transferred count */ - airoha_qdma_wr(qdma, REG_CNTR_VAL((i << 1) + 1), 0); -- airoha_qdma_wr(qdma, REG_CNTR_CFG(i << 1), -+ airoha_qdma_wr(qdma, REG_CNTR_CFG((i << 1) + 1), - CNTR_EN_MASK | CNTR_ALL_QUEUE_EN_MASK | - CNTR_ALL_DSCP_RING_EN_MASK | - FIELD_PREP(CNTR_SRC_MASK, 1) | diff --git a/target/linux/airoha/patches-6.18/171-v7.2-net-airoha-Fix-debugfs-new-tuple-display-for-IPv4-RO.patch b/target/linux/airoha/patches-6.18/171-v7.2-net-airoha-Fix-debugfs-new-tuple-display-for-IPv4-RO.patch deleted file mode 100644 index 3a487a44c46..00000000000 --- a/target/linux/airoha/patches-6.18/171-v7.2-net-airoha-Fix-debugfs-new-tuple-display-for-IPv4-RO.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 1c3a77471afbb3981af28f7f7c8b2487558e4b00 Mon Sep 17 00:00:00 2001 -Message-ID: <1c3a77471afbb3981af28f7f7c8b2487558e4b00.1782312403.git.lorenzo@kernel.org> -In-Reply-To: <1402ecccf5630a0b7fa4749d7d2e72abc3f3d73d.1782312403.git.lorenzo@kernel.org> -References: <1402ecccf5630a0b7fa4749d7d2e72abc3f3d73d.1782312403.git.lorenzo@kernel.org> -From: "Wayen.Yan" -Date: Fri, 12 Jun 2026 07:09:56 +0800 -Subject: [PATCH 2/2] net: airoha: Fix debugfs new-tuple display for IPv4 ROUTE - entries -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -In airoha_ppe_debugfs_foe_show(), the second switch statement falls -through from PPE_PKT_TYPE_IPV4_HNAPT/DSLITE to PPE_PKT_TYPE_IPV4_ROUTE, -accessing hwe->ipv4.new_tuple for all three types. However, IPv4 ROUTE -(3-tuple) entries do not contain a valid new_tuple — this field is only -meaningful for NATted flows (HNAPT/DSLITE). For ROUTE entries, the -memory at the new_tuple offset holds routing information, not NAT data, -so displaying "new=" produces garbage output. - -Display new_tuple only for HNAPT and DSLITE, and let IPV4_ROUTE fall -through to the default case. - -Fixes: 3fe15c640f38 ("net: airoha: Introduce PPE debugfs support") -Link: https://lore.kernel.org/6a2b40ea.4dd82583.3a5c46.e5a2@mx.google.com -Signed-off-by: Wayen.Yan -Acked-by: Lorenzo Bianconi -Link: https://patch.msgid.link/6a2be54b.ef98c1b2.3c3224.2ed8@mx.google.com -Signed-off-by: Jakub Kicinski ---- - drivers/net/ethernet/airoha/airoha_ppe_debugfs.c | 2 -- - 1 file changed, 2 deletions(-) - ---- a/drivers/net/ethernet/airoha/airoha_ppe_debugfs.c -+++ b/drivers/net/ethernet/airoha/airoha_ppe_debugfs.c -@@ -121,8 +121,6 @@ static int airoha_ppe_debugfs_foe_show(s - case PPE_PKT_TYPE_IPV4_DSLITE: - src_port = &hwe->ipv4.new_tuple.src_port; - dest_port = &hwe->ipv4.new_tuple.dest_port; -- fallthrough; -- case PPE_PKT_TYPE_IPV4_ROUTE: - src_addr = &hwe->ipv4.new_tuple.src_ip; - dest_addr = &hwe->ipv4.new_tuple.dest_ip; - seq_puts(m, " new="); diff --git a/target/linux/airoha/patches-6.18/172-v7.2-net-airoha-fix-foe_check_time-allocation-size.patch b/target/linux/airoha/patches-6.18/172-v7.2-net-airoha-fix-foe_check_time-allocation-size.patch deleted file mode 100644 index 9851f304349..00000000000 --- a/target/linux/airoha/patches-6.18/172-v7.2-net-airoha-fix-foe_check_time-allocation-size.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 5c121ee635680c93d7074becf14cfbaac140f80d Mon Sep 17 00:00:00 2001 -Message-ID: <5c121ee635680c93d7074becf14cfbaac140f80d.1782312136.git.lorenzo@kernel.org> -From: Wayen Yan -Date: Tue, 16 Jun 2026 19:52:36 +0800 -Subject: [PATCH] net: airoha: fix foe_check_time allocation size - -foe_check_time is declared as u16 pointer but was allocated with -only ppe_num_entries bytes instead of ppe_num_entries * sizeof(u16). - -When airoha_ppe_foe_verify_entry() is called with hash >= ppe_num_entries/2, -it writes beyond the allocated buffer, causing heap buffer overflow and -potential kernel crash. - -Fixes: 6d5b601d52a2 ("net: airoha: ppe: Dynamically allocate foe_check_time array in airoha_ppe struct") -Signed-off-by: Wayen Yan -Acked-by: Lorenzo Bianconi -Link: https://patch.msgid.link/178161119471.2163752.14373384830691569758@gmail.com -Signed-off-by: Jakub Kicinski ---- - drivers/net/ethernet/airoha/airoha_ppe.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - ---- a/drivers/net/ethernet/airoha/airoha_ppe.c -+++ b/drivers/net/ethernet/airoha/airoha_ppe.c -@@ -1601,7 +1601,8 @@ int airoha_ppe_init(struct airoha_eth *e - return -ENOMEM; - } - -- ppe->foe_check_time = devm_kzalloc(eth->dev, ppe_num_entries, -+ ppe->foe_check_time = devm_kzalloc(eth->dev, -+ ppe_num_entries * sizeof(*ppe->foe_check_time), - GFP_KERNEL); - if (!ppe->foe_check_time) - return -ENOMEM; diff --git a/target/linux/airoha/patches-6.18/174-v7.2-net-airoha-Fix-skb-priority-underflow-in-airoha_dev_.patch b/target/linux/airoha/patches-6.18/174-v7.2-net-airoha-Fix-skb-priority-underflow-in-airoha_dev_.patch deleted file mode 100644 index 4ec30e3850a..00000000000 --- a/target/linux/airoha/patches-6.18/174-v7.2-net-airoha-Fix-skb-priority-underflow-in-airoha_dev_.patch +++ /dev/null @@ -1,52 +0,0 @@ -From 86e51aa24686cc95bb35613059e8b94b9b81e3f0 Mon Sep 17 00:00:00 2001 -Message-ID: <86e51aa24686cc95bb35613059e8b94b9b81e3f0.1782312099.git.lorenzo@kernel.org> -From: Wayen Yan -Date: Sat, 20 Jun 2026 16:17:44 +0800 -Subject: [PATCH] net: airoha: Fix skb->priority underflow in - airoha_dev_select_queue() -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -In airoha_dev_select_queue(), the expression: - - queue = (skb->priority - 1) % AIROHA_NUM_QOS_QUEUES; - -implicitly converts to unsigned arithmetic: when skb->priority is 0 -(the default for unclassified traffic), (0u - 1u) wraps to UINT_MAX, -and UINT_MAX % 8 = 7, routing default best-effort packets to the -highest-priority QoS queue. This causes QoS inversion where the -majority of traffic on a PON gateway starves actual high-priority -flows (VoIP, gaming, etc.). - -The "- 1" offset was a leftover from the ETS offload implementation -that has since been removed. The correct mapping is a direct modulo: - - queue = skb->priority % AIROHA_NUM_QOS_QUEUES; - -This maps priority 0 → queue 0 (lowest), priority 7 → queue 7 -(highest), with higher priorities wrapping around. This is the -standard Linux sk_prio → HW queue mapping used by other drivers. - -Fixes: 2b288b81560b ("net: airoha: Introduce ndo_select_queue callback") -Link: https://lore.kernel.org/netdev/178185573207.2378135.3729126358670287878@gmail.com/ -Acked-by: Lorenzo Bianconi -Reviewed-by: Joe Damato -Signed-off-by: Wayen Yan -Link: https://patch.msgid.link/178194366700.2485734.5368768965976693502@gmail.com -Signed-off-by: Jakub Kicinski ---- - drivers/net/ethernet/airoha/airoha_eth.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - ---- a/drivers/net/ethernet/airoha/airoha_eth.c -+++ b/drivers/net/ethernet/airoha/airoha_eth.c -@@ -2110,7 +2110,7 @@ static u16 airoha_dev_select_queue(struc - */ - channel = netdev_uses_dsa(netdev) ? skb_get_queue_mapping(skb) : port->id; - channel = channel % AIROHA_NUM_QOS_CHANNELS; -- queue = (skb->priority - 1) % AIROHA_NUM_QOS_QUEUES; /* QoS queue */ -+ queue = skb->priority % AIROHA_NUM_QOS_QUEUES; - queue = channel * AIROHA_NUM_QOS_QUEUES + queue; - - return queue < netdev->num_tx_queues ? queue : 0; diff --git a/target/linux/airoha/patches-6.18/179-v7.2-pinctrl-airoha-Fix-type-in-.pin_config_group_get-cal.patch b/target/linux/airoha/patches-6.18/179-v7.2-pinctrl-airoha-Fix-type-in-.pin_config_group_get-cal.patch index c4fae20c515..897df63dda7 100644 --- a/target/linux/airoha/patches-6.18/179-v7.2-pinctrl-airoha-Fix-type-in-.pin_config_group_get-cal.patch +++ b/target/linux/airoha/patches-6.18/179-v7.2-pinctrl-airoha-Fix-type-in-.pin_config_group_get-cal.patch @@ -15,7 +15,7 @@ Signed-off-by: Linus Walleij --- a/drivers/pinctrl/mediatek/pinctrl-airoha.c +++ b/drivers/pinctrl/mediatek/pinctrl-airoha.c -@@ -2811,7 +2811,7 @@ static int airoha_pinconf_group_get(stru +@@ -2813,7 +2813,7 @@ static int airoha_pinconf_group_get(stru unsigned int group, unsigned long *config) { struct airoha_pinctrl *pinctrl = pinctrl_dev_get_drvdata(pctrl_dev); diff --git a/target/linux/airoha/patches-6.18/180-01-v7.2-pinctrl-Move-Airoha-driver-to-dedicated-directory.patch b/target/linux/airoha/patches-6.18/180-01-v7.2-pinctrl-Move-Airoha-driver-to-dedicated-directory.patch index d8715674d7c..2f9c29c1163 100644 --- a/target/linux/airoha/patches-6.18/180-01-v7.2-pinctrl-Move-Airoha-driver-to-dedicated-directory.patch +++ b/target/linux/airoha/patches-6.18/180-01-v7.2-pinctrl-Move-Airoha-driver-to-dedicated-directory.patch @@ -133,7 +133,7 @@ Signed-off-by: Linus Walleij obj-$(CONFIG_PINCTRL_MT76X8) += pinctrl-mt76x8.o --- /dev/null +++ b/drivers/pinctrl/airoha/pinctrl-airoha.c -@@ -0,0 +1,3030 @@ +@@ -0,0 +1,3032 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Author: Lorenzo Bianconi @@ -675,6 +675,7 @@ Signed-off-by: Linus Walleij +static const int en7581_gpio29_pins[] = { 42 }; +static const int en7581_gpio30_pins[] = { 43 }; +static const int en7581_gpio31_pins[] = { 44 }; ++static const int en7581_gpio32_pins[] = { 45 }; +static const int en7581_gpio33_pins[] = { 46 }; +static const int en7581_gpio34_pins[] = { 47 }; +static const int en7581_gpio35_pins[] = { 48 }; @@ -759,6 +760,7 @@ Signed-off-by: Linus Walleij + PINCTRL_PIN_GROUP("gpio29", en7581_gpio29), + PINCTRL_PIN_GROUP("gpio30", en7581_gpio30), + PINCTRL_PIN_GROUP("gpio31", en7581_gpio31), ++ PINCTRL_PIN_GROUP("gpio32", en7581_gpio32), + PINCTRL_PIN_GROUP("gpio33", en7581_gpio33), + PINCTRL_PIN_GROUP("gpio34", en7581_gpio34), + PINCTRL_PIN_GROUP("gpio35", en7581_gpio35), @@ -1930,7 +1932,7 @@ Signed-off-by: Linus Walleij + PINCTRL_CONF_DESC(29, REG_GPIO_L_PU, BIT(16)), + PINCTRL_CONF_DESC(30, REG_GPIO_L_PU, BIT(17)), + PINCTRL_CONF_DESC(31, REG_GPIO_L_PU, BIT(18)), -+ PINCTRL_CONF_DESC(32, REG_GPIO_L_PU, BIT(18)), ++ PINCTRL_CONF_DESC(32, REG_GPIO_L_PU, BIT(19)), + PINCTRL_CONF_DESC(33, REG_GPIO_L_PU, BIT(20)), + PINCTRL_CONF_DESC(34, REG_GPIO_L_PU, BIT(21)), + PINCTRL_CONF_DESC(35, REG_GPIO_L_PU, BIT(22)), @@ -2047,7 +2049,7 @@ Signed-off-by: Linus Walleij + PINCTRL_CONF_DESC(29, REG_GPIO_L_PD, BIT(16)), + PINCTRL_CONF_DESC(30, REG_GPIO_L_PD, BIT(17)), + PINCTRL_CONF_DESC(31, REG_GPIO_L_PD, BIT(18)), -+ PINCTRL_CONF_DESC(32, REG_GPIO_L_PD, BIT(18)), ++ PINCTRL_CONF_DESC(32, REG_GPIO_L_PD, BIT(19)), + PINCTRL_CONF_DESC(33, REG_GPIO_L_PD, BIT(20)), + PINCTRL_CONF_DESC(34, REG_GPIO_L_PD, BIT(21)), + PINCTRL_CONF_DESC(35, REG_GPIO_L_PD, BIT(22)), @@ -2164,7 +2166,7 @@ Signed-off-by: Linus Walleij + PINCTRL_CONF_DESC(29, REG_GPIO_L_E2, BIT(16)), + PINCTRL_CONF_DESC(30, REG_GPIO_L_E2, BIT(17)), + PINCTRL_CONF_DESC(31, REG_GPIO_L_E2, BIT(18)), -+ PINCTRL_CONF_DESC(32, REG_GPIO_L_E2, BIT(18)), ++ PINCTRL_CONF_DESC(32, REG_GPIO_L_E2, BIT(19)), + PINCTRL_CONF_DESC(33, REG_GPIO_L_E2, BIT(20)), + PINCTRL_CONF_DESC(34, REG_GPIO_L_E2, BIT(21)), + PINCTRL_CONF_DESC(35, REG_GPIO_L_E2, BIT(22)), @@ -2281,7 +2283,7 @@ Signed-off-by: Linus Walleij + PINCTRL_CONF_DESC(29, REG_GPIO_L_E4, BIT(16)), + PINCTRL_CONF_DESC(30, REG_GPIO_L_E4, BIT(17)), + PINCTRL_CONF_DESC(31, REG_GPIO_L_E4, BIT(18)), -+ PINCTRL_CONF_DESC(32, REG_GPIO_L_E4, BIT(18)), ++ PINCTRL_CONF_DESC(32, REG_GPIO_L_E4, BIT(19)), + PINCTRL_CONF_DESC(33, REG_GPIO_L_E4, BIT(20)), + PINCTRL_CONF_DESC(34, REG_GPIO_L_E4, BIT(21)), + PINCTRL_CONF_DESC(35, REG_GPIO_L_E4, BIT(22)), @@ -3166,7 +3168,7 @@ Signed-off-by: Linus Walleij +MODULE_DESCRIPTION("Pinctrl driver for Airoha SoC"); --- a/drivers/pinctrl/mediatek/pinctrl-airoha.c +++ /dev/null -@@ -1,3030 +0,0 @@ +@@ -1,3032 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-only -/* - * Author: Lorenzo Bianconi @@ -3708,6 +3710,7 @@ Signed-off-by: Linus Walleij -static const int en7581_gpio29_pins[] = { 42 }; -static const int en7581_gpio30_pins[] = { 43 }; -static const int en7581_gpio31_pins[] = { 44 }; +-static const int en7581_gpio32_pins[] = { 45 }; -static const int en7581_gpio33_pins[] = { 46 }; -static const int en7581_gpio34_pins[] = { 47 }; -static const int en7581_gpio35_pins[] = { 48 }; @@ -3792,6 +3795,7 @@ Signed-off-by: Linus Walleij - PINCTRL_PIN_GROUP("gpio29", en7581_gpio29), - PINCTRL_PIN_GROUP("gpio30", en7581_gpio30), - PINCTRL_PIN_GROUP("gpio31", en7581_gpio31), +- PINCTRL_PIN_GROUP("gpio32", en7581_gpio32), - PINCTRL_PIN_GROUP("gpio33", en7581_gpio33), - PINCTRL_PIN_GROUP("gpio34", en7581_gpio34), - PINCTRL_PIN_GROUP("gpio35", en7581_gpio35), @@ -4963,7 +4967,7 @@ Signed-off-by: Linus Walleij - PINCTRL_CONF_DESC(29, REG_GPIO_L_PU, BIT(16)), - PINCTRL_CONF_DESC(30, REG_GPIO_L_PU, BIT(17)), - PINCTRL_CONF_DESC(31, REG_GPIO_L_PU, BIT(18)), -- PINCTRL_CONF_DESC(32, REG_GPIO_L_PU, BIT(18)), +- PINCTRL_CONF_DESC(32, REG_GPIO_L_PU, BIT(19)), - PINCTRL_CONF_DESC(33, REG_GPIO_L_PU, BIT(20)), - PINCTRL_CONF_DESC(34, REG_GPIO_L_PU, BIT(21)), - PINCTRL_CONF_DESC(35, REG_GPIO_L_PU, BIT(22)), @@ -5080,7 +5084,7 @@ Signed-off-by: Linus Walleij - PINCTRL_CONF_DESC(29, REG_GPIO_L_PD, BIT(16)), - PINCTRL_CONF_DESC(30, REG_GPIO_L_PD, BIT(17)), - PINCTRL_CONF_DESC(31, REG_GPIO_L_PD, BIT(18)), -- PINCTRL_CONF_DESC(32, REG_GPIO_L_PD, BIT(18)), +- PINCTRL_CONF_DESC(32, REG_GPIO_L_PD, BIT(19)), - PINCTRL_CONF_DESC(33, REG_GPIO_L_PD, BIT(20)), - PINCTRL_CONF_DESC(34, REG_GPIO_L_PD, BIT(21)), - PINCTRL_CONF_DESC(35, REG_GPIO_L_PD, BIT(22)), @@ -5197,7 +5201,7 @@ Signed-off-by: Linus Walleij - PINCTRL_CONF_DESC(29, REG_GPIO_L_E2, BIT(16)), - PINCTRL_CONF_DESC(30, REG_GPIO_L_E2, BIT(17)), - PINCTRL_CONF_DESC(31, REG_GPIO_L_E2, BIT(18)), -- PINCTRL_CONF_DESC(32, REG_GPIO_L_E2, BIT(18)), +- PINCTRL_CONF_DESC(32, REG_GPIO_L_E2, BIT(19)), - PINCTRL_CONF_DESC(33, REG_GPIO_L_E2, BIT(20)), - PINCTRL_CONF_DESC(34, REG_GPIO_L_E2, BIT(21)), - PINCTRL_CONF_DESC(35, REG_GPIO_L_E2, BIT(22)), @@ -5314,7 +5318,7 @@ Signed-off-by: Linus Walleij - PINCTRL_CONF_DESC(29, REG_GPIO_L_E4, BIT(16)), - PINCTRL_CONF_DESC(30, REG_GPIO_L_E4, BIT(17)), - PINCTRL_CONF_DESC(31, REG_GPIO_L_E4, BIT(18)), -- PINCTRL_CONF_DESC(32, REG_GPIO_L_E4, BIT(18)), +- PINCTRL_CONF_DESC(32, REG_GPIO_L_E4, BIT(19)), - PINCTRL_CONF_DESC(33, REG_GPIO_L_E4, BIT(20)), - PINCTRL_CONF_DESC(34, REG_GPIO_L_E4, BIT(21)), - PINCTRL_CONF_DESC(35, REG_GPIO_L_E4, BIT(22)), diff --git a/target/linux/airoha/patches-6.18/180-02-v7.2-pinctrl-airoha-an7581-add-missed-gpio32-pin-group.patch b/target/linux/airoha/patches-6.18/180-02-v7.2-pinctrl-airoha-an7581-add-missed-gpio32-pin-group.patch deleted file mode 100644 index 5252930395a..00000000000 --- a/target/linux/airoha/patches-6.18/180-02-v7.2-pinctrl-airoha-an7581-add-missed-gpio32-pin-group.patch +++ /dev/null @@ -1,33 +0,0 @@ -From a404c3800118863a2a53b42232aff5f6defde7dd Mon Sep 17 00:00:00 2001 -From: Mikhail Kshevetskiy -Date: Sat, 6 Jun 2026 05:03:32 +0300 -Subject: [PATCH] pinctrl: airoha: an7581: add missed gpio32 pin group - -gpio32 pin group is missed for an7581 SoC. This patch add it. - -Fixes: 1c8ace2d0725 ("pinctrl: airoha: Add support for EN7581 SoC") -Signed-off-by: Mikhail Kshevetskiy -Reviewed-by: Bartosz Golaszewski -Signed-off-by: Linus Walleij ---- - drivers/pinctrl/airoha/pinctrl-airoha.c | 2 ++ - 1 file changed, 2 insertions(+) - ---- a/drivers/pinctrl/airoha/pinctrl-airoha.c -+++ b/drivers/pinctrl/airoha/pinctrl-airoha.c -@@ -539,6 +539,7 @@ static const int en7581_gpio28_pins[] = - static const int en7581_gpio29_pins[] = { 42 }; - static const int en7581_gpio30_pins[] = { 43 }; - static const int en7581_gpio31_pins[] = { 44 }; -+static const int en7581_gpio32_pins[] = { 45 }; - static const int en7581_gpio33_pins[] = { 46 }; - static const int en7581_gpio34_pins[] = { 47 }; - static const int en7581_gpio35_pins[] = { 48 }; -@@ -623,6 +624,7 @@ static const struct pingroup en7581_pinc - PINCTRL_PIN_GROUP("gpio29", en7581_gpio29), - PINCTRL_PIN_GROUP("gpio30", en7581_gpio30), - PINCTRL_PIN_GROUP("gpio31", en7581_gpio31), -+ PINCTRL_PIN_GROUP("gpio32", en7581_gpio32), - PINCTRL_PIN_GROUP("gpio33", en7581_gpio33), - PINCTRL_PIN_GROUP("gpio34", en7581_gpio34), - PINCTRL_PIN_GROUP("gpio35", en7581_gpio35), diff --git a/target/linux/airoha/patches-6.18/180-04-v7.2-pinctrl-airoha-an7581-fix-misprint-in-gpio19-pinconf.patch b/target/linux/airoha/patches-6.18/180-04-v7.2-pinctrl-airoha-an7581-fix-misprint-in-gpio19-pinconf.patch deleted file mode 100644 index 2fbc1796577..00000000000 --- a/target/linux/airoha/patches-6.18/180-04-v7.2-pinctrl-airoha-an7581-fix-misprint-in-gpio19-pinconf.patch +++ /dev/null @@ -1,54 +0,0 @@ -From 756239ca5a5f55d7c6f6ed63b35b38cb3a39f118 Mon Sep 17 00:00:00 2001 -From: Mikhail Kshevetskiy -Date: Sat, 6 Jun 2026 05:03:34 +0300 -Subject: [PATCH] pinctrl: airoha: an7581: fix misprint in gpio19 pinconf - -Pin 32 (gpio19) duplicate pinconf settings of pin 31. Fix it using -a proper bit number in the configuration register. - -Fixes: 1c8ace2d0725 ("pinctrl: airoha: Add support for EN7581 SoC") -Signed-off-by: Mikhail Kshevetskiy -Reviewed-by: Bartosz Golaszewski -Signed-off-by: Linus Walleij ---- - drivers/pinctrl/airoha/pinctrl-airoha.c | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - ---- a/drivers/pinctrl/airoha/pinctrl-airoha.c -+++ b/drivers/pinctrl/airoha/pinctrl-airoha.c -@@ -1798,7 +1798,7 @@ static const struct airoha_pinctrl_conf - PINCTRL_CONF_DESC(29, REG_GPIO_L_PU, BIT(16)), - PINCTRL_CONF_DESC(30, REG_GPIO_L_PU, BIT(17)), - PINCTRL_CONF_DESC(31, REG_GPIO_L_PU, BIT(18)), -- PINCTRL_CONF_DESC(32, REG_GPIO_L_PU, BIT(18)), -+ PINCTRL_CONF_DESC(32, REG_GPIO_L_PU, BIT(19)), - PINCTRL_CONF_DESC(33, REG_GPIO_L_PU, BIT(20)), - PINCTRL_CONF_DESC(34, REG_GPIO_L_PU, BIT(21)), - PINCTRL_CONF_DESC(35, REG_GPIO_L_PU, BIT(22)), -@@ -1915,7 +1915,7 @@ static const struct airoha_pinctrl_conf - PINCTRL_CONF_DESC(29, REG_GPIO_L_PD, BIT(16)), - PINCTRL_CONF_DESC(30, REG_GPIO_L_PD, BIT(17)), - PINCTRL_CONF_DESC(31, REG_GPIO_L_PD, BIT(18)), -- PINCTRL_CONF_DESC(32, REG_GPIO_L_PD, BIT(18)), -+ PINCTRL_CONF_DESC(32, REG_GPIO_L_PD, BIT(19)), - PINCTRL_CONF_DESC(33, REG_GPIO_L_PD, BIT(20)), - PINCTRL_CONF_DESC(34, REG_GPIO_L_PD, BIT(21)), - PINCTRL_CONF_DESC(35, REG_GPIO_L_PD, BIT(22)), -@@ -2032,7 +2032,7 @@ static const struct airoha_pinctrl_conf - PINCTRL_CONF_DESC(29, REG_GPIO_L_E2, BIT(16)), - PINCTRL_CONF_DESC(30, REG_GPIO_L_E2, BIT(17)), - PINCTRL_CONF_DESC(31, REG_GPIO_L_E2, BIT(18)), -- PINCTRL_CONF_DESC(32, REG_GPIO_L_E2, BIT(18)), -+ PINCTRL_CONF_DESC(32, REG_GPIO_L_E2, BIT(19)), - PINCTRL_CONF_DESC(33, REG_GPIO_L_E2, BIT(20)), - PINCTRL_CONF_DESC(34, REG_GPIO_L_E2, BIT(21)), - PINCTRL_CONF_DESC(35, REG_GPIO_L_E2, BIT(22)), -@@ -2149,7 +2149,7 @@ static const struct airoha_pinctrl_conf - PINCTRL_CONF_DESC(29, REG_GPIO_L_E4, BIT(16)), - PINCTRL_CONF_DESC(30, REG_GPIO_L_E4, BIT(17)), - PINCTRL_CONF_DESC(31, REG_GPIO_L_E4, BIT(18)), -- PINCTRL_CONF_DESC(32, REG_GPIO_L_E4, BIT(18)), -+ PINCTRL_CONF_DESC(32, REG_GPIO_L_E4, BIT(19)), - PINCTRL_CONF_DESC(33, REG_GPIO_L_E4, BIT(20)), - PINCTRL_CONF_DESC(34, REG_GPIO_L_E4, BIT(21)), - PINCTRL_CONF_DESC(35, REG_GPIO_L_E4, BIT(22)), diff --git a/target/linux/airoha/patches-6.18/915-01-net-netfilter-flowtable-Add-the-capability-to-offloa.patch b/target/linux/airoha/patches-6.18/915-01-net-netfilter-flowtable-Add-the-capability-to-offloa.patch index 5229eb47987..30f0720ebf9 100644 --- a/target/linux/airoha/patches-6.18/915-01-net-netfilter-flowtable-Add-the-capability-to-offloa.patch +++ b/target/linux/airoha/patches-6.18/915-01-net-netfilter-flowtable-Add-the-capability-to-offloa.patch @@ -110,9 +110,9 @@ Signed-off-by: Lorenzo Bianconi #include #include #include -@@ -279,6 +280,27 @@ static int nft_flow_route(const struct n - return 0; - } +@@ -20,6 +21,27 @@ struct nft_flow_offload { + struct nft_flowtable *flowtable; + }; +static void nft_flow_set_dscp(const struct nft_pktinfo *pkt, + struct flow_offload *flow, @@ -138,7 +138,7 @@ Signed-off-by: Lorenzo Bianconi static bool nft_flow_offload_skip(struct sk_buff *skb, int family) { if (skb_sec_path(skb)) -@@ -371,6 +393,9 @@ static void nft_flow_offload_eval(const +@@ -112,6 +134,9 @@ static void nft_flow_offload_eval(const if (!flow) goto err_flow_alloc; diff --git a/target/linux/apm821xx/patches-6.18/700-net-ibm-emac-Clear-MAL-descriptors-without-memset.patch b/target/linux/apm821xx/patches-6.18/700-net-ibm-emac-Clear-MAL-descriptors-without-memset.patch index 9e494bba186..25ca06effda 100644 --- a/target/linux/apm821xx/patches-6.18/700-net-ibm-emac-Clear-MAL-descriptors-without-memset.patch +++ b/target/linux/apm821xx/patches-6.18/700-net-ibm-emac-Clear-MAL-descriptors-without-memset.patch @@ -36,7 +36,7 @@ Signed-off-by: Rosen Penev static int __emac_prepare_rx_skb(struct sk_buff *skb, struct emac_instance *dev, int slot) { -@@ -3086,8 +3097,8 @@ static int emac_probe(struct platform_de +@@ -3085,8 +3096,8 @@ static int emac_probe(struct platform_de DBG(dev, "rx_desc %p" NL, dev->rx_desc); /* Clean rings */ diff --git a/target/linux/ath79/patches-6.18/900-unaligned_access_hacks.patch b/target/linux/ath79/patches-6.18/900-unaligned_access_hacks.patch index 0938cdfe9aa..765cefe1bd7 100644 --- a/target/linux/ath79/patches-6.18/900-unaligned_access_hacks.patch +++ b/target/linux/ath79/patches-6.18/900-unaligned_access_hacks.patch @@ -295,7 +295,7 @@ SVN-Revision: 35130 &sin->sin6_addr); sin->sin6_scope_id = 0; } -@@ -891,12 +891,12 @@ int ip6_datagram_send_ctl(struct net *ne +@@ -890,12 +890,12 @@ int ip6_datagram_send_ctl(struct net *ne } if (fl6->flowlabel&IPV6_FLOWINFO_MASK) { @@ -337,7 +337,7 @@ SVN-Revision: 35130 #endif /* _LINUX_TYPES_H */ --- a/net/ipv4/af_inet.c +++ b/net/ipv4/af_inet.c -@@ -1492,7 +1492,7 @@ struct sk_buff *inet_gro_receive(struct +@@ -1487,7 +1487,7 @@ struct sk_buff *inet_gro_receive(struct goto out; NAPI_GRO_CB(skb)->proto = proto; diff --git a/target/linux/bcm27xx/patches-6.18/0008-of-overlay-Correct-symbol-path-fixups.patch b/target/linux/bcm27xx/patches-6.18/0008-of-overlay-Correct-symbol-path-fixups.patch index 2a4869bfa49..f4821d38119 100644 --- a/target/linux/bcm27xx/patches-6.18/0008-of-overlay-Correct-symbol-path-fixups.patch +++ b/target/linux/bcm27xx/patches-6.18/0008-of-overlay-Correct-symbol-path-fixups.patch @@ -26,7 +26,7 @@ Signed-off-by: Phil Elwell --- a/drivers/of/overlay.c +++ b/drivers/of/overlay.c -@@ -247,6 +247,8 @@ static struct property *dup_and_fixup_sy +@@ -256,6 +256,8 @@ static struct property *dup_and_fixup_sy if (!target_path) return NULL; target_path_len = strlen(target_path); diff --git a/target/linux/bcm27xx/patches-6.18/0054-mmc-bcm2835-mmc-added-alternative-MMC-driver.patch b/target/linux/bcm27xx/patches-6.18/0054-mmc-bcm2835-mmc-added-alternative-MMC-driver.patch index 2d0c63b4e82..21b07256003 100644 --- a/target/linux/bcm27xx/patches-6.18/0054-mmc-bcm2835-mmc-added-alternative-MMC-driver.patch +++ b/target/linux/bcm27xx/patches-6.18/0054-mmc-bcm2835-mmc-added-alternative-MMC-driver.patch @@ -296,7 +296,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, -@@ -3278,6 +3285,8 @@ static int mmc_blk_probe(struct mmc_card +@@ -3277,6 +3284,8 @@ static int mmc_blk_probe(struct mmc_card { struct mmc_blk_data *md; int ret = 0; @@ -305,7 +305,7 @@ Signed-off-by: Phil Elwell /* * Check that the card supports the command class(es) we need. -@@ -3285,7 +3294,16 @@ static int mmc_blk_probe(struct mmc_card +@@ -3284,7 +3293,16 @@ static int mmc_blk_probe(struct mmc_card if (!(card->csd.cmdclass & CCC_BLOCK_READ)) return -ENODEV; @@ -323,7 +323,7 @@ Signed-off-by: Phil Elwell card->complete_wq = alloc_workqueue("mmc_complete", WQ_MEM_RECLAIM | WQ_HIGHPRI, 0); -@@ -3300,6 +3318,17 @@ static int mmc_blk_probe(struct mmc_card +@@ -3299,6 +3317,17 @@ static int mmc_blk_probe(struct mmc_card goto out_free; } diff --git a/target/linux/bcm27xx/patches-6.18/0088-net-lan78xx-Disable-TCP-Segmentation-Offload-TSO.patch b/target/linux/bcm27xx/patches-6.18/0088-net-lan78xx-Disable-TCP-Segmentation-Offload-TSO.patch index 841ae369b13..18a5c482963 100644 --- a/target/linux/bcm27xx/patches-6.18/0088-net-lan78xx-Disable-TCP-Segmentation-Offload-TSO.patch +++ b/target/linux/bcm27xx/patches-6.18/0088-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; -@@ -3758,8 +3767,14 @@ static int lan78xx_bind(struct lan78xx_n +@@ -3793,8 +3802,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.18/0090-lan78xx-Debounce-link-events-to-minimize-poll-storm.patch b/target/linux/bcm27xx/patches-6.18/0090-lan78xx-Debounce-link-events-to-minimize-poll-storm.patch index 53be3985da0..9c5e768e655 100644 --- a/target/linux/bcm27xx/patches-6.18/0090-lan78xx-Debounce-link-events-to-minimize-poll-storm.patch +++ b/target/linux/bcm27xx/patches-6.18/0090-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; -@@ -4737,7 +4742,13 @@ static int lan78xx_probe(struct usb_inte +@@ -4772,7 +4777,13 @@ static int lan78xx_probe(struct usb_inte if (ret < 0) goto out4; diff --git a/target/linux/bcm27xx/patches-6.18/0091-Patching-lan78xx-for-SOF_TIMESTAMPING_TX_SOFTWARE-su.patch b/target/linux/bcm27xx/patches-6.18/0091-Patching-lan78xx-for-SOF_TIMESTAMPING_TX_SOFTWARE-su.patch index 5e57c94c15c..98cb5f17f82 100644 --- a/target/linux/bcm27xx/patches-6.18/0091-Patching-lan78xx-for-SOF_TIMESTAMPING_TX_SOFTWARE-su.patch +++ b/target/linux/bcm27xx/patches-6.18/0091-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 -@@ -1932,6 +1932,7 @@ static const struct ethtool_ops lan78xx_ +@@ -1953,6 +1953,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.18/0110-bcmgenet-Better-coalescing-parameter-defaults.patch b/target/linux/bcm27xx/patches-6.18/0110-bcmgenet-Better-coalescing-parameter-defaults.patch index d0d394c14d8..0302744550e 100644 --- a/target/linux/bcm27xx/patches-6.18/0110-bcmgenet-Better-coalescing-parameter-defaults.patch +++ b/target/linux/bcm27xx/patches-6.18/0110-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 -@@ -2722,7 +2722,7 @@ static void bcmgenet_init_tx_ring(struct +@@ -2714,7 +2714,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); -@@ -4079,8 +4079,10 @@ static int bcmgenet_probe(struct platfor +@@ -4072,8 +4072,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.18/0118-drm-v3d-Clock-V3D-down-when-not-in-use.patch b/target/linux/bcm27xx/patches-6.18/0118-drm-v3d-Clock-V3D-down-when-not-in-use.patch index 84593fe0822..6b309a9234e 100644 --- a/target/linux/bcm27xx/patches-6.18/0118-drm-v3d-Clock-V3D-down-when-not-in-use.patch +++ b/target/linux/bcm27xx/patches-6.18/0118-drm-v3d-Clock-V3D-down-when-not-in-use.patch @@ -291,7 +291,7 @@ Reviewed-by: Maíra Canal kref_init(&job->refcount); -@@ -1425,3 +1488,14 @@ fail: +@@ -1427,3 +1490,14 @@ fail: return ret; } diff --git a/target/linux/bcm27xx/patches-6.18/0121-net-bcmgenet-Workaround-2-for-Pi4-Ethernet-fail.patch b/target/linux/bcm27xx/patches-6.18/0121-net-bcmgenet-Workaround-2-for-Pi4-Ethernet-fail.patch index 3f338b886ba..e12643bc6db 100644 --- a/target/linux/bcm27xx/patches-6.18/0121-net-bcmgenet-Workaround-2-for-Pi4-Ethernet-fail.patch +++ b/target/linux/bcm27xx/patches-6.18/0121-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) { -@@ -2560,6 +2563,11 @@ static void reset_umac(struct bcmgenet_p +@@ -2552,6 +2555,11 @@ static void reset_umac(struct bcmgenet_p bcmgenet_rbuf_ctrl_set(priv, 0); udelay(10); diff --git a/target/linux/bcm27xx/patches-6.18/0159-bcmgenet-Disable-skip_umac_reset-by-default.patch b/target/linux/bcm27xx/patches-6.18/0159-bcmgenet-Disable-skip_umac_reset-by-default.patch index 7d67711f6a3..641427e7780 100644 --- a/target/linux/bcm27xx/patches-6.18/0159-bcmgenet-Disable-skip_umac_reset-by-default.patch +++ b/target/linux/bcm27xx/patches-6.18/0159-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.18/0212-drm-panel-Add-panel-driver-for-TDO-Y17B-based-panels.patch b/target/linux/bcm27xx/patches-6.18/0212-drm-panel-Add-panel-driver-for-TDO-Y17B-based-panels.patch index 38153550f06..1abb4436274 100644 --- a/target/linux/bcm27xx/patches-6.18/0212-drm-panel-Add-panel-driver-for-TDO-Y17B-based-panels.patch +++ b/target/linux/bcm27xx/patches-6.18/0212-drm-panel-Add-panel-driver-for-TDO-Y17B-based-panels.patch @@ -19,7 +19,7 @@ Signed-off-by: Dave Stevenson --- a/drivers/gpu/drm/panel/Kconfig +++ b/drivers/gpu/drm/panel/Kconfig -@@ -1056,6 +1056,17 @@ config DRM_PANEL_TDO_TL070WSH30 +@@ -1063,6 +1063,17 @@ config DRM_PANEL_TDO_TL070WSH30 24 bit RGB per pixel. It provides a MIPI DSI interface to the host, a built-in LED backlight and touch controller. diff --git a/target/linux/bcm27xx/patches-6.18/0213-drm-panel-Add-panel-driver-for-Waveshare-DSI-touchsc.patch b/target/linux/bcm27xx/patches-6.18/0213-drm-panel-Add-panel-driver-for-Waveshare-DSI-touchsc.patch index b878d3aaba6..c6932502c53 100644 --- a/target/linux/bcm27xx/patches-6.18/0213-drm-panel-Add-panel-driver-for-Waveshare-DSI-touchsc.patch +++ b/target/linux/bcm27xx/patches-6.18/0213-drm-panel-Add-panel-driver-for-Waveshare-DSI-touchsc.patch @@ -81,7 +81,7 @@ Signed-off-by: Waveshare_Team --- a/drivers/gpu/drm/panel/Kconfig +++ b/drivers/gpu/drm/panel/Kconfig -@@ -1148,6 +1148,26 @@ config DRM_PANEL_VISIONOX_VTDR6130 +@@ -1155,6 +1155,26 @@ config DRM_PANEL_VISIONOX_VTDR6130 Say Y here if you want to enable support for Visionox VTDR6130 1080x2400 AMOLED DSI panel. diff --git a/target/linux/bcm27xx/patches-6.18/0215-dt-bindings-vendor-prefixes-Add-Geekworm.patch b/target/linux/bcm27xx/patches-6.18/0215-dt-bindings-vendor-prefixes-Add-Geekworm.patch index 89d1d6bcb62..a8f3c2a6703 100644 --- a/target/linux/bcm27xx/patches-6.18/0215-dt-bindings-vendor-prefixes-Add-Geekworm.patch +++ b/target/linux/bcm27xx/patches-6.18/0215-dt-bindings-vendor-prefixes-Add-Geekworm.patch @@ -12,7 +12,7 @@ Signed-off-by: Chris Morgan --- a/Documentation/devicetree/bindings/vendor-prefixes.yaml +++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml -@@ -612,6 +612,8 @@ patternProperties: +@@ -614,6 +614,8 @@ patternProperties: description: General Electric Company "^geekbuying,.*": description: GeekBuying diff --git a/target/linux/bcm27xx/patches-6.18/0256-net-bcmgenet-Add-eee-module-parameter.patch b/target/linux/bcm27xx/patches-6.18/0256-net-bcmgenet-Add-eee-module-parameter.patch index 4f1965d6d55..b76ddddfd63 100644 --- a/target/linux/bcm27xx/patches-6.18/0256-net-bcmgenet-Add-eee-module-parameter.patch +++ b/target/linux/bcm27xx/patches-6.18/0256-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) { -@@ -3365,6 +3368,17 @@ static int bcmgenet_open(struct net_devi +@@ -3358,6 +3361,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.18/0293-net-macb-Also-set-DMA-coherent-mask.patch b/target/linux/bcm27xx/patches-6.18/0293-net-macb-Also-set-DMA-coherent-mask.patch index cb075437811..b5f986b57a8 100644 --- a/target/linux/bcm27xx/patches-6.18/0293-net-macb-Also-set-DMA-coherent-mask.patch +++ b/target/linux/bcm27xx/patches-6.18/0293-net-macb-Also-set-DMA-coherent-mask.patch @@ -242,7 +242,7 @@ Signed-off-by: Jonathan Bell macb_writel(bp, NCR, macb_readl(bp, NCR) | MACB_BIT(TSTART)); spin_unlock(&bp->lock); -@@ -2908,6 +2937,37 @@ static void macb_configure_dma(struct ma +@@ -2925,6 +2954,37 @@ static void macb_configure_dma(struct ma } } @@ -280,7 +280,7 @@ Signed-off-by: Jonathan Bell static void macb_init_hw(struct macb *bp) { u32 config; -@@ -2936,6 +2996,11 @@ static void macb_init_hw(struct macb *bp +@@ -2953,6 +3013,11 @@ static void macb_init_hw(struct macb *bp if (bp->caps & MACB_CAPS_JUMBO) bp->rx_frm_len_mask = MACB_RX_JFRMLEN_MASK; @@ -292,7 +292,7 @@ Signed-off-by: Jonathan Bell macb_configure_dma(bp); /* Enable RX partial store and forward and set watermark */ -@@ -3299,6 +3364,52 @@ static void gem_get_ethtool_strings(stru +@@ -3316,6 +3381,52 @@ static void gem_get_ethtool_strings(stru } } @@ -345,7 +345,7 @@ Signed-off-by: Jonathan Bell static void macb_get_stats(struct net_device *dev, struct rtnl_link_stats64 *nstat) { -@@ -4055,6 +4166,8 @@ static const struct ethtool_ops macb_eth +@@ -4072,6 +4183,8 @@ static const struct ethtool_ops macb_eth }; static const struct ethtool_ops gem_ethtool_ops = { @@ -354,7 +354,7 @@ Signed-off-by: Jonathan Bell .get_regs_len = macb_get_regs_len, .get_regs = macb_get_regs, .get_wol = macb_get_wol, -@@ -4068,6 +4181,8 @@ static const struct ethtool_ops gem_etht +@@ -4085,6 +4198,8 @@ static const struct ethtool_ops gem_etht .get_eth_mac_stats = gem_get_eth_mac_stats, .get_eth_phy_stats = gem_get_eth_phy_stats, .get_rmon_stats = gem_get_rmon_stats, @@ -363,7 +363,7 @@ Signed-off-by: Jonathan Bell .get_link_ksettings = macb_get_link_ksettings, .set_link_ksettings = macb_set_link_ksettings, .get_ringparam = macb_get_ringparam, -@@ -5634,6 +5749,11 @@ static int macb_probe(struct platform_de +@@ -5659,6 +5774,11 @@ static int macb_probe(struct platform_de } } } @@ -375,7 +375,7 @@ Signed-off-by: Jonathan Bell spin_lock_init(&bp->lock); spin_lock_init(&bp->stats_lock); -@@ -5694,6 +5814,21 @@ static int macb_probe(struct platform_de +@@ -5719,6 +5839,21 @@ static int macb_probe(struct platform_de else bp->phy_interface = interface; diff --git a/target/linux/bcm27xx/patches-6.18/0294-usb-dwc3-Set-DMA-and-coherent-masks-early.patch b/target/linux/bcm27xx/patches-6.18/0294-usb-dwc3-Set-DMA-and-coherent-masks-early.patch index 68d7bda4d22..972009c0097 100644 --- a/target/linux/bcm27xx/patches-6.18/0294-usb-dwc3-Set-DMA-and-coherent-masks-early.patch +++ b/target/linux/bcm27xx/patches-6.18/0294-usb-dwc3-Set-DMA-and-coherent-masks-early.patch @@ -213,7 +213,7 @@ Signed-off-by: Jonathan Bell }, --- a/drivers/usb/dwc3/core.c +++ b/drivers/usb/dwc3/core.c -@@ -1325,6 +1325,24 @@ static void dwc3_config_threshold(struct +@@ -1343,6 +1343,24 @@ static void dwc3_config_threshold(struct } } @@ -238,7 +238,7 @@ Signed-off-by: Jonathan Bell /** * dwc3_core_init - Low-level initialization of DWC3 Core * @dwc: Pointer to our controller context structure -@@ -1392,6 +1410,8 @@ static int dwc3_core_init(struct dwc3 *d +@@ -1412,6 +1430,8 @@ static int dwc3_core_init(struct dwc3 *d dwc3_config_soc_bus(dwc); @@ -247,7 +247,7 @@ Signed-off-by: Jonathan Bell ret = dwc3_phy_power_on(dwc); if (ret) goto err_exit_phy; -@@ -1520,6 +1540,24 @@ static int dwc3_core_init(struct dwc3 *d +@@ -1540,6 +1560,24 @@ static int dwc3_core_init(struct dwc3 *d dwc3_writel(dwc, DWC3_GUCTL3, reg); } @@ -272,7 +272,7 @@ Signed-off-by: Jonathan Bell return 0; err_power_off_phy: -@@ -1706,6 +1744,7 @@ static void dwc3_get_properties(struct d +@@ -1726,6 +1764,7 @@ static void dwc3_get_properties(struct d u8 tx_max_burst_prd = 0; u8 tx_fifo_resize_max_num; u16 num_hc_interrupters; @@ -280,7 +280,7 @@ Signed-off-by: Jonathan Bell /* default to highest possible threshold */ lpm_nyet_threshold = 0xf; -@@ -1728,6 +1767,8 @@ static void dwc3_get_properties(struct d +@@ -1748,6 +1787,8 @@ static void dwc3_get_properties(struct d /* default to a single XHCI interrupter */ num_hc_interrupters = 1; @@ -289,7 +289,7 @@ Signed-off-by: Jonathan Bell dwc->maximum_speed = usb_get_maximum_speed(dev); dwc->max_ssp_rate = usb_get_maximum_ssp_rate(dev); -@@ -1849,6 +1890,9 @@ static void dwc3_get_properties(struct d +@@ -1869,6 +1910,9 @@ static void dwc3_get_properties(struct d dwc->dis_split_quirk = device_property_read_bool(dev, "snps,dis-split-quirk"); @@ -299,7 +299,7 @@ Signed-off-by: Jonathan Bell dwc->lpm_nyet_threshold = lpm_nyet_threshold; dwc->tx_de_emphasis = tx_de_emphasis; -@@ -1866,6 +1910,8 @@ static void dwc3_get_properties(struct d +@@ -1886,6 +1930,8 @@ static void dwc3_get_properties(struct d dwc->tx_thr_num_pkt_prd = tx_thr_num_pkt_prd; dwc->tx_max_burst_prd = tx_max_burst_prd; @@ -308,7 +308,7 @@ Signed-off-by: Jonathan Bell dwc->tx_fifo_resize_max_num = tx_fifo_resize_max_num; dwc->num_hc_interrupters = num_hc_interrupters; -@@ -2230,6 +2276,12 @@ int dwc3_core_probe(const struct dwc3_pr +@@ -2250,6 +2296,12 @@ int dwc3_core_probe(const struct dwc3_pr if (IS_ERR(dwc->usb_psy)) return dev_err_probe(dev, PTR_ERR(dwc->usb_psy), "couldn't get usb power supply\n"); @@ -333,7 +333,7 @@ Signed-off-by: Jonathan Bell /* Global Debug LSP MUX Select */ #define DWC3_GDBGLSPMUX_ENDBC BIT(15) /* Host only */ #define DWC3_GDBGLSPMUX_HOSTSELECT(n) ((n) & 0x3fff) -@@ -1096,6 +1099,7 @@ struct dwc3_glue_ops { +@@ -1097,6 +1100,7 @@ struct dwc3_glue_ops { * @tx_fifo_resize_max_num: max number of fifos allocated during txfifo resize * @clear_stall_protocol: endpoint number that requires a delayed status phase * @num_hc_interrupters: number of host controller interrupters @@ -341,7 +341,7 @@ Signed-off-by: Jonathan Bell * @hsphy_interface: "utmi" or "ulpi" * @connected: true when we're connected to a host, false otherwise * @softconnect: true when gadget connect is called, false when disconnect runs -@@ -1352,6 +1356,7 @@ struct dwc3 { +@@ -1355,6 +1359,7 @@ struct dwc3 { u8 tx_fifo_resize_max_num; u8 clear_stall_protocol; u16 num_hc_interrupters; diff --git a/target/linux/bcm27xx/patches-6.18/0299-mmc-sdhci-of-dwcmshc-define-sdio-timeout-clocks.patch b/target/linux/bcm27xx/patches-6.18/0299-mmc-sdhci-of-dwcmshc-define-sdio-timeout-clocks.patch index fb21412099f..f4ab8f13dcd 100644 --- a/target/linux/bcm27xx/patches-6.18/0299-mmc-sdhci-of-dwcmshc-define-sdio-timeout-clocks.patch +++ b/target/linux/bcm27xx/patches-6.18/0299-mmc-sdhci-of-dwcmshc-define-sdio-timeout-clocks.patch @@ -15,10 +15,10 @@ Differentiate the RP1 variant of the Designware MSHC controller(s). Signed-off-by: Jonathan Bell --- - drivers/mmc/host/sdhci-of-dwcmshc.c | 56 +++++++++++++++++++++++++++-- + drivers/mmc/host/sdhci-of-dwcmshc.c | 62 ++++++++++++++++++++++++++----- drivers/mmc/host/sdhci-pltfm.c | 8 +++++ drivers/mmc/host/sdhci-pltfm.h | 3 ++ - 3 files changed, 64 insertions(+), 3 deletions(-) + 3 files changed, 68 insertions(+), 5 deletions(-) --- a/drivers/mmc/host/sdhci-of-dwcmshc.c +++ b/drivers/mmc/host/sdhci-of-dwcmshc.c @@ -103,47 +103,66 @@ Signed-off-by: Jonathan Bell .compatible = "rockchip,rk3588-dwcmshc", .data = &sdhci_dwcmshc_rk35xx_pdata, }, -@@ -1427,13 +1457,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); +@@ -1430,13 +1460,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) -+ return err; ++ 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); -+ return err; - } ++ goto err_bus_clk; ++ } + err = clk_prepare_enable(pltfm_host->timeout_clk); -+ if (err) -+ return err; - - 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; -@@ -1493,6 +1542,7 @@ err_rpm: +@@ -1448,7 +1497,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 +@@ -1494,6 +1543,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: +@@ -1529,6 +1580,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); - return err; + } + --- 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.18/0310-hwmon-Add-RP1-ADC-and-temperature-driver.patch b/target/linux/bcm27xx/patches-6.18/0310-hwmon-Add-RP1-ADC-and-temperature-driver.patch index bada8fed8a7..56a2d0a00f8 100644 --- a/target/linux/bcm27xx/patches-6.18/0310-hwmon-Add-RP1-ADC-and-temperature-driver.patch +++ b/target/linux/bcm27xx/patches-6.18/0310-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 -@@ -2660,6 +2660,13 @@ config SENSORS_INTEL_M10_BMC_HWMON +@@ -2663,6 +2663,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.18/0343-drivers-usb-dwc3-add-FS-LS-bus-instance-parkmode-dis.patch b/target/linux/bcm27xx/patches-6.18/0343-drivers-usb-dwc3-add-FS-LS-bus-instance-parkmode-dis.patch index 0979bd125f2..ccd4b2dfb17 100644 --- a/target/linux/bcm27xx/patches-6.18/0343-drivers-usb-dwc3-add-FS-LS-bus-instance-parkmode-dis.patch +++ b/target/linux/bcm27xx/patches-6.18/0343-drivers-usb-dwc3-add-FS-LS-bus-instance-parkmode-dis.patch @@ -16,7 +16,7 @@ Signed-off-by: Jonathan Bell --- a/drivers/usb/dwc3/core.c +++ b/drivers/usb/dwc3/core.c -@@ -1491,6 +1491,9 @@ static int dwc3_core_init(struct dwc3 *d +@@ -1511,6 +1511,9 @@ static int dwc3_core_init(struct dwc3 *d if (dwc->parkmode_disable_hs_quirk) reg |= DWC3_GUCTL1_PARKMODE_DISABLE_HS; @@ -26,7 +26,7 @@ Signed-off-by: Jonathan Bell if (DWC3_VER_IS_WITHIN(DWC3, 290A, ANY)) { if (dwc->maximum_speed == USB_SPEED_FULL || dwc->maximum_speed == USB_SPEED_HIGH) -@@ -1870,6 +1873,8 @@ static void dwc3_get_properties(struct d +@@ -1890,6 +1893,8 @@ static void dwc3_get_properties(struct d "snps,parkmode-disable-ss-quirk"); dwc->parkmode_disable_hs_quirk = device_property_read_bool(dev, "snps,parkmode-disable-hs-quirk"); @@ -45,7 +45,7 @@ Signed-off-by: Jonathan Bell #define DWC3_GUCTL1_RESUME_OPMODE_HS_HOST BIT(10) /* Global Status Register */ -@@ -1151,10 +1152,12 @@ struct dwc3_glue_ops { +@@ -1152,10 +1153,12 @@ struct dwc3_glue_ops { * generation after resume from suspend. * @ulpi_ext_vbus_drv: Set to confiure the upli chip to drives CPEN pin * VBUS with an external supply. @@ -62,7 +62,7 @@ Signed-off-by: Jonathan Bell * @gfladj_refclk_lpm_sel: set if we need to enable SOF/ITP counter * running based on ref_clk * @tx_de_emphasis_quirk: set if we enable Tx de-emphasis quirk -@@ -1400,6 +1403,7 @@ struct dwc3 { +@@ -1403,6 +1406,7 @@ struct dwc3 { unsigned ulpi_ext_vbus_drv:1; unsigned parkmode_disable_ss_quirk:1; unsigned parkmode_disable_hs_quirk:1; diff --git a/target/linux/bcm27xx/patches-6.18/0414-usb-dwc3-core-add-support-for-setting-NAK-enhancemen.patch b/target/linux/bcm27xx/patches-6.18/0414-usb-dwc3-core-add-support-for-setting-NAK-enhancemen.patch index bcbe97c8733..92632889704 100644 --- a/target/linux/bcm27xx/patches-6.18/0414-usb-dwc3-core-add-support-for-setting-NAK-enhancemen.patch +++ b/target/linux/bcm27xx/patches-6.18/0414-usb-dwc3-core-add-support-for-setting-NAK-enhancemen.patch @@ -22,7 +22,7 @@ Signed-off-by: Jonathan Bell --- a/drivers/usb/dwc3/core.c +++ b/drivers/usb/dwc3/core.c -@@ -1485,6 +1485,12 @@ static int dwc3_core_init(struct dwc3 *d +@@ -1505,6 +1505,12 @@ static int dwc3_core_init(struct dwc3 *d if (dwc->dis_tx_ipgap_linecheck_quirk) reg |= DWC3_GUCTL1_TX_IPGAP_LINECHECK_DIS; @@ -35,7 +35,7 @@ Signed-off-by: Jonathan Bell if (dwc->parkmode_disable_ss_quirk) reg |= DWC3_GUCTL1_PARKMODE_DISABLE_SS; -@@ -1869,6 +1875,10 @@ static void dwc3_get_properties(struct d +@@ -1889,6 +1895,10 @@ static void dwc3_get_properties(struct d "snps,resume-hs-terminations"); dwc->ulpi_ext_vbus_drv = device_property_read_bool(dev, "snps,ulpi-ext-vbus-drv"); @@ -57,7 +57,7 @@ Signed-off-by: Jonathan Bell #define DWC3_GUCTL1_PARKMODE_DISABLE_SS BIT(17) #define DWC3_GUCTL1_PARKMODE_DISABLE_HS BIT(16) #define DWC3_GUCTL1_PARKMODE_DISABLE_FSLS BIT(15) -@@ -1152,6 +1154,8 @@ struct dwc3_glue_ops { +@@ -1153,6 +1155,8 @@ struct dwc3_glue_ops { * generation after resume from suspend. * @ulpi_ext_vbus_drv: Set to confiure the upli chip to drives CPEN pin * VBUS with an external supply. @@ -66,7 +66,7 @@ Signed-off-by: Jonathan Bell * @parkmode_disable_ss_quirk: If set, disable park mode feature for all * Superspeed instances. * @parkmode_disable_hs_quirk: If set, disable park mode feature for all -@@ -1401,6 +1405,8 @@ struct dwc3 { +@@ -1404,6 +1408,8 @@ struct dwc3 { unsigned dis_tx_ipgap_linecheck_quirk:1; unsigned resume_hs_terminations:1; unsigned ulpi_ext_vbus_drv:1; diff --git a/target/linux/bcm27xx/patches-6.18/0571-net-lan78xx-Ack-pending-PHY-ints-when-resetting.patch b/target/linux/bcm27xx/patches-6.18/0571-net-lan78xx-Ack-pending-PHY-ints-when-resetting.patch index 6abc7a6e921..679547a0e1a 100644 --- a/target/linux/bcm27xx/patches-6.18/0571-net-lan78xx-Ack-pending-PHY-ints-when-resetting.patch +++ b/target/linux/bcm27xx/patches-6.18/0571-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 -@@ -1629,7 +1629,16 @@ exit_unlock: +@@ -1650,7 +1650,16 @@ exit_unlock: */ static int lan78xx_phy_int_ack(struct lan78xx_net *dev) { diff --git a/target/linux/bcm27xx/patches-6.18/0572-lan78xx-Enable-LEDs-and-auto-negotiation.patch b/target/linux/bcm27xx/patches-6.18/0572-lan78xx-Enable-LEDs-and-auto-negotiation.patch index c402e6800a5..189ecb92dba 100644 --- a/target/linux/bcm27xx/patches-6.18/0572-lan78xx-Enable-LEDs-and-auto-negotiation.patch +++ b/target/linux/bcm27xx/patches-6.18/0572-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 -@@ -3250,6 +3250,11 @@ static int lan78xx_reset(struct lan78xx_ +@@ -3285,6 +3285,11 @@ static int lan78xx_reset(struct lan78xx_ unsigned long timeout; int ret; u32 buf; @@ -26,7 +26,7 @@ Signed-off-by: Phil Elwell ret = lan78xx_read_reg(dev, HW_CFG, &buf); if (ret < 0) -@@ -3320,6 +3325,10 @@ static int lan78xx_reset(struct lan78xx_ +@@ -3355,6 +3360,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; -@@ -3412,6 +3421,10 @@ static int lan78xx_reset(struct lan78xx_ +@@ -3447,6 +3456,10 @@ static int lan78xx_reset(struct lan78xx_ if (dev->chipid == ID_REV_CHIP_ID_7801_) buf &= ~MAC_CR_GMII_EN_; diff --git a/target/linux/bcm27xx/patches-6.18/0573-lan78xx-Read-initial-EEE-status-from-DT.patch b/target/linux/bcm27xx/patches-6.18/0573-lan78xx-Read-initial-EEE-status-from-DT.patch index 784a7f64072..d6feefbeec2 100644 --- a/target/linux/bcm27xx/patches-6.18/0573-lan78xx-Read-initial-EEE-status-from-DT.patch +++ b/target/linux/bcm27xx/patches-6.18/0573-lan78xx-Read-initial-EEE-status-from-DT.patch @@ -25,7 +25,7 @@ Signed-off-by: Phil Elwell --- a/drivers/net/usb/lan78xx.c +++ b/drivers/net/usb/lan78xx.c -@@ -2898,6 +2898,29 @@ static int lan78xx_phy_init(struct lan78 +@@ -2930,6 +2930,29 @@ static int lan78xx_phy_init(struct lan78 goto phylink_uninit; } diff --git a/target/linux/bcm27xx/patches-6.18/0574-lan78xx-Return-tx_lpi_timer-even-if-disabled.patch b/target/linux/bcm27xx/patches-6.18/0574-lan78xx-Return-tx_lpi_timer-even-if-disabled.patch index 4202877dc1c..fe486f3c697 100644 --- a/target/linux/bcm27xx/patches-6.18/0574-lan78xx-Return-tx_lpi_timer-even-if-disabled.patch +++ b/target/linux/bcm27xx/patches-6.18/0574-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 -@@ -1818,15 +1818,34 @@ exit_pm_put: +@@ -1839,15 +1839,34 @@ exit_pm_put: static int lan78xx_get_eee(struct net_device *net, struct ethtool_keee *edata) { struct lan78xx_net *dev = netdev_priv(net); diff --git a/target/linux/bcm27xx/patches-6.18/0655-DOWNSTREAM-drm-v3d-Delete-downstream-CLK-management.patch b/target/linux/bcm27xx/patches-6.18/0655-DOWNSTREAM-drm-v3d-Delete-downstream-CLK-management.patch index cd88937d379..6923fc2bd37 100644 --- a/target/linux/bcm27xx/patches-6.18/0655-DOWNSTREAM-drm-v3d-Delete-downstream-CLK-management.patch +++ b/target/linux/bcm27xx/patches-6.18/0655-DOWNSTREAM-drm-v3d-Delete-downstream-CLK-management.patch @@ -215,7 +215,7 @@ Signed-off-by: Maíra Canal kref_init(&job->refcount); -@@ -1402,7 +1339,7 @@ v3d_submit_cpu_ioctl(struct drm_device * +@@ -1404,7 +1341,7 @@ v3d_submit_cpu_ioctl(struct drm_device * trace_v3d_submit_cpu_ioctl(&v3d->drm, cpu_job->job_type); ret = v3d_job_init(v3d, file_priv, &cpu_job->base, @@ -224,7 +224,7 @@ Signed-off-by: Maíra Canal if (ret) { v3d_job_deallocate((void *)&cpu_job); goto fail; -@@ -1488,14 +1425,3 @@ fail: +@@ -1490,14 +1427,3 @@ fail: return ret; } diff --git a/target/linux/bcm27xx/patches-6.18/0662-net-cadence-macb-implement-EEE-TX-LPI-support.patch b/target/linux/bcm27xx/patches-6.18/0662-net-cadence-macb-implement-EEE-TX-LPI-support.patch index 890d04541cb..a220459703d 100644 --- a/target/linux/bcm27xx/patches-6.18/0662-net-cadence-macb-implement-EEE-TX-LPI-support.patch +++ b/target/linux/bcm27xx/patches-6.18/0662-net-cadence-macb-implement-EEE-TX-LPI-support.patch @@ -257,7 +257,7 @@ Signed-off-by: Nicolai Buchwitz /* TSTART write might get dropped, so make the IRQ retrigger a buffer read */ if (macb_readl(bp, TSR) & MACB_BIT(TGO)) -@@ -3206,6 +3326,8 @@ static int macb_close(struct net_device +@@ -3223,6 +3343,8 @@ static int macb_close(struct net_device netdev_tx_reset_queue(netdev_get_tx_queue(dev, q)); } @@ -266,7 +266,7 @@ Signed-off-by: Nicolai Buchwitz phylink_stop(bp->phylink); phylink_disconnect_phy(bp->phylink); -@@ -5847,6 +5969,7 @@ static int macb_probe(struct platform_de +@@ -5872,6 +5994,7 @@ static int macb_probe(struct platform_de } INIT_WORK(&bp->hresp_err_bh_work, macb_hresp_error_task); @@ -274,7 +274,7 @@ Signed-off-by: Nicolai Buchwitz netdev_info(dev, "Cadence %s rev 0x%08x at 0x%08lx irq %d (%pM)\n", macb_is_gem(bp) ? "GEM" : "MACB", macb_readl(bp, MID), -@@ -5891,6 +6014,7 @@ static void macb_remove(struct platform_ +@@ -5916,6 +6039,7 @@ static void macb_remove(struct platform_ mdiobus_free(bp->mii_bus); device_set_wakeup_enable(&bp->pdev->dev, 0); diff --git a/target/linux/bcm27xx/patches-6.18/0663-net-cadence-macb-add-ethtool-EEE-support.patch b/target/linux/bcm27xx/patches-6.18/0663-net-cadence-macb-add-ethtool-EEE-support.patch index e5d77f29fc4..24a69b9f66e 100644 --- a/target/linux/bcm27xx/patches-6.18/0663-net-cadence-macb-add-ethtool-EEE-support.patch +++ b/target/linux/bcm27xx/patches-6.18/0663-net-cadence-macb-add-ethtool-EEE-support.patch @@ -26,7 +26,7 @@ Signed-off-by: Nicolai Buchwitz --- a/drivers/net/ethernet/cadence/macb_main.c +++ b/drivers/net/ethernet/cadence/macb_main.c -@@ -4287,6 +4287,20 @@ static const struct ethtool_ops macb_eth +@@ -4304,6 +4304,20 @@ static const struct ethtool_ops macb_eth .set_ringparam = macb_set_ringparam, }; @@ -47,7 +47,7 @@ Signed-off-by: Nicolai Buchwitz static const struct ethtool_ops gem_ethtool_ops = { .supported_coalesce_params = ETHTOOL_COALESCE_RX_USECS | ETHTOOL_COALESCE_TX_USECS, -@@ -4311,6 +4325,8 @@ static const struct ethtool_ops gem_etht +@@ -4328,6 +4342,8 @@ static const struct ethtool_ops gem_etht .set_ringparam = macb_set_ringparam, .get_rxnfc = gem_get_rxnfc, .set_rxnfc = gem_set_rxnfc, diff --git a/target/linux/bcm27xx/patches-6.18/0664-net-cadence-macb-enable-EEE-for-Raspberry-Pi-RP1.patch b/target/linux/bcm27xx/patches-6.18/0664-net-cadence-macb-enable-EEE-for-Raspberry-Pi-RP1.patch index 2c4e77e047b..d326d1e7a5d 100644 --- a/target/linux/bcm27xx/patches-6.18/0664-net-cadence-macb-enable-EEE-for-Raspberry-Pi-RP1.patch +++ b/target/linux/bcm27xx/patches-6.18/0664-net-cadence-macb-enable-EEE-for-Raspberry-Pi-RP1.patch @@ -29,7 +29,7 @@ Signed-off-by: Nicolai Buchwitz --- a/drivers/net/ethernet/cadence/macb_main.c +++ b/drivers/net/ethernet/cadence/macb_main.c -@@ -5727,7 +5727,8 @@ static const struct macb_config versal_c +@@ -5752,7 +5752,8 @@ static const struct macb_config versal_c static const struct macb_config raspberrypi_rp1_config = { .caps = MACB_CAPS_GIGABIT_MODE_AVAILABLE | MACB_CAPS_CLK_HW_CHG | MACB_CAPS_JUMBO | diff --git a/target/linux/bcm27xx/patches-6.18/0689-Revert-net-bcmgenet-Add-eee-module-parameter.patch b/target/linux/bcm27xx/patches-6.18/0689-Revert-net-bcmgenet-Add-eee-module-parameter.patch index 725a01fc4b9..90582225e24 100644 --- a/target/linux/bcm27xx/patches-6.18/0689-Revert-net-bcmgenet-Add-eee-module-parameter.patch +++ b/target/linux/bcm27xx/patches-6.18/0689-Revert-net-bcmgenet-Add-eee-module-parameter.patch @@ -10,7 +10,7 @@ This reverts commit 712989f8e002e8a088f24a6cef4d8c1ed1a74e08. --- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c +++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c -@@ -68,9 +68,6 @@ static void bcmgenet_set_rx_mode(struct +@@ -67,9 +67,6 @@ 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"); @@ -20,7 +20,7 @@ This reverts commit 712989f8e002e8a088f24a6cef4d8c1ed1a74e08. static inline void bcmgenet_writel(u32 value, void __iomem *offset) { -@@ -3368,17 +3365,6 @@ static int bcmgenet_open(struct net_devi +@@ -3361,17 +3358,6 @@ 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.18/0690-Revert-bcmgenet-Disable-skip_umac_reset-by-default.patch b/target/linux/bcm27xx/patches-6.18/0690-Revert-bcmgenet-Disable-skip_umac_reset-by-default.patch index 8046ecd6deb..558be0ed8a4 100644 --- a/target/linux/bcm27xx/patches-6.18/0690-Revert-bcmgenet-Disable-skip_umac_reset-by-default.patch +++ b/target/linux/bcm27xx/patches-6.18/0690-Revert-bcmgenet-Disable-skip_umac_reset-by-default.patch @@ -10,7 +10,7 @@ This reverts commit 09d1901497ce36a24c62a0befa76dee0418b48ce. --- 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.18/0691-Revert-net-bcmgenet-Workaround-2-for-Pi4-Ethernet-fa.patch b/target/linux/bcm27xx/patches-6.18/0691-Revert-net-bcmgenet-Workaround-2-for-Pi4-Ethernet-fa.patch index 04a98c9ba18..d8b60432902 100644 --- a/target/linux/bcm27xx/patches-6.18/0691-Revert-net-bcmgenet-Workaround-2-for-Pi4-Ethernet-fa.patch +++ b/target/linux/bcm27xx/patches-6.18/0691-Revert-net-bcmgenet-Workaround-2-for-Pi4-Ethernet-fa.patch @@ -10,7 +10,7 @@ This reverts commit dfad8d6677d4c11a5b6d599f81802486f5c1d973. --- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c +++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c -@@ -65,9 +65,6 @@ +@@ -64,9 +64,6 @@ /* Forward declarations */ static void bcmgenet_set_rx_mode(struct net_device *dev); @@ -20,7 +20,7 @@ This reverts commit dfad8d6677d4c11a5b6d599f81802486f5c1d973. static inline void bcmgenet_writel(u32 value, void __iomem *offset) { -@@ -2563,11 +2560,6 @@ static void reset_umac(struct bcmgenet_p +@@ -2555,11 +2552,6 @@ static void reset_umac(struct bcmgenet_p bcmgenet_rbuf_ctrl_set(priv, 0); udelay(10); diff --git a/target/linux/bcm27xx/patches-6.18/0699-nvme-pci-manually-allocate-Host-Memory-Buffer-segmen.patch b/target/linux/bcm27xx/patches-6.18/0699-nvme-pci-manually-allocate-Host-Memory-Buffer-segmen.patch index 81504ef1640..58a9d4fbb11 100644 --- a/target/linux/bcm27xx/patches-6.18/0699-nvme-pci-manually-allocate-Host-Memory-Buffer-segmen.patch +++ b/target/linux/bcm27xx/patches-6.18/0699-nvme-pci-manually-allocate-Host-Memory-Buffer-segmen.patch @@ -47,7 +47,7 @@ Signed-off-by: Jonathan Bell void **host_mem_desc_bufs; unsigned int nr_allocated_queues; unsigned int nr_write_queues; -@@ -2301,6 +2303,13 @@ static int nvme_set_host_mem(struct nvme +@@ -2306,6 +2308,13 @@ static int nvme_set_host_mem(struct nvme return ret; } @@ -61,7 +61,7 @@ Signed-off-by: Jonathan Bell static void nvme_free_host_mem_multi(struct nvme_dev *dev) { int i; -@@ -2317,6 +2326,7 @@ static void nvme_free_host_mem_multi(str +@@ -2322,6 +2331,7 @@ static void nvme_free_host_mem_multi(str kfree(dev->host_mem_desc_bufs); dev->host_mem_desc_bufs = NULL; } @@ -69,7 +69,7 @@ Signed-off-by: Jonathan Bell static void nvme_free_host_mem(struct nvme_dev *dev) { -@@ -2361,6 +2371,93 @@ static int nvme_alloc_host_mem_single(st +@@ -2366,6 +2376,93 @@ static int nvme_alloc_host_mem_single(st return 0; } @@ -163,7 +163,7 @@ Signed-off-by: Jonathan Bell static int nvme_alloc_host_mem_multi(struct nvme_dev *dev, u64 preferred, u32 chunk_size) { -@@ -2421,6 +2518,7 @@ out: +@@ -2426,6 +2523,7 @@ out: dev->host_mem_descs = NULL; return -ENOMEM; } diff --git a/target/linux/bcm27xx/patches-6.18/0705-drm-panel-add-TDO-DSI-V1-panel-driver.patch b/target/linux/bcm27xx/patches-6.18/0705-drm-panel-add-TDO-DSI-V1-panel-driver.patch index a5c87a500eb..889c4624aea 100644 --- a/target/linux/bcm27xx/patches-6.18/0705-drm-panel-add-TDO-DSI-V1-panel-driver.patch +++ b/target/linux/bcm27xx/patches-6.18/0705-drm-panel-add-TDO-DSI-V1-panel-driver.patch @@ -15,7 +15,7 @@ Signed-off-by: kun_liu --- a/drivers/gpu/drm/panel/Kconfig +++ b/drivers/gpu/drm/panel/Kconfig -@@ -1087,6 +1087,20 @@ config DRM_PANEL_TPO_Y17P +@@ -1094,6 +1094,20 @@ config DRM_PANEL_TPO_Y17P Say Y if you want to enable support for panels based on the TDO Y17P controller. diff --git a/target/linux/bcm27xx/patches-6.18/0719-net-macb-add-TX-stall-watchdog-as-defence-in-depth-s.patch b/target/linux/bcm27xx/patches-6.18/0719-net-macb-add-TX-stall-watchdog-as-defence-in-depth-s.patch index 9158ca954f7..c094f7c79f9 100644 --- a/target/linux/bcm27xx/patches-6.18/0719-net-macb-add-TX-stall-watchdog-as-defence-in-depth-s.patch +++ b/target/linux/bcm27xx/patches-6.18/0719-net-macb-add-TX-stall-watchdog-as-defence-in-depth-s.patch @@ -148,7 +148,7 @@ Signed-off-by: Lukasz Raczylo static void macb_hresp_error_task(struct work_struct *work) { struct macb *bp = from_work(bp, work, hresp_err_bh_work); -@@ -3294,6 +3353,9 @@ static int macb_open(struct net_device * +@@ -3311,6 +3370,9 @@ static int macb_open(struct net_device * for (q = 0, queue = bp->queues; q < bp->num_queues; ++q, ++queue) { napi_enable(&queue->napi_rx); napi_enable(&queue->napi_tx); @@ -158,7 +158,7 @@ Signed-off-by: Lukasz Raczylo } macb_init_hw(bp); -@@ -3340,6 +3402,7 @@ static int macb_close(struct net_device +@@ -3357,6 +3419,7 @@ static int macb_close(struct net_device for (q = 0, queue = bp->queues; q < bp->num_queues; ++q, ++queue) { napi_disable(&queue->napi_rx); napi_disable(&queue->napi_tx); @@ -166,7 +166,7 @@ Signed-off-by: Lukasz Raczylo netdev_tx_reset_queue(netdev_get_tx_queue(dev, q)); } -@@ -4938,6 +5001,8 @@ static int macb_init(struct platform_dev +@@ -4963,6 +5026,8 @@ static int macb_init(struct platform_dev } INIT_WORK(&queue->tx_error_task, macb_tx_error_task); diff --git a/target/linux/bcm27xx/patches-6.18/0731-usb-dwc3-Fixup-downstream-for-add-of-dwc-pointer-to-.patch b/target/linux/bcm27xx/patches-6.18/0731-usb-dwc3-Fixup-downstream-for-add-of-dwc-pointer-to-.patch index 9df2c07349c..9282e5193a7 100644 --- a/target/linux/bcm27xx/patches-6.18/0731-usb-dwc3-Fixup-downstream-for-add-of-dwc-pointer-to-.patch +++ b/target/linux/bcm27xx/patches-6.18/0731-usb-dwc3-Fixup-downstream-for-add-of-dwc-pointer-to-.patch @@ -11,7 +11,7 @@ Signed-off-by: Dom Cobley --- a/drivers/usb/dwc3/core.c +++ b/drivers/usb/dwc3/core.c -@@ -1336,11 +1336,11 @@ static void dwc3_set_axi_pipe_limit(stru +@@ -1354,11 +1354,11 @@ static void dwc3_set_axi_pipe_limit(stru dev_err(dev, "Invalid axi_pipe_limit property\n"); return; } @@ -25,7 +25,7 @@ Signed-off-by: Dom Cobley } /** -@@ -1554,7 +1554,7 @@ static int dwc3_core_init(struct dwc3 *d +@@ -1574,7 +1574,7 @@ static int dwc3_core_init(struct dwc3 *d u8 tx_maxburst = dwc->tx_max_burst_prd; if (tx_thr_num && tx_maxburst) { @@ -34,7 +34,7 @@ Signed-off-by: Dom Cobley reg |= DWC3_GTXTHRCFG_PKTCNTSEL; reg &= ~DWC3_GTXTHRCFG_TXPKTCNT(~0); -@@ -1563,7 +1563,7 @@ static int dwc3_core_init(struct dwc3 *d +@@ -1583,7 +1583,7 @@ static int dwc3_core_init(struct dwc3 *d reg &= ~DWC3_GTXTHRCFG_MAXTXBURSTSIZE(~0); reg |= DWC3_GTXTHRCFG_MAXTXBURSTSIZE(tx_maxburst); diff --git a/target/linux/bcm27xx/patches-6.18/0741-Revert-Patching-lan78xx-for-SOF_TIMESTAMPING_TX_SOFT.patch b/target/linux/bcm27xx/patches-6.18/0741-Revert-Patching-lan78xx-for-SOF_TIMESTAMPING_TX_SOFT.patch index c551d1ab340..95e0d41d0ff 100644 --- a/target/linux/bcm27xx/patches-6.18/0741-Revert-Patching-lan78xx-for-SOF_TIMESTAMPING_TX_SOFT.patch +++ b/target/linux/bcm27xx/patches-6.18/0741-Revert-Patching-lan78xx-for-SOF_TIMESTAMPING_TX_SOFT.patch @@ -11,7 +11,7 @@ This reverts commit abe92ec1f594420e6b70e5f5e79c7c11d1206822. --- a/drivers/net/usb/lan78xx.c +++ b/drivers/net/usb/lan78xx.c -@@ -1960,7 +1960,6 @@ static const struct ethtool_ops lan78xx_ +@@ -1981,7 +1981,6 @@ 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.18/0742-Revert-lan78xx-Return-tx_lpi_timer-even-if-disabled.patch b/target/linux/bcm27xx/patches-6.18/0742-Revert-lan78xx-Return-tx_lpi_timer-even-if-disabled.patch index 67dc5ebac11..1e78a475063 100644 --- a/target/linux/bcm27xx/patches-6.18/0742-Revert-lan78xx-Return-tx_lpi_timer-even-if-disabled.patch +++ b/target/linux/bcm27xx/patches-6.18/0742-Revert-lan78xx-Return-tx_lpi_timer-even-if-disabled.patch @@ -10,7 +10,7 @@ This reverts commit 9c78c6d07692d46d98ffd9b55092c5874d533e1a. --- a/drivers/net/usb/lan78xx.c +++ b/drivers/net/usb/lan78xx.c -@@ -1818,34 +1818,15 @@ exit_pm_put: +@@ -1839,34 +1839,15 @@ exit_pm_put: static int lan78xx_get_eee(struct net_device *net, struct ethtool_keee *edata) { struct lan78xx_net *dev = netdev_priv(net); diff --git a/target/linux/bcm27xx/patches-6.18/0743-Revert-lan78xx-Read-initial-EEE-status-from-DT.patch b/target/linux/bcm27xx/patches-6.18/0743-Revert-lan78xx-Read-initial-EEE-status-from-DT.patch index 719670508ab..3b540189507 100644 --- a/target/linux/bcm27xx/patches-6.18/0743-Revert-lan78xx-Read-initial-EEE-status-from-DT.patch +++ b/target/linux/bcm27xx/patches-6.18/0743-Revert-lan78xx-Read-initial-EEE-status-from-DT.patch @@ -10,7 +10,7 @@ This reverts commit 98fb76f556f399cf9e6bbabc2aae0110192a8a91. --- a/drivers/net/usb/lan78xx.c +++ b/drivers/net/usb/lan78xx.c -@@ -2897,29 +2897,6 @@ static int lan78xx_phy_init(struct lan78 +@@ -2929,29 +2929,6 @@ static int lan78xx_phy_init(struct lan78 goto phylink_uninit; } diff --git a/target/linux/bcm27xx/patches-6.18/0754-nvme-pci-use-LE-accessors-for-HMB-segment-table-entr.patch b/target/linux/bcm27xx/patches-6.18/0754-nvme-pci-use-LE-accessors-for-HMB-segment-table-entr.patch index 53a487d1858..a78e23e22f7 100644 --- a/target/linux/bcm27xx/patches-6.18/0754-nvme-pci-use-LE-accessors-for-HMB-segment-table-entr.patch +++ b/target/linux/bcm27xx/patches-6.18/0754-nvme-pci-use-LE-accessors-for-HMB-segment-table-entr.patch @@ -15,7 +15,7 @@ Signed-off-by: Jonathan Bell --- a/drivers/nvme/host/pci.c +++ b/drivers/nvme/host/pci.c -@@ -2433,9 +2433,9 @@ static int nvme_alloc_host_mem_multi(str +@@ -2438,9 +2438,9 @@ static int nvme_alloc_host_mem_multi(str i = dev->nr_host_mem_descs = mapped_nents; while (--i >= 0) { diff --git a/target/linux/bcm27xx/patches-6.18/0757-of-Improve-compatibility-with-old-Pi-5-firmware.patch b/target/linux/bcm27xx/patches-6.18/0757-of-Improve-compatibility-with-old-Pi-5-firmware.patch index 7c5971749e7..bffd69216a8 100644 --- a/target/linux/bcm27xx/patches-6.18/0757-of-Improve-compatibility-with-old-Pi-5-firmware.patch +++ b/target/linux/bcm27xx/patches-6.18/0757-of-Improve-compatibility-with-old-Pi-5-firmware.patch @@ -95,7 +95,7 @@ Signed-off-by: Phil Elwell continue; --- a/drivers/of/of_reserved_mem.c +++ b/drivers/of/of_reserved_mem.c -@@ -159,11 +159,25 @@ static int __init __reserved_mem_reserve +@@ -168,11 +168,25 @@ static int __init __reserved_mem_reserve int len; const __be32 *prop; bool nomap, default_cma; @@ -121,7 +121,7 @@ Signed-off-by: Phil Elwell if (len && len % t_len != 0) { pr_err("Reserved memory: invalid reg property in '%s', skipping node.\n", uname); -@@ -180,7 +194,7 @@ static int __init __reserved_mem_reserve +@@ -189,7 +203,7 @@ static int __init __reserved_mem_reserve while (len >= t_len) { base = dt_mem_next_cell(dt_root_addr_cells, &prop); @@ -130,7 +130,7 @@ Signed-off-by: Phil Elwell if (size && early_init_dt_reserve_memory(base, size, nomap) == 0) { /* Architecture specific contiguous memory fixup. */ -@@ -267,8 +281,21 @@ void __init fdt_scan_reserved_mem_reg_no +@@ -277,8 +291,21 @@ void __init fdt_scan_reserved_mem_reg_no if (default_cma && cma_skip_dt_default_reserved_mem()) continue; @@ -154,7 +154,7 @@ Signed-off-by: Phil Elwell base = b; size = s; -@@ -406,16 +433,24 @@ static int __init __reserved_mem_alloc_s +@@ -416,16 +443,24 @@ static int __init __reserved_mem_alloc_s const __be32 *prop; bool nomap, default_cma; int ret; diff --git a/target/linux/bcm27xx/patches-6.18/0790-net-macb-gate-PCIe-posted-write-flush-behind-MACB_CA.patch b/target/linux/bcm27xx/patches-6.18/0790-net-macb-gate-PCIe-posted-write-flush-behind-MACB_CA.patch index 141e785a072..2a98c1ecfee 100644 --- a/target/linux/bcm27xx/patches-6.18/0790-net-macb-gate-PCIe-posted-write-flush-behind-MACB_CA.patch +++ b/target/linux/bcm27xx/patches-6.18/0790-net-macb-gate-PCIe-posted-write-flush-behind-MACB_CA.patch @@ -77,7 +77,7 @@ Signed-off-by: Lukasz Raczylo spin_unlock(&bp->lock); if (CIRC_SPACE(queue->tx_head, queue->tx_tail, bp->tx_ring_size) < 1) -@@ -5810,6 +5813,7 @@ static const struct macb_config raspberr +@@ -5835,6 +5838,7 @@ static const struct macb_config raspberr .caps = MACB_CAPS_GIGABIT_MODE_AVAILABLE | MACB_CAPS_CLK_HW_CHG | MACB_CAPS_JUMBO | MACB_CAPS_GEM_HAS_PTP | diff --git a/target/linux/bcm27xx/patches-6.18/0808-Post-Merge-Fixup-up-to-9df439fbf76c0cb9f1a9282a7bf44.patch b/target/linux/bcm27xx/patches-6.18/0808-Post-Merge-Fixup-up-to-9df439fbf76c0cb9f1a9282a7bf44.patch index dd762d069d1..4aba84ac028 100644 --- a/target/linux/bcm27xx/patches-6.18/0808-Post-Merge-Fixup-up-to-9df439fbf76c0cb9f1a9282a7bf44.patch +++ b/target/linux/bcm27xx/patches-6.18/0808-Post-Merge-Fixup-up-to-9df439fbf76c0cb9f1a9282a7bf44.patch @@ -39,7 +39,7 @@ Signed-off-by: Joshua Covington .matches = cpucap_multi_entry_cap_matches, --- a/drivers/gpu/drm/v3d/v3d_submit.c +++ b/drivers/gpu/drm/v3d/v3d_submit.c -@@ -1350,7 +1350,7 @@ v3d_submit_cpu_ioctl(struct drm_device * +@@ -1352,7 +1352,7 @@ v3d_submit_cpu_ioctl(struct drm_device * trace_v3d_submit_cpu_ioctl(&v3d->drm, cpu_job->job_type); ret = v3d_job_init(v3d, file_priv, &cpu_job->base, diff --git a/target/linux/econet/patches-6.18/912-pcie-add-en7528-pcie-and-phy-support.patch b/target/linux/econet/patches-6.18/912-pcie-add-en7528-pcie-and-phy-support.patch index 63e12f34828..8710081fe15 100644 --- a/target/linux/econet/patches-6.18/912-pcie-add-en7528-pcie-and-phy-support.patch +++ b/target/linux/econet/patches-6.18/912-pcie-add-en7528-pcie-and-phy-support.patch @@ -35,7 +35,7 @@ select SYS_SUPPORTS_HIGHMEM --- a/drivers/pci/controller/pcie-mediatek.c +++ b/drivers/pci/controller/pcie-mediatek.c -@@ -77,6 +77,7 @@ +@@ -78,6 +78,7 @@ #define PCIE_CONF_VEND_ID 0x100 #define PCIE_CONF_DEVICE_ID 0x102 @@ -43,7 +43,7 @@ #define PCIE_CONF_CLASS_ID 0x106 #define PCIE_INT_MASK 0x420 -@@ -89,6 +90,11 @@ +@@ -90,6 +91,11 @@ #define MSI_MASK BIT(23) #define MTK_MSI_IRQS_NUM 32 @@ -55,7 +55,7 @@ #define PCIE_AHB_TRANS_BASE0_L 0x438 #define PCIE_AHB_TRANS_BASE0_H 0x43c #define AHB2PCIE_SIZE(x) ((x) & GENMASK(4, 0)) -@@ -750,6 +756,86 @@ static int mtk_pcie_startup_port_v2(stru +@@ -753,6 +759,86 @@ static int mtk_pcie_startup_port_v2(stru return 0; } @@ -142,7 +142,7 @@ static void __iomem *mtk_pcie_map_bus(struct pci_bus *bus, unsigned int devfn, int where) { -@@ -1120,6 +1206,20 @@ static int mtk_pcie_probe(struct platfor +@@ -1131,6 +1217,20 @@ static int mtk_pcie_probe(struct platfor if (err) goto put_resources; @@ -163,7 +163,7 @@ return 0; put_resources: -@@ -1233,12 +1333,19 @@ static const struct mtk_pcie_soc mtk_pci +@@ -1244,12 +1344,19 @@ static const struct mtk_pcie_soc mtk_pci .setup_irq = mtk_pcie_setup_irq, }; diff --git a/target/linux/generic/backport-6.18/300-v7.1-MIPS-mm-fix-highmem-init.patch b/target/linux/generic/backport-6.18/300-v7.1-MIPS-mm-fix-highmem-init.patch deleted file mode 100644 index fe97f563bd9..00000000000 --- a/target/linux/generic/backport-6.18/300-v7.1-MIPS-mm-fix-highmem-init.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 6d5fbecd0213489bc4de71a0da194d18e654fd6e Mon Sep 17 00:00:00 2001 -From: Kyle Hendry -Date: Sun, 21 Jun 2026 11:47:02 -0700 -Subject: MIPS: mm: Add check for highmem before removing memory block - -If a device has less physical memory than the highmem threshold -bootmem_init() doesn't set highstart_pfn. This results in highmem_init() -wrongly disabling the entire memory range if the cpu doesn't support -highmem. Add a check that highstart_pfn is non zero before removing the -highmem block. - -Fixes: f171b55f1441 ("mips: fix HIGHMEM initialization") -Signed-off-by: Kyle Hendry -Signed-off-by: Thomas Bogendoerfer ---- - arch/mips/mm/init.c | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - ---- a/arch/mips/mm/init.c -+++ b/arch/mips/mm/init.c -@@ -431,10 +431,11 @@ static inline void __init highmem_init(v - unsigned long tmp; - - /* -- * If CPU cannot support HIGHMEM discard the memory above highstart_pfn -+ * If CPU cannot support HIGHMEM discard any memory above highstart_pfn - */ - if (cpu_has_dc_aliases) { -- memblock_remove(PFN_PHYS(highstart_pfn), -1); -+ if (highstart_pfn) -+ memblock_remove(PFN_PHYS(highstart_pfn), -1); - return; - } - diff --git a/target/linux/generic/backport-6.18/601-v7.1-net-add-netdev_from_priv-helper.patch b/target/linux/generic/backport-6.18/601-v7.1-net-add-netdev_from_priv-helper.patch index 3586c3f36fb..f1252e23c9f 100644 --- a/target/linux/generic/backport-6.18/601-v7.1-net-add-netdev_from_priv-helper.patch +++ b/target/linux/generic/backport-6.18/601-v7.1-net-add-netdev_from_priv-helper.patch @@ -15,7 +15,7 @@ Signed-off-by: Jakub Kicinski --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h -@@ -2750,6 +2750,17 @@ static inline void *netdev_priv(const st +@@ -2754,6 +2754,17 @@ static inline void *netdev_priv(const st return (void *)dev->priv; } diff --git a/target/linux/generic/backport-6.18/627-v7.2-net-pse-pd-scope-pse_control-regulator-handle-to-kre.patch b/target/linux/generic/backport-6.18/627-v7.2-net-pse-pd-scope-pse_control-regulator-handle-to-kre.patch deleted file mode 100644 index e41033c6e16..00000000000 --- a/target/linux/generic/backport-6.18/627-v7.2-net-pse-pd-scope-pse_control-regulator-handle-to-kre.patch +++ /dev/null @@ -1,73 +0,0 @@ -From 16759757c4d28e958fd5a5a1fe0f86828872f28d Mon Sep 17 00:00:00 2001 -From: Corey Leavitt -Date: Wed, 24 Jun 2026 22:40:16 +0200 -Subject: net: pse-pd: scope pse_control regulator handle to kref lifetime - -__pse_control_release() drops psec->ps via devm_regulator_put(), which -only succeeds if the devres entry added by the matching -devm_regulator_get_exclusive() is still present on pcdev->dev at the -time the pse_control's kref hits zero. - -That assumption does not hold when the controller is unbound while a -pse_control still has consumers: pcdev->dev's devres list is released -LIFO, so every per-attach regulator-GET devres runs (and -regulator_put()s the underlying regulator) before -pse_controller_unregister() itself is invoked. Any later -pse_control_put() from that unbind path then reads psec->ps as a -dangling pointer inside devm_regulator_put() and WARNs at -drivers/regulator/devres.c:232 (devres_release() fails to find the -already-released match). - -The pse_control's consumer handle is logically scoped to the -pse_control's refcount, not to pcdev->dev's devres lifetime. Switch to -the plain regulator_get_exclusive() / regulator_put() pair so the -regulator put in __pse_control_release() no longer depends on the -controller's devres still being present. No change to the -regulator-framework-visible refcount or lifetime of the underlying -regulator: a single get paired with a single put. The existing -devm_regulator_register() for the per-PI rails is unchanged (those ARE -correctly scoped to the controller's lifetime). - -This addresses only the regulator handle. The same unbind-while-held -scenario also leaves __pse_control_release() reading psec->pcdev->pi[] -and psec->pcdev->owner after pse_controller_unregister() has freed -pcdev->pi, because the controller does not drain its outstanding -pse_control references on unregister. That wider pse_control vs -pcdev lifetime problem pre-dates this change and is addressed by the -PSE controller notifier series, which drains phydev->psec on -PSE_UNREGISTERED before pcdev->pi is freed. - -Link: https://lore.kernel.org/netdev/20260620112440.1734404-1-github@szelinsky.de/ -Fixes: d83e13761d5b ("net: pse-pd: Use regulator framework within PSE framework") -Signed-off-by: Corey Leavitt -Acked-by: Kory Maincent -Signed-off-by: Carlo Szelinsky -Reviewed-by: Simon Horman -Link: https://patch.msgid.link/20260624204017.2752934-1-github@szelinsky.de -Signed-off-by: Jakub Kicinski ---- - drivers/net/pse-pd/pse_core.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - ---- a/drivers/net/pse-pd/pse_core.c -+++ b/drivers/net/pse-pd/pse_core.c -@@ -1362,7 +1362,7 @@ static void __pse_control_release(struct - - if (psec->pcdev->pi[psec->id].admin_state_enabled) - regulator_disable(psec->ps); -- devm_regulator_put(psec->ps); -+ regulator_put(psec->ps); - - module_put(psec->pcdev->owner); - -@@ -1431,8 +1431,8 @@ pse_control_get_internal(struct pse_cont - goto free_psec; - - pcdev->pi[index].admin_state_enabled = ret; -- psec->ps = devm_regulator_get_exclusive(pcdev->dev, -- rdev_get_name(pcdev->pi[index].rdev)); -+ psec->ps = regulator_get_exclusive(pcdev->dev, -+ rdev_get_name(pcdev->pi[index].rdev)); - if (IS_ERR(psec->ps)) { - ret = PTR_ERR(psec->ps); - goto put_module; diff --git a/target/linux/generic/backport-6.18/650-v7.2-net-pppoe-implement-GRO-GSO-support.patch b/target/linux/generic/backport-6.18/650-v7.2-net-pppoe-implement-GRO-GSO-support.patch index d9c3821c35c..2decaf1a97d 100644 --- a/target/linux/generic/backport-6.18/650-v7.2-net-pppoe-implement-GRO-GSO-support.patch +++ b/target/linux/generic/backport-6.18/650-v7.2-net-pppoe-implement-GRO-GSO-support.patch @@ -222,7 +222,7 @@ Signed-off-by: Paolo Abeni unregister_pernet_device(&pppoe_net_ops); --- a/net/ipv4/af_inet.c +++ b/net/ipv4/af_inet.c -@@ -1531,6 +1531,7 @@ out: +@@ -1526,6 +1526,7 @@ out: return pp; } @@ -230,7 +230,7 @@ Signed-off-by: Paolo Abeni static struct sk_buff *ipip_gro_receive(struct list_head *head, struct sk_buff *skb) -@@ -1616,6 +1617,7 @@ int inet_gro_complete(struct sk_buff *sk +@@ -1611,6 +1612,7 @@ int inet_gro_complete(struct sk_buff *sk out: return err; } diff --git a/target/linux/generic/backport-6.18/700-02-v7.0-net-sched-sch_cake-Factor-out-config-variables-into-.patch b/target/linux/generic/backport-6.18/700-02-v7.0-net-sched-sch_cake-Factor-out-config-variables-into-.patch index 34aa4216ce0..7e8a7b2cecd 100644 --- a/target/linux/generic/backport-6.18/700-02-v7.0-net-sched-sch_cake-Factor-out-config-variables-into-.patch +++ b/target/linux/generic/backport-6.18/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); -@@ -1385,10 +1389,10 @@ static u32 cake_calc_overhead(struct cak +@@ -1382,10 +1386,10 @@ static u32 cake_calc_overhead(struct cak len += (len + 63) / 64; } @@ -133,7 +133,7 @@ Signed-off-by: Paolo Abeni return len; } -@@ -1592,7 +1596,7 @@ static unsigned int cake_drop(struct Qdi +@@ -1589,7 +1593,7 @@ static unsigned int cake_drop(struct Qdi flow->dropped++; WRITE_ONCE(b->tin_dropped, b->tin_dropped + 1); @@ -142,7 +142,7 @@ Signed-off-by: Paolo Abeni cake_advance_shaper(q, b, skb, now, true); qdisc_drop_reason(skb, sch, to_free, SKB_DROP_REASON_QDISC_OVERLIMIT); -@@ -1662,7 +1666,8 @@ static u8 cake_handle_diffserv(struct sk +@@ -1659,7 +1663,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; -@@ -1679,24 +1684,24 @@ static struct cake_tin_data *cake_select +@@ -1676,24 +1681,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, -@@ -1752,7 +1757,7 @@ static s32 cake_enqueue(struct sk_buff * +@@ -1749,7 +1754,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); -@@ -1787,7 +1792,7 @@ static s32 cake_enqueue(struct sk_buff * +@@ -1784,7 +1789,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; -@@ -1828,7 +1833,7 @@ static s32 cake_enqueue(struct sk_buff * +@@ -1825,7 +1830,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) { -@@ -1837,7 +1842,7 @@ static s32 cake_enqueue(struct sk_buff * +@@ -1834,7 +1839,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); -@@ -1860,7 +1865,7 @@ static s32 cake_enqueue(struct sk_buff * +@@ -1857,7 +1862,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)); -@@ -1892,7 +1897,7 @@ static s32 cake_enqueue(struct sk_buff * +@@ -1889,7 +1894,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); } } -@@ -1912,7 +1917,7 @@ static s32 cake_enqueue(struct sk_buff * +@@ -1909,7 +1914,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. -@@ -1921,8 +1926,8 @@ static s32 cake_enqueue(struct sk_buff * +@@ -1918,8 +1923,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) -@@ -2109,8 +2114,8 @@ retry: +@@ -2106,8 +2111,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 { -@@ -2122,7 +2127,7 @@ retry: +@@ -2119,7 +2124,7 @@ retry: } } @@ -278,7 +278,7 @@ Signed-off-by: Paolo Abeni list_move_tail(&flow->flowchain, &b->old_flows); goto retry; -@@ -2146,8 +2151,8 @@ retry: +@@ -2143,8 +2148,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 || -@@ -2165,8 +2170,8 @@ retry: +@@ -2162,8 +2167,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--; -@@ -2177,14 +2182,14 @@ retry: +@@ -2174,14 +2179,14 @@ retry: reason = cobalt_should_drop(&flow->cvars, &b->cparams, now, skb, (b->bulk_flow_count * @@ -317,7 +317,7 @@ Signed-off-by: Paolo Abeni len = cake_advance_shaper(q, b, skb, now, true); flow->deficit -= len; -@@ -2195,7 +2200,7 @@ retry: +@@ -2192,7 +2197,7 @@ retry: qdisc_tree_reduce_backlog(sch, 1, qdisc_pkt_len(skb)); qdisc_qstats_drop(sch); kfree_skb_reason(skb, reason); @@ -326,7 +326,7 @@ Signed-off-by: Paolo Abeni goto retry; } -@@ -2320,7 +2325,7 @@ static int cake_config_besteffort(struct +@@ -2317,7 +2322,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)); @@ -335,7 +335,7 @@ Signed-off-by: Paolo Abeni q->tin_cnt = 1; -@@ -2328,7 +2333,7 @@ static int cake_config_besteffort(struct +@@ -2325,7 +2330,7 @@ static int cake_config_besteffort(struct q->tin_order = normal_order; cake_set_rate(b, rate, mtu, @@ -344,7 +344,7 @@ Signed-off-by: Paolo Abeni b->tin_quantum = 65535; return 0; -@@ -2339,7 +2344,7 @@ static int cake_config_precedence(struct +@@ -2336,7 +2341,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)); @@ -353,7 +353,7 @@ Signed-off-by: Paolo Abeni u32 quantum = 256; u32 i; -@@ -2350,8 +2355,8 @@ static int cake_config_precedence(struct +@@ -2347,8 +2352,8 @@ static int cake_config_precedence(struct for (i = 0; i < q->tin_cnt; i++) { struct cake_tin_data *b = &q->tins[i]; @@ -364,7 +364,7 @@ Signed-off-by: Paolo Abeni b->tin_quantum = max_t(u16, 1U, quantum); -@@ -2428,7 +2433,7 @@ static int cake_config_diffserv8(struct +@@ -2425,7 +2430,7 @@ static int cake_config_diffserv8(struct struct cake_sched_data *q = qdisc_priv(sch); u32 mtu = psched_mtu(qdisc_dev(sch)); @@ -373,7 +373,7 @@ Signed-off-by: Paolo Abeni u32 quantum = 256; u32 i; -@@ -2442,8 +2447,8 @@ static int cake_config_diffserv8(struct +@@ -2439,8 +2444,8 @@ static int cake_config_diffserv8(struct for (i = 0; i < q->tin_cnt; i++) { struct cake_tin_data *b = &q->tins[i]; @@ -384,7 +384,7 @@ Signed-off-by: Paolo Abeni b->tin_quantum = max_t(u16, 1U, quantum); -@@ -2472,7 +2477,7 @@ static int cake_config_diffserv4(struct +@@ -2469,7 +2474,7 @@ static int cake_config_diffserv4(struct struct cake_sched_data *q = qdisc_priv(sch); u32 mtu = psched_mtu(qdisc_dev(sch)); @@ -393,7 +393,7 @@ Signed-off-by: Paolo Abeni u32 quantum = 1024; q->tin_cnt = 4; -@@ -2483,13 +2488,13 @@ static int cake_config_diffserv4(struct +@@ -2480,13 +2485,13 @@ static int cake_config_diffserv4(struct /* class characteristics */ cake_set_rate(&q->tins[0], rate, mtu, @@ -411,7 +411,7 @@ Signed-off-by: Paolo Abeni /* bandwidth-sharing weights */ q->tins[0].tin_quantum = quantum; -@@ -2509,7 +2514,7 @@ static int cake_config_diffserv3(struct +@@ -2506,7 +2511,7 @@ static int cake_config_diffserv3(struct */ struct cake_sched_data *q = qdisc_priv(sch); u32 mtu = psched_mtu(qdisc_dev(sch)); @@ -420,7 +420,7 @@ Signed-off-by: Paolo Abeni u32 quantum = 1024; q->tin_cnt = 3; -@@ -2520,11 +2525,11 @@ static int cake_config_diffserv3(struct +@@ -2517,11 +2522,11 @@ static int cake_config_diffserv3(struct /* class characteristics */ cake_set_rate(&q->tins[0], rate, mtu, @@ -435,7 +435,7 @@ Signed-off-by: Paolo Abeni /* bandwidth-sharing weights */ q->tins[0].tin_quantum = quantum; -@@ -2536,7 +2541,8 @@ static int cake_config_diffserv3(struct +@@ -2533,7 +2538,8 @@ static int cake_config_diffserv3(struct static void cake_reconfigure(struct Qdisc *sch) { @@ -445,7 +445,7 @@ Signed-off-by: Paolo Abeni int c, ft; switch (q->tin_mode) { -@@ -2562,36 +2568,37 @@ static void cake_reconfigure(struct Qdis +@@ -2559,36 +2565,37 @@ static void cake_reconfigure(struct Qdis break; } @@ -494,7 +494,7 @@ Signed-off-by: Paolo Abeni struct nlattr *tb[TCA_CAKE_MAX + 1]; u16 rate_flags; u8 flow_mode; -@@ -2645,19 +2652,19 @@ static int cake_change(struct Qdisc *sch +@@ -2642,19 +2649,19 @@ static int cake_change(struct Qdisc *sch nla_get_s32(tb[TCA_CAKE_OVERHEAD])); rate_flags |= CAKE_FLAG_OVERHEAD; @@ -522,7 +522,7 @@ Signed-off-by: Paolo Abeni } if (tb[TCA_CAKE_MPU]) -@@ -2713,7 +2720,7 @@ static int cake_change(struct Qdisc *sch +@@ -2710,7 +2717,7 @@ static int cake_change(struct Qdisc *sch WRITE_ONCE(q->rate_flags, rate_flags); WRITE_ONCE(q->flow_mode, flow_mode); @@ -531,7 +531,7 @@ Signed-off-by: Paolo Abeni sch_tree_lock(sch); cake_reconfigure(sch); sch_tree_unlock(sch); -@@ -2729,14 +2736,20 @@ static void cake_destroy(struct Qdisc *s +@@ -2726,14 +2733,20 @@ static void cake_destroy(struct Qdisc *s qdisc_watchdog_cancel(&q->watchdog); tcf_block_put(q->block); kvfree(q->tins); @@ -553,7 +553,7 @@ Signed-off-by: Paolo Abeni sch->limit = 10240; q->tin_mode = CAKE_DIFFSERV_DIFFSERV3; q->flow_mode = CAKE_FLOW_TRIPLE; -@@ -2748,33 +2761,36 @@ static int cake_init(struct Qdisc *sch, +@@ -2745,33 +2758,36 @@ static int cake_init(struct Qdisc *sch, * for 5 to 10% of interval */ q->rate_flags |= CAKE_FLAG_SPLIT_GSO; @@ -601,7 +601,7 @@ Signed-off-by: Paolo Abeni INIT_LIST_HEAD(&b->new_flows); INIT_LIST_HEAD(&b->old_flows); -@@ -2790,22 +2806,27 @@ static int cake_init(struct Qdisc *sch, +@@ -2787,22 +2803,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.18/700-03-v7.0-net-sched-sch_cake-Add-cake_mq-qdisc-for-using-cake-.patch b/target/linux/generic/backport-6.18/700-03-v7.0-net-sched-sch_cake-Add-cake_mq-qdisc-for-using-cake-.patch index 13059b9a1ff..b9d831311d5 100644 --- a/target/linux/generic/backport-6.18/700-03-v7.0-net-sched-sch_cake-Add-cake_mq-qdisc-for-using-cake-.patch +++ b/target/linux/generic/backport-6.18/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 -@@ -3163,14 +3164,89 @@ static struct Qdisc_ops cake_qdisc_ops _ +@@ -3160,14 +3161,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) -@@ -3178,3 +3254,4 @@ module_exit(cake_module_exit) +@@ -3175,3 +3251,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.18/700-04-v7.0-net-sched-sch_cake-Share-config-across-cake_mq-sub-q.patch b/target/linux/generic/backport-6.18/700-04-v7.0-net-sched-sch_cake-Share-config-across-cake_mq-sub-q.patch index 8981b0fcb80..d2be26a8c85 100644 --- a/target/linux/generic/backport-6.18/700-04-v7.0-net-sched-sch_cake-Share-config-across-cake_mq-sub-q.patch +++ b/target/linux/generic/backport-6.18/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 { -@@ -2595,14 +2596,12 @@ static void cake_reconfigure(struct Qdis +@@ -2592,14 +2593,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, -@@ -2610,7 +2609,6 @@ static int cake_change(struct Qdisc *sch +@@ -2607,7 +2606,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; -@@ -2623,6 +2621,19 @@ static int cake_change(struct Qdisc *sch +@@ -2620,6 +2618,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])); -@@ -2631,7 +2642,6 @@ static int cake_change(struct Qdisc *sch +@@ -2628,7 +2639,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; -@@ -2652,20 +2662,12 @@ static int cake_change(struct Qdisc *sch +@@ -2649,20 +2659,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]) -@@ -2684,13 +2686,6 @@ static int cake_change(struct Qdisc *sch +@@ -2681,13 +2683,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; -@@ -2721,6 +2716,34 @@ static int cake_change(struct Qdisc *sch +@@ -2718,6 +2713,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); -@@ -2737,7 +2760,23 @@ static void cake_destroy(struct Qdisc *s +@@ -2734,7 +2757,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, -@@ -2751,17 +2790,9 @@ static int cake_init(struct Qdisc *sch, +@@ -2748,17 +2787,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; -@@ -2824,10 +2855,21 @@ err: +@@ -2821,10 +2852,21 @@ err: return err; } @@ -222,7 +222,7 @@ Signed-off-by: Paolo Abeni struct nlattr *opts; u16 rate_flags; u8 flow_mode; -@@ -2903,6 +2945,13 @@ nla_put_failure: +@@ -2900,6 +2942,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); -@@ -3166,6 +3215,7 @@ MODULE_ALIAS_NET_SCH("cake"); +@@ -3163,6 +3212,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) -@@ -3176,25 +3226,68 @@ static void cake_mq_destroy(struct Qdisc +@@ -3173,25 +3223,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.18/700-05-v7.0-net-sched-sch_cake-share-shaper-state-across-sub-ins.patch b/target/linux/generic/backport-6.18/700-05-v7.0-net-sched-sch_cake-share-shaper-state-across-sub-ins.patch index 147789d4905..1d7cce166ec 100644 --- a/target/linux/generic/backport-6.18/700-05-v7.0-net-sched-sch_cake-share-shaper-state-across-sub-ins.patch +++ b/target/linux/generic/backport-6.18/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) * -@@ -2009,6 +2017,40 @@ static struct sk_buff *cake_dequeue(stru +@@ -2006,6 +2014,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; -@@ -2208,6 +2250,7 @@ retry: +@@ -2205,6 +2247,7 @@ retry: WRITE_ONCE(b->tin_ecn_mark, 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))); -@@ -2310,6 +2353,9 @@ static void cake_set_rate(struct cake_ti +@@ -2307,6 +2350,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, -@@ -2777,6 +2823,7 @@ static void cake_config_init(struct cake +@@ -2774,6 +2820,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, -@@ -2848,6 +2895,9 @@ static int cake_init(struct Qdisc *sch, +@@ -2845,6 +2892,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); -@@ -2980,6 +3030,7 @@ static int cake_dump_stats(struct Qdisc +@@ -2977,6 +3027,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.18/700-07-v7.0-net-sched-cake-avoid-separate-allocation-of-struct-c.patch b/target/linux/generic/backport-6.18/700-07-v7.0-net-sched-cake-avoid-separate-allocation-of-struct-c.patch index bb1f7423ab0..c6d7a3bbe06 100644 --- a/target/linux/generic/backport-6.18/700-07-v7.0-net-sched-cake-avoid-separate-allocation-of-struct-c.patch +++ b/target/linux/generic/backport-6.18/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]; -@@ -2806,8 +2807,6 @@ static void cake_destroy(struct Qdisc *s +@@ -2803,8 +2804,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) -@@ -2830,13 +2829,9 @@ static int cake_init(struct Qdisc *sch, +@@ -2827,13 +2826,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; -@@ -2848,14 +2843,13 @@ static int cake_init(struct Qdisc *sch, +@@ -2845,14 +2840,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++) -@@ -2863,10 +2857,8 @@ static int cake_init(struct Qdisc *sch, +@@ -2860,10 +2854,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; -@@ -2899,22 +2891,13 @@ static int cake_init(struct Qdisc *sch, +@@ -2896,22 +2888,13 @@ static int cake_init(struct Qdisc *sch, qd->last_checked_active = 0; return 0; diff --git a/target/linux/generic/backport-6.18/701-01-v7.0-net-sched-sch_cake-avoid-sync-overhead-when-unlimite.patch b/target/linux/generic/backport-6.18/701-01-v7.0-net-sched-sch_cake-avoid-sync-overhead-when-unlimite.patch index 150f44c1a1f..3eab4c1a517 100644 --- a/target/linux/generic/backport-6.18/701-01-v7.0-net-sched-sch_cake-avoid-sync-overhead-when-unlimite.patch +++ b/target/linux/generic/backport-6.18/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 -@@ -2018,7 +2018,8 @@ static struct sk_buff *cake_dequeue(stru +@@ -2015,7 +2015,8 @@ static struct sk_buff *cake_dequeue(stru u64 delay; u32 len; diff --git a/target/linux/generic/backport-6.18/701-02-v7.0-net-sched-sch_cake-fixup-cake_mq-rate-adjustment-for.patch b/target/linux/generic/backport-6.18/701-02-v7.0-net-sched-sch_cake-fixup-cake_mq-rate-adjustment-for.patch index fdecc8644ca..c6d27079243 100644 --- a/target/linux/generic/backport-6.18/701-02-v7.0-net-sched-sch_cake-fixup-cake_mq-rate-adjustment-for.patch +++ b/target/linux/generic/backport-6.18/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) * -@@ -2045,12 +2045,9 @@ static struct sk_buff *cake_dequeue(stru +@@ -2042,12 +2042,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: -@@ -2370,12 +2367,10 @@ static void cake_set_rate(struct cake_ti +@@ -2367,12 +2364,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; -@@ -2389,12 +2384,10 @@ static int cake_config_besteffort(struct +@@ -2386,12 +2381,10 @@ static int cake_config_besteffort(struct return 0; } @@ -76,7 +76,7 @@ Signed-off-by: Jakub Kicinski u32 quantum = 256; u32 i; -@@ -2465,7 +2458,7 @@ static int cake_config_precedence(struct +@@ -2462,7 +2455,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: * -@@ -2482,8 +2475,6 @@ static int cake_config_diffserv8(struct +@@ -2479,8 +2472,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; -@@ -2513,7 +2504,7 @@ static int cake_config_diffserv8(struct +@@ -2510,7 +2501,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: * -@@ -2526,8 +2517,6 @@ static int cake_config_diffserv4(struct +@@ -2523,8 +2514,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; -@@ -2555,7 +2544,7 @@ static int cake_config_diffserv4(struct +@@ -2552,7 +2541,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) -@@ -2563,8 +2552,6 @@ static int cake_config_diffserv3(struct +@@ -2560,8 +2549,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; -@@ -2589,32 +2576,33 @@ static int cake_config_diffserv3(struct +@@ -2586,32 +2573,33 @@ static int cake_config_diffserv3(struct return 0; } @@ -170,7 +170,7 @@ Signed-off-by: Jakub Kicinski break; } -@@ -2625,6 +2613,14 @@ static void cake_reconfigure(struct Qdis +@@ -2622,6 +2610,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.18/711-v7.2-net-phy-sfp-detect-presence-via-I2C-when-no-MOD_DEF0-GPIO.patch b/target/linux/generic/backport-6.18/711-v7.2-net-phy-sfp-detect-presence-via-I2C-when-no-MOD_DEF0-GPIO.patch index 30787e6a273..ebefbfb4882 100644 --- a/target/linux/generic/backport-6.18/711-v7.2-net-phy-sfp-detect-presence-via-I2C-when-no-MOD_DEF0-GPIO.patch +++ b/target/linux/generic/backport-6.18/711-v7.2-net-phy-sfp-detect-presence-via-I2C-when-no-MOD_DEF0-GPIO.patch @@ -74,7 +74,7 @@ Signed-off-by: Jakub Kicinski /* Access rules: * state_hw_drive: st_mutex held * state_hw_mask: st_mutex held -@@ -861,6 +878,45 @@ static int sfp_read(struct sfp *sfp, boo +@@ -862,6 +879,45 @@ static int sfp_read(struct sfp *sfp, boo return sfp->read(sfp, a2, addr, buf, len); } @@ -120,7 +120,7 @@ Signed-off-by: Jakub Kicinski static int sfp_write(struct sfp *sfp, bool a2, u8 addr, void *buf, size_t len) { return sfp->write(sfp, a2, addr, buf, len); -@@ -3159,9 +3215,30 @@ static int sfp_probe(struct platform_dev +@@ -3160,9 +3216,30 @@ static int sfp_probe(struct platform_dev sfp->get_state = sfp_gpio_get_state; sfp->set_state = sfp_gpio_set_state; diff --git a/target/linux/generic/backport-6.18/752-v7.2-net-dsa-qca8k-fix-led-devicename-when-using-external.patch b/target/linux/generic/backport-6.18/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.18/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.18/784-06-v6.19-net-phy-realtek-Add-RTL8224-cable-testing-support.patch b/target/linux/generic/backport-6.18/784-06-v6.19-net-phy-realtek-Add-RTL8224-cable-testing-support.patch index ef2bf7b21c1..a04ed4fa503 100644 --- a/target/linux/generic/backport-6.18/784-06-v6.19-net-phy-realtek-Add-RTL8224-cable-testing-support.patch +++ b/target/linux/generic/backport-6.18/784-06-v6.19-net-phy-realtek-Add-RTL8224-cable-testing-support.patch @@ -86,7 +86,7 @@ Signed-off-by: Jakub Kicinski #define RTL8366RB_POWER_SAVE 0x15 #define RTL8366RB_POWER_SAVE_ON BIT(12) -@@ -1494,6 +1516,168 @@ static int rtl822xb_c45_read_status(stru +@@ -1495,6 +1517,168 @@ static int rtl822xb_c45_read_status(stru return 0; } @@ -255,7 +255,7 @@ Signed-off-by: Jakub Kicinski static bool rtlgen_supports_2_5gbps(struct phy_device *phydev) { int val; -@@ -1971,11 +2155,14 @@ static struct phy_driver realtek_drvs[] +@@ -1972,11 +2156,14 @@ static struct phy_driver realtek_drvs[] }, { PHY_ID_MATCH_EXACT(0x001ccad0), .name = "RTL8224 2.5Gbps PHY", diff --git a/target/linux/generic/backport-6.18/784-07-v6.19-net-phy-realtek-add-interrupt-support-for-RTL8221B.patch b/target/linux/generic/backport-6.18/784-07-v6.19-net-phy-realtek-add-interrupt-support-for-RTL8221B.patch index 7e263269d3b..9a180c56e56 100644 --- a/target/linux/generic/backport-6.18/784-07-v6.19-net-phy-realtek-add-interrupt-support-for-RTL8221B.patch +++ b/target/linux/generic/backport-6.18/784-07-v6.19-net-phy-realtek-add-interrupt-support-for-RTL8221B.patch @@ -31,7 +31,7 @@ Signed-off-by: Jakub Kicinski #define RTL8224_MII_RTCT 0x11 #define RTL8224_MII_RTCT_ENABLE BIT(0) #define RTL8224_MII_RTCT_PAIR_A BIT(4) -@@ -1921,6 +1926,53 @@ static irqreturn_t rtl9000a_handle_inter +@@ -1922,6 +1927,53 @@ static irqreturn_t rtl9000a_handle_inter return IRQ_HANDLED; } @@ -85,7 +85,7 @@ Signed-off-by: Jakub Kicinski static struct phy_driver realtek_drvs[] = { { PHY_ID_MATCH_EXACT(0x00008201), -@@ -2095,6 +2147,8 @@ static struct phy_driver realtek_drvs[] +@@ -2096,6 +2148,8 @@ static struct phy_driver realtek_drvs[] }, { .match_phy_device = rtl8221b_vb_cg_c45_match_phy_device, .name = "RTL8221B-VB-CG 2.5Gbps PHY (C45)", @@ -94,7 +94,7 @@ Signed-off-by: Jakub Kicinski .probe = rtl822x_probe, .config_init = rtl822xb_config_init, .get_rate_matching = rtl822xb_get_rate_matching, -@@ -2119,6 +2173,8 @@ static struct phy_driver realtek_drvs[] +@@ -2120,6 +2174,8 @@ static struct phy_driver realtek_drvs[] }, { .match_phy_device = rtl8221b_vm_cg_c45_match_phy_device, .name = "RTL8221B-VM-CG 2.5Gbps PHY (C45)", diff --git a/target/linux/generic/backport-6.18/788-v7.0-net-phy-realtek-fix-whitespace-in-struct-phy_driver-.patch b/target/linux/generic/backport-6.18/788-v7.0-net-phy-realtek-fix-whitespace-in-struct-phy_driver-.patch index e577166e904..c27fdfdc926 100644 --- a/target/linux/generic/backport-6.18/788-v7.0-net-phy-realtek-fix-whitespace-in-struct-phy_driver-.patch +++ b/target/linux/generic/backport-6.18/788-v7.0-net-phy-realtek-fix-whitespace-in-struct-phy_driver-.patch @@ -17,7 +17,7 @@ Signed-off-by: Paolo Abeni --- a/drivers/net/phy/realtek/realtek_main.c +++ b/drivers/net/phy/realtek/realtek_main.c -@@ -1976,7 +1976,7 @@ static irqreturn_t rtl8221b_handle_inter +@@ -1977,7 +1977,7 @@ static irqreturn_t rtl8221b_handle_inter static struct phy_driver realtek_drvs[] = { { PHY_ID_MATCH_EXACT(0x00008201), @@ -26,7 +26,7 @@ Signed-off-by: Paolo Abeni .read_page = rtl821x_read_page, .write_page = rtl821x_write_page, }, { -@@ -2102,7 +2102,7 @@ static struct phy_driver realtek_drvs[] +@@ -2103,7 +2103,7 @@ static struct phy_driver realtek_drvs[] .name = "RTL8226B_RTL8221B 2.5Gbps PHY", .get_features = rtl822x_get_features, .config_aneg = rtl822x_config_aneg, @@ -35,7 +35,7 @@ Signed-off-by: Paolo Abeni .get_rate_matching = rtl822xb_get_rate_matching, .read_status = rtl822xb_read_status, .suspend = genphy_suspend, -@@ -2111,112 +2111,112 @@ static struct phy_driver realtek_drvs[] +@@ -2112,112 +2112,112 @@ static struct phy_driver realtek_drvs[] .write_page = rtl821x_write_page, }, { PHY_ID_MATCH_EXACT(0x001cc838), @@ -218,7 +218,7 @@ Signed-off-by: Paolo Abeni .cable_test_start = rtl8224_cable_test_start, .cable_test_get_status = rtl8224_cable_test_get_status, }, { -@@ -2235,7 +2235,7 @@ static struct phy_driver realtek_drvs[] +@@ -2236,7 +2236,7 @@ static struct phy_driver realtek_drvs[] }, { PHY_ID_MATCH_EXACT(0x001ccb00), .name = "RTL9000AA_RTL9000AN Ethernet", diff --git a/target/linux/generic/backport-6.18/789-v7.0-net-phy-realtek-implement-configuring-in-band-an.patch b/target/linux/generic/backport-6.18/789-v7.0-net-phy-realtek-implement-configuring-in-band-an.patch index 16e6de29a7e..b4ba4f6130a 100644 --- a/target/linux/generic/backport-6.18/789-v7.0-net-phy-realtek-implement-configuring-in-band-an.patch +++ b/target/linux/generic/backport-6.18/789-v7.0-net-phy-realtek-implement-configuring-in-band-an.patch @@ -83,7 +83,7 @@ Signed-off-by: Paolo Abeni static int rtl822xb_get_rate_matching(struct phy_device *phydev, phy_interface_t iface) { -@@ -2103,6 +2156,8 @@ static struct phy_driver realtek_drvs[] +@@ -2104,6 +2157,8 @@ static struct phy_driver realtek_drvs[] .get_features = rtl822x_get_features, .config_aneg = rtl822x_config_aneg, .config_init = rtl822xb_config_init, @@ -92,7 +92,7 @@ Signed-off-by: Paolo Abeni .get_rate_matching = rtl822xb_get_rate_matching, .read_status = rtl822xb_read_status, .suspend = genphy_suspend, -@@ -2116,6 +2171,8 @@ static struct phy_driver realtek_drvs[] +@@ -2117,6 +2172,8 @@ static struct phy_driver realtek_drvs[] .get_features = rtl822x_c45_get_features, .config_aneg = rtl822x_c45_config_aneg, .config_init = rtl822x_config_init, @@ -101,7 +101,7 @@ Signed-off-by: Paolo Abeni .read_status = rtl822xb_c45_read_status, .suspend = genphy_c45_pma_suspend, .resume = rtlgen_c45_resume, -@@ -2125,6 +2182,8 @@ static struct phy_driver realtek_drvs[] +@@ -2126,6 +2183,8 @@ static struct phy_driver realtek_drvs[] .get_features = rtl822x_get_features, .config_aneg = rtl822x_config_aneg, .config_init = rtl822xb_config_init, @@ -110,7 +110,7 @@ Signed-off-by: Paolo Abeni .get_rate_matching = rtl822xb_get_rate_matching, .read_status = rtl822xb_read_status, .suspend = genphy_suspend, -@@ -2138,6 +2197,8 @@ static struct phy_driver realtek_drvs[] +@@ -2139,6 +2198,8 @@ static struct phy_driver realtek_drvs[] .get_features = rtl822x_get_features, .config_aneg = rtl822x_config_aneg, .config_init = rtl822xb_config_init, @@ -119,7 +119,7 @@ Signed-off-by: Paolo Abeni .get_rate_matching = rtl822xb_get_rate_matching, .read_status = rtl822xb_read_status, .suspend = genphy_suspend, -@@ -2151,6 +2212,8 @@ static struct phy_driver realtek_drvs[] +@@ -2152,6 +2213,8 @@ static struct phy_driver realtek_drvs[] .handle_interrupt = rtl8221b_handle_interrupt, .probe = rtl822x_probe, .config_init = rtl822xb_config_init, @@ -128,7 +128,7 @@ Signed-off-by: Paolo Abeni .get_rate_matching = rtl822xb_get_rate_matching, .get_features = rtl822x_c45_get_features, .config_aneg = rtl822x_c45_config_aneg, -@@ -2164,6 +2227,8 @@ static struct phy_driver realtek_drvs[] +@@ -2165,6 +2228,8 @@ static struct phy_driver realtek_drvs[] .get_features = rtl822x_get_features, .config_aneg = rtl822x_config_aneg, .config_init = rtl822xb_config_init, @@ -137,7 +137,7 @@ Signed-off-by: Paolo Abeni .get_rate_matching = rtl822xb_get_rate_matching, .read_status = rtl822xb_read_status, .suspend = genphy_suspend, -@@ -2177,6 +2242,8 @@ static struct phy_driver realtek_drvs[] +@@ -2178,6 +2243,8 @@ static struct phy_driver realtek_drvs[] .handle_interrupt = rtl8221b_handle_interrupt, .probe = rtl822x_probe, .config_init = rtl822xb_config_init, diff --git a/target/linux/generic/backport-6.18/790-v7.0-net-phy-realtek-use-paged-access-for-MDIO_MMD_VEND2-.patch b/target/linux/generic/backport-6.18/790-v7.0-net-phy-realtek-use-paged-access-for-MDIO_MMD_VEND2-.patch index d84fb6af391..dd9b58bd79e 100644 --- a/target/linux/generic/backport-6.18/790-v7.0-net-phy-realtek-use-paged-access-for-MDIO_MMD_VEND2-.patch +++ b/target/linux/generic/backport-6.18/790-v7.0-net-phy-realtek-use-paged-access-for-MDIO_MMD_VEND2-.patch @@ -116,7 +116,7 @@ Signed-off-by: Paolo Abeni static int rtl822x_set_serdes_option_mode(struct phy_device *phydev, bool gen1) { bool has_2500, has_sgmii; -@@ -2150,6 +2222,8 @@ static struct phy_driver realtek_drvs[] +@@ -2151,6 +2223,8 @@ static struct phy_driver realtek_drvs[] .resume = rtlgen_resume, .read_page = rtl821x_read_page, .write_page = rtl821x_write_page, @@ -125,7 +125,7 @@ Signed-off-by: Paolo Abeni }, { .match_phy_device = rtl8221b_match_phy_device, .name = "RTL8226B_RTL8221B 2.5Gbps PHY", -@@ -2164,6 +2238,8 @@ static struct phy_driver realtek_drvs[] +@@ -2165,6 +2239,8 @@ static struct phy_driver realtek_drvs[] .resume = rtlgen_resume, .read_page = rtl821x_read_page, .write_page = rtl821x_write_page, @@ -134,7 +134,7 @@ Signed-off-by: Paolo Abeni }, { PHY_ID_MATCH_EXACT(0x001cc838), .name = "RTL8226-CG 2.5Gbps PHY", -@@ -2176,6 +2252,8 @@ static struct phy_driver realtek_drvs[] +@@ -2177,6 +2253,8 @@ static struct phy_driver realtek_drvs[] .read_status = rtl822xb_c45_read_status, .suspend = genphy_c45_pma_suspend, .resume = rtlgen_c45_resume, @@ -143,7 +143,7 @@ Signed-off-by: Paolo Abeni }, { PHY_ID_MATCH_EXACT(0x001cc848), .name = "RTL8226B-CG_RTL8221B-CG 2.5Gbps PHY", -@@ -2190,6 +2268,8 @@ static struct phy_driver realtek_drvs[] +@@ -2191,6 +2269,8 @@ static struct phy_driver realtek_drvs[] .resume = rtlgen_resume, .read_page = rtl821x_read_page, .write_page = rtl821x_write_page, @@ -152,7 +152,7 @@ Signed-off-by: Paolo Abeni }, { .match_phy_device = rtl8221b_vb_cg_c22_match_phy_device, .name = "RTL8221B-VB-CG 2.5Gbps PHY (C22)", -@@ -2205,6 +2285,8 @@ static struct phy_driver realtek_drvs[] +@@ -2206,6 +2286,8 @@ static struct phy_driver realtek_drvs[] .resume = rtlgen_resume, .read_page = rtl821x_read_page, .write_page = rtl821x_write_page, @@ -161,7 +161,7 @@ Signed-off-by: Paolo Abeni }, { .match_phy_device = rtl8221b_vb_cg_c45_match_phy_device, .name = "RTL8221B-VB-CG 2.5Gbps PHY (C45)", -@@ -2235,6 +2317,8 @@ static struct phy_driver realtek_drvs[] +@@ -2236,6 +2318,8 @@ static struct phy_driver realtek_drvs[] .resume = rtlgen_resume, .read_page = rtl821x_read_page, .write_page = rtl821x_write_page, diff --git a/target/linux/generic/backport-6.18/792-v7.0-net-phy-realtek-add-dummy-PHY-driver-for-RTL8127ATF.patch b/target/linux/generic/backport-6.18/792-v7.0-net-phy-realtek-add-dummy-PHY-driver-for-RTL8127ATF.patch index 49f1f4f5526..d88f575e52e 100644 --- a/target/linux/generic/backport-6.18/792-v7.0-net-phy-realtek-add-dummy-PHY-driver-for-RTL8127ATF.patch +++ b/target/linux/generic/backport-6.18/792-v7.0-net-phy-realtek-add-dummy-PHY-driver-for-RTL8127ATF.patch @@ -44,7 +44,7 @@ Signed-off-by: Jakub Kicinski #include "realtek.h" -@@ -2099,6 +2100,45 @@ static irqreturn_t rtl8221b_handle_inter +@@ -2100,6 +2101,45 @@ static irqreturn_t rtl8221b_handle_inter return IRQ_HANDLED; } @@ -90,7 +90,7 @@ Signed-off-by: Jakub Kicinski static struct phy_driver realtek_drvs[] = { { PHY_ID_MATCH_EXACT(0x00008201), -@@ -2357,6 +2397,20 @@ static struct phy_driver realtek_drvs[] +@@ -2358,6 +2398,20 @@ static struct phy_driver realtek_drvs[] .suspend = genphy_suspend, .resume = rtlgen_resume, .read_page = rtl821x_read_page, diff --git a/target/linux/generic/backport-6.18/794-v7.0-net-phy-realtek-support-interrupt-also-for-C22-varia.patch b/target/linux/generic/backport-6.18/794-v7.0-net-phy-realtek-support-interrupt-also-for-C22-varia.patch index ea3347d3bb0..3dcf01840cc 100644 --- a/target/linux/generic/backport-6.18/794-v7.0-net-phy-realtek-support-interrupt-also-for-C22-varia.patch +++ b/target/linux/generic/backport-6.18/794-v7.0-net-phy-realtek-support-interrupt-also-for-C22-varia.patch @@ -18,7 +18,7 @@ Signed-off-by: Jakub Kicinski --- a/drivers/net/phy/realtek/realtek_main.c +++ b/drivers/net/phy/realtek/realtek_main.c -@@ -2315,6 +2315,8 @@ static struct phy_driver realtek_drvs[] +@@ -2316,6 +2316,8 @@ static struct phy_driver realtek_drvs[] }, { .match_phy_device = rtl8221b_vb_cg_c22_match_phy_device, .name = "RTL8221B-VB-CG 2.5Gbps PHY (C22)", @@ -27,7 +27,7 @@ Signed-off-by: Jakub Kicinski .probe = rtl822x_probe, .get_features = rtl822x_get_features, .config_aneg = rtl822x_config_aneg, -@@ -2347,6 +2349,8 @@ static struct phy_driver realtek_drvs[] +@@ -2348,6 +2350,8 @@ static struct phy_driver realtek_drvs[] }, { .match_phy_device = rtl8221b_vm_cg_c22_match_phy_device, .name = "RTL8221B-VM-CG 2.5Gbps PHY (C22)", diff --git a/target/linux/generic/backport-6.18/796-v7.0-net-phy-realtek-reunify-C22-and-C45-drivers.patch b/target/linux/generic/backport-6.18/796-v7.0-net-phy-realtek-reunify-C22-and-C45-drivers.patch index 5bca3035d97..c81783dc177 100644 --- a/target/linux/generic/backport-6.18/796-v7.0-net-phy-realtek-reunify-C22-and-C45-drivers.patch +++ b/target/linux/generic/backport-6.18/796-v7.0-net-phy-realtek-reunify-C22-and-C45-drivers.patch @@ -22,7 +22,7 @@ Signed-off-by: Jakub Kicinski --- a/drivers/net/phy/realtek/realtek_main.c +++ b/drivers/net/phy/realtek/realtek_main.c -@@ -1880,28 +1880,18 @@ static int rtl8221b_match_phy_device(str +@@ -1881,28 +1881,18 @@ static int rtl8221b_match_phy_device(str return phydev->phy_id == RTL_8221B && rtlgen_supports_mmd(phydev); } @@ -59,7 +59,7 @@ Signed-off-by: Jakub Kicinski } static int rtl_internal_nbaset_match_phy_device(struct phy_device *phydev, -@@ -2324,27 +2314,8 @@ static struct phy_driver realtek_drvs[] +@@ -2325,27 +2315,8 @@ static struct phy_driver realtek_drvs[] .read_mmd = rtl822xb_read_mmd, .write_mmd = rtl822xb_write_mmd, }, { @@ -89,7 +89,7 @@ Signed-off-by: Jakub Kicinski .config_intr = rtl8221b_config_intr, .handle_interrupt = rtl8221b_handle_interrupt, .probe = rtl822x_probe, -@@ -2357,28 +2328,13 @@ static struct phy_driver realtek_drvs[] +@@ -2358,28 +2329,13 @@ static struct phy_driver realtek_drvs[] .read_status = rtl822xb_c45_read_status, .suspend = genphy_c45_pma_suspend, .resume = rtlgen_c45_resume, @@ -120,7 +120,7 @@ Signed-off-by: Jakub Kicinski .config_intr = rtl8221b_config_intr, .handle_interrupt = rtl8221b_handle_interrupt, .probe = rtl822x_probe, -@@ -2391,6 +2347,10 @@ static struct phy_driver realtek_drvs[] +@@ -2392,6 +2348,10 @@ static struct phy_driver realtek_drvs[] .read_status = rtl822xb_c45_read_status, .suspend = genphy_c45_pma_suspend, .resume = rtlgen_c45_resume, diff --git a/target/linux/generic/backport-6.18/797-v7.0-net-phy-realtek-demystify-PHYSR-register-location.patch b/target/linux/generic/backport-6.18/797-v7.0-net-phy-realtek-demystify-PHYSR-register-location.patch index 185e0fdf729..71f2bce8fc5 100644 --- a/target/linux/generic/backport-6.18/797-v7.0-net-phy-realtek-demystify-PHYSR-register-location.patch +++ b/target/linux/generic/backport-6.18/797-v7.0-net-phy-realtek-demystify-PHYSR-register-location.patch @@ -69,7 +69,7 @@ Signed-off-by: Jakub Kicinski if (val < 0) return val; -@@ -1623,7 +1622,8 @@ static int rtl822x_c45_read_status(struc +@@ -1624,7 +1623,8 @@ static int rtl822x_c45_read_status(struc } /* Read actual speed from vendor register. */ @@ -79,7 +79,7 @@ Signed-off-by: Jakub Kicinski if (val < 0) return val; -@@ -2127,7 +2127,7 @@ static int rtlgen_sfp_read_status(struct +@@ -2128,7 +2128,7 @@ static int rtlgen_sfp_read_status(struct if (!phydev->link) return 0; diff --git a/target/linux/generic/hack-6.18/205-kconfig-abort-configuration-on-unset-symbol.patch b/target/linux/generic/hack-6.18/205-kconfig-abort-configuration-on-unset-symbol.patch index d7416d81a9e..e80153765ff 100644 --- a/target/linux/generic/hack-6.18/205-kconfig-abort-configuration-on-unset-symbol.patch +++ b/target/linux/generic/hack-6.18/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.18/645-netfilter-connmark-introduce-set-dscpmark.patch b/target/linux/generic/hack-6.18/645-netfilter-connmark-introduce-set-dscpmark.patch index bb802857d6b..a1e7f4b3bee 100644 --- a/target/linux/generic/hack-6.18/645-netfilter-connmark-introduce-set-dscpmark.patch +++ b/target/linux/generic/hack-6.18/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.18/650-netfilter-add-xt_FLOWOFFLOAD-target.patch b/target/linux/generic/hack-6.18/650-netfilter-add-xt_FLOWOFFLOAD-target.patch index fb24eb99469..2217b0829bb 100644 --- a/target/linux/generic/hack-6.18/650-netfilter-add-xt_FLOWOFFLOAD-target.patch +++ b/target/linux/generic/hack-6.18/650-netfilter-add-xt_FLOWOFFLOAD-target.patch @@ -34,7 +34,7 @@ Signed-off-by: Felix Fietkau depends on NETFILTER_ADVANCED --- a/net/netfilter/Makefile +++ b/net/netfilter/Makefile -@@ -167,6 +167,7 @@ obj-$(CONFIG_NETFILTER_XT_TARGET_CLASSIF +@@ -168,6 +168,7 @@ obj-$(CONFIG_NETFILTER_XT_TARGET_CLASSIF obj-$(CONFIG_NETFILTER_XT_TARGET_CONNSECMARK) += xt_CONNSECMARK.o obj-$(CONFIG_NETFILTER_XT_TARGET_CT) += xt_CT.o obj-$(CONFIG_NETFILTER_XT_TARGET_DSCP) += xt_DSCP.o @@ -798,7 +798,7 @@ Signed-off-by: Felix Fietkau +#endif /* _XT_FLOWOFFLOAD_H */ --- a/include/net/netfilter/nf_flow_table.h +++ b/include/net/netfilter/nf_flow_table.h -@@ -295,6 +295,11 @@ void nf_flow_table_free(struct nf_flowta +@@ -301,6 +301,11 @@ void nf_flow_table_free(struct nf_flowta void flow_offload_teardown(struct flow_offload *flow); diff --git a/target/linux/generic/hack-6.18/660-fq_codel_defaults.patch b/target/linux/generic/hack-6.18/660-fq_codel_defaults.patch index 64201f9bdf9..84f9bdc999b 100644 --- a/target/linux/generic/hack-6.18/660-fq_codel_defaults.patch +++ b/target/linux/generic/hack-6.18/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 -@@ -475,7 +475,11 @@ static int fq_codel_init(struct Qdisc *s +@@ -512,7 +512,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.18/661-kernel-ct-size-the-hashtable-more-adequately.patch b/target/linux/generic/hack-6.18/661-kernel-ct-size-the-hashtable-more-adequately.patch index d64a3eb9e7b..33649bc0baa 100644 --- a/target/linux/generic/hack-6.18/661-kernel-ct-size-the-hashtable-more-adequately.patch +++ b/target/linux/generic/hack-6.18/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 -@@ -2640,7 +2640,7 @@ int nf_conntrack_init_start(void) +@@ -2597,7 +2597,7 @@ int nf_conntrack_init_start(void) if (!nf_conntrack_htable_size) { nf_conntrack_htable_size diff --git a/target/linux/generic/hack-6.18/710-net-sched-sch_cake-configure-sync_time-via-debugfs.patch b/target/linux/generic/hack-6.18/710-net-sched-sch_cake-configure-sync_time-via-debugfs.patch index b94d6f3a696..f9da00e0aa8 100644 --- a/target/linux/generic/hack-6.18/710-net-sched-sch_cake-configure-sync_time-via-debugfs.patch +++ b/target/linux/generic/hack-6.18/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 -@@ -2019,7 +2022,7 @@ static struct sk_buff *cake_dequeue(stru +@@ -2016,7 +2019,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; -@@ -3361,8 +3364,13 @@ static int __init cake_module_init(void) +@@ -3358,8 +3361,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; } -@@ -3371,6 +3379,7 @@ static void __exit cake_module_exit(void +@@ -3368,6 +3376,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/hack-6.18/721-net-add-packet-mangeling.patch b/target/linux/generic/hack-6.18/721-net-add-packet-mangeling.patch index 3c19fe17822..05fb232d7bb 100644 --- a/target/linux/generic/hack-6.18/721-net-add-packet-mangeling.patch +++ b/target/linux/generic/hack-6.18/721-net-add-packet-mangeling.patch @@ -27,7 +27,7 @@ Signed-off-by: Felix Fietkau }; /* Specifies the type of the struct net_device::ml_priv pointer */ -@@ -2244,6 +2245,11 @@ struct net_device { +@@ -2246,6 +2247,11 @@ struct net_device { const struct tlsdev_ops *tlsdev_ops; #endif @@ -39,7 +39,7 @@ Signed-off-by: Felix Fietkau unsigned int operstate; unsigned char link_mode; -@@ -2320,6 +2326,10 @@ struct net_device { +@@ -2322,6 +2328,10 @@ struct net_device { struct psp_dev __rcu *psp_dev; #endif diff --git a/target/linux/generic/hack-6.18/902-debloat_proc.patch b/target/linux/generic/hack-6.18/902-debloat_proc.patch index 4afc1e8c5af..3fa54594acf 100644 --- a/target/linux/generic/hack-6.18/902-debloat_proc.patch +++ b/target/linux/generic/hack-6.18/902-debloat_proc.patch @@ -331,7 +331,7 @@ Signed-off-by: Felix Fietkau --- a/net/core/sock.c +++ b/net/core/sock.c -@@ -4358,6 +4358,8 @@ static __net_initdata struct pernet_oper +@@ -4353,6 +4353,8 @@ static __net_initdata struct pernet_oper static int __init proto_init(void) { diff --git a/target/linux/generic/hack-6.18/930-Revert-Revert-Revert-driver-core-Set-fw_devlink-on-b.patch b/target/linux/generic/hack-6.18/930-Revert-Revert-Revert-driver-core-Set-fw_devlink-on-b.patch index 1f0fb67a7f4..f7b12573a65 100644 --- a/target/linux/generic/hack-6.18/930-Revert-Revert-Revert-driver-core-Set-fw_devlink-on-b.patch +++ b/target/linux/generic/hack-6.18/930-Revert-Revert-Revert-driver-core-Set-fw_devlink-on-b.patch @@ -19,7 +19,7 @@ Signed-off-by: Rafał Miłecki --- a/drivers/base/core.c +++ b/drivers/base/core.c -@@ -1652,7 +1652,7 @@ static void device_links_purge(struct de +@@ -1717,7 +1717,7 @@ static void device_links_purge(struct de #define FW_DEVLINK_FLAGS_RPM (FW_DEVLINK_FLAGS_ON | \ DL_FLAG_PM_RUNTIME) diff --git a/target/linux/generic/kernel-6.18 b/target/linux/generic/kernel-6.18 index eba60731b26..8771b7b4c54 100644 --- a/target/linux/generic/kernel-6.18 +++ b/target/linux/generic/kernel-6.18 @@ -1,2 +1,2 @@ -LINUX_VERSION-6.18 = .39 -LINUX_KERNEL_HASH-6.18.39 = a7a7e3d2ae9d95e74197223a8d4eb5f6be7aac21b6e6de27e9685d001c1f8cb0 +LINUX_VERSION-6.18 = .40 +LINUX_KERNEL_HASH-6.18.40 = 3712fc1ec839e4daac981176c8518912e8f452650aaedfe4381da4419613a431 diff --git a/target/linux/generic/pending-6.18/402-mtd-spi-nor-write-support-for-minor-aligned-partitions.patch b/target/linux/generic/pending-6.18/402-mtd-spi-nor-write-support-for-minor-aligned-partitions.patch index 7e998113440..fbacedbfe98 100644 --- a/target/linux/generic/pending-6.18/402-mtd-spi-nor-write-support-for-minor-aligned-partitions.patch +++ b/target/linux/generic/pending-6.18/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.18/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch b/target/linux/generic/pending-6.18/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch index 9e2373bdfa8..9a332f44c5a 100644 --- a/target/linux/generic/pending-6.18/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch +++ b/target/linux/generic/pending-6.18/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch @@ -424,7 +424,7 @@ Signed-off-by: Steven Barth } static int ip6_tnl_newlink(struct net_device *dev, -@@ -2123,6 +2342,12 @@ static void ip6_tnl_dellink(struct net_d +@@ -2126,6 +2345,12 @@ static void ip6_tnl_dellink(struct net_d static size_t ip6_tnl_get_size(const struct net_device *dev) { @@ -437,7 +437,7 @@ Signed-off-by: Steven Barth return /* IFLA_IPTUN_LINK */ nla_total_size(4) + -@@ -2152,6 +2377,24 @@ static size_t ip6_tnl_get_size(const str +@@ -2155,6 +2380,24 @@ static size_t ip6_tnl_get_size(const str nla_total_size(0) + /* IFLA_IPTUN_FWMARK */ nla_total_size(4) + @@ -462,7 +462,7 @@ Signed-off-by: Steven Barth 0; } -@@ -2159,6 +2402,9 @@ static int ip6_tnl_fill_info(struct sk_b +@@ -2162,6 +2405,9 @@ static int ip6_tnl_fill_info(struct sk_b { struct ip6_tnl *tunnel = netdev_priv(dev); struct __ip6_tnl_parm *parm = &tunnel->parms; @@ -472,7 +472,7 @@ Signed-off-by: Steven Barth if (nla_put_u32(skb, IFLA_IPTUN_LINK, parm->link) || nla_put_in6_addr(skb, IFLA_IPTUN_LOCAL, &parm->laddr) || -@@ -2168,9 +2414,27 @@ static int ip6_tnl_fill_info(struct sk_b +@@ -2171,9 +2417,27 @@ static int ip6_tnl_fill_info(struct sk_b nla_put_be32(skb, IFLA_IPTUN_FLOWINFO, parm->flowinfo) || nla_put_u32(skb, IFLA_IPTUN_FLAGS, parm->flags) || nla_put_u8(skb, IFLA_IPTUN_PROTO, parm->proto) || @@ -501,7 +501,7 @@ Signed-off-by: Steven Barth if (nla_put_u16(skb, IFLA_IPTUN_ENCAP_TYPE, tunnel->encap.type) || nla_put_be16(skb, IFLA_IPTUN_ENCAP_SPORT, tunnel->encap.sport) || nla_put_be16(skb, IFLA_IPTUN_ENCAP_DPORT, tunnel->encap.dport) || -@@ -2210,6 +2474,7 @@ static const struct nla_policy ip6_tnl_p +@@ -2213,6 +2477,7 @@ static const struct nla_policy ip6_tnl_p [IFLA_IPTUN_ENCAP_DPORT] = { .type = NLA_U16 }, [IFLA_IPTUN_COLLECT_METADATA] = { .type = NLA_FLAG }, [IFLA_IPTUN_FWMARK] = { .type = NLA_U32 }, diff --git a/target/linux/generic/pending-6.18/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch b/target/linux/generic/pending-6.18/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch index 08e20df6b7c..2b768a346b5 100644 --- a/target/linux/generic/pending-6.18/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch +++ b/target/linux/generic/pending-6.18/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. */ -@@ -5209,7 +5239,8 @@ static int rtm_to_fib6_config(struct sk_ +@@ -5212,7 +5242,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) -@@ -6480,6 +6511,8 @@ static int ip6_route_dev_notify(struct n +@@ -6483,6 +6514,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 -@@ -6491,6 +6524,7 @@ static int ip6_route_dev_notify(struct n +@@ -6494,6 +6527,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 } -@@ -6686,6 +6720,8 @@ static int __net_init ip6_route_net_init +@@ -6689,6 +6723,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); -@@ -6696,11 +6732,21 @@ static int __net_init ip6_route_net_init +@@ -6699,11 +6735,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); -@@ -6727,6 +6773,8 @@ out: +@@ -6730,6 +6776,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: -@@ -6746,6 +6794,7 @@ static void __net_exit ip6_route_net_exi +@@ -6749,6 +6797,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); -@@ -6829,6 +6878,9 @@ void __init ip6_route_init_special_entri +@@ -6832,6 +6881,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.18/700-netfilter-nft_flow_offload-handle-netdevice-events-f.patch b/target/linux/generic/pending-6.18/700-netfilter-nft_flow_offload-handle-netdevice-events-f.patch index 246e1a4c6a9..de033f7059d 100644 --- a/target/linux/generic/pending-6.18/700-netfilter-nft_flow_offload-handle-netdevice-events-f.patch +++ b/target/linux/generic/pending-6.18/700-netfilter-nft_flow_offload-handle-netdevice-events-f.patch @@ -55,7 +55,7 @@ Signed-off-by: Pablo Neira Ayuso } --- a/net/netfilter/nft_flow_offload.c +++ b/net/netfilter/nft_flow_offload.c -@@ -494,47 +494,14 @@ static struct nft_expr_type nft_flow_off +@@ -235,47 +235,14 @@ static struct nft_expr_type nft_flow_off .owner = THIS_MODULE, }; diff --git a/target/linux/generic/pending-6.18/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch b/target/linux/generic/pending-6.18/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch index 78856b21c3f..24f68fff540 100644 --- a/target/linux/generic/pending-6.18/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch +++ b/target/linux/generic/pending-6.18/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch @@ -18,7 +18,7 @@ Signed-off-by: Felix Fietkau --- a/net/netfilter/nf_tables_api.c +++ b/net/netfilter/nf_tables_api.c -@@ -9092,7 +9092,7 @@ static int nft_register_flowtable_ops(st +@@ -9095,7 +9095,7 @@ static int nft_register_flowtable_ops(st err = flowtable->data.type->setup(&flowtable->data, ops->dev, FLOW_BLOCK_BIND); diff --git a/target/linux/generic/pending-6.18/720-01-net-phy-realtek-use-genphy_soft_reset-for-2.5G-PHYs.patch b/target/linux/generic/pending-6.18/720-01-net-phy-realtek-use-genphy_soft_reset-for-2.5G-PHYs.patch index 2a0a0e953b5..5273cd6eb42 100644 --- a/target/linux/generic/pending-6.18/720-01-net-phy-realtek-use-genphy_soft_reset-for-2.5G-PHYs.patch +++ b/target/linux/generic/pending-6.18/720-01-net-phy-realtek-use-genphy_soft_reset-for-2.5G-PHYs.patch @@ -15,7 +15,7 @@ Signed-off-by: Daniel Golle --- a/drivers/net/phy/realtek/realtek_main.c +++ b/drivers/net/phy/realtek/realtek_main.c -@@ -2255,6 +2255,7 @@ static struct phy_driver realtek_drvs[] +@@ -2256,6 +2256,7 @@ static struct phy_driver realtek_drvs[] }, { .name = "RTL8226 2.5Gbps PHY", .match_phy_device = rtl8226_match_phy_device, @@ -23,7 +23,7 @@ Signed-off-by: Daniel Golle .get_features = rtl822x_get_features, .config_aneg = rtl822x_config_aneg, .read_status = rtl822x_read_status, -@@ -2267,6 +2268,7 @@ static struct phy_driver realtek_drvs[] +@@ -2268,6 +2269,7 @@ static struct phy_driver realtek_drvs[] }, { .match_phy_device = rtl8221b_match_phy_device, .name = "RTL8226B_RTL8221B 2.5Gbps PHY", @@ -31,7 +31,7 @@ Signed-off-by: Daniel Golle .get_features = rtl822x_get_features, .config_aneg = rtl822x_config_aneg, .config_init = rtl822xb_config_init, -@@ -2297,6 +2299,7 @@ static struct phy_driver realtek_drvs[] +@@ -2298,6 +2300,7 @@ static struct phy_driver realtek_drvs[] }, { PHY_ID_MATCH_EXACT(0x001cc848), .name = "RTL8226B-CG_RTL8221B-CG 2.5Gbps PHY", @@ -39,7 +39,7 @@ Signed-off-by: Daniel Golle .get_features = rtl822x_get_features, .config_aneg = rtl822x_config_aneg, .config_init = rtl822xb_config_init, -@@ -2315,6 +2318,7 @@ static struct phy_driver realtek_drvs[] +@@ -2316,6 +2319,7 @@ static struct phy_driver realtek_drvs[] .name = "RTL8221B-VB-CG 2.5Gbps PHY", .config_intr = rtl8221b_config_intr, .handle_interrupt = rtl8221b_handle_interrupt, @@ -47,7 +47,7 @@ Signed-off-by: Daniel Golle .probe = rtl822x_probe, .config_init = rtl822xb_config_init, .inband_caps = rtl822x_inband_caps, -@@ -2334,6 +2338,7 @@ static struct phy_driver realtek_drvs[] +@@ -2335,6 +2339,7 @@ static struct phy_driver realtek_drvs[] .name = "RTL8221B-VM-CG 2.5Gbps PHY", .config_intr = rtl8221b_config_intr, .handle_interrupt = rtl8221b_handle_interrupt, diff --git a/target/linux/generic/pending-6.18/720-03-net-phy-realtek-make-sure-paged-read-is-protected-by.patch b/target/linux/generic/pending-6.18/720-03-net-phy-realtek-make-sure-paged-read-is-protected-by.patch index 8a0db2c2ea3..e3b1f630a3b 100644 --- a/target/linux/generic/pending-6.18/720-03-net-phy-realtek-make-sure-paged-read-is-protected-by.patch +++ b/target/linux/generic/pending-6.18/720-03-net-phy-realtek-make-sure-paged-read-is-protected-by.patch @@ -18,7 +18,7 @@ Signed-off-by: Daniel Golle --- a/drivers/net/phy/realtek/realtek_main.c +++ b/drivers/net/phy/realtek/realtek_main.c -@@ -1823,9 +1823,11 @@ static bool rtlgen_supports_2_5gbps(stru +@@ -1824,9 +1824,11 @@ static bool rtlgen_supports_2_5gbps(stru { int val; diff --git a/target/linux/generic/pending-6.18/720-05-net-phy-realtek-detect-early-version-of-RTL8221B.patch b/target/linux/generic/pending-6.18/720-05-net-phy-realtek-detect-early-version-of-RTL8221B.patch index 829f4b93019..f1aec090a6f 100644 --- a/target/linux/generic/pending-6.18/720-05-net-phy-realtek-detect-early-version-of-RTL8221B.patch +++ b/target/linux/generic/pending-6.18/720-05-net-phy-realtek-detect-early-version-of-RTL8221B.patch @@ -14,7 +14,7 @@ Signed-off-by: Daniel Golle Signed-off-by: Mieczyslaw Nalewaj --- a/drivers/net/phy/realtek/realtek_main.c +++ b/drivers/net/phy/realtek/realtek_main.c -@@ -1908,10 +1908,32 @@ static int rtl8226_match_phy_device(stru +@@ -1909,10 +1909,32 @@ static int rtl8226_match_phy_device(stru static int rtlgen_is_c45_match(struct phy_device *phydev, unsigned int id, bool is_c45) { diff --git a/target/linux/generic/pending-6.18/720-06-net-phy-realtek-mark-existing-MMDs-as-present.patch b/target/linux/generic/pending-6.18/720-06-net-phy-realtek-mark-existing-MMDs-as-present.patch index 922d3f4a873..e42c84665a3 100644 --- a/target/linux/generic/pending-6.18/720-06-net-phy-realtek-mark-existing-MMDs-as-present.patch +++ b/target/linux/generic/pending-6.18/720-06-net-phy-realtek-mark-existing-MMDs-as-present.patch @@ -15,7 +15,7 @@ Signed-off-by: Daniel Golle --- a/drivers/net/phy/realtek/realtek_main.c +++ b/drivers/net/phy/realtek/realtek_main.c -@@ -1604,6 +1604,9 @@ static int rtl822x_c45_get_features(stru +@@ -1605,6 +1605,9 @@ static int rtl822x_c45_get_features(stru linkmode_set_bit(ETHTOOL_LINK_MODE_TP_BIT, phydev->supported); diff --git a/target/linux/generic/pending-6.18/731-net-permit-ieee80211_ptr-even-with-no-CFG82111-suppo.patch b/target/linux/generic/pending-6.18/731-net-permit-ieee80211_ptr-even-with-no-CFG82111-suppo.patch index 3b45118b96a..e213c76db96 100644 --- a/target/linux/generic/pending-6.18/731-net-permit-ieee80211_ptr-even-with-no-CFG82111-suppo.patch +++ b/target/linux/generic/pending-6.18/731-net-permit-ieee80211_ptr-even-with-no-CFG82111-suppo.patch @@ -17,7 +17,7 @@ Signed-off-by: Christian Marangi --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h -@@ -2304,7 +2304,7 @@ struct net_device { +@@ -2306,7 +2306,7 @@ struct net_device { #if IS_ENABLED(CONFIG_AX25) struct ax25_dev __rcu *ax25_ptr; #endif diff --git a/target/linux/generic/pending-6.18/736-05-net-ethernet-mtk_eth_soc-zero-initialize-PPE-flow-ta.patch b/target/linux/generic/pending-6.18/736-05-net-ethernet-mtk_eth_soc-zero-initialize-PPE-flow-ta.patch index 2ca5ace3678..437fafbf40e 100644 --- a/target/linux/generic/pending-6.18/736-05-net-ethernet-mtk_eth_soc-zero-initialize-PPE-flow-ta.patch +++ b/target/linux/generic/pending-6.18/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.18/742-net-phy-realtek-add-5G-and-10G-PHY-support.patch b/target/linux/generic/pending-6.18/742-net-phy-realtek-add-5G-and-10G-PHY-support.patch index 0d6c7f48041..eedcd1db394 100644 --- a/target/linux/generic/pending-6.18/742-net-phy-realtek-add-5G-and-10G-PHY-support.patch +++ b/target/linux/generic/pending-6.18/742-net-phy-realtek-add-5G-and-10G-PHY-support.patch @@ -92,7 +92,7 @@ Signed-off-by: Balázs Triszka MODULE_DESCRIPTION("Realtek PHY driver"); MODULE_AUTHOR("Johnson Leung"); MODULE_LICENSE("GPL"); -@@ -1993,6 +2012,125 @@ static int rtl8251b_c45_match_phy_device +@@ -1994,6 +2013,125 @@ static int rtl8251b_c45_match_phy_device return rtlgen_is_c45_match(phydev, RTL_8251B, true); } @@ -218,7 +218,7 @@ Signed-off-by: Balázs Triszka static int rtlgen_resume(struct phy_device *phydev) { int ret = genphy_resume(phydev); -@@ -2214,6 +2352,482 @@ static int rtlgen_sfp_config_aneg(struct +@@ -2215,6 +2353,482 @@ static int rtlgen_sfp_config_aneg(struct return 0; } @@ -701,7 +701,7 @@ Signed-off-by: Balázs Triszka static struct phy_driver realtek_drvs[] = { { PHY_ID_MATCH_EXACT(0x00008201), -@@ -2520,6 +3134,108 @@ static struct phy_driver realtek_drvs[] +@@ -2521,6 +3135,108 @@ static struct phy_driver realtek_drvs[] .resume = genphy_resume, .read_mmd = genphy_read_mmd_unsupported, .write_mmd = genphy_write_mmd_unsupported, diff --git a/target/linux/generic/pending-6.18/812-PCI-sysfs-enforce-single-creation-of-sysfs-entry-for.patch b/target/linux/generic/pending-6.18/812-PCI-sysfs-enforce-single-creation-of-sysfs-entry-for.patch index bac70c5bd81..62871e23353 100644 --- a/target/linux/generic/pending-6.18/812-PCI-sysfs-enforce-single-creation-of-sysfs-entry-for.patch +++ b/target/linux/generic/pending-6.18/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) \ -@@ -1673,12 +1675,32 @@ static const struct attribute_group pci_ +@@ -1660,12 +1662,32 @@ static const struct attribute_group pci_ .is_visible = resource_resize_is_visible, }; @@ -102,7 +102,7 @@ Signed-off-by: Christian Marangi } /** -@@ -1699,21 +1721,23 @@ static int __init pci_sysfs_init(void) +@@ -1686,21 +1708,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.18/834-ledtrig-libata.patch b/target/linux/generic/pending-6.18/834-ledtrig-libata.patch index 3b21467f93e..06df070214f 100644 --- a/target/linux/generic/pending-6.18/834-ledtrig-libata.patch +++ b/target/linux/generic/pending-6.18/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 -@@ -4867,6 +4878,9 @@ void __ata_qc_complete(struct ata_queued +@@ -4882,6 +4893,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 && -@@ -5596,6 +5610,9 @@ struct ata_port *ata_port_alloc(struct a +@@ -5611,6 +5625,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); -@@ -5612,6 +5629,12 @@ void ata_port_free(struct ata_port *ap) +@@ -5627,6 +5644,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); -@@ -6016,7 +6039,23 @@ int ata_host_register(struct ata_host *h +@@ -6031,7 +6054,23 @@ int ata_host_register(struct ata_host *h WARN_ON(1); return -EINVAL; } diff --git a/target/linux/generic/pending-6.18/896-03-net-phy-own-phydev-psec-via-PSE-notifier-and-remove-.patch b/target/linux/generic/pending-6.18/896-03-net-phy-own-phydev-psec-via-PSE-notifier-and-remove-.patch index a24c08dcae2..68d0d6e55a4 100644 --- a/target/linux/generic/pending-6.18/896-03-net-phy-own-phydev-psec-via-PSE-notifier-and-remove-.patch +++ b/target/linux/generic/pending-6.18/896-03-net-phy-own-phydev-psec-via-PSE-notifier-and-remove-.patch @@ -369,7 +369,7 @@ Tested-by: Jonas Jelonek rtnl_lock(); --- a/drivers/net/phy/sfp.c +++ b/drivers/net/phy/sfp.c -@@ -1991,7 +1991,7 @@ static int sfp_sm_probe_phy(struct sfp * +@@ -1992,7 +1992,7 @@ static int sfp_sm_probe_phy(struct sfp * /* Mark this PHY as being on a SFP module */ phy->is_on_sfp_module = true; diff --git a/target/linux/ipq40xx/patches-6.18/900-PCI-qcom-add-hack-compatible-for-ipq4019-Lantiq-DSL.patch b/target/linux/ipq40xx/patches-6.18/900-PCI-qcom-add-hack-compatible-for-ipq4019-Lantiq-DSL.patch index 6a8fb997d57..3097d1e0e96 100644 --- a/target/linux/ipq40xx/patches-6.18/900-PCI-qcom-add-hack-compatible-for-ipq4019-Lantiq-DSL.patch +++ b/target/linux/ipq40xx/patches-6.18/900-PCI-qcom-add-hack-compatible-for-ipq4019-Lantiq-DSL.patch @@ -145,7 +145,7 @@ Signed-off-by: Florian Maurer /* Qcom IP rev.: 2.3.3 Synopsys IP rev.: 4.30a */ static const struct qcom_pcie_ops ops_2_3_3 = { .get_resources = qcom_pcie_get_resources_2_3_3, -@@ -1457,6 +1544,10 @@ static const struct qcom_pcie_cfg cfg_2_ +@@ -1458,6 +1545,10 @@ static const struct qcom_pcie_cfg cfg_2_ .ops = &ops_2_4_0, }; @@ -156,7 +156,7 @@ Signed-off-by: Florian Maurer static const struct qcom_pcie_cfg cfg_2_7_0 = { .ops = &ops_2_7_0, }; -@@ -2022,6 +2113,7 @@ static const struct of_device_id qcom_pc +@@ -2023,6 +2114,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 }, diff --git a/target/linux/lantiq/patches-6.18/001-MIPS-lantiq-add-pcie-driver.patch b/target/linux/lantiq/patches-6.18/001-MIPS-lantiq-add-pcie-driver.patch index 0ae7ab533cd..029fbd78a58 100644 --- a/target/linux/lantiq/patches-6.18/001-MIPS-lantiq-add-pcie-driver.patch +++ b/target/linux/lantiq/patches-6.18/001-MIPS-lantiq-add-pcie-driver.patch @@ -122,7 +122,7 @@ Signed-off-by: John Crispin (transaction layer end-to-end CRC checking). --- a/include/linux/pci.h +++ b/include/linux/pci.h -@@ -1654,6 +1654,8 @@ void pci_walk_bus(struct pci_bus *top, i +@@ -1655,6 +1655,8 @@ void pci_walk_bus(struct pci_bus *top, i void *userdata); int pci_cfg_space_size(struct pci_dev *dev); unsigned char pci_bus_max_busnr(struct pci_bus *bus); diff --git a/target/linux/layerscape/patches-6.18/400-LF-20-3-mtd-spi-nor-Use-1-bit-mode-of-spansion-s25fs.patch b/target/linux/layerscape/patches-6.18/400-LF-20-3-mtd-spi-nor-Use-1-bit-mode-of-spansion-s25fs.patch index f9ea6a6e4e0..0ecc401a23f 100644 --- a/target/linux/layerscape/patches-6.18/400-LF-20-3-mtd-spi-nor-Use-1-bit-mode-of-spansion-s25fs.patch +++ b/target/linux/layerscape/patches-6.18/400-LF-20-3-mtd-spi-nor-Use-1-bit-mode-of-spansion-s25fs.patch @@ -15,7 +15,7 @@ Signed-off-by: Kuldeep Singh --- a/drivers/mtd/spi-nor/spansion.c +++ b/drivers/mtd/spi-nor/spansion.c -@@ -859,9 +859,9 @@ static const struct flash_info spansion_ +@@ -861,9 +861,9 @@ static const struct flash_info spansion_ .name = "s25fs512s", .size = SZ_64M, .sector_size = SZ_256K, diff --git a/target/linux/mediatek/patches-6.18/610-pcie-mediatek-fix-clearing-interrupt-status.patch b/target/linux/mediatek/patches-6.18/610-pcie-mediatek-fix-clearing-interrupt-status.patch index e31e02d2c29..daf1ca78a13 100644 --- a/target/linux/mediatek/patches-6.18/610-pcie-mediatek-fix-clearing-interrupt-status.patch +++ b/target/linux/mediatek/patches-6.18/610-pcie-mediatek-fix-clearing-interrupt-status.patch @@ -10,7 +10,7 @@ Signed-off-by: Felix Fietkau --- a/drivers/pci/controller/pcie-mediatek.c +++ b/drivers/pci/controller/pcie-mediatek.c -@@ -601,9 +601,9 @@ static void mtk_pcie_intr_handler(struct +@@ -604,9 +604,9 @@ static void mtk_pcie_intr_handler(struct if (status & INTX_MASK) { for_each_set_bit_from(bit, &status, PCI_NUM_INTX + INTX_SHIFT) { /* Clear the INTx */ diff --git a/target/linux/mediatek/patches-6.18/710-pci-pcie-mediatek-add-support-for-coherent-DMA.patch b/target/linux/mediatek/patches-6.18/710-pci-pcie-mediatek-add-support-for-coherent-DMA.patch index 1272a9ffbd7..09b0d8e57bd 100644 --- a/target/linux/mediatek/patches-6.18/710-pci-pcie-mediatek-add-support-for-coherent-DMA.patch +++ b/target/linux/mediatek/patches-6.18/710-pci-pcie-mediatek-add-support-for-coherent-DMA.patch @@ -41,7 +41,7 @@ Signed-off-by: Felix Fietkau }; --- a/drivers/pci/controller/pcie-mediatek.c +++ b/drivers/pci/controller/pcie-mediatek.c -@@ -21,6 +21,7 @@ +@@ -22,6 +22,7 @@ #include #include #include @@ -49,7 +49,7 @@ Signed-off-by: Felix Fietkau #include #include #include -@@ -140,6 +141,11 @@ +@@ -141,6 +142,11 @@ #define PCIE_LINK_STATUS_V2 0x804 #define PCIE_PORT_LINKUP_V2 BIT(10) @@ -61,7 +61,7 @@ Signed-off-by: Felix Fietkau struct mtk_pcie_port; /** -@@ -1051,6 +1057,27 @@ static int mtk_pcie_setup(struct mtk_pci +@@ -1062,6 +1068,27 @@ static int mtk_pcie_setup(struct mtk_pci struct mtk_pcie_port *port, *tmp; int err, slot; diff --git a/target/linux/mediatek/patches-6.18/942-net-ethernet-mtk_wed-move-cpuboot-in-a-dedicated-dts.patch b/target/linux/mediatek/patches-6.18/942-net-ethernet-mtk_wed-move-cpuboot-in-a-dedicated-dts.patch index 3ef5c0ea733..a60c135c626 100644 --- a/target/linux/mediatek/patches-6.18/942-net-ethernet-mtk_wed-move-cpuboot-in-a-dedicated-dts.patch +++ b/target/linux/mediatek/patches-6.18/942-net-ethernet-mtk_wed-move-cpuboot-in-a-dedicated-dts.patch @@ -68,7 +68,7 @@ Signed-off-by: Lorenzo Bianconi ret = mtk_wed_get_reserved_memory_region(wo->hw, mem_region[i].name, &mem_region[i]); if (ret) -@@ -364,13 +381,13 @@ mtk_wed_mcu_load_firmware(struct mtk_wed +@@ -364,17 +381,17 @@ mtk_wed_mcu_load_firmware(struct mtk_wed boot_cr = MTK_WO_MCU_CFG_LS_WA_BOOT_ADDR_ADDR; else boot_cr = MTK_WO_MCU_CFG_LS_WM_BOOT_ADDR_ADDR; @@ -78,9 +78,13 @@ Signed-off-by: Lorenzo Bianconi - wo_w32(MTK_WO_MCU_CFG_LS_WF_MCCR_CLR_ADDR, 0xc00); + wo_w32(wo, MTK_WO_MCU_CFG_LS_WF_MCCR_CLR_ADDR, 0xc00); -- val = wo_r32(MTK_WO_MCU_CFG_LS_WF_MCU_CFG_WM_WA_ADDR) | -+ val = wo_r32(wo, MTK_WO_MCU_CFG_LS_WF_MCU_CFG_WM_WA_ADDR) | - MTK_WO_MCU_CFG_LS_WF_WM_WA_WM_CPU_RSTB_MASK; +- val = wo_r32(MTK_WO_MCU_CFG_LS_WF_MCU_CFG_WM_WA_ADDR); ++ val = wo_r32(wo, MTK_WO_MCU_CFG_LS_WF_MCU_CFG_WM_WA_ADDR); + + if (!mtk_wed_is_v3_or_greater(wo->hw) && wo->hw->index) + val |= MTK_WO_MCU_CFG_LS_WF_WM_WA_WA_CPU_RSTB_MASK; + else + val |= MTK_WO_MCU_CFG_LS_WF_WM_WA_WM_CPU_RSTB_MASK; - wo_w32(MTK_WO_MCU_CFG_LS_WF_MCU_CFG_WM_WA_ADDR, val); + wo_w32(wo, MTK_WO_MCU_CFG_LS_WF_MCU_CFG_WM_WA_ADDR, val); out: diff --git a/target/linux/qualcommax/patches-6.18/0082-v7.1-clk-qcom-ipq-cmn-pll-Add-IPQ6018-SoC-support.patch b/target/linux/qualcommax/patches-6.18/0082-v7.1-clk-qcom-ipq-cmn-pll-Add-IPQ6018-SoC-support.patch index 95f4feb4e28..6b10a62d732 100644 --- a/target/linux/qualcommax/patches-6.18/0082-v7.1-clk-qcom-ipq-cmn-pll-Add-IPQ6018-SoC-support.patch +++ b/target/linux/qualcommax/patches-6.18/0082-v7.1-clk-qcom-ipq-cmn-pll-Add-IPQ6018-SoC-support.patch @@ -38,7 +38,7 @@ Signed-off-by: Bjorn Andersson static const struct cmn_pll_fixed_output_clk ipq5424_output_clks[] = { CLK_PLL_OUTPUT(IPQ5424_XO_24MHZ_CLK, "xo-24mhz", 24000000UL), CLK_PLL_OUTPUT(IPQ5424_SLEEP_32KHZ_CLK, "sleep-32khz", 32000UL), -@@ -448,6 +455,7 @@ static const struct dev_pm_ops ipq_cmn_p +@@ -455,6 +462,7 @@ static const struct dev_pm_ops ipq_cmn_p static const struct of_device_id ipq_cmn_pll_clk_ids[] = { { .compatible = "qcom,ipq5018-cmn-pll", .data = &ipq5018_output_clks }, { .compatible = "qcom,ipq5424-cmn-pll", .data = &ipq5424_output_clks }, diff --git a/target/linux/qualcommax/patches-6.18/0083-v7.1-clk-qcom-ipq-cmn-pll-Add-IPQ8074-SoC-support.patch b/target/linux/qualcommax/patches-6.18/0083-v7.1-clk-qcom-ipq-cmn-pll-Add-IPQ8074-SoC-support.patch index 213d2a1b6a3..ab2c2cf9c51 100644 --- a/target/linux/qualcommax/patches-6.18/0083-v7.1-clk-qcom-ipq-cmn-pll-Add-IPQ8074-SoC-support.patch +++ b/target/linux/qualcommax/patches-6.18/0083-v7.1-clk-qcom-ipq-cmn-pll-Add-IPQ8074-SoC-support.patch @@ -38,7 +38,7 @@ Signed-off-by: Bjorn Andersson static const struct cmn_pll_fixed_output_clk ipq5424_output_clks[] = { CLK_PLL_OUTPUT(IPQ5424_XO_24MHZ_CLK, "xo-24mhz", 24000000UL), CLK_PLL_OUTPUT(IPQ5424_SLEEP_32KHZ_CLK, "sleep-32khz", 32000UL), -@@ -456,6 +463,7 @@ static const struct of_device_id ipq_cmn +@@ -463,6 +470,7 @@ static const struct of_device_id ipq_cmn { .compatible = "qcom,ipq5018-cmn-pll", .data = &ipq5018_output_clks }, { .compatible = "qcom,ipq5424-cmn-pll", .data = &ipq5424_output_clks }, { .compatible = "qcom,ipq6018-cmn-pll", .data = &ipq6018_output_clks }, diff --git a/target/linux/qualcommax/patches-6.18/0084-v7.2-clk-qcom-cmnpll-Account-for-reference-clock-divider.patch b/target/linux/qualcommax/patches-6.18/0084-v7.2-clk-qcom-cmnpll-Account-for-reference-clock-divider.patch deleted file mode 100644 index 68506382609..00000000000 --- a/target/linux/qualcommax/patches-6.18/0084-v7.2-clk-qcom-cmnpll-Account-for-reference-clock-divider.patch +++ /dev/null @@ -1,56 +0,0 @@ -From 88c543fff756450bcd04ec4560c4440be36c9e75 Mon Sep 17 00:00:00 2001 -From: Luo Jie -Date: Tue, 6 Jan 2026 21:35:10 -0800 -Subject: [PATCH] clk: qcom: cmnpll: Account for reference clock divider - -The clk_cmn_pll_recalc_rate() function must account for the reference clock -divider programmed in CMN_PLL_REFCLK_CONFIG. Without this fix, platforms -with a reference divider other than 1 calculate incorrect CMN PLL rates. -For example, on IPQ5332 where the reference divider is 2, the computed rate -becomes twice the actual output. - -Read CMN_PLL_REFCLK_DIV and divide the parent rate by this value before -applying the 2 * FACTOR scaling. This yields the correct rate calculation: -rate = (parent_rate / ref_div) * 2 * factor. - -Maintain backward compatibility with earlier platforms (e.g. IPQ9574, -IPQ5424, IPQ5018) that use ref_div = 1. - -Fixes: f81715a4c87c ("clk: qcom: Add CMN PLL clock controller driver for IPQ SoC") -Signed-off-by: Luo Jie -Reviewed-by: Konrad Dybcio -Tested-by: George Moussalem -Link: https://lore.kernel.org/r/20260106-qcom_ipq5332_cmnpll-v2-1-f9f7e4efbd79@oss.qualcomm.com -Signed-off-by: Bjorn Andersson ---- - drivers/clk/qcom/ipq-cmn-pll.c | 11 +++++++++-- - 1 file changed, 9 insertions(+), 2 deletions(-) - ---- a/drivers/clk/qcom/ipq-cmn-pll.c -+++ b/drivers/clk/qcom/ipq-cmn-pll.c -@@ -199,7 +199,7 @@ static unsigned long clk_cmn_pll_recalc_ - unsigned long parent_rate) - { - struct clk_cmn_pll *cmn_pll = to_clk_cmn_pll(hw); -- u32 val, factor; -+ u32 val, factor, ref_div; - - /* - * The value of CMN_PLL_DIVIDER_CTRL_FACTOR is automatically adjusted -@@ -207,8 +207,15 @@ static unsigned long clk_cmn_pll_recalc_ - */ - regmap_read(cmn_pll->regmap, CMN_PLL_DIVIDER_CTRL, &val); - factor = FIELD_GET(CMN_PLL_DIVIDER_CTRL_FACTOR, val); -+ if (WARN_ON(factor == 0)) -+ factor = 1; - -- return parent_rate * 2 * factor; -+ regmap_read(cmn_pll->regmap, CMN_PLL_REFCLK_CONFIG, &val); -+ ref_div = FIELD_GET(CMN_PLL_REFCLK_DIV, val); -+ if (WARN_ON(ref_div == 0)) -+ ref_div = 1; -+ -+ return div_u64((u64)parent_rate * 2 * factor, ref_div); - } - - static int clk_cmn_pll_determine_rate(struct clk_hw *hw, diff --git a/target/linux/ramips/patches-6.18/810-uvc-add-iPassion-iP2970-support.patch b/target/linux/ramips/patches-6.18/810-uvc-add-iPassion-iP2970-support.patch index dc5c9d56dea..e2801d880b4 100644 --- a/target/linux/ramips/patches-6.18/810-uvc-add-iPassion-iP2970-support.patch +++ b/target/linux/ramips/patches-6.18/810-uvc-add-iPassion-iP2970-support.patch @@ -64,7 +64,7 @@ Signed-off-by: John Crispin #include #include -@@ -1344,9 +1349,149 @@ static void uvc_video_decode_data(struct +@@ -1384,9 +1389,149 @@ static void uvc_video_decode_data(struct uvc_urb->async_operations++; } @@ -214,7 +214,7 @@ Signed-off-by: John Crispin /* Mark the buffer as done if the EOF marker is set. */ if (data[1] & UVC_STREAM_EOF && buf->bytesused != 0) { uvc_dbg(stream->dev, FRAME, "Frame complete (EOF found)\n"); -@@ -1890,6 +2035,8 @@ static int uvc_init_video_isoc(struct uv +@@ -1931,6 +2076,8 @@ static int uvc_init_video_isoc(struct uv if (npackets == 0) return -ENOMEM; diff --git a/target/linux/realtek/patches-6.18/024-02-v7.1-net-phy-realtek-add-RTL8224-pair-order-support.patch b/target/linux/realtek/patches-6.18/024-02-v7.1-net-phy-realtek-add-RTL8224-pair-order-support.patch index d4df285594f..95e672e7939 100644 --- a/target/linux/realtek/patches-6.18/024-02-v7.1-net-phy-realtek-add-RTL8224-pair-order-support.patch +++ b/target/linux/realtek/patches-6.18/024-02-v7.1-net-phy-realtek-add-RTL8224-pair-order-support.patch @@ -54,7 +54,7 @@ Signed-off-by: Jakub Kicinski #define RTL8366RB_POWER_SAVE 0x15 #define RTL8366RB_POWER_SAVE_ON BIT(12) -@@ -1890,6 +1893,66 @@ static int rtl8224_cable_test_get_status +@@ -1891,6 +1894,66 @@ static int rtl8224_cable_test_get_status return rtl8224_cable_test_report(phydev, finished); } @@ -121,7 +121,7 @@ Signed-off-by: Jakub Kicinski static bool rtlgen_supports_2_5gbps(struct phy_device *phydev) { int val; -@@ -3086,6 +3149,8 @@ static struct phy_driver realtek_drvs[] +@@ -3087,6 +3150,8 @@ static struct phy_driver realtek_drvs[] PHY_ID_MATCH_EXACT(0x001ccad0), .name = "RTL8224 2.5Gbps PHY", .flags = PHY_POLL_CABLE_TEST, diff --git a/target/linux/realtek/patches-6.18/024-04-v7.1-net-phy-realtek-add-RTL8224-polarity-support.patch b/target/linux/realtek/patches-6.18/024-04-v7.1-net-phy-realtek-add-RTL8224-polarity-support.patch index ca9205157ea..ff8f8cc4b8a 100644 --- a/target/linux/realtek/patches-6.18/024-04-v7.1-net-phy-realtek-add-RTL8224-polarity-support.patch +++ b/target/linux/realtek/patches-6.18/024-04-v7.1-net-phy-realtek-add-RTL8224-polarity-support.patch @@ -32,7 +32,7 @@ Signed-off-by: Jakub Kicinski #define RTL8366RB_POWER_SAVE 0x15 #define RTL8366RB_POWER_SAVE_ON BIT(12) -@@ -1941,9 +1942,40 @@ static int rtl8224_mdi_config_order(stru +@@ -1942,9 +1943,40 @@ static int rtl8224_mdi_config_order(stru order ? BIT(port_offset) : 0); } diff --git a/target/linux/realtek/patches-6.18/030-v7.2-net-phy-realtek-support-MDI-swapping-for-RTL8226-CG.patch b/target/linux/realtek/patches-6.18/030-v7.2-net-phy-realtek-support-MDI-swapping-for-RTL8226-CG.patch index 510f3b25ce5..6bfb0a75ed5 100644 --- a/target/linux/realtek/patches-6.18/030-v7.2-net-phy-realtek-support-MDI-swapping-for-RTL8226-CG.patch +++ b/target/linux/realtek/patches-6.18/030-v7.2-net-phy-realtek-support-MDI-swapping-for-RTL8226-CG.patch @@ -205,7 +205,7 @@ Signed-off-by: Jakub Kicinski static int rtl822x_set_serdes_option_mode(struct phy_device *phydev, bool gen1) { bool has_2500, has_sgmii; -@@ -3073,6 +3226,7 @@ static struct phy_driver realtek_drvs[] +@@ -3074,6 +3227,7 @@ static struct phy_driver realtek_drvs[] .soft_reset = rtl822x_c45_soft_reset, .get_features = rtl822x_c45_get_features, .config_aneg = rtl822x_c45_config_aneg, diff --git a/target/linux/realtek/patches-6.18/705-v7.1-net-sfp-initialize-i2c_block_size-at-adapter-configu.patch b/target/linux/realtek/patches-6.18/705-v7.1-net-sfp-initialize-i2c_block_size-at-adapter-configu.patch index 534d15a6fa6..ef5f5e714e7 100644 --- a/target/linux/realtek/patches-6.18/705-v7.1-net-sfp-initialize-i2c_block_size-at-adapter-configu.patch +++ b/target/linux/realtek/patches-6.18/705-v7.1-net-sfp-initialize-i2c_block_size-at-adapter-configu.patch @@ -31,7 +31,7 @@ Signed-off-by: Jakub Kicinski --- a/drivers/net/phy/sfp.c +++ b/drivers/net/phy/sfp.c -@@ -1815,6 +1815,7 @@ static int sfp_hwmon_insert(struct sfp * +@@ -1816,6 +1816,7 @@ static int sfp_hwmon_insert(struct sfp * sfp->hwmon_tries = R_PROBE_RETRY_SLOW; } diff --git a/target/linux/realtek/patches-6.18/714-net-phy-sfp-add-support-for-SMBus.patch b/target/linux/realtek/patches-6.18/714-net-phy-sfp-add-support-for-SMBus.patch index 42362fc0fd7..bd679d3a5d2 100644 --- a/target/linux/realtek/patches-6.18/714-net-phy-sfp-add-support-for-SMBus.patch +++ b/target/linux/realtek/patches-6.18/714-net-phy-sfp-add-support-for-SMBus.patch @@ -40,7 +40,7 @@ Signed-off-by: Antoine Tenart static void sfp_i2c_mdiobus_destroy(struct sfp *sfp) { mdiobus_unregister(sfp->i2c_mii); -@@ -2173,9 +2196,15 @@ static void sfp_sm_fault(struct sfp *sfp +@@ -2174,9 +2197,15 @@ static void sfp_sm_fault(struct sfp *sfp static int sfp_sm_add_mdio_bus(struct sfp *sfp) { diff --git a/target/linux/realtek/patches-6.18/723-net-mdio-Add-Realtek-Otto-auxiliary-controller.patch b/target/linux/realtek/patches-6.18/723-net-mdio-Add-Realtek-Otto-auxiliary-controller.patch index 59157cc52dc..cf5e867fe3c 100644 --- a/target/linux/realtek/patches-6.18/723-net-mdio-Add-Realtek-Otto-auxiliary-controller.patch +++ b/target/linux/realtek/patches-6.18/723-net-mdio-Add-Realtek-Otto-auxiliary-controller.patch @@ -20,7 +20,7 @@ Signed-off-by: Sander Vanheule --- a/drivers/net/mdio/Kconfig +++ b/drivers/net/mdio/Kconfig -@@ -191,6 +191,16 @@ config MDIO_REGMAP +@@ -192,6 +192,16 @@ config MDIO_REGMAP regmap. Users willing to use this driver must explicitly select REGMAP. diff --git a/target/linux/realtek/patches-6.18/743-net-realtek-serdes-configuration.patch b/target/linux/realtek/patches-6.18/743-net-realtek-serdes-configuration.patch index d5c9bc7ab09..c3ebb6ca4b5 100644 --- a/target/linux/realtek/patches-6.18/743-net-realtek-serdes-configuration.patch +++ b/target/linux/realtek/patches-6.18/743-net-realtek-serdes-configuration.patch @@ -42,7 +42,7 @@ #define RTL8221B_PHYCR1 0xa430 #define RTL8221B_PHYCR1_ALDPS_EN BIT(2) #define RTL8221B_PHYCR1_ALDPS_XTAL_OFF_EN BIT(12) -@@ -2070,6 +2105,147 @@ exit: +@@ -2071,6 +2106,147 @@ exit: return ret; } @@ -190,7 +190,7 @@ static int rtl8224_mdi_config_order(struct phy_device *phydev) { struct device_node *np = phydev->mdio.dev.of_node; -@@ -2124,6 +2300,10 @@ static int rtl8224_config_init(struct ph +@@ -2125,6 +2301,10 @@ static int rtl8224_config_init(struct ph { int ret; diff --git a/target/linux/realtek/patches-6.18/806-add-mdio-driver.patch b/target/linux/realtek/patches-6.18/806-add-mdio-driver.patch index 7bd2cdfb342..31ab43adf00 100644 --- a/target/linux/realtek/patches-6.18/806-add-mdio-driver.patch +++ b/target/linux/realtek/patches-6.18/806-add-mdio-driver.patch @@ -18,7 +18,7 @@ Signed-off-by: Markus Stockhausen obj-$(CONFIG_MDIO_SUN4I) += mdio-sun4i.o --- a/drivers/net/mdio/Kconfig +++ b/drivers/net/mdio/Kconfig -@@ -191,6 +191,13 @@ config MDIO_REGMAP +@@ -192,6 +192,13 @@ config MDIO_REGMAP regmap. Users willing to use this driver must explicitly select REGMAP. diff --git a/target/linux/realtek/patches-6.18/808-add-serdes-mdio-driver.patch b/target/linux/realtek/patches-6.18/808-add-serdes-mdio-driver.patch index 77069977700..63b05cb2636 100644 --- a/target/linux/realtek/patches-6.18/808-add-serdes-mdio-driver.patch +++ b/target/linux/realtek/patches-6.18/808-add-serdes-mdio-driver.patch @@ -21,7 +21,7 @@ Signed-off-by: Markus Stockhausen obj-$(CONFIG_MDIO_THUNDER) += mdio-thunder.o --- a/drivers/net/mdio/Kconfig +++ b/drivers/net/mdio/Kconfig -@@ -208,6 +208,13 @@ config MDIO_REALTEK_OTTO_AUX +@@ -209,6 +209,13 @@ config MDIO_REALTEK_OTTO_AUX This driver supports the auxilairy MDIO bus on RTL838x SoCs. This bus is typically used to attach RTL8231 GPIO extenders. diff --git a/target/linux/rockchip/patches-6.18/037-04-v6.19-mmc-sdhci-of-dwcmshc-Add-command-queue-support-for-rockch.patch b/target/linux/rockchip/patches-6.18/037-04-v6.19-mmc-sdhci-of-dwcmshc-Add-command-queue-support-for-rockch.patch index 3771d7f3cf2..9226ddb0841 100644 --- a/target/linux/rockchip/patches-6.18/037-04-v6.19-mmc-sdhci-of-dwcmshc-Add-command-queue-support-for-rockch.patch +++ b/target/linux/rockchip/patches-6.18/037-04-v6.19-mmc-sdhci-of-dwcmshc-Add-command-queue-support-for-rockch.patch @@ -184,7 +184,7 @@ Signed-off-by: Ulf Hansson /* Enable using of 128-bit task descriptors */ dma64 = host->flags & SDHCI_USE_64_BIT_DMA; -@@ -1468,7 +1555,7 @@ static int dwcmshc_probe(struct platform +@@ -1471,7 +1558,7 @@ static int dwcmshc_probe(struct platform priv->vendor_specific_area2 = sdhci_readw(host, DWCMSHC_P_VENDOR_AREA2); diff --git a/target/linux/starfive/patches-6.18/0013-drivers-nvme-Add-precheck-and-delay-for-CQE-pending-.patch b/target/linux/starfive/patches-6.18/0013-drivers-nvme-Add-precheck-and-delay-for-CQE-pending-.patch index 18bf27e0155..8167a31732b 100644 --- a/target/linux/starfive/patches-6.18/0013-drivers-nvme-Add-precheck-and-delay-for-CQE-pending-.patch +++ b/target/linux/starfive/patches-6.18/0013-drivers-nvme-Add-precheck-and-delay-for-CQE-pending-.patch @@ -22,7 +22,7 @@ Signed-off-by: Kevin.xie #include "trace.h" #include "nvme.h" -@@ -1368,6 +1369,15 @@ static inline bool nvme_poll_cq(struct n +@@ -1373,6 +1374,15 @@ static inline bool nvme_poll_cq(struct n { bool found = false; diff --git a/target/linux/sunxi/config-6.18 b/target/linux/sunxi/config-6.18 index 346faaa8a18..6e640893ef4 100644 --- a/target/linux/sunxi/config-6.18 +++ b/target/linux/sunxi/config-6.18 @@ -110,7 +110,6 @@ CONFIG_CRYPTO_DES=y CONFIG_CRYPTO_DEV_ALLWINNER=y CONFIG_CRYPTO_DEV_SUN4I_SS=y # CONFIG_CRYPTO_DEV_SUN4I_SS_DEBUG is not set -CONFIG_CRYPTO_DEV_SUN4I_SS_PRNG=y CONFIG_CRYPTO_DEV_SUN8I_CE=y # CONFIG_CRYPTO_DEV_SUN8I_CE_DEBUG is not set CONFIG_CRYPTO_DEV_SUN8I_CE_HASH=y