From 2454342e068335ec0a52b2304e83f5f62f6b6b2d Mon Sep 17 00:00:00 2001 From: Rui Salvaterra Date: Wed, 25 May 2022 11:21:59 +0100 Subject: [PATCH] kernel: bump 5.15 to 5.15.42 Deleted (upstreamed): generic/backport-5.15/610-v5.18-netfilter-flowtable-move-dst_check-to-packet-path.patch [1] generic/pending-5.15/704-00-netfilter-flowtable-fix-excessive-hw-offload-attempt.patch [2] generic/pending-5.15/704-01-netfilter-nft_flow_offload-skip-dst-neigh-lookup-for.patch [3] generic/pending-5.15/704-02-net-fix-dev_fill_forward_path-with-pppoe-bridge.patch [4] generic/pending-5.15/704-03-netfilter-nft_flow_offload-fix-offload-with-pppoe-vl.patch [5] Manually rebased: generic/hack-5.15/650-netfilter-add-xt_FLOWOFFLOAD-target.patch [1] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v5.15.42&id=88b937673b3552d54da20f648e61a123f4c1fa67 [2] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v5.15.42&id=5f4197a020c049a59ea7907c31f9ab037dcefefe [3] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v5.15.42&id=7613dcaceee281973145588f4244f2f78ef85b7f [4] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v5.15.42&id=f96b2e06721249ebf8da3254cfef29dcb6583948 [5] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v5.15.42&id=b329889974aed47e1167c85653c07097013e01a7 Signed-off-by: Rui Salvaterra --- include/kernel-5.15 | 4 +- ...-unregistering-of-framebuffers-witho.patch | 2 +- ...-unplug-firmware-fb-devices-on-force.patch | 4 +- .../600-mips-bmips-add-pci-support.patch | 2 +- ...ow_offload-handle-netdevice-events-f.patch | 4 +- ...wtable-move-dst_check-to-packet-path.patch | 99 ------------------- .../hack-5.15/600-bridge_offload.patch | 4 +- ...-netfilter-add-xt_FLOWOFFLOAD-target.patch | 32 +++--- .../hack-5.15/904-debloat_dma_buf.patch | 2 +- ...ge_allow_receiption_on_disabled_port.patch | 4 +- ...ble-fix-excessive-hw-offload-attempt.patch | 27 ----- ...ow_offload-skip-dst-neigh-lookup-for.patch | 64 ------------ ..._fill_forward_path-with-pppoe-bridge.patch | 66 ------------- ...ow_offload-fix-offload-with-pppoe-vl.patch | 24 ----- ...d-knob-for-filtering-rx-tx-BPDU-pack.patch | 2 +- ...e-main-irq_chip-structure-a-static-d.patch | 10 +- ...ark-Fix-initialization-with-old-Marv.patch | 2 +- 17 files changed, 38 insertions(+), 314 deletions(-) delete mode 100644 target/linux/generic/backport-5.15/610-v5.18-netfilter-flowtable-move-dst_check-to-packet-path.patch delete mode 100644 target/linux/generic/pending-5.15/704-00-netfilter-flowtable-fix-excessive-hw-offload-attempt.patch delete mode 100644 target/linux/generic/pending-5.15/704-01-netfilter-nft_flow_offload-skip-dst-neigh-lookup-for.patch delete mode 100644 target/linux/generic/pending-5.15/704-02-net-fix-dev_fill_forward_path-with-pppoe-bridge.patch delete mode 100644 target/linux/generic/pending-5.15/704-03-netfilter-nft_flow_offload-fix-offload-with-pppoe-vl.patch diff --git a/include/kernel-5.15 b/include/kernel-5.15 index 0a8c775a41..622d1b844e 100644 --- a/include/kernel-5.15 +++ b/include/kernel-5.15 @@ -1,2 +1,2 @@ -LINUX_VERSION-5.15 = .41 -LINUX_KERNEL_HASH-5.15.41 = 3c7cb1fc3b029b1b765a33af9608b6f18f734246050640def019ee4c4ad6591e +LINUX_VERSION-5.15 = .42 +LINUX_KERNEL_HASH-5.15.42 = 5ecd47a9f663368f005f74d24c8de4ffd93007b675ddf342e2c6db956bf82560 diff --git a/target/linux/bcm27xx/patches-5.15/950-0880-Revert-fbdev-Fix-unregistering-of-framebuffers-witho.patch b/target/linux/bcm27xx/patches-5.15/950-0880-Revert-fbdev-Fix-unregistering-of-framebuffers-witho.patch index e97eb8a31f..66412360bf 100644 --- a/target/linux/bcm27xx/patches-5.15/950-0880-Revert-fbdev-Fix-unregistering-of-framebuffers-witho.patch +++ b/target/linux/bcm27xx/patches-5.15/950-0880-Revert-fbdev-Fix-unregistering-of-framebuffers-witho.patch @@ -11,7 +11,7 @@ This reverts commit 2388f826cdc9af2651991adc0feb79de9bdf2232. --- a/drivers/video/fbdev/core/fbmem.c +++ b/drivers/video/fbdev/core/fbmem.c -@@ -1619,14 +1619,7 @@ static void do_remove_conflicting_frameb +@@ -1616,14 +1616,7 @@ static void do_remove_conflicting_frameb * If it's not a platform device, at least print a warning. A * fix would add code to remove the device from the system. */ diff --git a/target/linux/bcm27xx/patches-5.15/950-0881-Revert-fbdev-Hot-unplug-firmware-fb-devices-on-force.patch b/target/linux/bcm27xx/patches-5.15/950-0881-Revert-fbdev-Hot-unplug-firmware-fb-devices-on-force.patch index b6ae1dc214..b28d29cc89 100644 --- a/target/linux/bcm27xx/patches-5.15/950-0881-Revert-fbdev-Hot-unplug-firmware-fb-devices-on-force.patch +++ b/target/linux/bcm27xx/patches-5.15/950-0881-Revert-fbdev-Hot-unplug-firmware-fb-devices-on-force.patch @@ -20,7 +20,7 @@ This reverts commit c894ac44786cfed383a6c6b20c1bfb12eb96018a. #include #include #include -@@ -1596,36 +1595,18 @@ static void do_remove_conflicting_frameb +@@ -1593,36 +1592,18 @@ static void do_remove_conflicting_frameb /* check all firmware fbs and kick off if the base addr overlaps */ for_each_registered_fb(i) { struct apertures_struct *gen_aper; @@ -58,7 +58,7 @@ This reverts commit c894ac44786cfed383a6c6b20c1bfb12eb96018a. } } } -@@ -1952,13 +1933,9 @@ EXPORT_SYMBOL(register_framebuffer); +@@ -1949,13 +1930,9 @@ EXPORT_SYMBOL(register_framebuffer); void unregister_framebuffer(struct fb_info *fb_info) { diff --git a/target/linux/bmips/patches-5.15/600-mips-bmips-add-pci-support.patch b/target/linux/bmips/patches-5.15/600-mips-bmips-add-pci-support.patch index b219868442..b10dd8d432 100644 --- a/target/linux/bmips/patches-5.15/600-mips-bmips-add-pci-support.patch +++ b/target/linux/bmips/patches-5.15/600-mips-bmips-add-pci-support.patch @@ -1,6 +1,6 @@ --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig -@@ -276,6 +276,7 @@ config BMIPS_GENERIC +@@ -277,6 +277,7 @@ config BMIPS_GENERIC select BCM7038_L1_IRQ select BCM7120_L2_IRQ select BRCMSTB_L2_IRQ diff --git a/target/linux/generic/backport-5.15/343-netfilter-nft_flow_offload-handle-netdevice-events-f.patch b/target/linux/generic/backport-5.15/343-netfilter-nft_flow_offload-handle-netdevice-events-f.patch index 9a6b802fd1..19ec9d9409 100644 --- a/target/linux/generic/backport-5.15/343-netfilter-nft_flow_offload-handle-netdevice-events-f.patch +++ b/target/linux/generic/backport-5.15/343-netfilter-nft_flow_offload-handle-netdevice-events-f.patch @@ -10,7 +10,7 @@ Signed-off-by: Pablo Neira Ayuso --- a/net/netfilter/nf_flow_table_core.c +++ b/net/netfilter/nf_flow_table_core.c -@@ -646,13 +646,41 @@ void nf_flow_table_free(struct nf_flowta +@@ -608,13 +608,41 @@ void nf_flow_table_free(struct nf_flowta } EXPORT_SYMBOL_GPL(nf_flow_table_free); @@ -55,7 +55,7 @@ Signed-off-by: Pablo Neira Ayuso --- a/net/netfilter/nft_flow_offload.c +++ b/net/netfilter/nft_flow_offload.c -@@ -438,47 +438,14 @@ static struct nft_expr_type nft_flow_off +@@ -444,47 +444,14 @@ static struct nft_expr_type nft_flow_off .owner = THIS_MODULE, }; diff --git a/target/linux/generic/backport-5.15/610-v5.18-netfilter-flowtable-move-dst_check-to-packet-path.patch b/target/linux/generic/backport-5.15/610-v5.18-netfilter-flowtable-move-dst_check-to-packet-path.patch deleted file mode 100644 index 8d355315c9..0000000000 --- a/target/linux/generic/backport-5.15/610-v5.18-netfilter-flowtable-move-dst_check-to-packet-path.patch +++ /dev/null @@ -1,99 +0,0 @@ -From 2738d9d963bd1f06d5114c2b4fa5771a95703991 Mon Sep 17 00:00:00 2001 -From: Ritaro Takenaka -Date: Tue, 17 May 2022 12:55:30 +0200 -Subject: [PATCH] netfilter: flowtable: move dst_check to packet path - -Fixes sporadic IPv6 packet loss when flow offloading is enabled. - -IPv6 route GC and flowtable GC are not synchronized. -When dst_cache becomes stale and a packet passes through the flow before -the flowtable GC teardowns it, the packet can be dropped. -So, it is necessary to check dst every time in packet path. - -Fixes: 227e1e4d0d6c ("netfilter: nf_flowtable: skip device lookup from interface index") -Signed-off-by: Ritaro Takenaka -Signed-off-by: Pablo Neira Ayuso ---- - net/netfilter/nf_flow_table_core.c | 23 +---------------------- - net/netfilter/nf_flow_table_ip.c | 19 +++++++++++++++++++ - 2 files changed, 20 insertions(+), 22 deletions(-) - ---- a/net/netfilter/nf_flow_table_core.c -+++ b/net/netfilter/nf_flow_table_core.c -@@ -431,33 +431,12 @@ nf_flow_table_iterate(struct nf_flowtabl - return err; - } - --static bool flow_offload_stale_dst(struct flow_offload_tuple *tuple) --{ -- struct dst_entry *dst; -- -- if (tuple->xmit_type == FLOW_OFFLOAD_XMIT_NEIGH || -- tuple->xmit_type == FLOW_OFFLOAD_XMIT_XFRM) { -- dst = tuple->dst_cache; -- if (!dst_check(dst, tuple->dst_cookie)) -- return true; -- } -- -- return false; --} -- --static bool nf_flow_has_stale_dst(struct flow_offload *flow) --{ -- return flow_offload_stale_dst(&flow->tuplehash[FLOW_OFFLOAD_DIR_ORIGINAL].tuple) || -- flow_offload_stale_dst(&flow->tuplehash[FLOW_OFFLOAD_DIR_REPLY].tuple); --} -- - static void nf_flow_offload_gc_step(struct flow_offload *flow, void *data) - { - struct nf_flowtable *flow_table = data; - - if (nf_flow_has_expired(flow) || -- nf_ct_is_dying(flow->ct) || -- nf_flow_has_stale_dst(flow)) -+ nf_ct_is_dying(flow->ct)) - set_bit(NF_FLOW_TEARDOWN, &flow->flags); - - if (test_bit(NF_FLOW_TEARDOWN, &flow->flags)) { ---- a/net/netfilter/nf_flow_table_ip.c -+++ b/net/netfilter/nf_flow_table_ip.c -@@ -227,6 +227,15 @@ static bool nf_flow_exceeds_mtu(const st - return true; - } - -+static inline bool nf_flow_dst_check(struct flow_offload_tuple *tuple) -+{ -+ if (tuple->xmit_type != FLOW_OFFLOAD_XMIT_NEIGH && -+ tuple->xmit_type != FLOW_OFFLOAD_XMIT_XFRM) -+ return true; -+ -+ return dst_check(tuple->dst_cache, tuple->dst_cookie); -+} -+ - static unsigned int nf_flow_xmit_xfrm(struct sk_buff *skb, - const struct nf_hook_state *state, - struct dst_entry *dst) -@@ -346,6 +355,11 @@ nf_flow_offload_ip_hook(void *priv, stru - if (nf_flow_state_check(flow, iph->protocol, skb, thoff)) - return NF_ACCEPT; - -+ if (!nf_flow_dst_check(&tuplehash->tuple)) { -+ flow_offload_teardown(flow); -+ return NF_ACCEPT; -+ } -+ - if (skb_try_make_writable(skb, thoff + hdrsize)) - return NF_DROP; - -@@ -582,6 +596,11 @@ nf_flow_offload_ipv6_hook(void *priv, st - if (nf_flow_state_check(flow, ip6h->nexthdr, skb, thoff)) - return NF_ACCEPT; - -+ if (!nf_flow_dst_check(&tuplehash->tuple)) { -+ flow_offload_teardown(flow); -+ return NF_ACCEPT; -+ } -+ - if (skb_try_make_writable(skb, thoff + hdrsize)) - return NF_DROP; - diff --git a/target/linux/generic/hack-5.15/600-bridge_offload.patch b/target/linux/generic/hack-5.15/600-bridge_offload.patch index b396d748b6..5d49d07753 100644 --- a/target/linux/generic/hack-5.15/600-bridge_offload.patch +++ b/target/linux/generic/hack-5.15/600-bridge_offload.patch @@ -154,7 +154,7 @@ static int br_netif_receive_skb(struct net *net, struct sock *sk, struct sk_buff *skb) -@@ -164,6 +165,7 @@ int br_handle_frame_finish(struct net *n +@@ -171,6 +172,7 @@ int br_handle_frame_finish(struct net *n dst->used = now; br_forward(dst->dst, skb, local_rcv, false); } else { @@ -162,7 +162,7 @@ if (!mcast_hit) br_flood(br, skb, pkt_type, local_rcv, false); else -@@ -297,6 +299,9 @@ static rx_handler_result_t br_handle_fra +@@ -304,6 +306,9 @@ static rx_handler_result_t br_handle_fra memset(skb->cb, 0, sizeof(struct br_input_skb_cb)); p = br_port_get_rcu(skb->dev); diff --git a/target/linux/generic/hack-5.15/650-netfilter-add-xt_FLOWOFFLOAD-target.patch b/target/linux/generic/hack-5.15/650-netfilter-add-xt_FLOWOFFLOAD-target.patch index 81432bbeab..f826d65a81 100644 --- a/target/linux/generic/hack-5.15/650-netfilter-add-xt_FLOWOFFLOAD-target.patch +++ b/target/linux/generic/hack-5.15/650-netfilter-add-xt_FLOWOFFLOAD-target.patch @@ -98,7 +98,7 @@ Signed-off-by: Felix Fietkau obj-$(CONFIG_NETFILTER_XT_TARGET_LED) += xt_LED.o --- /dev/null +++ b/net/netfilter/xt_FLOWOFFLOAD.c -@@ -0,0 +1,694 @@ +@@ -0,0 +1,697 @@ +/* + * Copyright (C) 2018-2021 Felix Fietkau + * @@ -289,13 +289,16 @@ Signed-off-by: Felix Fietkau +} + +static void -+xt_flowoffload_check_hook(struct flow_offload *flow, void *data) ++xt_flowoffload_check_hook(struct nf_flowtable *flowtable, ++ struct flow_offload *flow, void *data) +{ -+ struct xt_flowoffload_table *table = data; ++ struct xt_flowoffload_table *table; + struct flow_offload_tuple *tuple0 = &flow->tuplehash[0].tuple; + struct flow_offload_tuple *tuple1 = &flow->tuplehash[1].tuple; + struct xt_flowoffload_hook *hook; + ++ table = container_of(flowtable, struct xt_flowoffload_table, ft); ++ + spin_lock_bh(&hooks_lock); + hlist_for_each_entry(hook, &table->hooks, list) { + if (hook->ops.dev->ifindex != tuple0->iifidx && @@ -323,7 +326,7 @@ Signed-off-by: Felix Fietkau + spin_unlock_bh(&hooks_lock); + + err = nf_flow_table_iterate(&table->ft, xt_flowoffload_check_hook, -+ table); ++ NULL); + if (err && err != -EAGAIN) + goto out; + @@ -803,23 +806,23 @@ Signed-off-by: Felix Fietkau #include #include #include -@@ -399,8 +398,7 @@ flow_offload_lookup(struct nf_flowtable +@@ -380,8 +379,7 @@ flow_offload_lookup(struct nf_flowtable } EXPORT_SYMBOL_GPL(flow_offload_lookup); -static int -nf_flow_table_iterate(struct nf_flowtable *flow_table, +int nf_flow_table_iterate(struct nf_flowtable *flow_table, - void (*iter)(struct flow_offload *flow, void *data), + void (*iter)(struct nf_flowtable *flowtable, + struct flow_offload *flow, void *data), void *data) - { -@@ -432,6 +430,7 @@ nf_flow_table_iterate(struct nf_flowtabl - - return err; +@@ -435,6 +433,7 @@ static void nf_flow_offload_gc_step(stru + nf_flow_offload_stats(flow_table, flow); + } } +EXPORT_SYMBOL_GPL(nf_flow_table_iterate); - static void nf_flow_offload_gc_step(struct flow_offload *flow, void *data) + static void nf_flow_offload_work_gc(struct work_struct *work) { --- /dev/null +++ b/include/uapi/linux/netfilter/xt_FLOWOFFLOAD.h @@ -843,13 +846,14 @@ Signed-off-by: Felix Fietkau +#endif /* _XT_FLOWOFFLOAD_H */ --- a/include/net/netfilter/nf_flow_table.h +++ b/include/net/netfilter/nf_flow_table.h -@@ -275,6 +275,10 @@ void nf_flow_table_free(struct nf_flowta +@@ -275,6 +275,11 @@ void nf_flow_table_free(struct nf_flowta void flow_offload_teardown(struct flow_offload *flow); +int nf_flow_table_iterate(struct nf_flowtable *flow_table, -+ void (*iter)(struct flow_offload *flow, void *data), -+ void *data); ++ void (*iter)(struct nf_flowtable *flowtable, ++ struct flow_offload *flow, void *data), ++ void *data); + void nf_flow_snat_port(const struct flow_offload *flow, struct sk_buff *skb, unsigned int thoff, diff --git a/target/linux/generic/hack-5.15/904-debloat_dma_buf.patch b/target/linux/generic/hack-5.15/904-debloat_dma_buf.patch index 2531e32ff8..1f4d2fd394 100644 --- a/target/linux/generic/hack-5.15/904-debloat_dma_buf.patch +++ b/target/linux/generic/hack-5.15/904-debloat_dma_buf.patch @@ -63,7 +63,7 @@ Signed-off-by: Felix Fietkau +dma-shared-buffer-objs := $(dma-buf-objs-y) --- a/drivers/dma-buf/dma-buf.c +++ b/drivers/dma-buf/dma-buf.c -@@ -1498,4 +1498,5 @@ static void __exit dma_buf_deinit(void) +@@ -1506,4 +1506,5 @@ static void __exit dma_buf_deinit(void) kern_unmount(dma_buf_mnt); dma_buf_uninit_sysfs_statistics(); } diff --git a/target/linux/generic/pending-5.15/150-bridge_allow_receiption_on_disabled_port.patch b/target/linux/generic/pending-5.15/150-bridge_allow_receiption_on_disabled_port.patch index 2b9570e9a0..9968a79699 100644 --- a/target/linux/generic/pending-5.15/150-bridge_allow_receiption_on_disabled_port.patch +++ b/target/linux/generic/pending-5.15/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 -@@ -197,6 +197,9 @@ static void __br_handle_local_finish(str +@@ -204,6 +204,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 */ -@@ -362,6 +365,17 @@ static rx_handler_result_t br_handle_fra +@@ -369,6 +372,17 @@ static rx_handler_result_t br_handle_fra forward: switch (p->state) { diff --git a/target/linux/generic/pending-5.15/704-00-netfilter-flowtable-fix-excessive-hw-offload-attempt.patch b/target/linux/generic/pending-5.15/704-00-netfilter-flowtable-fix-excessive-hw-offload-attempt.patch deleted file mode 100644 index c03cb5ae46..0000000000 --- a/target/linux/generic/pending-5.15/704-00-netfilter-flowtable-fix-excessive-hw-offload-attempt.patch +++ /dev/null @@ -1,27 +0,0 @@ -From: Felix Fietkau -Date: Fri, 6 May 2022 12:37:23 +0200 -Subject: [PATCH] netfilter: flowtable: fix excessive hw offload attempts - after failure - -If a flow cannot be offloaded, the code currently repeatedly tries again as -quickly as possible, which can significantly increase system load. -Fix this by limiting flow timeout update and hardware offload retry to once -per second. - -Signed-off-by: Felix Fietkau ---- - ---- a/net/netfilter/nf_flow_table_core.c -+++ b/net/netfilter/nf_flow_table_core.c -@@ -329,8 +329,10 @@ void flow_offload_refresh(struct nf_flow - u32 timeout; - - timeout = nf_flowtable_time_stamp + flow_offload_get_timeout(flow); -- if (READ_ONCE(flow->timeout) != timeout) -+ if (timeout - READ_ONCE(flow->timeout) > HZ) - WRITE_ONCE(flow->timeout, timeout); -+ else -+ return; - - if (likely(!nf_flowtable_hw_offload(flow_table))) - return; diff --git a/target/linux/generic/pending-5.15/704-01-netfilter-nft_flow_offload-skip-dst-neigh-lookup-for.patch b/target/linux/generic/pending-5.15/704-01-netfilter-nft_flow_offload-skip-dst-neigh-lookup-for.patch deleted file mode 100644 index 6683a53f76..0000000000 --- a/target/linux/generic/pending-5.15/704-01-netfilter-nft_flow_offload-skip-dst-neigh-lookup-for.patch +++ /dev/null @@ -1,64 +0,0 @@ -From: Felix Fietkau -Date: Fri, 6 May 2022 12:43:58 +0200 -Subject: [PATCH] netfilter: nft_flow_offload: skip dst neigh lookup for - ppp devices - -The dst entry does not contain a valid hardware address, so skip the lookup -in order to avoid running into errors here. -The proper hardware address is filled in from nft_dev_path_info - -Signed-off-by: Felix Fietkau ---- - ---- a/net/netfilter/nft_flow_offload.c -+++ b/net/netfilter/nft_flow_offload.c -@@ -36,6 +36,15 @@ static void nft_default_forward_path(str - route->tuple[dir].xmit_type = nft_xmit_type(dst_cache); - } - -+static bool nft_is_valid_ether_device(const struct net_device *dev) -+{ -+ if (!dev || (dev->flags & IFF_LOOPBACK) || dev->type != ARPHRD_ETHER || -+ dev->addr_len != ETH_ALEN || !is_valid_ether_addr(dev->dev_addr)) -+ return false; -+ -+ return true; -+} -+ - static int nft_dev_fill_forward_path(const struct nf_flow_route *route, - const struct dst_entry *dst_cache, - const struct nf_conn *ct, -@@ -47,6 +56,9 @@ static int nft_dev_fill_forward_path(con - struct neighbour *n; - u8 nud_state; - -+ if (!nft_is_valid_ether_device(dev)) -+ goto out; -+ - n = dst_neigh_lookup(dst_cache, daddr); - if (!n) - return -1; -@@ -60,6 +72,7 @@ static int nft_dev_fill_forward_path(con - if (!(nud_state & NUD_VALID)) - return -1; - -+out: - return dev_fill_forward_path(dev, ha, stack); - } - -@@ -78,15 +91,6 @@ struct nft_forward_info { - enum flow_offload_xmit_type xmit_type; - }; - --static bool nft_is_valid_ether_device(const struct net_device *dev) --{ -- if (!dev || (dev->flags & IFF_LOOPBACK) || dev->type != ARPHRD_ETHER || -- dev->addr_len != ETH_ALEN || !is_valid_ether_addr(dev->dev_addr)) -- return false; -- -- return true; --} -- - static void nft_dev_path_info(const struct net_device_path_stack *stack, - struct nft_forward_info *info, - unsigned char *ha, struct nf_flowtable *flowtable) diff --git a/target/linux/generic/pending-5.15/704-02-net-fix-dev_fill_forward_path-with-pppoe-bridge.patch b/target/linux/generic/pending-5.15/704-02-net-fix-dev_fill_forward_path-with-pppoe-bridge.patch deleted file mode 100644 index 984733aeb8..0000000000 --- a/target/linux/generic/pending-5.15/704-02-net-fix-dev_fill_forward_path-with-pppoe-bridge.patch +++ /dev/null @@ -1,66 +0,0 @@ -From: Felix Fietkau -Date: Fri, 6 May 2022 13:54:44 +0200 -Subject: [PATCH] net: fix dev_fill_forward_path with pppoe + bridge - -When calling dev_fill_forward_path on a pppoe device, the provided destination -address is invalid. In order for the bridge fdb lookup to succeed, the pppoe -code needs to update ctx->daddr to the correct value. -Fix this by storing the address inside struct net_device_path_ctx - -Signed-off-by: Felix Fietkau ---- - ---- a/drivers/net/ethernet/mediatek/mtk_ppe_offload.c -+++ b/drivers/net/ethernet/mediatek/mtk_ppe_offload.c -@@ -90,7 +90,6 @@ mtk_flow_get_wdma_info(struct net_device - { - struct net_device_path_ctx ctx = { - .dev = dev, -- .daddr = addr, - }; - struct net_device_path path = {}; - -@@ -100,6 +99,7 @@ mtk_flow_get_wdma_info(struct net_device - if (!dev->netdev_ops->ndo_fill_forward_path) - return -1; - -+ memcpy(ctx.daddr, addr, sizeof(ctx.daddr)); - if (dev->netdev_ops->ndo_fill_forward_path(&ctx, &path)) - return -1; - ---- a/drivers/net/ppp/pppoe.c -+++ b/drivers/net/ppp/pppoe.c -@@ -988,6 +988,7 @@ static int pppoe_fill_forward_path(struc - path->encap.proto = htons(ETH_P_PPP_SES); - path->encap.id = be16_to_cpu(po->num); - memcpy(path->encap.h_dest, po->pppoe_pa.remote, ETH_ALEN); -+ memcpy(ctx->daddr, po->pppoe_pa.remote, ETH_ALEN); - path->dev = ctx->dev; - ctx->dev = dev; - ---- a/include/linux/netdevice.h -+++ b/include/linux/netdevice.h -@@ -894,7 +894,7 @@ struct net_device_path_stack { - - struct net_device_path_ctx { - const struct net_device *dev; -- const u8 *daddr; -+ u8 daddr[ETH_ALEN]; - - int num_vlans; - struct { ---- a/net/core/dev.c -+++ b/net/core/dev.c -@@ -741,11 +741,11 @@ int dev_fill_forward_path(const struct n - const struct net_device *last_dev; - struct net_device_path_ctx ctx = { - .dev = dev, -- .daddr = daddr, - }; - struct net_device_path *path; - int ret = 0; - -+ memcpy(ctx.daddr, daddr, sizeof(ctx.daddr)); - stack->num_paths = 0; - while (ctx.dev && ctx.dev->netdev_ops->ndo_fill_forward_path) { - last_dev = ctx.dev; diff --git a/target/linux/generic/pending-5.15/704-03-netfilter-nft_flow_offload-fix-offload-with-pppoe-vl.patch b/target/linux/generic/pending-5.15/704-03-netfilter-nft_flow_offload-fix-offload-with-pppoe-vl.patch deleted file mode 100644 index 1e0dc9957d..0000000000 --- a/target/linux/generic/pending-5.15/704-03-netfilter-nft_flow_offload-fix-offload-with-pppoe-vl.patch +++ /dev/null @@ -1,24 +0,0 @@ -From: Felix Fietkau -Date: Fri, 6 May 2022 15:15:06 +0200 -Subject: [PATCH] netfilter: nft_flow_offload: fix offload with pppoe + - vlan - -When running a combination of PPPoE on top of a VLAN, we need to set -info->outdev to the PPPoE device, otherwise PPPoE encap is skipped -during software offload. - -Signed-off-by: Felix Fietkau ---- - ---- a/net/netfilter/nft_flow_offload.c -+++ b/net/netfilter/nft_flow_offload.c -@@ -123,7 +123,8 @@ static void nft_dev_path_info(const stru - info->indev = NULL; - break; - } -- info->outdev = path->dev; -+ if (!info->outdev) -+ info->outdev = path->dev; - info->encap[info->num_encaps].id = path->encap.id; - info->encap[info->num_encaps].proto = path->encap.proto; - info->num_encaps++; diff --git a/target/linux/generic/pending-5.15/710-bridge-add-knob-for-filtering-rx-tx-BPDU-pack.patch b/target/linux/generic/pending-5.15/710-bridge-add-knob-for-filtering-rx-tx-BPDU-pack.patch index 84a3ee8e60..2a2ca7f1fa 100644 --- a/target/linux/generic/pending-5.15/710-bridge-add-knob-for-filtering-rx-tx-BPDU-pack.patch +++ b/target/linux/generic/pending-5.15/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 -@@ -319,6 +319,8 @@ static rx_handler_result_t br_handle_fra +@@ -326,6 +326,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-5.15/850-0023-PCI-aardvark-Make-main-irq_chip-structure-a-static-d.patch b/target/linux/generic/pending-5.15/850-0023-PCI-aardvark-Make-main-irq_chip-structure-a-static-d.patch index 96a55ba311..de28ebe73a 100644 --- a/target/linux/generic/pending-5.15/850-0023-PCI-aardvark-Make-main-irq_chip-structure-a-static-d.patch +++ b/target/linux/generic/pending-5.15/850-0023-PCI-aardvark-Make-main-irq_chip-structure-a-static-d.patch @@ -33,15 +33,15 @@ Signed-off-by: Marek Behún --- a/drivers/pci/controller/pci-aardvark.c +++ b/drivers/pci/controller/pci-aardvark.c -@@ -275,7 +275,6 @@ struct advk_pcie { - int irq; +@@ -274,7 +274,6 @@ struct advk_pcie { + u8 wins_count; struct irq_domain *rp_irq_domain; struct irq_domain *irq_domain; - struct irq_chip irq_chip; raw_spinlock_t irq_lock; struct irq_domain *msi_domain; struct irq_domain *msi_inner_domain; -@@ -1331,14 +1330,19 @@ static void advk_pcie_irq_unmask(struct +@@ -1330,14 +1329,19 @@ static void advk_pcie_irq_unmask(struct raw_spin_unlock_irqrestore(&pcie->irq_lock, flags); } @@ -63,7 +63,7 @@ Signed-off-by: Marek Behún irq_set_chip_data(virq, pcie); return 0; -@@ -1397,7 +1401,6 @@ static int advk_pcie_init_irq_domain(str +@@ -1396,7 +1400,6 @@ static int advk_pcie_init_irq_domain(str struct device *dev = &pcie->pdev->dev; struct device_node *node = dev->of_node; struct device_node *pcie_intc_node; @@ -71,7 +71,7 @@ Signed-off-by: Marek Behún int ret = 0; raw_spin_lock_init(&pcie->irq_lock); -@@ -1408,28 +1411,14 @@ static int advk_pcie_init_irq_domain(str +@@ -1407,28 +1410,14 @@ static int advk_pcie_init_irq_domain(str return -ENODEV; } diff --git a/target/linux/generic/pending-5.15/851-0006-Revert-PCI-aardvark-Fix-initialization-with-old-Marv.patch b/target/linux/generic/pending-5.15/851-0006-Revert-PCI-aardvark-Fix-initialization-with-old-Marv.patch index 8fee4d49de..4425e3f86b 100644 --- a/target/linux/generic/pending-5.15/851-0006-Revert-PCI-aardvark-Fix-initialization-with-old-Marv.patch +++ b/target/linux/generic/pending-5.15/851-0006-Revert-PCI-aardvark-Fix-initialization-with-old-Marv.patch @@ -23,7 +23,7 @@ Acked-by: Miquel Raynal --- a/drivers/pci/controller/pci-aardvark.c +++ b/drivers/pci/controller/pci-aardvark.c -@@ -1622,9 +1622,7 @@ static int advk_pcie_enable_phy(struct a +@@ -1616,9 +1616,7 @@ static int advk_pcie_enable_phy(struct a } ret = phy_power_on(pcie->phy); -- 2.30.2