add DS-Lite offloading
This commit is contained in:
@@ -211,6 +211,22 @@ ECM_MAKE_OPTS+=ECM_INTERFACE_OVS_BRIDGE_ENABLE=y \
|
||||
EXTRA_CFLAGS+= -I$(STAGING_DIR)/usr/include/qca-ovsmgr
|
||||
endif
|
||||
|
||||
ifneq ($(CONFIG_PACKAGE_kmod-ipsec),)
|
||||
ECM_MAKE_OPTS+=ECM_INTERFACE_IPSEC_ENABLE=y
|
||||
endif
|
||||
|
||||
ifneq ($(CONFIG_PACKAGE_kmod-pppol2tp),)
|
||||
ECM_MAKE_OPTS+=ECM_INTERFACE_L2TPV2_ENABLE=y
|
||||
endif
|
||||
|
||||
ifneq ($(CONFIG_PACKAGE_kmod-sit),)
|
||||
ECM_MAKE_OPTS+=ECM_INTERFACE_SIT_ENABLE=y
|
||||
endif
|
||||
|
||||
ifneq ($(CONFIG_PACKAGE_kmod-ip6-tunnel),)
|
||||
ECM_MAKE_OPTS+=ECM_INTERFACE_TUNIPIP6_ENABLE=y
|
||||
endif
|
||||
|
||||
# Keeping default as ipq806x for branches that does not have subtarget framework
|
||||
ifeq ($(CONFIG_TARGET_ipq),y)
|
||||
subtarget:=$(SUBTARGET)
|
||||
|
||||
@@ -0,0 +1,77 @@
|
||||
--- a/include/net/ip6_tunnel.h
|
||||
+++ b/include/net/ip6_tunnel.h
|
||||
@@ -36,6 +36,7 @@ struct __ip6_tnl_parm {
|
||||
__u8 proto; /* tunnel protocol */
|
||||
__u8 encap_limit; /* encapsulation limit for tunnel */
|
||||
__u8 hop_limit; /* hop limit for tunnel */
|
||||
+ __u8 draft03; /* FMR using draft03 of map-e - QCA NSS Clients Support */
|
||||
bool collect_md;
|
||||
__be32 flowinfo; /* traffic class and flowlabel for tunnel */
|
||||
__u32 flags; /* tunnel flags */
|
||||
--- a/include/net/ip_tunnels.h
|
||||
+++ b/include/net/ip_tunnels.h
|
||||
@@ -525,4 +525,9 @@ static inline void ip_tunnel_info_opts_s
|
||||
|
||||
#endif /* CONFIG_INET */
|
||||
|
||||
+/* QCA NSS Clients Support - Start */
|
||||
+void ipip6_update_offload_stats(struct net_device *dev, void *ptr);
|
||||
+void ip6_update_offload_stats(struct net_device *dev, void *ptr);
|
||||
+/* QCA NSS Clients Support - End */
|
||||
+
|
||||
#endif /* __NET_IP_TUNNELS_H */
|
||||
--- a/net/ipv6/ip6_tunnel.c
|
||||
+++ b/net/ipv6/ip6_tunnel.c
|
||||
@@ -2392,6 +2392,26 @@ nla_put_failure:
|
||||
return -EMSGSIZE;
|
||||
}
|
||||
|
||||
+/* QCA NSS Client Support - Start */
|
||||
+/*
|
||||
+ * Update offload stats
|
||||
+ */
|
||||
+void ip6_update_offload_stats(struct net_device *dev, void *ptr)
|
||||
+{
|
||||
+ struct pcpu_sw_netstats *tstats = per_cpu_ptr(dev->tstats, 0);
|
||||
+ const struct pcpu_sw_netstats *offload_stats =
|
||||
+ (struct pcpu_sw_netstats *)ptr;
|
||||
+
|
||||
+ u64_stats_update_begin(&tstats->syncp);
|
||||
+ tstats->tx_packets += offload_stats->tx_packets;
|
||||
+ tstats->tx_bytes += offload_stats->tx_bytes;
|
||||
+ tstats->rx_packets += offload_stats->rx_packets;
|
||||
+ tstats->rx_bytes += offload_stats->rx_bytes;
|
||||
+ u64_stats_update_end(&tstats->syncp);
|
||||
+}
|
||||
+EXPORT_SYMBOL(ip6_update_offload_stats);
|
||||
+/* QCA NSS Client Support - End */
|
||||
+
|
||||
struct net *ip6_tnl_get_link_net(const struct net_device *dev)
|
||||
{
|
||||
struct ip6_tnl *tunnel = netdev_priv(dev);
|
||||
--- a/net/ipv6/sit.c
|
||||
+++ b/net/ipv6/sit.c
|
||||
@@ -1741,6 +1741,23 @@ nla_put_failure:
|
||||
return -EMSGSIZE;
|
||||
}
|
||||
|
||||
+/* QCA NSS Clients Support - Start */
|
||||
+void ipip6_update_offload_stats(struct net_device *dev, void *ptr)
|
||||
+{
|
||||
+ struct pcpu_sw_netstats *tstats = per_cpu_ptr(dev->tstats, 0);
|
||||
+ const struct pcpu_sw_netstats *offload_stats =
|
||||
+ (struct pcpu_sw_netstats *)ptr;
|
||||
+
|
||||
+ u64_stats_update_begin(&tstats->syncp);
|
||||
+ tstats->tx_packets += offload_stats->tx_packets;
|
||||
+ tstats->tx_bytes += offload_stats->tx_bytes;
|
||||
+ tstats->rx_packets += offload_stats->rx_packets;
|
||||
+ tstats->rx_bytes += offload_stats->rx_bytes;
|
||||
+ u64_stats_update_end(&tstats->syncp);
|
||||
+}
|
||||
+EXPORT_SYMBOL(ipip6_update_offload_stats);
|
||||
+/* QCA NSS Clients Support - End */
|
||||
+
|
||||
static const struct nla_policy ipip6_policy[IFLA_IPTUN_MAX + 1] = {
|
||||
[IFLA_IPTUN_LINK] = { .type = NLA_U32 },
|
||||
[IFLA_IPTUN_LOCAL] = { .type = NLA_U32 },
|
||||
Reference in New Issue
Block a user