Exemple #1
0
static void
init_vring_queue_pair(struct virtio_net *dev, uint32_t qp_idx)
{
	uint32_t base_idx = qp_idx * VIRTIO_QNUM;

	init_vring_queue(dev->virtqueue[base_idx + VIRTIO_RXQ], qp_idx);
	init_vring_queue(dev->virtqueue[base_idx + VIRTIO_TXQ], qp_idx);
}
Exemple #2
0
static void
reset_vring_queue(struct vhost_virtqueue *vq, int qp_idx)
{
	int callfd;

	callfd = vq->callfd;
	init_vring_queue(vq, qp_idx);
	vq->callfd = callfd;
}
Exemple #3
0
static void
reset_vring_queue(struct virtio_net *dev, uint32_t vring_idx)
{
	struct vhost_virtqueue *vq;
	int callfd;

	if (vring_idx >= VHOST_MAX_VRING) {
		RTE_LOG(ERR, VHOST_CONFIG,
				"Failed not init vring, out of bound (%d)\n",
				vring_idx);
		return;
	}

	vq = dev->virtqueue[vring_idx];
	callfd = vq->callfd;
	init_vring_queue(dev, vring_idx);
	vq->callfd = callfd;
}
Exemple #4
0
int
alloc_vring_queue(struct virtio_net *dev, uint32_t vring_idx)
{
	struct vhost_virtqueue *vq;

	vq = rte_malloc(NULL, sizeof(struct vhost_virtqueue), 0);
	if (vq == NULL) {
		RTE_LOG(ERR, VHOST_CONFIG,
			"Failed to allocate memory for vring:%u.\n", vring_idx);
		return -1;
	}

	dev->virtqueue[vring_idx] = vq;
	init_vring_queue(dev, vring_idx);

	dev->nr_vring += 1;

	return 0;
}