* [PATCH] Reduce frequency of cleanup timer in bridge
@ 2007-05-19 22:46 Baruch Even
2007-05-30 19:12 ` [PATCH 1/2] bridge: reduce frequency of forwarding " Stephen Hemminger
0 siblings, 1 reply; 4+ messages in thread
From: Baruch Even @ 2007-05-19 22:46 UTC (permalink / raw)
To: Stephen Hemminger; +Cc: netdev, power
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@ev-en.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.*/
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 1/2] bridge: reduce frequency of forwarding cleanup timer in bridge
2007-05-19 22:46 [PATCH] Reduce frequency of cleanup timer in bridge Baruch Even
@ 2007-05-30 19:12 ` Stephen Hemminger
2007-05-30 19:14 ` [PATCH 2/2] bridge: round off STP perodic timers Stephen Hemminger
0 siblings, 1 reply; 4+ messages in thread
From: Stephen Hemminger @ 2007-05-30 19:12 UTC (permalink / raw)
To: David S. Miller; +Cc: Baruch Even, netdev, power, 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@ev-en.org>
Signed-off-by: Stephen Hemminger <shemminger@linux-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.*/
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 2/2] bridge: round off STP perodic timers
2007-05-30 19:12 ` [PATCH 1/2] bridge: reduce frequency of forwarding " Stephen Hemminger
@ 2007-05-30 19:14 ` Stephen Hemminger
2007-05-31 8:21 ` David Miller
0 siblings, 1 reply; 4+ messages in thread
From: Stephen Hemminger @ 2007-05-30 19:14 UTC (permalink / raw)
To: David S. Miller; +Cc: Baruch Even, netdev, power, bridge
Peroidic STP timers don't have to be exact.
The hold timer runs at 1HZ, and the hello timer normally runs
at 2HZ; save power by aligning it them to next second.
Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>
---
net/bridge/br_stp.c | 3 ++-
net/bridge/br_stp_timer.c | 2 +-
2 files changed, 3 insertions(+), 2 deletions(-)
--- a/net/bridge/br_stp.c 2007-05-30 11:42:16.000000000 -0700
+++ b/net/bridge/br_stp.c 2007-05-30 11:51:51.000000000 -0700
@@ -178,7 +178,8 @@ void br_transmit_config(struct net_bridg
br_send_config_bpdu(p, &bpdu);
p->topology_change_ack = 0;
p->config_pending = 0;
- mod_timer(&p->hold_timer, jiffies + BR_HOLD_TIME);
+ mod_timer(&p->hold_timer,
+ round_jiffies(jiffies + BR_HOLD_TIME));
}
}
--- a/net/bridge/br_stp_timer.c 2007-05-30 11:42:16.000000000 -0700
+++ b/net/bridge/br_stp_timer.c 2007-05-30 11:53:08.000000000 -0700
@@ -42,7 +42,7 @@ static void br_hello_timer_expired(unsig
if (br->dev->flags & IFF_UP) {
br_config_bpdu_generation(br);
- mod_timer(&br->hello_timer, jiffies + br->hello_time);
+ mod_timer(&br->hello_timer, round_jiffies(jiffies + br->hello_time));
}
spin_unlock(&br->lock);
}
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH 2/2] bridge: round off STP perodic timers
2007-05-30 19:14 ` [PATCH 2/2] bridge: round off STP perodic timers Stephen Hemminger
@ 2007-05-31 8:21 ` David Miller
0 siblings, 0 replies; 4+ messages in thread
From: David Miller @ 2007-05-31 8:21 UTC (permalink / raw)
To: shemminger; +Cc: baruch, netdev, power, bridge
From: Stephen Hemminger <shemminger@linux-foundation.org>
Date: Wed, 30 May 2007 12:14:22 -0700
> Peroidic STP timers don't have to be exact.
> The hold timer runs at 1HZ, and the hello timer normally runs
> at 2HZ; save power by aligning it them to next second.
>
> Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>
Applied, thanks Stephen.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2007-05-31 8:21 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-05-19 22:46 [PATCH] Reduce frequency of cleanup timer in bridge Baruch Even
2007-05-30 19:12 ` [PATCH 1/2] bridge: reduce frequency of forwarding " Stephen Hemminger
2007-05-30 19:14 ` [PATCH 2/2] bridge: round off STP perodic timers Stephen Hemminger
2007-05-31 8:21 ` 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).