Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 57168
b: refs/heads/master
c: 071f772
h: refs/heads/master
v: v3
  • Loading branch information
Baruch Even authored and David S. Miller committed May 31, 2007
1 parent 4ce5b69 commit bc9bed9
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 4 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 67403754bceda484a62a697878ff20a0e8d3aae6
refs/heads/master: 071f7722686151817855195654f16a0b65d9473c
14 changes: 11 additions & 3 deletions trunk/net/bridge/br_fdb.c
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,7 @@ void br_fdb_cleanup(unsigned long _data)
{
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);
Expand All @@ -129,14 +130,21 @@ void br_fdb_cleanup(unsigned long _data)
struct hlist_node *h, *n;

hlist_for_each_entry_safe(f, h, n, &br->hash[i], hlist) {
if (!f->is_static &&
time_before_eq(f->ageing_timer + delay, jiffies))
unsigned long this_timer;
if (f->is_static)
continue;
this_timer = f->ageing_timer + delay;
if (time_before_eq(this_timer, jiffies))
fdb_delete(f);
else if (this_timer < next_timer)
next_timer = this_timer;
}
}
spin_unlock_bh(&br->hash_lock);

mod_timer(&br->gc_timer, jiffies + HZ/10);
/* 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));
}

/* Completely flush all dynamic entries in forwarding database.*/
Expand Down

0 comments on commit bc9bed9

Please sign in to comment.