diff options
Diffstat (limited to 'drivers/vhost/net.c')
| -rw-r--r-- | drivers/vhost/net.c | 15 | 
1 files changed, 8 insertions, 7 deletions
diff --git a/drivers/vhost/net.c b/drivers/vhost/net.c index 68e4ecd1cc0e..d7a04d573988 100644 --- a/drivers/vhost/net.c +++ b/drivers/vhost/net.c @@ -118,7 +118,7 @@ struct vhost_net_virtqueue {  	/* Number of XDP frames batched */  	int batched_xdp;  	/* an array of userspace buffers info */ -	struct ubuf_info *ubuf_info; +	struct ubuf_info_msgzc *ubuf_info;  	/* Reference counting for outstanding ubufs.  	 * Protected by vq mutex. Writers must also take device mutex. */  	struct vhost_net_ubuf_ref *ubufs; @@ -382,8 +382,9 @@ static void vhost_zerocopy_signal_used(struct vhost_net *net,  }  static void vhost_zerocopy_callback(struct sk_buff *skb, -				    struct ubuf_info *ubuf, bool success) +				    struct ubuf_info *ubuf_base, bool success)  { +	struct ubuf_info_msgzc *ubuf = uarg_to_msgzc(ubuf_base);  	struct vhost_net_ubuf_ref *ubufs = ubuf->ctx;  	struct vhost_virtqueue *vq = ubufs->vq;  	int cnt; @@ -871,7 +872,7 @@ static void handle_tx_zerocopy(struct vhost_net *net, struct socket *sock)  	size_t len, total_len = 0;  	int err;  	struct vhost_net_ubuf_ref *ubufs; -	struct ubuf_info *ubuf; +	struct ubuf_info_msgzc *ubuf;  	bool zcopy_used;  	int sent_pkts = 0; @@ -907,14 +908,14 @@ static void handle_tx_zerocopy(struct vhost_net *net, struct socket *sock)  			ubuf = nvq->ubuf_info + nvq->upend_idx;  			vq->heads[nvq->upend_idx].id = cpu_to_vhost32(vq, head);  			vq->heads[nvq->upend_idx].len = VHOST_DMA_IN_PROGRESS; -			ubuf->callback = vhost_zerocopy_callback;  			ubuf->ctx = nvq->ubufs;  			ubuf->desc = nvq->upend_idx; -			ubuf->flags = SKBFL_ZEROCOPY_FRAG; -			refcount_set(&ubuf->refcnt, 1); +			ubuf->ubuf.callback = vhost_zerocopy_callback; +			ubuf->ubuf.flags = SKBFL_ZEROCOPY_FRAG; +			refcount_set(&ubuf->ubuf.refcnt, 1);  			msg.msg_control = &ctl;  			ctl.type = TUN_MSG_UBUF; -			ctl.ptr = ubuf; +			ctl.ptr = &ubuf->ubuf;  			msg.msg_controllen = sizeof(ctl);  			ubufs = nvq->ubufs;  			atomic_inc(&ubufs->refcount);  |