diff options
author | Eric Dumazet <eric.dumazet@gmail.com> | 2011-05-19 15:37:40 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-05-22 21:01:20 -0400 |
commit | 6df427fe8c481d3be437cbe8bd366bdac82b73c4 (patch) | |
tree | 5107145d367b646f815493bfcee75e2c0abfca3b /net/core | |
parent | ac3d3f81516fcbf80416e84682fd4bdaf3080611 (diff) |
net: remove synchronize_net() from netdev_set_master()
In the old days, we used to access dev->master in __netif_receive_skb()
in a rcu_read_lock section.
So one synchronize_net() call was needed in netdev_set_master() to make
sure another cpu could not use old master while/after we release it.
We now use netdev_rx_handler infrastructure and added one
synchronize_net() call in bond_release()/bond_release_all()
Remove the obsolete synchronize_net() from netdev_set_master() and add
one in bridge del_nbp() after its netdev_rx_handler_unregister() call.
This makes enslave -d a bit faster.
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
CC: Jiri Pirko <jpirko@redhat.com>
CC: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/core')
-rw-r--r-- | net/core/dev.c | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/net/core/dev.c b/net/core/dev.c index d94537914a71..bcb05cb799c1 100644 --- a/net/core/dev.c +++ b/net/core/dev.c | |||
@@ -4294,10 +4294,8 @@ int netdev_set_master(struct net_device *slave, struct net_device *master) | |||
4294 | 4294 | ||
4295 | slave->master = master; | 4295 | slave->master = master; |
4296 | 4296 | ||
4297 | if (old) { | 4297 | if (old) |
4298 | synchronize_net(); | ||
4299 | dev_put(old); | 4298 | dev_put(old); |
4300 | } | ||
4301 | return 0; | 4299 | return 0; |
4302 | } | 4300 | } |
4303 | EXPORT_SYMBOL(netdev_set_master); | 4301 | EXPORT_SYMBOL(netdev_set_master); |