diff options
author | Herbert Xu <herbert@gondor.apana.org.au> | 2012-04-13 02:37:42 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-04-15 12:51:34 -0400 |
commit | 748572162a2bc3ce6f0b215e25ad601c3ec33e77 (patch) | |
tree | c404a8b215afaee100abc557ed1ca0fca834843d /net/bridge/br_multicast.c | |
parent | 95c961747284a6b83a5e2d81240e214b0fa3464d (diff) | |
download | op-kernel-dev-748572162a2bc3ce6f0b215e25ad601c3ec33e77.zip op-kernel-dev-748572162a2bc3ce6f0b215e25ad601c3ec33e77.tar.gz |
bridge: Add br_multicast_start_querier
This patch adds the helper br_multicast_start_querier so that
the code which starts the queriers in br_multicast_toggle can
be reused elsewhere.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/bridge/br_multicast.c')
-rw-r--r-- | net/bridge/br_multicast.c | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c index 020e463..ecabf21 100644 --- a/net/bridge/br_multicast.c +++ b/net/bridge/br_multicast.c @@ -1689,9 +1689,23 @@ unlock: return err; } -int br_multicast_toggle(struct net_bridge *br, unsigned long val) +static void br_multicast_start_querier(struct net_bridge *br) { struct net_bridge_port *port; + + br_multicast_open(br); + + list_for_each_entry(port, &br->port_list, list) { + if (port->state == BR_STATE_DISABLED || + port->state == BR_STATE_BLOCKING) + continue; + + __br_multicast_enable_port(port); + } +} + +int br_multicast_toggle(struct net_bridge *br, unsigned long val) +{ int err = 0; struct net_bridge_mdb_htable *mdb; @@ -1721,14 +1735,7 @@ rollback: goto rollback; } - br_multicast_open(br); - list_for_each_entry(port, &br->port_list, list) { - if (port->state == BR_STATE_DISABLED || - port->state == BR_STATE_BLOCKING) - continue; - - __br_multicast_enable_port(port); - } + br_multicast_start_querier(br); unlock: spin_unlock_bh(&br->multicast_lock); |