diff options
author | Daniel Lezcano <dlezcano@fr.ibm.com> | 2008-01-18 06:56:57 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-01-28 18:02:46 -0500 |
commit | 569d36452ee26c08523cc9f658901c5188640853 (patch) | |
tree | f296ea41b92f655031f9345d3febd8319e5a06ee | |
parent | a6501e080c318f8d4467679d17807f42b3a33cd5 (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.h | 2 | ||||
-rw-r--r-- | net/core/dst.c | 2 | ||||
-rw-r--r-- | net/decnet/dn_route.c | 4 | ||||
-rw-r--r-- | net/ipv4/route.c | 6 | ||||
-rw-r--r-- | net/ipv4/xfrm4_policy.c | 2 | ||||
-rw-r--r-- | net/ipv6/route.c | 4 | ||||
-rw-r--r-- | net/ipv6/xfrm6_policy.c | 2 |
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 | ||
108 | static unsigned long dn_rt_deadline; | 108 | static unsigned long dn_rt_deadline; |
109 | 109 | ||
110 | static int dn_dst_gc(void); | 110 | static int dn_dst_gc(struct dst_ops *ops); |
111 | static struct dst_entry *dn_dst_check(struct dst_entry *, __u32); | 111 | static struct dst_entry *dn_dst_check(struct dst_entry *, __u32); |
112 | static struct dst_entry *dn_dst_negative_advice(struct dst_entry *); | 112 | static struct dst_entry *dn_dst_negative_advice(struct dst_entry *); |
113 | static void dn_dst_link_failure(struct sk_buff *); | 113 | static 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 | ||
188 | static int dn_dst_gc(void) | 188 | static 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, | |||
154 | static struct dst_entry *ipv4_negative_advice(struct dst_entry *dst); | 154 | static struct dst_entry *ipv4_negative_advice(struct dst_entry *dst); |
155 | static void ipv4_link_failure(struct sk_buff *skb); | 155 | static void ipv4_link_failure(struct sk_buff *skb); |
156 | static void ip_rt_update_pmtu(struct dst_entry *dst, u32 mtu); | 156 | static void ip_rt_update_pmtu(struct dst_entry *dst, u32 mtu); |
157 | static int rt_garbage_collect(void); | 157 | static int rt_garbage_collect(struct dst_ops *ops); |
158 | 158 | ||
159 | 159 | ||
160 | static struct dst_ops ipv4_dst_ops = { | 160 | static 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 | ||
823 | static int rt_garbage_collect(void) | 823 | static 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 | ||
188 | static inline int xfrm4_garbage_collect(void) | 188 | static 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 *); | |||
79 | static void ip6_dst_destroy(struct dst_entry *); | 79 | static void ip6_dst_destroy(struct dst_entry *); |
80 | static void ip6_dst_ifdown(struct dst_entry *, | 80 | static void ip6_dst_ifdown(struct dst_entry *, |
81 | struct net_device *dev, int how); | 81 | struct net_device *dev, int how); |
82 | static int ip6_dst_gc(void); | 82 | static int ip6_dst_gc(struct dst_ops *ops); |
83 | 83 | ||
84 | static int ip6_pkt_discard(struct sk_buff *skb); | 84 | static int ip6_pkt_discard(struct sk_buff *skb); |
85 | static int ip6_pkt_discard_out(struct sk_buff *skb); | 85 | static 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 | ||
986 | static int ip6_dst_gc(void) | 986 | static 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 | ||
215 | static inline int xfrm6_garbage_collect(void) | 215 | static 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); |