diff options
author | David S. Miller <davem@davemloft.net> | 2008-07-15 03:13:44 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-07-15 03:13:44 -0400 |
commit | e308a5d806c852f56590ffdd3834d0df0cbed8d7 (patch) | |
tree | 294ff654e90950f5162737c26f4799b0b710b748 /include/linux/netdevice.h | |
parent | f1f28aa3510ddb84c966bac65611bb866c77a092 (diff) |
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>
Diffstat (limited to 'include/linux/netdevice.h')
-rw-r--r-- | include/linux/netdevice.h | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index fd0365219181..570cf7affa72 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h | |||
@@ -1498,6 +1498,26 @@ static inline void netif_tx_disable(struct net_device *dev) | |||
1498 | netif_tx_unlock_bh(dev); | 1498 | netif_tx_unlock_bh(dev); |
1499 | } | 1499 | } |
1500 | 1500 | ||
1501 | static inline void netif_addr_lock(struct net_device *dev) | ||
1502 | { | ||
1503 | spin_lock(&dev->addr_list_lock); | ||
1504 | } | ||
1505 | |||
1506 | static inline void netif_addr_lock_bh(struct net_device *dev) | ||
1507 | { | ||
1508 | spin_lock_bh(&dev->addr_list_lock); | ||
1509 | } | ||
1510 | |||
1511 | static inline void netif_addr_unlock(struct net_device *dev) | ||
1512 | { | ||
1513 | spin_unlock(&dev->addr_list_lock); | ||
1514 | } | ||
1515 | |||
1516 | static inline void netif_addr_unlock_bh(struct net_device *dev) | ||
1517 | { | ||
1518 | spin_unlock_bh(&dev->addr_list_lock); | ||
1519 | } | ||
1520 | |||
1501 | /* These functions live elsewhere (drivers/net/net_init.c, but related) */ | 1521 | /* These functions live elsewhere (drivers/net/net_init.c, but related) */ |
1502 | 1522 | ||
1503 | extern void ether_setup(struct net_device *dev); | 1523 | extern void ether_setup(struct net_device *dev); |