Commit 146061e9 authored by Dariusz Stojaczyk's avatar Dariusz Stojaczyk Committed by Daniel Verkamp
Browse files

rte_virtio: don't negotiate features twice for virtio-user



Moved negotiation to virtio_init_device.
This patch also cleans up feature negotiation a bit.

Change-Id: Ia67e8d694a5acebcbe37679a657d68d6c46979db
Signed-off-by: default avatarDariusz Stojaczyk <dariuszx.stojaczyk@intel.com>
Reviewed-on: https://review.gerrithub.io/377089


Tested-by: default avatarSPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: default avatarTomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
parent 01aba263
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -506,7 +506,7 @@ bdev_virtio_initialize(void)
	}

	/* TODO check rc, add virtio_dev_deinit() */
	virtio_init_device(vdev, VIRTIO_PMD_DEFAULT_GUEST_FEATURES);
	virtio_init_device(vdev, VIRTIO_SCSI_DEV_SUPPORTED_FEATURES);
	virtio_dev_start(vdev);

	base->vdev = vdev;
+1 −3
Original line number Diff line number Diff line
@@ -261,7 +261,7 @@ virtio_negotiate_features(struct virtio_dev *dev, uint64_t req_features)
	 * Negotiate features: Subset of device feature bits are written back
	 * guest feature bits.
	 */
	dev->guest_features = req_features;
	dev->req_guest_features = req_features;
	dev->guest_features = vtpci_negotiate_features(dev, host_features);
	PMD_INIT_LOG(DEBUG, "features after negotiate = %" PRIx64,
		dev->guest_features);
@@ -280,8 +280,6 @@ virtio_negotiate_features(struct virtio_dev *dev, uint64_t req_features)
		}
	}

	dev->req_guest_features = req_features;

	return 0;
}

+3 −6
Original line number Diff line number Diff line
@@ -62,14 +62,11 @@ struct virtio_req {
};

/* Features desired/implemented by this driver. */
#define VIRTIO_PMD_DEFAULT_GUEST_FEATURES	\
	(1u << VIRTIO_SCSI_F_INOUT	  |	\
#define VIRTIO_SCSI_DEV_SUPPORTED_FEATURES		\
	(1ULL << VIRTIO_SCSI_F_INOUT		|	\
	 1ULL << VIRTIO_F_VERSION_1		|	\
	 1ULL << VIRTIO_F_IOMMU_PLATFORM)

#define VIRTIO_PMD_SUPPORTED_GUEST_FEATURES	\
	(VIRTIO_PMD_DEFAULT_GUEST_FEATURES)

uint16_t virtio_recv_pkts(struct virtqueue *vq, struct virtio_req **reqs,
		uint16_t nb_pkts);

+1 −1
Original line number Diff line number Diff line
@@ -530,7 +530,7 @@ vtpci_negotiate_features(struct virtio_dev *dev, uint64_t host_features)
	 * Limit negotiated features to what the driver, virtqueue, and
	 * host all support.
	 */
	features = host_features & dev->guest_features;
	features = host_features & dev->req_guest_features;
	VTPCI_OPS(dev)->set_features(dev, features);

	return features;
+1 −1
Original line number Diff line number Diff line
@@ -105,7 +105,7 @@ virtio_user_get_features(struct virtio_dev *vdev)
	struct virtio_user_dev *dev = virtio_dev_get_user_dev(vdev);

	/* unmask feature bits defined in vhost user protocol */
	return dev->device_features & VIRTIO_PMD_SUPPORTED_GUEST_FEATURES;
	return dev->device_features;
}

static void
Loading