netdev: Add netdev->addr_list_lock protection.
Add netif_addr_{lock,unlock}{,_bh}() helpers. Use them to protect operations that operate on or read the network device unicast and multicast address lists. Also use them in cases where the code simply wants to block calls into the driver's ->set_rx_mode() and ->set_multicast_list() methods. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -3869,6 +3869,7 @@ void ieee80211_scan_completed(struct ieee80211_hw *hw)
|
||||
|
||||
|
||||
netif_tx_lock_bh(local->mdev);
|
||||
netif_addr_lock(local->mdev);
|
||||
local->filter_flags &= ~FIF_BCN_PRBRESP_PROMISC;
|
||||
local->ops->configure_filter(local_to_hw(local),
|
||||
FIF_BCN_PRBRESP_PROMISC,
|
||||
@@ -3876,6 +3877,7 @@ void ieee80211_scan_completed(struct ieee80211_hw *hw)
|
||||
local->mdev->mc_count,
|
||||
local->mdev->mc_list);
|
||||
|
||||
netif_addr_unlock(local->mdev);
|
||||
netif_tx_unlock_bh(local->mdev);
|
||||
|
||||
rcu_read_lock();
|
||||
@@ -4063,12 +4065,14 @@ static int ieee80211_sta_start_scan(struct net_device *dev,
|
||||
local->scan_dev = dev;
|
||||
|
||||
netif_tx_lock_bh(local->mdev);
|
||||
netif_addr_lock(local->mdev);
|
||||
local->filter_flags |= FIF_BCN_PRBRESP_PROMISC;
|
||||
local->ops->configure_filter(local_to_hw(local),
|
||||
FIF_BCN_PRBRESP_PROMISC,
|
||||
&local->filter_flags,
|
||||
local->mdev->mc_count,
|
||||
local->mdev->mc_list);
|
||||
netif_addr_unlock(local->mdev);
|
||||
netif_tx_unlock_bh(local->mdev);
|
||||
|
||||
/* TODO: start scan as soon as all nullfunc frames are ACKed */
|
||||
|
Reference in New Issue
Block a user