diff options
Diffstat (limited to 'drivers/net/xen-netback/netback.c')
| -rw-r--r-- | drivers/net/xen-netback/netback.c | 15 | 
1 files changed, 5 insertions, 10 deletions
diff --git a/drivers/net/xen-netback/netback.c b/drivers/net/xen-netback/netback.c index f4a6fcaeffb1..05593d882023 100644 --- a/drivers/net/xen-netback/netback.c +++ b/drivers/net/xen-netback/netback.c @@ -635,9 +635,7 @@ static void xen_netbk_rx_action(struct xen_netbk *netbk)  		return;  	BUG_ON(npo.copy_prod > ARRAY_SIZE(netbk->grant_copy_op)); -	ret = HYPERVISOR_grant_table_op(GNTTABOP_copy, &netbk->grant_copy_op, -					npo.copy_prod); -	BUG_ON(ret != 0); +	gnttab_batch_copy(netbk->grant_copy_op, npo.copy_prod);  	while ((skb = __skb_dequeue(&rxq)) != NULL) {  		sco = (struct skb_cb_overlay *)skb->cb; @@ -1363,8 +1361,6 @@ static unsigned xen_netbk_tx_build_gops(struct xen_netbk *netbk)  					     INVALID_PENDING_IDX);  		} -		__skb_queue_tail(&netbk->tx_queue, skb); -  		netbk->pending_cons++;  		request_gop = xen_netbk_get_requests(netbk, vif, @@ -1376,6 +1372,8 @@ static unsigned xen_netbk_tx_build_gops(struct xen_netbk *netbk)  		}  		gop = request_gop; +		__skb_queue_tail(&netbk->tx_queue, skb); +  		vif->tx.req_cons = idx;  		xen_netbk_check_rx_xenvif(vif); @@ -1460,18 +1458,15 @@ static void xen_netbk_tx_submit(struct xen_netbk *netbk)  static void xen_netbk_tx_action(struct xen_netbk *netbk)  {  	unsigned nr_gops; -	int ret;  	nr_gops = xen_netbk_tx_build_gops(netbk);  	if (nr_gops == 0)  		return; -	ret = HYPERVISOR_grant_table_op(GNTTABOP_copy, -					netbk->tx_copy_ops, nr_gops); -	BUG_ON(ret); -	xen_netbk_tx_submit(netbk); +	gnttab_batch_copy(netbk->tx_copy_ops, nr_gops); +	xen_netbk_tx_submit(netbk);  }  static void xen_netbk_idx_release(struct xen_netbk *netbk, u16 pending_idx)  | 
