Commit 8f371c7d authored by Pawel Wodkowski's avatar Pawel Wodkowski Committed by Ben Walker
Browse files

vhost: introduce spdk_vhost_vring_desc_to_iov



Extract vring_dev to iovec translation logic to common place.


Change-Id: I0c6fc5582dfe341e867ce6749ff29d14a9d12d94
Signed-off-by: default avatarPawel Wodkowski <pawelx.wodkowski@intel.com>
Reviewed-on: https://review.gerrithub.io/363582


Tested-by: default avatarSPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: default avatarDaniel Verkamp <daniel.verkamp@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
parent 1b93872d
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -150,6 +150,15 @@ spdk_vhost_vring_desc_is_wr(struct vring_desc *cur_desc)
	return !!(cur_desc->flags & VRING_DESC_F_WRITE);
}

bool
spdk_vhost_vring_desc_to_iov(struct spdk_vhost_dev *vdev, struct iovec *iov,
			     const struct vring_desc *desc)
{
	iov->iov_base =  spdk_vhost_gpa_to_vva(vdev, desc->addr);
	iov->iov_len = desc->len;
	return !iov->iov_base;
}

struct spdk_vhost_dev *
spdk_vhost_dev_find_by_vid(int vid)
{
+3 −0
Original line number Diff line number Diff line
@@ -100,6 +100,9 @@ struct vring_desc *spdk_vhost_vring_desc_get_next(struct vring_desc *vq_desc,
		struct vring_desc *cur_desc);
bool spdk_vhost_vring_desc_is_wr(struct vring_desc *cur_desc);

bool spdk_vhost_vring_desc_to_iov(struct spdk_vhost_dev *vdev, struct iovec *iov,
				  const struct vring_desc *desc);

struct spdk_vhost_dev *spdk_vhost_dev_find_by_vid(int vid);

int spdk_vhost_dev_construct(struct spdk_vhost_dev *vdev, const char *name, uint64_t cpumask,
+2 −4
Original line number Diff line number Diff line
@@ -358,8 +358,7 @@ task_data_setup(struct spdk_vhost_task *task,

		/* All remaining descriptors are data. */
		while (iovcnt < iovcnt_max) {
			iovs[iovcnt].iov_base = spdk_vhost_gpa_to_vva(vdev, desc->addr);
			iovs[iovcnt].iov_len = desc->len;
			spdk_vhost_vring_desc_to_iov(vdev, &iovs[iovcnt], desc);
			len += desc->len;
			iovcnt++;

@@ -395,8 +394,7 @@ task_data_setup(struct spdk_vhost_task *task,

		/* Process descriptors up to response. */
		while (!spdk_vhost_vring_desc_is_wr(desc) && iovcnt < iovcnt_max) {
			iovs[iovcnt].iov_base = spdk_vhost_gpa_to_vva(vdev, desc->addr);
			iovs[iovcnt].iov_len = desc->len;
			spdk_vhost_vring_desc_to_iov(vdev, &iovs[iovcnt], desc);
			len += desc->len;
			iovcnt++;