From: Shiji Yang Date: Mon, 3 Aug 2026 10:57:22 +0000 (+0800) Subject: kernel: bump 6.12 to 6.12.102 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bdc22af24548d1ec55d27a4667ee8908a9e11e4b;p=thirdparty%2Fopenwrt.git kernel: bump 6.12 to 6.12.102 Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.101 Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.102 Upstream merged patches: - generic/backport-6.12/620-v6.15-ppp-use-IFF_NO_QUEUE-in-virtual-interfaces.patch[1] - generic/backport-6.12/621-v6.17-ppp-convert-to-percpu-netstats.patch[2] - generic/backport-6.12/625-v7.0-ppp-enable-TX-scatter-gather.patch[3] - generic/pending-6.12/303-powerpc-85xx-Add-fsl-ifc-to-common-device-ids.patch[4] Manually rebased patches: - bcm27xx/patches-6.12/950-0006-xhci-add-quirk-for-host-controllers-that-don-t-updat.patch[5] - bcm27xx/patches-6.12/950-0333-xhci-quirks-add-link-TRB-quirk-for-VL805.patch[5] - bcm27xx/patches-6.12/950-0334-usb-xhci-add-VLI_SS_BULK_OUT_BUG-quirk.patch[5] - bcm27xx/patches-6.12/950-0335-usb-xhci-add-XHCI_VLI_HUB_TT_QUIRK.patch[5] New kconfig symbol: - GPU_BUDDY [6] Obsolete kconfig symbol: - DRM_LIB_RANDOM [6] All other patches are automatically refreshed. [1] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.101&id=cc92d8e5753da5d4e8fbc3a3a1742b1646492099 [2] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.101&id=fa4e1dad10e78f96876784c3e1b5566da59e7d90 [3] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.101&id=ff24b5075329f2f8d36a16cf156cf27458997660 [4] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.101&id=3612dccaa22bcc75fd10ceb14aef60d693567cf3 [5] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.101&id=c4657f5438fb8c2dfbe6e23b28f2a2bd5aaf8116 [6] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.101&id=1c44c262a0c2dfd083dc00308d6488d23b58b59e Signed-off-by: Shiji Yang Link: https://github.com/openwrt/openwrt/pull/24551 Signed-off-by: Hauke Mehrtens --- diff --git a/target/linux/bcm27xx/patches-6.12/950-0006-xhci-add-quirk-for-host-controllers-that-don-t-updat.patch b/target/linux/bcm27xx/patches-6.12/950-0006-xhci-add-quirk-for-host-controllers-that-don-t-updat.patch index c7de0e60296..e3c95ce3c50 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0006-xhci-add-quirk-for-host-controllers-that-don-t-updat.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0006-xhci-add-quirk-for-host-controllers-that-don-t-updat.patch @@ -36,9 +36,9 @@ Signed-off-by: Greg Kroah-Hartman xhci->quirks |= XHCI_LPM_SUPPORT; xhci->quirks |= XHCI_TRB_OVERFETCH; + xhci->quirks |= XHCI_EP_CTX_BROKEN_DCS; + xhci->dma_mask_bits = 36; } - if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA && --- a/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c @@ -637,8 +637,11 @@ static int xhci_move_dequeue_past_td(str diff --git a/target/linux/bcm27xx/patches-6.12/950-0073-ASoC-Add-support-for-all-the-downstream-rpi-sound-ca.patch b/target/linux/bcm27xx/patches-6.12/950-0073-ASoC-Add-support-for-all-the-downstream-rpi-sound-ca.patch index 0fcc1b288dd..1f8a3886060 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0073-ASoC-Add-support-for-all-the-downstream-rpi-sound-ca.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0073-ASoC-Add-support-for-all-the-downstream-rpi-sound-ca.patch @@ -18626,7 +18626,7 @@ Signed-off-by: j-schambacher * For devices with more than one control interface, we assume the --- a/sound/usb/quirks.c +++ b/sound/usb/quirks.c -@@ -2399,6 +2399,8 @@ static const struct usb_audio_quirk_flag +@@ -2401,6 +2401,8 @@ static const struct usb_audio_quirk_flag QUIRK_FLAG_ALIGN_TRANSFER), DEVICE_FLG(0x534d, 0x2109, /* MacroSilicon MS2109 */ QUIRK_FLAG_ALIGN_TRANSFER), diff --git a/target/linux/bcm27xx/patches-6.12/950-0125-xhci-implement-xhci_fixup_endpoint-for-interval-adju.patch b/target/linux/bcm27xx/patches-6.12/950-0125-xhci-implement-xhci_fixup_endpoint-for-interval-adju.patch index a2a38c29f0e..07e35013864 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0125-xhci-implement-xhci_fixup_endpoint-for-interval-adju.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0125-xhci-implement-xhci_fixup_endpoint-for-interval-adju.patch @@ -124,7 +124,7 @@ Signed-off-by: Jonathan Bell * non-error returns are a promise to giveback() the urb later * we drop ownership so next owner (or urb unlink) can get it */ -@@ -5395,6 +5498,7 @@ static const struct hc_driver xhci_hc_dr +@@ -5400,6 +5503,7 @@ static const struct hc_driver xhci_hc_dr .endpoint_reset = xhci_endpoint_reset, .check_bandwidth = xhci_check_bandwidth, .reset_bandwidth = xhci_reset_bandwidth, diff --git a/target/linux/bcm27xx/patches-6.12/950-0322-Bluetooth-hci_sync-Add-fallback-bd-address-prop.patch b/target/linux/bcm27xx/patches-6.12/950-0322-Bluetooth-hci_sync-Add-fallback-bd-address-prop.patch index d7a6e65a4c0..c6740bbbe06 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0322-Bluetooth-hci_sync-Add-fallback-bd-address-prop.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0322-Bluetooth-hci_sync-Add-fallback-bd-address-prop.patch @@ -20,7 +20,7 @@ Signed-off-by: Phil Elwell --- a/net/bluetooth/hci_sync.c +++ b/net/bluetooth/hci_sync.c -@@ -4985,6 +4985,7 @@ static const struct { +@@ -4994,6 +4994,7 @@ static const struct { */ static int hci_dev_setup_sync(struct hci_dev *hdev) { @@ -28,7 +28,7 @@ Signed-off-by: Phil Elwell int ret = 0; bool invalid_bdaddr; size_t i; -@@ -5013,7 +5014,8 @@ static int hci_dev_setup_sync(struct hci +@@ -5022,7 +5023,8 @@ static int hci_dev_setup_sync(struct hci test_bit(HCI_QUIRK_USE_BDADDR_PROPERTY, &hdev->quirks); if (!ret) { if (test_bit(HCI_QUIRK_USE_BDADDR_PROPERTY, &hdev->quirks) && diff --git a/target/linux/bcm27xx/patches-6.12/950-0333-xhci-quirks-add-link-TRB-quirk-for-VL805.patch b/target/linux/bcm27xx/patches-6.12/950-0333-xhci-quirks-add-link-TRB-quirk-for-VL805.patch index fad1aafc0f7..aae607d3c69 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0333-xhci-quirks-add-link-TRB-quirk-for-VL805.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0333-xhci-quirks-add-link-TRB-quirk-for-VL805.patch @@ -29,9 +29,9 @@ Signed-off-by: Jonathan Bell xhci->quirks |= XHCI_TRB_OVERFETCH; xhci->quirks |= XHCI_EP_CTX_BROKEN_DCS; + xhci->quirks |= XHCI_AVOID_DQ_ON_LINK; + xhci->dma_mask_bits = 36; } - if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA && --- a/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c @@ -710,6 +710,16 @@ static int xhci_move_dequeue_past_td(str @@ -53,7 +53,7 @@ Signed-off-by: Jonathan Bell if (addr == 0) { --- a/drivers/usb/host/xhci.h +++ b/drivers/usb/host/xhci.h -@@ -1631,6 +1631,9 @@ struct xhci_hcd { +@@ -1632,6 +1632,9 @@ struct xhci_hcd { #define XHCI_ETRON_HOST BIT_ULL(49) #define XHCI_LIMIT_ENDPOINT_INTERVAL_9 BIT_ULL(50) diff --git a/target/linux/bcm27xx/patches-6.12/950-0334-usb-xhci-add-VLI_SS_BULK_OUT_BUG-quirk.patch b/target/linux/bcm27xx/patches-6.12/950-0334-usb-xhci-add-VLI_SS_BULK_OUT_BUG-quirk.patch index 56708d6bcb5..50982158428 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0334-usb-xhci-add-VLI_SS_BULK_OUT_BUG-quirk.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0334-usb-xhci-add-VLI_SS_BULK_OUT_BUG-quirk.patch @@ -95,12 +95,12 @@ Signed-off-by: Jonathan Bell xhci->quirks |= XHCI_EP_CTX_BROKEN_DCS; xhci->quirks |= XHCI_AVOID_DQ_ON_LINK; + xhci->quirks |= XHCI_VLI_SS_BULK_OUT_BUG; + xhci->dma_mask_bits = 36; } - if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA && --- a/drivers/usb/host/xhci.h +++ b/drivers/usb/host/xhci.h -@@ -1633,6 +1633,7 @@ struct xhci_hcd { +@@ -1634,6 +1634,7 @@ struct xhci_hcd { /* Downstream VLI fixes */ #define XHCI_AVOID_DQ_ON_LINK BIT_ULL(56) diff --git a/target/linux/bcm27xx/patches-6.12/950-0335-usb-xhci-add-XHCI_VLI_HUB_TT_QUIRK.patch b/target/linux/bcm27xx/patches-6.12/950-0335-usb-xhci-add-XHCI_VLI_HUB_TT_QUIRK.patch index 066de8ee265..729bf022eb1 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0335-usb-xhci-add-XHCI_VLI_HUB_TT_QUIRK.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0335-usb-xhci-add-XHCI_VLI_HUB_TT_QUIRK.patch @@ -64,10 +64,10 @@ Signed-off-by: Jonathan Bell static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci) { struct pci_dev *pdev = to_pci_dev(dev); -@@ -457,6 +469,8 @@ static void xhci_pci_quirks(struct devic - xhci->quirks |= XHCI_EP_CTX_BROKEN_DCS; +@@ -458,6 +470,8 @@ static void xhci_pci_quirks(struct devic xhci->quirks |= XHCI_AVOID_DQ_ON_LINK; xhci->quirks |= XHCI_VLI_SS_BULK_OUT_BUG; + xhci->dma_mask_bits = 36; + if (xhci_vl805_get_fw_version(pdev) < VL805_FW_VER_0138C0) + xhci->quirks |= XHCI_VLI_HUB_TT_QUIRK; } @@ -144,7 +144,7 @@ Signed-off-by: Jonathan Bell return 0; --- a/drivers/usb/host/xhci.h +++ b/drivers/usb/host/xhci.h -@@ -1634,6 +1634,7 @@ struct xhci_hcd { +@@ -1635,6 +1635,7 @@ struct xhci_hcd { /* Downstream VLI fixes */ #define XHCI_AVOID_DQ_ON_LINK BIT_ULL(56) #define XHCI_VLI_SS_BULK_OUT_BUG BIT_ULL(57) diff --git a/target/linux/bcm27xx/patches-6.12/950-0347-net-macb-Also-set-DMA-coherent-mask.patch b/target/linux/bcm27xx/patches-6.12/950-0347-net-macb-Also-set-DMA-coherent-mask.patch index 92f7bf7771b..3a9353fc632 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0347-net-macb-Also-set-DMA-coherent-mask.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0347-net-macb-Also-set-DMA-coherent-mask.patch @@ -234,7 +234,7 @@ Signed-off-by: Jonathan Bell macb_writel(bp, NCR, macb_readl(bp, NCR) | MACB_BIT(TSTART)); spin_unlock(&bp->lock); -@@ -2901,6 +2929,37 @@ static void macb_configure_dma(struct ma +@@ -2919,6 +2947,37 @@ static void macb_configure_dma(struct ma } } @@ -272,7 +272,7 @@ Signed-off-by: Jonathan Bell static void macb_init_hw(struct macb *bp) { u32 config; -@@ -2929,6 +2988,11 @@ static void macb_init_hw(struct macb *bp +@@ -2947,6 +3006,11 @@ static void macb_init_hw(struct macb *bp if (bp->caps & MACB_CAPS_JUMBO) bp->rx_frm_len_mask = MACB_RX_JFRMLEN_MASK; @@ -284,7 +284,7 @@ Signed-off-by: Jonathan Bell macb_configure_dma(bp); /* Enable RX partial store and forward and set watermark */ -@@ -3296,6 +3360,52 @@ static void gem_get_ethtool_strings(stru +@@ -3314,6 +3378,52 @@ static void gem_get_ethtool_strings(stru } } @@ -337,7 +337,7 @@ Signed-off-by: Jonathan Bell static struct net_device_stats *macb_get_stats(struct net_device *dev) { struct macb *bp = netdev_priv(dev); -@@ -3883,6 +3993,8 @@ static const struct ethtool_ops macb_eth +@@ -3901,6 +4011,8 @@ static const struct ethtool_ops macb_eth }; static const struct ethtool_ops gem_ethtool_ops = { @@ -346,7 +346,7 @@ Signed-off-by: Jonathan Bell .get_regs_len = macb_get_regs_len, .get_regs = macb_get_regs, .get_wol = macb_get_wol, -@@ -3892,6 +4004,8 @@ static const struct ethtool_ops gem_etht +@@ -3910,6 +4022,8 @@ static const struct ethtool_ops gem_etht .get_ethtool_stats = gem_get_ethtool_stats, .get_strings = gem_get_ethtool_strings, .get_sset_count = gem_get_sset_count, @@ -355,7 +355,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, -@@ -5213,6 +5327,11 @@ static int macb_probe(struct platform_de +@@ -5231,6 +5345,11 @@ static int macb_probe(struct platform_de } } } @@ -367,7 +367,7 @@ Signed-off-by: Jonathan Bell spin_lock_init(&bp->lock); spin_lock_init(&bp->stats_lock); -@@ -5273,6 +5392,21 @@ static int macb_probe(struct platform_de +@@ -5291,6 +5410,21 @@ static int macb_probe(struct platform_de else bp->phy_interface = interface; @@ -389,7 +389,7 @@ Signed-off-by: Jonathan Bell /* IP specific init */ err = init(pdev); if (err) -@@ -5344,6 +5478,19 @@ static void macb_remove(struct platform_ +@@ -5362,6 +5496,19 @@ static void macb_remove(struct platform_ } } @@ -409,7 +409,7 @@ Signed-off-by: Jonathan Bell static int __maybe_unused macb_suspend(struct device *dev) { struct net_device *netdev = dev_get_drvdata(dev); -@@ -5616,6 +5763,7 @@ static const struct dev_pm_ops macb_pm_o +@@ -5634,6 +5781,7 @@ static const struct dev_pm_ops macb_pm_o static struct platform_driver macb_driver = { .probe = macb_probe, .remove_new = macb_remove, diff --git a/target/linux/bcm27xx/patches-6.12/950-0364-drm-Add-RP1-DSI-driver.patch b/target/linux/bcm27xx/patches-6.12/950-0364-drm-Add-RP1-DSI-driver.patch index 8c37408fee8..02c343e11f9 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0364-drm-Add-RP1-DSI-driver.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0364-drm-Add-RP1-DSI-driver.patch @@ -113,7 +113,7 @@ Signed-off-by: Nick Hollinghurst source "drivers/gpu/drm/etnaviv/Kconfig" --- a/drivers/gpu/drm/Makefile +++ b/drivers/gpu/drm/Makefile -@@ -225,3 +225,4 @@ obj-y += solomon/ +@@ -224,3 +224,4 @@ obj-y += solomon/ obj-$(CONFIG_DRM_SPRD) += sprd/ obj-$(CONFIG_DRM_LOONGSON) += loongson/ obj-$(CONFIG_DRM_POWERVR) += imagination/ diff --git a/target/linux/bcm27xx/patches-6.12/950-0502-Bluetooth-hci_sync-Fix-crash-on-NULL-parent.patch b/target/linux/bcm27xx/patches-6.12/950-0502-Bluetooth-hci_sync-Fix-crash-on-NULL-parent.patch index e9fb21c99ab..fbfd23af2b9 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0502-Bluetooth-hci_sync-Fix-crash-on-NULL-parent.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0502-Bluetooth-hci_sync-Fix-crash-on-NULL-parent.patch @@ -15,7 +15,7 @@ Signed-off-by: Phil Elwell --- a/net/bluetooth/hci_sync.c +++ b/net/bluetooth/hci_sync.c -@@ -4985,7 +4985,8 @@ static const struct { +@@ -4994,7 +4994,8 @@ static const struct { */ static int hci_dev_setup_sync(struct hci_dev *hdev) { diff --git a/target/linux/bcm27xx/patches-6.12/950-0565-net-macb-Add-support-for-Raspberry-Pi-RP1-ethernet-c.patch b/target/linux/bcm27xx/patches-6.12/950-0565-net-macb-Add-support-for-Raspberry-Pi-RP1-ethernet-c.patch index ae6f61d81c4..9d560e48bce 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0565-net-macb-Add-support-for-Raspberry-Pi-RP1-ethernet-c.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0565-net-macb-Add-support-for-Raspberry-Pi-RP1-ethernet-c.patch @@ -15,7 +15,7 @@ Signed-off-by: Dave Stevenson --- a/drivers/net/ethernet/cadence/macb_main.c +++ b/drivers/net/ethernet/cadence/macb_main.c -@@ -5176,6 +5176,17 @@ static const struct macb_config versal_c +@@ -5194,6 +5194,17 @@ static const struct macb_config versal_c .usrio = &macb_default_usrio, }; @@ -33,7 +33,7 @@ Signed-off-by: Dave Stevenson static const struct of_device_id macb_dt_ids[] = { { .compatible = "cdns,at91sam9260-macb", .data = &at91sam9260_config }, { .compatible = "cdns,macb" }, -@@ -5196,6 +5207,7 @@ static const struct of_device_id macb_dt +@@ -5214,6 +5225,7 @@ static const struct of_device_id macb_dt { .compatible = "microchip,mpfs-macb", .data = &mpfs_config }, { .compatible = "microchip,sama7g5-gem", .data = &sama7g5_gem_config }, { .compatible = "microchip,sama7g5-emac", .data = &sama7g5_emac_config }, diff --git a/target/linux/bcm27xx/patches-6.12/950-0588-drm-vc4-Make-v3d-paths-unavailable-on-any-generation.patch b/target/linux/bcm27xx/patches-6.12/950-0588-drm-vc4-Make-v3d-paths-unavailable-on-any-generation.patch index 5b43bbf224d..cd6fce62104 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0588-drm-vc4-Make-v3d-paths-unavailable-on-any-generation.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0588-drm-vc4-Make-v3d-paths-unavailable-on-any-generation.patch @@ -90,7 +90,7 @@ Signed-off-by: Dave Stevenson return; /* Fast path: if the BO is still retained by someone, no need to test -@@ -786,7 +786,7 @@ int vc4_create_bo_ioctl(struct drm_devic +@@ -790,7 +790,7 @@ int vc4_create_bo_ioctl(struct drm_devic struct vc4_bo *bo = NULL; int ret; @@ -99,7 +99,7 @@ Signed-off-by: Dave Stevenson return -ENODEV; ret = vc4_grab_bin_bo(vc4, vc4file); -@@ -816,7 +816,7 @@ int vc4_mmap_bo_ioctl(struct drm_device +@@ -820,7 +820,7 @@ int vc4_mmap_bo_ioctl(struct drm_device struct drm_vc4_mmap_bo *args = data; struct drm_gem_object *gem_obj; @@ -108,7 +108,7 @@ Signed-off-by: Dave Stevenson return -ENODEV; gem_obj = drm_gem_object_lookup(file_priv, args->handle); -@@ -842,7 +842,7 @@ vc4_create_shader_bo_ioctl(struct drm_de +@@ -846,7 +846,7 @@ vc4_create_shader_bo_ioctl(struct drm_de struct vc4_bo *bo = NULL; int ret; @@ -117,7 +117,7 @@ Signed-off-by: Dave Stevenson return -ENODEV; if (args->size == 0) -@@ -921,7 +921,7 @@ int vc4_set_tiling_ioctl(struct drm_devi +@@ -925,7 +925,7 @@ int vc4_set_tiling_ioctl(struct drm_devi struct vc4_bo *bo; bool t_format; @@ -126,7 +126,7 @@ Signed-off-by: Dave Stevenson return -ENODEV; if (args->flags != 0) -@@ -967,7 +967,7 @@ int vc4_get_tiling_ioctl(struct drm_devi +@@ -971,7 +971,7 @@ int vc4_get_tiling_ioctl(struct drm_devi struct drm_gem_object *gem_obj; struct vc4_bo *bo; @@ -135,7 +135,7 @@ Signed-off-by: Dave Stevenson return -ENODEV; if (args->flags != 0 || args->modifier != 0) -@@ -1010,7 +1010,7 @@ int vc4_bo_cache_init(struct drm_device +@@ -1014,7 +1014,7 @@ int vc4_bo_cache_init(struct drm_device int ret; int i; @@ -144,7 +144,7 @@ Signed-off-by: Dave Stevenson return -ENODEV; /* Create the initial set of BO labels that the kernel will -@@ -1074,7 +1074,7 @@ int vc4_label_bo_ioctl(struct drm_device +@@ -1078,7 +1078,7 @@ int vc4_label_bo_ioctl(struct drm_device struct drm_gem_object *gem_obj; int ret = 0, label; diff --git a/target/linux/bcm27xx/patches-6.12/950-0702-serial-sc16is7xx-announce-support-for-SER_RS485_RTS_.patch b/target/linux/bcm27xx/patches-6.12/950-0702-serial-sc16is7xx-announce-support-for-SER_RS485_RTS_.patch index 5109a9879df..5521586055f 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0702-serial-sc16is7xx-announce-support-for-SER_RS485_RTS_.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0702-serial-sc16is7xx-announce-support-for-SER_RS485_RTS_.patch @@ -31,7 +31,7 @@ Signed-off-by: Greg Kroah-Hartman --- a/drivers/tty/serial/sc16is7xx.c +++ b/drivers/tty/serial/sc16is7xx.c -@@ -1461,7 +1461,7 @@ static int sc16is7xx_setup_mctrl_ports(s +@@ -1473,7 +1473,7 @@ static int sc16is7xx_setup_mctrl_ports(s } static const struct serial_rs485 sc16is7xx_rs485_supported = { diff --git a/target/linux/bcm53xx/patches-6.12/180-usb-xhci-add-support-for-performing-fake-doorbell.patch b/target/linux/bcm53xx/patches-6.12/180-usb-xhci-add-support-for-performing-fake-doorbell.patch index 611919c9d14..9910b49da1e 100644 --- a/target/linux/bcm53xx/patches-6.12/180-usb-xhci-add-support-for-performing-fake-doorbell.patch +++ b/target/linux/bcm53xx/patches-6.12/180-usb-xhci-add-support-for-performing-fake-doorbell.patch @@ -103,7 +103,7 @@ it on BCM4708 family. if (xhci->quirks & XHCI_NEC_HOST) --- a/drivers/usb/host/xhci.h +++ b/drivers/usb/host/xhci.h -@@ -1630,6 +1630,7 @@ struct xhci_hcd { +@@ -1631,6 +1631,7 @@ struct xhci_hcd { #define XHCI_CDNS_SCTX_QUIRK BIT_ULL(48) #define XHCI_ETRON_HOST BIT_ULL(49) #define XHCI_LIMIT_ENDPOINT_INTERVAL_9 BIT_ULL(50) diff --git a/target/linux/generic/backport-6.12/500-02-v6.13-block-introduce-add_disk_fwnode.patch b/target/linux/generic/backport-6.12/500-02-v6.13-block-introduce-add_disk_fwnode.patch index 381838d8ea0..496d6abb47b 100644 --- a/target/linux/generic/backport-6.12/500-02-v6.13-block-introduce-add_disk_fwnode.patch +++ b/target/linux/generic/backport-6.12/500-02-v6.13-block-introduce-add_disk_fwnode.patch @@ -25,7 +25,7 @@ Signed-off-by: Jens Axboe --- a/block/genhd.c +++ b/block/genhd.c -@@ -383,16 +383,18 @@ int disk_scan_partitions(struct gendisk +@@ -405,16 +405,18 @@ static void add_disk_final(struct gendis } /** @@ -48,7 +48,7 @@ Signed-off-by: Jens Axboe { struct device *ddev = disk_to_dev(disk); -@@ -452,6 +454,8 @@ int __must_check device_add_disk(struct +@@ -474,6 +476,8 @@ int __must_check device_add_disk(struct ddev->parent = parent; ddev->groups = groups; dev_set_name(ddev, "%s", disk->disk_name); @@ -57,7 +57,7 @@ Signed-off-by: Jens Axboe if (!(disk->flags & GENHD_FL_HIDDEN)) ddev->devt = MKDEV(disk->major, disk->first_minor); ret = device_add(ddev); -@@ -553,6 +557,22 @@ out_exit_elevator: +@@ -557,6 +561,22 @@ out_exit_elevator: elevator_exit(disk->queue); return ret; } diff --git a/target/linux/generic/backport-6.12/602-03-v6.14-net-pcs-xpcs-implement-pcs_inband_caps-method.patch b/target/linux/generic/backport-6.12/602-03-v6.14-net-pcs-xpcs-implement-pcs_inband_caps-method.patch index 8dc495bd0c4..4fd3f0c9617 100644 --- a/target/linux/generic/backport-6.12/602-03-v6.14-net-pcs-xpcs-implement-pcs_inband_caps-method.patch +++ b/target/linux/generic/backport-6.12/602-03-v6.14-net-pcs-xpcs-implement-pcs_inband_caps-method.patch @@ -48,7 +48,7 @@ Signed-off-by: Jakub Kicinski void xpcs_get_interfaces(struct dw_xpcs *xpcs, unsigned long *interfaces) { int i, j; -@@ -1365,6 +1392,7 @@ static const struct dw_xpcs_desc xpcs_de +@@ -1347,6 +1374,7 @@ static const struct dw_xpcs_desc xpcs_de static const struct phylink_pcs_ops xpcs_phylink_ops = { .pcs_validate = xpcs_validate, diff --git a/target/linux/generic/backport-6.12/620-v6.15-ppp-use-IFF_NO_QUEUE-in-virtual-interfaces.patch b/target/linux/generic/backport-6.12/620-v6.15-ppp-use-IFF_NO_QUEUE-in-virtual-interfaces.patch deleted file mode 100644 index 65135a49ed9..00000000000 --- a/target/linux/generic/backport-6.12/620-v6.15-ppp-use-IFF_NO_QUEUE-in-virtual-interfaces.patch +++ /dev/null @@ -1,79 +0,0 @@ -From: Qingfang Deng -Date: Sat, 1 Mar 2025 21:55:16 +0800 -Subject: [PATCH] ppp: use IFF_NO_QUEUE in virtual interfaces -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -For PPPoE, PPTP, and PPPoL2TP, the start_xmit() function directly -forwards packets to the underlying network stack and never returns -anything other than 1. So these interfaces do not require a qdisc, -and the IFF_NO_QUEUE flag should be set. - -Introduces a direct_xmit flag in struct ppp_channel to indicate when -IFF_NO_QUEUE should be applied. The flag is set in ppp_connect_channel() -for relevant protocols. - -While at it, remove the usused latency member from struct ppp_channel. - -Signed-off-by: Qingfang Deng -Reviewed-by: Toke Høiland-Jørgensen -Link: https://patch.msgid.link/20250301135517.695809-1-dqfext@gmail.com -Signed-off-by: Jakub Kicinski ---- - ---- a/drivers/net/ppp/ppp_generic.c -+++ b/drivers/net/ppp/ppp_generic.c -@@ -3507,6 +3507,10 @@ ppp_connect_channel(struct channel *pch, - ret = -ENOTCONN; - goto outl; - } -+ if (pch->chan->direct_xmit) -+ ppp->dev->priv_flags |= IFF_NO_QUEUE; -+ else -+ ppp->dev->priv_flags &= ~IFF_NO_QUEUE; - spin_unlock_bh(&pch->downl); - if (pch->file.hdrlen > ppp->file.hdrlen) - ppp->file.hdrlen = pch->file.hdrlen; ---- a/drivers/net/ppp/pppoe.c -+++ b/drivers/net/ppp/pppoe.c -@@ -699,6 +699,7 @@ static int pppoe_connect(struct socket * - po->chan.mtu = dev->mtu - sizeof(struct pppoe_hdr) - 2; - po->chan.private = sk; - po->chan.ops = &pppoe_chan_ops; -+ po->chan.direct_xmit = true; - - error = ppp_register_net_channel(dev_net(dev), &po->chan); - if (error) { ---- a/drivers/net/ppp/pptp.c -+++ b/drivers/net/ppp/pptp.c -@@ -469,6 +469,7 @@ static int pptp_connect(struct socket *s - po->chan.mtu -= PPTP_HEADER_OVERHEAD; - - po->chan.hdrlen = 2 + sizeof(struct pptp_gre_header); -+ po->chan.direct_xmit = true; - error = ppp_register_channel(&po->chan); - if (error) { - pr_err("PPTP: failed to register PPP channel (%d)\n", error); ---- a/include/linux/ppp_channel.h -+++ b/include/linux/ppp_channel.h -@@ -42,8 +42,7 @@ struct ppp_channel { - int hdrlen; /* amount of headroom channel needs */ - void *ppp; /* opaque to channel */ - int speed; /* transfer rate (bytes/second) */ -- /* the following is not used at present */ -- int latency; /* overhead time in milliseconds */ -+ bool direct_xmit; /* no qdisc, xmit directly */ - }; - - #ifdef __KERNEL__ ---- a/net/l2tp/l2tp_ppp.c -+++ b/net/l2tp/l2tp_ppp.c -@@ -796,6 +796,7 @@ static int pppol2tp_connect(struct socke - po->chan.private = sk; - po->chan.ops = &pppol2tp_chan_ops; - po->chan.mtu = pppol2tp_tunnel_mtu(tunnel); -+ po->chan.direct_xmit = true; - - error = ppp_register_net_channel(sock_net(sk), &po->chan); - if (error) { diff --git a/target/linux/generic/backport-6.12/621-v6.17-ppp-convert-to-percpu-netstats.patch b/target/linux/generic/backport-6.12/621-v6.17-ppp-convert-to-percpu-netstats.patch deleted file mode 100644 index de9710ecd1e..00000000000 --- a/target/linux/generic/backport-6.12/621-v6.17-ppp-convert-to-percpu-netstats.patch +++ /dev/null @@ -1,126 +0,0 @@ -From 1a3e9b7a6b09e8ab3d2af019e4a392622685855e Mon Sep 17 00:00:00 2001 -From: Qingfang Deng -Date: Tue, 10 Jun 2025 16:32:10 +0800 -Subject: [PATCH] ppp: convert to percpu netstats - -Convert to percpu netstats to avoid lock contention when reading them. - -Signed-off-by: Qingfang Deng -Link: https://patch.msgid.link/20250610083211.909015-1-dqfext@gmail.com -Signed-off-by: Jakub Kicinski ---- - drivers/net/ppp/ppp_generic.c | 52 +++++++++++++---------------------- - 1 file changed, 19 insertions(+), 33 deletions(-) - ---- a/drivers/net/ppp/ppp_generic.c -+++ b/drivers/net/ppp/ppp_generic.c -@@ -108,18 +108,6 @@ struct ppp_file { - #define PF_TO_CHANNEL(pf) PF_TO_X(pf, struct channel) - - /* -- * Data structure to hold primary network stats for which -- * we want to use 64 bit storage. Other network stats -- * are stored in dev->stats of the ppp strucute. -- */ --struct ppp_link_stats { -- u64 rx_packets; -- u64 tx_packets; -- u64 rx_bytes; -- u64 tx_bytes; --}; -- --/* - * Data structure describing one ppp unit. - * A ppp unit corresponds to a ppp network interface device - * and represents a multilink bundle. -@@ -162,7 +150,6 @@ struct ppp { - struct bpf_prog *active_filter; /* filter for pkts to reset idle */ - #endif /* CONFIG_PPP_FILTER */ - struct net *ppp_net; /* the net we belong to */ -- struct ppp_link_stats stats64; /* 64 bit network stats */ - }; - - /* -@@ -1544,23 +1531,12 @@ ppp_net_siocdevprivate(struct net_device - static void - ppp_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats64) - { -- struct ppp *ppp = netdev_priv(dev); -- -- ppp_recv_lock(ppp); -- stats64->rx_packets = ppp->stats64.rx_packets; -- stats64->rx_bytes = ppp->stats64.rx_bytes; -- ppp_recv_unlock(ppp); -- -- ppp_xmit_lock(ppp); -- stats64->tx_packets = ppp->stats64.tx_packets; -- stats64->tx_bytes = ppp->stats64.tx_bytes; -- ppp_xmit_unlock(ppp); -- - stats64->rx_errors = dev->stats.rx_errors; - stats64->tx_errors = dev->stats.tx_errors; - stats64->rx_dropped = dev->stats.rx_dropped; - stats64->tx_dropped = dev->stats.tx_dropped; - stats64->rx_length_errors = dev->stats.rx_length_errors; -+ dev_fetch_sw_netstats(stats64, dev->tstats); - } - - static int ppp_dev_init(struct net_device *dev) -@@ -1658,6 +1634,7 @@ static void ppp_setup(struct net_device - dev->type = ARPHRD_PPP; - dev->flags = IFF_POINTOPOINT | IFF_NOARP | IFF_MULTICAST; - dev->priv_destructor = ppp_dev_priv_destructor; -+ dev->pcpu_stat_type = NETDEV_PCPU_STAT_TSTATS; - netif_keep_dst(dev); - } - -@@ -1803,8 +1780,7 @@ ppp_send_frame(struct ppp *ppp, struct s - #endif /* CONFIG_PPP_FILTER */ - } - -- ++ppp->stats64.tx_packets; -- ppp->stats64.tx_bytes += skb->len - PPP_PROTO_LEN; -+ dev_sw_netstats_tx_add(ppp->dev, 1, skb->len - PPP_PROTO_LEN); - - switch (proto) { - case PPP_IP: -@@ -2482,8 +2458,7 @@ ppp_receive_nonmp_frame(struct ppp *ppp, - break; - } - -- ++ppp->stats64.rx_packets; -- ppp->stats64.rx_bytes += skb->len - 2; -+ dev_sw_netstats_rx_add(ppp->dev, skb->len - PPP_PROTO_LEN); - - npi = proto_to_npindex(proto); - if (npi < 0) { -@@ -3311,14 +3286,25 @@ static void - ppp_get_stats(struct ppp *ppp, struct ppp_stats *st) - { - struct slcompress *vj = ppp->vj; -+ int cpu; - - memset(st, 0, sizeof(*st)); -- st->p.ppp_ipackets = ppp->stats64.rx_packets; -+ for_each_possible_cpu(cpu) { -+ struct pcpu_sw_netstats *p = per_cpu_ptr(ppp->dev->tstats, cpu); -+ u64 rx_packets, rx_bytes, tx_packets, tx_bytes; -+ -+ rx_packets = u64_stats_read(&p->rx_packets); -+ rx_bytes = u64_stats_read(&p->rx_bytes); -+ tx_packets = u64_stats_read(&p->tx_packets); -+ tx_bytes = u64_stats_read(&p->tx_bytes); -+ -+ st->p.ppp_ipackets += rx_packets; -+ st->p.ppp_ibytes += rx_bytes; -+ st->p.ppp_opackets += tx_packets; -+ st->p.ppp_obytes += tx_bytes; -+ } - st->p.ppp_ierrors = ppp->dev->stats.rx_errors; -- st->p.ppp_ibytes = ppp->stats64.rx_bytes; -- st->p.ppp_opackets = ppp->stats64.tx_packets; - st->p.ppp_oerrors = ppp->dev->stats.tx_errors; -- st->p.ppp_obytes = ppp->stats64.tx_bytes; - if (!vj) - return; - st->vj.vjs_packets = vj->sls_o_compressed + vj->sls_o_uncompressed; diff --git a/target/linux/generic/backport-6.12/622-v6.18-ppp-remove-rwlock-usage.patch b/target/linux/generic/backport-6.12/622-v6.18-ppp-remove-rwlock-usage.patch index 7f3261d1859..a2d65ef8b1c 100644 --- a/target/linux/generic/backport-6.12/622-v6.18-ppp-remove-rwlock-usage.patch +++ b/target/linux/generic/backport-6.12/622-v6.18-ppp-remove-rwlock-usage.patch @@ -36,9 +36,9 @@ Signed-off-by: Jakub Kicinski - rwlock_t upl; /* protects `ppp' and 'bridge' */ + spinlock_t upl; /* protects `ppp' and 'bridge' */ struct channel __rcu *bridge; /* "bridged" ppp channel */ + struct rcu_head rcu; /* for RCU-deferred free of the channel */ #ifdef CONFIG_PPP_MULTILINK - u8 avail; /* flag used in multilink stuff */ -@@ -639,34 +639,34 @@ static struct bpf_prog *compat_ppp_get_f +@@ -640,34 +640,34 @@ static struct bpf_prog *compat_ppp_get_f */ static int ppp_bridge_channels(struct channel *pch, struct channel *pchb) { @@ -83,7 +83,7 @@ Signed-off-by: Jakub Kicinski synchronize_rcu(); if (pchb) -@@ -680,25 +680,25 @@ static int ppp_unbridge_channels(struct +@@ -681,25 +681,25 @@ static int ppp_unbridge_channels(struct { struct channel *pchb, *pchbb; @@ -114,7 +114,7 @@ Signed-off-by: Jakub Kicinski synchronize_rcu(); -@@ -2147,10 +2147,9 @@ static int ppp_mp_explode(struct ppp *pp +@@ -2172,10 +2172,9 @@ static int ppp_mp_explode(struct ppp *pp #endif /* CONFIG_PPP_MULTILINK */ /* Try to send data out on a channel */ @@ -126,7 +126,7 @@ Signed-off-by: Jakub Kicinski spin_lock(&pch->downl); if (pch->chan) { -@@ -2169,7 +2168,6 @@ static void __ppp_channel_push(struct ch +@@ -2194,7 +2193,6 @@ static void __ppp_channel_push(struct ch spin_unlock(&pch->downl); /* see if there is anything from the attached unit to be sent */ if (skb_queue_empty(&pch->file.xq)) { @@ -134,7 +134,7 @@ Signed-off-by: Jakub Kicinski if (ppp) __ppp_xmit_process(ppp, NULL); } -@@ -2177,15 +2175,18 @@ static void __ppp_channel_push(struct ch +@@ -2202,15 +2200,18 @@ static void __ppp_channel_push(struct ch static void ppp_channel_push(struct channel *pch) { @@ -160,7 +160,7 @@ Signed-off-by: Jakub Kicinski } /* -@@ -2287,6 +2288,7 @@ void +@@ -2312,6 +2313,7 @@ void ppp_input(struct ppp_channel *chan, struct sk_buff *skb) { struct channel *pch = chan->ppp; @@ -168,7 +168,7 @@ Signed-off-by: Jakub Kicinski int proto; if (!pch) { -@@ -2298,18 +2300,19 @@ ppp_input(struct ppp_channel *chan, stru +@@ -2323,18 +2325,19 @@ ppp_input(struct ppp_channel *chan, stru if (ppp_channel_bridge_input(pch, skb)) return; @@ -193,7 +193,7 @@ Signed-off-by: Jakub Kicinski /* put it on the channel queue */ skb_queue_tail(&pch->file.rq, skb); /* drop old frames if queue too long */ -@@ -2318,11 +2321,11 @@ ppp_input(struct ppp_channel *chan, stru +@@ -2343,11 +2346,11 @@ ppp_input(struct ppp_channel *chan, stru kfree_skb(skb); wake_up_interruptible(&pch->file.rwait); } else { @@ -207,7 +207,7 @@ Signed-off-by: Jakub Kicinski } /* Put a 0-length skb in the receive queue as an error indication */ -@@ -2331,20 +2334,22 @@ ppp_input_error(struct ppp_channel *chan +@@ -2356,20 +2359,22 @@ ppp_input_error(struct ppp_channel *chan { struct channel *pch = chan->ppp; struct sk_buff *skb; @@ -234,7 +234,7 @@ Signed-off-by: Jakub Kicinski } /* -@@ -2892,7 +2897,6 @@ int ppp_register_net_channel(struct net +@@ -2917,7 +2922,6 @@ int ppp_register_net_channel(struct net pn = ppp_pernet(net); @@ -242,7 +242,7 @@ Signed-off-by: Jakub Kicinski pch->chan = chan; pch->chan_net = get_net_track(net, &pch->ns_tracker, GFP_KERNEL); chan->ppp = pch; -@@ -2903,7 +2907,7 @@ int ppp_register_net_channel(struct net +@@ -2928,7 +2932,7 @@ int ppp_register_net_channel(struct net #endif /* CONFIG_PPP_MULTILINK */ init_rwsem(&pch->chan_sem); spin_lock_init(&pch->downl); @@ -251,7 +251,7 @@ Signed-off-by: Jakub Kicinski spin_lock_bh(&pn->all_channels_lock); pch->file.index = ++pn->last_channel_index; -@@ -2932,13 +2936,15 @@ int ppp_channel_index(struct ppp_channel +@@ -2957,13 +2961,15 @@ int ppp_channel_index(struct ppp_channel int ppp_unit_number(struct ppp_channel *chan) { struct channel *pch = chan->ppp; @@ -271,7 +271,7 @@ Signed-off-by: Jakub Kicinski } return unit; } -@@ -2950,12 +2956,14 @@ char *ppp_dev_name(struct ppp_channel *c +@@ -2975,12 +2981,14 @@ char *ppp_dev_name(struct ppp_channel *c { struct channel *pch = chan->ppp; char *name = NULL; @@ -290,7 +290,7 @@ Signed-off-by: Jakub Kicinski } return name; } -@@ -3478,9 +3486,9 @@ ppp_connect_channel(struct channel *pch, +@@ -3505,9 +3513,9 @@ ppp_connect_channel(struct channel *pch, ppp = ppp_find_unit(pn, unit); if (!ppp) goto out; @@ -302,7 +302,7 @@ Signed-off-by: Jakub Kicinski rcu_dereference_protected(pch->bridge, lockdep_is_held(&pch->upl))) goto outl; -@@ -3505,13 +3513,13 @@ ppp_connect_channel(struct channel *pch, +@@ -3532,13 +3540,13 @@ ppp_connect_channel(struct channel *pch, ppp->dev->hard_header_len = hdrlen; list_add_tail_rcu(&pch->clist, &ppp->channels); ++ppp->n_channels; @@ -318,7 +318,7 @@ Signed-off-by: Jakub Kicinski out: mutex_unlock(&pn->all_ppp_mutex); return ret; -@@ -3526,10 +3534,9 @@ ppp_disconnect_channel(struct channel *p +@@ -3553,10 +3561,9 @@ ppp_disconnect_channel(struct channel *p struct ppp *ppp; int err = -EINVAL; diff --git a/target/linux/generic/backport-6.12/623-v6.18-pppoe-remove-rwlock-usage.patch b/target/linux/generic/backport-6.12/623-v6.18-pppoe-remove-rwlock-usage.patch index eec1a98d29b..82d67bf978b 100644 --- a/target/linux/generic/backport-6.12/623-v6.18-pppoe-remove-rwlock-usage.patch +++ b/target/linux/generic/backport-6.12/623-v6.18-pppoe-remove-rwlock-usage.patch @@ -230,7 +230,7 @@ Signed-off-by: Jakub Kicinski if (error < 0) goto err_put; -@@ -1058,11 +1070,11 @@ static inline struct pppox_sock *pppoe_g +@@ -1059,11 +1071,11 @@ static inline struct pppox_sock *pppoe_g int i; for (i = 0; i < PPPOE_HASH_SIZE; i++) { @@ -244,7 +244,7 @@ Signed-off-by: Jakub Kicinski } } -@@ -1071,19 +1083,19 @@ out: +@@ -1072,19 +1084,19 @@ out: } static void *pppoe_seq_start(struct seq_file *seq, loff_t *pos) @@ -267,7 +267,7 @@ Signed-off-by: Jakub Kicinski ++*pos; if (v == SEQ_START_TOKEN) { -@@ -1091,14 +1103,15 @@ static void *pppoe_seq_next(struct seq_f +@@ -1092,14 +1104,15 @@ static void *pppoe_seq_next(struct seq_f goto out; } po = v; @@ -286,7 +286,7 @@ Signed-off-by: Jakub Kicinski if (po) break; } -@@ -1109,10 +1122,9 @@ out: +@@ -1110,10 +1123,9 @@ out: } static void pppoe_seq_stop(struct seq_file *seq, void *v) @@ -299,7 +299,7 @@ Signed-off-by: Jakub Kicinski } static const struct seq_operations pppoe_seq_ops = { -@@ -1155,7 +1167,7 @@ static __net_init int pppoe_init_net(str +@@ -1156,7 +1168,7 @@ static __net_init int pppoe_init_net(str struct pppoe_net *pn = pppoe_pernet(net); struct proc_dir_entry *pde; diff --git a/target/linux/generic/backport-6.12/625-v7.0-ppp-enable-TX-scatter-gather.patch b/target/linux/generic/backport-6.12/625-v7.0-ppp-enable-TX-scatter-gather.patch deleted file mode 100644 index 6804ade0731..00000000000 --- a/target/linux/generic/backport-6.12/625-v7.0-ppp-enable-TX-scatter-gather.patch +++ /dev/null @@ -1,104 +0,0 @@ -From 42fcb213e58a7da33d5d2d7517b4e521025c68c3 Mon Sep 17 00:00:00 2001 -From: Qingfang Deng -Date: Thu, 29 Jan 2026 09:29:02 +0800 -Subject: [PATCH] ppp: enable TX scatter-gather - -PPP channels using chan->direct_xmit prepend the PPP header to a skb and -call dev_queue_xmit() directly. In this mode the skb does not need to be -linear, but the PPP netdevice currently does not advertise -scatter-gather features, causing unnecessary linearization and -preventing GSO. - -Enable NETIF_F_SG and NETIF_F_FRAGLIST on PPP devices. In case a linear -buffer is required (PPP compression, multilink, and channels without -direct_xmit), call skb_linearize() explicitly. - -Signed-off-by: Qingfang Deng -Link: https://patch.msgid.link/20260129012902.941-1-dqfext@gmail.com -Signed-off-by: Paolo Abeni ---- - drivers/net/ppp/ppp_generic.c | 30 +++++++++++++++++++++++++----- - 1 file changed, 25 insertions(+), 5 deletions(-) - ---- a/drivers/net/ppp/ppp_generic.c -+++ b/drivers/net/ppp/ppp_generic.c -@@ -1635,6 +1635,8 @@ static void ppp_setup(struct net_device - dev->flags = IFF_POINTOPOINT | IFF_NOARP | IFF_MULTICAST; - dev->priv_destructor = ppp_dev_priv_destructor; - dev->pcpu_stat_type = NETDEV_PCPU_STAT_TSTATS; -+ dev->features = NETIF_F_SG | NETIF_F_FRAGLIST; -+ dev->hw_features = dev->features; - netif_keep_dst(dev); - } - -@@ -1699,6 +1701,10 @@ pad_compress_skb(struct ppp *ppp, struct - ppp->xcomp->comp_extra + ppp->dev->hard_header_len; - int compressor_skb_size = ppp->dev->mtu + - ppp->xcomp->comp_extra + PPP_HDRLEN; -+ -+ if (skb_linearize(skb)) -+ return NULL; -+ - new_skb = alloc_skb(new_skb_size, GFP_ATOMIC); - if (!new_skb) { - if (net_ratelimit()) -@@ -1786,6 +1792,10 @@ ppp_send_frame(struct ppp *ppp, struct s - case PPP_IP: - if (!ppp->vj || (ppp->flags & SC_COMP_TCP) == 0) - break; -+ -+ if (skb_linearize(skb)) -+ goto drop; -+ - /* try to do VJ TCP header compression */ - new_skb = alloc_skb(skb->len + ppp->dev->hard_header_len - 2, - GFP_ATOMIC); -@@ -1883,19 +1893,26 @@ ppp_push(struct ppp *ppp) - } - - if ((ppp->flags & SC_MULTILINK) == 0) { -+ struct ppp_channel *chan; - /* not doing multilink: send it down the first channel */ - list = list->next; - pch = list_entry(list, struct channel, clist); - - spin_lock(&pch->downl); -- if (pch->chan) { -- if (pch->chan->ops->start_xmit(pch->chan, skb)) -- ppp->xmit_pending = NULL; -- } else { -- /* channel got unregistered */ -+ chan = pch->chan; -+ if (unlikely(!chan || (!chan->direct_xmit && skb_linearize(skb)))) { -+ /* channel got unregistered, or it requires a linear -+ * skb but linearization failed -+ */ - kfree_skb(skb); - ppp->xmit_pending = NULL; -+ goto out; - } -+ -+ if (chan->ops->start_xmit(chan, skb)) -+ ppp->xmit_pending = NULL; -+ -+out: - spin_unlock(&pch->downl); - return; - } -@@ -1980,6 +1997,8 @@ static int ppp_mp_explode(struct ppp *pp - return 0; /* can't take now, leave it in xmit_pending */ - - /* Do protocol field compression */ -+ if (skb_linearize(skb)) -+ goto err_linearize; - p = skb->data; - len = skb->len; - if (*p == 0 && mp_protocol_compress) { -@@ -2138,6 +2157,7 @@ static int ppp_mp_explode(struct ppp *pp - - noskb: - spin_unlock(&pch->downl); -+ err_linearize: - if (ppp->debug & 1) - netdev_err(ppp->dev, "PPP: no memory (fragment)\n"); - ++ppp->dev->stats.tx_errors; diff --git a/target/linux/generic/backport-6.12/650-v7.2-net-pppoe-implement-GRO-GSO-support.patch b/target/linux/generic/backport-6.12/650-v7.2-net-pppoe-implement-GRO-GSO-support.patch index 0244e095215..bc082b536ad 100644 --- a/target/linux/generic/backport-6.12/650-v7.2-net-pppoe-implement-GRO-GSO-support.patch +++ b/target/linux/generic/backport-6.12/650-v7.2-net-pppoe-implement-GRO-GSO-support.patch @@ -41,7 +41,7 @@ Signed-off-by: Paolo Abeni goto drop; ph = pppoe_hdr(skb); -@@ -1182,6 +1183,160 @@ static struct pernet_operations pppoe_ne +@@ -1183,6 +1184,160 @@ static struct pernet_operations pppoe_ne .size = sizeof(struct pppoe_net), }; @@ -202,7 +202,7 @@ Signed-off-by: Paolo Abeni static int __init pppoe_init(void) { int err; -@@ -1198,6 +1353,8 @@ static int __init pppoe_init(void) +@@ -1199,6 +1354,8 @@ static int __init pppoe_init(void) if (err) goto out_unregister_pppoe_proto; @@ -211,7 +211,7 @@ Signed-off-by: Paolo Abeni dev_add_pack(&pppoes_ptype); dev_add_pack(&pppoed_ptype); register_netdevice_notifier(&pppoe_notifier); -@@ -1217,6 +1374,8 @@ static void __exit pppoe_exit(void) +@@ -1218,6 +1375,8 @@ static void __exit pppoe_exit(void) unregister_netdevice_notifier(&pppoe_notifier); dev_remove_pack(&pppoed_ptype); dev_remove_pack(&pppoes_ptype); diff --git a/target/linux/generic/config-6.12 b/target/linux/generic/config-6.12 index d73fe1b9ab5..29ffd3b7102 100644 --- a/target/linux/generic/config-6.12 +++ b/target/linux/generic/config-6.12 @@ -1537,7 +1537,6 @@ CONFIG_DQL=y # CONFIG_DRM_ITE_IT6505 is not set # CONFIG_DRM_ITE_IT66121 is not set # CONFIG_DRM_KOMEDA is not set -# CONFIG_DRM_LIB_RANDOM is not set # CONFIG_DRM_LIMA is not set # CONFIG_DRM_LOAD_EDID_FIRMWARE is not set # CONFIG_DRM_LOGICVC is not set @@ -2300,6 +2299,7 @@ CONFIG_GPIO_SYSFS=y # CONFIG_GPIO_XILINX is not set # CONFIG_GPIO_XRA1403 is not set # CONFIG_GPIO_ZEVIO is not set +# CONFIG_GPU_BUDDY is not set # CONFIG_GP_PCI1XXXX is not set # CONFIG_GREENASIA_FF is not set # CONFIG_GREYBUS is not set diff --git a/target/linux/generic/hack-6.12/253-ksmbd-config.patch b/target/linux/generic/hack-6.12/253-ksmbd-config.patch index 0dad9006d7f..ad164406db9 100644 --- a/target/linux/generic/hack-6.12/253-ksmbd-config.patch +++ b/target/linux/generic/hack-6.12/253-ksmbd-config.patch @@ -10,7 +10,7 @@ Subject: [PATCH] Kconfig: add tristate for OID and ASNI string --- a/init/Kconfig +++ b/init/Kconfig -@@ -2067,7 +2067,7 @@ config PADATA +@@ -2070,7 +2070,7 @@ config PADATA bool config ASN1 diff --git a/target/linux/generic/hack-6.12/402-mtd-blktrans-call-add-disks-after-mtd-device.patch b/target/linux/generic/hack-6.12/402-mtd-blktrans-call-add-disks-after-mtd-device.patch index d5a68d681bb..81927c56649 100644 --- a/target/linux/generic/hack-6.12/402-mtd-blktrans-call-add-disks-after-mtd-device.patch +++ b/target/linux/generic/hack-6.12/402-mtd-blktrans-call-add-disks-after-mtd-device.patch @@ -91,7 +91,7 @@ Signed-off-by: Daniel Golle #include "mtdcore.h" -@@ -1109,6 +1110,8 @@ int mtd_device_parse_register(struct mtd +@@ -1124,6 +1125,8 @@ int mtd_device_parse_register(struct mtd register_reboot_notifier(&mtd->reboot_notifier); } diff --git a/target/linux/generic/hack-6.12/420-mtd-support-OpenWrt-s-MTD_ROOTFS_ROOT_DEV.patch b/target/linux/generic/hack-6.12/420-mtd-support-OpenWrt-s-MTD_ROOTFS_ROOT_DEV.patch index 1b17c2fe882..23f78397c63 100644 --- a/target/linux/generic/hack-6.12/420-mtd-support-OpenWrt-s-MTD_ROOTFS_ROOT_DEV.patch +++ b/target/linux/generic/hack-6.12/420-mtd-support-OpenWrt-s-MTD_ROOTFS_ROOT_DEV.patch @@ -12,7 +12,7 @@ Signed-off-by: Rafał Miłecki --- a/drivers/mtd/mtdcore.c +++ b/drivers/mtd/mtdcore.c -@@ -780,7 +780,8 @@ int add_mtd_device(struct mtd_info *mtd) +@@ -787,7 +787,8 @@ int add_mtd_device(struct mtd_info *mtd) mutex_unlock(&mtd_table_mutex); diff --git a/target/linux/generic/kernel-6.12 b/target/linux/generic/kernel-6.12 index af8dbc6a5a0..72e413d04f6 100644 --- a/target/linux/generic/kernel-6.12 +++ b/target/linux/generic/kernel-6.12 @@ -1,2 +1,2 @@ -LINUX_VERSION-6.12 = .100 -LINUX_KERNEL_HASH-6.12.100 = 67f973533406492e86774bacbcefae50d50d5c34cbf703c47ec526a5efdcee90 +LINUX_VERSION-6.12 = .102 +LINUX_KERNEL_HASH-6.12.102 = 694bb5f49371323ab9c2b7040bd358ed81bffbe80b372d76507045828f655803 diff --git a/target/linux/generic/pending-6.12/103-kbuild-export-SUBARCH.patch b/target/linux/generic/pending-6.12/103-kbuild-export-SUBARCH.patch index a47479b7cac..c196de96013 100644 --- a/target/linux/generic/pending-6.12/103-kbuild-export-SUBARCH.patch +++ b/target/linux/generic/pending-6.12/103-kbuild-export-SUBARCH.patch @@ -10,7 +10,7 @@ Signed-off-by: Felix Fietkau --- a/Makefile +++ b/Makefile -@@ -594,7 +594,7 @@ export RUSTC_BOOTSTRAP := 1 +@@ -599,7 +599,7 @@ export RUSTC_BOOTSTRAP := 1 # Allows finding `.clippy.toml` in out-of-srctree builds. export CLIPPY_CONF_DIR := $(srctree) diff --git a/target/linux/generic/pending-6.12/203-kallsyms_uncompressed.patch b/target/linux/generic/pending-6.12/203-kallsyms_uncompressed.patch index 5e9a0da5856..ffa46de0e8f 100644 --- a/target/linux/generic/pending-6.12/203-kallsyms_uncompressed.patch +++ b/target/linux/generic/pending-6.12/203-kallsyms_uncompressed.patch @@ -14,7 +14,7 @@ Signed-off-by: Felix Fietkau --- a/init/Kconfig +++ b/init/Kconfig -@@ -1537,6 +1537,17 @@ config SYSCTL_ARCH_UNALIGN_ALLOW +@@ -1540,6 +1540,17 @@ config SYSCTL_ARCH_UNALIGN_ALLOW the unaligned access emulation. see arch/parisc/kernel/unaligned.c for reference diff --git a/target/linux/generic/pending-6.12/303-powerpc-85xx-Add-fsl-ifc-to-common-device-ids.patch b/target/linux/generic/pending-6.12/303-powerpc-85xx-Add-fsl-ifc-to-common-device-ids.patch deleted file mode 100644 index b6ea5346b07..00000000000 --- a/target/linux/generic/pending-6.12/303-powerpc-85xx-Add-fsl-ifc-to-common-device-ids.patch +++ /dev/null @@ -1,107 +0,0 @@ -From mboxrd@z Thu Jan 1 00:00:00 1970 -Received: from mail-pl1-f171.google.com (mail-pl1-f171.google.com [209.85.214.171]) - (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) - (No client certificate requested) - by smtp.subspace.kernel.org (Postfix) with ESMTPS id E21C8288505 - for ; Thu, 4 Jun 2026 04:33:28 +0000 (UTC) -Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.171 -ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; - t=1780547610; cv=none; b=etyZo0OyhUqjP7uilzMxrxpciaSPMfy/bjTlRJHKQAVZI7wfiKIcSseI0qLKxs+ZZVXjSBVb9XkRx6wv1J1tIhnX1B05x7wsAalhdNQ2U3MXPMry/UQyOqdm4dZCOXmgH7QyBgOj6R2Wut8H6BOXXL1xNBaepv3/mcpBY70BCHA= -ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; - s=arc-20240116; t=1780547610; c=relaxed/simple; - bh=znsYbCd3J/zBJf011rGd2IwHfSBduyyknRNq8tHCn3o=; - h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=LL42+GGikVgj/uqwqIGA6MOyAJ2UH8mIKVUrBuOZeDUP0W7r1OSGkX3MVBDGP4RdtMa1POOtKgZKq3HmV4cukhDmptrDr4/apZewmR6iiuVkE/5npQPI3uvRDToL7+1tLQiEInfsIhepbOeJhKJVN9ooBQc0vsM0BqfLIKuVAUE= -ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=IpyqsAnz; arc=none smtp.client-ip=209.85.214.171 -Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com -Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com -Authentication-Results: smtp.subspace.kernel.org; - dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="IpyqsAnz" -Received: by mail-pl1-f171.google.com with SMTP id d9443c01a7336-2bf1f074a12so3135465ad.0 - for ; Wed, 03 Jun 2026 21:33:28 -0700 (PDT) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=gmail.com; s=20251104; t=1780547608; x=1781152408; darn=vger.kernel.org; - h=content-transfer-encoding:mime-version:message-id:date:subject:cc - :to:from:from:to:cc:subject:date:message-id:reply-to; - bh=nzzlPlmRDjR3Sm37Uj3XzYfzUGKs2aHK4Uo/5tRTKUQ=; - b=IpyqsAnzHBguWHykAHZ7XZ3pFVlC8Y28/fNGSwfIgWy6Hn0B9MSoyPYTISj79X2wBX - MNpWmG8arCfnNC/Un+B1pm/MYhwACbdblNMWEiBHx39rbz1VTTV1g2zCX1pCl9MavgT5 - hReYo62WmMHykCgwFieZcZ/M7+8+o2RvKACVDZc8Me+vF6Gb8u/pfz+8TpQ6r4ReU0i4 - oOwa+EyyFxO6zklNtjSJjf8SQz0NIFJG296oAalZzp33yIvB/4JFURNhizKwvkL48d31 - +M97V3QevBz2Fr4xs9npsNH2hhdWe+YyT34oEwlbtHqGpMyHqUbGXj8AXxFfKBgqxYAE - 9uxQ== -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20251104; t=1780547608; x=1781152408; - h=content-transfer-encoding:mime-version:message-id:date:subject:cc - :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date - :message-id:reply-to; - bh=nzzlPlmRDjR3Sm37Uj3XzYfzUGKs2aHK4Uo/5tRTKUQ=; - b=aYJeS8qfh/ocavnM0jpvlOpXjFo5GLLUgPkTCz1EqmZsHXRfeicLk1ZTho/CQs+zzB - c325qbG7oXLiPQ3dkZovafQDOMkAmALoEga/2xlfS1V9GLaLAdPP8kFvllumvAvPyMyg - o96U7iGqvBTCaRtUM2iwGIpDERtzzFrZR6Ce7y953zWEqabcC4+R8sGLodpGu4k+GmxK - 1S+jLF0vMBR27+5ZDaDl0oevhjBb2z0um04waB/wMdyCBE2fIqi2PdQqIVSR3SfRA6jQ - BTJQfJE3COEnHv3CFxB96oNuvI7DjRB06k3RI4ZLPMPtikPhTjXD/oRL9vRT1BYvx+9Q - 5T1Q== -X-Forwarded-Encrypted: i=1; AFNElJ9RQSSGteY/jh+TH8qQkMTRr2RrY74VLc0V8PJaR74DrpGzoCyYbVqjZCIMow6+zw2kzQwUxO/sijCpZ4Y=@vger.kernel.org -X-Gm-Message-State: AOJu0YwqtfHGNvtfQFSYlveHZ/f53XAwpOc2PXM0Fs/UwOmBIE0a8qel - SqMJ/WAyhlkR3QHUSRskvVfM+Shorkq5SE/o5/MZqQJqsYPIepLu19B7 -X-Gm-Gg: Acq92OEnoGF4ajpv1R0u26KX429aPMVUmLN/uIRHCUpeWQZ1YB3icXJkScnkgZCTJQd - 7yvQwTGjtk847ZsX64fH/pYvpTbdQTPpoh8H0WbsR41zh6wcFBbOJATd+qwuRPmetPoTXZeTTY6 - uyQhj75BwMCj3pp8/i7Cr2xDqih2EtoXXbS2AnOWUxORbhJ2ML04COV3pNvuSND4g/qRTleU6ib - zKWK6glAzpTp+eIEE3cZzuJV6fjy2rhxX9MR2z4mHe8BkI6kYDioGv4CnCFmXpZ80MbjKOlN7k/ - baOAAuFTy2uoYvtkhmt0kgAkd+gsh12vtrtGmNHCPaGeNIHn6qtUZVcmMpIUmTZ4F9RnSPv4CKw - NhL5m20J1urrYbQ2FAZf+Nur0izzWfTyKO78IvYkfK3m70cm6rL5i0lsjbQZ3tAK7FjfVqxYrsU - qzXoiA1z9Unam6tvdvJUtcPNNuy6d6uaBaY5krITunAVJ6hF/ym0XuOoSzF4UXRXcYTO09vgfTp - L0dwz3a1Fk8yIVWfFTVsQnDvsI9c6QZjP298LPpomNUl8ZcmxOaF2iJ -X-Received: by 2002:a17:903:1786:b0:2c0:c38d:9d37 with SMTP id d9443c01a7336-2c163d92f23mr64816865ad.25.1780547608050; - Wed, 03 Jun 2026 21:33:28 -0700 (PDT) -Received: from ryzen ([2601:644:8000:5b5d:7285:c2ff:fe45:8a32]) - by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c85df0a63b3sm3503663a12.21.2026.06.03.21.33.26 - (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Wed, 03 Jun 2026 21:33:27 -0700 (PDT) -From: Rosen Penev -To: linuxppc-dev@lists.ozlabs.org -Cc: Scott Wood , - Madhavan Srinivasan , - Michael Ellerman , - Nicholas Piggin , - "Christophe Leroy (CS GROUP)" , - Frank Li , - Li Yang , - linux-kernel@vger.kernel.org (open list) -Subject: [PATCH] powerpc/85xx: Add fsl,ifc to common device ids -Date: Wed, 3 Jun 2026 21:33:09 -0700 -Message-ID: <20260604043309.91280-1-rosenp@gmail.com> -X-Mailer: git-send-email 2.54.0 -Precedence: bulk -X-Mailing-List: linux-kernel@vger.kernel.org -List-Id: -List-Subscribe: -List-Unsubscribe: -MIME-Version: 1.0 -Content-Transfer-Encoding: 8bit - -Add fsl,ifc to mpc85xx_common_ids so that of_platform_bus_probe -creates a platform device for the IFC node even without 'simple-bus' -in its compatible property. On P1010 and similar platforms the IFC -node is a direct child of the root, so it must be explicitly matched -to be populated. - -Fixes: 0bf51cc9e9e5 ("powerpc: dts: mpc85xx: remove simple-bus compatible from ifc node") - -Assisted-by: opencode:big-pickle -Signed-off-by: Rosen Penev ---- - arch/powerpc/platforms/85xx/common.c | 2 ++ - 1 file changed, 2 insertions(+) - ---- a/arch/powerpc/platforms/85xx/common.c -+++ b/arch/powerpc/platforms/85xx/common.c -@@ -42,6 +42,8 @@ static const struct of_device_id mpc85xx - { .compatible = "fsl,qoriq-pcie-v2.3", }, - { .compatible = "fsl,qoriq-pcie-v2.2", }, - { .compatible = "fsl,fman", }, -+ /* IFC NAND and NOR controllers */ -+ { .compatible = "fsl,ifc", }, - {}, - }; - diff --git a/target/linux/generic/pending-6.12/402-mtd-spi-nor-write-support-for-minor-aligned-partitions.patch b/target/linux/generic/pending-6.12/402-mtd-spi-nor-write-support-for-minor-aligned-partitions.patch index 78c634ba249..b894dd976c2 100644 --- a/target/linux/generic/pending-6.12/402-mtd-spi-nor-write-support-for-minor-aligned-partitions.patch +++ b/target/linux/generic/pending-6.12/402-mtd-spi-nor-write-support-for-minor-aligned-partitions.patch @@ -80,7 +80,7 @@ Reported-by: Dan Carpenter --- a/drivers/mtd/mtdcore.c +++ b/drivers/mtd/mtdcore.c -@@ -199,6 +199,15 @@ static ssize_t mtd_erasesize_show(struct +@@ -208,6 +208,15 @@ static ssize_t mtd_erasesize_show(struct } MTD_DEVICE_ATTR_RO(erasesize); @@ -96,7 +96,7 @@ Reported-by: Dan Carpenter static ssize_t mtd_writesize_show(struct device *dev, struct device_attribute *attr, char *buf) { -@@ -344,6 +353,7 @@ static struct attribute *mtd_attrs[] = { +@@ -353,6 +362,7 @@ static struct attribute *mtd_attrs[] = { &dev_attr_flags.attr, &dev_attr_size.attr, &dev_attr_erasesize.attr, diff --git a/target/linux/generic/pending-6.12/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch b/target/linux/generic/pending-6.12/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch index 0d69783990b..86635cfd4e1 100644 --- a/target/linux/generic/pending-6.12/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch +++ b/target/linux/generic/pending-6.12/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 *src_net, struct net_device *dev, -@@ -2088,6 +2307,12 @@ static void ip6_tnl_dellink(struct net_d +@@ -2091,6 +2310,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) + -@@ -2117,6 +2342,24 @@ static size_t ip6_tnl_get_size(const str +@@ -2120,6 +2345,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; } -@@ -2124,6 +2367,9 @@ static int ip6_tnl_fill_info(struct sk_b +@@ -2127,6 +2370,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) || -@@ -2133,9 +2379,27 @@ static int ip6_tnl_fill_info(struct sk_b +@@ -2136,9 +2382,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) || -@@ -2175,6 +2439,7 @@ static const struct nla_policy ip6_tnl_p +@@ -2178,6 +2442,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.12/700-netfilter-nft_flow_offload-handle-netdevice-events-f.patch b/target/linux/generic/pending-6.12/700-netfilter-nft_flow_offload-handle-netdevice-events-f.patch index 59868b2a535..090bfe9b0a9 100644 --- a/target/linux/generic/pending-6.12/700-netfilter-nft_flow_offload-handle-netdevice-events-f.patch +++ b/target/linux/generic/pending-6.12/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 +@@ -493,47 +493,14 @@ static struct nft_expr_type nft_flow_off .owner = THIS_MODULE, }; diff --git a/target/linux/generic/pending-6.12/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch b/target/linux/generic/pending-6.12/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch index d07b282e25d..cc72006ebfa 100644 --- a/target/linux/generic/pending-6.12/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch +++ b/target/linux/generic/pending-6.12/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 -@@ -8724,7 +8724,7 @@ static int nft_register_flowtable_net_ho +@@ -8508,7 +8508,7 @@ static int nft_register_flowtable_net_ho err = flowtable->data.type->setup(&flowtable->data, hook->ops.dev, FLOW_BLOCK_BIND); diff --git a/target/linux/generic/pending-6.12/738-02-net-ethernet-mtk_eth_soc-do-not-enable-page-pool-sta.patch b/target/linux/generic/pending-6.12/738-02-net-ethernet-mtk_eth_soc-do-not-enable-page-pool-sta.patch index d3bde406558..8582199c1e5 100644 --- a/target/linux/generic/pending-6.12/738-02-net-ethernet-mtk_eth_soc-do-not-enable-page-pool-sta.patch +++ b/target/linux/generic/pending-6.12/738-02-net-ethernet-mtk_eth_soc-do-not-enable-page-pool-sta.patch @@ -15,7 +15,7 @@ Signed-off-by: Felix Fietkau --- a/drivers/net/ethernet/mediatek/Kconfig +++ b/drivers/net/ethernet/mediatek/Kconfig -@@ -26,7 +26,6 @@ config NET_MEDIATEK_SOC +@@ -18,7 +18,6 @@ config NET_MEDIATEK_SOC select PHYLINK select DIMLIB select PAGE_POOL diff --git a/target/linux/generic/pending-6.12/834-ledtrig-libata.patch b/target/linux/generic/pending-6.12/834-ledtrig-libata.patch index ea8f34ae853..88e206b0698 100644 --- a/target/linux/generic/pending-6.12/834-ledtrig-libata.patch +++ b/target/linux/generic/pending-6.12/834-ledtrig-libata.patch @@ -63,7 +63,7 @@ Signed-off-by: Daniel Golle /** * ata_build_rw_tf - Build ATA taskfile for given read/write request * @qc: Metadata associated with the taskfile to build -@@ -4827,6 +4838,9 @@ void __ata_qc_complete(struct ata_queued +@@ -4845,6 +4856,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 && -@@ -5556,6 +5570,9 @@ struct ata_port *ata_port_alloc(struct a +@@ -5574,6 +5588,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); -@@ -5572,6 +5589,12 @@ void ata_port_free(struct ata_port *ap) +@@ -5590,6 +5607,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); -@@ -5976,7 +5999,23 @@ int ata_host_register(struct ata_host *h +@@ -5994,7 +6017,23 @@ int ata_host_register(struct ata_host *h WARN_ON(1); return -EINVAL; } diff --git a/target/linux/generic/pending-6.12/920-mangle_bootargs.patch b/target/linux/generic/pending-6.12/920-mangle_bootargs.patch index 636bf8f90e4..c2c41d8b137 100644 --- a/target/linux/generic/pending-6.12/920-mangle_bootargs.patch +++ b/target/linux/generic/pending-6.12/920-mangle_bootargs.patch @@ -13,7 +13,7 @@ Signed-off-by: Imre Kaloz --- a/init/Kconfig +++ b/init/Kconfig -@@ -1891,6 +1891,15 @@ config ARCH_HAS_MEMBARRIER_CALLBACKS +@@ -1894,6 +1894,15 @@ config ARCH_HAS_MEMBARRIER_CALLBACKS config ARCH_HAS_MEMBARRIER_SYNC_CORE bool @@ -31,7 +31,7 @@ Signed-off-by: Imre Kaloz help --- a/init/main.c +++ b/init/main.c -@@ -633,6 +633,29 @@ static inline void setup_nr_cpu_ids(void +@@ -588,6 +588,29 @@ static inline void setup_nr_cpu_ids(void static inline void smp_prepare_cpus(unsigned int maxcpus) { } #endif @@ -61,7 +61,7 @@ Signed-off-by: Imre Kaloz /* * We need to store the untouched command line for future reference. * We also need to store the touched command line since the parameter -@@ -938,6 +961,7 @@ void start_kernel(void) +@@ -893,6 +916,7 @@ void start_kernel(void) jump_label_init(); static_call_init(); early_security_init(); diff --git a/target/linux/ipq806x/patches-6.12/902-ARM-decompressor-support-for-ATAGs-rootblock-parsing.patch b/target/linux/ipq806x/patches-6.12/902-ARM-decompressor-support-for-ATAGs-rootblock-parsing.patch index 7f008f6baf1..3697ed79fbc 100644 --- a/target/linux/ipq806x/patches-6.12/902-ARM-decompressor-support-for-ATAGs-rootblock-parsing.patch +++ b/target/linux/ipq806x/patches-6.12/902-ARM-decompressor-support-for-ATAGs-rootblock-parsing.patch @@ -177,7 +177,7 @@ Signed-off-by: Christian Marangi #include #include #include -@@ -972,6 +973,17 @@ void start_kernel(void) +@@ -927,6 +928,17 @@ void start_kernel(void) pr_notice("Kernel command line: %s\n", saved_command_line); /* parameters may set static keys */ diff --git a/target/linux/siflower/patches-6.12/020-net-ethernet-add-support-for-Siflower-DPNS.patch b/target/linux/siflower/patches-6.12/020-net-ethernet-add-support-for-Siflower-DPNS.patch index d101e07676f..21247c20641 100644 --- a/target/linux/siflower/patches-6.12/020-net-ethernet-add-support-for-Siflower-DPNS.patch +++ b/target/linux/siflower/patches-6.12/020-net-ethernet-add-support-for-Siflower-DPNS.patch @@ -11,7 +11,7 @@ Signed-off-by: haoming.chen --- a/drivers/net/ethernet/Kconfig +++ b/drivers/net/ethernet/Kconfig -@@ -201,5 +201,6 @@ source "drivers/net/ethernet/wangxun/Kco +@@ -202,5 +202,6 @@ source "drivers/net/ethernet/wangxun/Kco source "drivers/net/ethernet/wiznet/Kconfig" source "drivers/net/ethernet/xilinx/Kconfig" source "drivers/net/ethernet/xircom/Kconfig" @@ -20,7 +20,7 @@ Signed-off-by: haoming.chen endif # ETHERNET --- a/drivers/net/ethernet/Makefile +++ b/drivers/net/ethernet/Makefile -@@ -105,4 +105,5 @@ obj-$(CONFIG_NET_VENDOR_XILINX) += xilin +@@ -106,4 +106,5 @@ obj-$(CONFIG_NET_VENDOR_XILINX) += xilin obj-$(CONFIG_NET_VENDOR_XIRCOM) += xircom/ obj-$(CONFIG_NET_VENDOR_SYNOPSYS) += synopsys/ obj-$(CONFIG_NET_VENDOR_PENSANDO) += pensando/