diff options
| author | Jeff Garzik <jgarzik@redhat.com> | 2003-09-01 07:14:26 -0400 |
|---|---|---|
| committer | Jeff Garzik <jgarzik@redhat.com> | 2003-09-01 07:14:26 -0400 |
| commit | 9a2f7a76f61d58997ce2a419169f1eed69501c36 (patch) | |
| tree | 1fb9ac92fd3607c82bfce267209164189d400f96 /include | |
| parent | 99e5aa3471603246b7a5c1f045621883504bcb89 (diff) | |
| parent | 325188e8be78d909813651d56c31d6867beab4e3 (diff) | |
Merge redhat.com:/spare/repo/linux-2.5
into redhat.com:/spare/repo/net-drivers-2.5
Diffstat (limited to 'include')
| -rw-r--r-- | include/linux/netdevice.h | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index fdfccf76f4a0..dfc1aa47f35c 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h @@ -832,6 +832,38 @@ static inline void netif_rx_complete(struct net_device *dev) local_irq_restore(flags); } +static inline void netif_poll_disable(struct net_device *dev) +{ + while (test_and_set_bit(__LINK_STATE_RX_SCHED, &dev->state)) { + /* No hurry. */ + current->state = TASK_INTERRUPTIBLE; + schedule_timeout(1); + } +} + +static inline void netif_poll_enable(struct net_device *dev) +{ + clear_bit(__LINK_STATE_RX_SCHED, &dev->state); +} + +/* same as netif_rx_complete, except that local_irq_save(flags) + * has already been issued + */ +static inline void __netif_rx_complete(struct net_device *dev) +{ + if (!test_bit(__LINK_STATE_RX_SCHED, &dev->state)) BUG(); + list_del(&dev->poll_list); + smp_mb__before_clear_bit(); + clear_bit(__LINK_STATE_RX_SCHED, &dev->state); +} + +static inline void netif_tx_disable(struct net_device *dev) +{ + spin_lock_bh(&dev->xmit_lock); + netif_stop_queue(dev); + spin_unlock_bh(&dev->xmit_lock); +} + /* These functions live elsewhere (drivers/net/net_init.c, but related) */ extern void ether_setup(struct net_device *dev); |
