aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Lezcano <dlezcano@fr.ibm.com>2008-01-18 06:56:57 -0500
committerDavid S. Miller <davem@davemloft.net>2008-01-28 18:02:46 -0500
commit569d36452ee26c08523cc9f658901c5188640853 (patch)
treef296ea41b92f655031f9345d3febd8319e5a06ee
parenta6501e080c318f8d4467679d17807f42b3a33cd5 (diff)
[NETNS][DST] dst: pass the dst_ops as parameter to the gc functions
The garbage collection function receive the dst_ops structure as parameter. This is useful for the next incoming patchset because it will need the dst_ops (there will be several instances) and the network namespace pointer (contained in the dst_ops). The protocols which do not take care of the namespaces will not be impacted by this change (expect for the function signature), they do just ignore the parameter. Signed-off-by: Daniel Lezcano <dlezcano@fr.ibm.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--include/net/dst.h2
-rw-r--r--net/core/dst.c2
-rw-r--r--net/decnet/dn_route.c4
-rw-r--r--net/ipv4/route.c6
-rw-r--r--net/ipv4/xfrm4_policy.c2
-rw-r--r--net/ipv6/route.c4
-rw-r--r--net/ipv6/xfrm6_policy.c2
7 files changed, 11 insertions, 11 deletions
diff --git a/include/net/dst.h b/include/net/dst.h
index e03ea0c04e01..e24a41644c00 100644
--- a/include/net/dst.h
+++ b/include/net/dst.h
@@ -89,7 +89,7 @@ struct dst_ops
89 __be16 protocol; 89 __be16 protocol;
90 unsigned gc_thresh; 90 unsigned gc_thresh;
91 91
92 int (*gc)(void); 92 int (*gc)(struct dst_ops *ops);
93 struct dst_entry * (*check)(struct dst_entry *, __u32 cookie); 93 struct dst_entry * (*check)(struct dst_entry *, __u32 cookie);
94 void (*destroy)(struct dst_entry *); 94 void (*destroy)(struct dst_entry *);
95 void (*ifdown)(struct dst_entry *, 95 void (*ifdown)(struct dst_entry *,
diff --git a/net/core/dst.c b/net/core/dst.c
index 7eceebaabaaa..7deef483c79f 100644
--- a/net/core/dst.c
+++ b/net/core/dst.c
@@ -165,7 +165,7 @@ void * dst_alloc(struct dst_ops * ops)
165 struct dst_entry * dst; 165 struct dst_entry * dst;
166 166
167 if (ops->gc && atomic_read(&ops->entries) > ops->gc_thresh) { 167 if (ops->gc && atomic_read(&ops->entries) > ops->gc_thresh) {
168 if (ops->gc()) 168 if (ops->gc(ops))
169 return NULL; 169 return NULL;
170 } 170 }
171 dst = kmem_cache_zalloc(ops->kmem_cachep, GFP_ATOMIC); 171 dst = kmem_cache_zalloc(ops->kmem_cachep, GFP_ATOMIC);
diff --git a/net/decnet/dn_route.c b/net/decnet/dn_route.c
index 938ba7da217c..31be29b8b5a3 100644
--- a/net/decnet/dn_route.c
+++ b/net/decnet/dn_route.c
@@ -107,7 +107,7 @@ static const int dn_rt_mtu_expires = 10 * 60 * HZ;
107 107
108static unsigned long dn_rt_deadline; 108static unsigned long dn_rt_deadline;
109 109
110static int dn_dst_gc(void); 110static int dn_dst_gc(struct dst_ops *ops);
111static struct dst_entry *dn_dst_check(struct dst_entry *, __u32); 111static struct dst_entry *dn_dst_check(struct dst_entry *, __u32);
112static struct dst_entry *dn_dst_negative_advice(struct dst_entry *); 112static struct dst_entry *dn_dst_negative_advice(struct dst_entry *);
113static void dn_dst_link_failure(struct sk_buff *); 113static void dn_dst_link_failure(struct sk_buff *);
@@ -185,7 +185,7 @@ static void dn_dst_check_expire(unsigned long dummy)
185 mod_timer(&dn_route_timer, now + decnet_dst_gc_interval * HZ); 185 mod_timer(&dn_route_timer, now + decnet_dst_gc_interval * HZ);
186} 186}
187 187
188static int dn_dst_gc(void) 188static int dn_dst_gc(struct dst_ops *ops)
189{ 189{
190 struct dn_route *rt, **rtp; 190 struct dn_route *rt, **rtp;
191 int i; 191 int i;
diff --git a/net/ipv4/route.c b/net/ipv4/route.c
index 1e59c0d4b11e..fc0145385e80 100644
--- a/net/ipv4/route.c
+++ b/net/ipv4/route.c
@@ -154,7 +154,7 @@ static void ipv4_dst_ifdown(struct dst_entry *dst,
154static struct dst_entry *ipv4_negative_advice(struct dst_entry *dst); 154static struct dst_entry *ipv4_negative_advice(struct dst_entry *dst);
155static void ipv4_link_failure(struct sk_buff *skb); 155static void ipv4_link_failure(struct sk_buff *skb);
156static void ip_rt_update_pmtu(struct dst_entry *dst, u32 mtu); 156static void ip_rt_update_pmtu(struct dst_entry *dst, u32 mtu);
157static int rt_garbage_collect(void); 157static int rt_garbage_collect(struct dst_ops *ops);
158 158
159 159
160static struct dst_ops ipv4_dst_ops = { 160static struct dst_ops ipv4_dst_ops = {
@@ -820,7 +820,7 @@ static void rt_secret_rebuild(unsigned long dummy)
820 and when load increases it reduces to limit cache size. 820 and when load increases it reduces to limit cache size.
821 */ 821 */
822 822
823static int rt_garbage_collect(void) 823static int rt_garbage_collect(struct dst_ops *ops)
824{ 824{
825 static unsigned long expire = RT_GC_TIMEOUT; 825 static unsigned long expire = RT_GC_TIMEOUT;
826 static unsigned long last_gc; 826 static unsigned long last_gc;
@@ -1035,7 +1035,7 @@ restart:
1035 int saved_int = ip_rt_gc_min_interval; 1035 int saved_int = ip_rt_gc_min_interval;
1036 ip_rt_gc_elasticity = 1; 1036 ip_rt_gc_elasticity = 1;
1037 ip_rt_gc_min_interval = 0; 1037 ip_rt_gc_min_interval = 0;
1038 rt_garbage_collect(); 1038 rt_garbage_collect(&ipv4_dst_ops);
1039 ip_rt_gc_min_interval = saved_int; 1039 ip_rt_gc_min_interval = saved_int;
1040 ip_rt_gc_elasticity = saved_elasticity; 1040 ip_rt_gc_elasticity = saved_elasticity;
1041 goto restart; 1041 goto restart;
diff --git a/net/ipv4/xfrm4_policy.c b/net/ipv4/xfrm4_policy.c
index 656345f75e0d..f04516c880fb 100644
--- a/net/ipv4/xfrm4_policy.c
+++ b/net/ipv4/xfrm4_policy.c
@@ -185,7 +185,7 @@ _decode_session4(struct sk_buff *skb, struct flowi *fl, int reverse)
185 fl->fl4_tos = iph->tos; 185 fl->fl4_tos = iph->tos;
186} 186}
187 187
188static inline int xfrm4_garbage_collect(void) 188static inline int xfrm4_garbage_collect(struct dst_ops *ops)
189{ 189{
190 xfrm4_policy_afinfo.garbage_collect(); 190 xfrm4_policy_afinfo.garbage_collect();
191 return (atomic_read(&xfrm4_dst_ops.entries) > xfrm4_dst_ops.gc_thresh*2); 191 return (atomic_read(&xfrm4_dst_ops.entries) > xfrm4_dst_ops.gc_thresh*2);
diff --git a/net/ipv6/route.c b/net/ipv6/route.c
index a429900d16aa..4004c5f0b8d7 100644
--- a/net/ipv6/route.c
+++ b/net/ipv6/route.c
@@ -79,7 +79,7 @@ static struct dst_entry *ip6_negative_advice(struct dst_entry *);
79static void ip6_dst_destroy(struct dst_entry *); 79static void ip6_dst_destroy(struct dst_entry *);
80static void ip6_dst_ifdown(struct dst_entry *, 80static void ip6_dst_ifdown(struct dst_entry *,
81 struct net_device *dev, int how); 81 struct net_device *dev, int how);
82static int ip6_dst_gc(void); 82static int ip6_dst_gc(struct dst_ops *ops);
83 83
84static int ip6_pkt_discard(struct sk_buff *skb); 84static int ip6_pkt_discard(struct sk_buff *skb);
85static int ip6_pkt_discard_out(struct sk_buff *skb); 85static int ip6_pkt_discard_out(struct sk_buff *skb);
@@ -983,7 +983,7 @@ int ndisc_dst_gc(int *more)
983 return freed; 983 return freed;
984} 984}
985 985
986static int ip6_dst_gc(void) 986static int ip6_dst_gc(struct dst_ops *ops)
987{ 987{
988 static unsigned expire = 30*HZ; 988 static unsigned expire = 30*HZ;
989 static unsigned long last_gc; 989 static unsigned long last_gc;
diff --git a/net/ipv6/xfrm6_policy.c b/net/ipv6/xfrm6_policy.c
index cf373b46a1ba..c25a6b527fc4 100644
--- a/net/ipv6/xfrm6_policy.c
+++ b/net/ipv6/xfrm6_policy.c
@@ -212,7 +212,7 @@ _decode_session6(struct sk_buff *skb, struct flowi *fl, int reverse)
212 } 212 }
213} 213}
214 214
215static inline int xfrm6_garbage_collect(void) 215static inline int xfrm6_garbage_collect(struct dst_ops *ops)
216{ 216{
217 xfrm6_policy_afinfo.garbage_collect(); 217 xfrm6_policy_afinfo.garbage_collect();
218 return (atomic_read(&xfrm6_dst_ops.entries) > xfrm6_dst_ops.gc_thresh*2); 218 return (atomic_read(&xfrm6_dst_ops.entries) > xfrm6_dst_ops.gc_thresh*2);