diff options
Diffstat (limited to 'net/core/netpoll.c')
| -rw-r--r-- | net/core/netpoll.c | 12 | 
1 files changed, 7 insertions, 5 deletions
diff --git a/net/core/netpoll.c b/net/core/netpoll.c index cf64c1ffa4c..556b0829866 100644 --- a/net/core/netpoll.c +++ b/net/core/netpoll.c @@ -76,7 +76,7 @@ static void queue_process(struct work_struct *work)  		local_irq_save(flags);  		__netif_tx_lock(txq, smp_processor_id()); -		if (netif_tx_queue_frozen_or_stopped(txq) || +		if (netif_xmit_frozen_or_stopped(txq) ||  		    ops->ndo_start_xmit(skb, dev) != NETDEV_TX_OK) {  			skb_queue_head(&npinfo->txq, skb);  			__netif_tx_unlock(txq); @@ -317,7 +317,7 @@ void netpoll_send_skb_on_dev(struct netpoll *np, struct sk_buff *skb,  		for (tries = jiffies_to_usecs(1)/USEC_PER_POLL;  		     tries > 0; --tries) {  			if (__netif_tx_trylock(txq)) { -				if (!netif_tx_queue_stopped(txq)) { +				if (!netif_xmit_stopped(txq)) {  					status = ops->ndo_start_xmit(skb, dev);  					if (status == NETDEV_TX_OK)  						txq_trans_update(txq); @@ -422,6 +422,7 @@ static void arp_reply(struct sk_buff *skb)  	struct sk_buff *send_skb;  	struct netpoll *np, *tmp;  	unsigned long flags; +	int hlen, tlen;  	int hits = 0;  	if (list_empty(&npinfo->rx_np)) @@ -479,8 +480,9 @@ static void arp_reply(struct sk_buff *skb)  		if (tip != np->local_ip)  			continue; -		send_skb = find_skb(np, size + LL_ALLOCATED_SPACE(np->dev), -				    LL_RESERVED_SPACE(np->dev)); +		hlen = LL_RESERVED_SPACE(np->dev); +		tlen = np->dev->needed_tailroom; +		send_skb = find_skb(np, size + hlen + tlen, hlen);  		if (!send_skb)  			continue; @@ -763,7 +765,7 @@ int __netpoll_setup(struct netpoll *np)  	}  	/* last thing to do is link it to the net device structure */ -	RCU_INIT_POINTER(ndev->npinfo, npinfo); +	rcu_assign_pointer(ndev->npinfo, npinfo);  	return 0;  | 
