Commit 10a559a0 authored by Chris Healy's avatar Chris Healy Committed by Greg Kroah-Hartman

resubmit bridge: fix message_age_timer calculation

[ Upstream commit 9a062013 ]

This changes the message_age_timer calculation to use the BPDU's max age as
opposed to the local bridge's max age.  This is in accordance with section
8.6.2.3.2 Step 2 of the 802.1D-1998 sprecification.

With the current implementation, when running with very large bridge
diameters, convergance will not always occur even if a root bridge is
configured to have a longer max age.

Tested successfully on bridge diameters of ~200.
Signed-off-by: default avatarChris Healy <cphealy@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 0ff773f5
...@@ -209,7 +209,7 @@ static void br_record_config_information(struct net_bridge_port *p, ...@@ -209,7 +209,7 @@ static void br_record_config_information(struct net_bridge_port *p,
p->designated_age = jiffies - bpdu->message_age; p->designated_age = jiffies - bpdu->message_age;
mod_timer(&p->message_age_timer, jiffies mod_timer(&p->message_age_timer, jiffies
+ (p->br->max_age - bpdu->message_age)); + (bpdu->max_age - bpdu->message_age));
} }
/* called under bridge lock */ /* called under bridge lock */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment