diff options
author | Herbert Xu <herbert@gondor.apana.org.au> | 2010-07-29 02:45:30 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-07-31 08:38:58 +0200 |
commit | 3a7fda06ba48e97650fe44ea8e8a7cc385e1c100 (patch) | |
tree | 115a1d78f4d9c8a45f04ad35029374fe2050884a /net/bridge/br_multicast.c | |
parent | dnet: fixup error handling in initialization (diff) | |
download | linux-3a7fda06ba48e97650fe44ea8e8a7cc385e1c100.tar.xz linux-3a7fda06ba48e97650fe44ea8e8a7cc385e1c100.zip |
bridge: Allow multicast snooping to be disabled before ifup
Currently you cannot disable multicast snooping while a device is
down. There is no good reason for this restriction and this patch
removes it.
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 | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c index 85afcdab4921..eb5b256ffc88 100644 --- a/net/bridge/br_multicast.c +++ b/net/bridge/br_multicast.c @@ -1728,13 +1728,9 @@ unlock: int br_multicast_toggle(struct net_bridge *br, unsigned long val) { struct net_bridge_port *port; - int err = -ENOENT; + int err = 0; spin_lock(&br->multicast_lock); - if (!netif_running(br->dev)) - goto unlock; - - err = 0; if (br->multicast_disabled == !val) goto unlock; @@ -1742,6 +1738,9 @@ int br_multicast_toggle(struct net_bridge *br, unsigned long val) if (br->multicast_disabled) goto unlock; + if (!netif_running(br->dev)) + goto unlock; + if (br->mdb) { if (br->mdb->old) { err = -EEXIST; |