aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/mediatek/patches-4.9/0056-net-mediatek-add-hw-nat-support.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/mediatek/patches-4.9/0056-net-mediatek-add-hw-nat-support.patch')
-rw-r--r--target/linux/mediatek/patches-4.9/0056-net-mediatek-add-hw-nat-support.patch119
1 files changed, 0 insertions, 119 deletions
diff --git a/target/linux/mediatek/patches-4.9/0056-net-mediatek-add-hw-nat-support.patch b/target/linux/mediatek/patches-4.9/0056-net-mediatek-add-hw-nat-support.patch
deleted file mode 100644
index d1d6ed473b..0000000000
--- a/target/linux/mediatek/patches-4.9/0056-net-mediatek-add-hw-nat-support.patch
+++ /dev/null
@@ -1,119 +0,0 @@
-From 043efc0e619e04661be2b1889382db2fdd378145 Mon Sep 17 00:00:00 2001
-From: John Crispin <john@phrozen.org>
-Date: Thu, 10 Aug 2017 16:34:36 +0200
-Subject: [PATCH 56/57] net: mediatek: add hw nat support
-
-Signed-off-by: John Crispin <john@phrozen.org>
----
- drivers/net/ethernet/mediatek/Kconfig | 7 +++++++
- drivers/net/ethernet/mediatek/Makefile | 1 +
- drivers/net/ethernet/mediatek/mtk_eth_soc.c | 13 +++++++++++++
- net/netfilter/nf_conntrack_proto_tcp.c | 19 +++++++++++++++++++
- 4 files changed, 40 insertions(+)
-
---- a/drivers/net/ethernet/mediatek/Kconfig
-+++ b/drivers/net/ethernet/mediatek/Kconfig
-@@ -14,4 +14,11 @@ config NET_MEDIATEK_SOC
- This driver supports the gigabit ethernet MACs in the
- MediaTek MT2701/MT7623 chipset family.
-
-+config NET_MEDIATEK_HNAT
-+ tristate "MediaTek MT7623 hardware NAT support"
-+ depends on NET_MEDIATEK_SOC && NF_CONNTRACK && NF_CONNTRACK_IPV4 && IP_NF_NAT && IP_NF_TARGET_MASQUERADE
-+ ---help---
-+ This driver supports the hardwaer NAT in the
-+ MediaTek MT2701/MT7623 chipset family.
-+
- endif #NET_VENDOR_MEDIATEK
---- a/drivers/net/ethernet/mediatek/Makefile
-+++ b/drivers/net/ethernet/mediatek/Makefile
-@@ -3,3 +3,4 @@
- #
-
- obj-$(CONFIG_NET_MEDIATEK_SOC) += mtk_eth_soc.o
-+obj-$(CONFIG_NET_MEDIATEK_HNAT) += mtk_hnat/
---- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -23,6 +23,10 @@
- #include <linux/reset.h>
- #include <linux/tcp.h>
-
-+#if defined(CONFIG_NET_MEDIATEK_HNAT) || defined(CONFIG_NET_MEDIATEK_HNAT_MODULE)
-+#include "mtk_hnat/nf_hnat_mtk.h"
-+#endif
-+
- #include "mtk_eth_soc.h"
-
- static int mtk_msg_level = -1;
-@@ -649,6 +653,11 @@ static int mtk_tx_map(struct sk_buff *sk
- return -ENOMEM;
-
- /* set the forward port */
-+#if defined(CONFIG_NET_MEDIATEK_HNAT) || defined(CONFIG_NET_MEDIATEK_HNAT_MODULE)
-+ if (HNAT_SKB_CB2(skb)->magic == 0x78681415)
-+ fport |= 0x4 << TX_DMA_FPORT_SHIFT;
-+ else
-+#endif
- fport = (mac->id + 1) << TX_DMA_FPORT_SHIFT;
- txd4 |= fport;
-
-@@ -1013,6 +1022,10 @@ static int mtk_poll_rx(struct napi_struc
- RX_DMA_VID(trxd.rxd3))
- __vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q),
- RX_DMA_VID(trxd.rxd3));
-+#if defined(CONFIG_NET_MEDIATEK_HNAT) || defined(CONFIG_NET_MEDIATEK_HNAT_MODULE)
-+ *(u32 *)(skb->head) = trxd.rxd4;
-+ skb_hnat_alg(skb) = 0;
-+#endif
- skb_record_rx_queue(skb, 0);
- napi_gro_receive(napi, skb);
-
---- a/net/netfilter/nf_conntrack_proto_tcp.c
-+++ b/net/netfilter/nf_conntrack_proto_tcp.c
-@@ -11,6 +11,7 @@
- #include <linux/types.h>
- #include <linux/timer.h>
- #include <linux/module.h>
-+#include <linux/inetdevice.h>
- #include <linux/in.h>
- #include <linux/tcp.h>
- #include <linux/spinlock.h>
-@@ -19,6 +20,7 @@
- #include <net/ip6_checksum.h>
- #include <asm/unaligned.h>
-
-+#include <net/ip.h>
- #include <net/tcp.h>
-
- #include <linux/netfilter.h>
-@@ -53,6 +55,11 @@ static int nf_ct_tcp_max_retrans __read_
- /* FIXME: Examine ipfilter's timeouts and conntrack transitions more
- closely. They're more complex. --RR */
-
-+#ifndef IPV4_DEVCONF_DFLT
-+ #define IPV4_DEVCONF_DFLT(net, attr) \
-+ IPV4_DEVCONF((*net->ipv4.devconf_dflt), attr)
-+#endif
-+
- static const char *const tcp_conntrack_names[] = {
- "NONE",
- "SYN_SENT",
-@@ -519,6 +526,18 @@ static bool tcp_in_window(const struct n
- if (nf_ct_tcp_no_window_check)
- return true;
-
-+ if (net) {
-+ if ((net->ipv4.devconf_all && net->ipv4.devconf_dflt && net->ipv6.devconf_all) &&
-+ net->ipv6.devconf_dflt) {
-+ if ((IPV4_DEVCONF_DFLT(net, FORWARDING) ||
-+ IPV4_DEVCONF_ALL(net, FORWARDING)) ||
-+ (net->ipv6.devconf_all->forwarding ||
-+ net->ipv6.devconf_dflt->forwarding)) {
-+ return true;
-+ }
-+ }
-+ }
-+
- /*
- * Get the required data from the packet.
- */