* [patch 0/2][NETNS][DST] pass dst_ops to gc functions and add a netns pointer in it
@ 2008-01-16 14:54 Daniel Lezcano
2008-01-16 14:54 ` [patch 1/2][NETNS][DST] dst: pass the dst_ops as parameter to the gc functions Daniel Lezcano
2008-01-16 14:54 ` [patch 2/2][NETNS][DST] add the network namespace pointer in dst_ops Daniel Lezcano
0 siblings, 2 replies; 5+ messages in thread
From: Daniel Lezcano @ 2008-01-16 14:54 UTC (permalink / raw)
To: davem; +Cc: netdev, den, benjamin.thery
The two following patches do trivial changes to facilitate the
implementation of the network namespace in some protocols.
The first one pass the dst_ops as parameter to the gc functions.
The second patch just adds a netns pointer field into the dst_ops
structure.
--
^ permalink raw reply [flat|nested] 5+ messages in thread
* [patch 1/2][NETNS][DST] dst: pass the dst_ops as parameter to the gc functions
2008-01-16 14:54 [patch 0/2][NETNS][DST] pass dst_ops to gc functions and add a netns pointer in it Daniel Lezcano
@ 2008-01-16 14:54 ` Daniel Lezcano
2008-01-18 11:57 ` David Miller
2008-01-16 14:54 ` [patch 2/2][NETNS][DST] add the network namespace pointer in dst_ops Daniel Lezcano
1 sibling, 1 reply; 5+ messages in thread
From: Daniel Lezcano @ 2008-01-16 14:54 UTC (permalink / raw)
To: davem; +Cc: netdev, den, benjamin.thery
[-- Attachment #1: pass-dst-gc-ops-parameter.patch --]
[-- Type: text/plain, Size: 5523 bytes --]
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>
---
include/net/dst.h | 2 +-
net/core/dst.c | 2 +-
net/decnet/dn_route.c | 4 ++--
net/ipv4/route.c | 6 +++---
net/ipv4/xfrm4_policy.c | 2 +-
net/ipv6/route.c | 4 ++--
net/ipv6/xfrm6_policy.c | 2 +-
7 files changed, 11 insertions(+), 11 deletions(-)
Index: net-2.6.25-misc/include/net/dst.h
===================================================================
--- net-2.6.25-misc.orig/include/net/dst.h
+++ net-2.6.25-misc/include/net/dst.h
@@ -89,7 +89,7 @@ struct dst_ops
__be16 protocol;
unsigned gc_thresh;
- int (*gc)(void);
+ int (*gc)(struct dst_ops *ops);
struct dst_entry * (*check)(struct dst_entry *, __u32 cookie);
void (*destroy)(struct dst_entry *);
void (*ifdown)(struct dst_entry *,
Index: net-2.6.25-misc/net/core/dst.c
===================================================================
--- net-2.6.25-misc.orig/net/core/dst.c
+++ net-2.6.25-misc/net/core/dst.c
@@ -165,7 +165,7 @@ void * dst_alloc(struct dst_ops * ops)
struct dst_entry * dst;
if (ops->gc && atomic_read(&ops->entries) > ops->gc_thresh) {
- if (ops->gc())
+ if (ops->gc(ops))
return NULL;
}
dst = kmem_cache_zalloc(ops->kmem_cachep, GFP_ATOMIC);
Index: net-2.6.25-misc/net/decnet/dn_route.c
===================================================================
--- net-2.6.25-misc.orig/net/decnet/dn_route.c
+++ net-2.6.25-misc/net/decnet/dn_route.c
@@ -107,7 +107,7 @@ static const int dn_rt_mtu_expires = 10
static unsigned long dn_rt_deadline;
-static int dn_dst_gc(void);
+static int dn_dst_gc(struct dst_ops *ops);
static struct dst_entry *dn_dst_check(struct dst_entry *, __u32);
static struct dst_entry *dn_dst_negative_advice(struct dst_entry *);
static void dn_dst_link_failure(struct sk_buff *);
@@ -185,7 +185,7 @@ static void dn_dst_check_expire(unsigned
mod_timer(&dn_route_timer, now + decnet_dst_gc_interval * HZ);
}
-static int dn_dst_gc(void)
+static int dn_dst_gc(struct dst_ops *ops)
{
struct dn_route *rt, **rtp;
int i;
Index: net-2.6.25-misc/net/ipv4/route.c
===================================================================
--- net-2.6.25-misc.orig/net/ipv4/route.c
+++ net-2.6.25-misc/net/ipv4/route.c
@@ -154,7 +154,7 @@ static void ipv4_dst_ifdown(struct dst
static struct dst_entry *ipv4_negative_advice(struct dst_entry *dst);
static void ipv4_link_failure(struct sk_buff *skb);
static void ip_rt_update_pmtu(struct dst_entry *dst, u32 mtu);
-static int rt_garbage_collect(void);
+static int rt_garbage_collect(struct dst_ops *ops);
static struct dst_ops ipv4_dst_ops = {
@@ -820,7 +820,7 @@ static void rt_secret_rebuild(unsigned l
and when load increases it reduces to limit cache size.
*/
-static int rt_garbage_collect(void)
+static int rt_garbage_collect(struct dst_ops *ops)
{
static unsigned long expire = RT_GC_TIMEOUT;
static unsigned long last_gc;
@@ -1035,7 +1035,7 @@ restart:
int saved_int = ip_rt_gc_min_interval;
ip_rt_gc_elasticity = 1;
ip_rt_gc_min_interval = 0;
- rt_garbage_collect();
+ rt_garbage_collect(&ipv4_dst_ops);
ip_rt_gc_min_interval = saved_int;
ip_rt_gc_elasticity = saved_elasticity;
goto restart;
Index: net-2.6.25-misc/net/ipv4/xfrm4_policy.c
===================================================================
--- net-2.6.25-misc.orig/net/ipv4/xfrm4_policy.c
+++ net-2.6.25-misc/net/ipv4/xfrm4_policy.c
@@ -185,7 +185,7 @@ _decode_session4(struct sk_buff *skb, st
fl->fl4_tos = iph->tos;
}
-static inline int xfrm4_garbage_collect(void)
+static inline int xfrm4_garbage_collect(struct dst_ops *ops)
{
xfrm4_policy_afinfo.garbage_collect();
return (atomic_read(&xfrm4_dst_ops.entries) > xfrm4_dst_ops.gc_thresh*2);
Index: net-2.6.25-misc/net/ipv6/route.c
===================================================================
--- net-2.6.25-misc.orig/net/ipv6/route.c
+++ net-2.6.25-misc/net/ipv6/route.c
@@ -79,7 +79,7 @@ static struct dst_entry *ip6_negative_ad
static void ip6_dst_destroy(struct dst_entry *);
static void ip6_dst_ifdown(struct dst_entry *,
struct net_device *dev, int how);
-static int ip6_dst_gc(void);
+static int ip6_dst_gc(struct dst_ops *ops);
static int ip6_pkt_discard(struct sk_buff *skb);
static int ip6_pkt_discard_out(struct sk_buff *skb);
@@ -978,7 +978,7 @@ int ndisc_dst_gc(int *more)
return freed;
}
-static int ip6_dst_gc(void)
+static int ip6_dst_gc(struct dst_ops *ops)
{
static unsigned expire = 30*HZ;
static unsigned long last_gc;
Index: net-2.6.25-misc/net/ipv6/xfrm6_policy.c
===================================================================
--- net-2.6.25-misc.orig/net/ipv6/xfrm6_policy.c
+++ net-2.6.25-misc/net/ipv6/xfrm6_policy.c
@@ -212,7 +212,7 @@ _decode_session6(struct sk_buff *skb, st
}
}
-static inline int xfrm6_garbage_collect(void)
+static inline int xfrm6_garbage_collect(struct dst_ops *ops)
{
xfrm6_policy_afinfo.garbage_collect();
return (atomic_read(&xfrm6_dst_ops.entries) > xfrm6_dst_ops.gc_thresh*2);
--
^ permalink raw reply [flat|nested] 5+ messages in thread
* [patch 2/2][NETNS][DST] add the network namespace pointer in dst_ops
2008-01-16 14:54 [patch 0/2][NETNS][DST] pass dst_ops to gc functions and add a netns pointer in it Daniel Lezcano
2008-01-16 14:54 ` [patch 1/2][NETNS][DST] dst: pass the dst_ops as parameter to the gc functions Daniel Lezcano
@ 2008-01-16 14:54 ` Daniel Lezcano
2008-01-18 11:58 ` David Miller
1 sibling, 1 reply; 5+ messages in thread
From: Daniel Lezcano @ 2008-01-16 14:54 UTC (permalink / raw)
To: davem; +Cc: netdev, den, benjamin.thery
[-- Attachment #1: add-net-ns-to-dst-ops.patch --]
[-- Type: text/plain, Size: 788 bytes --]
The network namespace pointer can be stored into the dst_ops structure.
This is usefull when there are multiple instances of the dst_ops for a
protocol. When there are no several instances, this field will be never
used in the protocol. So there is no impact for the protocols which do
implement the network namespaces.
Signed-off-by: Daniel Lezcano <dlezcano@fr.ibm.com>
---
include/net/dst.h | 1 +
1 file changed, 1 insertion(+)
Index: net-2.6.25-misc/include/net/dst.h
===================================================================
--- net-2.6.25-misc.orig/include/net/dst.h
+++ net-2.6.25-misc/include/net/dst.h
@@ -102,6 +102,7 @@ struct dst_ops
atomic_t entries;
struct kmem_cache *kmem_cachep;
+ struct net *dst_net;
};
#ifdef __KERNEL__
--
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [patch 1/2][NETNS][DST] dst: pass the dst_ops as parameter to the gc functions
2008-01-16 14:54 ` [patch 1/2][NETNS][DST] dst: pass the dst_ops as parameter to the gc functions Daniel Lezcano
@ 2008-01-18 11:57 ` David Miller
0 siblings, 0 replies; 5+ messages in thread
From: David Miller @ 2008-01-18 11:57 UTC (permalink / raw)
To: dlezcano; +Cc: netdev, den, benjamin.thery
From: Daniel Lezcano <dlezcano@fr.ibm.com>
Date: Wed, 16 Jan 2008 15:54:17 +0100
> 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>
Applied.
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [patch 2/2][NETNS][DST] add the network namespace pointer in dst_ops
2008-01-16 14:54 ` [patch 2/2][NETNS][DST] add the network namespace pointer in dst_ops Daniel Lezcano
@ 2008-01-18 11:58 ` David Miller
0 siblings, 0 replies; 5+ messages in thread
From: David Miller @ 2008-01-18 11:58 UTC (permalink / raw)
To: dlezcano; +Cc: netdev, den, benjamin.thery
From: Daniel Lezcano <dlezcano@fr.ibm.com>
Date: Wed, 16 Jan 2008 15:54:18 +0100
> The network namespace pointer can be stored into the dst_ops structure.
> This is usefull when there are multiple instances of the dst_ops for a
> protocol. When there are no several instances, this field will be never
> used in the protocol. So there is no impact for the protocols which do
> implement the network namespaces.
>
> Signed-off-by: Daniel Lezcano <dlezcano@fr.ibm.com>
Applied, thanks.
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2008-01-18 11:58 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-01-16 14:54 [patch 0/2][NETNS][DST] pass dst_ops to gc functions and add a netns pointer in it Daniel Lezcano
2008-01-16 14:54 ` [patch 1/2][NETNS][DST] dst: pass the dst_ops as parameter to the gc functions Daniel Lezcano
2008-01-18 11:57 ` David Miller
2008-01-16 14:54 ` [patch 2/2][NETNS][DST] add the network namespace pointer in dst_ops Daniel Lezcano
2008-01-18 11:58 ` David Miller
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).