diff options
author | David S. Miller <davem@davemloft.net> | 2013-01-15 15:05:59 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2013-01-15 15:05:59 -0500 |
commit | 4b87f922598acf91eee18f71688a33f54f57bcde (patch) | |
tree | 9cdfe30c6b96c47093da5392ed82d147290cd64c /net/bridge | |
parent | 55eb555d9674e2ebe9d4de0146602f96ff18e7d6 (diff) | |
parent | daf3ec688e057f6060fb9bb0819feac7a8bbf45c (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflicts:
Documentation/networking/ip-sysctl.txt
drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
Both conflicts were simply overlapping context.
A build fix for qlcnic is in here too, simply removing the added
devinit annotations which no longer exist.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/bridge')
-rw-r--r-- | net/bridge/br_multicast.c | 2 | ||||
-rw-r--r-- | net/bridge/br_netlink.c | 13 | ||||
-rw-r--r-- | net/bridge/br_private.h | 6 |
3 files changed, 18 insertions, 3 deletions
diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c index 5391ca43336a..6d6f26531de2 100644 --- a/net/bridge/br_multicast.c +++ b/net/bridge/br_multicast.c | |||
@@ -1608,7 +1608,6 @@ void br_multicast_init(struct net_bridge *br) | |||
1608 | br_multicast_querier_expired, (unsigned long)br); | 1608 | br_multicast_querier_expired, (unsigned long)br); |
1609 | setup_timer(&br->multicast_query_timer, br_multicast_query_expired, | 1609 | setup_timer(&br->multicast_query_timer, br_multicast_query_expired, |
1610 | (unsigned long)br); | 1610 | (unsigned long)br); |
1611 | br_mdb_init(); | ||
1612 | } | 1611 | } |
1613 | 1612 | ||
1614 | void br_multicast_open(struct net_bridge *br) | 1613 | void br_multicast_open(struct net_bridge *br) |
@@ -1633,7 +1632,6 @@ void br_multicast_stop(struct net_bridge *br) | |||
1633 | del_timer_sync(&br->multicast_querier_timer); | 1632 | del_timer_sync(&br->multicast_querier_timer); |
1634 | del_timer_sync(&br->multicast_query_timer); | 1633 | del_timer_sync(&br->multicast_query_timer); |
1635 | 1634 | ||
1636 | br_mdb_uninit(); | ||
1637 | spin_lock_bh(&br->multicast_lock); | 1635 | spin_lock_bh(&br->multicast_lock); |
1638 | mdb = mlock_dereference(br->mdb, br); | 1636 | mdb = mlock_dereference(br->mdb, br); |
1639 | if (!mdb) | 1637 | if (!mdb) |
diff --git a/net/bridge/br_netlink.c b/net/bridge/br_netlink.c index caa3f6919436..39ca9796f3f7 100644 --- a/net/bridge/br_netlink.c +++ b/net/bridge/br_netlink.c | |||
@@ -302,10 +302,21 @@ struct rtnl_link_ops br_link_ops __read_mostly = { | |||
302 | 302 | ||
303 | int __init br_netlink_init(void) | 303 | int __init br_netlink_init(void) |
304 | { | 304 | { |
305 | return rtnl_link_register(&br_link_ops); | 305 | int err; |
306 | |||
307 | br_mdb_init(); | ||
308 | err = rtnl_link_register(&br_link_ops); | ||
309 | if (err) | ||
310 | goto out; | ||
311 | |||
312 | return 0; | ||
313 | out: | ||
314 | br_mdb_uninit(); | ||
315 | return err; | ||
306 | } | 316 | } |
307 | 317 | ||
308 | void __exit br_netlink_fini(void) | 318 | void __exit br_netlink_fini(void) |
309 | { | 319 | { |
320 | br_mdb_uninit(); | ||
310 | rtnl_link_unregister(&br_link_ops); | 321 | rtnl_link_unregister(&br_link_ops); |
311 | } | 322 | } |
diff --git a/net/bridge/br_private.h b/net/bridge/br_private.h index 8d83be5ffedc..711094aed41a 100644 --- a/net/bridge/br_private.h +++ b/net/bridge/br_private.h | |||
@@ -526,6 +526,12 @@ static inline bool br_multicast_is_router(struct net_bridge *br) | |||
526 | { | 526 | { |
527 | return 0; | 527 | return 0; |
528 | } | 528 | } |
529 | static inline void br_mdb_init(void) | ||
530 | { | ||
531 | } | ||
532 | static inline void br_mdb_uninit(void) | ||
533 | { | ||
534 | } | ||
529 | #endif | 535 | #endif |
530 | 536 | ||
531 | /* br_netfilter.c */ | 537 | /* br_netfilter.c */ |