Commit e086cadc authored by Amerigo Wang's avatar Amerigo Wang Committed by David S. Miller

net: unify for_each_ip_tunnel_rcu()

The defitions of for_each_ip_tunnel_rcu() are same,
so unify it. Also, don't hide the parameter 't'.

Cc: David S. Miller <davem@davemloft.net>
Signed-off-by: default avatarCong Wang <amwang@redhat.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent aa0010f8
...@@ -6,6 +6,13 @@ ...@@ -6,6 +6,13 @@
#include <uapi/linux/if_tunnel.h> #include <uapi/linux/if_tunnel.h>
#include <linux/u64_stats_sync.h> #include <linux/u64_stats_sync.h>
/*
* Locking : hash tables are protected by RCU and RTNL
*/
#define for_each_ip_tunnel_rcu(pos, start) \
for (pos = rcu_dereference(start); pos; pos = rcu_dereference(pos->next))
/* often modified stats are per cpu, other are shared (netdev->stats) */ /* often modified stats are per cpu, other are shared (netdev->stats) */
struct pcpu_tstats { struct pcpu_tstats {
u64 rx_packets; u64 rx_packets;
......
...@@ -164,12 +164,6 @@ struct ipgre_net { ...@@ -164,12 +164,6 @@ struct ipgre_net {
#define tunnels_r tunnels[2] #define tunnels_r tunnels[2]
#define tunnels_l tunnels[1] #define tunnels_l tunnels[1]
#define tunnels_wc tunnels[0] #define tunnels_wc tunnels[0]
/*
* Locking : hash tables are protected by RCU and RTNL
*/
#define for_each_ip_tunnel_rcu(start) \
for (t = rcu_dereference(start); t; t = rcu_dereference(t->next))
static struct rtnl_link_stats64 *ipgre_get_stats64(struct net_device *dev, static struct rtnl_link_stats64 *ipgre_get_stats64(struct net_device *dev,
struct rtnl_link_stats64 *tot) struct rtnl_link_stats64 *tot)
...@@ -241,7 +235,7 @@ static struct ip_tunnel *ipgre_tunnel_lookup(struct net_device *dev, ...@@ -241,7 +235,7 @@ static struct ip_tunnel *ipgre_tunnel_lookup(struct net_device *dev,
ARPHRD_ETHER : ARPHRD_IPGRE; ARPHRD_ETHER : ARPHRD_IPGRE;
int score, cand_score = 4; int score, cand_score = 4;
for_each_ip_tunnel_rcu(ign->tunnels_r_l[h0 ^ h1]) { for_each_ip_tunnel_rcu(t, ign->tunnels_r_l[h0 ^ h1]) {
if (local != t->parms.iph.saddr || if (local != t->parms.iph.saddr ||
remote != t->parms.iph.daddr || remote != t->parms.iph.daddr ||
!(t->dev->flags & IFF_UP)) !(t->dev->flags & IFF_UP))
...@@ -268,7 +262,7 @@ static struct ip_tunnel *ipgre_tunnel_lookup(struct net_device *dev, ...@@ -268,7 +262,7 @@ static struct ip_tunnel *ipgre_tunnel_lookup(struct net_device *dev,
} }
} }
for_each_ip_tunnel_rcu(ign->tunnels_r[h0 ^ h1]) { for_each_ip_tunnel_rcu(t, ign->tunnels_r[h0 ^ h1]) {
if (remote != t->parms.iph.daddr || if (remote != t->parms.iph.daddr ||
!(t->dev->flags & IFF_UP)) !(t->dev->flags & IFF_UP))
continue; continue;
...@@ -294,7 +288,7 @@ static struct ip_tunnel *ipgre_tunnel_lookup(struct net_device *dev, ...@@ -294,7 +288,7 @@ static struct ip_tunnel *ipgre_tunnel_lookup(struct net_device *dev,
} }
} }
for_each_ip_tunnel_rcu(ign->tunnels_l[h1]) { for_each_ip_tunnel_rcu(t, ign->tunnels_l[h1]) {
if ((local != t->parms.iph.saddr && if ((local != t->parms.iph.saddr &&
(local != t->parms.iph.daddr || (local != t->parms.iph.daddr ||
!ipv4_is_multicast(local))) || !ipv4_is_multicast(local))) ||
...@@ -322,7 +316,7 @@ static struct ip_tunnel *ipgre_tunnel_lookup(struct net_device *dev, ...@@ -322,7 +316,7 @@ static struct ip_tunnel *ipgre_tunnel_lookup(struct net_device *dev,
} }
} }
for_each_ip_tunnel_rcu(ign->tunnels_wc[h1]) { for_each_ip_tunnel_rcu(t, ign->tunnels_wc[h1]) {
if (t->parms.i_key != key || if (t->parms.i_key != key ||
!(t->dev->flags & IFF_UP)) !(t->dev->flags & IFF_UP))
continue; continue;
......
...@@ -66,11 +66,6 @@ static void vti_tunnel_setup(struct net_device *dev); ...@@ -66,11 +66,6 @@ static void vti_tunnel_setup(struct net_device *dev);
static void vti_dev_free(struct net_device *dev); static void vti_dev_free(struct net_device *dev);
static int vti_tunnel_bind_dev(struct net_device *dev); static int vti_tunnel_bind_dev(struct net_device *dev);
/* Locking : hash tables are protected by RCU and RTNL */
#define for_each_ip_tunnel_rcu(start) \
for (t = rcu_dereference(start); t; t = rcu_dereference(t->next))
#define VTI_XMIT(stats1, stats2) do { \ #define VTI_XMIT(stats1, stats2) do { \
int err; \ int err; \
int pkt_len = skb->len; \ int pkt_len = skb->len; \
...@@ -133,19 +128,19 @@ static struct ip_tunnel *vti_tunnel_lookup(struct net *net, ...@@ -133,19 +128,19 @@ static struct ip_tunnel *vti_tunnel_lookup(struct net *net,
struct ip_tunnel *t; struct ip_tunnel *t;
struct vti_net *ipn = net_generic(net, vti_net_id); struct vti_net *ipn = net_generic(net, vti_net_id);
for_each_ip_tunnel_rcu(ipn->tunnels_r_l[h0 ^ h1]) for_each_ip_tunnel_rcu(t, ipn->tunnels_r_l[h0 ^ h1])
if (local == t->parms.iph.saddr && if (local == t->parms.iph.saddr &&
remote == t->parms.iph.daddr && (t->dev->flags&IFF_UP)) remote == t->parms.iph.daddr && (t->dev->flags&IFF_UP))
return t; return t;
for_each_ip_tunnel_rcu(ipn->tunnels_r[h0]) for_each_ip_tunnel_rcu(t, ipn->tunnels_r[h0])
if (remote == t->parms.iph.daddr && (t->dev->flags&IFF_UP)) if (remote == t->parms.iph.daddr && (t->dev->flags&IFF_UP))
return t; return t;
for_each_ip_tunnel_rcu(ipn->tunnels_l[h1]) for_each_ip_tunnel_rcu(t, ipn->tunnels_l[h1])
if (local == t->parms.iph.saddr && (t->dev->flags&IFF_UP)) if (local == t->parms.iph.saddr && (t->dev->flags&IFF_UP))
return t; return t;
for_each_ip_tunnel_rcu(ipn->tunnels_wc[0]) for_each_ip_tunnel_rcu(t, ipn->tunnels_wc[0])
if (t && (t->dev->flags&IFF_UP)) if (t && (t->dev->flags&IFF_UP))
return t; return t;
return NULL; return NULL;
......
...@@ -140,13 +140,6 @@ static void ipip_tunnel_setup(struct net_device *dev); ...@@ -140,13 +140,6 @@ static void ipip_tunnel_setup(struct net_device *dev);
static void ipip_dev_free(struct net_device *dev); static void ipip_dev_free(struct net_device *dev);
static struct rtnl_link_ops ipip_link_ops __read_mostly; static struct rtnl_link_ops ipip_link_ops __read_mostly;
/*
* Locking : hash tables are protected by RCU and RTNL
*/
#define for_each_ip_tunnel_rcu(start) \
for (t = rcu_dereference(start); t; t = rcu_dereference(t->next))
static struct rtnl_link_stats64 *ipip_get_stats64(struct net_device *dev, static struct rtnl_link_stats64 *ipip_get_stats64(struct net_device *dev,
struct rtnl_link_stats64 *tot) struct rtnl_link_stats64 *tot)
{ {
...@@ -189,16 +182,16 @@ static struct ip_tunnel *ipip_tunnel_lookup(struct net *net, ...@@ -189,16 +182,16 @@ static struct ip_tunnel *ipip_tunnel_lookup(struct net *net,
struct ip_tunnel *t; struct ip_tunnel *t;
struct ipip_net *ipn = net_generic(net, ipip_net_id); struct ipip_net *ipn = net_generic(net, ipip_net_id);
for_each_ip_tunnel_rcu(ipn->tunnels_r_l[h0 ^ h1]) for_each_ip_tunnel_rcu(t, ipn->tunnels_r_l[h0 ^ h1])
if (local == t->parms.iph.saddr && if (local == t->parms.iph.saddr &&
remote == t->parms.iph.daddr && (t->dev->flags&IFF_UP)) remote == t->parms.iph.daddr && (t->dev->flags&IFF_UP))
return t; return t;
for_each_ip_tunnel_rcu(ipn->tunnels_r[h0]) for_each_ip_tunnel_rcu(t, ipn->tunnels_r[h0])
if (remote == t->parms.iph.daddr && (t->dev->flags&IFF_UP)) if (remote == t->parms.iph.daddr && (t->dev->flags&IFF_UP))
return t; return t;
for_each_ip_tunnel_rcu(ipn->tunnels_l[h1]) for_each_ip_tunnel_rcu(t, ipn->tunnels_l[h1])
if (local == t->parms.iph.saddr && (t->dev->flags&IFF_UP)) if (local == t->parms.iph.saddr && (t->dev->flags&IFF_UP))
return t; return t;
......
...@@ -109,12 +109,6 @@ static u32 HASH_ADDR(const struct in6_addr *addr) ...@@ -109,12 +109,6 @@ static u32 HASH_ADDR(const struct in6_addr *addr)
#define tunnels_r tunnels[2] #define tunnels_r tunnels[2]
#define tunnels_l tunnels[1] #define tunnels_l tunnels[1]
#define tunnels_wc tunnels[0] #define tunnels_wc tunnels[0]
/*
* Locking : hash tables are protected by RCU and RTNL
*/
#define for_each_ip_tunnel_rcu(start) \
for (t = rcu_dereference(start); t; t = rcu_dereference(t->next))
static struct rtnl_link_stats64 *ip6gre_get_stats64(struct net_device *dev, static struct rtnl_link_stats64 *ip6gre_get_stats64(struct net_device *dev,
struct rtnl_link_stats64 *tot) struct rtnl_link_stats64 *tot)
...@@ -172,7 +166,7 @@ static struct ip6_tnl *ip6gre_tunnel_lookup(struct net_device *dev, ...@@ -172,7 +166,7 @@ static struct ip6_tnl *ip6gre_tunnel_lookup(struct net_device *dev,
ARPHRD_ETHER : ARPHRD_IP6GRE; ARPHRD_ETHER : ARPHRD_IP6GRE;
int score, cand_score = 4; int score, cand_score = 4;
for_each_ip_tunnel_rcu(ign->tunnels_r_l[h0 ^ h1]) { for_each_ip_tunnel_rcu(t, ign->tunnels_r_l[h0 ^ h1]) {
if (!ipv6_addr_equal(local, &t->parms.laddr) || if (!ipv6_addr_equal(local, &t->parms.laddr) ||
!ipv6_addr_equal(remote, &t->parms.raddr) || !ipv6_addr_equal(remote, &t->parms.raddr) ||
key != t->parms.i_key || key != t->parms.i_key ||
...@@ -197,7 +191,7 @@ static struct ip6_tnl *ip6gre_tunnel_lookup(struct net_device *dev, ...@@ -197,7 +191,7 @@ static struct ip6_tnl *ip6gre_tunnel_lookup(struct net_device *dev,
} }
} }
for_each_ip_tunnel_rcu(ign->tunnels_r[h0 ^ h1]) { for_each_ip_tunnel_rcu(t, ign->tunnels_r[h0 ^ h1]) {
if (!ipv6_addr_equal(remote, &t->parms.raddr) || if (!ipv6_addr_equal(remote, &t->parms.raddr) ||
key != t->parms.i_key || key != t->parms.i_key ||
!(t->dev->flags & IFF_UP)) !(t->dev->flags & IFF_UP))
...@@ -221,7 +215,7 @@ static struct ip6_tnl *ip6gre_tunnel_lookup(struct net_device *dev, ...@@ -221,7 +215,7 @@ static struct ip6_tnl *ip6gre_tunnel_lookup(struct net_device *dev,
} }
} }
for_each_ip_tunnel_rcu(ign->tunnels_l[h1]) { for_each_ip_tunnel_rcu(t, ign->tunnels_l[h1]) {
if ((!ipv6_addr_equal(local, &t->parms.laddr) && if ((!ipv6_addr_equal(local, &t->parms.laddr) &&
(!ipv6_addr_equal(local, &t->parms.raddr) || (!ipv6_addr_equal(local, &t->parms.raddr) ||
!ipv6_addr_is_multicast(local))) || !ipv6_addr_is_multicast(local))) ||
...@@ -247,7 +241,7 @@ static struct ip6_tnl *ip6gre_tunnel_lookup(struct net_device *dev, ...@@ -247,7 +241,7 @@ static struct ip6_tnl *ip6gre_tunnel_lookup(struct net_device *dev,
} }
} }
for_each_ip_tunnel_rcu(ign->tunnels_wc[h1]) { for_each_ip_tunnel_rcu(t, ign->tunnels_wc[h1]) {
if (t->parms.i_key != key || if (t->parms.i_key != key ||
!(t->dev->flags & IFF_UP)) !(t->dev->flags & IFF_UP))
continue; continue;
......
...@@ -81,13 +81,6 @@ struct sit_net { ...@@ -81,13 +81,6 @@ struct sit_net {
struct net_device *fb_tunnel_dev; struct net_device *fb_tunnel_dev;
}; };
/*
* Locking : hash tables are protected by RCU and RTNL
*/
#define for_each_ip_tunnel_rcu(start) \
for (t = rcu_dereference(start); t; t = rcu_dereference(t->next))
static struct rtnl_link_stats64 *ipip6_get_stats64(struct net_device *dev, static struct rtnl_link_stats64 *ipip6_get_stats64(struct net_device *dev,
struct rtnl_link_stats64 *tot) struct rtnl_link_stats64 *tot)
{ {
...@@ -133,20 +126,20 @@ static struct ip_tunnel *ipip6_tunnel_lookup(struct net *net, ...@@ -133,20 +126,20 @@ static struct ip_tunnel *ipip6_tunnel_lookup(struct net *net,
struct ip_tunnel *t; struct ip_tunnel *t;
struct sit_net *sitn = net_generic(net, sit_net_id); struct sit_net *sitn = net_generic(net, sit_net_id);
for_each_ip_tunnel_rcu(sitn->tunnels_r_l[h0 ^ h1]) { for_each_ip_tunnel_rcu(t, sitn->tunnels_r_l[h0 ^ h1]) {
if (local == t->parms.iph.saddr && if (local == t->parms.iph.saddr &&
remote == t->parms.iph.daddr && remote == t->parms.iph.daddr &&
(!dev || !t->parms.link || dev->iflink == t->parms.link) && (!dev || !t->parms.link || dev->iflink == t->parms.link) &&
(t->dev->flags & IFF_UP)) (t->dev->flags & IFF_UP))
return t; return t;
} }
for_each_ip_tunnel_rcu(sitn->tunnels_r[h0]) { for_each_ip_tunnel_rcu(t, sitn->tunnels_r[h0]) {
if (remote == t->parms.iph.daddr && if (remote == t->parms.iph.daddr &&
(!dev || !t->parms.link || dev->iflink == t->parms.link) && (!dev || !t->parms.link || dev->iflink == t->parms.link) &&
(t->dev->flags & IFF_UP)) (t->dev->flags & IFF_UP))
return t; return t;
} }
for_each_ip_tunnel_rcu(sitn->tunnels_l[h1]) { for_each_ip_tunnel_rcu(t, sitn->tunnels_l[h1]) {
if (local == t->parms.iph.saddr && if (local == t->parms.iph.saddr &&
(!dev || !t->parms.link || dev->iflink == t->parms.link) && (!dev || !t->parms.link || dev->iflink == t->parms.link) &&
(t->dev->flags & IFF_UP)) (t->dev->flags & IFF_UP))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment