lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Wed, 30 May 2007 12:12:52 -0700 From: Stephen Hemminger <shemminger@...ux-foundation.org> To: "David S. Miller" <davem@...emloft.net> Cc: Baruch Even <baruch@...en.org>, netdev@...r.kernel.org, power@...host.org, bridge@...ux-foundation.org Subject: [PATCH 1/2] bridge: reduce frequency of forwarding cleanup timer in bridge The bridge cleanup timer is fired 10 times a second for timers that are at least 15 seconds ahead in time and that are not critical to be cleaned asap. This patch calculates the next time to run the timer as the minimum of all timers or a minimum based on the current state. Signed-off-by: Baruch Even <baruch@...en.org> Signed-off-by: Stephen Hemminger <shemminger@...ux-foundation.org> --- 2.6.22-rc2/net/bridge/br_fdb.c 2007-05-20 00:51:11.000000000 +0300 +++ 2.6-rc2/net/bridge/br_fdb.c 2007-05-20 00:50:31.000000000 +0300 @@ -121,6 +121,7 @@ { struct net_bridge *br = (struct net_bridge *)_data; unsigned long delay = hold_time(br); + unsigned long next_timer = jiffies + br->forward_delay; int i; spin_lock_bh(&br->hash_lock); @@ -129,14 +130,21 @@ struct hlist_node *h, *n; hlist_for_each_entry_safe(f, h, n, &br->hash[i], hlist) { + unsigned long this_timer; + if (f->is_static) + continue; + this_timer = f->ageing_timer + delay; + if (time_before_eq(this_timer, jiffies)) - if (!f->is_static && - time_before_eq(f->ageing_timer + delay, jiffies)) fdb_delete(f); + else if (this_timer < next_timer) + next_timer = this_timer; } } spin_unlock_bh(&br->hash_lock); + /* Add HZ/4 to ensure we round the jiffies upwards to be after the next + * timer, otherwise we might round down and will have no-op run. */ + mod_timer(&br->gc_timer, round_jiffies(next_timer + HZ/4)); - mod_timer(&br->gc_timer, jiffies + HZ/10); } /* Completely flush all dynamic entries in forwarding database.*/ - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists