From: Shiji Yang Date: Sat, 10 May 2025 15:52:16 +0000 (+0800) Subject: kernel: bump 6.6 to 6.6.90 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F18775%2Fhead;p=thirdparty%2Fopenwrt.git kernel: bump 6.6 to 6.6.90 Remove upstreamed patches: bcm27xx/patches-6.6/950-0481-xhci-Use-more-event-ring-segment-table-entries.patch [1] pending-6.6/691-net-ipv6-fix-UDPv6-GSO-segmentation-with-NAT.patch [2] Manually rebased patches: generic/hack-6.6/781-usb-net-rndis-support-asr.patch [3] [1] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.90&id=f377434945f528217e65fc5b18781caeba19ce72 [2] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.90&id=e0272844995aff8cbf2cc88b78c2b35ca51eda43 [3] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.90&id=222b6685efe0d8c1cdb078a67bbe806f56d18f94 Signed-off-by: Shiji Yang Link: https://github.com/openwrt/openwrt/pull/18775 Signed-off-by: Hauke Mehrtens --- diff --git a/target/linux/bcm27xx/patches-6.6/950-0161-xhci-implement-xhci_fixup_endpoint-for-interval-adju.patch b/target/linux/bcm27xx/patches-6.6/950-0161-xhci-implement-xhci_fixup_endpoint-for-interval-adju.patch index 157fedf2708..886391d46f2 100644 --- a/target/linux/bcm27xx/patches-6.6/950-0161-xhci-implement-xhci_fixup_endpoint-for-interval-adju.patch +++ b/target/linux/bcm27xx/patches-6.6/950-0161-xhci-implement-xhci_fixup_endpoint-for-interval-adju.patch @@ -15,7 +15,7 @@ Signed-off-by: Jonathan Bell --- a/drivers/usb/host/xhci.c +++ b/drivers/usb/host/xhci.c -@@ -1498,6 +1498,109 @@ command_cleanup: +@@ -1524,6 +1524,109 @@ command_cleanup: } /* @@ -125,7 +125,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 */ -@@ -5360,6 +5463,7 @@ static const struct hc_driver xhci_hc_dr +@@ -5386,6 +5489,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.6/950-0163-usb-xhci-drop-and-add-the-endpoint-context-in-xhci_f.patch b/target/linux/bcm27xx/patches-6.6/950-0163-usb-xhci-drop-and-add-the-endpoint-context-in-xhci_f.patch index 70401f6e7b5..b5c72fb89f0 100644 --- a/target/linux/bcm27xx/patches-6.6/950-0163-usb-xhci-drop-and-add-the-endpoint-context-in-xhci_f.patch +++ b/target/linux/bcm27xx/patches-6.6/950-0163-usb-xhci-drop-and-add-the-endpoint-context-in-xhci_f.patch @@ -19,7 +19,7 @@ Signed-off-by: Jonathan Bell --- a/drivers/usb/host/xhci.c +++ b/drivers/usb/host/xhci.c -@@ -1587,7 +1587,7 @@ static void xhci_fixup_endpoint(struct u +@@ -1613,7 +1613,7 @@ static void xhci_fixup_endpoint(struct u return; } ctrl_ctx->add_flags = xhci_get_endpoint_flag_from_index(ep_index); diff --git a/target/linux/bcm27xx/patches-6.6/950-0481-xhci-Use-more-event-ring-segment-table-entries.patch b/target/linux/bcm27xx/patches-6.6/950-0481-xhci-Use-more-event-ring-segment-table-entries.patch deleted file mode 100644 index 874725601c1..00000000000 --- a/target/linux/bcm27xx/patches-6.6/950-0481-xhci-Use-more-event-ring-segment-table-entries.patch +++ /dev/null @@ -1,66 +0,0 @@ -From d631e7354399aa2fb6079b72f515acd6d080c203 Mon Sep 17 00:00:00 2001 -From: Jonathan Bell -Date: Thu, 13 Jul 2023 14:43:21 +0100 -Subject: [PATCH 0481/1085] xhci: Use more event ring segment table entries - -Users have reported log spam created by "Event Ring Full" xHC event -TRBs. These are caused by interrupt latency in conjunction with a very -busy set of devices on the bus. The errors are benign, but throughput -will suffer as the xHC will pause processing of transfers until the -event ring is drained by the kernel. Expand the number of event TRB slots -available by increasing the number of event ring segments in the ERST. - -Controllers have a hardware-defined limit as to the number of ERST -entries they can process, so make the actual number in use -min(ERST_MAX_SEGS, hw_max). - -Signed-off-by: Jonathan Bell ---- - drivers/usb/host/xhci-mem.c | 9 +++++++-- - drivers/usb/host/xhci.h | 5 +++-- - 2 files changed, 10 insertions(+), 4 deletions(-) - ---- a/drivers/usb/host/xhci-mem.c -+++ b/drivers/usb/host/xhci-mem.c -@@ -2241,12 +2241,17 @@ xhci_alloc_interrupter(struct xhci_hcd * - struct device *dev = xhci_to_hcd(xhci)->self.sysdev; - struct xhci_interrupter *ir; - int ret; -+ unsigned int nr_event_segs; - - ir = kzalloc_node(sizeof(*ir), flags, dev_to_node(dev)); - if (!ir) - return NULL; - -- ir->event_ring = xhci_ring_alloc(xhci, ERST_NUM_SEGS, 1, TYPE_EVENT, -+ nr_event_segs = min_t(unsigned int, -+ 1 << HCS_ERST_MAX(xhci->hcs_params2), -+ ERST_MAX_SEGS); -+ -+ ir->event_ring = xhci_ring_alloc(xhci, nr_event_segs, 1, TYPE_EVENT, - 0, flags); - if (!ir->event_ring) { - xhci_warn(xhci, "Failed to allocate interrupter event ring\n"); -@@ -2283,7 +2288,7 @@ xhci_add_interrupter(struct xhci_hcd *xh - /* set ERST count with the number of entries in the segment table */ - erst_size = readl(&ir->ir_set->erst_size); - erst_size &= ERST_SIZE_MASK; -- erst_size |= ERST_NUM_SEGS; -+ erst_size |= ir->event_ring->num_segs; - writel(erst_size, &ir->ir_set->erst_size); - - erst_base = xhci_read_64(xhci, &ir->ir_set->erst_base); ---- a/drivers/usb/host/xhci.h -+++ b/drivers/usb/host/xhci.h -@@ -1426,8 +1426,9 @@ struct urb_priv { - * Each segment table entry is 4*32bits long. 1K seems like an ok size: - * (1K bytes * 8bytes/bit) / (4*32 bits) = 64 segment entries in the table, - * meaning 64 ring segments. -- * Initial allocated size of the ERST, in number of entries */ --#define ERST_NUM_SEGS 1 -+ */ -+/* Maximum number of segments in the ERST */ -+#define ERST_MAX_SEGS 8 - /* Poll every 60 seconds */ - #define POLL_TIMEOUT 60 - /* Stop endpoint command timeout (secs) for URB cancellation watchdog timer */ diff --git a/target/linux/bcm27xx/patches-6.6/950-0482-xhci-quirks-add-link-TRB-quirk-for-VL805.patch b/target/linux/bcm27xx/patches-6.6/950-0482-xhci-quirks-add-link-TRB-quirk-for-VL805.patch index e295c225f78..7ab01e4623a 100644 --- a/target/linux/bcm27xx/patches-6.6/950-0482-xhci-quirks-add-link-TRB-quirk-for-VL805.patch +++ b/target/linux/bcm27xx/patches-6.6/950-0482-xhci-quirks-add-link-TRB-quirk-for-VL805.patch @@ -52,7 +52,7 @@ Signed-off-by: Jonathan Bell addr = xhci_trb_virt_to_dma(new_seg, new_deq); --- a/drivers/usb/host/xhci.h +++ b/drivers/usb/host/xhci.h -@@ -1664,6 +1664,9 @@ struct xhci_hcd { +@@ -1660,6 +1660,9 @@ struct xhci_hcd { #define XHCI_CDNS_SCTX_QUIRK BIT_ULL(48) #define XHCI_ETRON_HOST BIT_ULL(49) diff --git a/target/linux/bcm27xx/patches-6.6/950-0484-usb-xhci-add-VLI_SS_BULK_OUT_BUG-quirk.patch b/target/linux/bcm27xx/patches-6.6/950-0484-usb-xhci-add-VLI_SS_BULK_OUT_BUG-quirk.patch index b6cfc1b7a88..cad297ab739 100644 --- a/target/linux/bcm27xx/patches-6.6/950-0484-usb-xhci-add-VLI_SS_BULK_OUT_BUG-quirk.patch +++ b/target/linux/bcm27xx/patches-6.6/950-0484-usb-xhci-add-VLI_SS_BULK_OUT_BUG-quirk.patch @@ -34,7 +34,7 @@ Signed-off-by: Jonathan Bell --- a/drivers/usb/host/xhci-mem.c +++ b/drivers/usb/host/xhci-mem.c -@@ -1400,6 +1400,7 @@ int xhci_endpoint_init(struct xhci_hcd * +@@ -1405,6 +1405,7 @@ int xhci_endpoint_init(struct xhci_hcd * unsigned int ep_index; struct xhci_ep_ctx *ep_ctx; struct xhci_ring *ep_ring; @@ -42,7 +42,7 @@ Signed-off-by: Jonathan Bell unsigned int max_packet; enum xhci_ring_type ring_type; u32 max_esit_payload; -@@ -1409,6 +1410,8 @@ int xhci_endpoint_init(struct xhci_hcd * +@@ -1414,6 +1415,8 @@ int xhci_endpoint_init(struct xhci_hcd * unsigned int mult; unsigned int avg_trb_len; unsigned int err_count = 0; @@ -51,7 +51,7 @@ Signed-off-by: Jonathan Bell ep_index = xhci_get_endpoint_index(&ep->desc); ep_ctx = xhci_get_ep_ctx(xhci, virt_dev->in_ctx, ep_index); -@@ -1440,9 +1443,35 @@ int xhci_endpoint_init(struct xhci_hcd * +@@ -1445,9 +1448,35 @@ int xhci_endpoint_init(struct xhci_hcd * mult = xhci_get_endpoint_mult(udev, ep); max_packet = usb_endpoint_maxp(&ep->desc); @@ -100,7 +100,7 @@ Signed-off-by: Jonathan Bell if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA && --- a/drivers/usb/host/xhci.h +++ b/drivers/usb/host/xhci.h -@@ -1666,6 +1666,7 @@ struct xhci_hcd { +@@ -1662,6 +1662,7 @@ struct xhci_hcd { /* Downstream VLI fixes */ #define XHCI_AVOID_DQ_ON_LINK BIT_ULL(56) diff --git a/target/linux/bcm27xx/patches-6.6/950-0485-usb-xhci-add-XHCI_VLI_HUB_TT_QUIRK.patch b/target/linux/bcm27xx/patches-6.6/950-0485-usb-xhci-add-XHCI_VLI_HUB_TT_QUIRK.patch index 5ab3a223969..e1c96d25bb2 100644 --- a/target/linux/bcm27xx/patches-6.6/950-0485-usb-xhci-add-XHCI_VLI_HUB_TT_QUIRK.patch +++ b/target/linux/bcm27xx/patches-6.6/950-0485-usb-xhci-add-XHCI_VLI_HUB_TT_QUIRK.patch @@ -144,7 +144,7 @@ Signed-off-by: Jonathan Bell return 0; --- a/drivers/usb/host/xhci.h +++ b/drivers/usb/host/xhci.h -@@ -1667,6 +1667,7 @@ struct xhci_hcd { +@@ -1663,6 +1663,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.6/950-1021-module-Avoid-ABI-changes-when-debug-info-is-disabled.patch b/target/linux/bcm27xx/patches-6.6/950-1021-module-Avoid-ABI-changes-when-debug-info-is-disabled.patch index 99b153d0bed..8ea7e963866 100644 --- a/target/linux/bcm27xx/patches-6.6/950-1021-module-Avoid-ABI-changes-when-debug-info-is-disabled.patch +++ b/target/linux/bcm27xx/patches-6.6/950-1021-module-Avoid-ABI-changes-when-debug-info-is-disabled.patch @@ -15,7 +15,7 @@ Define these members unconditionally, so that there is no ABI change. --- a/include/linux/module.h +++ b/include/linux/module.h -@@ -510,7 +510,7 @@ struct module { +@@ -512,7 +512,7 @@ struct module { unsigned int num_bpf_raw_events; struct bpf_raw_event_map *bpf_raw_events; #endif diff --git a/target/linux/bcm27xx/patches-6.6/950-1377-drivers-usb-xhci-set-HID-bit-in-streaming-endpoint-c.patch b/target/linux/bcm27xx/patches-6.6/950-1377-drivers-usb-xhci-set-HID-bit-in-streaming-endpoint-c.patch index 230537f5056..fc004dc57d3 100644 --- a/target/linux/bcm27xx/patches-6.6/950-1377-drivers-usb-xhci-set-HID-bit-in-streaming-endpoint-c.patch +++ b/target/linux/bcm27xx/patches-6.6/950-1377-drivers-usb-xhci-set-HID-bit-in-streaming-endpoint-c.patch @@ -28,7 +28,7 @@ Signed-off-by: Jonathan Bell --- a/drivers/usb/host/xhci-mem.c +++ b/drivers/usb/host/xhci-mem.c -@@ -716,6 +716,14 @@ void xhci_setup_streams_ep_input_ctx(str +@@ -721,6 +721,14 @@ void xhci_setup_streams_ep_input_ctx(str ep_ctx->ep_info &= cpu_to_le32(~EP_MAXPSTREAMS_MASK); ep_ctx->ep_info |= cpu_to_le32(EP_MAXPSTREAMS(max_primary_streams) | EP_HAS_LSA); diff --git a/target/linux/bcm53xx/patches-6.6/180-usb-xhci-add-support-for-performing-fake-doorbell.patch b/target/linux/bcm53xx/patches-6.6/180-usb-xhci-add-support-for-performing-fake-doorbell.patch index aef84351482..5886cef55ad 100644 --- a/target/linux/bcm53xx/patches-6.6/180-usb-xhci-add-support-for-performing-fake-doorbell.patch +++ b/target/linux/bcm53xx/patches-6.6/180-usb-xhci-add-support-for-performing-fake-doorbell.patch @@ -85,7 +85,7 @@ it on BCM4708 family. /* * Reset a halted HC. * -@@ -481,6 +524,15 @@ static int xhci_run_finished(struct xhci +@@ -498,6 +541,15 @@ static int xhci_run_finished(struct xhci return -ENODEV; } @@ -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 -@@ -1662,6 +1662,7 @@ struct xhci_hcd { +@@ -1659,6 +1659,7 @@ struct xhci_hcd { #define XHCI_WRITE_64_HI_LO BIT_ULL(47) #define XHCI_CDNS_SCTX_QUIRK BIT_ULL(48) #define XHCI_ETRON_HOST BIT_ULL(49) diff --git a/target/linux/generic/backport-6.6/611-01-v6.11-udp-Allow-GSO-transmit-from-devices-with-no-checksum.patch b/target/linux/generic/backport-6.6/611-01-v6.11-udp-Allow-GSO-transmit-from-devices-with-no-checksum.patch index d1673ec7d4a..4cafd27fdcd 100644 --- a/target/linux/generic/backport-6.6/611-01-v6.11-udp-Allow-GSO-transmit-from-devices-with-no-checksum.patch +++ b/target/linux/generic/backport-6.6/611-01-v6.11-udp-Allow-GSO-transmit-from-devices-with-no-checksum.patch @@ -65,7 +65,7 @@ Signed-off-by: Jakub Kicinski } --- a/net/ipv4/udp_offload.c +++ b/net/ipv4/udp_offload.c -@@ -384,6 +384,14 @@ struct sk_buff *__udp_gso_segment(struct +@@ -443,6 +443,14 @@ struct sk_buff *__udp_gso_segment(struct else uh->check = gso_make_checksum(seg, ~check) ? : CSUM_MANGLED_0; diff --git a/target/linux/generic/backport-6.6/611-03-v6.11-udp-Fall-back-to-software-USO-if-IPv6-extension-head.patch b/target/linux/generic/backport-6.6/611-03-v6.11-udp-Fall-back-to-software-USO-if-IPv6-extension-head.patch index e8eceb880c8..d3df5162ac6 100644 --- a/target/linux/generic/backport-6.6/611-03-v6.11-udp-Fall-back-to-software-USO-if-IPv6-extension-head.patch +++ b/target/linux/generic/backport-6.6/611-03-v6.11-udp-Fall-back-to-software-USO-if-IPv6-extension-head.patch @@ -71,7 +71,7 @@ Signed-off-by: Jakub Kicinski --- a/net/ipv4/udp_offload.c +++ b/net/ipv4/udp_offload.c -@@ -283,6 +283,12 @@ struct sk_buff *__udp_gso_segment(struct +@@ -342,6 +342,12 @@ struct sk_buff *__udp_gso_segment(struct !(skb_shinfo(gso_skb)->gso_type & SKB_GSO_FRAGLIST))) return ERR_PTR(-EINVAL); diff --git a/target/linux/generic/backport-6.6/621-v6.10-01-net-move-skb_gro_receive_list-from-udp-to-core.patch b/target/linux/generic/backport-6.6/621-v6.10-01-net-move-skb_gro_receive_list-from-udp-to-core.patch index 2e3b3fe12e4..3904662d1a7 100644 --- a/target/linux/generic/backport-6.6/621-v6.10-01-net-move-skb_gro_receive_list-from-udp-to-core.patch +++ b/target/linux/generic/backport-6.6/621-v6.10-01-net-move-skb_gro_receive_list-from-udp-to-core.patch @@ -65,7 +65,7 @@ Signed-off-by: Paolo Abeni { --- a/net/ipv4/udp_offload.c +++ b/net/ipv4/udp_offload.c -@@ -474,33 +474,6 @@ out: +@@ -533,33 +533,6 @@ out: return segs; } diff --git a/target/linux/generic/backport-6.6/751-01-v6.8-net-ethernet-mediatek-split-tx-and-rx-fields-in-mtk_.patch b/target/linux/generic/backport-6.6/751-01-v6.8-net-ethernet-mediatek-split-tx-and-rx-fields-in-mtk_.patch index 8fb4b6fef53..ab12cc925fe 100644 --- a/target/linux/generic/backport-6.6/751-01-v6.8-net-ethernet-mediatek-split-tx-and-rx-fields-in-mtk_.patch +++ b/target/linux/generic/backport-6.6/751-01-v6.8-net-ethernet-mediatek-split-tx-and-rx-fields-in-mtk_.patch @@ -167,7 +167,7 @@ Signed-off-by: Jakub Kicinski skb->ip_summed = CHECKSUM_UNNECESSARY; else skb_checksum_none_assert(skb); -@@ -2276,7 +2276,7 @@ static int mtk_poll_tx_qdma(struct mtk_e +@@ -2280,7 +2280,7 @@ static int mtk_poll_tx_qdma(struct mtk_e break; tx_buf = mtk_desc_to_tx_buf(ring, desc, @@ -176,7 +176,7 @@ Signed-off-by: Jakub Kicinski if (!tx_buf->data) break; -@@ -2327,7 +2327,7 @@ static int mtk_poll_tx_pdma(struct mtk_e +@@ -2331,7 +2331,7 @@ static int mtk_poll_tx_pdma(struct mtk_e } mtk_tx_unmap(eth, tx_buf, &bq, true); @@ -185,7 +185,7 @@ Signed-off-by: Jakub Kicinski ring->last_free = desc; atomic_inc(&ring->free_count); -@@ -2417,7 +2417,7 @@ static int mtk_napi_rx(struct napi_struc +@@ -2421,7 +2421,7 @@ static int mtk_napi_rx(struct napi_struc do { int rx_done; @@ -194,7 +194,7 @@ Signed-off-by: Jakub Kicinski reg_map->pdma.irq_status); rx_done = mtk_poll_rx(napi, budget - rx_done_total, eth); rx_done_total += rx_done; -@@ -2433,10 +2433,10 @@ static int mtk_napi_rx(struct napi_struc +@@ -2437,10 +2437,10 @@ static int mtk_napi_rx(struct napi_struc return budget; } while (mtk_r32(eth, reg_map->pdma.irq_status) & @@ -207,7 +207,7 @@ Signed-off-by: Jakub Kicinski return rx_done_total; } -@@ -2445,7 +2445,7 @@ static int mtk_tx_alloc(struct mtk_eth * +@@ -2449,7 +2449,7 @@ static int mtk_tx_alloc(struct mtk_eth * { const struct mtk_soc_data *soc = eth->soc; struct mtk_tx_ring *ring = ð->tx_ring; @@ -216,7 +216,7 @@ Signed-off-by: Jakub Kicinski struct mtk_tx_dma_v2 *txd; int ring_size; u32 ofs, val; -@@ -2568,14 +2568,14 @@ static void mtk_tx_clean(struct mtk_eth +@@ -2572,14 +2572,14 @@ static void mtk_tx_clean(struct mtk_eth } if (!MTK_HAS_CAPS(soc->caps, MTK_SRAM) && ring->dma) { dma_free_coherent(eth->dma_dev, @@ -233,7 +233,7 @@ Signed-off-by: Jakub Kicinski ring->dma_pdma, ring->phys_pdma); ring->dma_pdma = NULL; } -@@ -2630,15 +2630,15 @@ static int mtk_rx_alloc(struct mtk_eth * +@@ -2634,15 +2634,15 @@ static int mtk_rx_alloc(struct mtk_eth * if (!MTK_HAS_CAPS(eth->soc->caps, MTK_SRAM) || rx_flag != MTK_RX_FLAGS_NORMAL) { ring->dma = dma_alloc_coherent(eth->dma_dev, @@ -253,7 +253,7 @@ Signed-off-by: Jakub Kicinski } if (!ring->dma) -@@ -2649,7 +2649,7 @@ static int mtk_rx_alloc(struct mtk_eth * +@@ -2653,7 +2653,7 @@ static int mtk_rx_alloc(struct mtk_eth * dma_addr_t dma_addr; void *data; @@ -262,7 +262,7 @@ Signed-off-by: Jakub Kicinski if (ring->page_pool) { data = mtk_page_pool_get_buff(ring->page_pool, &dma_addr, GFP_KERNEL); -@@ -2740,7 +2740,7 @@ static void mtk_rx_clean(struct mtk_eth +@@ -2744,7 +2744,7 @@ static void mtk_rx_clean(struct mtk_eth if (!ring->data[i]) continue; @@ -271,7 +271,7 @@ Signed-off-by: Jakub Kicinski if (!rxd->rxd1) continue; -@@ -2757,7 +2757,7 @@ static void mtk_rx_clean(struct mtk_eth +@@ -2761,7 +2761,7 @@ static void mtk_rx_clean(struct mtk_eth if (!in_sram && ring->dma) { dma_free_coherent(eth->dma_dev, @@ -280,7 +280,7 @@ Signed-off-by: Jakub Kicinski ring->dma, ring->phys); ring->dma = NULL; } -@@ -3120,7 +3120,7 @@ static void mtk_dma_free(struct mtk_eth +@@ -3124,7 +3124,7 @@ static void mtk_dma_free(struct mtk_eth netdev_reset_queue(eth->netdev[i]); if (!MTK_HAS_CAPS(soc->caps, MTK_SRAM) && eth->scratch_ring) { dma_free_coherent(eth->dma_dev, @@ -289,7 +289,7 @@ Signed-off-by: Jakub Kicinski eth->scratch_ring, eth->phy_scratch_ring); eth->scratch_ring = NULL; eth->phy_scratch_ring = 0; -@@ -3170,7 +3170,7 @@ static irqreturn_t mtk_handle_irq_rx(int +@@ -3174,7 +3174,7 @@ static irqreturn_t mtk_handle_irq_rx(int eth->rx_events++; if (likely(napi_schedule_prep(ð->rx_napi))) { @@ -298,7 +298,7 @@ Signed-off-by: Jakub Kicinski __napi_schedule(ð->rx_napi); } -@@ -3196,9 +3196,9 @@ static irqreturn_t mtk_handle_irq(int ir +@@ -3200,9 +3200,9 @@ static irqreturn_t mtk_handle_irq(int ir const struct mtk_reg_map *reg_map = eth->soc->reg_map; if (mtk_r32(eth, reg_map->pdma.irq_mask) & @@ -310,7 +310,7 @@ Signed-off-by: Jakub Kicinski mtk_handle_irq_rx(irq, _eth); } if (mtk_r32(eth, reg_map->tx_irq_mask) & MTK_TX_DONE_INT) { -@@ -3216,10 +3216,10 @@ static void mtk_poll_controller(struct n +@@ -3220,10 +3220,10 @@ static void mtk_poll_controller(struct n struct mtk_eth *eth = mac->hw; mtk_tx_irq_disable(eth, MTK_TX_DONE_INT); @@ -323,7 +323,7 @@ Signed-off-by: Jakub Kicinski } #endif -@@ -3383,7 +3383,7 @@ static int mtk_open(struct net_device *d +@@ -3387,7 +3387,7 @@ static int mtk_open(struct net_device *d napi_enable(ð->tx_napi); napi_enable(ð->rx_napi); mtk_tx_irq_enable(eth, MTK_TX_DONE_INT); @@ -332,7 +332,7 @@ Signed-off-by: Jakub Kicinski refcount_set(ð->dma_refcnt, 1); } else -@@ -3467,7 +3467,7 @@ static int mtk_stop(struct net_device *d +@@ -3471,7 +3471,7 @@ static int mtk_stop(struct net_device *d mtk_gdm_config(eth, MTK_GDMA_DROP_ALL); mtk_tx_irq_disable(eth, MTK_TX_DONE_INT); @@ -341,7 +341,7 @@ Signed-off-by: Jakub Kicinski napi_disable(ð->tx_napi); napi_disable(ð->rx_napi); -@@ -3943,9 +3943,9 @@ static int mtk_hw_init(struct mtk_eth *e +@@ -3947,9 +3947,9 @@ static int mtk_hw_init(struct mtk_eth *e /* FE int grouping */ mtk_w32(eth, MTK_TX_DONE_INT, reg_map->pdma.int_grp); @@ -353,7 +353,7 @@ Signed-off-by: Jakub Kicinski mtk_w32(eth, 0x21021000, MTK_FE_INT_GRP); if (mtk_is_netsys_v3_or_greater(eth)) { -@@ -5053,11 +5053,15 @@ static const struct mtk_soc_data mt2701_ +@@ -5057,11 +5057,15 @@ static const struct mtk_soc_data mt2701_ .required_clks = MT7623_CLKS_BITMAP, .required_pctl = true, .version = 1, @@ -374,7 +374,7 @@ Signed-off-by: Jakub Kicinski .dma_max_len = MTK_TX_DMA_BUF_LEN, .dma_len_offset = 16, }, -@@ -5073,11 +5077,15 @@ static const struct mtk_soc_data mt7621_ +@@ -5077,11 +5081,15 @@ static const struct mtk_soc_data mt7621_ .offload_version = 1, .hash_offset = 2, .foe_entry_size = MTK_FOE_ENTRY_V1_SIZE, @@ -395,7 +395,7 @@ Signed-off-by: Jakub Kicinski .dma_max_len = MTK_TX_DMA_BUF_LEN, .dma_len_offset = 16, }, -@@ -5095,11 +5103,15 @@ static const struct mtk_soc_data mt7622_ +@@ -5099,11 +5107,15 @@ static const struct mtk_soc_data mt7622_ .hash_offset = 2, .has_accounting = true, .foe_entry_size = MTK_FOE_ENTRY_V1_SIZE, @@ -416,7 +416,7 @@ Signed-off-by: Jakub Kicinski .dma_max_len = MTK_TX_DMA_BUF_LEN, .dma_len_offset = 16, }, -@@ -5116,11 +5128,15 @@ static const struct mtk_soc_data mt7623_ +@@ -5120,11 +5132,15 @@ static const struct mtk_soc_data mt7623_ .hash_offset = 2, .foe_entry_size = MTK_FOE_ENTRY_V1_SIZE, .disable_pll_modes = true, @@ -437,7 +437,7 @@ Signed-off-by: Jakub Kicinski .dma_max_len = MTK_TX_DMA_BUF_LEN, .dma_len_offset = 16, }, -@@ -5135,11 +5151,15 @@ static const struct mtk_soc_data mt7629_ +@@ -5139,11 +5155,15 @@ static const struct mtk_soc_data mt7629_ .required_pctl = false, .has_accounting = true, .version = 1, @@ -458,7 +458,7 @@ Signed-off-by: Jakub Kicinski .dma_max_len = MTK_TX_DMA_BUF_LEN, .dma_len_offset = 16, }, -@@ -5157,11 +5177,15 @@ static const struct mtk_soc_data mt7981_ +@@ -5161,11 +5181,15 @@ static const struct mtk_soc_data mt7981_ .hash_offset = 4, .has_accounting = true, .foe_entry_size = MTK_FOE_ENTRY_V2_SIZE, @@ -479,7 +479,7 @@ Signed-off-by: Jakub Kicinski .dma_max_len = MTK_TX_DMA_BUF_LEN_V2, .dma_len_offset = 8, }, -@@ -5179,11 +5203,15 @@ static const struct mtk_soc_data mt7986_ +@@ -5183,11 +5207,15 @@ static const struct mtk_soc_data mt7986_ .hash_offset = 4, .has_accounting = true, .foe_entry_size = MTK_FOE_ENTRY_V2_SIZE, @@ -500,7 +500,7 @@ Signed-off-by: Jakub Kicinski .dma_max_len = MTK_TX_DMA_BUF_LEN_V2, .dma_len_offset = 8, }, -@@ -5201,11 +5229,15 @@ static const struct mtk_soc_data mt7988_ +@@ -5205,11 +5233,15 @@ static const struct mtk_soc_data mt7988_ .hash_offset = 4, .has_accounting = true, .foe_entry_size = MTK_FOE_ENTRY_V3_SIZE, @@ -521,7 +521,7 @@ Signed-off-by: Jakub Kicinski .dma_max_len = MTK_TX_DMA_BUF_LEN_V2, .dma_len_offset = 8, }, -@@ -5218,11 +5250,15 @@ static const struct mtk_soc_data rt5350_ +@@ -5222,11 +5254,15 @@ static const struct mtk_soc_data rt5350_ .required_clks = MT7628_CLKS_BITMAP, .required_pctl = false, .version = 1, diff --git a/target/linux/generic/backport-6.6/751-02-v6.8-net-ethernet-mediatek-use-QDMA-instead-of-ADMAv2-on-.patch b/target/linux/generic/backport-6.6/751-02-v6.8-net-ethernet-mediatek-use-QDMA-instead-of-ADMAv2-on-.patch index 2499f48bc60..27c512864e0 100644 --- a/target/linux/generic/backport-6.6/751-02-v6.8-net-ethernet-mediatek-use-QDMA-instead-of-ADMAv2-on-.patch +++ b/target/linux/generic/backport-6.6/751-02-v6.8-net-ethernet-mediatek-use-QDMA-instead-of-ADMAv2-on-.patch @@ -76,7 +76,7 @@ Signed-off-by: Jakub Kicinski reason = FIELD_GET(MTK_RXD5_PPE_CPU_REASON, trxd.rxd5); hash = trxd.rxd5 & MTK_RXD5_FOE_ENTRY; if (hash != MTK_RXD5_FOE_ENTRY) -@@ -2686,7 +2686,7 @@ static int mtk_rx_alloc(struct mtk_eth * +@@ -2690,7 +2690,7 @@ static int mtk_rx_alloc(struct mtk_eth * rxd->rxd3 = 0; rxd->rxd4 = 0; @@ -85,7 +85,7 @@ Signed-off-by: Jakub Kicinski rxd->rxd5 = 0; rxd->rxd6 = 0; rxd->rxd7 = 0; -@@ -3889,7 +3889,7 @@ static int mtk_hw_init(struct mtk_eth *e +@@ -3893,7 +3893,7 @@ static int mtk_hw_init(struct mtk_eth *e else mtk_hw_reset(eth); @@ -94,7 +94,7 @@ Signed-off-by: Jakub Kicinski /* Set FE to PDMAv2 if necessary */ val = mtk_r32(eth, MTK_FE_GLO_MISC); mtk_w32(eth, val | BIT(4), MTK_FE_GLO_MISC); -@@ -5183,11 +5183,11 @@ static const struct mtk_soc_data mt7981_ +@@ -5187,11 +5187,11 @@ static const struct mtk_soc_data mt7981_ .dma_len_offset = 8, }, .rx = { @@ -110,7 +110,7 @@ Signed-off-by: Jakub Kicinski }, }; -@@ -5209,11 +5209,11 @@ static const struct mtk_soc_data mt7986_ +@@ -5213,11 +5213,11 @@ static const struct mtk_soc_data mt7986_ .dma_len_offset = 8, }, .rx = { diff --git a/target/linux/generic/backport-6.6/752-25-v6.10-net-ethernet-mtk_eth_soc-handle-dma-buffer-size-soc-.patch b/target/linux/generic/backport-6.6/752-25-v6.10-net-ethernet-mtk_eth_soc-handle-dma-buffer-size-soc-.patch index ddb81071864..27dac7214b7 100644 --- a/target/linux/generic/backport-6.6/752-25-v6.10-net-ethernet-mtk_eth_soc-handle-dma-buffer-size-soc-.patch +++ b/target/linux/generic/backport-6.6/752-25-v6.10-net-ethernet-mtk_eth_soc-handle-dma-buffer-size-soc-.patch @@ -123,7 +123,7 @@ Signed-off-by: David S. Miller } } -@@ -2457,7 +2463,7 @@ static int mtk_tx_alloc(struct mtk_eth * +@@ -2461,7 +2467,7 @@ static int mtk_tx_alloc(struct mtk_eth * if (MTK_HAS_CAPS(soc->caps, MTK_QDMA)) ring_size = MTK_QDMA_RING_SIZE; else @@ -132,7 +132,7 @@ Signed-off-by: David S. Miller ring->buf = kcalloc(ring_size, sizeof(*ring->buf), GFP_KERNEL); -@@ -2465,8 +2471,8 @@ static int mtk_tx_alloc(struct mtk_eth * +@@ -2469,8 +2475,8 @@ static int mtk_tx_alloc(struct mtk_eth * goto no_tx_mem; if (MTK_HAS_CAPS(soc->caps, MTK_SRAM)) { @@ -143,7 +143,7 @@ Signed-off-by: David S. Miller } else { ring->dma = dma_alloc_coherent(eth->dma_dev, ring_size * sz, &ring->phys, GFP_KERNEL); -@@ -2588,6 +2594,7 @@ static void mtk_tx_clean(struct mtk_eth +@@ -2592,6 +2598,7 @@ static void mtk_tx_clean(struct mtk_eth static int mtk_rx_alloc(struct mtk_eth *eth, int ring_no, int rx_flag) { const struct mtk_reg_map *reg_map = eth->soc->reg_map; @@ -151,7 +151,7 @@ Signed-off-by: David S. Miller struct mtk_rx_ring *ring; int rx_data_len, rx_dma_size, tx_ring_size; int i; -@@ -2595,7 +2602,7 @@ static int mtk_rx_alloc(struct mtk_eth * +@@ -2599,7 +2606,7 @@ static int mtk_rx_alloc(struct mtk_eth * if (MTK_HAS_CAPS(eth->soc->caps, MTK_QDMA)) tx_ring_size = MTK_QDMA_RING_SIZE; else @@ -160,7 +160,7 @@ Signed-off-by: David S. Miller if (rx_flag == MTK_RX_FLAGS_QDMA) { if (ring_no) -@@ -2610,7 +2617,7 @@ static int mtk_rx_alloc(struct mtk_eth * +@@ -2614,7 +2621,7 @@ static int mtk_rx_alloc(struct mtk_eth * rx_dma_size = MTK_HW_LRO_DMA_SIZE; } else { rx_data_len = ETH_DATA_LEN; @@ -169,7 +169,7 @@ Signed-off-by: David S. Miller } ring->frag_size = mtk_max_frag_size(rx_data_len); -@@ -3139,7 +3146,10 @@ static void mtk_dma_free(struct mtk_eth +@@ -3143,7 +3150,10 @@ static void mtk_dma_free(struct mtk_eth mtk_rx_clean(eth, ð->rx_ring[i], false); } @@ -181,7 +181,7 @@ Signed-off-by: David S. Miller } static bool mtk_hw_reset_check(struct mtk_eth *eth) -@@ -5061,11 +5071,14 @@ static const struct mtk_soc_data mt2701_ +@@ -5065,11 +5075,14 @@ static const struct mtk_soc_data mt2701_ .desc_size = sizeof(struct mtk_tx_dma), .dma_max_len = MTK_TX_DMA_BUF_LEN, .dma_len_offset = 16, @@ -196,7 +196,7 @@ Signed-off-by: David S. Miller .dma_max_len = MTK_TX_DMA_BUF_LEN, .dma_len_offset = 16, }, -@@ -5085,11 +5098,14 @@ static const struct mtk_soc_data mt7621_ +@@ -5089,11 +5102,14 @@ static const struct mtk_soc_data mt7621_ .desc_size = sizeof(struct mtk_tx_dma), .dma_max_len = MTK_TX_DMA_BUF_LEN, .dma_len_offset = 16, @@ -211,7 +211,7 @@ Signed-off-by: David S. Miller .dma_max_len = MTK_TX_DMA_BUF_LEN, .dma_len_offset = 16, }, -@@ -5111,11 +5127,14 @@ static const struct mtk_soc_data mt7622_ +@@ -5115,11 +5131,14 @@ static const struct mtk_soc_data mt7622_ .desc_size = sizeof(struct mtk_tx_dma), .dma_max_len = MTK_TX_DMA_BUF_LEN, .dma_len_offset = 16, @@ -226,7 +226,7 @@ Signed-off-by: David S. Miller .dma_max_len = MTK_TX_DMA_BUF_LEN, .dma_len_offset = 16, }, -@@ -5136,11 +5155,14 @@ static const struct mtk_soc_data mt7623_ +@@ -5140,11 +5159,14 @@ static const struct mtk_soc_data mt7623_ .desc_size = sizeof(struct mtk_tx_dma), .dma_max_len = MTK_TX_DMA_BUF_LEN, .dma_len_offset = 16, @@ -241,7 +241,7 @@ Signed-off-by: David S. Miller .dma_max_len = MTK_TX_DMA_BUF_LEN, .dma_len_offset = 16, }, -@@ -5159,11 +5181,14 @@ static const struct mtk_soc_data mt7629_ +@@ -5163,11 +5185,14 @@ static const struct mtk_soc_data mt7629_ .desc_size = sizeof(struct mtk_tx_dma), .dma_max_len = MTK_TX_DMA_BUF_LEN, .dma_len_offset = 16, @@ -256,7 +256,7 @@ Signed-off-by: David S. Miller .dma_max_len = MTK_TX_DMA_BUF_LEN, .dma_len_offset = 16, }, -@@ -5185,6 +5210,8 @@ static const struct mtk_soc_data mt7981_ +@@ -5189,6 +5214,8 @@ static const struct mtk_soc_data mt7981_ .desc_size = sizeof(struct mtk_tx_dma_v2), .dma_max_len = MTK_TX_DMA_BUF_LEN_V2, .dma_len_offset = 8, @@ -265,7 +265,7 @@ Signed-off-by: David S. Miller }, .rx = { .desc_size = sizeof(struct mtk_rx_dma), -@@ -5192,6 +5219,7 @@ static const struct mtk_soc_data mt7981_ +@@ -5196,6 +5223,7 @@ static const struct mtk_soc_data mt7981_ .dma_l4_valid = RX_DMA_L4_VALID_V2, .dma_max_len = MTK_TX_DMA_BUF_LEN, .dma_len_offset = 16, @@ -273,7 +273,7 @@ Signed-off-by: David S. Miller }, }; -@@ -5211,6 +5239,8 @@ static const struct mtk_soc_data mt7986_ +@@ -5215,6 +5243,8 @@ static const struct mtk_soc_data mt7986_ .desc_size = sizeof(struct mtk_tx_dma_v2), .dma_max_len = MTK_TX_DMA_BUF_LEN_V2, .dma_len_offset = 8, @@ -282,7 +282,7 @@ Signed-off-by: David S. Miller }, .rx = { .desc_size = sizeof(struct mtk_rx_dma), -@@ -5218,6 +5248,7 @@ static const struct mtk_soc_data mt7986_ +@@ -5222,6 +5252,7 @@ static const struct mtk_soc_data mt7986_ .dma_l4_valid = RX_DMA_L4_VALID_V2, .dma_max_len = MTK_TX_DMA_BUF_LEN, .dma_len_offset = 16, @@ -290,7 +290,7 @@ Signed-off-by: David S. Miller }, }; -@@ -5237,6 +5268,8 @@ static const struct mtk_soc_data mt7988_ +@@ -5241,6 +5272,8 @@ static const struct mtk_soc_data mt7988_ .desc_size = sizeof(struct mtk_tx_dma_v2), .dma_max_len = MTK_TX_DMA_BUF_LEN_V2, .dma_len_offset = 8, @@ -299,7 +299,7 @@ Signed-off-by: David S. Miller }, .rx = { .desc_size = sizeof(struct mtk_rx_dma_v2), -@@ -5244,6 +5277,7 @@ static const struct mtk_soc_data mt7988_ +@@ -5248,6 +5281,7 @@ static const struct mtk_soc_data mt7988_ .dma_l4_valid = RX_DMA_L4_VALID_V2, .dma_max_len = MTK_TX_DMA_BUF_LEN_V2, .dma_len_offset = 8, @@ -307,7 +307,7 @@ Signed-off-by: David S. Miller }, }; -@@ -5258,6 +5292,7 @@ static const struct mtk_soc_data rt5350_ +@@ -5262,6 +5296,7 @@ static const struct mtk_soc_data rt5350_ .desc_size = sizeof(struct mtk_tx_dma), .dma_max_len = MTK_TX_DMA_BUF_LEN, .dma_len_offset = 16, @@ -315,7 +315,7 @@ Signed-off-by: David S. Miller }, .rx = { .desc_size = sizeof(struct mtk_rx_dma), -@@ -5265,6 +5300,7 @@ static const struct mtk_soc_data rt5350_ +@@ -5269,6 +5304,7 @@ static const struct mtk_soc_data rt5350_ .dma_l4_valid = RX_DMA_L4_VALID_PDMA, .dma_max_len = MTK_TX_DMA_BUF_LEN, .dma_len_offset = 16, diff --git a/target/linux/generic/backport-6.6/752-26-v6.10-net-ethernet-mtk_eth_soc-ppe-add-support-for-multipl.patch b/target/linux/generic/backport-6.6/752-26-v6.10-net-ethernet-mtk_eth_soc-ppe-add-support-for-multipl.patch index bdf5bd0945d..1c5a7ae1006 100644 --- a/target/linux/generic/backport-6.6/752-26-v6.10-net-ethernet-mtk_eth_soc-ppe-add-support-for-multipl.patch +++ b/target/linux/generic/backport-6.6/752-26-v6.10-net-ethernet-mtk_eth_soc-ppe-add-support-for-multipl.patch @@ -85,7 +85,7 @@ Signed-off-by: Jakub Kicinski skb_record_rx_queue(skb, 0); napi_gro_receive(napi, skb); -@@ -3276,37 +3287,27 @@ static int mtk_start_dma(struct mtk_eth +@@ -3280,37 +3291,27 @@ static int mtk_start_dma(struct mtk_eth return 0; } @@ -134,7 +134,7 @@ Signed-off-by: Jakub Kicinski } -@@ -3366,7 +3367,10 @@ static int mtk_open(struct net_device *d +@@ -3370,7 +3371,10 @@ static int mtk_open(struct net_device *d { struct mtk_mac *mac = netdev_priv(dev); struct mtk_eth *eth = mac->hw; @@ -146,7 +146,7 @@ Signed-off-by: Jakub Kicinski err = phylink_of_phy_connect(mac->phylink, mac->of_node, 0); if (err) { -@@ -3390,18 +3394,38 @@ static int mtk_open(struct net_device *d +@@ -3394,18 +3398,38 @@ static int mtk_open(struct net_device *d for (i = 0; i < ARRAY_SIZE(eth->ppe); i++) mtk_ppe_start(eth->ppe[i]); @@ -190,7 +190,7 @@ Signed-off-by: Jakub Kicinski phylink_start(mac->phylink); netif_tx_start_all_queues(dev); -@@ -3478,7 +3502,8 @@ static int mtk_stop(struct net_device *d +@@ -3482,7 +3506,8 @@ static int mtk_stop(struct net_device *d if (!refcount_dec_and_test(ð->dma_refcnt)) return 0; @@ -200,7 +200,7 @@ Signed-off-by: Jakub Kicinski mtk_tx_irq_disable(eth, MTK_TX_DONE_INT); mtk_rx_irq_disable(eth, eth->soc->rx.irq_done_mask); -@@ -4973,23 +4998,24 @@ static int mtk_probe(struct platform_dev +@@ -4977,23 +5002,24 @@ static int mtk_probe(struct platform_dev } if (eth->soc->offload_version) { @@ -233,7 +233,7 @@ Signed-off-by: Jakub Kicinski } for (i = 0; i < MTK_MAX_DEVS; i++) { -@@ -5092,6 +5118,7 @@ static const struct mtk_soc_data mt7621_ +@@ -5096,6 +5122,7 @@ static const struct mtk_soc_data mt7621_ .required_pctl = false, .version = 1, .offload_version = 1, @@ -241,7 +241,7 @@ Signed-off-by: Jakub Kicinski .hash_offset = 2, .foe_entry_size = MTK_FOE_ENTRY_V1_SIZE, .tx = { -@@ -5120,6 +5147,7 @@ static const struct mtk_soc_data mt7622_ +@@ -5124,6 +5151,7 @@ static const struct mtk_soc_data mt7622_ .required_pctl = false, .version = 1, .offload_version = 2, @@ -249,7 +249,7 @@ Signed-off-by: Jakub Kicinski .hash_offset = 2, .has_accounting = true, .foe_entry_size = MTK_FOE_ENTRY_V1_SIZE, -@@ -5148,6 +5176,7 @@ static const struct mtk_soc_data mt7623_ +@@ -5152,6 +5180,7 @@ static const struct mtk_soc_data mt7623_ .required_pctl = true, .version = 1, .offload_version = 1, @@ -257,7 +257,7 @@ Signed-off-by: Jakub Kicinski .hash_offset = 2, .foe_entry_size = MTK_FOE_ENTRY_V1_SIZE, .disable_pll_modes = true, -@@ -5203,6 +5232,7 @@ static const struct mtk_soc_data mt7981_ +@@ -5207,6 +5236,7 @@ static const struct mtk_soc_data mt7981_ .required_pctl = false, .version = 2, .offload_version = 2, @@ -265,7 +265,7 @@ Signed-off-by: Jakub Kicinski .hash_offset = 4, .has_accounting = true, .foe_entry_size = MTK_FOE_ENTRY_V2_SIZE, -@@ -5232,6 +5262,7 @@ static const struct mtk_soc_data mt7986_ +@@ -5236,6 +5266,7 @@ static const struct mtk_soc_data mt7986_ .required_pctl = false, .version = 2, .offload_version = 2, @@ -273,7 +273,7 @@ Signed-off-by: Jakub Kicinski .hash_offset = 4, .has_accounting = true, .foe_entry_size = MTK_FOE_ENTRY_V2_SIZE, -@@ -5261,6 +5292,7 @@ static const struct mtk_soc_data mt7988_ +@@ -5265,6 +5296,7 @@ static const struct mtk_soc_data mt7988_ .required_pctl = false, .version = 3, .offload_version = 2, diff --git a/target/linux/generic/backport-6.6/752-28-v6.10-net-ethernet-mediatek-Allow-gaps-in-MAC-allocation.patch b/target/linux/generic/backport-6.6/752-28-v6.10-net-ethernet-mediatek-Allow-gaps-in-MAC-allocation.patch index b62586b992f..77061eb3554 100644 --- a/target/linux/generic/backport-6.6/752-28-v6.10-net-ethernet-mediatek-Allow-gaps-in-MAC-allocation.patch +++ b/target/linux/generic/backport-6.6/752-28-v6.10-net-ethernet-mediatek-Allow-gaps-in-MAC-allocation.patch @@ -21,7 +21,7 @@ Signed-off-by: Jakub Kicinski --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c -@@ -3396,7 +3396,7 @@ static int mtk_open(struct net_device *d +@@ -3400,7 +3400,7 @@ static int mtk_open(struct net_device *d for (i = 0; i < MTK_MAX_DEVS; i++) { if (!eth->netdev[i]) diff --git a/target/linux/generic/backport-6.6/752-30-v6.10-net-ethernet-mtk_eth_soc-implement-.-get-set-_pausep.patch b/target/linux/generic/backport-6.6/752-30-v6.10-net-ethernet-mtk_eth_soc-implement-.-get-set-_pausep.patch index 970812c6b20..272ceb3b45e 100644 --- a/target/linux/generic/backport-6.6/752-30-v6.10-net-ethernet-mtk_eth_soc-implement-.-get-set-_pausep.patch +++ b/target/linux/generic/backport-6.6/752-30-v6.10-net-ethernet-mtk_eth_soc-implement-.-get-set-_pausep.patch @@ -20,7 +20,7 @@ Signed-off-by: Jakub Kicinski --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c -@@ -4478,6 +4478,20 @@ static int mtk_set_rxnfc(struct net_devi +@@ -4482,6 +4482,20 @@ static int mtk_set_rxnfc(struct net_devi return ret; } @@ -41,7 +41,7 @@ Signed-off-by: Jakub Kicinski static u16 mtk_select_queue(struct net_device *dev, struct sk_buff *skb, struct net_device *sb_dev) { -@@ -4506,8 +4520,10 @@ static const struct ethtool_ops mtk_etht +@@ -4510,8 +4524,10 @@ static const struct ethtool_ops mtk_etht .get_strings = mtk_get_strings, .get_sset_count = mtk_get_sset_count, .get_ethtool_stats = mtk_get_ethtool_stats, diff --git a/target/linux/generic/backport-6.6/753-v6.15-net-ethernet-mediatek-add-EEE-support.patch b/target/linux/generic/backport-6.6/753-v6.15-net-ethernet-mediatek-add-EEE-support.patch index 82400208030..009f211a2c1 100644 --- a/target/linux/generic/backport-6.6/753-v6.15-net-ethernet-mediatek-add-EEE-support.patch +++ b/target/linux/generic/backport-6.6/753-v6.15-net-ethernet-mediatek-add-EEE-support.patch @@ -39,7 +39,7 @@ Signed-off-by: Qingfang Deng mcr |= MAC_MCR_TX_EN | MAC_MCR_RX_EN | MAC_MCR_FORCE_LINK; mtk_w32(mac->hw, mcr, MTK_MAC_MCR(mac->id)); } -@@ -4492,6 +4502,61 @@ static int mtk_set_pauseparam(struct net +@@ -4496,6 +4506,61 @@ static int mtk_set_pauseparam(struct net return phylink_ethtool_set_pauseparam(mac->phylink, pause); } @@ -101,7 +101,7 @@ Signed-off-by: Qingfang Deng static u16 mtk_select_queue(struct net_device *dev, struct sk_buff *skb, struct net_device *sb_dev) { -@@ -4524,6 +4589,8 @@ static const struct ethtool_ops mtk_etht +@@ -4528,6 +4593,8 @@ static const struct ethtool_ops mtk_etht .set_pauseparam = mtk_set_pauseparam, .get_rxnfc = mtk_get_rxnfc, .set_rxnfc = mtk_set_rxnfc, @@ -110,7 +110,7 @@ Signed-off-by: Qingfang Deng }; static const struct net_device_ops mtk_netdev_ops = { -@@ -4584,6 +4651,8 @@ static int mtk_add_mac(struct mtk_eth *e +@@ -4588,6 +4655,8 @@ static int mtk_add_mac(struct mtk_eth *e } mac = netdev_priv(eth->netdev[id]); eth->mac[id] = mac; diff --git a/target/linux/generic/hack-6.6/204-module_strip.patch b/target/linux/generic/hack-6.6/204-module_strip.patch index 24ec94f5156..ccadee1e5a6 100644 --- a/target/linux/generic/hack-6.6/204-module_strip.patch +++ b/target/linux/generic/hack-6.6/204-module_strip.patch @@ -14,7 +14,7 @@ Signed-off-by: Felix Fietkau --- a/include/linux/module.h +++ b/include/linux/module.h -@@ -164,6 +164,7 @@ extern void cleanup_module(void); +@@ -166,6 +166,7 @@ struct module_kobject *lookup_or_create_ /* Generic info of form tag = "info" */ #define MODULE_INFO(tag, info) __MODULE_INFO(tag, tag, info) @@ -22,7 +22,7 @@ Signed-off-by: Felix Fietkau /* For userspace: you can also call me... */ #define MODULE_ALIAS(_alias) MODULE_INFO(alias, _alias) -@@ -233,12 +234,12 @@ extern void cleanup_module(void); +@@ -235,12 +236,12 @@ struct module_kobject *lookup_or_create_ * Author(s), use "Name " or just "Name", for multiple * authors use multiple MODULE_AUTHOR() statements/lines. */ @@ -38,7 +38,7 @@ Signed-off-by: Felix Fietkau /* Creates an alias so file2alias.c can find device table. */ #define MODULE_DEVICE_TABLE(type, name) \ extern typeof(name) __mod_##type##__##name##_device_table \ -@@ -265,7 +266,9 @@ extern typeof(name) __mod_##type##__##na +@@ -267,7 +268,9 @@ extern typeof(name) __mod_##type##__##na */ #if defined(MODULE) || !defined(CONFIG_SYSFS) @@ -49,7 +49,7 @@ Signed-off-by: Felix Fietkau #else #define MODULE_VERSION(_version) \ MODULE_INFO(version, _version); \ -@@ -288,7 +291,7 @@ extern typeof(name) __mod_##type##__##na +@@ -290,7 +293,7 @@ extern typeof(name) __mod_##type##__##na /* Optional firmware file (or files) needed by the module * format is simply firmware file name. Multiple firmware * files require multiple MODULE_FIRMWARE() specifiers */ diff --git a/target/linux/generic/hack-6.6/721-net-add-packet-mangeling.patch b/target/linux/generic/hack-6.6/721-net-add-packet-mangeling.patch index 0935a0b9c0a..8b784836a00 100644 --- a/target/linux/generic/hack-6.6/721-net-add-packet-mangeling.patch +++ b/target/linux/generic/hack-6.6/721-net-add-packet-mangeling.patch @@ -60,7 +60,7 @@ Signed-off-by: Felix Fietkau */ --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h -@@ -3095,6 +3095,10 @@ static inline int pskb_trim(struct sk_bu +@@ -3098,6 +3098,10 @@ static inline int pskb_trim(struct sk_bu return (len < skb->len) ? __pskb_trim(skb, len) : 0; } @@ -71,7 +71,7 @@ Signed-off-by: Felix Fietkau /** * pskb_trim_unique - remove end from a paged unique (not cloned) buffer * @skb: buffer to alter -@@ -3260,16 +3264,6 @@ static inline struct sk_buff *dev_alloc_ +@@ -3263,16 +3267,6 @@ static inline struct sk_buff *dev_alloc_ } diff --git a/target/linux/generic/hack-6.6/730-net-ethernet-mtk_eth_soc-add-hw-dump-for-forced-rese.patch b/target/linux/generic/hack-6.6/730-net-ethernet-mtk_eth_soc-add-hw-dump-for-forced-rese.patch index bda5cb53994..95a6aa8cb82 100644 --- a/target/linux/generic/hack-6.6/730-net-ethernet-mtk_eth_soc-add-hw-dump-for-forced-rese.patch +++ b/target/linux/generic/hack-6.6/730-net-ethernet-mtk_eth_soc-add-hw-dump-for-forced-rese.patch @@ -37,7 +37,7 @@ Signed-off-by: Bo-Cun Chen .glo_cfg = 0x4604, .rst_idx = 0x4608, .delay_irq = 0x460c, -@@ -3895,6 +3898,56 @@ static void mtk_set_mcr_max_rx(struct mt +@@ -3899,6 +3902,56 @@ static void mtk_set_mcr_max_rx(struct mt mtk_w32(mac->hw, mcr_new, MTK_MAC_MCR(mac->id)); } @@ -94,7 +94,7 @@ Signed-off-by: Bo-Cun Chen static void mtk_hw_reset(struct mtk_eth *eth) { u32 val; -@@ -4370,6 +4423,8 @@ static void mtk_pending_work(struct work +@@ -4374,6 +4427,8 @@ static void mtk_pending_work(struct work rtnl_lock(); set_bit(MTK_RESETTING, ð->state); diff --git a/target/linux/generic/hack-6.6/781-usb-net-rndis-support-asr.patch b/target/linux/generic/hack-6.6/781-usb-net-rndis-support-asr.patch index d5cc7e0a7ef..47339b6c22f 100644 --- a/target/linux/generic/hack-6.6/781-usb-net-rndis-support-asr.patch +++ b/target/linux/generic/hack-6.6/781-usb-net-rndis-support-asr.patch @@ -13,7 +13,7 @@ Signed-off-by: Daniel Golle --- a/drivers/net/usb/rndis_host.c +++ b/drivers/net/usb/rndis_host.c -@@ -640,6 +640,16 @@ static const struct driver_info wwan_rnd +@@ -630,6 +630,16 @@ static const struct driver_info zte_rndi .tx_fixup = rndis_tx_fixup, }; @@ -30,7 +30,7 @@ Signed-off-by: Daniel Golle /*-------------------------------------------------------------------------*/ static const struct usb_device_id products [] = { -@@ -676,6 +686,36 @@ static const struct usb_device_id produc +@@ -666,6 +676,36 @@ static const struct usb_device_id produc USB_INTERFACE_INFO(USB_CLASS_WIRELESS_CONTROLLER, 1, 3), .driver_info = (unsigned long) &rndis_info, }, { @@ -64,6 +64,6 @@ Signed-off-by: Daniel Golle + USB_CLASS_WIRELESS_CONTROLLER, 1, 3), + .driver_info = (unsigned long) &asr_rndis_info, +}, { - /* Mobile Broadband Modem, seen in Novatel Verizon USB730L and - * Telit FN990A (RNDIS) - */ + /* Novatel Verizon USB730L */ + USB_INTERFACE_INFO(USB_CLASS_MISC, 4, 1), + .driver_info = (unsigned long) &rndis_info, diff --git a/target/linux/generic/kernel-6.6 b/target/linux/generic/kernel-6.6 index f3ca0941dda..e4ac53448d5 100644 --- a/target/linux/generic/kernel-6.6 +++ b/target/linux/generic/kernel-6.6 @@ -1,2 +1,2 @@ -LINUX_VERSION-6.6 = .89 -LINUX_KERNEL_HASH-6.6.89 = c21af7d36068e4ac0704c242eac8459212e6bf4a5d09df941b9b4d17dc1eba00 +LINUX_VERSION-6.6 = .90 +LINUX_KERNEL_HASH-6.6.90 = ff856748671629c1fefef219099e0b4b81131c2d325e768cb0806e204157014e diff --git a/target/linux/generic/pending-6.6/655-increase_skb_pad.patch b/target/linux/generic/pending-6.6/655-increase_skb_pad.patch index ce7db566e5a..4f3bb060519 100644 --- a/target/linux/generic/pending-6.6/655-increase_skb_pad.patch +++ b/target/linux/generic/pending-6.6/655-increase_skb_pad.patch @@ -9,7 +9,7 @@ Signed-off-by: Felix Fietkau --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h -@@ -3062,7 +3062,7 @@ static inline int pskb_network_may_pull( +@@ -3065,7 +3065,7 @@ static inline int pskb_network_may_pull( * NET_IP_ALIGN(2) + ethernet_header(14) + IP_header(20/40) + ports(8) */ #ifndef NET_SKB_PAD diff --git a/target/linux/generic/pending-6.6/691-net-ipv6-fix-UDPv6-GSO-segmentation-with-NAT.patch b/target/linux/generic/pending-6.6/691-net-ipv6-fix-UDPv6-GSO-segmentation-with-NAT.patch deleted file mode 100644 index 6bbe2ca880e..00000000000 --- a/target/linux/generic/pending-6.6/691-net-ipv6-fix-UDPv6-GSO-segmentation-with-NAT.patch +++ /dev/null @@ -1,88 +0,0 @@ -From: Felix Fietkau -Date: Sat, 26 Apr 2025 17:18:03 +0200 -Subject: [PATCH] net: ipv6: fix UDPv6 GSO segmentation with NAT - -If any address or port is changed, update it in all packets and recalculate -checksum. - -Fixes: 9fd1ff5d2ac7 ("udp: Support UDP fraglist GRO/GSO.") -Signed-off-by: Felix Fietkau ---- - ---- a/net/ipv4/udp_offload.c -+++ b/net/ipv4/udp_offload.c -@@ -247,6 +247,62 @@ static struct sk_buff *__udpv4_gso_segme - return segs; - } - -+static void __udpv6_gso_segment_csum(struct sk_buff *seg, -+ struct in6_addr *oldip, -+ const struct in6_addr *newip, -+ __be16 *oldport, __be16 newport) -+{ -+ struct udphdr *uh = udp_hdr(seg); -+ -+ if (ipv6_addr_equal(oldip, newip) && *oldport == newport) -+ return; -+ -+ if (uh->check) { -+ inet_proto_csum_replace16(&uh->check, seg, oldip->s6_addr32, -+ newip->s6_addr32, true); -+ -+ inet_proto_csum_replace2(&uh->check, seg, *oldport, newport, -+ false); -+ if (!uh->check) -+ uh->check = CSUM_MANGLED_0; -+ } -+ -+ *oldip = *newip; -+ *oldport = newport; -+} -+ -+static struct sk_buff *__udpv6_gso_segment_list_csum(struct sk_buff *segs) -+{ -+ const struct ipv6hdr *iph; -+ const struct udphdr *uh; -+ struct ipv6hdr *iph2; -+ struct sk_buff *seg; -+ struct udphdr *uh2; -+ -+ seg = segs; -+ uh = udp_hdr(seg); -+ iph = ipv6_hdr(seg); -+ uh2 = udp_hdr(seg->next); -+ iph2 = ipv6_hdr(seg->next); -+ -+ if (!(*(const u32 *)&uh->source ^ *(const u32 *)&uh2->source) && -+ ipv6_addr_equal(&iph->saddr, &iph2->saddr) && -+ ipv6_addr_equal(&iph->daddr, &iph2->daddr)) -+ return segs; -+ -+ while ((seg = seg->next)) { -+ uh2 = udp_hdr(seg); -+ iph2 = ipv6_hdr(seg); -+ -+ __udpv6_gso_segment_csum(seg, &iph2->saddr, &iph->saddr, -+ &uh2->source, uh->source); -+ __udpv6_gso_segment_csum(seg, &iph2->daddr, &iph->daddr, -+ &uh2->dest, uh->dest); -+ } -+ -+ return segs; -+} -+ - static struct sk_buff *__udp_gso_segment_list(struct sk_buff *skb, - netdev_features_t features, - bool is_ipv6) -@@ -259,7 +315,10 @@ static struct sk_buff *__udp_gso_segment - - udp_hdr(skb)->len = htons(sizeof(struct udphdr) + mss); - -- return is_ipv6 ? skb : __udpv4_gso_segment_list_csum(skb); -+ if (is_ipv6) -+ return __udpv6_gso_segment_list_csum(skb); -+ else -+ return __udpv4_gso_segment_list_csum(skb); - } - - struct sk_buff *__udp_gso_segment(struct sk_buff *gso_skb, diff --git a/target/linux/generic/pending-6.6/702-net-ethernet-mtk_eth_soc-enable-threaded-NAPI.patch b/target/linux/generic/pending-6.6/702-net-ethernet-mtk_eth_soc-enable-threaded-NAPI.patch index 05ff78e798c..05f64f7587b 100644 --- a/target/linux/generic/pending-6.6/702-net-ethernet-mtk_eth_soc-enable-threaded-NAPI.patch +++ b/target/linux/generic/pending-6.6/702-net-ethernet-mtk_eth_soc-enable-threaded-NAPI.patch @@ -10,7 +10,7 @@ Signed-off-by: Felix Fietkau --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c -@@ -5121,6 +5121,8 @@ static int mtk_probe(struct platform_dev +@@ -5125,6 +5125,8 @@ static int mtk_probe(struct platform_dev * for NAPI to work */ init_dummy_netdev(ð->dummy_dev); diff --git a/target/linux/generic/pending-6.6/730-net-ethernet-mtk_eth_soc-reset-all-TX-queues-on-DMA-.patch b/target/linux/generic/pending-6.6/730-net-ethernet-mtk_eth_soc-reset-all-TX-queues-on-DMA-.patch index 572c07eb70c..8d8e3d83ba1 100644 --- a/target/linux/generic/pending-6.6/730-net-ethernet-mtk_eth_soc-reset-all-TX-queues-on-DMA-.patch +++ b/target/linux/generic/pending-6.6/730-net-ethernet-mtk_eth_soc-reset-all-TX-queues-on-DMA-.patch @@ -23,7 +23,7 @@ Signed-off-by: Daniel Golle --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c -@@ -3145,11 +3145,19 @@ static int mtk_dma_init(struct mtk_eth * +@@ -3149,11 +3149,19 @@ static int mtk_dma_init(struct mtk_eth * static void mtk_dma_free(struct mtk_eth *eth) { const struct mtk_soc_data *soc = eth->soc; diff --git a/target/linux/generic/pending-6.6/734-net-ethernet-mediatek-enlarge-DMA-reserve-buffer.patch b/target/linux/generic/pending-6.6/734-net-ethernet-mediatek-enlarge-DMA-reserve-buffer.patch index ffe4c5e1f89..7274c4a817d 100644 --- a/target/linux/generic/pending-6.6/734-net-ethernet-mediatek-enlarge-DMA-reserve-buffer.patch +++ b/target/linux/generic/pending-6.6/734-net-ethernet-mediatek-enlarge-DMA-reserve-buffer.patch @@ -25,7 +25,7 @@ Signed-off-by: Chad Monroe /* QDMA Flow Control Register */ --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c -@@ -3319,12 +3319,14 @@ static int mtk_start_dma(struct mtk_eth +@@ -3323,12 +3323,14 @@ static int mtk_start_dma(struct mtk_eth MTK_TX_BT_32DWORDS | MTK_NDP_CO_PRO | MTK_RX_2B_OFFSET | MTK_TX_WB_DDONE; diff --git a/target/linux/generic/pending-6.6/737-net-ethernet-mtk_eth_soc-add-paths-and-SerDes-modes-.patch b/target/linux/generic/pending-6.6/737-net-ethernet-mtk_eth_soc-add-paths-and-SerDes-modes-.patch index 669a3c0f4a6..392e94dc8a9 100644 --- a/target/linux/generic/pending-6.6/737-net-ethernet-mtk_eth_soc-add-paths-and-SerDes-modes-.patch +++ b/target/linux/generic/pending-6.6/737-net-ethernet-mtk_eth_soc-add-paths-and-SerDes-modes-.patch @@ -490,7 +490,7 @@ Signed-off-by: Daniel Golle .mac_finish = mtk_mac_finish, .mac_link_down = mtk_mac_link_down, .mac_link_up = mtk_mac_link_up, -@@ -3427,6 +3568,9 @@ static int mtk_open(struct net_device *d +@@ -3431,6 +3572,9 @@ static int mtk_open(struct net_device *d ppe_num = eth->soc->ppe_num; @@ -500,7 +500,7 @@ Signed-off-by: Daniel Golle err = phylink_of_phy_connect(mac->phylink, mac->of_node, 0); if (err) { netdev_err(dev, "%s: could not attach PHY: %d\n", __func__, -@@ -3577,6 +3721,9 @@ static int mtk_stop(struct net_device *d +@@ -3581,6 +3725,9 @@ static int mtk_stop(struct net_device *d for (i = 0; i < ARRAY_SIZE(eth->ppe); i++) mtk_ppe_stop(eth->ppe[i]); @@ -510,7 +510,7 @@ Signed-off-by: Daniel Golle return 0; } -@@ -4663,6 +4810,7 @@ static const struct net_device_ops mtk_n +@@ -4667,6 +4814,7 @@ static const struct net_device_ops mtk_n static int mtk_add_mac(struct mtk_eth *eth, struct device_node *np) { const __be32 *_id = of_get_property(np, "reg", NULL); @@ -518,7 +518,7 @@ Signed-off-by: Daniel Golle phy_interface_t phy_mode; struct phylink *phylink; struct mtk_mac *mac; -@@ -4701,16 +4849,41 @@ static int mtk_add_mac(struct mtk_eth *e +@@ -4705,16 +4853,41 @@ static int mtk_add_mac(struct mtk_eth *e mac->id = id; mac->hw = eth; mac->of_node = np; @@ -568,7 +568,7 @@ Signed-off-by: Daniel Golle } memset(mac->hwlro_ip, 0, sizeof(mac->hwlro_ip)); -@@ -4793,8 +4966,21 @@ static int mtk_add_mac(struct mtk_eth *e +@@ -4797,8 +4970,21 @@ static int mtk_add_mac(struct mtk_eth *e phy_interface_zero(mac->phylink_config.supported_interfaces); __set_bit(PHY_INTERFACE_MODE_INTERNAL, mac->phylink_config.supported_interfaces); @@ -590,7 +590,7 @@ Signed-off-by: Daniel Golle phylink = phylink_create(&mac->phylink_config, of_fwnode_handle(mac->of_node), phy_mode, &mtk_phylink_ops); -@@ -4845,6 +5031,26 @@ free_netdev: +@@ -4849,6 +5035,26 @@ free_netdev: return err; } @@ -617,7 +617,7 @@ Signed-off-by: Daniel Golle void mtk_eth_set_dma_device(struct mtk_eth *eth, struct device *dma_dev) { struct net_device *dev, *tmp; -@@ -4991,7 +5197,8 @@ static int mtk_probe(struct platform_dev +@@ -4995,7 +5201,8 @@ static int mtk_probe(struct platform_dev regmap_write(cci, 0, 3); } @@ -627,7 +627,7 @@ Signed-off-by: Daniel Golle err = mtk_sgmii_init(eth); if (err) -@@ -5102,6 +5309,24 @@ static int mtk_probe(struct platform_dev +@@ -5106,6 +5313,24 @@ static int mtk_probe(struct platform_dev } } @@ -652,7 +652,7 @@ Signed-off-by: Daniel Golle if (MTK_HAS_CAPS(eth->soc->caps, MTK_SHARED_INT)) { err = devm_request_irq(eth->dev, eth->irq[0], mtk_handle_irq, 0, -@@ -5205,6 +5430,11 @@ static int mtk_remove(struct platform_de +@@ -5209,6 +5434,11 @@ static int mtk_remove(struct platform_de mtk_stop(eth->netdev[i]); mac = netdev_priv(eth->netdev[i]); phylink_disconnect_phy(mac->phylink); diff --git a/target/linux/generic/pending-6.6/738-01-net-ethernet-mtk_eth_soc-reduce-rx-ring-size-for-older.patch b/target/linux/generic/pending-6.6/738-01-net-ethernet-mtk_eth_soc-reduce-rx-ring-size-for-older.patch index 6076fa2ed9f..f8b3bb84595 100644 --- a/target/linux/generic/pending-6.6/738-01-net-ethernet-mtk_eth_soc-reduce-rx-ring-size-for-older.patch +++ b/target/linux/generic/pending-6.6/738-01-net-ethernet-mtk_eth_soc-reduce-rx-ring-size-for-older.patch @@ -30,7 +30,7 @@ Signed-off-by: Felix Fietkau --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c -@@ -5466,7 +5466,7 @@ static const struct mtk_soc_data mt2701_ +@@ -5470,7 +5470,7 @@ static const struct mtk_soc_data mt2701_ .desc_size = sizeof(struct mtk_rx_dma), .irq_done_mask = MTK_RX_DONE_INT, .dma_l4_valid = RX_DMA_L4_VALID, @@ -39,7 +39,7 @@ Signed-off-by: Felix Fietkau .dma_max_len = MTK_TX_DMA_BUF_LEN, .dma_len_offset = 16, }, -@@ -5494,7 +5494,7 @@ static const struct mtk_soc_data mt7621_ +@@ -5498,7 +5498,7 @@ static const struct mtk_soc_data mt7621_ .desc_size = sizeof(struct mtk_rx_dma), .irq_done_mask = MTK_RX_DONE_INT, .dma_l4_valid = RX_DMA_L4_VALID, @@ -48,7 +48,7 @@ Signed-off-by: Felix Fietkau .dma_max_len = MTK_TX_DMA_BUF_LEN, .dma_len_offset = 16, }, -@@ -5524,7 +5524,7 @@ static const struct mtk_soc_data mt7622_ +@@ -5528,7 +5528,7 @@ static const struct mtk_soc_data mt7622_ .desc_size = sizeof(struct mtk_rx_dma), .irq_done_mask = MTK_RX_DONE_INT, .dma_l4_valid = RX_DMA_L4_VALID, @@ -57,7 +57,7 @@ Signed-off-by: Felix Fietkau .dma_max_len = MTK_TX_DMA_BUF_LEN, .dma_len_offset = 16, }, -@@ -5553,7 +5553,7 @@ static const struct mtk_soc_data mt7623_ +@@ -5557,7 +5557,7 @@ static const struct mtk_soc_data mt7623_ .desc_size = sizeof(struct mtk_rx_dma), .irq_done_mask = MTK_RX_DONE_INT, .dma_l4_valid = RX_DMA_L4_VALID, @@ -66,7 +66,7 @@ Signed-off-by: Felix Fietkau .dma_max_len = MTK_TX_DMA_BUF_LEN, .dma_len_offset = 16, }, -@@ -5579,7 +5579,7 @@ static const struct mtk_soc_data mt7629_ +@@ -5583,7 +5583,7 @@ static const struct mtk_soc_data mt7629_ .desc_size = sizeof(struct mtk_rx_dma), .irq_done_mask = MTK_RX_DONE_INT, .dma_l4_valid = RX_DMA_L4_VALID, @@ -75,7 +75,7 @@ Signed-off-by: Felix Fietkau .dma_max_len = MTK_TX_DMA_BUF_LEN, .dma_len_offset = 16, }, -@@ -5611,7 +5611,7 @@ static const struct mtk_soc_data mt7981_ +@@ -5615,7 +5615,7 @@ static const struct mtk_soc_data mt7981_ .dma_l4_valid = RX_DMA_L4_VALID_V2, .dma_max_len = MTK_TX_DMA_BUF_LEN, .dma_len_offset = 16, @@ -84,7 +84,7 @@ Signed-off-by: Felix Fietkau }, }; -@@ -5641,7 +5641,7 @@ static const struct mtk_soc_data mt7986_ +@@ -5645,7 +5645,7 @@ static const struct mtk_soc_data mt7986_ .dma_l4_valid = RX_DMA_L4_VALID_V2, .dma_max_len = MTK_TX_DMA_BUF_LEN, .dma_len_offset = 16, @@ -93,7 +93,7 @@ Signed-off-by: Felix Fietkau }, }; -@@ -5694,7 +5694,7 @@ static const struct mtk_soc_data rt5350_ +@@ -5698,7 +5698,7 @@ static const struct mtk_soc_data rt5350_ .dma_l4_valid = RX_DMA_L4_VALID_PDMA, .dma_max_len = MTK_TX_DMA_BUF_LEN, .dma_len_offset = 16, diff --git a/target/linux/generic/pending-6.6/738-02-net-ethernet-mtk_eth_soc-do-not-enable-page-pool-sta.patch b/target/linux/generic/pending-6.6/738-02-net-ethernet-mtk_eth_soc-do-not-enable-page-pool-sta.patch index 078365705d0..349af33524e 100644 --- a/target/linux/generic/pending-6.6/738-02-net-ethernet-mtk_eth_soc-do-not-enable-page-pool-sta.patch +++ b/target/linux/generic/pending-6.6/738-02-net-ethernet-mtk_eth_soc-do-not-enable-page-pool-sta.patch @@ -25,7 +25,7 @@ Signed-off-by: Felix Fietkau help --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c -@@ -4578,6 +4578,7 @@ static int mtk_get_sset_count(struct net +@@ -4582,6 +4582,7 @@ static int mtk_get_sset_count(struct net static void mtk_ethtool_pp_stats(struct mtk_eth *eth, u64 *data) { @@ -33,7 +33,7 @@ Signed-off-by: Felix Fietkau struct page_pool_stats stats = {}; int i; -@@ -4590,6 +4591,7 @@ static void mtk_ethtool_pp_stats(struct +@@ -4594,6 +4595,7 @@ static void mtk_ethtool_pp_stats(struct page_pool_get_stats(ring->page_pool, &stats); } page_pool_ethtool_stats_get(data, &stats); diff --git a/target/linux/imx/patches-6.6/600-PCI-imx6-Start-link-at-max-gen-first-for-IMX8MM-and-IMX8MP.patch b/target/linux/imx/patches-6.6/600-PCI-imx6-Start-link-at-max-gen-first-for-IMX8MM-and-IMX8MP.patch index 95069c2c438..d8818369bcd 100644 --- a/target/linux/imx/patches-6.6/600-PCI-imx6-Start-link-at-max-gen-first-for-IMX8MM-and-IMX8MP.patch +++ b/target/linux/imx/patches-6.6/600-PCI-imx6-Start-link-at-max-gen-first-for-IMX8MM-and-IMX8MP.patch @@ -100,7 +100,7 @@ Signed-off-by: Tim Harvey return 0; err_reset_phy: -@@ -1456,14 +1455,16 @@ static const struct imx6_pcie_drvdata dr +@@ -1457,14 +1456,16 @@ static const struct imx6_pcie_drvdata dr }, [IMX8MM] = { .variant = IMX8MM, diff --git a/target/linux/ipq40xx/patches-6.6/701-net-dsa-add-out-of-band-tagging-protocol.patch b/target/linux/ipq40xx/patches-6.6/701-net-dsa-add-out-of-band-tagging-protocol.patch index 8c7567fa938..dc70104b1c0 100644 --- a/target/linux/ipq40xx/patches-6.6/701-net-dsa-add-out-of-band-tagging-protocol.patch +++ b/target/linux/ipq40xx/patches-6.6/701-net-dsa-add-out-of-band-tagging-protocol.patch @@ -93,7 +93,7 @@ Signed-off-by: Maxime Chevallier +#endif --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h -@@ -4657,6 +4657,9 @@ enum skb_ext_id { +@@ -4683,6 +4683,9 @@ enum skb_ext_id { #if IS_ENABLED(CONFIG_MCTP_FLOWS) SKB_EXT_MCTP, #endif diff --git a/target/linux/mpc85xx/patches-6.6/010-powerpc-add-compressed-zImage-for-mpc85xx.patch b/target/linux/mpc85xx/patches-6.6/010-powerpc-add-compressed-zImage-for-mpc85xx.patch index eeb501dfebc..c2b46afd1c4 100644 --- a/target/linux/mpc85xx/patches-6.6/010-powerpc-add-compressed-zImage-for-mpc85xx.patch +++ b/target/linux/mpc85xx/patches-6.6/010-powerpc-add-compressed-zImage-for-mpc85xx.patch @@ -34,7 +34,7 @@ Signed-off-by: David Bauer cuImage.mpc8572ds --- a/arch/powerpc/boot/wrapper +++ b/arch/powerpc/boot/wrapper -@@ -258,6 +258,11 @@ if [ -n "$esm_blob" -a "$platform" != "p +@@ -256,6 +256,11 @@ if [ -n "$esm_blob" -a "$platform" != "p fi case "$platform" in diff --git a/target/linux/mpc85xx/patches-6.6/100-powerpc-85xx-tl-wdr4900-v1-support.patch b/target/linux/mpc85xx/patches-6.6/100-powerpc-85xx-tl-wdr4900-v1-support.patch index 2f8d4d4e3d5..e16b97b730b 100644 --- a/target/linux/mpc85xx/patches-6.6/100-powerpc-85xx-tl-wdr4900-v1-support.patch +++ b/target/linux/mpc85xx/patches-6.6/100-powerpc-85xx-tl-wdr4900-v1-support.patch @@ -38,7 +38,7 @@ Signed-off-by: Pawel Dembicki --- a/arch/powerpc/boot/wrapper +++ b/arch/powerpc/boot/wrapper -@@ -350,6 +350,11 @@ adder875-redboot) +@@ -348,6 +348,11 @@ adder875-redboot) platformo="$object/fixed-head.o $object/redboot-8xx.o" binary=y ;; diff --git a/target/linux/mpc85xx/patches-6.6/101-powerpc-85xx-hiveap-330-support.patch b/target/linux/mpc85xx/patches-6.6/101-powerpc-85xx-hiveap-330-support.patch index 85de47bfb57..2a46aee63ee 100644 --- a/target/linux/mpc85xx/patches-6.6/101-powerpc-85xx-hiveap-330-support.patch +++ b/target/linux/mpc85xx/patches-6.6/101-powerpc-85xx-hiveap-330-support.patch @@ -48,7 +48,7 @@ image-$(CONFIG_MVME7100) += dtbImage.mvme7100 --- a/arch/powerpc/boot/wrapper +++ b/arch/powerpc/boot/wrapper -@@ -350,6 +350,7 @@ adder875-redboot) +@@ -348,6 +348,7 @@ adder875-redboot) platformo="$object/fixed-head.o $object/redboot-8xx.o" binary=y ;; diff --git a/target/linux/mpc85xx/patches-6.6/106-powerpc-85xx-ws-ap3710i-support.patch b/target/linux/mpc85xx/patches-6.6/106-powerpc-85xx-ws-ap3710i-support.patch index 983772131c3..9e8ed55875a 100644 --- a/target/linux/mpc85xx/patches-6.6/106-powerpc-85xx-ws-ap3710i-support.patch +++ b/target/linux/mpc85xx/patches-6.6/106-powerpc-85xx-ws-ap3710i-support.patch @@ -48,7 +48,7 @@ --- a/arch/powerpc/boot/wrapper +++ b/arch/powerpc/boot/wrapper -@@ -351,7 +351,8 @@ adder875-redboot) +@@ -349,7 +349,8 @@ adder875-redboot) binary=y ;; simpleboot-hiveap-330|\ diff --git a/target/linux/mpc85xx/patches-6.6/107-powerpc-85xx-add-ws-ap3825i-support.patch b/target/linux/mpc85xx/patches-6.6/107-powerpc-85xx-add-ws-ap3825i-support.patch index 29e3b221335..c50012d9758 100644 --- a/target/linux/mpc85xx/patches-6.6/107-powerpc-85xx-add-ws-ap3825i-support.patch +++ b/target/linux/mpc85xx/patches-6.6/107-powerpc-85xx-add-ws-ap3825i-support.patch @@ -55,7 +55,7 @@ WS-AP3825i AP. --- a/arch/powerpc/boot/wrapper +++ b/arch/powerpc/boot/wrapper -@@ -352,7 +352,8 @@ adder875-redboot) +@@ -350,7 +350,8 @@ adder875-redboot) ;; simpleboot-hiveap-330|\ simpleboot-tl-wdr4900-v1|\ diff --git a/target/linux/mpc85xx/patches-6.6/110-powerpc-85xx-br200-wp-support.patch b/target/linux/mpc85xx/patches-6.6/110-powerpc-85xx-br200-wp-support.patch index 28a2bed017f..d967191e66b 100644 --- a/target/linux/mpc85xx/patches-6.6/110-powerpc-85xx-br200-wp-support.patch +++ b/target/linux/mpc85xx/patches-6.6/110-powerpc-85xx-br200-wp-support.patch @@ -47,7 +47,7 @@ image-$(CONFIG_WS_AP3710I) += simpleImage.ws-ap3710i --- a/arch/powerpc/boot/wrapper +++ b/arch/powerpc/boot/wrapper -@@ -350,6 +350,7 @@ adder875-redboot) +@@ -348,6 +348,7 @@ adder875-redboot) platformo="$object/fixed-head.o $object/redboot-8xx.o" binary=y ;; diff --git a/target/linux/ramips/patches-6.6/870-Input-sx951x-add-Semtech-SX9512-SX9513-driver.patch b/target/linux/ramips/patches-6.6/870-Input-sx951x-add-Semtech-SX9512-SX9513-driver.patch index 340fb3c3426..9b724e9d526 100644 --- a/target/linux/ramips/patches-6.6/870-Input-sx951x-add-Semtech-SX9512-SX9513-driver.patch +++ b/target/linux/ramips/patches-6.6/870-Input-sx951x-add-Semtech-SX9512-SX9513-driver.patch @@ -25,8 +25,6 @@ Signed-off-by: David Bauer 3 files changed, 502 insertions(+) create mode 100644 drivers/input/keyboard/sx951x.c -diff --git a/drivers/input/keyboard/Kconfig b/drivers/input/keyboard/Kconfig -index 1d0c5f4c0f99..6dc397389c64 100644 --- a/drivers/input/keyboard/Kconfig +++ b/drivers/input/keyboard/Kconfig @@ -616,6 +616,17 @@ config KEYBOARD_SUNKBD @@ -47,11 +45,9 @@ index 1d0c5f4c0f99..6dc397389c64 100644 config KEYBOARD_SH_KEYSC tristate "SuperH KEYSC keypad support" depends on ARCH_SHMOBILE || COMPILE_TEST -diff --git a/drivers/input/keyboard/Makefile b/drivers/input/keyboard/Makefile -index aecef00c5d09..e59ca83c30ec 100644 --- a/drivers/input/keyboard/Makefile +++ b/drivers/input/keyboard/Makefile -@@ -66,6 +66,7 @@ obj-$(CONFIG_KEYBOARD_STOWAWAY) += stowaway.o +@@ -66,6 +66,7 @@ obj-$(CONFIG_KEYBOARD_STOWAWAY) += stow obj-$(CONFIG_KEYBOARD_ST_KEYSCAN) += st-keyscan.o obj-$(CONFIG_KEYBOARD_SUN4I_LRADC) += sun4i-lradc-keys.o obj-$(CONFIG_KEYBOARD_SUNKBD) += sunkbd.o @@ -59,9 +55,6 @@ index aecef00c5d09..e59ca83c30ec 100644 obj-$(CONFIG_KEYBOARD_TC3589X) += tc3589x-keypad.o obj-$(CONFIG_KEYBOARD_TEGRA) += tegra-kbc.o obj-$(CONFIG_KEYBOARD_TM2_TOUCHKEY) += tm2-touchkey.o -diff --git a/drivers/input/keyboard/sx951x.c b/drivers/input/keyboard/sx951x.c -new file mode 100644 -index 000000000000..66355036aa95 --- /dev/null +++ b/drivers/input/keyboard/sx951x.c @@ -0,0 +1,490 @@ @@ -555,6 +548,3 @@ index 000000000000..66355036aa95 +MODULE_DESCRIPTION("Semtech SX9512/SX9513 driver"); +MODULE_AUTHOR("David Bauer "); +MODULE_LICENSE("GPL"); --- -2.47.2 - diff --git a/target/linux/starfive/patches-6.6/0109-usb-xhci-To-improve-performance-usb-using-lowmem-for.patch b/target/linux/starfive/patches-6.6/0109-usb-xhci-To-improve-performance-usb-using-lowmem-for.patch index 2da2b322b00..052972af30d 100644 --- a/target/linux/starfive/patches-6.6/0109-usb-xhci-To-improve-performance-usb-using-lowmem-for.patch +++ b/target/linux/starfive/patches-6.6/0109-usb-xhci-To-improve-performance-usb-using-lowmem-for.patch @@ -50,7 +50,7 @@ Signed-off-by: minda.chen #include "xhci.h" #include "xhci-trace.h" -@@ -1842,6 +1843,7 @@ xhci_free_interrupter(struct xhci_hcd *x +@@ -1878,6 +1879,7 @@ EXPORT_SYMBOL_GPL(xhci_remove_secondary_ void xhci_mem_cleanup(struct xhci_hcd *xhci) { struct device *dev = xhci_to_hcd(xhci)->self.sysdev; @@ -58,7 +58,7 @@ Signed-off-by: minda.chen int i, j, num_ports; cancel_delayed_work_sync(&xhci->cmd_timer); -@@ -1887,6 +1889,13 @@ void xhci_mem_cleanup(struct xhci_hcd *x +@@ -1928,6 +1930,13 @@ void xhci_mem_cleanup(struct xhci_hcd *x xhci_dbg_trace(xhci, trace_xhci_dbg_init, "Freed medium stream array pool"); @@ -72,9 +72,9 @@ Signed-off-by: minda.chen if (xhci->dcbaa) dma_free_coherent(dev, sizeof(*xhci->dcbaa), xhci->dcbaa, xhci->dcbaa->dma); -@@ -2300,6 +2309,55 @@ xhci_add_interrupter(struct xhci_hcd *xh - return 0; +@@ -2399,6 +2408,55 @@ xhci_create_secondary_interrupter(struct } + EXPORT_SYMBOL_GPL(xhci_create_secondary_interrupter); +int xhci_setup_local_lowmem(struct xhci_hcd *xhci, size_t size) +{ @@ -127,8 +127,8 @@ Signed-off-by: minda.chen + int xhci_mem_init(struct xhci_hcd *xhci, gfp_t flags) { - dma_addr_t dma; -@@ -2437,6 +2495,12 @@ int xhci_mem_init(struct xhci_hcd *xhci, + struct xhci_interrupter *ir; +@@ -2540,6 +2598,12 @@ int xhci_mem_init(struct xhci_hcd *xhci, xhci->isoc_bei_interval = AVOID_BEI_INTERVAL_MAX; @@ -181,7 +181,7 @@ Signed-off-by: minda.chen #include "xhci.h" #include "xhci-trace.h" -@@ -1286,6 +1288,55 @@ static void xhci_unmap_temp_buf(struct u +@@ -1312,6 +1314,55 @@ static void xhci_unmap_temp_buf(struct u urb->transfer_buffer = NULL; } @@ -237,7 +237,7 @@ Signed-off-by: minda.chen /* * Bypass the DMA mapping if URB is suitable for Immediate Transfer (IDT), * we'll copy the actual data into the TRB address register. This is limited to -@@ -1306,9 +1357,11 @@ static int xhci_map_urb_for_dma(struct u +@@ -1332,9 +1383,11 @@ static int xhci_map_urb_for_dma(struct u if (xhci_urb_temp_buffer_required(hcd, urb)) return xhci_map_temp_buffer(hcd, urb); } @@ -249,7 +249,7 @@ Signed-off-by: minda.chen static void xhci_unmap_urb_for_dma(struct usb_hcd *hcd, struct urb *urb) { struct xhci_hcd *xhci; -@@ -1321,8 +1374,10 @@ static void xhci_unmap_urb_for_dma(struc +@@ -1347,8 +1400,10 @@ static void xhci_unmap_urb_for_dma(struc if ((xhci->quirks & XHCI_SG_TRB_CACHE_SIZE_QUIRK) && unmap_temp_buf) xhci_unmap_temp_buf(hcd, urb); @@ -263,7 +263,7 @@ Signed-off-by: minda.chen /** --- a/drivers/usb/host/xhci.h +++ b/drivers/usb/host/xhci.h -@@ -1509,6 +1509,13 @@ struct xhci_hub { +@@ -1506,6 +1506,13 @@ struct xhci_hub { u8 min_rev; }; @@ -277,7 +277,7 @@ Signed-off-by: minda.chen /* There is one xhci_hcd structure per controller */ struct xhci_hcd { struct usb_hcd *main_hcd; -@@ -1663,6 +1670,8 @@ struct xhci_hcd { +@@ -1660,6 +1667,8 @@ struct xhci_hcd { #define XHCI_CDNS_SCTX_QUIRK BIT_ULL(48) #define XHCI_ETRON_HOST BIT_ULL(49) @@ -286,7 +286,7 @@ Signed-off-by: minda.chen unsigned int num_active_eps; unsigned int limit_active_eps; struct xhci_port *hw_ports; -@@ -1692,6 +1701,8 @@ struct xhci_hcd { +@@ -1689,6 +1698,8 @@ struct xhci_hcd { struct list_head regset_list; void *dbc; diff --git a/target/linux/starfive/patches-6.6/0110-usb-xhci-using-dma_alloc_noncoherent-to-alloc-low-me.patch b/target/linux/starfive/patches-6.6/0110-usb-xhci-using-dma_alloc_noncoherent-to-alloc-low-me.patch index fad99301e6a..b955ba81035 100644 --- a/target/linux/starfive/patches-6.6/0110-usb-xhci-using-dma_alloc_noncoherent-to-alloc-low-me.patch +++ b/target/linux/starfive/patches-6.6/0110-usb-xhci-using-dma_alloc_noncoherent-to-alloc-low-me.patch @@ -16,7 +16,7 @@ Signed-off-by: Minda Chen --- a/drivers/usb/host/xhci-mem.c +++ b/drivers/usb/host/xhci-mem.c -@@ -1891,7 +1891,8 @@ void xhci_mem_cleanup(struct xhci_hcd *x +@@ -1932,7 +1932,8 @@ void xhci_mem_cleanup(struct xhci_hcd *x if (xhci->lowmem_pool.pool) { pool = &xhci->lowmem_pool; @@ -26,7 +26,7 @@ Signed-off-by: Minda Chen gen_pool_destroy(pool->pool); pool->pool = NULL; } -@@ -2320,15 +2321,15 @@ int xhci_setup_local_lowmem(struct xhci_ +@@ -2419,15 +2420,15 @@ int xhci_setup_local_lowmem(struct xhci_ if (!pool->pool) { /* minimal alloc one page */ pool->pool = gen_pool_create(PAGE_SHIFT, dev_to_node(hcd->self.sysdev)); @@ -48,7 +48,7 @@ Signed-off-by: Minda Chen goto destroy_pool; } -@@ -2338,11 +2339,11 @@ int xhci_setup_local_lowmem(struct xhci_ +@@ -2437,11 +2438,11 @@ int xhci_setup_local_lowmem(struct xhci_ * for it. */ err = gen_pool_add_virt(pool->pool, (unsigned long)buffer, @@ -62,7 +62,7 @@ Signed-off-by: Minda Chen goto destroy_pool; } -@@ -2365,7 +2366,7 @@ int xhci_mem_init(struct xhci_hcd *xhci, +@@ -2465,7 +2466,7 @@ int xhci_mem_init(struct xhci_hcd *xhci, unsigned int val, val2; u64 val_64; u32 page_size, temp; @@ -71,7 +71,7 @@ Signed-off-by: Minda Chen INIT_LIST_HEAD(&xhci->cmd_list); -@@ -2496,9 +2497,11 @@ int xhci_mem_init(struct xhci_hcd *xhci, +@@ -2599,9 +2600,11 @@ int xhci_mem_init(struct xhci_hcd *xhci, xhci->isoc_bei_interval = AVOID_BEI_INTERVAL_MAX; if (xhci->quirks & XHCI_LOCAL_BUFFER) {