On Wed, 19 Dec 2007 08:23:43 +0100 Eric Dumazet <[EMAIL PROTECTED]> wrote:
> Stephen Hemminger a écrit : > > The neighbor GC timer runs once a second, but it doesn't need to wake > > up the machine. > > > > Signed-off-by: Stephen Hemminger <[EMAIL PROTECTED]> > > > > --- a/net/core/neighbour.c 2007-12-18 07:46:07.000000000 -0800 > > +++ b/net/core/neighbour.c 2007-12-18 07:47:36.000000000 -0800 > > @@ -270,7 +270,7 @@ static struct neighbour *neigh_alloc(str > > n->nud_state = NUD_NONE; > > n->output = neigh_blackhole; > > n->parms = neigh_parms_clone(&tbl->parms); > > - init_timer(&n->timer); > > + init_timer_deferrable(&n->timer); > > n->timer.function = neigh_timer_handler; > > n->timer.data = (unsigned long)n; > > > > @@ -740,7 +740,7 @@ static void neigh_timer_handler(unsigned > > > > state = neigh->nud_state; > > now = jiffies; > > - next = now + HZ; > > + next = round_jiffies(now + HZ); > > > > if (!(state & NUD_IN_TIMER)) { > > #ifndef CONFIG_SMP > > @@ -1372,7 +1372,7 @@ void neigh_table_init_no_netlink(struct > > get_random_bytes(&tbl->hash_rnd, sizeof(tbl->hash_rnd)); > > > > rwlock_init(&tbl->lock); > > - init_timer(&tbl->gc_timer); > > + init_timer_deferrable(&tbl->gc_timer); > > tbl->gc_timer.data = (unsigned long)tbl; > > tbl->gc_timer.function = neigh_periodic_timer; > > tbl->gc_timer.expires = now + 1; > > I wonder if this deferrable timer thing is the right way to go. > > (like read_mostly thing if you want :) ) > > We are going to convert 99% timers to deferrable. > > Maybe the right move should be to have the reverse attribute, to mark a timer > as non deferrable... > > Also, why use round_jiffies() on a deferrable timer ? That sounds unecessary ? Thinking about it more, this looks like a case for just using round_jiffies(). The GC timer needs to run to clean up under DoS attack, and deferring it probably isn't a good idea. -- Stephen Hemminger <[EMAIL PROTECTED]> -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html