From fcd30851f7f0de3791556074aa1573b8d28df0e7 Mon Sep 17 00:00:00 2001 From: Beginner <70857188+Beginner-Go@users.noreply.github.com> Date: Tue, 30 Apr 2024 23:32:40 +0800 Subject: [PATCH] kernel: bump 6.6 to 6.6.28 (#12106) --- include/kernel-6.6 | 4 +- ...lter-flowtable-validate-pppoe-header.patch | 87 ------------------- ...lter-flowtable-incorrect-pppoe-tuple.patch | 24 ----- ..._wed-do-not-assume-offload-callbacks.patch | 4 +- ..._wed-introduce-versioning-utility-ro.patch | 30 +++---- ..._wed-do-not-configure-rx-offload-if-.patch | 20 ++--- ...k_wed-add-mtk_wed_soc_data-structure.patch | 22 ++--- ..._wed-introduce-WED-support-for-MT798.patch | 34 ++++---- ..._wed-refactor-mtk_wed_check_wfdma_rx.patch | 4 +- ..._wed-introduce-partial-AMSDU-offload.patch | 8 +- ..._wed-introduce-hw_rro-support-for-MT.patch | 8 +- ...et-mtk_wed-add-wed-3.0-reset-support.patch | 20 ++--- ...et-stmmac-improve-TX-timer-arm-logic.patch | 2 +- ...c-move-TX-timer-arm-after-DMA-enable.patch | 16 ++-- .../780-usb-net-MeigLink_modem_support.patch | 4 +- .../hack-6.6/930-usb-net-for-fm350.patch | 4 +- ...ge_allow_receiption_on_disabled_port.patch | 4 +- ...les-ignore-EOPNOTSUPP-on-flowtable-d.patch | 2 +- ...d-knob-for-filtering-rx-tx-BPDU-pack.patch | 2 +- ...e-all-MACs-are-powered-down-before-r.patch | 2 +- ...gister-OF-node-for-internal-MDIO-bus.patch | 4 +- .../811-pci_disable_usb_common_quirks.patch | 2 +- .../pending-6.6/920-mangle_bootargs.patch | 2 +- 23 files changed, 99 insertions(+), 210 deletions(-) delete mode 100644 target/linux/generic/backport-6.6/740-v6.9-01-netfilter-flowtable-validate-pppoe-header.patch delete mode 100644 target/linux/generic/backport-6.6/740-v6.9-02-netfilter-flowtable-incorrect-pppoe-tuple.patch diff --git a/include/kernel-6.6 b/include/kernel-6.6 index 7b0c2dd5d..c3e9ee330 100644 --- a/include/kernel-6.6 +++ b/include/kernel-6.6 @@ -1,2 +1,2 @@ -LINUX_VERSION-6.6 = .28 -LINUX_KERNEL_HASH-6.6.28 = 818716ed13e7dba6aaeae24e3073993e260812ed128d10272e94b922ee6d3394 +LINUX_VERSION-6.6 = .29 +LINUX_KERNEL_HASH-6.6.29 = 7f26f74c08082c86b1daf866e4d49c5d8276cc1906a89d0e367e457ec167cbd0 diff --git a/target/linux/generic/backport-6.6/740-v6.9-01-netfilter-flowtable-validate-pppoe-header.patch b/target/linux/generic/backport-6.6/740-v6.9-01-netfilter-flowtable-validate-pppoe-header.patch deleted file mode 100644 index 8a8773b71..000000000 --- a/target/linux/generic/backport-6.6/740-v6.9-01-netfilter-flowtable-validate-pppoe-header.patch +++ /dev/null @@ -1,87 +0,0 @@ -From: Pablo Neira Ayuso -Date: Thu, 11 Apr 2024 13:28:59 +0200 -Subject: [PATCH] netfilter: flowtable: validate pppoe header - -Ensure there is sufficient room to access the protocol field of the -PPPoe header. Validate it once before the flowtable lookup, then use a -helper function to access protocol field. - -Reported-by: syzbot+b6f07e1c07ef40199081@syzkaller.appspotmail.com -Fixes: 72efd585f714 ("netfilter: flowtable: add pppoe support") -Signed-off-by: Pablo Neira Ayuso ---- - ---- a/include/net/netfilter/nf_flow_table.h -+++ b/include/net/netfilter/nf_flow_table.h -@@ -335,7 +335,7 @@ int nf_flow_rule_route_ipv6(struct net * - int nf_flow_table_offload_init(void); - void nf_flow_table_offload_exit(void); - --static inline __be16 nf_flow_pppoe_proto(const struct sk_buff *skb) -+static inline __be16 __nf_flow_pppoe_proto(const struct sk_buff *skb) - { - __be16 proto; - -@@ -351,6 +351,16 @@ static inline __be16 nf_flow_pppoe_proto - return 0; - } - -+static inline bool nf_flow_pppoe_proto(struct sk_buff *skb, __be16 *inner_proto) -+{ -+ if (!pskb_may_pull(skb, PPPOE_SES_HLEN)) -+ return false; -+ -+ *inner_proto = __nf_flow_pppoe_proto(skb); -+ -+ return true; -+} -+ - #define NF_FLOW_TABLE_STAT_INC(net, count) __this_cpu_inc((net)->ft.stat->count) - #define NF_FLOW_TABLE_STAT_DEC(net, count) __this_cpu_dec((net)->ft.stat->count) - #define NF_FLOW_TABLE_STAT_INC_ATOMIC(net, count) \ ---- a/net/netfilter/nf_flow_table_inet.c -+++ b/net/netfilter/nf_flow_table_inet.c -@@ -21,7 +21,8 @@ nf_flow_offload_inet_hook(void *priv, st - proto = veth->h_vlan_encapsulated_proto; - break; - case htons(ETH_P_PPP_SES): -- proto = nf_flow_pppoe_proto(skb); -+ if (!nf_flow_pppoe_proto(skb, &proto)) -+ return NF_ACCEPT; - break; - default: - proto = skb->protocol; ---- a/net/netfilter/nf_flow_table_ip.c -+++ b/net/netfilter/nf_flow_table_ip.c -@@ -273,10 +273,11 @@ static unsigned int nf_flow_xmit_xfrm(st - return NF_STOLEN; - } - --static bool nf_flow_skb_encap_protocol(const struct sk_buff *skb, __be16 proto, -+static bool nf_flow_skb_encap_protocol(struct sk_buff *skb, __be16 proto, - u32 *offset) - { - struct vlan_ethhdr *veth; -+ __be16 inner_proto; - - switch (skb->protocol) { - case htons(ETH_P_8021Q): -@@ -287,7 +288,8 @@ static bool nf_flow_skb_encap_protocol(c - } - break; - case htons(ETH_P_PPP_SES): -- if (nf_flow_pppoe_proto(skb) == proto) { -+ if (nf_flow_pppoe_proto(skb, &inner_proto) && -+ inner_proto == proto) { - *offset += PPPOE_SES_HLEN; - return true; - } -@@ -316,7 +318,7 @@ static void nf_flow_encap_pop(struct sk_ - skb_reset_network_header(skb); - break; - case htons(ETH_P_PPP_SES): -- skb->protocol = nf_flow_pppoe_proto(skb); -+ skb->protocol = __nf_flow_pppoe_proto(skb); - skb_pull(skb, PPPOE_SES_HLEN); - skb_reset_network_header(skb); - break; diff --git a/target/linux/generic/backport-6.6/740-v6.9-02-netfilter-flowtable-incorrect-pppoe-tuple.patch b/target/linux/generic/backport-6.6/740-v6.9-02-netfilter-flowtable-incorrect-pppoe-tuple.patch deleted file mode 100644 index 20ac222de..000000000 --- a/target/linux/generic/backport-6.6/740-v6.9-02-netfilter-flowtable-incorrect-pppoe-tuple.patch +++ /dev/null @@ -1,24 +0,0 @@ -From: Pablo Neira Ayuso -Date: Thu, 11 Apr 2024 13:29:00 +0200 -Subject: [PATCH] netfilter: flowtable: incorrect pppoe tuple - -pppoe traffic reaching ingress path does not match the flowtable entry -because the pppoe header is expected to be at the network header offset. -This bug causes a mismatch in the flow table lookup, so pppoe packets -enter the classical forwarding path. - -Fixes: 72efd585f714 ("netfilter: flowtable: add pppoe support") -Signed-off-by: Pablo Neira Ayuso ---- - ---- a/net/netfilter/nf_flow_table_ip.c -+++ b/net/netfilter/nf_flow_table_ip.c -@@ -157,7 +157,7 @@ static void nf_flow_tuple_encap(struct s - tuple->encap[i].proto = skb->protocol; - break; - case htons(ETH_P_PPP_SES): -- phdr = (struct pppoe_hdr *)skb_mac_header(skb); -+ phdr = (struct pppoe_hdr *)skb_network_header(skb); - tuple->encap[i].id = ntohs(phdr->sid); - tuple->encap[i].proto = skb->protocol; - break; diff --git a/target/linux/generic/backport-6.6/752-05-v6.7-net-ethernet-mtk_wed-do-not-assume-offload-callbacks.patch b/target/linux/generic/backport-6.6/752-05-v6.7-net-ethernet-mtk_wed-do-not-assume-offload-callbacks.patch index d6ef40cd5..b9d3582a7 100644 --- a/target/linux/generic/backport-6.6/752-05-v6.7-net-ethernet-mtk_wed-do-not-assume-offload-callbacks.patch +++ b/target/linux/generic/backport-6.6/752-05-v6.7-net-ethernet-mtk_wed-do-not-assume-offload-callbacks.patch @@ -14,7 +14,7 @@ Signed-off-by: David S. Miller --- a/drivers/net/ethernet/mediatek/mtk_wed.c +++ b/drivers/net/ethernet/mediatek/mtk_wed.c -@@ -1713,19 +1713,20 @@ mtk_wed_irq_set_mask(struct mtk_wed_devi +@@ -1709,19 +1709,20 @@ mtk_wed_irq_set_mask(struct mtk_wed_devi int mtk_wed_flow_add(int index) { struct mtk_wed_hw *hw = hw_list[index]; @@ -44,7 +44,7 @@ Signed-off-by: David S. Miller goto out; } -@@ -1744,14 +1745,15 @@ void mtk_wed_flow_remove(int index) +@@ -1740,14 +1741,15 @@ void mtk_wed_flow_remove(int index) { struct mtk_wed_hw *hw = hw_list[index]; diff --git a/target/linux/generic/backport-6.6/752-06-v6.7-net-ethernet-mtk_wed-introduce-versioning-utility-ro.patch b/target/linux/generic/backport-6.6/752-06-v6.7-net-ethernet-mtk_wed-introduce-versioning-utility-ro.patch index af4600a98..6d1d9a406 100644 --- a/target/linux/generic/backport-6.6/752-06-v6.7-net-ethernet-mtk_wed-introduce-versioning-utility-ro.patch +++ b/target/linux/generic/backport-6.6/752-06-v6.7-net-ethernet-mtk_wed-introduce-versioning-utility-ro.patch @@ -52,15 +52,15 @@ Signed-off-by: Paolo Abeni wdma_clr(dev, MTK_WDMA_GLO_CFG, MTK_WDMA_GLO_CFG_RX_INFO3_PRERES); @@ -606,7 +606,7 @@ mtk_wed_stop(struct mtk_wed_device *dev) + wdma_w32(dev, MTK_WDMA_INT_MASK, 0); wdma_w32(dev, MTK_WDMA_INT_GRP2, 0); - wed_w32(dev, MTK_WED_WPDMA_INT_MASK, 0); - if (dev->hw->version == 1) + if (mtk_wed_is_v1(dev->hw)) return; wed_w32(dev, MTK_WED_EXT_INT_MASK1, 0); -@@ -625,7 +625,7 @@ mtk_wed_deinit(struct mtk_wed_device *de +@@ -624,7 +624,7 @@ mtk_wed_deinit(struct mtk_wed_device *de MTK_WED_CTRL_WED_TX_BM_EN | MTK_WED_CTRL_WED_TX_FREE_AGENT_EN); @@ -69,7 +69,7 @@ Signed-off-by: Paolo Abeni return; wed_clr(dev, MTK_WED_CTRL, -@@ -731,7 +731,7 @@ mtk_wed_bus_init(struct mtk_wed_device * +@@ -730,7 +730,7 @@ mtk_wed_bus_init(struct mtk_wed_device * static void mtk_wed_set_wpdma(struct mtk_wed_device *dev) { @@ -78,7 +78,7 @@ Signed-off-by: Paolo Abeni wed_w32(dev, MTK_WED_WPDMA_CFG_BASE, dev->wlan.wpdma_phys); } else { mtk_wed_bus_init(dev); -@@ -762,7 +762,7 @@ mtk_wed_hw_init_early(struct mtk_wed_dev +@@ -761,7 +761,7 @@ mtk_wed_hw_init_early(struct mtk_wed_dev MTK_WED_WDMA_GLO_CFG_IDLE_DMAD_SUPPLY; wed_m32(dev, MTK_WED_WDMA_GLO_CFG, mask, set); @@ -87,7 +87,7 @@ Signed-off-by: Paolo Abeni u32 offset = dev->hw->index ? 0x04000400 : 0; wdma_set(dev, MTK_WDMA_GLO_CFG, -@@ -935,7 +935,7 @@ mtk_wed_hw_init(struct mtk_wed_device *d +@@ -934,7 +934,7 @@ mtk_wed_hw_init(struct mtk_wed_device *d wed_w32(dev, MTK_WED_TX_BM_BUF_LEN, MTK_WED_PKT_SIZE); @@ -96,7 +96,7 @@ Signed-off-by: Paolo Abeni wed_w32(dev, MTK_WED_TX_BM_TKID, FIELD_PREP(MTK_WED_TX_BM_TKID_START, dev->wlan.token_start) | -@@ -968,7 +968,7 @@ mtk_wed_hw_init(struct mtk_wed_device *d +@@ -967,7 +967,7 @@ mtk_wed_hw_init(struct mtk_wed_device *d mtk_wed_reset(dev, MTK_WED_RESET_TX_BM); @@ -105,7 +105,7 @@ Signed-off-by: Paolo Abeni wed_set(dev, MTK_WED_CTRL, MTK_WED_CTRL_WED_TX_BM_EN | MTK_WED_CTRL_WED_TX_FREE_AGENT_EN); -@@ -1218,7 +1218,7 @@ mtk_wed_reset_dma(struct mtk_wed_device +@@ -1217,7 +1217,7 @@ mtk_wed_reset_dma(struct mtk_wed_device } dev->init_done = false; @@ -114,7 +114,7 @@ Signed-off-by: Paolo Abeni return; if (!busy) { -@@ -1344,7 +1344,7 @@ mtk_wed_configure_irq(struct mtk_wed_dev +@@ -1343,7 +1343,7 @@ mtk_wed_configure_irq(struct mtk_wed_dev MTK_WED_CTRL_WED_TX_BM_EN | MTK_WED_CTRL_WED_TX_FREE_AGENT_EN); @@ -123,7 +123,7 @@ Signed-off-by: Paolo Abeni wed_w32(dev, MTK_WED_PCIE_INT_TRIGGER, MTK_WED_PCIE_INT_TRIGGER_STATUS); -@@ -1417,7 +1417,7 @@ mtk_wed_dma_enable(struct mtk_wed_device +@@ -1416,7 +1416,7 @@ mtk_wed_dma_enable(struct mtk_wed_device MTK_WDMA_GLO_CFG_RX_INFO1_PRERES | MTK_WDMA_GLO_CFG_RX_INFO2_PRERES); @@ -132,7 +132,7 @@ Signed-off-by: Paolo Abeni wdma_set(dev, MTK_WDMA_GLO_CFG, MTK_WDMA_GLO_CFG_RX_INFO3_PRERES); } else { -@@ -1466,7 +1466,7 @@ mtk_wed_start(struct mtk_wed_device *dev +@@ -1465,7 +1465,7 @@ mtk_wed_start(struct mtk_wed_device *dev mtk_wed_set_ext_int(dev, true); @@ -141,7 +141,7 @@ Signed-off-by: Paolo Abeni u32 val = dev->wlan.wpdma_phys | MTK_PCIE_MIRROR_MAP_EN | FIELD_PREP(MTK_PCIE_MIRROR_MAP_WED_ID, dev->hw->index); -@@ -1551,7 +1551,7 @@ mtk_wed_attach(struct mtk_wed_device *de +@@ -1550,7 +1550,7 @@ mtk_wed_attach(struct mtk_wed_device *de } mtk_wed_hw_init_early(dev); @@ -150,7 +150,7 @@ Signed-off-by: Paolo Abeni regmap_update_bits(hw->hifsys, HIFSYS_DMA_AG_MAP, BIT(hw->index), 0); } else { -@@ -1619,7 +1619,7 @@ static int +@@ -1618,7 +1618,7 @@ static int mtk_wed_txfree_ring_setup(struct mtk_wed_device *dev, void __iomem *regs) { struct mtk_wed_ring *ring = &dev->txfree_ring; @@ -159,7 +159,7 @@ Signed-off-by: Paolo Abeni /* * For txfree event handling, the same DMA ring is shared between WED -@@ -1677,7 +1677,7 @@ mtk_wed_irq_get(struct mtk_wed_device *d +@@ -1676,7 +1676,7 @@ mtk_wed_irq_get(struct mtk_wed_device *d { u32 val, ext_mask = MTK_WED_EXT_INT_STATUS_ERROR_MASK; @@ -168,7 +168,7 @@ Signed-off-by: Paolo Abeni ext_mask |= MTK_WED_EXT_INT_STATUS_TX_DRV_R_RESP_ERR; else ext_mask |= MTK_WED_EXT_INT_STATUS_RX_FBUF_LO_TH | -@@ -1844,7 +1844,7 @@ mtk_wed_setup_tc(struct mtk_wed_device * +@@ -1840,7 +1840,7 @@ mtk_wed_setup_tc(struct mtk_wed_device * { struct mtk_wed_hw *hw = wed->hw; @@ -177,7 +177,7 @@ Signed-off-by: Paolo Abeni return -EOPNOTSUPP; switch (type) { -@@ -1918,9 +1918,9 @@ void mtk_wed_add_hw(struct device_node * +@@ -1914,9 +1914,9 @@ void mtk_wed_add_hw(struct device_node * hw->wdma = wdma; hw->index = index; hw->irq = irq; diff --git a/target/linux/generic/backport-6.6/752-07-v6.7-net-ethernet-mtk_wed-do-not-configure-rx-offload-if-.patch b/target/linux/generic/backport-6.6/752-07-v6.7-net-ethernet-mtk_wed-do-not-configure-rx-offload-if-.patch index d5bacde32..02ef4e640 100644 --- a/target/linux/generic/backport-6.6/752-07-v6.7-net-ethernet-mtk_wed-do-not-configure-rx-offload-if-.patch +++ b/target/linux/generic/backport-6.6/752-07-v6.7-net-ethernet-mtk_wed-do-not-configure-rx-offload-if-.patch @@ -16,15 +16,15 @@ Signed-off-by: Paolo Abeni --- a/drivers/net/ethernet/mediatek/mtk_wed.c +++ b/drivers/net/ethernet/mediatek/mtk_wed.c @@ -606,7 +606,7 @@ mtk_wed_stop(struct mtk_wed_device *dev) + wdma_w32(dev, MTK_WDMA_INT_MASK, 0); wdma_w32(dev, MTK_WDMA_INT_GRP2, 0); - wed_w32(dev, MTK_WED_WPDMA_INT_MASK, 0); - if (mtk_wed_is_v1(dev->hw)) + if (!mtk_wed_get_rx_capa(dev)) return; wed_w32(dev, MTK_WED_EXT_INT_MASK1, 0); -@@ -733,16 +733,21 @@ mtk_wed_set_wpdma(struct mtk_wed_device +@@ -732,16 +732,21 @@ mtk_wed_set_wpdma(struct mtk_wed_device { if (mtk_wed_is_v1(dev->hw)) { wed_w32(dev, MTK_WED_WPDMA_CFG_BASE, dev->wlan.wpdma_phys); @@ -55,7 +55,7 @@ Signed-off-by: Paolo Abeni } static void -@@ -974,15 +979,17 @@ mtk_wed_hw_init(struct mtk_wed_device *d +@@ -973,15 +978,17 @@ mtk_wed_hw_init(struct mtk_wed_device *d MTK_WED_CTRL_WED_TX_FREE_AGENT_EN); } else { wed_clr(dev, MTK_WED_TX_TKID_CTRL, MTK_WED_TX_TKID_CTRL_PAUSE); @@ -82,7 +82,7 @@ Signed-off-by: Paolo Abeni } wed_clr(dev, MTK_WED_TX_BM_CTRL, MTK_WED_TX_BM_CTRL_PAUSE); -@@ -1354,8 +1361,6 @@ mtk_wed_configure_irq(struct mtk_wed_dev +@@ -1353,8 +1360,6 @@ mtk_wed_configure_irq(struct mtk_wed_dev wed_clr(dev, MTK_WED_WDMA_INT_CTRL, wdma_mask); } else { @@ -91,7 +91,7 @@ Signed-off-by: Paolo Abeni /* initail tx interrupt trigger */ wed_w32(dev, MTK_WED_WPDMA_INT_CTRL_TX, MTK_WED_WPDMA_INT_CTRL_TX0_DONE_EN | -@@ -1374,15 +1379,20 @@ mtk_wed_configure_irq(struct mtk_wed_dev +@@ -1373,15 +1378,20 @@ mtk_wed_configure_irq(struct mtk_wed_dev FIELD_PREP(MTK_WED_WPDMA_INT_CTRL_TX_FREE_DONE_TRIG, dev->wlan.txfree_tbit)); @@ -121,7 +121,7 @@ Signed-off-by: Paolo Abeni wed_w32(dev, MTK_WED_WDMA_INT_CLR, wdma_mask); wed_set(dev, MTK_WED_WDMA_INT_CTRL, -@@ -1401,6 +1411,8 @@ mtk_wed_configure_irq(struct mtk_wed_dev +@@ -1400,6 +1410,8 @@ mtk_wed_configure_irq(struct mtk_wed_dev static void mtk_wed_dma_enable(struct mtk_wed_device *dev) { @@ -130,7 +130,7 @@ Signed-off-by: Paolo Abeni wed_set(dev, MTK_WED_WPDMA_INT_CTRL, MTK_WED_WPDMA_INT_CTRL_SUBRT_ADV); wed_set(dev, MTK_WED_GLO_CFG, -@@ -1420,33 +1432,33 @@ mtk_wed_dma_enable(struct mtk_wed_device +@@ -1419,33 +1431,33 @@ mtk_wed_dma_enable(struct mtk_wed_device if (mtk_wed_is_v1(dev->hw)) { wdma_set(dev, MTK_WDMA_GLO_CFG, MTK_WDMA_GLO_CFG_RX_INFO3_PRERES); @@ -186,7 +186,7 @@ Signed-off-by: Paolo Abeni } static void -@@ -1473,7 +1485,7 @@ mtk_wed_start(struct mtk_wed_device *dev +@@ -1472,7 +1484,7 @@ mtk_wed_start(struct mtk_wed_device *dev val |= BIT(0) | (BIT(1) * !!dev->hw->index); regmap_write(dev->hw->mirror, dev->hw->index * 4, val); @@ -195,7 +195,7 @@ Signed-off-by: Paolo Abeni /* driver set mid ready and only once */ wed_w32(dev, MTK_WED_EXT_INT_MASK1, MTK_WED_EXT_INT_STATUS_WPDMA_MID_RDY); -@@ -1485,7 +1497,6 @@ mtk_wed_start(struct mtk_wed_device *dev +@@ -1484,7 +1496,6 @@ mtk_wed_start(struct mtk_wed_device *dev if (mtk_wed_rro_cfg(dev)) return; @@ -203,7 +203,7 @@ Signed-off-by: Paolo Abeni } mtk_wed_set_512_support(dev, dev->wlan.wcid_512); -@@ -1551,13 +1562,14 @@ mtk_wed_attach(struct mtk_wed_device *de +@@ -1550,13 +1561,14 @@ mtk_wed_attach(struct mtk_wed_device *de } mtk_wed_hw_init_early(dev); diff --git a/target/linux/generic/backport-6.6/752-13-v6.7-net-ethernet-mtk_wed-add-mtk_wed_soc_data-structure.patch b/target/linux/generic/backport-6.6/752-13-v6.7-net-ethernet-mtk_wed-add-mtk_wed_soc_data-structure.patch index 71b32c545..3e750ec1d 100644 --- a/target/linux/generic/backport-6.6/752-13-v6.7-net-ethernet-mtk_wed-add-mtk_wed_soc_data-structure.patch +++ b/target/linux/generic/backport-6.6/752-13-v6.7-net-ethernet-mtk_wed-add-mtk_wed_soc_data-structure.patch @@ -38,7 +38,7 @@ Signed-off-by: Paolo Abeni static void wed_m32(struct mtk_wed_device *dev, u32 reg, u32 mask, u32 val) { -@@ -747,7 +767,7 @@ mtk_wed_set_wpdma(struct mtk_wed_device +@@ -746,7 +766,7 @@ mtk_wed_set_wpdma(struct mtk_wed_device return; wed_w32(dev, MTK_WED_WPDMA_RX_GLO_CFG, dev->wlan.wpdma_rx_glo); @@ -47,7 +47,7 @@ Signed-off-by: Paolo Abeni } static void -@@ -941,22 +961,10 @@ mtk_wed_hw_init(struct mtk_wed_device *d +@@ -940,22 +960,10 @@ mtk_wed_hw_init(struct mtk_wed_device *d wed_w32(dev, MTK_WED_TX_BM_BUF_LEN, MTK_WED_PKT_SIZE); if (mtk_wed_is_v1(dev->hw)) { @@ -70,7 +70,7 @@ Signed-off-by: Paolo Abeni wed_w32(dev, MTK_WED_TX_BM_DYN_THR, FIELD_PREP(MTK_WED_TX_BM_DYN_THR_LO_V2, 0) | MTK_WED_TX_BM_DYN_THR_HI_V2); -@@ -971,6 +979,11 @@ mtk_wed_hw_init(struct mtk_wed_device *d +@@ -970,6 +978,11 @@ mtk_wed_hw_init(struct mtk_wed_device *d MTK_WED_TX_TKID_DYN_THR_HI); } @@ -82,7 +82,7 @@ Signed-off-by: Paolo Abeni mtk_wed_reset(dev, MTK_WED_RESET_TX_BM); if (mtk_wed_is_v1(dev->hw)) { -@@ -1105,13 +1118,8 @@ mtk_wed_rx_reset(struct mtk_wed_device * +@@ -1104,13 +1117,8 @@ mtk_wed_rx_reset(struct mtk_wed_device * if (ret) { mtk_wed_reset(dev, MTK_WED_RESET_WED_RX_DMA); } else { @@ -98,7 +98,7 @@ Signed-off-by: Paolo Abeni wed_w32(dev, MTK_WED_RESET_IDX, 0); } -@@ -1164,7 +1172,8 @@ mtk_wed_reset_dma(struct mtk_wed_device +@@ -1163,7 +1171,8 @@ mtk_wed_reset_dma(struct mtk_wed_device if (busy) { mtk_wed_reset(dev, MTK_WED_RESET_WED_TX_DMA); } else { @@ -108,7 +108,7 @@ Signed-off-by: Paolo Abeni wed_w32(dev, MTK_WED_RESET_IDX, 0); } -@@ -1256,7 +1265,6 @@ static int +@@ -1255,7 +1264,6 @@ static int mtk_wed_wdma_rx_ring_setup(struct mtk_wed_device *dev, int idx, int size, bool reset) { @@ -116,7 +116,7 @@ Signed-off-by: Paolo Abeni struct mtk_wed_ring *wdma; if (idx >= ARRAY_SIZE(dev->rx_wdma)) -@@ -1264,7 +1272,7 @@ mtk_wed_wdma_rx_ring_setup(struct mtk_we +@@ -1263,7 +1271,7 @@ mtk_wed_wdma_rx_ring_setup(struct mtk_we wdma = &dev->rx_wdma[idx]; if (!reset && mtk_wed_ring_alloc(dev, wdma, MTK_WED_WDMA_RING_SIZE, @@ -125,7 +125,7 @@ Signed-off-by: Paolo Abeni return -ENOMEM; wdma_w32(dev, MTK_WDMA_RING_RX(idx) + MTK_WED_RING_OFS_BASE, -@@ -1285,7 +1293,6 @@ static int +@@ -1284,7 +1292,6 @@ static int mtk_wed_wdma_tx_ring_setup(struct mtk_wed_device *dev, int idx, int size, bool reset) { @@ -133,7 +133,7 @@ Signed-off-by: Paolo Abeni struct mtk_wed_ring *wdma; if (idx >= ARRAY_SIZE(dev->tx_wdma)) -@@ -1293,7 +1300,7 @@ mtk_wed_wdma_tx_ring_setup(struct mtk_we +@@ -1292,7 +1299,7 @@ mtk_wed_wdma_tx_ring_setup(struct mtk_we wdma = &dev->tx_wdma[idx]; if (!reset && mtk_wed_ring_alloc(dev, wdma, MTK_WED_WDMA_RING_SIZE, @@ -142,7 +142,7 @@ Signed-off-by: Paolo Abeni return -ENOMEM; wdma_w32(dev, MTK_WDMA_RING_TX(idx) + MTK_WED_RING_OFS_BASE, -@@ -1932,7 +1939,12 @@ void mtk_wed_add_hw(struct device_node * +@@ -1928,7 +1935,12 @@ void mtk_wed_add_hw(struct device_node * hw->irq = irq; hw->version = eth->soc->version; @@ -156,7 +156,7 @@ Signed-off-by: Paolo Abeni hw->mirror = syscon_regmap_lookup_by_phandle(eth_np, "mediatek,pcie-mirror"); hw->hifsys = syscon_regmap_lookup_by_phandle(eth_np, -@@ -1946,6 +1958,8 @@ void mtk_wed_add_hw(struct device_node * +@@ -1942,6 +1954,8 @@ void mtk_wed_add_hw(struct device_node * regmap_write(hw->mirror, 0, 0); regmap_write(hw->mirror, 4, 0); } diff --git a/target/linux/generic/backport-6.6/752-14-v6.7-net-ethernet-mtk_wed-introduce-WED-support-for-MT798.patch b/target/linux/generic/backport-6.6/752-14-v6.7-net-ethernet-mtk_wed-introduce-WED-support-for-MT798.patch index 12733b142..5a271a562 100644 --- a/target/linux/generic/backport-6.6/752-14-v6.7-net-ethernet-mtk_wed-introduce-WED-support-for-MT798.patch +++ b/target/linux/generic/backport-6.6/752-14-v6.7-net-ethernet-mtk_wed-introduce-WED-support-for-MT798.patch @@ -302,7 +302,7 @@ Signed-off-by: Paolo Abeni } mtk_wed_set_512_support(dev, false); -@@ -652,6 +699,14 @@ mtk_wed_deinit(struct mtk_wed_device *de +@@ -651,6 +698,14 @@ mtk_wed_deinit(struct mtk_wed_device *de MTK_WED_CTRL_RX_ROUTE_QM_EN | MTK_WED_CTRL_WED_RX_BM_EN | MTK_WED_CTRL_RX_RRO_QM_EN); @@ -317,7 +317,7 @@ Signed-off-by: Paolo Abeni } static void -@@ -701,21 +756,37 @@ mtk_wed_detach(struct mtk_wed_device *de +@@ -700,21 +755,37 @@ mtk_wed_detach(struct mtk_wed_device *de mutex_unlock(&hw_lock); } @@ -362,7 +362,7 @@ Signed-off-by: Paolo Abeni wed_w32(dev, MTK_WED_PCIE_INT_CTRL, FIELD_PREP(MTK_WED_PCIE_INT_CTRL_POLL_EN, 2)); -@@ -723,19 +794,9 @@ mtk_wed_bus_init(struct mtk_wed_device * +@@ -722,19 +793,9 @@ mtk_wed_bus_init(struct mtk_wed_device * /* pcie interrupt control: pola/source selection */ wed_set(dev, MTK_WED_PCIE_INT_CTRL, MTK_WED_PCIE_INT_CTRL_MSK_EN_POLA | @@ -385,7 +385,7 @@ Signed-off-by: Paolo Abeni break; } case MTK_WED_BUS_AXI: -@@ -773,18 +834,19 @@ mtk_wed_set_wpdma(struct mtk_wed_device +@@ -772,18 +833,19 @@ mtk_wed_set_wpdma(struct mtk_wed_device static void mtk_wed_hw_init_early(struct mtk_wed_device *dev) { @@ -412,7 +412,7 @@ Signed-off-by: Paolo Abeni wed_m32(dev, MTK_WED_WDMA_GLO_CFG, mask, set); if (mtk_wed_is_v1(dev->hw)) { -@@ -932,11 +994,18 @@ mtk_wed_route_qm_hw_init(struct mtk_wed_ +@@ -931,11 +993,18 @@ mtk_wed_route_qm_hw_init(struct mtk_wed_ } /* configure RX_ROUTE_QM */ @@ -436,7 +436,7 @@ Signed-off-by: Paolo Abeni /* enable RX_ROUTE_QM */ wed_set(dev, MTK_WED_CTRL, MTK_WED_CTRL_RX_ROUTE_QM_EN); } -@@ -949,22 +1018,30 @@ mtk_wed_hw_init(struct mtk_wed_device *d +@@ -948,22 +1017,30 @@ mtk_wed_hw_init(struct mtk_wed_device *d dev->init_done = true; mtk_wed_set_ext_int(dev, false); @@ -475,7 +475,7 @@ Signed-off-by: Paolo Abeni wed_w32(dev, MTK_WED_TX_BM_DYN_THR, FIELD_PREP(MTK_WED_TX_BM_DYN_THR_LO_V2, 0) | MTK_WED_TX_BM_DYN_THR_HI_V2); -@@ -974,9 +1051,6 @@ mtk_wed_hw_init(struct mtk_wed_device *d +@@ -973,9 +1050,6 @@ mtk_wed_hw_init(struct mtk_wed_device *d dev->tx_buf_ring.size / 128) | FIELD_PREP(MTK_WED_TX_TKID_CTRL_RSV_GRP_NUM, dev->tx_buf_ring.size / 128)); @@ -485,7 +485,7 @@ Signed-off-by: Paolo Abeni } wed_w32(dev, dev->hw->soc->regmap.tx_bm_tkid, -@@ -986,26 +1060,62 @@ mtk_wed_hw_init(struct mtk_wed_device *d +@@ -985,26 +1059,62 @@ mtk_wed_hw_init(struct mtk_wed_device *d mtk_wed_reset(dev, MTK_WED_RESET_TX_BM); @@ -561,7 +561,7 @@ Signed-off-by: Paolo Abeni } static void -@@ -1303,6 +1413,24 @@ mtk_wed_wdma_tx_ring_setup(struct mtk_we +@@ -1302,6 +1412,24 @@ mtk_wed_wdma_tx_ring_setup(struct mtk_we dev->hw->soc->wdma_desc_size, true)) return -ENOMEM; @@ -586,7 +586,7 @@ Signed-off-by: Paolo Abeni wdma_w32(dev, MTK_WDMA_RING_TX(idx) + MTK_WED_RING_OFS_BASE, wdma->desc_phys); wdma_w32(dev, MTK_WDMA_RING_TX(idx) + MTK_WED_RING_OFS_COUNT, -@@ -1368,6 +1496,9 @@ mtk_wed_configure_irq(struct mtk_wed_dev +@@ -1367,6 +1495,9 @@ mtk_wed_configure_irq(struct mtk_wed_dev wed_clr(dev, MTK_WED_WDMA_INT_CTRL, wdma_mask); } else { @@ -596,7 +596,7 @@ Signed-off-by: Paolo Abeni /* initail tx interrupt trigger */ wed_w32(dev, MTK_WED_WPDMA_INT_CTRL_TX, MTK_WED_WPDMA_INT_CTRL_TX0_DONE_EN | -@@ -1420,33 +1551,60 @@ mtk_wed_dma_enable(struct mtk_wed_device +@@ -1419,33 +1550,60 @@ mtk_wed_dma_enable(struct mtk_wed_device { int i; @@ -668,7 +668,7 @@ Signed-off-by: Paolo Abeni wed_clr(dev, MTK_WED_WPDMA_GLO_CFG, MTK_WED_WPDMA_GLO_CFG_TX_TKID_KEEP | MTK_WED_WPDMA_GLO_CFG_TX_DMAD_DW3_PREV); -@@ -1458,11 +1616,22 @@ mtk_wed_dma_enable(struct mtk_wed_device +@@ -1457,11 +1615,22 @@ mtk_wed_dma_enable(struct mtk_wed_device MTK_WED_WDMA_GLO_CFG_TX_DRV_EN | MTK_WED_WDMA_GLO_CFG_TX_DDONE_CHK); @@ -693,7 +693,7 @@ Signed-off-by: Paolo Abeni for (i = 0; i < MTK_WED_RX_QUEUES; i++) mtk_wed_check_wfdma_rx_fill(dev, i); -@@ -1502,6 +1671,12 @@ mtk_wed_start(struct mtk_wed_device *dev +@@ -1501,6 +1670,12 @@ mtk_wed_start(struct mtk_wed_device *dev wed_r32(dev, MTK_WED_EXT_INT_MASK1); wed_r32(dev, MTK_WED_EXT_INT_MASK2); @@ -706,7 +706,7 @@ Signed-off-by: Paolo Abeni if (mtk_wed_rro_cfg(dev)) return; } -@@ -1553,6 +1728,7 @@ mtk_wed_attach(struct mtk_wed_device *de +@@ -1552,6 +1727,7 @@ mtk_wed_attach(struct mtk_wed_device *de dev->irq = hw->irq; dev->wdma_idx = hw->index; dev->version = hw->version; @@ -714,7 +714,7 @@ Signed-off-by: Paolo Abeni if (hw->eth->dma_dev == hw->eth->dev && of_dma_is_coherent(hw->eth->dev->of_node)) -@@ -1620,6 +1796,23 @@ mtk_wed_tx_ring_setup(struct mtk_wed_dev +@@ -1619,6 +1795,23 @@ mtk_wed_tx_ring_setup(struct mtk_wed_dev ring->reg_base = MTK_WED_RING_TX(idx); ring->wpdma = regs; @@ -738,7 +738,7 @@ Signed-off-by: Paolo Abeni /* WED -> WPDMA */ wpdma_tx_w32(dev, idx, MTK_WED_RING_OFS_BASE, ring->desc_phys); wpdma_tx_w32(dev, idx, MTK_WED_RING_OFS_COUNT, MTK_WED_TX_RING_SIZE); -@@ -1694,15 +1887,13 @@ mtk_wed_rx_ring_setup(struct mtk_wed_dev +@@ -1693,15 +1886,13 @@ mtk_wed_rx_ring_setup(struct mtk_wed_dev static u32 mtk_wed_irq_get(struct mtk_wed_device *dev, u32 mask) { @@ -759,7 +759,7 @@ Signed-off-by: Paolo Abeni val = wed_r32(dev, MTK_WED_EXT_INT_STATUS); wed_w32(dev, MTK_WED_EXT_INT_STATUS, val); -@@ -1943,6 +2134,9 @@ void mtk_wed_add_hw(struct device_node * +@@ -1939,6 +2130,9 @@ void mtk_wed_add_hw(struct device_node * case 2: hw->soc = &mt7986_data; break; diff --git a/target/linux/generic/backport-6.6/752-15-v6.7-net-ethernet-mtk_wed-refactor-mtk_wed_check_wfdma_rx.patch b/target/linux/generic/backport-6.6/752-15-v6.7-net-ethernet-mtk_wed-refactor-mtk_wed_check_wfdma_rx.patch index 5e12343de..aa2f952b8 100644 --- a/target/linux/generic/backport-6.6/752-15-v6.7-net-ethernet-mtk_wed-refactor-mtk_wed_check_wfdma_rx.patch +++ b/target/linux/generic/backport-6.6/752-15-v6.7-net-ethernet-mtk_wed-refactor-mtk_wed_check_wfdma_rx.patch @@ -56,7 +56,7 @@ Signed-off-by: Paolo Abeni } static void -@@ -1546,6 +1537,7 @@ mtk_wed_configure_irq(struct mtk_wed_dev +@@ -1545,6 +1536,7 @@ mtk_wed_configure_irq(struct mtk_wed_dev wed_w32(dev, MTK_WED_INT_MASK, irq_mask); } @@ -64,7 +64,7 @@ Signed-off-by: Paolo Abeni static void mtk_wed_dma_enable(struct mtk_wed_device *dev) { -@@ -1633,8 +1625,26 @@ mtk_wed_dma_enable(struct mtk_wed_device +@@ -1632,8 +1624,26 @@ mtk_wed_dma_enable(struct mtk_wed_device wdma_set(dev, MTK_WDMA_WRBK_TX_CFG, MTK_WDMA_WRBK_TX_CFG_WRBK_EN); } diff --git a/target/linux/generic/backport-6.6/752-16-v6.7-net-ethernet-mtk_wed-introduce-partial-AMSDU-offload.patch b/target/linux/generic/backport-6.6/752-16-v6.7-net-ethernet-mtk_wed-introduce-partial-AMSDU-offload.patch index f70886aa0..4e72ea128 100644 --- a/target/linux/generic/backport-6.6/752-16-v6.7-net-ethernet-mtk_wed-introduce-partial-AMSDU-offload.patch +++ b/target/linux/generic/backport-6.6/752-16-v6.7-net-ethernet-mtk_wed-introduce-partial-AMSDU-offload.patch @@ -248,7 +248,7 @@ Signed-off-by: Paolo Abeni mtk_wed_tx_buffer_alloc(struct mtk_wed_device *dev) { u32 desc_size = dev->hw->soc->tx_ring_desc_size; -@@ -709,6 +840,7 @@ __mtk_wed_detach(struct mtk_wed_device * +@@ -708,6 +839,7 @@ __mtk_wed_detach(struct mtk_wed_device * mtk_wdma_rx_reset(dev); mtk_wed_reset(dev, MTK_WED_RESET_WED); @@ -256,7 +256,7 @@ Signed-off-by: Paolo Abeni mtk_wed_free_tx_buffer(dev); mtk_wed_free_tx_rings(dev); -@@ -1129,23 +1261,6 @@ mtk_wed_ring_reset(struct mtk_wed_ring * +@@ -1128,23 +1260,6 @@ mtk_wed_ring_reset(struct mtk_wed_ring * } } @@ -280,7 +280,7 @@ Signed-off-by: Paolo Abeni static int mtk_wed_rx_reset(struct mtk_wed_device *dev) { -@@ -1692,6 +1807,7 @@ mtk_wed_start(struct mtk_wed_device *dev +@@ -1691,6 +1806,7 @@ mtk_wed_start(struct mtk_wed_device *dev } mtk_wed_set_512_support(dev, dev->wlan.wcid_512); @@ -288,7 +288,7 @@ Signed-off-by: Paolo Abeni mtk_wed_dma_enable(dev); dev->running = true; -@@ -1748,6 +1864,10 @@ mtk_wed_attach(struct mtk_wed_device *de +@@ -1747,6 +1863,10 @@ mtk_wed_attach(struct mtk_wed_device *de if (ret) goto out; diff --git a/target/linux/generic/backport-6.6/752-17-v6.7-net-ethernet-mtk_wed-introduce-hw_rro-support-for-MT.patch b/target/linux/generic/backport-6.6/752-17-v6.7-net-ethernet-mtk_wed-introduce-hw_rro-support-for-MT.patch index 5c3015c33..f035f8fc0 100644 --- a/target/linux/generic/backport-6.6/752-17-v6.7-net-ethernet-mtk_wed-introduce-hw_rro-support-for-MT.patch +++ b/target/linux/generic/backport-6.6/752-17-v6.7-net-ethernet-mtk_wed-introduce-hw_rro-support-for-MT.patch @@ -173,7 +173,7 @@ Signed-off-by: Paolo Abeni } static void -@@ -935,6 +1056,8 @@ mtk_wed_bus_init(struct mtk_wed_device * +@@ -934,6 +1055,8 @@ mtk_wed_bus_init(struct mtk_wed_device * static void mtk_wed_set_wpdma(struct mtk_wed_device *dev) { @@ -182,7 +182,7 @@ Signed-off-by: Paolo Abeni if (mtk_wed_is_v1(dev->hw)) { wed_w32(dev, MTK_WED_WPDMA_CFG_BASE, dev->wlan.wpdma_phys); return; -@@ -952,6 +1075,15 @@ mtk_wed_set_wpdma(struct mtk_wed_device +@@ -951,6 +1074,15 @@ mtk_wed_set_wpdma(struct mtk_wed_device wed_w32(dev, MTK_WED_WPDMA_RX_GLO_CFG, dev->wlan.wpdma_rx_glo); wed_w32(dev, dev->hw->soc->regmap.wpdma_rx_ring0, dev->wlan.wpdma_rx); @@ -198,7 +198,7 @@ Signed-off-by: Paolo Abeni } static void -@@ -1763,6 +1895,165 @@ mtk_wed_dma_enable(struct mtk_wed_device +@@ -1762,6 +1894,165 @@ mtk_wed_dma_enable(struct mtk_wed_device } static void @@ -364,7 +364,7 @@ Signed-off-by: Paolo Abeni mtk_wed_start(struct mtk_wed_device *dev, u32 irq_mask) { int i; -@@ -2216,6 +2507,10 @@ void mtk_wed_add_hw(struct device_node * +@@ -2212,6 +2503,10 @@ void mtk_wed_add_hw(struct device_node * .detach = mtk_wed_detach, .ppe_check = mtk_wed_ppe_check, .setup_tc = mtk_wed_setup_tc, diff --git a/target/linux/generic/backport-6.6/752-20-v6.7-net-ethernet-mtk_wed-add-wed-3.0-reset-support.patch b/target/linux/generic/backport-6.6/752-20-v6.7-net-ethernet-mtk_wed-add-wed-3.0-reset-support.patch index 18aa4107d..7dad2102a 100644 --- a/target/linux/generic/backport-6.6/752-20-v6.7-net-ethernet-mtk_wed-add-wed-3.0-reset-support.patch +++ b/target/linux/generic/backport-6.6/752-20-v6.7-net-ethernet-mtk_wed-add-wed-3.0-reset-support.patch @@ -205,7 +205,7 @@ Signed-off-by: Paolo Abeni wdma_w32(dev, MTK_WDMA_RESET_IDX, MTK_WDMA_RESET_IDX_TX); wdma_w32(dev, MTK_WDMA_RESET_IDX, 0); -@@ -1406,13 +1570,33 @@ mtk_wed_rx_reset(struct mtk_wed_device * +@@ -1405,13 +1569,33 @@ mtk_wed_rx_reset(struct mtk_wed_device * if (ret) return ret; @@ -239,7 +239,7 @@ Signed-off-by: Paolo Abeni wed_w32(dev, MTK_WED_WPDMA_RX_D_RST_IDX, MTK_WED_WPDMA_RX_D_RST_CRX_IDX | MTK_WED_WPDMA_RX_D_RST_DRV_IDX); -@@ -1440,23 +1624,52 @@ mtk_wed_rx_reset(struct mtk_wed_device * +@@ -1439,23 +1623,52 @@ mtk_wed_rx_reset(struct mtk_wed_device * wed_w32(dev, MTK_WED_RROQM_RST_IDX, 0); } @@ -298,7 +298,7 @@ Signed-off-by: Paolo Abeni mtk_wed_reset(dev, MTK_WED_RESET_WDMA_TX_DRV); /* reset wed rx dma */ -@@ -1477,6 +1690,14 @@ mtk_wed_rx_reset(struct mtk_wed_device * +@@ -1476,6 +1689,14 @@ mtk_wed_rx_reset(struct mtk_wed_device * MTK_WED_CTRL_WED_RX_BM_BUSY); mtk_wed_reset(dev, MTK_WED_RESET_RX_BM); @@ -313,7 +313,7 @@ Signed-off-by: Paolo Abeni /* wo change to enable state */ val = MTK_WED_WO_STATE_ENABLE; ret = mtk_wed_mcu_send_msg(wo, MTK_WED_MODULE_ID_WO, -@@ -1494,6 +1715,7 @@ mtk_wed_rx_reset(struct mtk_wed_device * +@@ -1493,6 +1714,7 @@ mtk_wed_rx_reset(struct mtk_wed_device * false); } mtk_wed_free_rx_buffer(dev); @@ -321,7 +321,7 @@ Signed-off-by: Paolo Abeni return 0; } -@@ -1527,15 +1749,41 @@ mtk_wed_reset_dma(struct mtk_wed_device +@@ -1526,15 +1748,41 @@ mtk_wed_reset_dma(struct mtk_wed_device /* 2. reset WDMA rx DMA */ busy = !!mtk_wdma_rx_reset(dev); @@ -364,7 +364,7 @@ Signed-off-by: Paolo Abeni wed_w32(dev, MTK_WED_WDMA_RESET_IDX, MTK_WED_WDMA_RESET_IDX_RX | MTK_WED_WDMA_RESET_IDX_DRV); wed_w32(dev, MTK_WED_WDMA_RESET_IDX, 0); -@@ -1551,8 +1799,13 @@ mtk_wed_reset_dma(struct mtk_wed_device +@@ -1550,8 +1798,13 @@ mtk_wed_reset_dma(struct mtk_wed_device wed_clr(dev, MTK_WED_CTRL, MTK_WED_CTRL_WED_TX_FREE_AGENT_EN); for (i = 0; i < 100; i++) { @@ -380,7 +380,7 @@ Signed-off-by: Paolo Abeni break; } -@@ -1574,6 +1827,8 @@ mtk_wed_reset_dma(struct mtk_wed_device +@@ -1573,6 +1826,8 @@ mtk_wed_reset_dma(struct mtk_wed_device mtk_wed_reset(dev, MTK_WED_RESET_WPDMA_INT_AGENT); mtk_wed_reset(dev, MTK_WED_RESET_WPDMA_TX_DRV); mtk_wed_reset(dev, MTK_WED_RESET_WPDMA_RX_DRV); @@ -389,7 +389,7 @@ Signed-off-by: Paolo Abeni } else { wed_w32(dev, MTK_WED_WPDMA_RESET_IDX, MTK_WED_WPDMA_RESET_IDX_TX | -@@ -1590,7 +1845,14 @@ mtk_wed_reset_dma(struct mtk_wed_device +@@ -1589,7 +1844,14 @@ mtk_wed_reset_dma(struct mtk_wed_device wed_w32(dev, MTK_WED_RESET_IDX, 0); } @@ -405,7 +405,7 @@ Signed-off-by: Paolo Abeni } static int -@@ -1842,6 +2104,7 @@ mtk_wed_dma_enable(struct mtk_wed_device +@@ -1841,6 +2103,7 @@ mtk_wed_dma_enable(struct mtk_wed_device MTK_WED_WPDMA_GLO_CFG_RX_DRV_UNS_VER_FORCE_4); wdma_set(dev, MTK_WDMA_PREF_RX_CFG, MTK_WDMA_PREF_RX_CFG_PREF_EN); @@ -413,7 +413,7 @@ Signed-off-by: Paolo Abeni } wed_clr(dev, MTK_WED_WPDMA_GLO_CFG, -@@ -1905,6 +2168,12 @@ mtk_wed_start_hw_rro(struct mtk_wed_devi +@@ -1904,6 +2167,12 @@ mtk_wed_start_hw_rro(struct mtk_wed_devi if (!mtk_wed_get_rx_capa(dev) || !dev->wlan.hw_rro) return; diff --git a/target/linux/generic/backport-6.6/771-v6.7-01-net-stmmac-improve-TX-timer-arm-logic.patch b/target/linux/generic/backport-6.6/771-v6.7-01-net-stmmac-improve-TX-timer-arm-logic.patch index 3951715fc..a7da409ae 100644 --- a/target/linux/generic/backport-6.6/771-v6.7-01-net-stmmac-improve-TX-timer-arm-logic.patch +++ b/target/linux/generic/backport-6.6/771-v6.7-01-net-stmmac-improve-TX-timer-arm-logic.patch @@ -46,7 +46,7 @@ Signed-off-by: Paolo Abeni --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c -@@ -3003,13 +3003,25 @@ static void stmmac_tx_timer_arm(struct s +@@ -2988,13 +2988,25 @@ static void stmmac_tx_timer_arm(struct s { struct stmmac_tx_queue *tx_q = &priv->dma_conf.tx_queue[queue]; u32 tx_coal_timer = priv->tx_coal_timer[queue]; diff --git a/target/linux/generic/backport-6.6/771-v6.7-02-net-stmmac-move-TX-timer-arm-after-DMA-enable.patch b/target/linux/generic/backport-6.6/771-v6.7-02-net-stmmac-move-TX-timer-arm-after-DMA-enable.patch index ce39895b4..60dfe4c03 100644 --- a/target/linux/generic/backport-6.6/771-v6.7-02-net-stmmac-move-TX-timer-arm-after-DMA-enable.patch +++ b/target/linux/generic/backport-6.6/771-v6.7-02-net-stmmac-move-TX-timer-arm-after-DMA-enable.patch @@ -18,7 +18,7 @@ Signed-off-by: Paolo Abeni --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c -@@ -2551,9 +2551,13 @@ static void stmmac_bump_dma_threshold(st +@@ -2536,9 +2536,13 @@ static void stmmac_bump_dma_threshold(st * @priv: driver private structure * @budget: napi budget limiting this functions packet handling * @queue: TX queue index @@ -33,7 +33,7 @@ Signed-off-by: Paolo Abeni { struct stmmac_tx_queue *tx_q = &priv->dma_conf.tx_queue[queue]; struct stmmac_txq_stats *txq_stats = &priv->xstats.txq_stats[queue]; -@@ -2713,7 +2717,7 @@ static int stmmac_tx_clean(struct stmmac +@@ -2698,7 +2702,7 @@ static int stmmac_tx_clean(struct stmmac /* We still have pending packets, let's call for a new scheduling */ if (tx_q->dirty_tx != tx_q->cur_tx) @@ -42,7 +42,7 @@ Signed-off-by: Paolo Abeni u64_stats_update_begin(&txq_stats->napi_syncp); u64_stats_add(&txq_stats->napi.tx_packets, tx_packets); -@@ -5605,6 +5609,7 @@ static int stmmac_napi_poll_tx(struct na +@@ -5590,6 +5594,7 @@ static int stmmac_napi_poll_tx(struct na container_of(napi, struct stmmac_channel, tx_napi); struct stmmac_priv *priv = ch->priv_data; struct stmmac_txq_stats *txq_stats; @@ -50,7 +50,7 @@ Signed-off-by: Paolo Abeni u32 chan = ch->index; int work_done; -@@ -5613,7 +5618,7 @@ static int stmmac_napi_poll_tx(struct na +@@ -5598,7 +5603,7 @@ static int stmmac_napi_poll_tx(struct na u64_stats_inc(&txq_stats->napi.poll); u64_stats_update_end(&txq_stats->napi_syncp); @@ -59,7 +59,7 @@ Signed-off-by: Paolo Abeni work_done = min(work_done, budget); if (work_done < budget && napi_complete_done(napi, work_done)) { -@@ -5624,6 +5629,10 @@ static int stmmac_napi_poll_tx(struct na +@@ -5609,6 +5614,10 @@ static int stmmac_napi_poll_tx(struct na spin_unlock_irqrestore(&ch->lock, flags); } @@ -70,7 +70,7 @@ Signed-off-by: Paolo Abeni return work_done; } -@@ -5632,6 +5641,7 @@ static int stmmac_napi_poll_rxtx(struct +@@ -5617,6 +5626,7 @@ static int stmmac_napi_poll_rxtx(struct struct stmmac_channel *ch = container_of(napi, struct stmmac_channel, rxtx_napi); struct stmmac_priv *priv = ch->priv_data; @@ -78,7 +78,7 @@ Signed-off-by: Paolo Abeni int rx_done, tx_done, rxtx_done; struct stmmac_rxq_stats *rxq_stats; struct stmmac_txq_stats *txq_stats; -@@ -5647,7 +5657,7 @@ static int stmmac_napi_poll_rxtx(struct +@@ -5632,7 +5642,7 @@ static int stmmac_napi_poll_rxtx(struct u64_stats_inc(&txq_stats->napi.poll); u64_stats_update_end(&txq_stats->napi_syncp); @@ -87,7 +87,7 @@ Signed-off-by: Paolo Abeni tx_done = min(tx_done, budget); rx_done = stmmac_rx_zc(priv, budget, chan); -@@ -5672,6 +5682,10 @@ static int stmmac_napi_poll_rxtx(struct +@@ -5657,6 +5667,10 @@ static int stmmac_napi_poll_rxtx(struct spin_unlock_irqrestore(&ch->lock, flags); } diff --git a/target/linux/generic/hack-6.6/780-usb-net-MeigLink_modem_support.patch b/target/linux/generic/hack-6.6/780-usb-net-MeigLink_modem_support.patch index 9b2ecba1c..d010231e4 100644 --- a/target/linux/generic/hack-6.6/780-usb-net-MeigLink_modem_support.patch +++ b/target/linux/generic/hack-6.6/780-usb-net-MeigLink_modem_support.patch @@ -43,7 +43,7 @@ Subject: [PATCH] net/usb/qmi_wwan: add MeigLink modem support #define QUECTEL_VENDOR_ID 0x2c7c /* These Quectel products use Quectel's vendor ID */ -@@ -1152,6 +1157,11 @@ static const struct usb_device_id option +@@ -1156,6 +1161,11 @@ static const struct usb_device_id option { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x0023)}, /* ONYX 3G device */ { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x9000), /* SIMCom SIM5218 */ .driver_info = NCTRL(0) | NCTRL(1) | NCTRL(2) | NCTRL(3) | RSVD(4) }, @@ -55,7 +55,7 @@ Subject: [PATCH] net/usb/qmi_wwan: add MeigLink modem support /* Quectel products using Qualcomm vendor ID */ { USB_DEVICE(QUALCOMM_VENDOR_ID, QUECTEL_PRODUCT_UC15)}, { USB_DEVICE(QUALCOMM_VENDOR_ID, QUECTEL_PRODUCT_UC20), -@@ -1193,6 +1203,11 @@ static const struct usb_device_id option +@@ -1197,6 +1207,11 @@ static const struct usb_device_id option .driver_info = ZLP }, { USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_BG96), .driver_info = RSVD(4) }, diff --git a/target/linux/generic/hack-6.6/930-usb-net-for-fm350.patch b/target/linux/generic/hack-6.6/930-usb-net-for-fm350.patch index fa4f4044e..c379dc339 100644 --- a/target/linux/generic/hack-6.6/930-usb-net-for-fm350.patch +++ b/target/linux/generic/hack-6.6/930-usb-net-for-fm350.patch @@ -1,6 +1,6 @@ --- a/drivers/usb/serial/option.c +++ b/drivers/usb/serial/option.c -@@ -642,6 +642,7 @@ static void option_instat_callback(struc +@@ -646,6 +646,7 @@ static void option_instat_callback(struc static const struct usb_device_id option_ids[] = { @@ -8,7 +8,7 @@ { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) }, { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA) }, { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA_LIGHT) }, -@@ -2379,6 +2380,15 @@ static int option_probe(struct usb_seria +@@ -2419,6 +2420,15 @@ static int option_probe(struct usb_seria if (device_flags & NUMEP2 && iface_desc->bNumEndpoints != 2) return -ENODEV; diff --git a/target/linux/generic/pending-6.6/150-bridge_allow_receiption_on_disabled_port.patch b/target/linux/generic/pending-6.6/150-bridge_allow_receiption_on_disabled_port.patch index b23cae1f5..d8fd9cdf4 100644 --- a/target/linux/generic/pending-6.6/150-bridge_allow_receiption_on_disabled_port.patch +++ b/target/linux/generic/pending-6.6/150-bridge_allow_receiption_on_disabled_port.patch @@ -15,7 +15,7 @@ Signed-off-by: Felix Fietkau --- a/net/bridge/br_input.c +++ b/net/bridge/br_input.c -@@ -239,6 +239,9 @@ static void __br_handle_local_finish(str +@@ -244,6 +244,9 @@ static void __br_handle_local_finish(str /* note: already called with rcu_read_lock */ static int br_handle_local_finish(struct net *net, struct sock *sk, struct sk_buff *skb) { @@ -25,7 +25,7 @@ Signed-off-by: Felix Fietkau __br_handle_local_finish(skb); /* return 1 to signal the okfn() was called so it's ok to use the skb */ -@@ -408,6 +411,17 @@ forward: +@@ -415,6 +418,17 @@ forward: goto defer_stp_filtering; switch (p->state) { diff --git a/target/linux/generic/pending-6.6/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch b/target/linux/generic/pending-6.6/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch index e54dcdadb..07e923b69 100644 --- a/target/linux/generic/pending-6.6/701-netfilter-nf_tables-ignore-EOPNOTSUPP-on-flowtable-d.patch +++ b/target/linux/generic/pending-6.6/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 -@@ -8260,7 +8260,7 @@ static int nft_register_flowtable_net_ho +@@ -8268,7 +8268,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.6/710-bridge-add-knob-for-filtering-rx-tx-BPDU-pack.patch b/target/linux/generic/pending-6.6/710-bridge-add-knob-for-filtering-rx-tx-BPDU-pack.patch index 05711780f..dd5608b24 100644 --- a/target/linux/generic/pending-6.6/710-bridge-add-knob-for-filtering-rx-tx-BPDU-pack.patch +++ b/target/linux/generic/pending-6.6/710-bridge-add-knob-for-filtering-rx-tx-BPDU-pack.patch @@ -45,7 +45,7 @@ Signed-off-by: Felix Fietkau if (!(p->flags & BR_BCAST_FLOOD) && skb->dev != br->dev) --- a/net/bridge/br_input.c +++ b/net/bridge/br_input.c -@@ -362,6 +362,8 @@ static rx_handler_result_t br_handle_fra +@@ -367,6 +367,8 @@ static rx_handler_result_t br_handle_fra fwd_mask |= p->group_fwd_mask; switch (dest[5]) { case 0x00: /* Bridge Group Address */ diff --git a/target/linux/generic/pending-6.6/723-net-mt7531-ensure-all-MACs-are-powered-down-before-r.patch b/target/linux/generic/pending-6.6/723-net-mt7531-ensure-all-MACs-are-powered-down-before-r.patch index 96eec71f5..14095f208 100644 --- a/target/linux/generic/pending-6.6/723-net-mt7531-ensure-all-MACs-are-powered-down-before-r.patch +++ b/target/linux/generic/pending-6.6/723-net-mt7531-ensure-all-MACs-are-powered-down-before-r.patch @@ -15,7 +15,7 @@ Signed-off-by: Alexander Couzens --- a/drivers/net/dsa/mt7530.c +++ b/drivers/net/dsa/mt7530.c -@@ -2465,6 +2465,10 @@ mt7530_setup(struct dsa_switch *ds) +@@ -2467,6 +2467,10 @@ mt7530_setup(struct dsa_switch *ds) return -ENODEV; } diff --git a/target/linux/generic/pending-6.6/795-mt7530-register-OF-node-for-internal-MDIO-bus.patch b/target/linux/generic/pending-6.6/795-mt7530-register-OF-node-for-internal-MDIO-bus.patch index 82ab924e2..1ddfd0af7 100644 --- a/target/linux/generic/pending-6.6/795-mt7530-register-OF-node-for-internal-MDIO-bus.patch +++ b/target/linux/generic/pending-6.6/795-mt7530-register-OF-node-for-internal-MDIO-bus.patch @@ -16,7 +16,7 @@ Signed-off-by: David Bauer --- a/drivers/net/dsa/mt7530.c +++ b/drivers/net/dsa/mt7530.c -@@ -2353,10 +2353,13 @@ mt7530_setup_mdio(struct mt7530_priv *pr +@@ -2355,10 +2355,13 @@ mt7530_setup_mdio(struct mt7530_priv *pr { struct dsa_switch *ds = priv->ds; struct device *dev = priv->dev; @@ -30,7 +30,7 @@ Signed-off-by: David Bauer bus = devm_mdiobus_alloc(dev); if (!bus) return -ENOMEM; -@@ -2375,7 +2378,9 @@ mt7530_setup_mdio(struct mt7530_priv *pr +@@ -2377,7 +2380,9 @@ mt7530_setup_mdio(struct mt7530_priv *pr if (priv->irq) mt7530_setup_mdio_irq(priv); diff --git a/target/linux/generic/pending-6.6/811-pci_disable_usb_common_quirks.patch b/target/linux/generic/pending-6.6/811-pci_disable_usb_common_quirks.patch index 4c271a7bd..e91d1ef6b 100644 --- a/target/linux/generic/pending-6.6/811-pci_disable_usb_common_quirks.patch +++ b/target/linux/generic/pending-6.6/811-pci_disable_usb_common_quirks.patch @@ -98,7 +98,7 @@ Signed-off-by: Felix Fietkau #endif /* __LINUX_USB_PCI_QUIRKS_H */ --- a/include/linux/usb/hcd.h +++ b/include/linux/usb/hcd.h -@@ -484,7 +484,14 @@ extern int usb_hcd_pci_probe(struct pci_ +@@ -485,7 +485,14 @@ extern int usb_hcd_pci_probe(struct pci_ extern void usb_hcd_pci_remove(struct pci_dev *dev); extern void usb_hcd_pci_shutdown(struct pci_dev *dev); diff --git a/target/linux/generic/pending-6.6/920-mangle_bootargs.patch b/target/linux/generic/pending-6.6/920-mangle_bootargs.patch index 519d0b76d..75f626579 100644 --- a/target/linux/generic/pending-6.6/920-mangle_bootargs.patch +++ b/target/linux/generic/pending-6.6/920-mangle_bootargs.patch @@ -61,7 +61,7 @@ Signed-off-by: Imre Kaloz /* * We need to store the untouched command line for future reference. * We also need to store the touched command line since the parameter -@@ -896,6 +919,7 @@ void start_kernel(void) +@@ -898,6 +921,7 @@ void start_kernel(void) pr_notice("%s", linux_banner); early_security_init(); setup_arch(&command_line);