diff options
Diffstat (limited to 'drivers/net/xen-netfront.c')
| -rw-r--r-- | drivers/net/xen-netfront.c | 18 | 
1 files changed, 9 insertions, 9 deletions
diff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c index cc19cd9203da..44275908d61a 100644 --- a/drivers/net/xen-netfront.c +++ b/drivers/net/xen-netfront.c @@ -608,8 +608,8 @@ static int xennet_xdp_xmit(struct net_device *dev, int n,  	struct netfront_info *np = netdev_priv(dev);  	struct netfront_queue *queue = NULL;  	unsigned long irq_flags; -	int drops = 0; -	int i, err; +	int nxmit = 0; +	int i;  	if (unlikely(flags & ~XDP_XMIT_FLAGS_MASK))  		return -EINVAL; @@ -622,15 +622,13 @@ static int xennet_xdp_xmit(struct net_device *dev, int n,  		if (!xdpf)  			continue; -		err = xennet_xdp_xmit_one(dev, queue, xdpf); -		if (err) { -			xdp_return_frame_rx_napi(xdpf); -			drops++; -		} +		if (xennet_xdp_xmit_one(dev, queue, xdpf)) +			break; +		nxmit++;  	}  	spin_unlock_irqrestore(&queue->tx_lock, irq_flags); -	return n - drops; +	return nxmit;  } @@ -875,7 +873,9 @@ static u32 xennet_run_xdp(struct netfront_queue *queue, struct page *pdata,  		get_page(pdata);  		xdpf = xdp_convert_buff_to_frame(xdp);  		err = xennet_xdp_xmit(queue->info->netdev, 1, &xdpf, 0); -		if (unlikely(err < 0)) +		if (unlikely(!err)) +			xdp_return_frame_rx_napi(xdpf); +		else if (unlikely(err < 0))  			trace_xdp_exception(queue->info->netdev, prog, act);  		break;  	case XDP_REDIRECT:  | 
