]> Pileus Git - ~andy/linux/blobdiff - include/net/ip_tunnels.h
Merge branch 'nfsd-next' of git://linux-nfs.org/~bfields/linux
[~andy/linux] / include / net / ip_tunnels.h
index 732f8c6ae975877ccd9c5873369f9be6490f06e9..e77c10405d515da16071461fe9f7385d8ac08556 100644 (file)
@@ -38,6 +38,10 @@ struct ip_tunnel_prl_entry {
        struct rcu_head                 rcu_head;
 };
 
+struct ip_tunnel_dst {
+       struct dst_entry __rcu          *dst;
+};
+
 struct ip_tunnel {
        struct ip_tunnel __rcu  *next;
        struct hlist_node hash_node;
@@ -54,6 +58,8 @@ struct ip_tunnel {
        int             hlen;           /* Precalculated header length */
        int             mlink;
 
+       struct ip_tunnel_dst __percpu *dst_cache;
+
        struct ip_tunnel_parm parms;
 
        /* for SIT */
@@ -123,6 +129,7 @@ int ip_tunnel_changelink(struct net_device *dev, struct nlattr *tb[],
 int ip_tunnel_newlink(struct net_device *dev, struct nlattr *tb[],
                      struct ip_tunnel_parm *p);
 void ip_tunnel_setup(struct net_device *dev, int net_id);
+void ip_tunnel_dst_reset_all(struct ip_tunnel *t);
 
 /* Extract dsfield from inner protocol */
 static inline u8 ip_tunnel_get_dsfield(const struct iphdr *iph,
@@ -155,10 +162,10 @@ struct sk_buff *iptunnel_handle_offloads(struct sk_buff *skb, bool gre_csum,
 
 static inline void iptunnel_xmit_stats(int err,
                                       struct net_device_stats *err_stats,
-                                      struct pcpu_tstats __percpu *stats)
+                                      struct pcpu_sw_netstats __percpu *stats)
 {
        if (err > 0) {
-               struct pcpu_tstats *tstats = this_cpu_ptr(stats);
+               struct pcpu_sw_netstats *tstats = this_cpu_ptr(stats);
 
                u64_stats_update_begin(&tstats->syncp);
                tstats->tx_bytes += err;