From fd6e50fdeb1d943b889a5aa093790a798ae598d3 Mon Sep 17 00:00:00 2001
From: Sam Shih <sam.shih@mediatek.com>
Date: Fri, 2 Jun 2023 13:06:29 +0800
Subject: [PATCH] 
 [networking][999-2708-mtkhnat-add-support-for-virtual-interface-acceleration.patch]

---
 include/net/netfilter/nf_flow_table.h |  3 +++
 net/8021q/vlan_dev.c                  |  1 +
 net/ipv6/ip6_tunnel.c                 | 24 ++++++++++++++++++++++++
 net/ipv6/sit.c                        | 24 ++++++++++++++++++++++++
 4 files changed, 52 insertions(+)

diff --git a/include/net/netfilter/nf_flow_table.h b/include/net/netfilter/nf_flow_table.h
index 16dbf5461..4cb73a7cb 100644
--- a/include/net/netfilter/nf_flow_table.h
+++ b/include/net/netfilter/nf_flow_table.h
@@ -94,9 +94,12 @@ struct flow_offload {
 #define FLOW_OFFLOAD_PATH_VLAN		BIT(1)
 #define FLOW_OFFLOAD_PATH_PPPOE		BIT(2)
 #define FLOW_OFFLOAD_PATH_DSA		BIT(3)
+#define FLOW_OFFLOAD_PATH_DSLITE	BIT(4)
+#define FLOW_OFFLOAD_PATH_6RD		BIT(5)
 
 struct flow_offload_hw_path {
 	struct net_device *dev;
+	struct net_device *virt_dev;
 	u32 flags;
 
 	u8 eth_src[ETH_ALEN];
diff --git a/net/8021q/vlan_dev.c b/net/8021q/vlan_dev.c
index f973bec77..dbb3cea5c 100644
--- a/net/8021q/vlan_dev.c
+++ b/net/8021q/vlan_dev.c
@@ -764,6 +764,7 @@ static int vlan_dev_flow_offload_check(struct flow_offload_hw_path *path)
 	path->flags |= FLOW_OFFLOAD_PATH_VLAN;
 	path->vlan_proto = vlan->vlan_proto;
 	path->vlan_id = vlan->vlan_id;
+	path->virt_dev = dev;
 	path->dev = vlan->real_dev;
 
 	if (vlan->real_dev->netdev_ops->ndo_flow_offload_check)
diff --git a/net/ipv6/ip6_tunnel.c b/net/ipv6/ip6_tunnel.c
index 71ef26e60..f8302fdd5 100644
--- a/net/ipv6/ip6_tunnel.c
+++ b/net/ipv6/ip6_tunnel.c
@@ -57,6 +57,11 @@
 #include <net/netns/generic.h>
 #include <net/dst_metadata.h>
 
+#if IS_ENABLED(CONFIG_NF_FLOW_TABLE)
+#include <linux/netfilter.h>
+#include <net/netfilter/nf_flow_table.h>
+#endif
+
 MODULE_AUTHOR("Ville Nuorvala");
 MODULE_DESCRIPTION("IPv6 tunneling device");
 MODULE_LICENSE("GPL");
@@ -1889,6 +1894,22 @@ int ip6_tnl_get_iflink(const struct net_device *dev)
 }
 EXPORT_SYMBOL(ip6_tnl_get_iflink);
 
+#if IS_ENABLED(CONFIG_NF_FLOW_TABLE)
+static int ipip6_dev_flow_offload_check(struct flow_offload_hw_path *path)
+{
+	struct net_device *dev = path->dev;
+	struct ip6_tnl *tnl = netdev_priv(dev);
+
+	if (path->flags & FLOW_OFFLOAD_PATH_DSLITE)
+		return -EEXIST;
+
+	path->flags |= FLOW_OFFLOAD_PATH_DSLITE;
+	path->dev = tnl->dev;
+
+	return 0;
+}
+#endif /* CONFIG_NF_FLOW_TABLE */
+
 int ip6_tnl_encap_add_ops(const struct ip6_tnl_encap_ops *ops,
 			  unsigned int num)
 {
@@ -1950,6 +1971,9 @@ static const struct net_device_ops ip6_tnl_netdev_ops = {
 	.ndo_change_mtu = ip6_tnl_change_mtu,
 	.ndo_get_stats	= ip6_get_stats,
 	.ndo_get_iflink = ip6_tnl_get_iflink,
+#if IS_ENABLED(CONFIG_NF_FLOW_TABLE)
+	.ndo_flow_offload_check = ipip6_dev_flow_offload_check,
+#endif
 };
 
 #define IPXIPX_FEATURES (NETIF_F_SG |		\
diff --git a/net/ipv6/sit.c b/net/ipv6/sit.c
index 117960895..0844a95e3 100644
--- a/net/ipv6/sit.c
+++ b/net/ipv6/sit.c
@@ -52,6 +52,11 @@
 #include <net/net_namespace.h>
 #include <net/netns/generic.h>
 
+#if IS_ENABLED(CONFIG_NF_FLOW_TABLE)
+#include <linux/netfilter.h>
+#include <net/netfilter/nf_flow_table.h>
+#endif
+
 /*
    This version of net/ipv6/sit.c is cloned of net/ipv4/ip_gre.c
 
@@ -1342,6 +1347,22 @@ done:
 	return err;
 }
 
+#if IS_ENABLED(CONFIG_NF_FLOW_TABLE)
+static int ipip6_dev_flow_offload_check(struct flow_offload_hw_path *path)
+{
+	struct net_device *dev = path->dev;
+	struct ip_tunnel *tnl = netdev_priv(dev);
+
+	if (path->flags & FLOW_OFFLOAD_PATH_6RD)
+		return -EEXIST;
+
+	path->flags |= FLOW_OFFLOAD_PATH_6RD;
+	path->dev = tnl->dev;
+
+	return 0;
+}
+#endif /* CONFIG_NF_FLOW_TABLE */
+
 static const struct net_device_ops ipip6_netdev_ops = {
 	.ndo_init	= ipip6_tunnel_init,
 	.ndo_uninit	= ipip6_tunnel_uninit,
@@ -1349,6 +1370,9 @@ static const struct net_device_ops ipip6_netdev_ops = {
 	.ndo_do_ioctl	= ipip6_tunnel_ioctl,
 	.ndo_get_stats64 = ip_tunnel_get_stats64,
 	.ndo_get_iflink = ip_tunnel_get_iflink,
+#if IS_ENABLED(CONFIG_NF_FLOW_TABLE)
+	.ndo_flow_offload_check = ipip6_dev_flow_offload_check,
+#endif
 };
 
 static void ipip6_dev_free(struct net_device *dev)
-- 
2.34.1

