aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/netdevice.h38
1 files changed, 35 insertions, 3 deletions
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index b5760c67af9c..067b9ccafd87 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -407,7 +407,7 @@ struct net_device
407 * One part is mostly used on xmit path (device) 407 * One part is mostly used on xmit path (device)
408 */ 408 */
409 /* hard_start_xmit synchronizer */ 409 /* hard_start_xmit synchronizer */
410 spinlock_t xmit_lock ____cacheline_aligned_in_smp; 410 spinlock_t _xmit_lock ____cacheline_aligned_in_smp;
411 /* cpu id of processor entered to hard_start_xmit or -1, 411 /* cpu id of processor entered to hard_start_xmit or -1,
412 if nobody entered there. 412 if nobody entered there.
413 */ 413 */
@@ -893,11 +893,43 @@ static inline void __netif_rx_complete(struct net_device *dev)
893 clear_bit(__LINK_STATE_RX_SCHED, &dev->state); 893 clear_bit(__LINK_STATE_RX_SCHED, &dev->state);
894} 894}
895 895
896static inline void netif_tx_lock(struct net_device *dev)
897{
898 spin_lock(&dev->_xmit_lock);
899 dev->xmit_lock_owner = smp_processor_id();
900}
901
902static inline void netif_tx_lock_bh(struct net_device *dev)
903{
904 spin_lock_bh(&dev->_xmit_lock);
905 dev->xmit_lock_owner = smp_processor_id();
906}
907
908static inline int netif_tx_trylock(struct net_device *dev)
909{
910 int err = spin_trylock(&dev->_xmit_lock);
911 if (!err)
912 dev->xmit_lock_owner = smp_processor_id();
913 return err;
914}
915
916static inline void netif_tx_unlock(struct net_device *dev)
917{
918 dev->xmit_lock_owner = -1;
919 spin_unlock(&dev->_xmit_lock);
920}
921
922static inline void netif_tx_unlock_bh(struct net_device *dev)
923{
924 dev->xmit_lock_owner = -1;
925 spin_unlock_bh(&dev->_xmit_lock);
926}
927
896static inline void netif_tx_disable(struct net_device *dev) 928static inline void netif_tx_disable(struct net_device *dev)
897{ 929{
898 spin_lock_bh(&dev->xmit_lock); 930 netif_tx_lock_bh(dev);
899 netif_stop_queue(dev); 931 netif_stop_queue(dev);
900 spin_unlock_bh(&dev->xmit_lock); 932 netif_tx_unlock_bh(dev);
901} 933}
902 934
903/* These functions live elsewhere (drivers/net/net_init.c, but related) */ 935/* These functions live elsewhere (drivers/net/net_init.c, but related) */