diff options
| author | Martin Schiller | 2026-02-06 10:24:44 +0000 |
|---|---|---|
| committer | Hauke Mehrtens | 2026-02-07 17:15:49 +0000 |
| commit | be13eed2edd0c8db73fccb857495c1f0ac5d17cf (patch) | |
| tree | 5d13ab4d4d8e4e7b955db9b22d3453d13499507b | |
| parent | b13a7deab2551989b7b04cbc0dc4812767642078 (diff) | |
| download | openwrt-be13eed2edd0c8db73fccb857495c1f0ac5d17cf.tar.gz | |
kernel: bump 5.15 to 5.15.198
Manually adapted:
generic/backport-5.15/601-v5.18-page_pool-Add-recycle-stats.patch
upstream changes to page_pool_recycle_in_ring():
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-5.15.y&id=d69f28ef7cdafdcf37ee310f38b1399e7d05f9a8
ipq40xx/patches-5.15/401-mmc-sdhci-msm-comment-unused-sdhci_msm_set_clock.patch
upstream changes to sdhci_msm_set_clock():
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-5.15.y&id=d685237855bf0f27fe2ac9c321374ead30e744c8
ipq807x/patches-5.15/0113-remoteproc-qcom-Add-secure-PIL-support.patch
upstream changes to MAX_HALT_REG
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-5.15.y&id=140e6cd7b092525c151f15952cca5b8df9dcc74a
ipq807x/patches-5.15/0116-remoteproc-qcom-Update-regmap-offsets-for-halt-regis.patch
upstream changes to MAX_HALT_REG
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-5.15.y&id=140e6cd7b092525c151f15952cca5b8df9dcc74a
Signed-off-by: Martin Schiller <ms@dev.tdt.de>
Link: https://github.com/openwrt/openwrt/pull/21040
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
39 files changed, 109 insertions, 134 deletions
diff --git a/include/kernel-5.15 b/include/kernel-5.15 index 9c8f79fe7b..441caf4ca9 100644 --- a/include/kernel-5.15 +++ b/include/kernel-5.15 @@ -1,2 +1,2 @@ -LINUX_VERSION-5.15 = .197 -LINUX_KERNEL_HASH-5.15.197 = fd218df8e2107a4443b6c29fef7f95aad167031e0fbdbc7a858ae8471360668a +LINUX_VERSION-5.15 = .198 +LINUX_KERNEL_HASH-5.15.198 = 5d4c0994580dd3bbd5ffc5fcb81c22dd305b844c9d8c7b176cc41b28f7e29743 diff --git a/target/linux/bcm27xx/patches-5.15/950-0163-hid-usb-Add-device-quirks-for-Freeway-Airmouse-T3-an.patch b/target/linux/bcm27xx/patches-5.15/950-0163-hid-usb-Add-device-quirks-for-Freeway-Airmouse-T3-an.patch index ae995b4ef5..30af4f0936 100644 --- a/target/linux/bcm27xx/patches-5.15/950-0163-hid-usb-Add-device-quirks-for-Freeway-Airmouse-T3-an.patch +++ b/target/linux/bcm27xx/patches-5.15/950-0163-hid-usb-Add-device-quirks-for-Freeway-Airmouse-T3-an.patch @@ -33,7 +33,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org> #define USB_VENDOR_ID_BELKIN 0x050d #define USB_DEVICE_ID_FLIP_KVM 0x3201 -@@ -1349,6 +1352,9 @@ +@@ -1350,6 +1353,9 @@ #define USB_VENDOR_ID_XAT 0x2505 #define USB_DEVICE_ID_XAT_CSR 0x0220 diff --git a/target/linux/bcm27xx/patches-5.15/950-0166-xhci-Use-more-event-ring-segment-table-entries.patch b/target/linux/bcm27xx/patches-5.15/950-0166-xhci-Use-more-event-ring-segment-table-entries.patch index 3a7bcdd449..8ca9a0ddc9 100644 --- a/target/linux/bcm27xx/patches-5.15/950-0166-xhci-Use-more-event-ring-segment-table-entries.patch +++ b/target/linux/bcm27xx/patches-5.15/950-0166-xhci-Use-more-event-ring-segment-table-entries.patch @@ -22,7 +22,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com> --- a/drivers/usb/host/xhci-mem.c +++ b/drivers/usb/host/xhci-mem.c -@@ -2284,6 +2284,7 @@ xhci_alloc_interrupter(struct xhci_hcd * +@@ -2278,6 +2278,7 @@ xhci_alloc_interrupter(struct xhci_hcd * { struct device *dev = xhci_to_hcd(xhci)->self.sysdev; struct xhci_interrupter *ir; @@ -30,7 +30,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com> u64 erst_base; u32 erst_size; int ret; -@@ -2304,7 +2305,11 @@ xhci_alloc_interrupter(struct xhci_hcd * +@@ -2298,7 +2299,11 @@ xhci_alloc_interrupter(struct xhci_hcd * return NULL; ir->ir_set = &xhci->run_regs->ir_set[intr_num]; @@ -43,7 +43,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com> 0, flags); if (!ir->event_ring) { xhci_warn(xhci, "Failed to allocate interrupter %d event ring\n", intr_num); -@@ -2320,7 +2325,7 @@ xhci_alloc_interrupter(struct xhci_hcd * +@@ -2314,7 +2319,7 @@ xhci_alloc_interrupter(struct xhci_hcd * /* 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; diff --git a/target/linux/bcm27xx/patches-5.15/950-0239-PCI-brcmstb-Add-DT-property-to-control-L1SS.patch b/target/linux/bcm27xx/patches-5.15/950-0239-PCI-brcmstb-Add-DT-property-to-control-L1SS.patch index 825433bb48..9c43c59e4a 100644 --- a/target/linux/bcm27xx/patches-5.15/950-0239-PCI-brcmstb-Add-DT-property-to-control-L1SS.patch +++ b/target/linux/bcm27xx/patches-5.15/950-0239-PCI-brcmstb-Add-DT-property-to-control-L1SS.patch @@ -18,7 +18,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com> --- a/drivers/pci/controller/pcie-brcmstb.c +++ b/drivers/pci/controller/pcie-brcmstb.c -@@ -116,8 +116,9 @@ +@@ -115,8 +115,9 @@ PCIE_MISC_CPU_2_PCIE_MEM_WIN0_LIMIT_HI + ((win) * 8) #define PCIE_MISC_HARD_PCIE_HARD_DEBUG 0x4204 @@ -30,7 +30,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com> #define PCIE_INTR2_CPU_BASE 0x4300 -@@ -283,6 +284,7 @@ struct brcm_pcie { +@@ -282,6 +283,7 @@ struct brcm_pcie { struct clk *clk; struct device_node *np; bool ssc; @@ -38,7 +38,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com> int gen; u64 msi_target_addr; struct brcm_msi *msi; -@@ -1033,12 +1035,25 @@ static int brcm_pcie_setup(struct brcm_p +@@ -1029,12 +1031,25 @@ static int brcm_pcie_setup(struct brcm_p PCIE_RC_CFG_VENDOR_VENDOR_SPECIFIC_REG1_ENDIAN_MODE_BAR2_MASK); writel(tmp, base + PCIE_RC_CFG_VENDOR_VENDOR_SPECIFIC_REG1); @@ -69,7 +69,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com> writel(tmp, base + PCIE_MISC_HARD_PCIE_HARD_DEBUG); return 0; -@@ -1267,6 +1282,7 @@ static int brcm_pcie_probe(struct platfo +@@ -1263,6 +1278,7 @@ static int brcm_pcie_probe(struct platfo pcie->gen = (ret < 0) ? 0 : ret; pcie->ssc = of_property_read_bool(np, "brcm,enable-ssc"); diff --git a/target/linux/bcm27xx/patches-5.15/950-0314-PCI-brcmstb-Restore-initial-fundamental-reset.patch b/target/linux/bcm27xx/patches-5.15/950-0314-PCI-brcmstb-Restore-initial-fundamental-reset.patch index e2c900c07d..bd396c4ca8 100644 --- a/target/linux/bcm27xx/patches-5.15/950-0314-PCI-brcmstb-Restore-initial-fundamental-reset.patch +++ b/target/linux/bcm27xx/patches-5.15/950-0314-PCI-brcmstb-Restore-initial-fundamental-reset.patch @@ -24,7 +24,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com> --- a/drivers/pci/controller/pcie-brcmstb.c +++ b/drivers/pci/controller/pcie-brcmstb.c -@@ -879,6 +879,8 @@ static int brcm_pcie_setup(struct brcm_p +@@ -878,6 +878,8 @@ static int brcm_pcie_setup(struct brcm_p /* Reset the bridge */ pcie->bridge_sw_init_set(pcie, 1); diff --git a/target/linux/bcm27xx/patches-5.15/950-0322-PCI-brcmstb-Advertise-MSI-X-support.patch b/target/linux/bcm27xx/patches-5.15/950-0322-PCI-brcmstb-Advertise-MSI-X-support.patch index 6a76331646..2f47d9a013 100644 --- a/target/linux/bcm27xx/patches-5.15/950-0322-PCI-brcmstb-Advertise-MSI-X-support.patch +++ b/target/linux/bcm27xx/patches-5.15/950-0322-PCI-brcmstb-Advertise-MSI-X-support.patch @@ -15,7 +15,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com> --- a/drivers/pci/controller/pcie-brcmstb.c +++ b/drivers/pci/controller/pcie-brcmstb.c -@@ -471,7 +471,8 @@ static struct irq_chip brcm_msi_irq_chip +@@ -470,7 +470,8 @@ static struct irq_chip brcm_msi_irq_chip static struct msi_domain_info brcm_msi_domain_info = { /* Multi MSI is supported by the controller, but not by this driver */ diff --git a/target/linux/bcm27xx/patches-5.15/950-0468-usb-xhci-workaround-for-bogus-SET_DEQ_PENDING-endpoi.patch b/target/linux/bcm27xx/patches-5.15/950-0468-usb-xhci-workaround-for-bogus-SET_DEQ_PENDING-endpoi.patch index f9e24ab3ea..3c3f8c235f 100644 --- a/target/linux/bcm27xx/patches-5.15/950-0468-usb-xhci-workaround-for-bogus-SET_DEQ_PENDING-endpoi.patch +++ b/target/linux/bcm27xx/patches-5.15/950-0468-usb-xhci-workaround-for-bogus-SET_DEQ_PENDING-endpoi.patch @@ -26,7 +26,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com> --- a/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c -@@ -677,9 +677,9 @@ deq_found: +@@ -675,9 +675,9 @@ deq_found: } if ((ep->ep_state & SET_DEQ_PENDING)) { diff --git a/target/linux/bcm27xx/patches-5.15/950-0600-xhci-quirks-add-link-TRB-quirk-for-VL805.patch b/target/linux/bcm27xx/patches-5.15/950-0600-xhci-quirks-add-link-TRB-quirk-for-VL805.patch index 24a37399b1..871d3b665c 100644 --- a/target/linux/bcm27xx/patches-5.15/950-0600-xhci-quirks-add-link-TRB-quirk-for-VL805.patch +++ b/target/linux/bcm27xx/patches-5.15/950-0600-xhci-quirks-add-link-TRB-quirk-for-VL805.patch @@ -32,7 +32,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com> if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA && --- a/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c -@@ -667,6 +667,15 @@ static int xhci_move_dequeue_past_td(str +@@ -665,6 +665,15 @@ static int xhci_move_dequeue_past_td(str } while (!cycle_found || !td_last_trb_found); deq_found: diff --git a/target/linux/bcm27xx/patches-5.15/950-0601-xhci-correct-room_on_ring-for-cases-where-there-is-a.patch b/target/linux/bcm27xx/patches-5.15/950-0601-xhci-correct-room_on_ring-for-cases-where-there-is-a.patch index 1ec02a5d43..9bfa65c224 100644 --- a/target/linux/bcm27xx/patches-5.15/950-0601-xhci-correct-room_on_ring-for-cases-where-there-is-a.patch +++ b/target/linux/bcm27xx/patches-5.15/950-0601-xhci-correct-room_on_ring-for-cases-where-there-is-a.patch @@ -14,7 +14,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com> --- a/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c -@@ -310,6 +310,12 @@ static inline int room_on_ring(struct xh +@@ -308,6 +308,12 @@ static inline int room_on_ring(struct xh return 0; if (ring->type != TYPE_COMMAND && ring->type != TYPE_EVENT) { diff --git a/target/linux/bcm27xx/patches-5.15/950-0605-xhci-refactor-out-TRBS_PER_SEGMENT-define-in-runtime.patch b/target/linux/bcm27xx/patches-5.15/950-0605-xhci-refactor-out-TRBS_PER_SEGMENT-define-in-runtime.patch index c3bc4c9797..453a1fca96 100644 --- a/target/linux/bcm27xx/patches-5.15/950-0605-xhci-refactor-out-TRBS_PER_SEGMENT-define-in-runtime.patch +++ b/target/linux/bcm27xx/patches-5.15/950-0605-xhci-refactor-out-TRBS_PER_SEGMENT-define-in-runtime.patch @@ -46,8 +46,8 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com> } } -@@ -139,15 +140,17 @@ static void xhci_link_rings(struct xhci_ - (xhci->quirks & XHCI_AMD_0x96_HOST))); +@@ -136,15 +137,17 @@ static void xhci_link_rings(struct xhci_ + chain_links = xhci_link_chain_quirk(xhci, ring->type); next = ring->enq_seg->next; - xhci_link_segments(ring->enq_seg, first, ring->type, chain_links); @@ -69,7 +69,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com> |= cpu_to_le32(LINK_TOGGLE); ring->last_seg = last; } -@@ -314,14 +317,15 @@ void xhci_initialize_ring_info(struct xh +@@ -311,14 +314,15 @@ void xhci_initialize_ring_info(struct xh * Each segment has a link TRB, and leave an extra TRB for SW * accounting purpose */ @@ -88,7 +88,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com> { struct xhci_segment *prev; bool chain_links; -@@ -350,12 +354,12 @@ static int xhci_alloc_segments_for_ring( +@@ -344,12 +348,12 @@ static int xhci_alloc_segments_for_ring( } return -ENOMEM; } @@ -103,7 +103,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com> *last = prev; return 0; -@@ -387,16 +391,17 @@ struct xhci_ring *xhci_ring_alloc(struct +@@ -381,16 +385,17 @@ struct xhci_ring *xhci_ring_alloc(struct if (num_segs == 0) return ring; @@ -124,7 +124,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com> cpu_to_le32(LINK_TOGGLE); } xhci_initialize_ring_info(ring, cycle_state); -@@ -429,16 +434,15 @@ int xhci_ring_expansion(struct xhci_hcd +@@ -423,16 +428,15 @@ int xhci_ring_expansion(struct xhci_hcd unsigned int num_segs_needed; int ret; @@ -145,7 +145,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com> if (ret) return -ENOMEM; -@@ -1828,7 +1832,7 @@ int xhci_alloc_erst(struct xhci_hcd *xhc +@@ -1822,7 +1826,7 @@ int xhci_alloc_erst(struct xhci_hcd *xhc for (val = 0; val < evt_ring->num_segs; val++) { entry = &erst->entries[val]; entry->seg_addr = cpu_to_le64(seg->dma); @@ -205,7 +205,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com> xhci_err(xhci, "Tried to move enqueue past ring segment\n"); return; } -@@ -3324,7 +3327,7 @@ irqreturn_t xhci_irq(struct usb_hcd *hcd +@@ -3322,7 +3325,7 @@ irqreturn_t xhci_irq(struct usb_hcd *hcd * that clears the EHB. */ while (xhci_handle_event(xhci, ir) > 0) { @@ -214,7 +214,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com> continue; xhci_update_erst_dequeue(xhci, ir, event_ring_deq); event_ring_deq = ir->event_ring->dequeue; -@@ -3466,7 +3469,8 @@ static int prepare_ring(struct xhci_hcd +@@ -3462,7 +3465,8 @@ static int prepare_ring(struct xhci_hcd } } diff --git a/target/linux/bcm27xx/patches-5.15/950-0606-usb-xhci-add-VLI_TRB_CACHE_BUG-quirk.patch b/target/linux/bcm27xx/patches-5.15/950-0606-usb-xhci-add-VLI_TRB_CACHE_BUG-quirk.patch index eb7fdca098..df21abcee5 100644 --- a/target/linux/bcm27xx/patches-5.15/950-0606-usb-xhci-add-VLI_TRB_CACHE_BUG-quirk.patch +++ b/target/linux/bcm27xx/patches-5.15/950-0606-usb-xhci-add-VLI_TRB_CACHE_BUG-quirk.patch @@ -33,7 +33,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com> --- a/drivers/usb/host/xhci-mem.c +++ b/drivers/usb/host/xhci-mem.c -@@ -392,6 +392,17 @@ struct xhci_ring *xhci_ring_alloc(struct +@@ -386,6 +386,17 @@ struct xhci_ring *xhci_ring_alloc(struct return ring; ring->trbs_per_seg = TRBS_PER_SEGMENT; diff --git a/target/linux/bcm27xx/patches-5.15/950-0717-usb-xhci-add-a-quirk-for-Superspeed-bulk-OUT-transfe.patch b/target/linux/bcm27xx/patches-5.15/950-0717-usb-xhci-add-a-quirk-for-Superspeed-bulk-OUT-transfe.patch index f272a960b1..51adf33506 100644 --- a/target/linux/bcm27xx/patches-5.15/950-0717-usb-xhci-add-a-quirk-for-Superspeed-bulk-OUT-transfe.patch +++ b/target/linux/bcm27xx/patches-5.15/950-0717-usb-xhci-add-a-quirk-for-Superspeed-bulk-OUT-transfe.patch @@ -36,7 +36,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com> if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA && --- a/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c -@@ -3779,14 +3779,15 @@ int xhci_queue_bulk_tx(struct xhci_hcd * +@@ -3775,14 +3775,15 @@ int xhci_queue_bulk_tx(struct xhci_hcd * unsigned int num_trbs; unsigned int start_cycle, num_sgs = 0; unsigned int enqd_len, block_len, trb_buff_len, full_len; @@ -54,7 +54,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com> full_len = urb->transfer_buffer_length; /* If we have scatter/gather list, we use it. */ if (urb->num_sgs && !(urb->transfer_flags & URB_DMA_MAP_SINGLE)) { -@@ -3823,6 +3824,17 @@ int xhci_queue_bulk_tx(struct xhci_hcd * +@@ -3819,6 +3820,17 @@ int xhci_queue_bulk_tx(struct xhci_hcd * start_cycle = ring->cycle_state; send_addr = addr; @@ -72,7 +72,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com> /* Queue the TRBs, even if they are zero-length */ for (enqd_len = 0; first_trb || enqd_len < full_len; enqd_len += trb_buff_len) { -@@ -3835,6 +3847,11 @@ int xhci_queue_bulk_tx(struct xhci_hcd * +@@ -3831,6 +3843,11 @@ int xhci_queue_bulk_tx(struct xhci_hcd * if (enqd_len + trb_buff_len > full_len) trb_buff_len = full_len - enqd_len; diff --git a/target/linux/bcm27xx/patches-5.15/950-0747-usb-xhci-rework-XHCI_VLI_SS_BULK_OUT_BUG-quirk.patch b/target/linux/bcm27xx/patches-5.15/950-0747-usb-xhci-rework-XHCI_VLI_SS_BULK_OUT_BUG-quirk.patch index a103d7ec8a..fece13a261 100644 --- a/target/linux/bcm27xx/patches-5.15/950-0747-usb-xhci-rework-XHCI_VLI_SS_BULK_OUT_BUG-quirk.patch +++ b/target/linux/bcm27xx/patches-5.15/950-0747-usb-xhci-rework-XHCI_VLI_SS_BULK_OUT_BUG-quirk.patch @@ -13,7 +13,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com> --- a/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c -@@ -3779,7 +3779,7 @@ int xhci_queue_bulk_tx(struct xhci_hcd * +@@ -3775,7 +3775,7 @@ int xhci_queue_bulk_tx(struct xhci_hcd * unsigned int num_trbs; unsigned int start_cycle, num_sgs = 0; unsigned int enqd_len, block_len, trb_buff_len, full_len; @@ -22,7 +22,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com> u32 field, length_field, remainder, maxpacket; u64 addr, send_addr; -@@ -3825,14 +3825,9 @@ int xhci_queue_bulk_tx(struct xhci_hcd * +@@ -3821,14 +3821,9 @@ int xhci_queue_bulk_tx(struct xhci_hcd * send_addr = addr; if (xhci->quirks & XHCI_VLI_SS_BULK_OUT_BUG && @@ -40,7 +40,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com> } /* Queue the TRBs, even if they are zero-length */ -@@ -3847,7 +3842,7 @@ int xhci_queue_bulk_tx(struct xhci_hcd * +@@ -3843,7 +3838,7 @@ int xhci_queue_bulk_tx(struct xhci_hcd * if (enqd_len + trb_buff_len > full_len) trb_buff_len = full_len - enqd_len; diff --git a/target/linux/bcm47xx/patches-5.15/209-b44-register-adm-switch.patch b/target/linux/bcm47xx/patches-5.15/209-b44-register-adm-switch.patch index ddf9d0dfb9..502f93bd8d 100644 --- a/target/linux/bcm47xx/patches-5.15/209-b44-register-adm-switch.patch +++ b/target/linux/bcm47xx/patches-5.15/209-b44-register-adm-switch.patch @@ -19,7 +19,7 @@ Subject: [PATCH 210/210] b44: register adm switch #include <linux/uaccess.h> #include <asm/io.h> -@@ -2247,6 +2249,69 @@ static void b44_adjust_link(struct net_d +@@ -2250,6 +2252,69 @@ static void b44_adjust_link(struct net_d } } @@ -89,7 +89,7 @@ Subject: [PATCH 210/210] b44: register adm switch static int b44_register_phy_one(struct b44 *bp) { __ETHTOOL_DECLARE_LINK_MODE_MASK(mask) = { 0, }; -@@ -2283,6 +2348,9 @@ static int b44_register_phy_one(struct b +@@ -2286,6 +2351,9 @@ static int b44_register_phy_one(struct b if (!mdiobus_is_registered_device(bp->mii_bus, bp->phy_addr) && (sprom->boardflags_lo & (B44_BOARDFLAG_ROBO | B44_BOARDFLAG_ADM))) { @@ -99,7 +99,7 @@ Subject: [PATCH 210/210] b44: register adm switch dev_info(sdev->dev, "could not find PHY at %i, use fixed one\n", bp->phy_addr); -@@ -2477,6 +2545,7 @@ static void b44_remove_one(struct ssb_de +@@ -2480,6 +2548,7 @@ static void b44_remove_one(struct ssb_de unregister_netdev(dev); if (bp->flags & B44_FLAG_EXTERNAL_PHY) b44_unregister_phy_one(bp); diff --git a/target/linux/bcm47xx/patches-5.15/210-b44_phy_fix.patch b/target/linux/bcm47xx/patches-5.15/210-b44_phy_fix.patch index 9c16da4f57..ff3871f53f 100644 --- a/target/linux/bcm47xx/patches-5.15/210-b44_phy_fix.patch +++ b/target/linux/bcm47xx/patches-5.15/210-b44_phy_fix.patch @@ -43,7 +43,7 @@ if (bp->flags & B44_FLAG_EXTERNAL_PHY) return 0; -@@ -2177,6 +2202,8 @@ static int b44_get_invariants(struct b44 +@@ -2180,6 +2205,8 @@ static int b44_get_invariants(struct b44 * valid PHY address. */ bp->phy_addr &= 0x1F; diff --git a/target/linux/generic/backport-5.15/601-v5.18-page_pool-Add-recycle-stats.patch b/target/linux/generic/backport-5.15/601-v5.18-page_pool-Add-recycle-stats.patch index cfcdc6e5eb..3d0710f15e 100644 --- a/target/linux/generic/backport-5.15/601-v5.18-page_pool-Add-recycle-stats.patch +++ b/target/linux/generic/backport-5.15/601-v5.18-page_pool-Add-recycle-stats.patch @@ -82,21 +82,16 @@ Signed-off-by: David S. Miller <davem@davemloft.net> if (ptr_ring_init(&pool->ring, ring_qsize, GFP_KERNEL) < 0) return -ENOMEM; -@@ -437,7 +450,12 @@ static bool page_pool_recycle_in_ring(st - else - ret = ptr_ring_produce_bh(&pool->ring, page); - -- return (ret == 0) ? true : false; -+ if (!ret) { +@@ -435,6 +448,8 @@ static bool page_pool_recycle_in_ring(st + /* BH protection not needed if current is softirq */ + in_softirq = page_pool_producer_lock(pool); + ret = !__ptr_ring_produce(&pool->ring, page); ++ if (ret) + recycle_stat_inc(pool, ring); -+ return true; -+ } -+ -+ return false; - } + page_pool_producer_unlock(pool, in_softirq); - /* Only allow direct recycling in special circumstances, into the -@@ -448,11 +466,14 @@ static bool page_pool_recycle_in_ring(st + return ret; +@@ -448,11 +463,14 @@ static bool page_pool_recycle_in_ring(st static bool page_pool_recycle_in_cache(struct page *page, struct page_pool *pool) { @@ -112,7 +107,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> return true; } -@@ -507,6 +528,7 @@ __page_pool_put_page(struct page_pool *p +@@ -507,6 +525,7 @@ __page_pool_put_page(struct page_pool *p * doing refcnt based recycle tricks, meaning another process * will be invoking put_page. */ @@ -120,7 +115,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> /* Do not replace this with page_pool_return_page() */ page_pool_release_page(pool, page); put_page(page); -@@ -520,6 +542,7 @@ void page_pool_put_page(struct page_pool +@@ -520,6 +539,7 @@ void page_pool_put_page(struct page_pool page = __page_pool_put_page(pool, page, dma_sync_size, allow_direct); if (page && !page_pool_recycle_in_ring(pool, page)) { /* Cache full, fallback to free pages */ @@ -128,7 +123,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> page_pool_return_page(pool, page); } } -@@ -667,6 +690,9 @@ static void page_pool_free(struct page_p +@@ -667,6 +687,9 @@ static void page_pool_free(struct page_p if (pool->p.flags & PP_FLAG_DMA_MAP) put_device(pool->p.dev); diff --git a/target/linux/generic/backport-5.15/603-v5.19-page_pool-Add-recycle-stats-to-page_pool_put_page_bu.patch b/target/linux/generic/backport-5.15/603-v5.19-page_pool-Add-recycle-stats-to-page_pool_put_page_bu.patch index 69d4246f92..4e76813ab5 100644 --- a/target/linux/generic/backport-5.15/603-v5.19-page_pool-Add-recycle-stats-to-page_pool_put_page_bu.patch +++ b/target/linux/generic/backport-5.15/603-v5.19-page_pool-Add-recycle-stats-to-page_pool_put_page_bu.patch @@ -37,7 +37,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com> #endif static int page_pool_init(struct page_pool *pool, -@@ -595,9 +602,13 @@ void page_pool_put_page_bulk(struct page +@@ -592,9 +599,13 @@ void page_pool_put_page_bulk(struct page /* Bulk producer into ptr_ring page_pool cache */ in_softirq = page_pool_producer_lock(pool); for (i = 0; i < bulk_len; i++) { diff --git a/target/linux/generic/backport-5.15/703-00-v5.16-net-convert-users-of-bitmap_foo-to-linkmode_foo.patch b/target/linux/generic/backport-5.15/703-00-v5.16-net-convert-users-of-bitmap_foo-to-linkmode_foo.patch index 011e6ef77c..d013aca0c6 100644 --- a/target/linux/generic/backport-5.15/703-00-v5.16-net-convert-users-of-bitmap_foo-to-linkmode_foo.patch +++ b/target/linux/generic/backport-5.15/703-00-v5.16-net-convert-users-of-bitmap_foo-to-linkmode_foo.patch @@ -747,7 +747,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> static void mvpp2_xlg_config(struct mvpp2_port *port, unsigned int mode, --- a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_ethtool.c +++ b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_ethtool.c -@@ -1182,9 +1182,8 @@ static int otx2_set_link_ksettings(struc +@@ -1190,9 +1190,8 @@ static int otx2_set_link_ksettings(struc otx2_get_link_ksettings(netdev, &cur_ks); /* Check requested modes against supported modes by hardware */ diff --git a/target/linux/generic/backport-5.15/743-v5.16-0001-net-dsa-b53-Include-all-ports-in-enabled_ports.patch b/target/linux/generic/backport-5.15/743-v5.16-0001-net-dsa-b53-Include-all-ports-in-enabled_ports.patch index afc4d88f73..d51c71a3a9 100644 --- a/target/linux/generic/backport-5.15/743-v5.16-0001-net-dsa-b53-Include-all-ports-in-enabled_ports.patch +++ b/target/linux/generic/backport-5.15/743-v5.16-0001-net-dsa-b53-Include-all-ports-in-enabled_ports.patch @@ -22,7 +22,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org> --- a/drivers/net/dsa/b53/b53_common.c +++ b/drivers/net/dsa/b53/b53_common.c -@@ -2374,7 +2374,7 @@ static const struct b53_chip_data b53_sw +@@ -2377,7 +2377,7 @@ static const struct b53_chip_data b53_sw .chip_id = BCM5325_DEVICE_ID, .dev_name = "BCM5325", .vlans = 16, @@ -31,7 +31,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org> .arl_bins = 2, .arl_buckets = 1024, .imp_port = 5, -@@ -2385,7 +2385,7 @@ static const struct b53_chip_data b53_sw +@@ -2388,7 +2388,7 @@ static const struct b53_chip_data b53_sw .chip_id = BCM5365_DEVICE_ID, .dev_name = "BCM5365", .vlans = 256, @@ -40,7 +40,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org> .arl_bins = 2, .arl_buckets = 1024, .imp_port = 5, -@@ -2396,7 +2396,7 @@ static const struct b53_chip_data b53_sw +@@ -2399,7 +2399,7 @@ static const struct b53_chip_data b53_sw .chip_id = BCM5389_DEVICE_ID, .dev_name = "BCM5389", .vlans = 4096, @@ -49,7 +49,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org> .arl_bins = 4, .arl_buckets = 1024, .imp_port = 8, -@@ -2410,7 +2410,7 @@ static const struct b53_chip_data b53_sw +@@ -2413,7 +2413,7 @@ static const struct b53_chip_data b53_sw .chip_id = BCM5395_DEVICE_ID, .dev_name = "BCM5395", .vlans = 4096, @@ -58,7 +58,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org> .arl_bins = 4, .arl_buckets = 1024, .imp_port = 8, -@@ -2424,7 +2424,7 @@ static const struct b53_chip_data b53_sw +@@ -2427,7 +2427,7 @@ static const struct b53_chip_data b53_sw .chip_id = BCM5397_DEVICE_ID, .dev_name = "BCM5397", .vlans = 4096, @@ -67,7 +67,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org> .arl_bins = 4, .arl_buckets = 1024, .imp_port = 8, -@@ -2438,7 +2438,7 @@ static const struct b53_chip_data b53_sw +@@ -2441,7 +2441,7 @@ static const struct b53_chip_data b53_sw .chip_id = BCM5398_DEVICE_ID, .dev_name = "BCM5398", .vlans = 4096, @@ -76,7 +76,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org> .arl_bins = 4, .arl_buckets = 1024, .imp_port = 8, -@@ -2452,7 +2452,7 @@ static const struct b53_chip_data b53_sw +@@ -2455,7 +2455,7 @@ static const struct b53_chip_data b53_sw .chip_id = BCM53115_DEVICE_ID, .dev_name = "BCM53115", .vlans = 4096, @@ -85,7 +85,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org> .arl_bins = 4, .arl_buckets = 1024, .vta_regs = B53_VTA_REGS, -@@ -2466,7 +2466,7 @@ static const struct b53_chip_data b53_sw +@@ -2469,7 +2469,7 @@ static const struct b53_chip_data b53_sw .chip_id = BCM53125_DEVICE_ID, .dev_name = "BCM53125", .vlans = 4096, @@ -94,7 +94,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org> .arl_bins = 4, .arl_buckets = 1024, .imp_port = 8, -@@ -2508,7 +2508,7 @@ static const struct b53_chip_data b53_sw +@@ -2511,7 +2511,7 @@ static const struct b53_chip_data b53_sw .chip_id = BCM53010_DEVICE_ID, .dev_name = "BCM53010", .vlans = 4096, @@ -103,7 +103,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org> .arl_bins = 4, .arl_buckets = 1024, .imp_port = 8, -@@ -2550,7 +2550,7 @@ static const struct b53_chip_data b53_sw +@@ -2553,7 +2553,7 @@ static const struct b53_chip_data b53_sw .chip_id = BCM53018_DEVICE_ID, .dev_name = "BCM53018", .vlans = 4096, @@ -112,7 +112,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org> .arl_bins = 4, .arl_buckets = 1024, .imp_port = 8, -@@ -2564,7 +2564,7 @@ static const struct b53_chip_data b53_sw +@@ -2567,7 +2567,7 @@ static const struct b53_chip_data b53_sw .chip_id = BCM53019_DEVICE_ID, .dev_name = "BCM53019", .vlans = 4096, @@ -121,7 +121,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org> .arl_bins = 4, .arl_buckets = 1024, .imp_port = 8, -@@ -2706,7 +2706,6 @@ static int b53_switch_init(struct b53_de +@@ -2709,7 +2709,6 @@ static int b53_switch_init(struct b53_de dev->cpu_port = 5; } diff --git a/target/linux/generic/backport-5.15/743-v5.16-0004-net-dsa-b53-Drop-unused-cpu_port-field.patch b/target/linux/generic/backport-5.15/743-v5.16-0004-net-dsa-b53-Drop-unused-cpu_port-field.patch index ff89ada250..f03e090848 100644 --- a/target/linux/generic/backport-5.15/743-v5.16-0004-net-dsa-b53-Drop-unused-cpu_port-field.patch +++ b/target/linux/generic/backport-5.15/743-v5.16-0004-net-dsa-b53-Drop-unused-cpu_port-field.patch @@ -19,7 +19,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org> --- a/drivers/net/dsa/b53/b53_common.c +++ b/drivers/net/dsa/b53/b53_common.c -@@ -2372,7 +2372,6 @@ static const struct b53_chip_data b53_sw +@@ -2375,7 +2375,6 @@ static const struct b53_chip_data b53_sw .arl_bins = 2, .arl_buckets = 1024, .imp_port = 5, @@ -27,7 +27,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org> .duplex_reg = B53_DUPLEX_STAT_FE, }, { -@@ -2383,7 +2382,6 @@ static const struct b53_chip_data b53_sw +@@ -2386,7 +2385,6 @@ static const struct b53_chip_data b53_sw .arl_bins = 2, .arl_buckets = 1024, .imp_port = 5, @@ -35,7 +35,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org> .duplex_reg = B53_DUPLEX_STAT_FE, }, { -@@ -2394,7 +2392,6 @@ static const struct b53_chip_data b53_sw +@@ -2397,7 +2395,6 @@ static const struct b53_chip_data b53_sw .arl_bins = 4, .arl_buckets = 1024, .imp_port = 8, @@ -43,7 +43,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org> .vta_regs = B53_VTA_REGS, .duplex_reg = B53_DUPLEX_STAT_GE, .jumbo_pm_reg = B53_JUMBO_PORT_MASK, -@@ -2408,7 +2405,6 @@ static const struct b53_chip_data b53_sw +@@ -2411,7 +2408,6 @@ static const struct b53_chip_data b53_sw .arl_bins = 4, .arl_buckets = 1024, .imp_port = 8, @@ -51,7 +51,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org> .vta_regs = B53_VTA_REGS, .duplex_reg = B53_DUPLEX_STAT_GE, .jumbo_pm_reg = B53_JUMBO_PORT_MASK, -@@ -2422,7 +2418,6 @@ static const struct b53_chip_data b53_sw +@@ -2425,7 +2421,6 @@ static const struct b53_chip_data b53_sw .arl_bins = 4, .arl_buckets = 1024, .imp_port = 8, @@ -59,7 +59,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org> .vta_regs = B53_VTA_REGS_9798, .duplex_reg = B53_DUPLEX_STAT_GE, .jumbo_pm_reg = B53_JUMBO_PORT_MASK, -@@ -2436,7 +2431,6 @@ static const struct b53_chip_data b53_sw +@@ -2439,7 +2434,6 @@ static const struct b53_chip_data b53_sw .arl_bins = 4, .arl_buckets = 1024, .imp_port = 8, @@ -67,7 +67,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org> .vta_regs = B53_VTA_REGS_9798, .duplex_reg = B53_DUPLEX_STAT_GE, .jumbo_pm_reg = B53_JUMBO_PORT_MASK, -@@ -2451,7 +2445,6 @@ static const struct b53_chip_data b53_sw +@@ -2454,7 +2448,6 @@ static const struct b53_chip_data b53_sw .arl_buckets = 1024, .vta_regs = B53_VTA_REGS, .imp_port = 8, @@ -75,7 +75,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org> .duplex_reg = B53_DUPLEX_STAT_GE, .jumbo_pm_reg = B53_JUMBO_PORT_MASK, .jumbo_size_reg = B53_JUMBO_MAX_SIZE, -@@ -2464,7 +2457,6 @@ static const struct b53_chip_data b53_sw +@@ -2467,7 +2460,6 @@ static const struct b53_chip_data b53_sw .arl_bins = 4, .arl_buckets = 1024, .imp_port = 8, @@ -83,7 +83,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org> .vta_regs = B53_VTA_REGS, .duplex_reg = B53_DUPLEX_STAT_GE, .jumbo_pm_reg = B53_JUMBO_PORT_MASK, -@@ -2478,7 +2470,6 @@ static const struct b53_chip_data b53_sw +@@ -2481,7 +2473,6 @@ static const struct b53_chip_data b53_sw .arl_bins = 4, .arl_buckets = 1024, .imp_port = 8, @@ -91,7 +91,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org> .vta_regs = B53_VTA_REGS, .duplex_reg = B53_DUPLEX_STAT_GE, .jumbo_pm_reg = B53_JUMBO_PORT_MASK, -@@ -2492,7 +2483,6 @@ static const struct b53_chip_data b53_sw +@@ -2495,7 +2486,6 @@ static const struct b53_chip_data b53_sw .arl_bins = 4, .arl_buckets = 1024, .imp_port = 8, @@ -99,7 +99,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org> .vta_regs = B53_VTA_REGS_63XX, .duplex_reg = B53_DUPLEX_STAT_63XX, .jumbo_pm_reg = B53_JUMBO_PORT_MASK_63XX, -@@ -2506,7 +2496,6 @@ static const struct b53_chip_data b53_sw +@@ -2509,7 +2499,6 @@ static const struct b53_chip_data b53_sw .arl_bins = 4, .arl_buckets = 1024, .imp_port = 8, @@ -107,7 +107,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org> .vta_regs = B53_VTA_REGS, .duplex_reg = B53_DUPLEX_STAT_GE, .jumbo_pm_reg = B53_JUMBO_PORT_MASK, -@@ -2520,7 +2509,6 @@ static const struct b53_chip_data b53_sw +@@ -2523,7 +2512,6 @@ static const struct b53_chip_data b53_sw .arl_bins = 4, .arl_buckets = 1024, .imp_port = 8, @@ -115,7 +115,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org> .vta_regs = B53_VTA_REGS, .duplex_reg = B53_DUPLEX_STAT_GE, .jumbo_pm_reg = B53_JUMBO_PORT_MASK, -@@ -2534,7 +2522,6 @@ static const struct b53_chip_data b53_sw +@@ -2537,7 +2525,6 @@ static const struct b53_chip_data b53_sw .arl_bins = 4, .arl_buckets = 1024, .imp_port = 8, @@ -123,7 +123,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org> .vta_regs = B53_VTA_REGS, .duplex_reg = B53_DUPLEX_STAT_GE, .jumbo_pm_reg = B53_JUMBO_PORT_MASK, -@@ -2548,7 +2535,6 @@ static const struct b53_chip_data b53_sw +@@ -2551,7 +2538,6 @@ static const struct b53_chip_data b53_sw .arl_bins = 4, .arl_buckets = 1024, .imp_port = 8, @@ -131,7 +131,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org> .vta_regs = B53_VTA_REGS, .duplex_reg = B53_DUPLEX_STAT_GE, .jumbo_pm_reg = B53_JUMBO_PORT_MASK, -@@ -2562,7 +2548,6 @@ static const struct b53_chip_data b53_sw +@@ -2565,7 +2551,6 @@ static const struct b53_chip_data b53_sw .arl_bins = 4, .arl_buckets = 1024, .imp_port = 8, @@ -139,7 +139,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org> .vta_regs = B53_VTA_REGS, .duplex_reg = B53_DUPLEX_STAT_GE, .jumbo_pm_reg = B53_JUMBO_PORT_MASK, -@@ -2576,7 +2561,6 @@ static const struct b53_chip_data b53_sw +@@ -2579,7 +2564,6 @@ static const struct b53_chip_data b53_sw .arl_bins = 4, .arl_buckets = 1024, .imp_port = 8, @@ -147,7 +147,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org> .vta_regs = B53_VTA_REGS, .duplex_reg = B53_DUPLEX_STAT_GE, .jumbo_pm_reg = B53_JUMBO_PORT_MASK, -@@ -2590,7 +2574,6 @@ static const struct b53_chip_data b53_sw +@@ -2593,7 +2577,6 @@ static const struct b53_chip_data b53_sw .arl_bins = 4, .arl_buckets = 1024, .imp_port = 8, @@ -155,7 +155,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org> .vta_regs = B53_VTA_REGS, .duplex_reg = B53_DUPLEX_STAT_GE, .jumbo_pm_reg = B53_JUMBO_PORT_MASK, -@@ -2619,7 +2602,6 @@ static const struct b53_chip_data b53_sw +@@ -2622,7 +2605,6 @@ static const struct b53_chip_data b53_sw .arl_bins = 4, .arl_buckets = 1024, .imp_port = 8, @@ -163,7 +163,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org> .vta_regs = B53_VTA_REGS, .duplex_reg = B53_DUPLEX_STAT_GE, .jumbo_pm_reg = B53_JUMBO_PORT_MASK, -@@ -2633,7 +2615,6 @@ static const struct b53_chip_data b53_sw +@@ -2636,7 +2618,6 @@ static const struct b53_chip_data b53_sw .arl_bins = 4, .arl_buckets = 256, .imp_port = 8, @@ -171,7 +171,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org> .vta_regs = B53_VTA_REGS, .duplex_reg = B53_DUPLEX_STAT_GE, .jumbo_pm_reg = B53_JUMBO_PORT_MASK, -@@ -2659,7 +2640,6 @@ static int b53_switch_init(struct b53_de +@@ -2662,7 +2643,6 @@ static int b53_switch_init(struct b53_de dev->vta_regs[2] = chip->vta_regs[2]; dev->jumbo_pm_reg = chip->jumbo_pm_reg; dev->imp_port = chip->imp_port; @@ -179,7 +179,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org> dev->num_vlans = chip->vlans; dev->num_arl_bins = chip->arl_bins; dev->num_arl_buckets = chip->arl_buckets; -@@ -2691,13 +2671,6 @@ static int b53_switch_init(struct b53_de +@@ -2694,13 +2674,6 @@ static int b53_switch_init(struct b53_de break; #endif } diff --git a/target/linux/generic/backport-5.15/792-v5.16-net-dpaa2-mac-add-support-for-more-10G-modes.patch b/target/linux/generic/backport-5.15/792-v5.16-net-dpaa2-mac-add-support-for-more-10G-modes.patch index 0bd96f1f4f..78b90421de 100644 --- a/target/linux/generic/backport-5.15/792-v5.16-net-dpaa2-mac-add-support-for-more-10G-modes.patch +++ b/target/linux/generic/backport-5.15/792-v5.16-net-dpaa2-mac-add-support-for-more-10G-modes.patch @@ -19,7 +19,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> --- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.c +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.c -@@ -140,6 +140,12 @@ static void dpaa2_mac_validate(struct ph +@@ -143,6 +143,12 @@ static void dpaa2_mac_validate(struct ph case PHY_INTERFACE_MODE_10GBASER: case PHY_INTERFACE_MODE_USXGMII: phylink_set(mask, 10000baseT_Full); diff --git a/target/linux/generic/backport-5.15/821-v5.16-Bluetooth-btusb-Support-public-address-configuration.patch b/target/linux/generic/backport-5.15/821-v5.16-Bluetooth-btusb-Support-public-address-configuration.patch index b3574541bf..589470d7be 100644 --- a/target/linux/generic/backport-5.15/821-v5.16-Bluetooth-btusb-Support-public-address-configuration.patch +++ b/target/linux/generic/backport-5.15/821-v5.16-Bluetooth-btusb-Support-public-address-configuration.patch @@ -17,7 +17,7 @@ Signed-off-by: Marcel Holtmann <marcel@holtmann.org> --- a/drivers/bluetooth/btusb.c +++ b/drivers/bluetooth/btusb.c -@@ -2301,6 +2301,23 @@ struct btmtk_section_map { +@@ -2303,6 +2303,23 @@ struct btmtk_section_map { }; } __packed; @@ -41,7 +41,7 @@ Signed-off-by: Marcel Holtmann <marcel@holtmann.org> static void btusb_mtk_wmt_recv(struct urb *urb) { struct hci_dev *hdev = urb->context; -@@ -3955,6 +3972,7 @@ static int btusb_probe(struct usb_interf +@@ -3961,6 +3978,7 @@ static int btusb_probe(struct usb_interf hdev->shutdown = btusb_mtk_shutdown; hdev->manufacturer = 70; hdev->cmd_timeout = btusb_mtk_cmd_timeout; diff --git a/target/linux/generic/backport-5.15/822-v5.17-Bluetooth-btusb-Fix-application-of-sizeof-to-pointer.patch b/target/linux/generic/backport-5.15/822-v5.17-Bluetooth-btusb-Fix-application-of-sizeof-to-pointer.patch index 64d9c030f7..bfeac6c94e 100644 --- a/target/linux/generic/backport-5.15/822-v5.17-Bluetooth-btusb-Fix-application-of-sizeof-to-pointer.patch +++ b/target/linux/generic/backport-5.15/822-v5.17-Bluetooth-btusb-Fix-application-of-sizeof-to-pointer.patch @@ -18,7 +18,7 @@ Signed-off-by: Marcel Holtmann <marcel@holtmann.org> --- a/drivers/bluetooth/btusb.c +++ b/drivers/bluetooth/btusb.c -@@ -2306,7 +2306,7 @@ static int btusb_set_bdaddr_mtk(struct h +@@ -2308,7 +2308,7 @@ static int btusb_set_bdaddr_mtk(struct h struct sk_buff *skb; long ret; diff --git a/target/linux/generic/backport-5.15/823-v5.18-Bluetooth-btusb-Add-a-new-PID-VID-13d3-3567-for-MT79.patch b/target/linux/generic/backport-5.15/823-v5.18-Bluetooth-btusb-Add-a-new-PID-VID-13d3-3567-for-MT79.patch index 30492ac48d..1253c2b8a0 100644 --- a/target/linux/generic/backport-5.15/823-v5.18-Bluetooth-btusb-Add-a-new-PID-VID-13d3-3567-for-MT79.patch +++ b/target/linux/generic/backport-5.15/823-v5.18-Bluetooth-btusb-Add-a-new-PID-VID-13d3-3567-for-MT79.patch @@ -58,7 +58,7 @@ Signed-off-by: Marcel Holtmann <marcel@holtmann.org> --- a/drivers/bluetooth/btusb.c +++ b/drivers/bluetooth/btusb.c -@@ -478,6 +478,9 @@ static const struct usb_device_id blackl +@@ -480,6 +480,9 @@ static const struct usb_device_id blackl { USB_DEVICE(0x13d3, 0x3564), .driver_info = BTUSB_MEDIATEK | BTUSB_WIDEBAND_SPEECH | BTUSB_VALID_LE_STATES }, diff --git a/target/linux/generic/backport-5.15/824-v5.19-Bluetooth-btusb-Add-a-new-PID-VID-0489-e0c8-for-MT79.patch b/target/linux/generic/backport-5.15/824-v5.19-Bluetooth-btusb-Add-a-new-PID-VID-0489-e0c8-for-MT79.patch index 6bcd81c3b8..775511f661 100644 --- a/target/linux/generic/backport-5.15/824-v5.19-Bluetooth-btusb-Add-a-new-PID-VID-0489-e0c8-for-MT79.patch +++ b/target/linux/generic/backport-5.15/824-v5.19-Bluetooth-btusb-Add-a-new-PID-VID-0489-e0c8-for-MT79.patch @@ -56,7 +56,7 @@ Signed-off-by: Marcel Holtmann <marcel@holtmann.org> --- a/drivers/bluetooth/btusb.c +++ b/drivers/bluetooth/btusb.c -@@ -469,6 +469,9 @@ static const struct usb_device_id blackl +@@ -471,6 +471,9 @@ static const struct usb_device_id blackl BTUSB_VALID_LE_STATES }, /* Additional MediaTek MT7921 Bluetooth devices */ diff --git a/target/linux/generic/backport-5.15/825-v6.1-Bluetooth-btusb-Add-a-new-VID-PID-0e8d-0608-for-MT79.patch b/target/linux/generic/backport-5.15/825-v6.1-Bluetooth-btusb-Add-a-new-VID-PID-0e8d-0608-for-MT79.patch index b6b76f64fc..9b71b06bd0 100644 --- a/target/linux/generic/backport-5.15/825-v6.1-Bluetooth-btusb-Add-a-new-VID-PID-0e8d-0608-for-MT79.patch +++ b/target/linux/generic/backport-5.15/825-v6.1-Bluetooth-btusb-Add-a-new-VID-PID-0e8d-0608-for-MT79.patch @@ -54,7 +54,7 @@ Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com> --- a/drivers/bluetooth/btusb.c +++ b/drivers/bluetooth/btusb.c -@@ -487,6 +487,9 @@ static const struct usb_device_id blackl +@@ -489,6 +489,9 @@ static const struct usb_device_id blackl { USB_DEVICE(0x0489, 0xe0cd), .driver_info = BTUSB_MEDIATEK | BTUSB_WIDEBAND_SPEECH | BTUSB_VALID_LE_STATES }, diff --git a/target/linux/generic/backport-5.15/894-v6.8-net-ethtool-implement-ethtool_puts.patch b/target/linux/generic/backport-5.15/894-v6.8-net-ethtool-implement-ethtool_puts.patch index 4a7223ee90..3e498da6a2 100644 --- a/target/linux/generic/backport-5.15/894-v6.8-net-ethtool-implement-ethtool_puts.patch +++ b/target/linux/generic/backport-5.15/894-v6.8-net-ethtool-implement-ethtool_puts.patch @@ -123,7 +123,7 @@ Signed-off-by: Justin Stitt <justinstitt@google.com> #endif /* _LINUX_ETHTOOL_H */ --- a/net/ethtool/ioctl.c +++ b/net/ethtool/ioctl.c -@@ -1957,6 +1957,13 @@ __printf(2, 3) void ethtool_sprintf(u8 * +@@ -1960,6 +1960,13 @@ __printf(2, 3) void ethtool_sprintf(u8 * } EXPORT_SYMBOL(ethtool_sprintf); diff --git a/target/linux/generic/hack-5.15/726-net-eth-dpaa2-eth-do-not-hold-rtnl_lock.patch b/target/linux/generic/hack-5.15/726-net-eth-dpaa2-eth-do-not-hold-rtnl_lock.patch index 83ae9b0e92..1423c8992d 100644 --- a/target/linux/generic/hack-5.15/726-net-eth-dpaa2-eth-do-not-hold-rtnl_lock.patch +++ b/target/linux/generic/hack-5.15/726-net-eth-dpaa2-eth-do-not-hold-rtnl_lock.patch @@ -52,7 +52,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> dpaa2_eth_dl_traps_unregister(priv); --- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.c +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.c -@@ -357,7 +357,9 @@ int dpaa2_mac_connect(struct dpaa2_mac * +@@ -360,7 +360,9 @@ int dpaa2_mac_connect(struct dpaa2_mac * if (mac->pcs) phylink_set_pcs(mac->phylink, &mac->pcs->pcs); @@ -62,7 +62,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> if (err) { netdev_err(net_dev, "phylink_fwnode_phy_connect() = %d\n", err); goto err_phylink_destroy; -@@ -378,7 +380,9 @@ void dpaa2_mac_disconnect(struct dpaa2_m +@@ -381,7 +383,9 @@ void dpaa2_mac_disconnect(struct dpaa2_m if (!mac->phylink) return; diff --git a/target/linux/generic/hack-5.15/902-debloat_proc.patch b/target/linux/generic/hack-5.15/902-debloat_proc.patch index 5b55deecf5..7e6cbe4698 100644 --- a/target/linux/generic/hack-5.15/902-debloat_proc.patch +++ b/target/linux/generic/hack-5.15/902-debloat_proc.patch @@ -29,7 +29,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> --- a/fs/locks.c +++ b/fs/locks.c -@@ -3006,6 +3006,8 @@ static const struct seq_operations locks +@@ -3015,6 +3015,8 @@ static const struct seq_operations locks static int __init proc_locks_init(void) { @@ -330,7 +330,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> --- a/net/core/sock.c +++ b/net/core/sock.c -@@ -3895,6 +3895,8 @@ static __net_initdata struct pernet_oper +@@ -3896,6 +3896,8 @@ static __net_initdata struct pernet_oper static int __init proto_init(void) { @@ -341,7 +341,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> --- a/net/ipv4/fib_trie.c +++ b/net/ipv4/fib_trie.c -@@ -3004,11 +3004,13 @@ static const struct seq_operations fib_r +@@ -3005,11 +3005,13 @@ static const struct seq_operations fib_r int __net_init fib_proc_init(struct net *net) { @@ -357,7 +357,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> fib_triestat_seq_show, NULL)) goto out2; -@@ -3019,17 +3021,21 @@ int __net_init fib_proc_init(struct net +@@ -3020,17 +3022,21 @@ int __net_init fib_proc_init(struct net return 0; out3: diff --git a/target/linux/generic/pending-5.15/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch b/target/linux/generic/pending-5.15/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch index f14179d276..e0d23ee309 100644 --- a/target/linux/generic/pending-5.15/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch +++ b/target/linux/generic/pending-5.15/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch @@ -66,7 +66,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org> static void rt_fibinfo_free(struct rtable __rcu **rtp) --- a/net/ipv4/fib_trie.c +++ b/net/ipv4/fib_trie.c -@@ -2752,6 +2752,7 @@ static const char *const rtn_type_names[ +@@ -2753,6 +2753,7 @@ static const char *const rtn_type_names[ [RTN_THROW] = "THROW", [RTN_NAT] = "NAT", [RTN_XRESOLVE] = "XRESOLVE", diff --git a/target/linux/generic/pending-5.15/700-netfilter-nft_flow_offload-handle-netdevice-events-f.patch b/target/linux/generic/pending-5.15/700-netfilter-nft_flow_offload-handle-netdevice-events-f.patch index dbcaa305a1..7ebe72af51 100644 --- a/target/linux/generic/pending-5.15/700-netfilter-nft_flow_offload-handle-netdevice-events-f.patch +++ b/target/linux/generic/pending-5.15/700-netfilter-nft_flow_offload-handle-netdevice-events-f.patch @@ -59,7 +59,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> } --- a/net/netfilter/nft_flow_offload.c +++ b/net/netfilter/nft_flow_offload.c -@@ -461,47 +461,14 @@ static struct nft_expr_type nft_flow_off +@@ -468,47 +468,14 @@ static struct nft_expr_type nft_flow_off .owner = THIS_MODULE, }; diff --git a/target/linux/generic/pending-5.15/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch b/target/linux/generic/pending-5.15/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch index 3ddf461848..bce2929c1a 100644 --- a/target/linux/generic/pending-5.15/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch +++ b/target/linux/generic/pending-5.15/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch @@ -18,7 +18,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> --- a/net/netfilter/nf_tables_api.c +++ b/net/netfilter/nf_tables_api.c -@@ -7849,7 +7849,7 @@ static int nft_register_flowtable_net_ho +@@ -7850,7 +7850,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-5.15/774-net-dsa-b53-mmap-allow-passing-a-chip-ID.patch b/target/linux/generic/pending-5.15/774-net-dsa-b53-mmap-allow-passing-a-chip-ID.patch index 3c89ff1e5c..d668f8b20e 100644 --- a/target/linux/generic/pending-5.15/774-net-dsa-b53-mmap-allow-passing-a-chip-ID.patch +++ b/target/linux/generic/pending-5.15/774-net-dsa-b53-mmap-allow-passing-a-chip-ID.patch @@ -100,7 +100,7 @@ Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> --- a/drivers/net/dsa/b53/b53_common.c +++ b/drivers/net/dsa/b53/b53_common.c -@@ -2535,6 +2535,19 @@ static const struct b53_chip_data b53_sw +@@ -2538,6 +2538,19 @@ static const struct b53_chip_data b53_sw .jumbo_size_reg = B53_JUMBO_MAX_SIZE_63XX, }, { diff --git a/target/linux/generic/pending-5.15/777-net-dsa-b53-mdio-add-support-for-BCM53134.patch b/target/linux/generic/pending-5.15/777-net-dsa-b53-mdio-add-support-for-BCM53134.patch index 0fa3d12947..c9a427862f 100644 --- a/target/linux/generic/pending-5.15/777-net-dsa-b53-mdio-add-support-for-BCM53134.patch +++ b/target/linux/generic/pending-5.15/777-net-dsa-b53-mdio-add-support-for-BCM53134.patch @@ -100,7 +100,7 @@ Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> --- a/drivers/net/dsa/b53/b53_common.c +++ b/drivers/net/dsa/b53/b53_common.c -@@ -2683,6 +2683,20 @@ static const struct b53_chip_data b53_sw +@@ -2686,6 +2686,20 @@ static const struct b53_chip_data b53_sw .jumbo_pm_reg = B53_JUMBO_PORT_MASK, .jumbo_size_reg = B53_JUMBO_MAX_SIZE, }, @@ -121,7 +121,7 @@ Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> }; static int b53_switch_init(struct b53_device *dev) -@@ -2859,6 +2873,7 @@ int b53_switch_detect(struct b53_device +@@ -2862,6 +2876,7 @@ int b53_switch_detect(struct b53_device case BCM53012_DEVICE_ID: case BCM53018_DEVICE_ID: case BCM53019_DEVICE_ID: diff --git a/target/linux/ipq40xx/patches-5.15/400-mmc-sdhci-sdhci-msm-use-sdhci_set_clock-instead-of-s.patch b/target/linux/ipq40xx/patches-5.15/400-mmc-sdhci-sdhci-msm-use-sdhci_set_clock-instead-of-s.patch index ac7776f574..89b6856966 100644 --- a/target/linux/ipq40xx/patches-5.15/400-mmc-sdhci-sdhci-msm-use-sdhci_set_clock-instead-of-s.patch +++ b/target/linux/ipq40xx/patches-5.15/400-mmc-sdhci-sdhci-msm-use-sdhci_set_clock-instead-of-s.patch @@ -13,7 +13,7 @@ Signed-off-by: Robert Marko <robert.marko@sartura.hr> --- a/drivers/mmc/host/sdhci-msm.c +++ b/drivers/mmc/host/sdhci-msm.c -@@ -2525,7 +2525,7 @@ MODULE_DEVICE_TABLE(of, sdhci_msm_dt_mat +@@ -2528,7 +2528,7 @@ MODULE_DEVICE_TABLE(of, sdhci_msm_dt_mat static const struct sdhci_ops sdhci_msm_ops = { .reset = sdhci_msm_reset, diff --git a/target/linux/ipq40xx/patches-5.15/401-mmc-sdhci-msm-comment-unused-sdhci_msm_set_clock.patch b/target/linux/ipq40xx/patches-5.15/401-mmc-sdhci-msm-comment-unused-sdhci_msm_set_clock.patch index 6370b526fc..44336b5fd6 100644 --- a/target/linux/ipq40xx/patches-5.15/401-mmc-sdhci-msm-comment-unused-sdhci_msm_set_clock.patch +++ b/target/linux/ipq40xx/patches-5.15/401-mmc-sdhci-msm-comment-unused-sdhci_msm_set_clock.patch @@ -13,7 +13,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com> --- a/drivers/mmc/host/sdhci-msm.c +++ b/drivers/mmc/host/sdhci-msm.c -@@ -1829,49 +1829,49 @@ static unsigned int sdhci_msm_get_min_cl +@@ -1831,50 +1831,50 @@ static unsigned int sdhci_msm_get_min_cl return SDHCI_MSM_MIN_CLOCK; } @@ -48,6 +48,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com> -{ - struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host); - struct sdhci_msm_host *msm_host = sdhci_pltfm_priv(pltfm_host); +- struct mmc_ios ios = host->mmc->ios; - - if (!clock) { - host->mmc->actual_clock = msm_host->clk_rate = 0; @@ -56,7 +57,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com> - - sdhci_msm_hc_select_mode(host); - -- msm_set_clock_rate_for_bus_mode(host, clock); +- msm_set_clock_rate_for_bus_mode(host, ios.clock, ios.timing); -out: - __sdhci_msm_set_clock(host, clock); -} @@ -91,6 +92,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com> +// { +// struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host); +// struct sdhci_msm_host *msm_host = sdhci_pltfm_priv(pltfm_host); ++// struct mmc_ios ios = host->mmc->ios; + +// if (!clock) { +// host->mmc->actual_clock = msm_host->clk_rate = 0; @@ -99,7 +101,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com> + +// sdhci_msm_hc_select_mode(host); + -+// msm_set_clock_rate_for_bus_mode(host, clock); ++// msm_set_clock_rate_for_bus_mode(host, ios.clock, ios.timing); +// out: +// __sdhci_msm_set_clock(host, clock); +// } diff --git a/target/linux/ipq807x/patches-5.15/0113-remoteproc-qcom-Add-secure-PIL-support.patch b/target/linux/ipq807x/patches-5.15/0113-remoteproc-qcom-Add-secure-PIL-support.patch index 1d415942e0..dbf1b5aa9f 100644 --- a/target/linux/ipq807x/patches-5.15/0113-remoteproc-qcom-Add-secure-PIL-support.patch +++ b/target/linux/ipq807x/patches-5.15/0113-remoteproc-qcom-Add-secure-PIL-support.patch @@ -25,7 +25,7 @@ Signed-off-by: Nikhil Prakash V <nprakash@codeaurora.org> @@ -86,6 +87,9 @@ #define TCSR_WCSS_CLK_ENABLE 0x14 - #define MAX_HALT_REG 3 + #define MAX_HALT_REG 4 + +#define WCNSS_PAS_ID 6 + diff --git a/target/linux/ipq807x/patches-5.15/0116-remoteproc-qcom-Update-regmap-offsets-for-halt-regis.patch b/target/linux/ipq807x/patches-5.15/0116-remoteproc-qcom-Update-regmap-offsets-for-halt-regis.patch index c8e5aceefc..6ddded7e38 100644 --- a/target/linux/ipq807x/patches-5.15/0116-remoteproc-qcom-Update-regmap-offsets-for-halt-regis.patch +++ b/target/linux/ipq807x/patches-5.15/0116-remoteproc-qcom-Update-regmap-offsets-for-halt-regis.patch @@ -13,15 +13,6 @@ Signed-off-by: Sricharan R <sricharan@codeaurora.org> --- a/drivers/remoteproc/qcom_q6v5_wcss.c +++ b/drivers/remoteproc/qcom_q6v5_wcss.c -@@ -86,7 +86,7 @@ - #define TCSR_WCSS_CLK_MASK 0x1F - #define TCSR_WCSS_CLK_ENABLE 0x14 - --#define MAX_HALT_REG 3 -+#define MAX_HALT_REG 4 - - #define WCNSS_PAS_ID 6 - @@ -154,6 +154,7 @@ struct wcss_data { u32 version; bool aon_reset_required; @@ -48,19 +39,6 @@ Signed-off-by: Sricharan R <sricharan@codeaurora.org> } return 0; -@@ -929,9 +933,9 @@ static int q6v5_wcss_init_mmio(struct q6 - return -EINVAL; - } - -- wcss->halt_q6 = halt_reg[0]; -- wcss->halt_wcss = halt_reg[1]; -- wcss->halt_nc = halt_reg[2]; -+ wcss->halt_q6 = halt_reg[1]; -+ wcss->halt_wcss = halt_reg[2]; -+ wcss->halt_nc = halt_reg[3]; - - return 0; - } @@ -1178,6 +1182,7 @@ static const struct wcss_data wcss_ipq80 .crash_reason_smem = WCSS_CRASH_REASON, .aon_reset_required = true, diff --git a/target/linux/ramips/patches-5.15/850-awake-rt305x-dwc2-controller.patch b/target/linux/ramips/patches-5.15/850-awake-rt305x-dwc2-controller.patch index 84fcf32869..ca0a67c138 100644 --- a/target/linux/ramips/patches-5.15/850-awake-rt305x-dwc2-controller.patch +++ b/target/linux/ramips/patches-5.15/850-awake-rt305x-dwc2-controller.patch @@ -1,6 +1,6 @@ --- a/drivers/usb/dwc2/platform.c +++ b/drivers/usb/dwc2/platform.c -@@ -496,6 +496,12 @@ static int dwc2_driver_probe(struct plat +@@ -499,6 +499,12 @@ static int dwc2_driver_probe(struct plat if (retval) return retval; |