* [PATCH net-next] neigh: Keep neighbour cache entries if number of them is small enough.
@ 2013-01-22 15:09 YOSHIFUJI Hideaki
2013-01-22 15:12 ` YOSHIFUJI Hideaki
0 siblings, 1 reply; 2+ messages in thread
From: YOSHIFUJI Hideaki @ 2013-01-22 15:09 UTC (permalink / raw)
To: davem, netdev; +Cc: yoshfuji
Since we have removed NCE (Neighbour Cache Entry) reference from
routing entries, the only refcnt holders of an NCE are timer (if run)
and the entry's owner table. As a result, neigh_periodic_timer()
purges NCEs over and over even for gateways.
It does not make sense to purge NCEs even if number of them is
very small.
The number of entries can be specified by gc_thresh1.
Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
---
Documentation/networking/ip-sysctl.txt | 5 +++++
net/core/neighbour.c | 4 ++++
2 files changed, 9 insertions(+)
diff --git a/Documentation/networking/ip-sysctl.txt b/Documentation/networking/ip-sysctl.txt
index 4976564..19ac180 100644
--- a/Documentation/networking/ip-sysctl.txt
+++ b/Documentation/networking/ip-sysctl.txt
@@ -26,6 +26,11 @@ route/max_size - INTEGER
Maximum number of routes allowed in the kernel. Increase
this when using large numbers of interfaces and/or routes.
+neigh/default/gc_thresh1 - INTEGER
+ Minimum number of entries to keep. Garbage collector will not
+ purge entries if there are fewer than this number.
+ Default: 256
+
neigh/default/gc_thresh3 - INTEGER
Maximum number of neighbor entries allowed. Increase this
when using large numbers of interfaces and when communicating
diff --git a/net/core/neighbour.c b/net/core/neighbour.c
index c815f28..7bd0eed 100644
--- a/net/core/neighbour.c
+++ b/net/core/neighbour.c
@@ -778,6 +778,9 @@ static void neigh_periodic_work(struct work_struct *work)
nht = rcu_dereference_protected(tbl->nht,
lockdep_is_held(&tbl->lock));
+ if (atomic_read(&tbl->entries) < tbl->gc_thresh1)
+ goto out;
+
/*
* periodically recompute ReachableTime from random function
*/
@@ -832,6 +835,7 @@ next_elt:
nht = rcu_dereference_protected(tbl->nht,
lockdep_is_held(&tbl->lock));
}
+out:
/* Cycle through all hash buckets every base_reachable_time/2 ticks.
* ARP entry timeouts range from 1/2 base_reachable_time to 3/2
* base_reachable_time.
--
1.7.9.5
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH net-next] neigh: Keep neighbour cache entries if number of them is small enough.
2013-01-22 15:09 [PATCH net-next] neigh: Keep neighbour cache entries if number of them is small enough YOSHIFUJI Hideaki
@ 2013-01-22 15:12 ` YOSHIFUJI Hideaki
0 siblings, 0 replies; 2+ messages in thread
From: YOSHIFUJI Hideaki @ 2013-01-22 15:12 UTC (permalink / raw)
To: davem; +Cc: YOSHIFUJI Hideaki, netdev
YOSHIFUJI Hideaki wrote:
> Since we have removed NCE (Neighbour Cache Entry) reference from
> routing entries, the only refcnt holders of an NCE are timer (if run)
> and the entry's owner table. As a result, neigh_periodic_timer()
Oops, I should say neigh_periodic_work()...
--yoshfuji
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2013-01-22 15:12 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-01-22 15:09 [PATCH net-next] neigh: Keep neighbour cache entries if number of them is small enough YOSHIFUJI Hideaki
2013-01-22 15:12 ` YOSHIFUJI Hideaki
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).