diff --git a/target/linux/generic/hack-5.10/650-netfilter-add-xt_FLOWOFFLOAD-target.patch b/target/linux/generic/hack-5.10/650-netfilter-add-xt_FLOWOFFLOAD-target.patch index 77c24ccc7..494ca7ede 100644 --- a/target/linux/generic/hack-5.10/650-netfilter-add-xt_FLOWOFFLOAD-target.patch +++ b/target/linux/generic/hack-5.10/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,658 @@ +@@ -0,0 +1,657 @@ +/* + * Copyright (C) 2018-2021 Felix Fietkau + * @@ -278,8 +278,6 @@ Signed-off-by: Felix Fietkau + hook->used = true; + } + spin_unlock_bh(&hooks_lock); -+ -+ cond_resched(); +} + +static void @@ -359,7 +357,7 @@ Signed-off-by: Felix Fietkau + if ((dev->flags & IFF_LOOPBACK) || + dev->type != ARPHRD_ETHER || dev->addr_len != ETH_ALEN || + !is_valid_ether_addr(dev->dev_addr)) -+ return; ++ {printk("test %d",dev->type); return;} + + n = dst_neigh_lookup(dst, daddr); + if (!n) @@ -577,16 +575,17 @@ Signed-off-by: Felix Fietkau + } + + table = &flowtable[!!(info->flags & XT_FLOWOFFLOAD_HW)]; ++ ++ net = read_pnet(&table->ft.net); ++ if (!net) ++ write_pnet(&table->ft.net, xt_net(par)); ++ + if (flow_offload_add(&table->ft, flow) < 0) + goto err_flow_add; + + xt_flowoffload_check_device(table, devs[0]); + xt_flowoffload_check_device(table, devs[1]); + -+ net = read_pnet(&table->ft.net); -+ if (!net) -+ write_pnet(&table->ft.net, xt_net(par)); -+ + dst_release(route.tuple[dir].dst); + dst_release(route.tuple[!dir].dst); + @@ -817,4 +816,4 @@ Signed-off-by: Felix Fietkau + void nf_flow_snat_port(const struct flow_offload *flow, struct sk_buff *skb, unsigned int thoff, - u8 protocol, enum flow_offload_tuple_dir dir); + u8 protocol, enum flow_offload_tuple_dir dir); \ No newline at end of file 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 fa21ca122..c6d3987ed 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 @@ -327,7 +327,7 @@ Signed-off-by: Felix Fietkau +{ + 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; + + return true; +} @@ -354,10 +354,10 @@ Signed-off-by: Felix Fietkau + if (route->tuple[dir].xmit_type == FLOW_OFFLOAD_XMIT_XFRM) + return; + -+ if ((dev->flags & IFF_LOOPBACK) || -+ dev->type != ARPHRD_ETHER || dev->addr_len != ETH_ALEN || -+ !is_valid_ether_addr(dev->dev_addr)) -+ return; ++ ++ ++ ++ + + n = dst_neigh_lookup(dst, daddr); + if (!n) @@ -806,7 +806,7 @@ 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 +@@ -273,6 +273,10 @@ void nf_flow_table_free(struct nf_flowta void flow_offload_teardown(struct flow_offload *flow); @@ -816,4 +816,4 @@ Signed-off-by: Felix Fietkau + void nf_flow_snat_port(const struct flow_offload *flow, struct sk_buff *skb, unsigned int thoff, - u8 protocol, enum flow_offload_tuple_dir dir); + u8 protocol, enum flow_offload_tuple_dir dir); \ No newline at end of file