Commit 86745294 authored by Dariusz Stojaczyk's avatar Dariusz Stojaczyk Committed by Jim Harris
Browse files

virtio: remove virtio_dev_start



Also removed vdev->started field.
Used vdev->status field to determine
if a device has been `started`.
This is simply a cleanup.

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


Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Tested-by: default avatarSPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: default avatarDaniel Verkamp <daniel.verkamp@intel.com>
parent b9482461
Loading
Loading
Loading
Loading
+0 −6
Original line number Diff line number Diff line
@@ -1133,12 +1133,6 @@ bdev_virtio_scsi_scan(struct virtio_dev *vdev, virtio_create_device_cb cb_fn, vo
		return rc;
	}

	rc = virtio_dev_start(vdev);
	if (rc != 0) {
		spdk_dma_free(base);
		return rc;
	}

	base->vdev = vdev;
	TAILQ_INIT(&base->found_disks);

+3 −34
Original line number Diff line number Diff line
@@ -363,33 +363,6 @@ virtio_dev_free(struct virtio_dev *dev)
	free(dev);
}

int
virtio_dev_start(struct virtio_dev *vdev)
{
	/* Enable uio/vfio intr/eventfd mapping: althrough we already did that
	 * in device configure, but it could be unmapped  when device is
	 * stopped.
	 */
	/** TODO: interrupt handling for virtio_scsi */
#if 0
	if (dev->data->dev_conf.intr_conf.lsc ||
	    dev->data->dev_conf.intr_conf.rxq) {
		rte_intr_disable(dev->intr_handle);

		if (rte_intr_enable(dev->intr_handle) < 0) {
			PMD_DRV_LOG(ERR, "interrupt enable failed");
			return -EIO;
		}
	}
#endif

	SPDK_DEBUGLOG(SPDK_TRACE_VIRTIO_DEV, "Notified backend at initialization\n");

	vdev->started = 1;

	return 0;
}

static void
vq_ring_free_chain(struct virtqueue *vq, uint16_t desc_idx)
{
@@ -536,17 +509,15 @@ virtqueue_enqueue_xmit(struct virtqueue *vq, struct virtio_req *req)
uint16_t
virtio_recv_pkts(struct virtqueue *vq, struct virtio_req **reqs, uint16_t nb_pkts)
{
	struct virtio_dev *vdev = vq->vdev;
	struct virtio_req *rxm;
	uint16_t nb_used, num, nb_rx;
	uint32_t len[VIRTIO_MBUF_BURST_SZ];
	struct virtio_req *rcv_pkts[VIRTIO_MBUF_BURST_SZ];
	uint32_t i;

	nb_rx = 0;
	if (spdk_unlikely(vdev->started == 0))
		return nb_rx;
	assert(virtio_dev_get_status(vq->vdev) & VIRTIO_CONFIG_S_DRIVER_OK);

	nb_rx = 0;
	nb_used = VIRTQUEUE_NUSED(vq);

	virtio_rmb();
@@ -578,9 +549,7 @@ virtio_xmit_pkt(struct virtqueue *vq, struct virtio_req *req)
	struct virtio_dev *vdev = vq->vdev;
	int rc;

	if (spdk_unlikely(vdev->started == 0))
		return -EIO;

	assert(virtio_dev_get_status(vdev) & VIRTIO_CONFIG_S_DRIVER_OK);
	virtio_rmb();

	rc = virtqueue_enqueue_xmit(vq, req);
+2 −5
Original line number Diff line number Diff line
@@ -67,7 +67,6 @@ struct virtio_dev {

	/** Name of this virtio dev set by backend */
	char		*name;
	uint16_t	started;

	/** Max number of queues the host supports. */
	uint16_t	max_queues;
@@ -205,9 +204,8 @@ uint16_t virtio_recv_pkts(struct virtqueue *vq, struct virtio_req **reqs,
 *
 * \param vq virtio queue
 * \param req virtio request
 * \return 0 on success, negative errno on error. In case the ring is full
 * or no free descriptors are available -ENOMEM is returned. If virtio
 * device owning the virtqueue is not started -EIO is returned.
 * \return 0 on success. In case the ring is full or no free descriptors
 * are available -ENOMEM is returned.
 */
int virtio_xmit_pkt(struct virtqueue *vq, struct virtio_req *req);

@@ -222,7 +220,6 @@ struct virtio_dev *virtio_dev_construct(const struct virtio_dev_ops *ops, void *

int virtio_dev_init(struct virtio_dev *hw, uint64_t req_features);
void virtio_dev_free(struct virtio_dev *dev);
int virtio_dev_start(struct virtio_dev *hw);

/**
 * Bind a virtqueue with given index to the current thread;