diff options
author | Takashi Iwai <tiwai@suse.de> | 2010-03-22 17:05:48 +0100 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2010-03-22 17:05:48 +0100 |
commit | 2fb20b61550d3c5335e59819ed22734900d4d6e3 (patch) | |
tree | 5ac7690306a0230b51e79afe5cfd3e6575b98cb1 /include/linux/netpoll.h | |
parent | 23caaf19b11eda7054348452e1618d4512a86907 (diff) | |
parent | 6da7a2aa899f75116e1a62cef78c358ada9878b7 (diff) |
Merge branch 'topic/misc' into topic/usb
Diffstat (limited to 'include/linux/netpoll.h')
-rw-r--r-- | include/linux/netpoll.h | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/include/linux/netpoll.h b/include/linux/netpoll.h index 2524267210d3..a765ea898549 100644 --- a/include/linux/netpoll.h +++ b/include/linux/netpoll.h @@ -21,15 +21,20 @@ struct netpoll { __be32 local_ip, remote_ip; u16 local_port, remote_port; u8 remote_mac[ETH_ALEN]; + + struct list_head rx; /* rx_np list element */ }; struct netpoll_info { atomic_t refcnt; + int rx_flags; spinlock_t rx_lock; - struct netpoll *rx_np; /* netpoll that registered an rx_hook */ + struct list_head rx_np; /* netpolls that registered an rx_hook */ + struct sk_buff_head arp_tx; /* list of arp requests to reply to */ struct sk_buff_head txq; + struct delayed_work tx_work; }; @@ -51,7 +56,7 @@ static inline int netpoll_rx(struct sk_buff *skb) unsigned long flags; int ret = 0; - if (!npinfo || (!npinfo->rx_np && !npinfo->rx_flags)) + if (!npinfo || (list_empty(&npinfo->rx_np) && !npinfo->rx_flags)) return 0; spin_lock_irqsave(&npinfo->rx_lock, flags); @@ -67,7 +72,7 @@ static inline int netpoll_rx_on(struct sk_buff *skb) { struct netpoll_info *npinfo = skb->dev->npinfo; - return npinfo && (npinfo->rx_np || npinfo->rx_flags); + return npinfo && (!list_empty(&npinfo->rx_np) || npinfo->rx_flags); } static inline int netpoll_receive_skb(struct sk_buff *skb) |