diff options
| author | Dmitry Torokhov <[email protected]> | 2011-05-24 00:06:26 -0700 | 
|---|---|---|
| committer | Dmitry Torokhov <[email protected]> | 2011-05-24 00:06:26 -0700 | 
| commit | b73077eb03f510a84b102fb97640e595a958403c (patch) | |
| tree | 8b639000418e2756bf6baece4e00e07d2534bccc /net/core/netpoll.c | |
| parent | 28350e330cfab46b60a1dbf763b678d859f9f3d9 (diff) | |
| parent | 9d2e173644bb5c42ff1b280fbdda3f195a7cf1f7 (diff) | |
Merge branch 'next' into for-linus
Diffstat (limited to 'net/core/netpoll.c')
| -rw-r--r-- | net/core/netpoll.c | 13 | 
1 files changed, 11 insertions, 2 deletions
| diff --git a/net/core/netpoll.c b/net/core/netpoll.c index 02dc2cbcbe86..06be2431753e 100644 --- a/net/core/netpoll.c +++ b/net/core/netpoll.c @@ -193,6 +193,17 @@ void netpoll_poll_dev(struct net_device *dev)  	poll_napi(dev); +	if (dev->priv_flags & IFF_SLAVE) { +		if (dev->npinfo) { +			struct net_device *bond_dev = dev->master; +			struct sk_buff *skb; +			while ((skb = skb_dequeue(&dev->npinfo->arp_tx))) { +				skb->dev = bond_dev; +				skb_queue_tail(&bond_dev->npinfo->arp_tx, skb); +			} +		} +	} +  	service_arp_queue(dev->npinfo);  	zap_completion_queue(); @@ -313,9 +324,7 @@ void netpoll_send_skb_on_dev(struct netpoll *np, struct sk_buff *skb,  		     tries > 0; --tries) {  			if (__netif_tx_trylock(txq)) {  				if (!netif_tx_queue_stopped(txq)) { -					dev->priv_flags |= IFF_IN_NETPOLL;  					status = ops->ndo_start_xmit(skb, dev); -					dev->priv_flags &= ~IFF_IN_NETPOLL;  					if (status == NETDEV_TX_OK)  						txq_trans_update(txq);  				} |