From ff235f09b5002d7d95ef6c41f5de7a3ef523fbef Mon Sep 17 00:00:00 2001 From: John Audia Date: Wed, 25 Mar 2026 08:15:25 -0400 Subject: [PATCH] kernel: bump 6.12 to 6.12.78 Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.78 Removed upstreamed: generic/pending-6.12/620-net-sfp-improve-Huawei-MA5671a-fixup.patch[1] generic/pending-6.12/704-net-phy-register-phy-led_triggers-during-probe-to-av.patch[2] airoha/patches-6.12/014-01-v6.13-net-airoha-fix-PSE-memory-configuration-in-airoha_fe.patch[3] airoha/patches-6.12/014-02-v6.13-net-airoha-read-default-PSE-reserved-pages-value-bef.patch[4] airoha/patches-6.12/031-01-v6.13-net-airoha-Read-completion-queue-data-in-airoha_qdma.patch[5] airoha/patches-6.12/128-v7.1-net-airoha-Remove-airoha_dev_stop-in-airoha_remove.patch[6] Manually rebased: airoha/patches-6.12/048-01-v6.15-net-airoha-Move-airoha_eth-driver-in-a-dedicated-fol.patch All patches automatically rebased. 1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.78&id=bbdf6d378e1ddbeadc04c57b182aadefcc3aa917 2. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.78&id=241cd64cf2e32b28ead151b1795cd8fef2b6e482 3. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.78&id=a04ac7bc97afe313e10ae4c73797c668dee47c5c 4. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.78&id=a9ed47c3663219e20406d566f02809de05373a42 5. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.78&id=4cba4373abac7ba27fdb33057a29b92efa8fd15d 6. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.78&id=652ec118d8dc1b088e685d5562995b6665463771 Signed-off-by: John Audia Link: https://github.com/openwrt/openwrt/pull/22607 [Fix 048-01-v6.15-net-airoha-Move-airoha_eth-driver-in-a-dedicated-fol] (cherry picked from commit bb3da35c904f15980c3e0c328ff599862356b489) Link: https://github.com/openwrt/openwrt/pull/22699 Signed-off-by: Hauke Mehrtens --- ...SE-memory-configuration-in-airoha_fe.patch | 40 ----- ...default-PSE-reserved-pages-value-bef.patch | 52 ------ ....13-net-airoha-Implement-BQL-support.patch | 4 +- ...completion-queue-data-in-airoha_qdma.patch | 92 ----------- ...airoha_eth-driver-in-a-dedicated-fol.patch | 6 +- ...iroha-Move-DSA-tag-in-DMA-descriptor.patch | 4 +- ...-Introduce-flowtable-offload-support.patch | 2 +- ...iroha-Add-airoha_eth_soc_data-struct.patch | 2 +- ...tor-src-port-configuration-in-airhoh.patch | 2 +- ...19-net-airoha-Add-AN7583-SoC-support.patch | 4 +- ...7-airoha-ethernet-drop-xsi-mac-reset.patch | 4 +- ...iroha-add-phylink-support-for-GDM2-4.patch | 4 +- ...le-external-phy-code-if-PCS_AIROHA-i.patch | 4 +- .../886-uart-add-en7523-support.patch | 2 +- ...or-support-mtd-name-from-device-tree.patch | 2 +- .../900-unaligned_access_hacks.patch | 6 +- ...net-Request-APD-DLL-disable-and-IDDQ.patch | 2 +- .../950-0054-Add-dwc_otg-driver.patch | 2 +- ...-for-all-the-downstream-rpi-sound-ca.patch | 4 +- ...Disable-TCP-Segmentation-Offload-TSO.patch | 2 +- ...e-link-events-to-minimize-poll-storm.patch | 2 +- ...8xx-Enable-LEDs-and-auto-negotiation.patch | 6 +- ...Better-coalescing-parameter-defaults.patch | 4 +- ...-link-energy-detect-powerdown-for-ex.patch | 2 +- ...-for-updating-interrupt-endpoint-int.patch | 4 +- ...t-Workaround-2-for-Pi4-Ethernet-fail.patch | 2 +- ...CS_HIGH-if-GPIO-descriptors-are-used.patch | 4 +- ...et-bcmgenet-Add-eee-module-parameter.patch | 2 +- ...5-usb-xhci-add-XHCI_VLI_HUB_TT_QUIRK.patch | 6 +- .../950-0344-sdhci-Add-SD-Express-hook.patch | 2 +- ...-net-macb-Also-set-DMA-coherent-mask.patch | 32 ++-- ...cm2835-power-Add-support-for-BCM2712.patch | 8 +- ...-maximum-ADMA-transfer-length-to-4Mi.patch | 2 +- ...528-drm-Increase-plane_mask-to-64bit.patch | 2 +- ...port-for-Raspberry-Pi-RP1-ethernet-c.patch | 4 +- ...pci-Disable-Host-Memory-Buffer-usage.patch | 6 +- ...0692-cgroup-Add-cgroup_enable-option.patch | 2 +- ...m_sf2-enable-GPHY-for-switch-probing.patch | 2 +- ...sf2-keep-GPHY-enabled-on-the-BCM4908.patch | 2 +- ...nd-brcmnand-remove-unused-parameters.patch | 4 +- ...cmnand-legacy-exec_op-implementation.patch | 6 +- ...an-tag-insertion-stripping-by-defaul.patch | 2 +- ...rt-active-high-property-for-PHY-LEDs.patch | 2 +- .../generic/hack-6.12/253-ksmbd-config.patch | 2 +- .../721-net-add-packet-mangeling.patch | 6 +- target/linux/generic/kernel-6.12 | 4 +- .../103-kbuild-export-SUBARCH.patch | 2 +- .../203-kallsyms_uncompressed.patch | 2 +- ...support-for-minor-aligned-partitions.patch | 6 +- ...net-sfp-improve-Huawei-MA5671a-fixup.patch | 149 ------------------ ...les-ignore-EOPNOTSUPP-on-flowtable-d.patch | 2 +- ...detach-callback-to-struct-phy_driver.patch | 2 +- ...-phy-led_triggers-during-probe-to-av.patch | 116 -------------- ...0211_ptr-even-with-no-CFG82111-suppo.patch | 2 +- .../pending-6.12/834-ledtrig-libata.patch | 8 +- .../pending-6.12/920-mangle_bootargs.patch | 2 +- .../patches-6.12/410-bt-mtk-serial-fix.patch | 2 +- ...nor-Add-calibration-support-for-spi-.patch | 4 +- .../901-arm-add-cmdline-override.patch | 2 +- ...ng-of-the-generic-recovery-init-code.patch | 4 +- ...ly-Bus-Busy-condition-on-Armada-3700.patch | 14 +- ...crease-max-ports-for-rtl839x-rtl931x.patch | 4 +- ...ts-Share-ITS-tables-with-a-non-trust.patch | 16 +- ...-Rockchip-3568002-erratum-workaround.patch | 6 +- ...t-8250-Add-dw-auto-flow-ctrl-support.patch | 2 +- .../1011-net-stmmac-use-GFP_DMA32.patch | 2 +- 66 files changed, 128 insertions(+), 579 deletions(-) delete mode 100644 target/linux/airoha/patches-6.12/014-01-v6.13-net-airoha-fix-PSE-memory-configuration-in-airoha_fe.patch delete mode 100644 target/linux/airoha/patches-6.12/014-02-v6.13-net-airoha-read-default-PSE-reserved-pages-value-bef.patch delete mode 100644 target/linux/airoha/patches-6.12/031-01-v6.13-net-airoha-Read-completion-queue-data-in-airoha_qdma.patch delete mode 100644 target/linux/generic/pending-6.12/620-net-sfp-improve-Huawei-MA5671a-fixup.patch delete mode 100644 target/linux/generic/pending-6.12/704-net-phy-register-phy-led_triggers-during-probe-to-av.patch diff --git a/target/linux/airoha/patches-6.12/014-01-v6.13-net-airoha-fix-PSE-memory-configuration-in-airoha_fe.patch b/target/linux/airoha/patches-6.12/014-01-v6.13-net-airoha-fix-PSE-memory-configuration-in-airoha_fe.patch deleted file mode 100644 index fb86423733..0000000000 --- a/target/linux/airoha/patches-6.12/014-01-v6.13-net-airoha-fix-PSE-memory-configuration-in-airoha_fe.patch +++ /dev/null @@ -1,40 +0,0 @@ -From 8e38e08f2c560328a873c35aff1a0dbea6a7d084 Mon Sep 17 00:00:00 2001 -From: Lorenzo Bianconi -Date: Tue, 1 Oct 2024 12:10:25 +0200 -Subject: [PATCH 2/2] net: airoha: fix PSE memory configuration in - airoha_fe_pse_ports_init() - -Align PSE memory configuration to vendor SDK. In particular, increase -initial value of PSE reserved memory in airoha_fe_pse_ports_init() -routine by the value used for the second Packet Processor Engine (PPE2) -and do not overwrite the default value. - -Introduced by commit 23020f049327 ("net: airoha: Introduce ethernet support -for EN7581 SoC") - -Signed-off-by: Lorenzo Bianconi -Reviewed-by: Simon Horman -Link: https://patch.msgid.link/20241001-airoha-eth-pse-fix-v2-2-9a56cdffd074@kernel.org -Signed-off-by: Jakub Kicinski ---- - drivers/net/ethernet/mediatek/airoha_eth.c | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - ---- a/drivers/net/ethernet/mediatek/airoha_eth.c -+++ b/drivers/net/ethernet/mediatek/airoha_eth.c -@@ -1166,11 +1166,13 @@ static void airoha_fe_pse_ports_init(str - [FE_PSE_PORT_GDM4] = 2, - [FE_PSE_PORT_CDM5] = 2, - }; -+ u32 all_rsv; - int q; - -+ all_rsv = airoha_fe_get_pse_all_rsv(eth); - /* hw misses PPE2 oq rsv */ -- airoha_fe_set(eth, REG_FE_PSE_BUF_SET, -- PSE_RSV_PAGES * pse_port_num_queues[FE_PSE_PORT_PPE2]); -+ all_rsv += PSE_RSV_PAGES * pse_port_num_queues[FE_PSE_PORT_PPE2]; -+ airoha_fe_set(eth, REG_FE_PSE_BUF_SET, all_rsv); - - /* CMD1 */ - for (q = 0; q < pse_port_num_queues[FE_PSE_PORT_CDM1]; q++) diff --git a/target/linux/airoha/patches-6.12/014-02-v6.13-net-airoha-read-default-PSE-reserved-pages-value-bef.patch b/target/linux/airoha/patches-6.12/014-02-v6.13-net-airoha-read-default-PSE-reserved-pages-value-bef.patch deleted file mode 100644 index a2e5c4fdd9..0000000000 --- a/target/linux/airoha/patches-6.12/014-02-v6.13-net-airoha-read-default-PSE-reserved-pages-value-bef.patch +++ /dev/null @@ -1,52 +0,0 @@ -From 1f3e7ff4f296af1f4350f457d5bd82bc825e645a Mon Sep 17 00:00:00 2001 -From: Lorenzo Bianconi -Date: Tue, 1 Oct 2024 12:10:24 +0200 -Subject: [PATCH 1/2] net: airoha: read default PSE reserved pages value before - updating - -Store the default value for the number of PSE reserved pages in orig_val -at the beginning of airoha_fe_set_pse_oq_rsv routine, before updating it -with airoha_fe_set_pse_queue_rsv_pages(). -Introduce airoha_fe_get_pse_all_rsv utility routine. - -Introduced by commit 23020f049327 ("net: airoha: Introduce ethernet support -for EN7581 SoC") - -Signed-off-by: Lorenzo Bianconi -Reviewed-by: Simon Horman -Link: https://patch.msgid.link/20241001-airoha-eth-pse-fix-v2-1-9a56cdffd074@kernel.org -Signed-off-by: Jakub Kicinski ---- - drivers/net/ethernet/mediatek/airoha_eth.c | 14 ++++++++++---- - 1 file changed, 10 insertions(+), 4 deletions(-) - ---- a/drivers/net/ethernet/mediatek/airoha_eth.c -+++ b/drivers/net/ethernet/mediatek/airoha_eth.c -@@ -1116,17 +1116,23 @@ static void airoha_fe_set_pse_queue_rsv_ - PSE_CFG_WR_EN_MASK | PSE_CFG_OQRSV_SEL_MASK); - } - -+static u32 airoha_fe_get_pse_all_rsv(struct airoha_eth *eth) -+{ -+ u32 val = airoha_fe_rr(eth, REG_FE_PSE_BUF_SET); -+ -+ return FIELD_GET(PSE_ALLRSV_MASK, val); -+} -+ - static int airoha_fe_set_pse_oq_rsv(struct airoha_eth *eth, - u32 port, u32 queue, u32 val) - { -- u32 orig_val, tmp, all_rsv, fq_limit; -+ u32 orig_val = airoha_fe_get_pse_queue_rsv_pages(eth, port, queue); -+ u32 tmp, all_rsv, fq_limit; - - airoha_fe_set_pse_queue_rsv_pages(eth, port, queue, val); - - /* modify all rsv */ -- orig_val = airoha_fe_get_pse_queue_rsv_pages(eth, port, queue); -- tmp = airoha_fe_rr(eth, REG_FE_PSE_BUF_SET); -- all_rsv = FIELD_GET(PSE_ALLRSV_MASK, tmp); -+ all_rsv = airoha_fe_get_pse_all_rsv(eth); - all_rsv += (val - orig_val); - airoha_fe_rmw(eth, REG_FE_PSE_BUF_SET, PSE_ALLRSV_MASK, - FIELD_PREP(PSE_ALLRSV_MASK, all_rsv)); diff --git a/target/linux/airoha/patches-6.12/017-v6.13-net-airoha-Implement-BQL-support.patch b/target/linux/airoha/patches-6.12/017-v6.13-net-airoha-Implement-BQL-support.patch index 7787207f43..dd432007ba 100644 --- a/target/linux/airoha/patches-6.12/017-v6.13-net-airoha-Implement-BQL-support.patch +++ b/target/linux/airoha/patches-6.12/017-v6.13-net-airoha-Implement-BQL-support.patch @@ -16,7 +16,7 @@ Signed-off-by: Jakub Kicinski --- a/drivers/net/ethernet/mediatek/airoha_eth.c +++ b/drivers/net/ethernet/mediatek/airoha_eth.c -@@ -1709,9 +1709,11 @@ static int airoha_qdma_tx_napi_poll(stru +@@ -1713,9 +1713,11 @@ static int airoha_qdma_tx_napi_poll(stru WRITE_ONCE(desc->msg1, 0); if (skb) { @@ -29,7 +29,7 @@ Signed-off-by: Jakub Kicinski if (netif_tx_queue_stopped(txq) && q->ndesc - q->queued >= q->free_thr) netif_tx_wake_queue(txq); -@@ -2499,7 +2501,9 @@ static netdev_tx_t airoha_dev_xmit(struc +@@ -2494,7 +2496,9 @@ static netdev_tx_t airoha_dev_xmit(struc q->queued += i; skb_tx_timestamp(skb); diff --git a/target/linux/airoha/patches-6.12/031-01-v6.13-net-airoha-Read-completion-queue-data-in-airoha_qdma.patch b/target/linux/airoha/patches-6.12/031-01-v6.13-net-airoha-Read-completion-queue-data-in-airoha_qdma.patch deleted file mode 100644 index 390d21b290..0000000000 --- a/target/linux/airoha/patches-6.12/031-01-v6.13-net-airoha-Read-completion-queue-data-in-airoha_qdma.patch +++ /dev/null @@ -1,92 +0,0 @@ -From 3affa310de523d63e52ea8e2efb3c476df29e414 Mon Sep 17 00:00:00 2001 -From: Lorenzo Bianconi -Date: Tue, 29 Oct 2024 13:17:09 +0100 -Subject: [PATCH 1/2] net: airoha: Read completion queue data in - airoha_qdma_tx_napi_poll() - -In order to avoid any possible race, read completion queue head and -pending entry in airoha_qdma_tx_napi_poll routine instead of doing it in -airoha_irq_handler. Remove unused airoha_tx_irq_queue unused fields. -This is a preliminary patch to add Qdisc offload for airoha_eth driver. - -Signed-off-by: Lorenzo Bianconi -Link: https://patch.msgid.link/20241029-airoha-en7581-tx-napi-work-v1-1-96ad1686b946@kernel.org -Signed-off-by: Jakub Kicinski ---- - drivers/net/ethernet/mediatek/airoha_eth.c | 31 +++++++++------------- - 1 file changed, 13 insertions(+), 18 deletions(-) - ---- a/drivers/net/ethernet/mediatek/airoha_eth.c -+++ b/drivers/net/ethernet/mediatek/airoha_eth.c -@@ -752,11 +752,9 @@ struct airoha_tx_irq_queue { - struct airoha_qdma *qdma; - - struct napi_struct napi; -- u32 *q; - - int size; -- int queued; -- u16 head; -+ u32 *q; - }; - - struct airoha_hw_stats { -@@ -1655,25 +1653,31 @@ static int airoha_qdma_init_rx(struct ai - static int airoha_qdma_tx_napi_poll(struct napi_struct *napi, int budget) - { - struct airoha_tx_irq_queue *irq_q; -+ int id, done = 0, irq_queued; - struct airoha_qdma *qdma; - struct airoha_eth *eth; -- int id, done = 0; -+ u32 status, head; - - irq_q = container_of(napi, struct airoha_tx_irq_queue, napi); - qdma = irq_q->qdma; - id = irq_q - &qdma->q_tx_irq[0]; - eth = qdma->eth; - -- while (irq_q->queued > 0 && done < budget) { -- u32 qid, last, val = irq_q->q[irq_q->head]; -+ status = airoha_qdma_rr(qdma, REG_IRQ_STATUS(id)); -+ head = FIELD_GET(IRQ_HEAD_IDX_MASK, status); -+ head = head % irq_q->size; -+ irq_queued = FIELD_GET(IRQ_ENTRY_LEN_MASK, status); -+ -+ while (irq_queued > 0 && done < budget) { -+ u32 qid, last, val = irq_q->q[head]; - struct airoha_queue *q; - - if (val == 0xff) - break; - -- irq_q->q[irq_q->head] = 0xff; /* mark as done */ -- irq_q->head = (irq_q->head + 1) % irq_q->size; -- irq_q->queued--; -+ irq_q->q[head] = 0xff; /* mark as done */ -+ head = (head + 1) % irq_q->size; -+ irq_queued--; - done++; - - last = FIELD_GET(IRQ_DESC_IDX_MASK, val); -@@ -2025,20 +2029,11 @@ static irqreturn_t airoha_irq_handler(in - - if (intr[0] & INT_TX_MASK) { - for (i = 0; i < ARRAY_SIZE(qdma->q_tx_irq); i++) { -- struct airoha_tx_irq_queue *irq_q = &qdma->q_tx_irq[i]; -- u32 status, head; -- - if (!(intr[0] & TX_DONE_INT_MASK(i))) - continue; - - airoha_qdma_irq_disable(qdma, QDMA_INT_REG_IDX0, - TX_DONE_INT_MASK(i)); -- -- status = airoha_qdma_rr(qdma, REG_IRQ_STATUS(i)); -- head = FIELD_GET(IRQ_HEAD_IDX_MASK, status); -- irq_q->head = head % irq_q->size; -- irq_q->queued = FIELD_GET(IRQ_ENTRY_LEN_MASK, status); -- - napi_schedule(&qdma->q_tx_irq[i].napi); - } - } diff --git a/target/linux/airoha/patches-6.12/048-01-v6.15-net-airoha-Move-airoha_eth-driver-in-a-dedicated-fol.patch b/target/linux/airoha/patches-6.12/048-01-v6.15-net-airoha-Move-airoha_eth-driver-in-a-dedicated-fol.patch index d2771e6361..9b9a054839 100644 --- a/target/linux/airoha/patches-6.12/048-01-v6.15-net-airoha-Move-airoha_eth-driver-in-a-dedicated-fol.patch +++ b/target/linux/airoha/patches-6.12/048-01-v6.15-net-airoha-Move-airoha_eth-driver-in-a-dedicated-fol.patch @@ -101,7 +101,7 @@ Signed-off-by: Paolo Abeni -obj-$(CONFIG_NET_AIROHA) += airoha_eth.o --- /dev/null +++ b/drivers/net/ethernet/airoha/airoha_eth.c -@@ -0,0 +1,3358 @@ +@@ -0,0 +1,3357 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Copyright (c) 2024 AIROHA Inc @@ -3433,7 +3433,6 @@ Signed-off-by: Paolo Abeni + if (!port) + continue; + -+ airoha_dev_stop(port->dev); + unregister_netdev(port->dev); + } + free_netdev(eth->napi_dev); @@ -3462,7 +3461,7 @@ Signed-off-by: Paolo Abeni +MODULE_DESCRIPTION("Ethernet driver for Airoha SoC"); --- a/drivers/net/ethernet/mediatek/airoha_eth.c +++ /dev/null -@@ -1,3358 +0,0 @@ +@@ -1,3357 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-only -/* - * Copyright (c) 2024 AIROHA Inc @@ -6794,7 +6793,6 @@ Signed-off-by: Paolo Abeni - if (!port) - continue; - -- airoha_dev_stop(port->dev); - unregister_netdev(port->dev); - } - free_netdev(eth->napi_dev); diff --git a/target/linux/airoha/patches-6.12/048-05-v6.15-net-airoha-Move-DSA-tag-in-DMA-descriptor.patch b/target/linux/airoha/patches-6.12/048-05-v6.15-net-airoha-Move-DSA-tag-in-DMA-descriptor.patch index 45f5fe327d..4bd450ba4a 100644 --- a/target/linux/airoha/patches-6.12/048-05-v6.15-net-airoha-Move-DSA-tag-in-DMA-descriptor.patch +++ b/target/linux/airoha/patches-6.12/048-05-v6.15-net-airoha-Move-DSA-tag-in-DMA-descriptor.patch @@ -236,9 +236,9 @@ Signed-off-by: Paolo Abeni } free_netdev(eth->napi_dev); platform_set_drvdata(pdev, NULL); -@@ -2414,6 +2526,7 @@ static void airoha_remove(struct platfor +@@ -2413,6 +2525,7 @@ static void airoha_remove(struct platfor + continue; - airoha_dev_stop(port->dev); unregister_netdev(port->dev); + airoha_metadata_dst_free(port); } diff --git a/target/linux/airoha/patches-6.12/048-13-v6.15-net-airoha-Introduce-flowtable-offload-support.patch b/target/linux/airoha/patches-6.12/048-13-v6.15-net-airoha-Introduce-flowtable-offload-support.patch index ca7925304e..7bafddc0e3 100644 --- a/target/linux/airoha/patches-6.12/048-13-v6.15-net-airoha-Introduce-flowtable-offload-support.patch +++ b/target/linux/airoha/patches-6.12/048-13-v6.15-net-airoha-Introduce-flowtable-offload-support.patch @@ -145,7 +145,7 @@ Signed-off-by: Paolo Abeni default: return -EOPNOTSUPP; } -@@ -2504,6 +2561,7 @@ static void airoha_remove(struct platfor +@@ -2503,6 +2560,7 @@ static void airoha_remove(struct platfor } free_netdev(eth->napi_dev); diff --git a/target/linux/airoha/patches-6.12/099-03-v6.19-net-airoha-Add-airoha_eth_soc_data-struct.patch b/target/linux/airoha/patches-6.12/099-03-v6.19-net-airoha-Add-airoha_eth_soc_data-struct.patch index 9035e21447..63cb4de964 100644 --- a/target/linux/airoha/patches-6.12/099-03-v6.19-net-airoha-Add-airoha_eth_soc_data-struct.patch +++ b/target/linux/airoha/patches-6.12/099-03-v6.19-net-airoha-Add-airoha_eth_soc_data-struct.patch @@ -75,7 +75,7 @@ Signed-off-by: Paolo Abeni eth->xsi_rsts); if (err) { dev_err(eth->dev, "failed to get bulk xsi reset lines\n"); -@@ -3052,8 +3061,23 @@ static void airoha_remove(struct platfor +@@ -3051,8 +3060,23 @@ static void airoha_remove(struct platfor platform_set_drvdata(pdev, NULL); } diff --git a/target/linux/airoha/patches-6.12/099-10-v6.19-net-airoha-Refactor-src-port-configuration-in-airhoh.patch b/target/linux/airoha/patches-6.12/099-10-v6.19-net-airoha-Refactor-src-port-configuration-in-airhoh.patch index cec079845c..81409b68c9 100644 --- a/target/linux/airoha/patches-6.12/099-10-v6.19-net-airoha-Refactor-src-port-configuration-in-airhoh.patch +++ b/target/linux/airoha/patches-6.12/099-10-v6.19-net-airoha-Refactor-src-port-configuration-in-airhoh.patch @@ -105,7 +105,7 @@ Signed-off-by: Paolo Abeni fallthrough; case 2: if (airoha_ppe_is_enabled(eth, 1)) { -@@ -3073,11 +3078,38 @@ static const char * const en7581_xsi_rst +@@ -3072,11 +3077,38 @@ static const char * const en7581_xsi_rst "xfp-mac", }; diff --git a/target/linux/airoha/patches-6.12/099-12-v6.19-net-airoha-Add-AN7583-SoC-support.patch b/target/linux/airoha/patches-6.12/099-12-v6.19-net-airoha-Add-AN7583-SoC-support.patch index 7f34a05ab5..c3b5ccd175 100644 --- a/target/linux/airoha/patches-6.12/099-12-v6.19-net-airoha-Add-AN7583-SoC-support.patch +++ b/target/linux/airoha/patches-6.12/099-12-v6.19-net-airoha-Add-AN7583-SoC-support.patch @@ -88,7 +88,7 @@ Signed-off-by: Paolo Abeni msg1 = FIELD_PREP(QDMA_ETH_TXMSG_FPORT_MASK, fport) | FIELD_PREP(QDMA_ETH_TXMSG_METER_MASK, 0x7f); -@@ -3102,6 +3120,35 @@ static int airoha_en7581_get_src_port_id +@@ -3101,6 +3119,35 @@ static int airoha_en7581_get_src_port_id return -EINVAL; } @@ -124,7 +124,7 @@ Signed-off-by: Paolo Abeni static const struct airoha_eth_soc_data en7581_soc_data = { .version = 0x7581, .xsi_rsts_names = en7581_xsi_rsts_names, -@@ -3112,8 +3159,19 @@ static const struct airoha_eth_soc_data +@@ -3111,8 +3158,19 @@ static const struct airoha_eth_soc_data }, }; diff --git a/target/linux/airoha/patches-6.12/116-07-airoha-ethernet-drop-xsi-mac-reset.patch b/target/linux/airoha/patches-6.12/116-07-airoha-ethernet-drop-xsi-mac-reset.patch index 7e0fc5a798..e0a1a51010 100644 --- a/target/linux/airoha/patches-6.12/116-07-airoha-ethernet-drop-xsi-mac-reset.patch +++ b/target/linux/airoha/patches-6.12/116-07-airoha-ethernet-drop-xsi-mac-reset.patch @@ -15,7 +15,7 @@ Signed-off-by: Christian Marangi --- a/drivers/net/ethernet/airoha/airoha_eth.c +++ b/drivers/net/ethernet/airoha/airoha_eth.c -@@ -3088,7 +3088,6 @@ static void airoha_remove(struct platfor +@@ -3087,7 +3087,6 @@ static void airoha_remove(struct platfor } static const char * const en7581_xsi_rsts_names[] = { @@ -23,7 +23,7 @@ Signed-off-by: Christian Marangi "hsi0-mac", "hsi1-mac", "hsi-mac", -@@ -3120,7 +3119,6 @@ static int airoha_en7581_get_src_port_id +@@ -3119,7 +3118,6 @@ static int airoha_en7581_get_src_port_id } static const char * const an7583_xsi_rsts_names[] = { diff --git a/target/linux/airoha/patches-6.12/116-10-net-airoha-add-phylink-support-for-GDM2-4.patch b/target/linux/airoha/patches-6.12/116-10-net-airoha-add-phylink-support-for-GDM2-4.patch index d0e658b81e..3bd2766fcc 100644 --- a/target/linux/airoha/patches-6.12/116-10-net-airoha-add-phylink-support-for-GDM2-4.patch +++ b/target/linux/airoha/patches-6.12/116-10-net-airoha-add-phylink-support-for-GDM2-4.patch @@ -210,8 +210,8 @@ Signed-off-by: Christian Marangi } } free_netdev(eth->napi_dev); -@@ -3080,6 +3219,10 @@ static void airoha_remove(struct platfor - airoha_dev_stop(port->dev); +@@ -3079,6 +3218,10 @@ static void airoha_remove(struct platfor + unregister_netdev(port->dev); airoha_metadata_dst_free(port); + if (airhoa_is_phy_external(port)) { diff --git a/target/linux/airoha/patches-6.12/606-net-airoha-disable-external-phy-code-if-PCS_AIROHA-i.patch b/target/linux/airoha/patches-6.12/606-net-airoha-disable-external-phy-code-if-PCS_AIROHA-i.patch index bcc80b002d..38796ea922 100644 --- a/target/linux/airoha/patches-6.12/606-net-airoha-disable-external-phy-code-if-PCS_AIROHA-i.patch +++ b/target/linux/airoha/patches-6.12/606-net-airoha-disable-external-phy-code-if-PCS_AIROHA-i.patch @@ -116,8 +116,8 @@ Signed-off-by: Mikhail Kshevetskiy } } free_netdev(eth->napi_dev); -@@ -3222,10 +3236,12 @@ static void airoha_remove(struct platfor - airoha_dev_stop(port->dev); +@@ -3221,10 +3235,12 @@ static void airoha_remove(struct platfor + unregister_netdev(port->dev); airoha_metadata_dst_free(port); +#if defined(CONFIG_PCS_AIROHA) diff --git a/target/linux/airoha/patches-6.12/886-uart-add-en7523-support.patch b/target/linux/airoha/patches-6.12/886-uart-add-en7523-support.patch index cad2a715d9..486208f71a 100644 --- a/target/linux/airoha/patches-6.12/886-uart-add-en7523-support.patch +++ b/target/linux/airoha/patches-6.12/886-uart-add-en7523-support.patch @@ -122,7 +122,7 @@ }; /* Uart divisor latch read */ -@@ -2835,6 +2843,12 @@ serial8250_do_set_termios(struct uart_po +@@ -2841,6 +2849,12 @@ serial8250_do_set_termios(struct uart_po serial8250_set_divisor(port, baud, quot, frac); diff --git a/target/linux/ath79/patches-6.12/400-mtd-nor-support-mtd-name-from-device-tree.patch b/target/linux/ath79/patches-6.12/400-mtd-nor-support-mtd-name-from-device-tree.patch index 39f3fa76fc..ccef8fe7ef 100644 --- a/target/linux/ath79/patches-6.12/400-mtd-nor-support-mtd-name-from-device-tree.patch +++ b/target/linux/ath79/patches-6.12/400-mtd-nor-support-mtd-name-from-device-tree.patch @@ -10,7 +10,7 @@ Signed-off-by: Abhimanyu Vishwakarma --- a/drivers/mtd/spi-nor/core.c +++ b/drivers/mtd/spi-nor/core.c -@@ -3385,12 +3385,19 @@ static int spi_nor_set_mtd_info(struct s +@@ -3526,12 +3526,19 @@ static int spi_nor_set_mtd_info(struct s { struct mtd_info *mtd = &nor->mtd; struct device *dev = nor->dev; diff --git a/target/linux/ath79/patches-6.12/900-unaligned_access_hacks.patch b/target/linux/ath79/patches-6.12/900-unaligned_access_hacks.patch index 43017e10c2..4a5a1a32bd 100644 --- a/target/linux/ath79/patches-6.12/900-unaligned_access_hacks.patch +++ b/target/linux/ath79/patches-6.12/900-unaligned_access_hacks.patch @@ -259,7 +259,7 @@ SVN-Revision: 35130 #include #include #include -@@ -914,10 +915,10 @@ static void tcp_v6_send_response(const s +@@ -915,10 +916,10 @@ static void tcp_v6_send_response(const s topt = (__be32 *)(t1 + 1); if (tsecr) { @@ -829,7 +829,7 @@ SVN-Revision: 35130 *sum = csum_fold(csum_partial(diff, sizeof(diff), --- a/include/linux/etherdevice.h +++ b/include/linux/etherdevice.h -@@ -559,7 +559,7 @@ static inline bool is_etherdev_addr(cons +@@ -560,7 +560,7 @@ static inline bool is_etherdev_addr(cons * @b: Pointer to Ethernet header * * Compare two Ethernet headers, returns 0 if equal. @@ -838,7 +838,7 @@ SVN-Revision: 35130 * aligned OR the platform can handle unaligned access. This is the * case for all packets coming into netif_receive_skb or similar * entry points. -@@ -582,11 +582,12 @@ static inline unsigned long compare_ethe +@@ -583,11 +583,12 @@ static inline unsigned long compare_ethe fold |= *(unsigned long *)(a + 6) ^ *(unsigned long *)(b + 6); return fold; #else diff --git a/target/linux/bcm27xx/patches-6.12/950-0005-Revert-net-bcmgenet-Request-APD-DLL-disable-and-IDDQ.patch b/target/linux/bcm27xx/patches-6.12/950-0005-Revert-net-bcmgenet-Request-APD-DLL-disable-and-IDDQ.patch index 0bde0756e5..75aac5c5f3 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0005-Revert-net-bcmgenet-Request-APD-DLL-disable-and-IDDQ.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0005-Revert-net-bcmgenet-Request-APD-DLL-disable-and-IDDQ.patch @@ -15,7 +15,7 @@ Signed-off-by: Phil Elwell --- a/drivers/net/ethernet/broadcom/genet/bcmmii.c +++ b/drivers/net/ethernet/broadcom/genet/bcmmii.c -@@ -304,9 +304,7 @@ int bcmgenet_mii_probe(struct net_device +@@ -301,9 +301,7 @@ int bcmgenet_mii_probe(struct net_device struct device_node *dn = kdev->of_node; phy_interface_t phy_iface = priv->phy_interface; struct phy_device *phydev; diff --git a/target/linux/bcm27xx/patches-6.12/950-0054-Add-dwc_otg-driver.patch b/target/linux/bcm27xx/patches-6.12/950-0054-Add-dwc_otg-driver.patch index 9502cdf2cf..47fda506c3 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0054-Add-dwc_otg-driver.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0054-Add-dwc_otg-driver.patch @@ -1259,7 +1259,7 @@ Signed-off-by: Jonathan Bell USB_PORT_FEAT_C_OVER_CURRENT); --- a/drivers/usb/core/message.c +++ b/drivers/usb/core/message.c -@@ -2180,6 +2180,85 @@ free_interfaces: +@@ -2238,6 +2238,85 @@ free_interfaces: if (cp->string == NULL && !(dev->quirks & USB_QUIRK_CONFIG_INTF_STRINGS)) cp->string = usb_cache_string(dev, cp->desc.iConfiguration); diff --git a/target/linux/bcm27xx/patches-6.12/950-0073-ASoC-Add-support-for-all-the-downstream-rpi-sound-ca.patch b/target/linux/bcm27xx/patches-6.12/950-0073-ASoC-Add-support-for-all-the-downstream-rpi-sound-ca.patch index fdb67cea01..0f750e485c 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0073-ASoC-Add-support-for-all-the-downstream-rpi-sound-ca.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0073-ASoC-Add-support-for-all-the-downstream-rpi-sound-ca.patch @@ -18589,7 +18589,7 @@ Signed-off-by: j-schambacher u32 xfer_resolution; --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c -@@ -1437,7 +1437,15 @@ int snd_soc_runtime_set_dai_fmt(struct s +@@ -1436,7 +1436,15 @@ int snd_soc_runtime_set_dai_fmt(struct s return 0; for_each_rtd_codec_dais(rtd, i, codec_dai) { @@ -18626,7 +18626,7 @@ Signed-off-by: j-schambacher * For devices with more than one control interface, we assume the --- a/sound/usb/quirks.c +++ b/sound/usb/quirks.c -@@ -2395,6 +2395,8 @@ static const struct usb_audio_quirk_flag +@@ -2397,6 +2397,8 @@ static const struct usb_audio_quirk_flag QUIRK_FLAG_ALIGN_TRANSFER), DEVICE_FLG(0x534d, 0x2109, /* MacroSilicon MS2109 */ QUIRK_FLAG_ALIGN_TRANSFER), diff --git a/target/linux/bcm27xx/patches-6.12/950-0094-net-lan78xx-Disable-TCP-Segmentation-Offload-TSO.patch b/target/linux/bcm27xx/patches-6.12/950-0094-net-lan78xx-Disable-TCP-Segmentation-Offload-TSO.patch index 50c86eba3c..930c7493ae 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0094-net-lan78xx-Disable-TCP-Segmentation-Offload-TSO.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0094-net-lan78xx-Disable-TCP-Segmentation-Offload-TSO.patch @@ -37,7 +37,7 @@ Signed-off-by: Dave Stevenson static int lan78xx_read_reg(struct lan78xx_net *dev, u32 index, u32 *data) { u32 *buf; -@@ -3462,8 +3471,14 @@ static int lan78xx_bind(struct lan78xx_n +@@ -3466,8 +3475,14 @@ static int lan78xx_bind(struct lan78xx_n if (DEFAULT_RX_CSUM_ENABLE) dev->net->features |= NETIF_F_RXCSUM; diff --git a/target/linux/bcm27xx/patches-6.12/950-0096-lan78xx-Debounce-link-events-to-minimize-poll-storm.patch b/target/linux/bcm27xx/patches-6.12/950-0096-lan78xx-Debounce-link-events-to-minimize-poll-storm.patch index c885918f8f..9dd0937ddc 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0096-lan78xx-Debounce-link-events-to-minimize-poll-storm.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0096-lan78xx-Debounce-link-events-to-minimize-poll-storm.patch @@ -28,7 +28,7 @@ See: https://github.com/raspberrypi/linux/issues/2447 static int lan78xx_read_reg(struct lan78xx_net *dev, u32 index, u32 *data) { u32 *buf; -@@ -4446,7 +4451,13 @@ static int lan78xx_probe(struct usb_inte +@@ -4452,7 +4457,13 @@ static int lan78xx_probe(struct usb_inte if (ret < 0) goto out4; diff --git a/target/linux/bcm27xx/patches-6.12/950-0099-lan78xx-Enable-LEDs-and-auto-negotiation.patch b/target/linux/bcm27xx/patches-6.12/950-0099-lan78xx-Enable-LEDs-and-auto-negotiation.patch index 8b0be11deb..a92714c493 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0099-lan78xx-Enable-LEDs-and-auto-negotiation.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0099-lan78xx-Enable-LEDs-and-auto-negotiation.patch @@ -14,7 +14,7 @@ Signed-off-by: Phil Elwell --- a/drivers/net/usb/lan78xx.c +++ b/drivers/net/usb/lan78xx.c -@@ -2913,6 +2913,11 @@ static int lan78xx_reset(struct lan78xx_ +@@ -2917,6 +2917,11 @@ static int lan78xx_reset(struct lan78xx_ int ret; u32 buf; u8 sig; @@ -26,7 +26,7 @@ Signed-off-by: Phil Elwell ret = lan78xx_read_reg(dev, HW_CFG, &buf); if (ret < 0) -@@ -2981,6 +2986,10 @@ static int lan78xx_reset(struct lan78xx_ +@@ -2985,6 +2990,10 @@ static int lan78xx_reset(struct lan78xx_ buf |= HW_CFG_CLK125_EN_; buf |= HW_CFG_REFCLK25_EN_; @@ -37,7 +37,7 @@ Signed-off-by: Phil Elwell ret = lan78xx_write_reg(dev, HW_CFG, buf); if (ret < 0) return ret; -@@ -3083,6 +3092,9 @@ static int lan78xx_reset(struct lan78xx_ +@@ -3087,6 +3096,9 @@ static int lan78xx_reset(struct lan78xx_ buf |= MAC_CR_AUTO_DUPLEX_ | MAC_CR_AUTO_SPEED_; } } diff --git a/target/linux/bcm27xx/patches-6.12/950-0122-bcmgenet-Better-coalescing-parameter-defaults.patch b/target/linux/bcm27xx/patches-6.12/950-0122-bcmgenet-Better-coalescing-parameter-defaults.patch index 8a562bf1fd..a1c80428de 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0122-bcmgenet-Better-coalescing-parameter-defaults.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0122-bcmgenet-Better-coalescing-parameter-defaults.patch @@ -18,7 +18,7 @@ Signed-off-by: Phil Elwell --- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c +++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c -@@ -2664,7 +2664,7 @@ static void bcmgenet_init_tx_ring(struct +@@ -2657,7 +2657,7 @@ static void bcmgenet_init_tx_ring(struct bcmgenet_tdma_ring_writel(priv, index, 0, TDMA_PROD_INDEX); bcmgenet_tdma_ring_writel(priv, index, 0, TDMA_CONS_INDEX); @@ -27,7 +27,7 @@ Signed-off-by: Phil Elwell /* Disable rate control for now */ bcmgenet_tdma_ring_writel(priv, index, flow_period_val, TDMA_FLOW_PERIOD); -@@ -4139,9 +4139,12 @@ static int bcmgenet_probe(struct platfor +@@ -4132,9 +4132,12 @@ static int bcmgenet_probe(struct platfor netif_set_real_num_rx_queues(priv->dev, priv->hw_params->rx_queues + 1); /* Set default coalescing parameters */ diff --git a/target/linux/bcm27xx/patches-6.12/950-0123-net-genet-enable-link-energy-detect-powerdown-for-ex.patch b/target/linux/bcm27xx/patches-6.12/950-0123-net-genet-enable-link-energy-detect-powerdown-for-ex.patch index 99c43b28fb..7c1243a59d 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0123-net-genet-enable-link-energy-detect-powerdown-for-ex.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0123-net-genet-enable-link-energy-detect-powerdown-for-ex.patch @@ -20,7 +20,7 @@ Signed-off-by: Jonathan Bell --- a/drivers/net/ethernet/broadcom/genet/bcmmii.c +++ b/drivers/net/ethernet/broadcom/genet/bcmmii.c -@@ -310,6 +310,8 @@ int bcmgenet_mii_probe(struct net_device +@@ -307,6 +307,8 @@ int bcmgenet_mii_probe(struct net_device /* Communicate the integrated PHY revision */ if (priv->internal_phy) phy_flags = priv->gphy_rev; diff --git a/target/linux/bcm27xx/patches-6.12/950-0124-usb-add-plumbing-for-updating-interrupt-endpoint-int.patch b/target/linux/bcm27xx/patches-6.12/950-0124-usb-add-plumbing-for-updating-interrupt-endpoint-int.patch index 77c0f826ed..c31cb6838c 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0124-usb-add-plumbing-for-updating-interrupt-endpoint-int.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0124-usb-add-plumbing-for-updating-interrupt-endpoint-int.patch @@ -46,7 +46,7 @@ Signed-off-by: Jonathan Bell * have been called previously. Use for set_configuration, set_interface, --- a/drivers/usb/core/message.c +++ b/drivers/usb/core/message.c -@@ -1267,6 +1267,21 @@ static void remove_intf_ep_devs(struct u +@@ -1325,6 +1325,21 @@ static void remove_intf_ep_devs(struct u intf->ep_devs_created = 0; } @@ -70,7 +70,7 @@ Signed-off-by: Jonathan Bell * @dev: the device whose endpoint is being disabled --- a/include/linux/usb.h +++ b/include/linux/usb.h -@@ -1875,6 +1875,8 @@ extern int usb_clear_halt(struct usb_dev +@@ -1879,6 +1879,8 @@ extern int usb_clear_halt(struct usb_dev extern int usb_reset_configuration(struct usb_device *dev); extern int usb_set_interface(struct usb_device *dev, int ifnum, int alternate); extern void usb_reset_endpoint(struct usb_device *dev, unsigned int epaddr); diff --git a/target/linux/bcm27xx/patches-6.12/950-0133-net-bcmgenet-Workaround-2-for-Pi4-Ethernet-fail.patch b/target/linux/bcm27xx/patches-6.12/950-0133-net-bcmgenet-Workaround-2-for-Pi4-Ethernet-fail.patch index 27eeecba1a..7c8e6cc714 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0133-net-bcmgenet-Workaround-2-for-Pi4-Ethernet-fail.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0133-net-bcmgenet-Workaround-2-for-Pi4-Ethernet-fail.patch @@ -37,7 +37,7 @@ Signed-off-by: Phil Elwell static inline void bcmgenet_writel(u32 value, void __iomem *offset) { -@@ -2493,6 +2496,11 @@ static void reset_umac(struct bcmgenet_p +@@ -2486,6 +2489,11 @@ static void reset_umac(struct bcmgenet_p bcmgenet_rbuf_ctrl_set(priv, 0); udelay(10); diff --git a/target/linux/bcm27xx/patches-6.12/950-0172-spi-Force-CS_HIGH-if-GPIO-descriptors-are-used.patch b/target/linux/bcm27xx/patches-6.12/950-0172-spi-Force-CS_HIGH-if-GPIO-descriptors-are-used.patch index df416916c8..4d5aae743a 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0172-spi-Force-CS_HIGH-if-GPIO-descriptors-are-used.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0172-spi-Force-CS_HIGH-if-GPIO-descriptors-are-used.patch @@ -32,7 +32,7 @@ Signed-off-by: Phil Elwell --- a/drivers/spi/spi.c +++ b/drivers/spi/spi.c -@@ -3907,6 +3907,7 @@ static int spi_set_cs_timing(struct spi_ +@@ -3906,6 +3906,7 @@ static int spi_set_cs_timing(struct spi_ */ int spi_setup(struct spi_device *spi) { @@ -40,7 +40,7 @@ Signed-off-by: Phil Elwell unsigned bad_bits, ugly_bits; int status; -@@ -3933,6 +3934,14 @@ int spi_setup(struct spi_device *spi) +@@ -3932,6 +3933,14 @@ int spi_setup(struct spi_device *spi) "setup: MOSI configured to idle low and high at the same time.\n"); return -EINVAL; } diff --git a/target/linux/bcm27xx/patches-6.12/950-0297-net-bcmgenet-Add-eee-module-parameter.patch b/target/linux/bcm27xx/patches-6.12/950-0297-net-bcmgenet-Add-eee-module-parameter.patch index 9b2df1979c..903c8cdf87 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0297-net-bcmgenet-Add-eee-module-parameter.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0297-net-bcmgenet-Add-eee-module-parameter.patch @@ -26,7 +26,7 @@ Signed-off-by: Phil Elwell static inline void bcmgenet_writel(u32 value, void __iomem *offset) { -@@ -3430,6 +3433,17 @@ static int bcmgenet_open(struct net_devi +@@ -3423,6 +3426,17 @@ static int bcmgenet_open(struct net_devi bcmgenet_phy_pause_set(dev, priv->rx_pause, priv->tx_pause); diff --git a/target/linux/bcm27xx/patches-6.12/950-0335-usb-xhci-add-XHCI_VLI_HUB_TT_QUIRK.patch b/target/linux/bcm27xx/patches-6.12/950-0335-usb-xhci-add-XHCI_VLI_HUB_TT_QUIRK.patch index b99b85649a..066de8ee26 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0335-usb-xhci-add-XHCI_VLI_HUB_TT_QUIRK.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0335-usb-xhci-add-XHCI_VLI_HUB_TT_QUIRK.patch @@ -75,7 +75,7 @@ Signed-off-by: Jonathan Bell if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA && --- a/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c -@@ -3666,6 +3666,48 @@ static int xhci_align_td(struct xhci_hcd +@@ -3667,6 +3667,48 @@ static int xhci_align_td(struct xhci_hcd return 1; } @@ -124,7 +124,7 @@ Signed-off-by: Jonathan Bell /* This is very similar to what ehci-q.c qtd_fill() does */ int xhci_queue_bulk_tx(struct xhci_hcd *xhci, gfp_t mem_flags, struct urb *urb, int slot_id, unsigned int ep_index) -@@ -3820,6 +3862,8 @@ int xhci_queue_bulk_tx(struct xhci_hcd * +@@ -3821,6 +3863,8 @@ int xhci_queue_bulk_tx(struct xhci_hcd * } check_trb_math(urb, enqd_len); @@ -133,7 +133,7 @@ Signed-off-by: Jonathan Bell giveback_first_trb(xhci, slot_id, ep_index, urb->stream_id, start_cycle, start_trb); return 0; -@@ -3968,6 +4012,8 @@ int xhci_queue_ctrl_tx(struct xhci_hcd * +@@ -3969,6 +4013,8 @@ int xhci_queue_ctrl_tx(struct xhci_hcd * /* Event on completion */ field | TRB_IOC | TRB_TYPE(TRB_STATUS) | ep_ring->cycle_state); diff --git a/target/linux/bcm27xx/patches-6.12/950-0344-sdhci-Add-SD-Express-hook.patch b/target/linux/bcm27xx/patches-6.12/950-0344-sdhci-Add-SD-Express-hook.patch index 67fefbf0a5..c351e132d0 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0344-sdhci-Add-SD-Express-hook.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0344-sdhci-Add-SD-Express-hook.patch @@ -51,7 +51,7 @@ sdhci: remove PYA0_INTR_BUG quirk. Add quirks to disable some of the higher SDR }; /*****************************************************************************\ -@@ -4565,6 +4575,15 @@ int sdhci_setup_host(struct sdhci_host * +@@ -4572,6 +4582,15 @@ int sdhci_setup_host(struct sdhci_host * !(host->quirks2 & SDHCI_QUIRK2_BROKEN_DDR50)) mmc->caps |= MMC_CAP_UHS_DDR50; diff --git a/target/linux/bcm27xx/patches-6.12/950-0347-net-macb-Also-set-DMA-coherent-mask.patch b/target/linux/bcm27xx/patches-6.12/950-0347-net-macb-Also-set-DMA-coherent-mask.patch index 92495f3981..dcac114e9f 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0347-net-macb-Also-set-DMA-coherent-mask.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0347-net-macb-Also-set-DMA-coherent-mask.patch @@ -152,7 +152,7 @@ Signed-off-by: Jonathan Bell unsigned int max_tx_length; --- a/drivers/net/ethernet/cadence/macb_main.c +++ b/drivers/net/ethernet/cadence/macb_main.c -@@ -41,6 +41,9 @@ +@@ -42,6 +42,9 @@ #include #include "macb.h" @@ -162,7 +162,7 @@ Signed-off-by: Jonathan Bell /* This structure is only used for MACB on SiFive FU540 devices */ struct sifive_fu540_macb_mgmt { void __iomem *reg; -@@ -334,7 +337,7 @@ static int macb_mdio_wait_for_idle(struc +@@ -335,7 +338,7 @@ static int macb_mdio_wait_for_idle(struc u32 val; return readx_poll_timeout(MACB_READ_NSR, bp, val, val & MACB_BIT(IDLE), @@ -171,7 +171,7 @@ Signed-off-by: Jonathan Bell } static int macb_mdio_read_c22(struct mii_bus *bus, int mii_id, int regnum) -@@ -493,6 +496,19 @@ mdio_pm_exit: +@@ -494,6 +497,19 @@ mdio_pm_exit: return status; } @@ -191,7 +191,7 @@ Signed-off-by: Jonathan Bell static void macb_init_buffers(struct macb *bp) { struct macb_queue *queue; -@@ -974,6 +990,7 @@ static int macb_mii_init(struct macb *bp +@@ -1066,6 +1082,7 @@ static int macb_mii_init(struct macb *bp bp->mii_bus->write = &macb_mdio_write_c22; bp->mii_bus->read_c45 = &macb_mdio_read_c45; bp->mii_bus->write_c45 = &macb_mdio_write_c45; @@ -199,7 +199,7 @@ Signed-off-by: Jonathan Bell snprintf(bp->mii_bus->id, MII_BUS_ID_SIZE, "%s-%x", bp->pdev->name, bp->pdev->id); bp->mii_bus->priv = bp; -@@ -1639,6 +1656,11 @@ static int macb_rx(struct macb_queue *qu +@@ -1731,6 +1748,11 @@ static int macb_rx(struct macb_queue *qu macb_init_rx_ring(queue); queue_writel(queue, RBQP, queue->rx_ring_dma); @@ -211,7 +211,7 @@ Signed-off-by: Jonathan Bell macb_writel(bp, NCR, ctrl | MACB_BIT(RE)); -@@ -1941,8 +1963,9 @@ static irqreturn_t macb_interrupt(int ir +@@ -2033,8 +2055,9 @@ static irqreturn_t macb_interrupt(int ir queue_writel(queue, ISR, MACB_BIT(TCOMP) | MACB_BIT(TXUBR)); @@ -222,7 +222,7 @@ Signed-off-by: Jonathan Bell wmb(); // ensure softirq can see update } -@@ -2398,6 +2421,11 @@ static netdev_tx_t macb_start_xmit(struc +@@ -2490,6 +2513,11 @@ static netdev_tx_t macb_start_xmit(struc skb_tx_timestamp(skb); spin_lock(&bp->lock); @@ -234,7 +234,7 @@ Signed-off-by: Jonathan Bell macb_writel(bp, NCR, macb_readl(bp, NCR) | MACB_BIT(TSTART)); spin_unlock(&bp->lock); -@@ -2804,6 +2832,37 @@ static void macb_configure_dma(struct ma +@@ -2901,6 +2929,37 @@ static void macb_configure_dma(struct ma } } @@ -272,7 +272,7 @@ Signed-off-by: Jonathan Bell static void macb_init_hw(struct macb *bp) { u32 config; -@@ -2832,6 +2891,11 @@ static void macb_init_hw(struct macb *bp +@@ -2929,6 +2988,11 @@ static void macb_init_hw(struct macb *bp if (bp->caps & MACB_CAPS_JUMBO) bp->rx_frm_len_mask = MACB_RX_JFRMLEN_MASK; @@ -284,7 +284,7 @@ Signed-off-by: Jonathan Bell macb_configure_dma(bp); /* Enable RX partial store and forward and set watermark */ -@@ -3199,6 +3263,52 @@ static void gem_get_ethtool_strings(stru +@@ -3296,6 +3360,52 @@ static void gem_get_ethtool_strings(stru } } @@ -337,7 +337,7 @@ Signed-off-by: Jonathan Bell static struct net_device_stats *macb_get_stats(struct net_device *dev) { struct macb *bp = netdev_priv(dev); -@@ -3783,6 +3893,8 @@ static const struct ethtool_ops macb_eth +@@ -3883,6 +3993,8 @@ static const struct ethtool_ops macb_eth }; static const struct ethtool_ops gem_ethtool_ops = { @@ -346,7 +346,7 @@ Signed-off-by: Jonathan Bell .get_regs_len = macb_get_regs_len, .get_regs = macb_get_regs, .get_wol = macb_get_wol, -@@ -3792,6 +3904,8 @@ static const struct ethtool_ops gem_etht +@@ -3892,6 +4004,8 @@ static const struct ethtool_ops gem_etht .get_ethtool_stats = gem_get_ethtool_stats, .get_strings = gem_get_ethtool_strings, .get_sset_count = gem_get_sset_count, @@ -355,7 +355,7 @@ Signed-off-by: Jonathan Bell .get_link_ksettings = macb_get_link_ksettings, .set_link_ksettings = macb_set_link_ksettings, .get_ringparam = macb_get_ringparam, -@@ -5113,6 +5227,11 @@ static int macb_probe(struct platform_de +@@ -5213,6 +5327,11 @@ static int macb_probe(struct platform_de } } } @@ -367,7 +367,7 @@ Signed-off-by: Jonathan Bell spin_lock_init(&bp->lock); spin_lock_init(&bp->stats_lock); -@@ -5173,6 +5292,21 @@ static int macb_probe(struct platform_de +@@ -5273,6 +5392,21 @@ static int macb_probe(struct platform_de else bp->phy_interface = interface; @@ -389,7 +389,7 @@ Signed-off-by: Jonathan Bell /* IP specific init */ err = init(pdev); if (err) -@@ -5244,6 +5378,19 @@ static void macb_remove(struct platform_ +@@ -5344,6 +5478,19 @@ static void macb_remove(struct platform_ } } @@ -409,7 +409,7 @@ Signed-off-by: Jonathan Bell static int __maybe_unused macb_suspend(struct device *dev) { struct net_device *netdev = dev_get_drvdata(dev); -@@ -5497,6 +5644,7 @@ static const struct dev_pm_ops macb_pm_o +@@ -5607,6 +5754,7 @@ static const struct dev_pm_ops macb_pm_o static struct platform_driver macb_driver = { .probe = macb_probe, .remove_new = macb_remove, diff --git a/target/linux/bcm27xx/patches-6.12/950-0371-soc-bcm-bcm2835-power-Add-support-for-BCM2712.patch b/target/linux/bcm27xx/patches-6.12/950-0371-soc-bcm-bcm2835-power-Add-support-for-BCM2712.patch index 62564233bc..bfaa37e08e 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0371-soc-bcm-bcm2835-power-Add-support-for-BCM2712.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0371-soc-bcm-bcm2835-power-Add-support-for-BCM2712.patch @@ -14,7 +14,7 @@ Signed-off-by: Phil Elwell --- a/drivers/pmdomain/bcm/bcm2835-power.c +++ b/drivers/pmdomain/bcm/bcm2835-power.c -@@ -79,6 +79,7 @@ +@@ -80,6 +80,7 @@ #define PM_IMAGE 0x108 #define PM_GRAFX 0x10c #define PM_PROC 0x110 @@ -22,7 +22,7 @@ Signed-off-by: Phil Elwell #define PM_ENAB BIT(12) #define PM_ISPRSTN BIT(8) #define PM_H264RSTN BIT(7) -@@ -381,6 +382,9 @@ static int bcm2835_power_pd_power_on(str +@@ -377,6 +378,9 @@ static int bcm2835_power_pd_power_on(str return bcm2835_power_power_on(pd, PM_GRAFX); case BCM2835_POWER_DOMAIN_GRAFX_V3D: @@ -32,7 +32,7 @@ Signed-off-by: Phil Elwell return bcm2835_asb_power_on(pd, PM_GRAFX, ASB_V3D_M_CTRL, ASB_V3D_S_CTRL, PM_V3DRSTN); -@@ -447,6 +451,9 @@ static int bcm2835_power_pd_power_off(st +@@ -443,6 +447,9 @@ static int bcm2835_power_pd_power_off(st return bcm2835_power_power_off(pd, PM_GRAFX); case BCM2835_POWER_DOMAIN_GRAFX_V3D: @@ -42,7 +42,7 @@ Signed-off-by: Phil Elwell return bcm2835_asb_power_off(pd, PM_GRAFX, ASB_V3D_M_CTRL, ASB_V3D_S_CTRL, PM_V3DRSTN); -@@ -642,19 +649,21 @@ static int bcm2835_power_probe(struct pl +@@ -638,19 +645,21 @@ static int bcm2835_power_probe(struct pl power->asb = pm->asb; power->rpivid_asb = pm->rpivid_asb; diff --git a/target/linux/bcm27xx/patches-6.12/950-0437-mmc-sdhci-extend-maximum-ADMA-transfer-length-to-4Mi.patch b/target/linux/bcm27xx/patches-6.12/950-0437-mmc-sdhci-extend-maximum-ADMA-transfer-length-to-4Mi.patch index dc580e53ee..39c26127fb 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0437-mmc-sdhci-extend-maximum-ADMA-transfer-length-to-4Mi.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0437-mmc-sdhci-extend-maximum-ADMA-transfer-length-to-4Mi.patch @@ -23,7 +23,7 @@ Signed-off-by: Jonathan Bell BUG_ON(data->blksz > host->mmc->max_blk_size); BUG_ON(data->blocks > 65535); -@@ -4709,11 +4709,16 @@ int sdhci_setup_host(struct sdhci_host * +@@ -4716,11 +4716,16 @@ int sdhci_setup_host(struct sdhci_host * spin_lock_init(&host->lock); /* diff --git a/target/linux/bcm27xx/patches-6.12/950-0528-drm-Increase-plane_mask-to-64bit.patch b/target/linux/bcm27xx/patches-6.12/950-0528-drm-Increase-plane_mask-to-64bit.patch index 1ae93a6b42..2c4861f986 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0528-drm-Increase-plane_mask-to-64bit.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0528-drm-Increase-plane_mask-to-64bit.patch @@ -43,7 +43,7 @@ Signed-off-by: Dave Stevenson retry_disable: --- a/drivers/gpu/drm/drm_mode_config.c +++ b/drivers/gpu/drm/drm_mode_config.c -@@ -643,7 +643,7 @@ void drm_mode_config_validate(struct drm +@@ -646,7 +646,7 @@ void drm_mode_config_validate(struct drm struct drm_encoder *encoder; struct drm_crtc *crtc; struct drm_plane *plane; diff --git a/target/linux/bcm27xx/patches-6.12/950-0565-net-macb-Add-support-for-Raspberry-Pi-RP1-ethernet-c.patch b/target/linux/bcm27xx/patches-6.12/950-0565-net-macb-Add-support-for-Raspberry-Pi-RP1-ethernet-c.patch index 3e1dce2bad..ae6f61d81c 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0565-net-macb-Add-support-for-Raspberry-Pi-RP1-ethernet-c.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0565-net-macb-Add-support-for-Raspberry-Pi-RP1-ethernet-c.patch @@ -15,7 +15,7 @@ Signed-off-by: Dave Stevenson --- a/drivers/net/ethernet/cadence/macb_main.c +++ b/drivers/net/ethernet/cadence/macb_main.c -@@ -5076,6 +5076,17 @@ static const struct macb_config versal_c +@@ -5176,6 +5176,17 @@ static const struct macb_config versal_c .usrio = &macb_default_usrio, }; @@ -33,7 +33,7 @@ Signed-off-by: Dave Stevenson static const struct of_device_id macb_dt_ids[] = { { .compatible = "cdns,at91sam9260-macb", .data = &at91sam9260_config }, { .compatible = "cdns,macb" }, -@@ -5096,6 +5107,7 @@ static const struct of_device_id macb_dt +@@ -5196,6 +5207,7 @@ static const struct of_device_id macb_dt { .compatible = "microchip,mpfs-macb", .data = &mpfs_config }, { .compatible = "microchip,sama7g5-gem", .data = &sama7g5_gem_config }, { .compatible = "microchip,sama7g5-emac", .data = &sama7g5_emac_config }, diff --git a/target/linux/bcm27xx/patches-6.12/950-0685-nvme-pci-Disable-Host-Memory-Buffer-usage.patch b/target/linux/bcm27xx/patches-6.12/950-0685-nvme-pci-Disable-Host-Memory-Buffer-usage.patch index ec963fd3e7..9e5476c9fd 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0685-nvme-pci-Disable-Host-Memory-Buffer-usage.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0685-nvme-pci-Disable-Host-Memory-Buffer-usage.patch @@ -18,7 +18,7 @@ Signed-off-by: Phil Elwell --- a/drivers/nvme/host/pci.c +++ b/drivers/nvme/host/pci.c -@@ -2109,6 +2109,7 @@ static void nvme_free_host_mem(struct nv +@@ -2111,6 +2111,7 @@ static void nvme_free_host_mem(struct nv dev->nr_host_mem_descs = 0; } @@ -26,7 +26,7 @@ Signed-off-by: Phil Elwell static int __nvme_alloc_host_mem(struct nvme_dev *dev, u64 preferred, u32 chunk_size) { -@@ -2177,9 +2178,11 @@ out: +@@ -2179,9 +2180,11 @@ out: dev->host_mem_descs = NULL; return -ENOMEM; } @@ -38,7 +38,7 @@ Signed-off-by: Phil Elwell u64 min_chunk = min_t(u64, preferred, PAGE_SIZE * MAX_ORDER_NR_PAGES); u64 hmminds = max_t(u32, dev->ctrl.hmminds * 4096, PAGE_SIZE * 2); u64 chunk_size; -@@ -2192,6 +2195,7 @@ static int nvme_alloc_host_mem(struct nv +@@ -2194,6 +2197,7 @@ static int nvme_alloc_host_mem(struct nv nvme_free_host_mem(dev); } } diff --git a/target/linux/bcm27xx/patches-6.12/950-0692-cgroup-Add-cgroup_enable-option.patch b/target/linux/bcm27xx/patches-6.12/950-0692-cgroup-Add-cgroup_enable-option.patch index 64176cbfc7..db8f3304cd 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0692-cgroup-Add-cgroup_enable-option.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0692-cgroup-Add-cgroup_enable-option.patch @@ -17,7 +17,7 @@ Signed-off-by: Phil Elwell --- a/kernel/cgroup/cgroup.c +++ b/kernel/cgroup/cgroup.c -@@ -6932,6 +6932,39 @@ static int __init cgroup_disable(char *s +@@ -6933,6 +6933,39 @@ static int __init cgroup_disable(char *s } __setup("cgroup_disable=", cgroup_disable); diff --git a/target/linux/bcm4908/patches-6.12/700-net-dsa-bcm_sf2-enable-GPHY-for-switch-probing.patch b/target/linux/bcm4908/patches-6.12/700-net-dsa-bcm_sf2-enable-GPHY-for-switch-probing.patch index b3ccf1623a..db35928150 100644 --- a/target/linux/bcm4908/patches-6.12/700-net-dsa-bcm_sf2-enable-GPHY-for-switch-probing.patch +++ b/target/linux/bcm4908/patches-6.12/700-net-dsa-bcm_sf2-enable-GPHY-for-switch-probing.patch @@ -29,7 +29,7 @@ Signed-off-by: Rafał Miłecki --- a/drivers/net/dsa/bcm_sf2.c +++ b/drivers/net/dsa/bcm_sf2.c -@@ -1539,10 +1539,14 @@ static int bcm_sf2_sw_probe(struct platf +@@ -1543,10 +1543,14 @@ static int bcm_sf2_sw_probe(struct platf rev = reg_readl(priv, REG_PHY_REVISION); priv->hw_params.gphy_rev = rev & PHY_REVISION_MASK; diff --git a/target/linux/bcm4908/patches-6.12/701-net-dsa-bcm_sf2-keep-GPHY-enabled-on-the-BCM4908.patch b/target/linux/bcm4908/patches-6.12/701-net-dsa-bcm_sf2-keep-GPHY-enabled-on-the-BCM4908.patch index 36b1c23946..6e91c0208e 100644 --- a/target/linux/bcm4908/patches-6.12/701-net-dsa-bcm_sf2-keep-GPHY-enabled-on-the-BCM4908.patch +++ b/target/linux/bcm4908/patches-6.12/701-net-dsa-bcm_sf2-keep-GPHY-enabled-on-the-BCM4908.patch @@ -15,7 +15,7 @@ Signed-off-by: Rafał Miłecki --- a/drivers/net/dsa/bcm_sf2.c +++ b/drivers/net/dsa/bcm_sf2.c -@@ -1553,6 +1553,12 @@ static int bcm_sf2_sw_probe(struct platf +@@ -1557,6 +1557,12 @@ static int bcm_sf2_sw_probe(struct platf priv->hw_params.core_rev >> 8, priv->hw_params.core_rev & 0xff, priv->irq0, priv->irq1); diff --git a/target/linux/generic/backport-6.12/420-01-v6.16-mtd-rawnand-brcmnand-remove-unused-parameters.patch b/target/linux/generic/backport-6.12/420-01-v6.16-mtd-rawnand-brcmnand-remove-unused-parameters.patch index 3bc6038711..9d9061ed35 100644 --- a/target/linux/generic/backport-6.12/420-01-v6.16-mtd-rawnand-brcmnand-remove-unused-parameters.patch +++ b/target/linux/generic/backport-6.12/420-01-v6.16-mtd-rawnand-brcmnand-remove-unused-parameters.patch @@ -60,7 +60,7 @@ Signed-off-by: Miquel Raynal brcmnand_set_ecc_enabled(host, 1); return ret; } -@@ -2363,13 +2355,10 @@ static int brcmnand_write_page(struct na +@@ -2361,13 +2353,10 @@ static int brcmnand_write_page(struct na int oob_required, int page) { struct mtd_info *mtd = nand_to_mtd(chip); @@ -75,7 +75,7 @@ Signed-off-by: Miquel Raynal } static int brcmnand_write_page_raw(struct nand_chip *chip, const uint8_t *buf, -@@ -2381,9 +2370,8 @@ static int brcmnand_write_page_raw(struc +@@ -2379,9 +2368,8 @@ static int brcmnand_write_page_raw(struc u64 addr = (u64)page << chip->page_shift; int ret = 0; diff --git a/target/linux/generic/backport-6.12/420-03-v6.16-mtd-rawnand-brcmnand-legacy-exec_op-implementation.patch b/target/linux/generic/backport-6.12/420-03-v6.16-mtd-rawnand-brcmnand-legacy-exec_op-implementation.patch index 6c75c2bbf2..13e55f1e72 100644 --- a/target/linux/generic/backport-6.12/420-03-v6.16-mtd-rawnand-brcmnand-legacy-exec_op-implementation.patch +++ b/target/linux/generic/backport-6.12/420-03-v6.16-mtd-rawnand-brcmnand-legacy-exec_op-implementation.patch @@ -75,7 +75,7 @@ Signed-off-by: Miquel Raynal /* EDU info, per-transaction */ const u16 *edu_offsets; void __iomem *edu_base; -@@ -2478,18 +2509,190 @@ static int brcmnand_op_is_reset(const st +@@ -2476,18 +2507,190 @@ static int brcmnand_op_is_reset(const st return 0; } @@ -268,7 +268,7 @@ Signed-off-by: Miquel Raynal if (brcmnand_op_is_status(op)) { status = op->instrs[1].ctx.data.buf.in; -@@ -2513,11 +2716,7 @@ static int brcmnand_exec_op(struct nand_ +@@ -2511,11 +2714,7 @@ static int brcmnand_exec_op(struct nand_ if (op->deassert_wp) brcmnand_wp(mtd, 0); @@ -281,7 +281,7 @@ Signed-off-by: Miquel Raynal if (op->deassert_wp) brcmnand_wp(mtd, 1); -@@ -3130,6 +3329,15 @@ int brcmnand_probe(struct platform_devic +@@ -3128,6 +3327,15 @@ int brcmnand_probe(struct platform_devic if (ret) goto err; diff --git a/target/linux/generic/backport-6.12/710-v6.16-igc-enable-HW-vlan-tag-insertion-stripping-by-defaul.patch b/target/linux/generic/backport-6.12/710-v6.16-igc-enable-HW-vlan-tag-insertion-stripping-by-defaul.patch index 48d03f15e7..fe36bc3b05 100644 --- a/target/linux/generic/backport-6.12/710-v6.16-igc-enable-HW-vlan-tag-insertion-stripping-by-defaul.patch +++ b/target/linux/generic/backport-6.12/710-v6.16-igc-enable-HW-vlan-tag-insertion-stripping-by-defaul.patch @@ -20,7 +20,7 @@ Signed-off-by: Rui Salvaterra --- a/drivers/net/ethernet/intel/igc/igc_main.c +++ b/drivers/net/ethernet/intel/igc/igc_main.c -@@ -7070,6 +7070,9 @@ static int igc_probe(struct pci_dev *pde +@@ -7074,6 +7074,9 @@ static int igc_probe(struct pci_dev *pde netdev->xdp_features = NETDEV_XDP_ACT_BASIC | NETDEV_XDP_ACT_REDIRECT | NETDEV_XDP_ACT_XSK_ZEROCOPY; diff --git a/target/linux/generic/backport-6.12/730-03-v6.13-net-phy-support-active-high-property-for-PHY-LEDs.patch b/target/linux/generic/backport-6.12/730-03-v6.13-net-phy-support-active-high-property-for-PHY-LEDs.patch index 6822dc0f22..95e8638c39 100644 --- a/target/linux/generic/backport-6.12/730-03-v6.13-net-phy-support-active-high-property-for-PHY-LEDs.patch +++ b/target/linux/generic/backport-6.12/730-03-v6.13-net-phy-support-active-high-property-for-PHY-LEDs.patch @@ -19,7 +19,7 @@ Signed-off-by: Paolo Abeni --- a/drivers/net/phy/phy_device.c +++ b/drivers/net/phy/phy_device.c -@@ -3387,11 +3387,17 @@ static int of_phy_led(struct phy_device +@@ -3382,11 +3382,17 @@ static int of_phy_led(struct phy_device if (index > U8_MAX) return -EINVAL; diff --git a/target/linux/generic/hack-6.12/253-ksmbd-config.patch b/target/linux/generic/hack-6.12/253-ksmbd-config.patch index d9587fbe84..0b74e88cb8 100644 --- a/target/linux/generic/hack-6.12/253-ksmbd-config.patch +++ b/target/linux/generic/hack-6.12/253-ksmbd-config.patch @@ -10,7 +10,7 @@ Subject: [PATCH] Kconfig: add tristate for OID and ASNI string --- a/init/Kconfig +++ b/init/Kconfig -@@ -2063,7 +2063,7 @@ config PADATA +@@ -2066,7 +2066,7 @@ config PADATA bool config ASN1 diff --git a/target/linux/generic/hack-6.12/721-net-add-packet-mangeling.patch b/target/linux/generic/hack-6.12/721-net-add-packet-mangeling.patch index 32228bb34c..1fb8809180 100644 --- a/target/linux/generic/hack-6.12/721-net-add-packet-mangeling.patch +++ b/target/linux/generic/hack-6.12/721-net-add-packet-mangeling.patch @@ -19,7 +19,7 @@ Signed-off-by: Felix Fietkau --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h -@@ -1687,6 +1687,7 @@ enum netdev_priv_flags { +@@ -1689,6 +1689,7 @@ enum netdev_priv_flags { IFF_L3MDEV_RX_HANDLER = 1<<29, IFF_NO_ADDRCONF = BIT_ULL(30), IFF_TX_SKB_NO_LINEAR = BIT_ULL(31), @@ -27,7 +27,7 @@ Signed-off-by: Felix Fietkau }; /* Specifies the type of the struct net_device::ml_priv pointer */ -@@ -2168,6 +2169,11 @@ struct net_device { +@@ -2170,6 +2171,11 @@ struct net_device { const struct tlsdev_ops *tlsdev_ops; #endif @@ -39,7 +39,7 @@ Signed-off-by: Felix Fietkau unsigned int operstate; unsigned char link_mode; -@@ -2237,6 +2243,10 @@ struct net_device { +@@ -2239,6 +2245,10 @@ struct net_device { struct mctp_dev __rcu *mctp_ptr; #endif diff --git a/target/linux/generic/kernel-6.12 b/target/linux/generic/kernel-6.12 index 848f89c66c..71021f1a38 100644 --- a/target/linux/generic/kernel-6.12 +++ b/target/linux/generic/kernel-6.12 @@ -1,2 +1,2 @@ -LINUX_VERSION-6.12 = .77 -LINUX_KERNEL_HASH-6.12.77 = 358836ebe5caef41e7ae9492e7fbcdf5be6e53ee43c99752aebda81e1b2cff67 +LINUX_VERSION-6.12 = .78 +LINUX_KERNEL_HASH-6.12.78 = 719781b4b4faececa0f568bbcbd4fea8f4aef40155e85ad66f61624bf2f4af3d diff --git a/target/linux/generic/pending-6.12/103-kbuild-export-SUBARCH.patch b/target/linux/generic/pending-6.12/103-kbuild-export-SUBARCH.patch index 0cedbeca40..46c88a0682 100644 --- a/target/linux/generic/pending-6.12/103-kbuild-export-SUBARCH.patch +++ b/target/linux/generic/pending-6.12/103-kbuild-export-SUBARCH.patch @@ -10,7 +10,7 @@ Signed-off-by: Felix Fietkau --- a/Makefile +++ b/Makefile -@@ -589,7 +589,7 @@ export RUSTC_BOOTSTRAP := 1 +@@ -590,7 +590,7 @@ export RUSTC_BOOTSTRAP := 1 # Allows finding `.clippy.toml` in out-of-srctree builds. export CLIPPY_CONF_DIR := $(srctree) diff --git a/target/linux/generic/pending-6.12/203-kallsyms_uncompressed.patch b/target/linux/generic/pending-6.12/203-kallsyms_uncompressed.patch index 40de8f6072..5e9a0da585 100644 --- a/target/linux/generic/pending-6.12/203-kallsyms_uncompressed.patch +++ b/target/linux/generic/pending-6.12/203-kallsyms_uncompressed.patch @@ -14,7 +14,7 @@ Signed-off-by: Felix Fietkau --- a/init/Kconfig +++ b/init/Kconfig -@@ -1534,6 +1534,17 @@ config SYSCTL_ARCH_UNALIGN_ALLOW +@@ -1537,6 +1537,17 @@ config SYSCTL_ARCH_UNALIGN_ALLOW the unaligned access emulation. see arch/parisc/kernel/unaligned.c for reference diff --git a/target/linux/generic/pending-6.12/402-mtd-spi-nor-write-support-for-minor-aligned-partitions.patch b/target/linux/generic/pending-6.12/402-mtd-spi-nor-write-support-for-minor-aligned-partitions.patch index e8ad204337..c9bbe1442b 100644 --- a/target/linux/generic/pending-6.12/402-mtd-spi-nor-write-support-for-minor-aligned-partitions.patch +++ b/target/linux/generic/pending-6.12/402-mtd-spi-nor-write-support-for-minor-aligned-partitions.patch @@ -202,7 +202,7 @@ Reported-by: Dan Carpenter return !!nor->params->erase_map.uniform_region.erase_mask; } -@@ -2516,6 +2518,7 @@ static int spi_nor_select_erase(struct s +@@ -2657,6 +2659,7 @@ static int spi_nor_select_erase(struct s { struct spi_nor_erase_map *map = &nor->params->erase_map; const struct spi_nor_erase_type *erase = NULL; @@ -210,7 +210,7 @@ Reported-by: Dan Carpenter struct mtd_info *mtd = &nor->mtd; int i; -@@ -2542,8 +2545,9 @@ static int spi_nor_select_erase(struct s +@@ -2683,8 +2686,9 @@ static int spi_nor_select_erase(struct s */ for (i = SNOR_ERASE_TYPE_MAX - 1; i >= 0; i--) { if (map->erase_type[i].size) { @@ -222,7 +222,7 @@ Reported-by: Dan Carpenter } } -@@ -2551,6 +2555,9 @@ static int spi_nor_select_erase(struct s +@@ -2692,6 +2696,9 @@ static int spi_nor_select_erase(struct s return -EINVAL; mtd->erasesize = erase->size; diff --git a/target/linux/generic/pending-6.12/620-net-sfp-improve-Huawei-MA5671a-fixup.patch b/target/linux/generic/pending-6.12/620-net-sfp-improve-Huawei-MA5671a-fixup.patch deleted file mode 100644 index dd0a4a57f5..0000000000 --- a/target/linux/generic/pending-6.12/620-net-sfp-improve-Huawei-MA5671a-fixup.patch +++ /dev/null @@ -1,149 +0,0 @@ -From patchwork Fri Mar 6 12:29:55 2026 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 8bit -X-Patchwork-Submitter: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?= - -X-Patchwork-Id: 14457090 -X-Patchwork-Delegate: kuba@kernel.org -Received: from mail-wr1-f48.google.com (mail-wr1-f48.google.com - [209.85.221.48]) - (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) - (No client certificate requested) - by smtp.subspace.kernel.org (Postfix) with ESMTPS id AF3F4386459 - for ; Fri, 6 Mar 2026 12:52:18 +0000 (UTC) -Authentication-Results: smtp.subspace.kernel.org; - arc=none smtp.client-ip=209.85.221.48 -ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; - t=1772801540; cv=none; - b=LVeywxv8ajenPZ8Kr1arieKosbrf60O9l+ouIPKPFNt5btxWDZ59pIU9BfZjv5n9ifEOyUA/UD0phxnG77+oB/k6UCd7DdGQQASZB3NHq5cvmErbgXm0XG3C8BBxVXU5pF7atPS23kBqM9ptxsv3IaeH/fDFcj6k6SH61rGEpuQ= -ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; - s=arc-20240116; t=1772801540; c=relaxed/simple; - bh=HAy43ssDo0xlUcBDIU7vQZtNnpxG03JPCL6Ldi51ASI=; - h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:Content-Type; - b=OBk8kI0I91psFRaIxb6nCnAzQlsc7jrXkOPW8lL7cYCosY08yfQDwAlWBFfdFs/VDuVJjD5VEdeQeMt2K4kWGgjLNXhTrRqgs6JNe7PxALDJKvt+kcJ833TRz3hKl2eb2Ft6WnKPf/6hp5Q3qm8+/Q703ixD4sF/0aDNw1BrDY4= -ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; - dmarc=pass (p=none dis=none) header.from=gmail.com; - spf=pass smtp.mailfrom=gmail.com; - dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com - header.b=RCEse1HL; arc=none smtp.client-ip=209.85.221.48 -Authentication-Results: smtp.subspace.kernel.org; - dmarc=pass (p=none dis=none) header.from=gmail.com -Authentication-Results: smtp.subspace.kernel.org; - spf=pass smtp.mailfrom=gmail.com -Authentication-Results: smtp.subspace.kernel.org; - dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com - header.b="RCEse1HL" -Received: by mail-wr1-f48.google.com with SMTP id - ffacd0b85a97d-439b7c2788dso4008389f8f.1 - for ; Fri, 06 Mar 2026 04:52:18 -0800 (PST) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=gmail.com; s=20230601; t=1772801537; x=1773406337; - darn=vger.kernel.org; - h=content-transfer-encoding:mime-version:message-id:date:subject:cc - :to:from:from:to:cc:subject:date:message-id:reply-to; - bh=y8B8kg8ACcCsMXy3SgsyRYngVEpIsqkcoCsLOS/nNqQ=; - b=RCEse1HLoUtQApOdbPXFvYItGrEKWhMZ5FH1L4npAxteGeWOhAEAekijg3Ur83ovNu - D7j0Aio5nwazNQz3y4rO88a+svlEbLx5fyxypjkMFUV4PDnOpv7HYjT9Aw1NVdIwO6l+ - sTgZ1jssfWdVnLQwQe6naotyBRoBV2AugdTmASE0Okxrsi3juIOafyTCxnp4K0weRpaH - XodiSWNrkHzZSWM6/wl3D42yExGGPiuDybF+9otR/5TaBWNzrcLkSb73hvP6va35kQWK - mnp6OV+L7iHTbxYpTfTm4axD+IZ/Q/dtFxxA6XolA28oMQbRPK0SIHepheSZx4bgl64w - FM4w== -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20230601; t=1772801537; x=1773406337; - h=content-transfer-encoding:mime-version:message-id:date:subject:cc - :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date - :message-id:reply-to; - bh=y8B8kg8ACcCsMXy3SgsyRYngVEpIsqkcoCsLOS/nNqQ=; - b=KomubXrbvHQI4WbFxBztyfrvNNRRWm7V46yQSwx0bP8PXKIJP38kAYzK+ZKWhmcd7e - LpS7422VcYyLywLRxlevD2YaXsF0CK6e00YpTtixakHxYs/4KxGaU21vfwYV8mRhfu7g - HVmxKvNQ6DTdC7wAIGT6TrcZCK4VCvgCx3z9yC62hQc8C6w+9mDnnGPvXNR74ofvvXdC - eVZjm56layRoEr4PTpR2F33OVSt8+HRikH7eBzIKtQ5n/lEKtmJKDHRaodAaCyFGWMWa - qDVoOR8VI4NIJABfsOT6OqisXLPLf+jkKpGkCY2ioRPRKK9GzW4PgIuNcKvPQilQQkgD - Xlnw== -X-Forwarded-Encrypted: i=1; - AJvYcCVcziiSg1n0cDakmiQXH3869FECP24dcIqrZzs8zKakP+vHT958hnq9Bp0alDnLeVtXgo0B8T4=@vger.kernel.org -X-Gm-Message-State: AOJu0Yx2OF1e3PiuR4Zqpe9qXA6kz6T2CCtro6kv8eL2j4Zh2HCjWywo - /rZTavazOZRoq7zTvc4fGZ/yupjkTT9xRPZCKRkM9pc0UuK/KDSP4pan -X-Gm-Gg: ATEYQzx75s3OlYg8XKMgu042++2+ZPa/CZDw09DYtnwEHHBsuylQF0+eXzcFM166JtP - EMuM6Nq/sGQx2WNTPNEyu1BRGci/SV005CzkExhd1KK52D/nC1c76MBxvAtioaI/+5tgNoyCg8v - ZFRyiqDReKfJ6JHa3YRI213dTzMluN1sZTYNSqlWI1MwW66gaDCf0myU81ehAfiAff34wmxnm8C - PUF0YrLYtgZl1I/ZcYM1npoL3PBOnrhaulSqhbn7S5NaZMkHLrNQm6ns1lof+7Ciju05dQpEcBe - pumVg15Dy+PcSXQSSQt4CULH7bbuJvZ0PHJ7dS+74i/OqFSgxD4E7LCqM5ufHYdbESx0/ERaR/z - CAyT3oTz6S1oMQCUTPevHjHjTbDOWhu74SqyTZETzwGnjZnfrPMa56ebQVRfYgOYW0bbx6j3O2M - v3CSEBiXpdFTdaLuRcqIb56JeDryaHx87SOThqnYP6gMiu7EljKYIhr572Rpgz+UIRkrYyNjL9c - BLmrcmhsXX4hU4X5KocoApkO04w -X-Received: by 2002:a05:600c:8b8b:b0:483:103c:b1ee with SMTP id - 5b1f17b1804b1-48526922599mr34173745e9.8.1772801536778; - Fri, 06 Mar 2026 04:52:16 -0800 (PST) -Received: from skynet.lan - (2a02-9142-4581-3c00-0000-0000-0000-0008.red-2a02-914.customerbaf.ipv6.rima-tde.net. - [2a02:9142:4581:3c00::8]) - by smtp.gmail.com with ESMTPSA id - 5b1f17b1804b1-48527681a3esm76085715e9.4.2026.03.06.04.52.14 - (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Fri, 06 Mar 2026 04:52:15 -0800 (PST) -From: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?= -To: linux@armlinux.org.uk, - andrew@lunn.ch, - hkallweit1@gmail.com, - davem@davemloft.net, - edumazet@google.com, - kuba@kernel.org, - pabeni@redhat.com, - mnhagan88@gmail.com, - netdev@vger.kernel.org, - linux-kernel@vger.kernel.org -Cc: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?= -Subject: [PATCH net v3] net: sfp: improve Huawei MA5671a fixup -Date: Fri, 6 Mar 2026 13:29:55 +0100 -Message-ID: <20260306125139.213637-1-noltari@gmail.com> -X-Mailer: git-send-email 2.47.3 -Precedence: bulk -X-Mailing-List: netdev@vger.kernel.org -List-Id: -List-Subscribe: -List-Unsubscribe: -MIME-Version: 1.0 -X-Patchwork-Delegate: kuba@kernel.org - -With the current sfp_fixup_ignore_tx_fault() fixup we ignore the TX_FAULT -signal, but we also need to apply sfp_fixup_ignore_los() in order to be -able to communicate with the module even if the fiber isn't connected for -configuration purposes. -This is needed for all the MA5671a firmwares, excluding the FS modded -firmware. - -Fixes: 2069624dac19 ("net: sfp: Add tx-fault workaround for Huawei MA5671A SFP ONT") -Signed-off-by: Álvaro Fernández Rojas ---- - v3: avoid using a vendor name in the function - v2: rebase on top of net/main instead of linux/master - - drivers/net/phy/sfp.c | 8 +++++++- - 1 file changed, 7 insertions(+), 1 deletion(-) - ---- a/drivers/net/phy/sfp.c -+++ b/drivers/net/phy/sfp.c -@@ -360,6 +360,12 @@ static void sfp_fixup_ignore_tx_fault(st - sfp->state_ignore_mask |= SFP_F_TX_FAULT; - } - -+static void sfp_fixup_ignore_tx_fault_and_los(struct sfp *sfp) -+{ -+ sfp_fixup_ignore_tx_fault(sfp); -+ sfp_fixup_ignore_los(sfp); -+} -+ - static void sfp_fixup_ignore_hw(struct sfp *sfp, unsigned int mask) - { - sfp->state_hw_mask &= ~mask; -@@ -523,7 +529,7 @@ static const struct sfp_quirk sfp_quirks - // Huawei MA5671A can operate at 2500base-X, but report 1.2GBd NRZ in - // their EEPROM - SFP_QUIRK("HUAWEI", "MA5671A", sfp_quirk_2500basex, -- sfp_fixup_ignore_tx_fault), -+ sfp_fixup_ignore_tx_fault_and_los), - - // Lantech 8330-262D-E and 8330-265D can operate at 2500base-X, but - // incorrectly report 2500MBd NRZ in their EEPROM. diff --git a/target/linux/generic/pending-6.12/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch b/target/linux/generic/pending-6.12/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch index d07b282e25..31a22db7f9 100644 --- a/target/linux/generic/pending-6.12/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch +++ b/target/linux/generic/pending-6.12/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch @@ -18,7 +18,7 @@ Signed-off-by: Felix Fietkau --- a/net/netfilter/nf_tables_api.c +++ b/net/netfilter/nf_tables_api.c -@@ -8724,7 +8724,7 @@ static int nft_register_flowtable_net_ho +@@ -8722,7 +8722,7 @@ static int nft_register_flowtable_net_ho err = flowtable->data.type->setup(&flowtable->data, hook->ops.dev, FLOW_BLOCK_BIND); diff --git a/target/linux/generic/pending-6.12/703-phy-add-detach-callback-to-struct-phy_driver.patch b/target/linux/generic/pending-6.12/703-phy-add-detach-callback-to-struct-phy_driver.patch index 4e00118e53..474470b806 100644 --- a/target/linux/generic/pending-6.12/703-phy-add-detach-callback-to-struct-phy_driver.patch +++ b/target/linux/generic/pending-6.12/703-phy-add-detach-callback-to-struct-phy_driver.patch @@ -11,7 +11,7 @@ Signed-off-by: Gabor Juhos --- a/drivers/net/phy/phy_device.c +++ b/drivers/net/phy/phy_device.c -@@ -2037,6 +2037,9 @@ void phy_detach(struct phy_device *phyde +@@ -2035,6 +2035,9 @@ void phy_detach(struct phy_device *phyde phydev->devlink = NULL; } diff --git a/target/linux/generic/pending-6.12/704-net-phy-register-phy-led_triggers-during-probe-to-av.patch b/target/linux/generic/pending-6.12/704-net-phy-register-phy-led_triggers-during-probe-to-av.patch deleted file mode 100644 index 126275c7ec..0000000000 --- a/target/linux/generic/pending-6.12/704-net-phy-register-phy-led_triggers-during-probe-to-av.patch +++ /dev/null @@ -1,116 +0,0 @@ -From 5225349f1e750dfd107a4c5dc97d91fa212dc1ed Mon Sep 17 00:00:00 2001 -From: Andrew Lunn -Date: Sat, 21 Feb 2026 14:51:54 -0600 -Subject: [PATCH] net: phy: register phy led_triggers during probe to avoid - AB-BA deadlock - -There is an AB-BA deadlock when both LEDS_TRIGGER_NETDEV and -LED_TRIGGER_PHY are enabled: - -[ 1362.049207] [<8054e4b8>] led_trigger_register+0x5c/0x1fc <-- Trying to get lock "triggers_list_lock" via down_write(&triggers_list_lock); -[ 1362.054536] [<80662830>] phy_led_triggers_register+0xd0/0x234 -[ 1362.060329] [<8065e200>] phy_attach_direct+0x33c/0x40c -[ 1362.065489] [<80651fc4>] phylink_fwnode_phy_connect+0x15c/0x23c -[ 1362.071480] [<8066ee18>] mtk_open+0x7c/0xba0 -[ 1362.075849] [<806d714c>] __dev_open+0x280/0x2b0 -[ 1362.080384] [<806d7668>] __dev_change_flags+0x244/0x24c -[ 1362.085598] [<806d7698>] dev_change_flags+0x28/0x78 -[ 1362.090528] [<807150e4>] dev_ioctl+0x4c0/0x654 <-- Hold lock "rtnl_mutex" by calling rtnl_lock(); -[ 1362.094985] [<80694360>] sock_ioctl+0x2f4/0x4e0 -[ 1362.099567] [<802e9c4c>] sys_ioctl+0x32c/0xd8c -[ 1362.104022] [<80014504>] syscall_common+0x34/0x58 - -Here LED_TRIGGER_PHY is registering LED triggers during phy_attach -while holding RTNL and then taking triggers_list_lock. - -[ 1362.191101] [<806c2640>] register_netdevice_notifier+0x60/0x168 <-- Trying to get lock "rtnl_mutex" via rtnl_lock(); -[ 1362.197073] [<805504ac>] netdev_trig_activate+0x194/0x1e4 -[ 1362.202490] [<8054e28c>] led_trigger_set+0x1d4/0x360 <-- Hold lock "triggers_list_lock" by down_read(&triggers_list_lock); -[ 1362.207511] [<8054eb38>] led_trigger_write+0xd8/0x14c -[ 1362.212566] [<80381d98>] sysfs_kf_bin_write+0x80/0xbc -[ 1362.217688] [<8037fcd8>] kernfs_fop_write_iter+0x17c/0x28c -[ 1362.223174] [<802cbd70>] vfs_write+0x21c/0x3c4 -[ 1362.227712] [<802cc0c4>] ksys_write+0x78/0x12c -[ 1362.232164] [<80014504>] syscall_common+0x34/0x58 - -Here LEDS_TRIGGER_NETDEV is being enabled on an LED. It first takes -triggers_list_lock and then RTNL. A classical AB-BA deadlock. - -phy_led_triggers_registers() does not require the RTNL, it does not -make any calls into the network stack which require protection. There -is also no requirement the PHY has been attached to a MAC, the -triggers only make use of phydev state. This allows the call to -phy_led_triggers_registers() to be placed elsewhere. PHY probe() and -release() don't hold RTNL, so solving the AB-BA deadlock. - -Reported-by: Shiji Yang -Closes: https://lore.kernel.org/all/OS7PR01MB13602B128BA1AD3FA38B6D1FFBC69A@OS7PR01MB13602.jpnprd01.prod.outlook.com/ -Fixes: 06f502f57d0d ("leds: trigger: Introduce a NETDEV trigger") -Signed-off-by: Andrew Lunn ---- - drivers/net/phy/phy_device.c | 25 +++++++++++++++++-------- - 1 file changed, 17 insertions(+), 8 deletions(-) - ---- a/drivers/net/phy/phy_device.c -+++ b/drivers/net/phy/phy_device.c -@@ -1684,8 +1684,6 @@ int phy_attach_direct(struct net_device - goto error; - - phy_resume(phydev); -- if (!phydev->is_on_sfp_module) -- phy_led_triggers_register(phydev); - - /** - * If the external phy used by current mac interface is managed by -@@ -2058,9 +2056,6 @@ void phy_detach(struct phy_device *phyde - } - phydev->phylink = NULL; - -- if (!phydev->is_on_sfp_module) -- phy_led_triggers_unregister(phydev); -- - if (phydev->mdio.dev.driver) - module_put(phydev->mdio.dev.driver->owner); - -@@ -3691,17 +3686,28 @@ static int phy_probe(struct device *dev) - /* Set the state to READY by default */ - phydev->state = PHY_READY; - -+ /* Register the PHY LED triggers */ -+ if (!phydev->is_on_sfp_module) -+ phy_led_triggers_register(phydev); -+ - /* Get the LEDs from the device tree, and instantiate standard - * LEDs for them. - */ - if (IS_ENABLED(CONFIG_PHYLIB_LEDS) && !phy_driver_is_genphy(phydev) && -- !phy_driver_is_genphy_10g(phydev)) -+ !phy_driver_is_genphy_10g(phydev)) { - err = of_phy_leds(phydev); -+ if (err) -+ goto out; -+ } -+ -+ return 0; - - out: -+ if (!phydev->is_on_sfp_module) -+ phy_led_triggers_unregister(phydev); -+ - /* Re-assert the reset signal on error */ -- if (err) -- phy_device_reset(phydev, 1); -+ phy_device_reset(phydev, 1); - - return err; - } -@@ -3716,6 +3722,9 @@ static int phy_remove(struct device *dev - !phy_driver_is_genphy_10g(phydev)) - phy_leds_unregister(phydev); - -+ if (!phydev->is_on_sfp_module) -+ phy_led_triggers_unregister(phydev); -+ - phydev->state = PHY_DOWN; - - sfp_bus_del_upstream(phydev->sfp_bus); diff --git a/target/linux/generic/pending-6.12/731-net-permit-ieee80211_ptr-even-with-no-CFG82111-suppo.patch b/target/linux/generic/pending-6.12/731-net-permit-ieee80211_ptr-even-with-no-CFG82111-suppo.patch index 50d3403772..0e55a56099 100644 --- a/target/linux/generic/pending-6.12/731-net-permit-ieee80211_ptr-even-with-no-CFG82111-suppo.patch +++ b/target/linux/generic/pending-6.12/731-net-permit-ieee80211_ptr-even-with-no-CFG82111-suppo.patch @@ -17,7 +17,7 @@ Signed-off-by: Christian Marangi --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h -@@ -2224,7 +2224,7 @@ struct net_device { +@@ -2226,7 +2226,7 @@ struct net_device { #if IS_ENABLED(CONFIG_AX25) struct ax25_dev __rcu *ax25_ptr; #endif diff --git a/target/linux/generic/pending-6.12/834-ledtrig-libata.patch b/target/linux/generic/pending-6.12/834-ledtrig-libata.patch index 4b497d9fbf..f4458afb12 100644 --- a/target/linux/generic/pending-6.12/834-ledtrig-libata.patch +++ b/target/linux/generic/pending-6.12/834-ledtrig-libata.patch @@ -63,7 +63,7 @@ Signed-off-by: Daniel Golle /** * ata_build_rw_tf - Build ATA taskfile for given read/write request * @qc: Metadata associated with the taskfile to build -@@ -4807,6 +4818,9 @@ void __ata_qc_complete(struct ata_queued +@@ -4812,6 +4823,9 @@ void __ata_qc_complete(struct ata_queued link->active_tag = ATA_TAG_POISON; ap->nr_active_links--; } @@ -73,7 +73,7 @@ Signed-off-by: Daniel Golle /* clear exclusive status */ if (unlikely(qc->flags & ATA_QCFLAG_CLEAR_EXCL && -@@ -5536,6 +5550,9 @@ struct ata_port *ata_port_alloc(struct a +@@ -5541,6 +5555,9 @@ struct ata_port *ata_port_alloc(struct a ap->stats.unhandled_irq = 1; ap->stats.idle_irq = 1; #endif @@ -83,7 +83,7 @@ Signed-off-by: Daniel Golle ata_sff_port_init(ap); ata_force_pflags(ap); -@@ -5552,6 +5569,12 @@ void ata_port_free(struct ata_port *ap) +@@ -5557,6 +5574,12 @@ void ata_port_free(struct ata_port *ap) kfree(ap->pmp_link); kfree(ap->slave_link); ida_free(&ata_ida, ap->print_id); @@ -96,7 +96,7 @@ Signed-off-by: Daniel Golle kfree(ap); } EXPORT_SYMBOL_GPL(ata_port_free); -@@ -5956,7 +5979,23 @@ int ata_host_register(struct ata_host *h +@@ -5961,7 +5984,23 @@ int ata_host_register(struct ata_host *h WARN_ON(1); return -EINVAL; } diff --git a/target/linux/generic/pending-6.12/920-mangle_bootargs.patch b/target/linux/generic/pending-6.12/920-mangle_bootargs.patch index 3bf2fce4fb..aca7ae15cc 100644 --- a/target/linux/generic/pending-6.12/920-mangle_bootargs.patch +++ b/target/linux/generic/pending-6.12/920-mangle_bootargs.patch @@ -13,7 +13,7 @@ Signed-off-by: Imre Kaloz --- a/init/Kconfig +++ b/init/Kconfig -@@ -1888,6 +1888,15 @@ config ARCH_HAS_MEMBARRIER_CALLBACKS +@@ -1891,6 +1891,15 @@ config ARCH_HAS_MEMBARRIER_CALLBACKS config ARCH_HAS_MEMBARRIER_SYNC_CORE bool diff --git a/target/linux/mediatek/patches-6.12/410-bt-mtk-serial-fix.patch b/target/linux/mediatek/patches-6.12/410-bt-mtk-serial-fix.patch index 325b3ad795..ddbdc981a3 100644 --- a/target/linux/mediatek/patches-6.12/410-bt-mtk-serial-fix.patch +++ b/target/linux/mediatek/patches-6.12/410-bt-mtk-serial-fix.patch @@ -19,7 +19,7 @@ }, [PORT_NPCM] = { .name = "Nuvoton 16550", -@@ -2729,6 +2729,11 @@ serial8250_do_set_termios(struct uart_po +@@ -2735,6 +2735,11 @@ serial8250_do_set_termios(struct uart_po unsigned long flags; unsigned int baud, quot, frac = 0; diff --git a/target/linux/mediatek/patches-6.12/436-drivers-mtd-spi-nor-Add-calibration-support-for-spi-.patch b/target/linux/mediatek/patches-6.12/436-drivers-mtd-spi-nor-Add-calibration-support-for-spi-.patch index 27c488d3e0..caf65e2a92 100644 --- a/target/linux/mediatek/patches-6.12/436-drivers-mtd-spi-nor-Add-calibration-support-for-spi-.patch +++ b/target/linux/mediatek/patches-6.12/436-drivers-mtd-spi-nor-Add-calibration-support-for-spi-.patch @@ -26,7 +26,7 @@ Signed-off-by: SkyLake.Huang --- a/drivers/mtd/spi-nor/core.c +++ b/drivers/mtd/spi-nor/core.c -@@ -3300,6 +3300,18 @@ static const struct flash_info *spi_nor_ +@@ -3441,6 +3441,18 @@ static const struct flash_info *spi_nor_ return NULL; } @@ -45,7 +45,7 @@ Signed-off-by: SkyLake.Huang static const struct flash_info *spi_nor_get_flash_info(struct spi_nor *nor, const char *name) { -@@ -3474,6 +3486,9 @@ int spi_nor_scan(struct spi_nor *nor, co +@@ -3615,6 +3627,9 @@ int spi_nor_scan(struct spi_nor *nor, co if (ret) return ret; diff --git a/target/linux/mediatek/patches-6.12/901-arm-add-cmdline-override.patch b/target/linux/mediatek/patches-6.12/901-arm-add-cmdline-override.patch index 2a6cf46cae..a79ac703b9 100644 --- a/target/linux/mediatek/patches-6.12/901-arm-add-cmdline-override.patch +++ b/target/linux/mediatek/patches-6.12/901-arm-add-cmdline-override.patch @@ -37,7 +37,7 @@ * CONFIG_CMDLINE is meant to be a default in case nothing else --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig -@@ -2382,6 +2382,14 @@ config CMDLINE_FORCE +@@ -2383,6 +2383,14 @@ config CMDLINE_FORCE endchoice diff --git a/target/linux/mvebu/patches-6.12/830-02-i2c-pxa-prevent-calling-of-the-generic-recovery-init-code.patch b/target/linux/mvebu/patches-6.12/830-02-i2c-pxa-prevent-calling-of-the-generic-recovery-init-code.patch index a67ac4cdfd..6822eafc6a 100644 --- a/target/linux/mvebu/patches-6.12/830-02-i2c-pxa-prevent-calling-of-the-generic-recovery-init-code.patch +++ b/target/linux/mvebu/patches-6.12/830-02-i2c-pxa-prevent-calling-of-the-generic-recovery-init-code.patch @@ -201,7 +201,7 @@ Signed-off-by: Imre Kaloz --- a/drivers/i2c/busses/i2c-pxa.c +++ b/drivers/i2c/busses/i2c-pxa.c -@@ -1330,6 +1330,12 @@ static void i2c_pxa_unprepare_recovery(s +@@ -1336,6 +1336,12 @@ static void i2c_pxa_unprepare_recovery(s i2c_pxa_enable(i2c); } @@ -214,7 +214,7 @@ Signed-off-by: Imre Kaloz static int i2c_pxa_init_recovery(struct pxa_i2c *i2c) { struct i2c_bus_recovery_info *bri = &i2c->recovery; -@@ -1398,6 +1404,7 @@ static int i2c_pxa_init_recovery(struct +@@ -1404,6 +1410,7 @@ static int i2c_pxa_init_recovery(struct return 0; } diff --git a/target/linux/mvebu/patches-6.12/830-03-i2c-pxa-handle-Early-Bus-Busy-condition-on-Armada-3700.patch b/target/linux/mvebu/patches-6.12/830-03-i2c-pxa-handle-Early-Bus-Busy-condition-on-Armada-3700.patch index 77c3a2c24c..a03127bee4 100644 --- a/target/linux/mvebu/patches-6.12/830-03-i2c-pxa-handle-Early-Bus-Busy-condition-on-Armada-3700.patch +++ b/target/linux/mvebu/patches-6.12/830-03-i2c-pxa-handle-Early-Bus-Busy-condition-on-Armada-3700.patch @@ -242,7 +242,7 @@ the controller from the bad state described in the previous patch. struct i2c_bus_recovery_info recovery; struct pinctrl *pinctrl; -@@ -429,7 +431,7 @@ static int i2c_pxa_wait_bus_not_busy(str +@@ -430,7 +432,7 @@ static int i2c_pxa_wait_bus_not_busy(str while (1) { isr = readl(_ISR(i2c)); @@ -251,7 +251,7 @@ the controller from the bad state described in the previous patch. return 0; if (isr & ISR_SAD) -@@ -466,7 +468,7 @@ static int i2c_pxa_wait_master(struct px +@@ -467,7 +469,7 @@ static int i2c_pxa_wait_master(struct px * quick check of the i2c lines themselves to ensure they've * gone high... */ @@ -260,7 +260,7 @@ the controller from the bad state described in the previous patch. readl(_IBMR(i2c)) == (IBMR_SCLS | IBMR_SDAS)) { if (i2c_debug > 0) dev_dbg(&i2c->adap.dev, "%s: done\n", __func__); -@@ -487,7 +489,7 @@ static int i2c_pxa_set_master(struct pxa +@@ -488,7 +490,7 @@ static int i2c_pxa_set_master(struct pxa if (i2c_debug) dev_dbg(&i2c->adap.dev, "setting to bus master\n"); @@ -269,7 +269,7 @@ the controller from the bad state described in the previous patch. dev_dbg(&i2c->adap.dev, "%s: unit is busy\n", __func__); if (!i2c_pxa_wait_master(i2c)) { dev_dbg(&i2c->adap.dev, "%s: error: unit busy\n", __func__); -@@ -513,7 +515,7 @@ static int i2c_pxa_wait_slave(struct pxa +@@ -514,7 +516,7 @@ static int i2c_pxa_wait_slave(struct pxa dev_dbg(&i2c->adap.dev, "%s: %ld: ISR=%08x, ICR=%08x, IBMR=%02x\n", __func__, (long)jiffies, readl(_ISR(i2c)), readl(_ICR(i2c)), readl(_IBMR(i2c))); @@ -278,7 +278,7 @@ the controller from the bad state described in the previous patch. (readl(_ISR(i2c)) & ISR_SAD) != 0 || (readl(_ICR(i2c)) & ICR_SCLE) == 0) { if (i2c_debug > 1) -@@ -1171,7 +1173,7 @@ static int i2c_pxa_pio_set_master(struct +@@ -1177,7 +1179,7 @@ static int i2c_pxa_pio_set_master(struct /* * Wait for the bus to become free. */ @@ -287,7 +287,7 @@ the controller from the bad state described in the previous patch. udelay(1000); if (timeout < 0) { -@@ -1316,7 +1318,7 @@ static void i2c_pxa_unprepare_recovery(s +@@ -1322,7 +1324,7 @@ static void i2c_pxa_unprepare_recovery(s * handing control of the bus back to avoid the bus changing state. */ isr = readl(_ISR(i2c)); @@ -296,7 +296,7 @@ the controller from the bad state described in the previous patch. dev_dbg(&i2c->adap.dev, "recovery: resetting controller, ISR=0x%08x\n", isr); i2c_pxa_do_reset(i2c); -@@ -1480,6 +1482,10 @@ static int i2c_pxa_probe(struct platform +@@ -1486,6 +1488,10 @@ static int i2c_pxa_probe(struct platform i2c->fm_mask = pxa_reg_layout[i2c_type].fm; i2c->hs_mask = pxa_reg_layout[i2c_type].hs; diff --git a/target/linux/realtek/patches-6.12/700-dsa-mdio-increase-max-ports-for-rtl839x-rtl931x.patch b/target/linux/realtek/patches-6.12/700-dsa-mdio-increase-max-ports-for-rtl839x-rtl931x.patch index 29500e47fe..9b4bdb41b3 100644 --- a/target/linux/realtek/patches-6.12/700-dsa-mdio-increase-max-ports-for-rtl839x-rtl931x.patch +++ b/target/linux/realtek/patches-6.12/700-dsa-mdio-increase-max-ports-for-rtl839x-rtl931x.patch @@ -70,7 +70,7 @@ Signed-off-by: Markus Stockhausen struct dsa_chip_data { --- a/include/net/dsa.h +++ b/include/net/dsa.h -@@ -475,7 +475,7 @@ struct dsa_switch { +@@ -476,7 +476,7 @@ struct dsa_switch { /* * User mii_bus and devices for the individual ports. */ @@ -79,7 +79,7 @@ Signed-off-by: Markus Stockhausen struct mii_bus *user_mii_bus; /* Ageing Time limits in msecs */ -@@ -611,24 +611,24 @@ static inline bool dsa_is_user_port(stru +@@ -612,24 +612,24 @@ static inline bool dsa_is_user_port(stru dsa_switch_for_each_port_continue_reverse((_dp), (_ds)) \ if (dsa_port_is_cpu((_dp))) diff --git a/target/linux/rockchip/patches-6.12/030-01-v6.13-irqchip-gic-v3-its-Share-ITS-tables-with-a-non-trust.patch b/target/linux/rockchip/patches-6.12/030-01-v6.13-irqchip-gic-v3-its-Share-ITS-tables-with-a-non-trust.patch index ef1e51f1cc..4311203ffe 100644 --- a/target/linux/rockchip/patches-6.12/030-01-v6.13-irqchip-gic-v3-its-Share-ITS-tables-with-a-non-trust.patch +++ b/target/linux/rockchip/patches-6.12/030-01-v6.13-irqchip-gic-v3-its-Share-ITS-tables-with-a-non-trust.patch @@ -253,7 +253,7 @@ Link: https://lore.kernel.org/all/20241002141630.433502-2-steven.price@arm.com if (!page) return false; -@@ -3401,7 +3484,6 @@ static struct its_device *its_create_dev +@@ -3402,7 +3485,6 @@ static struct its_device *its_create_dev if (WARN_ON(!is_power_of_2(nvecs))) nvecs = roundup_pow_of_two(nvecs); @@ -261,7 +261,7 @@ Link: https://lore.kernel.org/all/20241002141630.433502-2-steven.price@arm.com /* * Even if the device wants a single LPI, the ITT must be * sized as a power of two (and you need at least one bit...). -@@ -3409,7 +3491,11 @@ static struct its_device *its_create_dev +@@ -3413,7 +3495,11 @@ static struct its_device *its_create_dev nr_ites = max(2, nvecs); sz = nr_ites * (FIELD_GET(GITS_TYPER_ITT_ENTRY_SIZE, its->typer) + 1); sz = max(sz, ITS_ITT_ALIGN) + ITS_ITT_ALIGN - 1; @@ -274,7 +274,7 @@ Link: https://lore.kernel.org/all/20241002141630.433502-2-steven.price@arm.com if (alloc_lpis) { lpi_map = its_lpi_alloc(nvecs, &lpi_base, &nr_lpis); if (lpi_map) -@@ -3421,9 +3507,9 @@ static struct its_device *its_create_dev +@@ -3425,9 +3511,9 @@ static struct its_device *its_create_dev lpi_base = 0; } @@ -286,7 +286,7 @@ Link: https://lore.kernel.org/all/20241002141630.433502-2-steven.price@arm.com bitmap_free(lpi_map); kfree(col_map); return NULL; -@@ -3433,6 +3519,7 @@ static struct its_device *its_create_dev +@@ -3437,6 +3523,7 @@ static struct its_device *its_create_dev dev->its = its; dev->itt = itt; @@ -294,7 +294,7 @@ Link: https://lore.kernel.org/all/20241002141630.433502-2-steven.price@arm.com dev->nr_ites = nr_ites; dev->event_map.lpi_map = lpi_map; dev->event_map.col_map = col_map; -@@ -3460,7 +3547,7 @@ static void its_free_device(struct its_d +@@ -3464,7 +3551,7 @@ static void its_free_device(struct its_d list_del(&its_dev->entry); raw_spin_unlock_irqrestore(&its_dev->its->lock, flags); kfree(its_dev->event_map.col_map); @@ -303,7 +303,7 @@ Link: https://lore.kernel.org/all/20241002141630.433502-2-steven.price@arm.com kfree(its_dev); } -@@ -5160,8 +5247,9 @@ static int __init its_probe_one(struct i +@@ -5164,8 +5251,9 @@ static int __init its_probe_one(struct i } } @@ -315,7 +315,7 @@ Link: https://lore.kernel.org/all/20241002141630.433502-2-steven.price@arm.com if (!page) { err = -ENOMEM; goto out_unmap_sgir; -@@ -5225,7 +5313,7 @@ static int __init its_probe_one(struct i +@@ -5229,7 +5317,7 @@ static int __init its_probe_one(struct i out_free_tables: its_free_tables(its); out_free_cmd: @@ -324,7 +324,7 @@ Link: https://lore.kernel.org/all/20241002141630.433502-2-steven.price@arm.com out_unmap_sgir: if (its->sgir_base) iounmap(its->sgir_base); -@@ -5711,6 +5799,10 @@ int __init its_init(struct fwnode_handle +@@ -5715,6 +5803,10 @@ int __init its_init(struct fwnode_handle bool has_v4_1 = false; int err; diff --git a/target/linux/rockchip/patches-6.12/030-03-v6.15-irqchip-gic-v3-Add-Rockchip-3568002-erratum-workaround.patch b/target/linux/rockchip/patches-6.12/030-03-v6.15-irqchip-gic-v3-Add-Rockchip-3568002-erratum-workaround.patch index 388e256f87..351a91da80 100644 --- a/target/linux/rockchip/patches-6.12/030-03-v6.15-irqchip-gic-v3-Add-Rockchip-3568002-erratum-workaround.patch +++ b/target/linux/rockchip/patches-6.12/030-03-v6.15-irqchip-gic-v3-Add-Rockchip-3568002-erratum-workaround.patch @@ -35,7 +35,7 @@ Link: https://lore.kernel.org/all/20250216221634.364158-2-dmitry.osipenko@collab +----------------+-----------------+-----------------+-----------------------------+ --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig -@@ -1297,6 +1297,15 @@ config NVIDIA_CARMEL_CNP_ERRATUM +@@ -1298,6 +1298,15 @@ config NVIDIA_CARMEL_CNP_ERRATUM If unsure, say Y. @@ -70,7 +70,7 @@ Link: https://lore.kernel.org/all/20250216221634.364158-2-dmitry.osipenko@collab if (!page) return NULL; -@@ -4888,6 +4890,17 @@ static bool __maybe_unused its_enable_qu +@@ -4892,6 +4894,17 @@ static bool __maybe_unused its_enable_qu return true; } @@ -88,7 +88,7 @@ Link: https://lore.kernel.org/all/20250216221634.364158-2-dmitry.osipenko@collab static const struct gic_quirk its_quirks[] = { #ifdef CONFIG_CAVIUM_ERRATUM_22375 { -@@ -4955,6 +4968,14 @@ static const struct gic_quirk its_quirks +@@ -4959,6 +4972,14 @@ static const struct gic_quirk its_quirks .property = "dma-noncoherent", .init = its_set_non_coherent, }, diff --git a/target/linux/starfive/patches-6.12/0009-uart-8250-Add-dw-auto-flow-ctrl-support.patch b/target/linux/starfive/patches-6.12/0009-uart-8250-Add-dw-auto-flow-ctrl-support.patch index 5b7d42c716..92515582c6 100644 --- a/target/linux/starfive/patches-6.12/0009-uart-8250-Add-dw-auto-flow-ctrl-support.patch +++ b/target/linux/starfive/patches-6.12/0009-uart-8250-Add-dw-auto-flow-ctrl-support.patch @@ -67,7 +67,7 @@ Signed-off-by: Minda Chen } /* -@@ -2768,7 +2781,6 @@ serial8250_do_set_termios(struct uart_po +@@ -2774,7 +2787,6 @@ serial8250_do_set_termios(struct uart_po if (termios->c_cflag & CRTSCTS) up->mcr |= UART_MCR_AFE; } diff --git a/target/linux/starfive/patches-6.12/1011-net-stmmac-use-GFP_DMA32.patch b/target/linux/starfive/patches-6.12/1011-net-stmmac-use-GFP_DMA32.patch index 7629d4dad1..7ddad83585 100644 --- a/target/linux/starfive/patches-6.12/1011-net-stmmac-use-GFP_DMA32.patch +++ b/target/linux/starfive/patches-6.12/1011-net-stmmac-use-GFP_DMA32.patch @@ -19,7 +19,7 @@ Signed-off-by: Matteo Croce if (priv->dma_cap.host_dma_width <= 32) gfp |= GFP_DMA32; -@@ -4791,7 +4791,7 @@ static inline void stmmac_rx_refill(stru +@@ -4756,7 +4756,7 @@ static inline void stmmac_rx_refill(stru struct stmmac_rx_queue *rx_q = &priv->dma_conf.rx_queue[queue]; int dirty = stmmac_rx_dirty(priv, queue); unsigned int entry = rx_q->dirty_rx;