summaryrefslogtreecommitdiffstats
path: root/net/bridge/br_stp.c
diff options
context:
space:
mode:
authorNikolay Aleksandrov <razor@blackwall.org>2015-07-23 20:01:05 +0200
committerDavid S. Miller <davem@davemloft.net>2015-07-29 08:33:20 +0200
commit76b91c32dd86f624b5df038dcb68cddd5a18d355 (patch)
treecd59c7fc695b814aea9022c0636298023915fefc /net/bridge/br_stp.c
parentpacket: missing dev_put() in packet_do_bind() (diff)
downloadlinux-76b91c32dd86f624b5df038dcb68cddd5a18d355.tar.xz
linux-76b91c32dd86f624b5df038dcb68cddd5a18d355.zip
bridge: stp: when using userspace stp stop kernel hello and hold timers
These should be handled only by the respective STP which is in control. They become problematic for devices with limited resources with many ports because the hold_timer is per port and fires each second and the hello timer fires each 2 seconds even though it's global. While in user-space STP mode these timers are completely unnecessary so it's better to keep them off. Also ensure that when the bridge is up these timers are started only when running with kernel STP. Signed-off-by: Satish Ashok <sashok@cumulusnetworks.com> Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/bridge/br_stp.c')
-rw-r--r--net/bridge/br_stp.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/net/bridge/br_stp.c b/net/bridge/br_stp.c
index b4b6dab9c285..ed74ffaa851f 100644
--- a/net/bridge/br_stp.c
+++ b/net/bridge/br_stp.c
@@ -209,8 +209,9 @@ void br_transmit_config(struct net_bridge_port *p)
br_send_config_bpdu(p, &bpdu);
p->topology_change_ack = 0;
p->config_pending = 0;
- mod_timer(&p->hold_timer,
- round_jiffies(jiffies + BR_HOLD_TIME));
+ if (p->br->stp_enabled == BR_KERNEL_STP)
+ mod_timer(&p->hold_timer,
+ round_jiffies(jiffies + BR_HOLD_TIME));
}
}