[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v5 30/31] vhost: add vhost_net_set_backend()
From: |
marcandre . lureau |
Subject: |
[Qemu-devel] [PATCH v5 30/31] vhost: add vhost_net_set_backend() |
Date: |
Thu, 21 Jul 2016 12:57:49 +0400 |
From: Marc-André Lureau <address@hidden>
Not all vhost-user backends support ops->vhost_net_set_backend(). It is
a nicer to provide an assert/error than to crash trying to
call. Furthermore, it improves a bit the code by hiding vhost_ops
details.
Signed-off-by: Marc-André Lureau <address@hidden>
---
hw/net/vhost_net.c | 9 +++------
hw/virtio/vhost.c | 10 ++++++++++
include/hw/virtio/vhost.h | 4 ++++
3 files changed, 17 insertions(+), 6 deletions(-)
diff --git a/hw/net/vhost_net.c b/hw/net/vhost_net.c
index dd41a8e..dc61dc1 100644
--- a/hw/net/vhost_net.c
+++ b/hw/net/vhost_net.c
@@ -242,8 +242,7 @@ static int vhost_net_start_one(struct vhost_net *net,
qemu_set_fd_handler(net->backend, NULL, NULL, NULL);
file.fd = net->backend;
for (file.index = 0; file.index < net->dev.nvqs; ++file.index) {
- const VhostOps *vhost_ops = net->dev.vhost_ops;
- r = vhost_ops->vhost_net_set_backend(&net->dev, &file);
+ r = vhost_net_set_backend(&net->dev, &file);
if (r < 0) {
r = -errno;
goto fail;
@@ -255,8 +254,7 @@ fail:
file.fd = -1;
if (net->nc->info->type == NET_CLIENT_DRIVER_TAP) {
while (file.index-- > 0) {
- const VhostOps *vhost_ops = net->dev.vhost_ops;
- int r = vhost_ops->vhost_net_set_backend(&net->dev, &file);
+ int r = vhost_net_set_backend(&net->dev, &file);
assert(r >= 0);
}
}
@@ -277,8 +275,7 @@ static void vhost_net_stop_one(struct vhost_net *net,
if (net->nc->info->type == NET_CLIENT_DRIVER_TAP) {
for (file.index = 0; file.index < net->dev.nvqs; ++file.index) {
- const VhostOps *vhost_ops = net->dev.vhost_ops;
- int r = vhost_ops->vhost_net_set_backend(&net->dev, &file);
+ int r = vhost_net_set_backend(&net->dev, &file);
assert(r >= 0);
}
}
diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c
index 970261b..c9466f1 100644
--- a/hw/virtio/vhost.c
+++ b/hw/virtio/vhost.c
@@ -1369,3 +1369,13 @@ void vhost_dev_stop(struct vhost_dev *hdev, VirtIODevice
*vdev)
vhost_log_put(hdev, true);
hdev->started = false;
}
+
+int vhost_net_set_backend(struct vhost_dev *hdev,
+ struct vhost_vring_file *file)
+{
+ if (hdev->vhost_ops->vhost_net_set_backend) {
+ return hdev->vhost_ops->vhost_net_set_backend(hdev, file);
+ }
+
+ return -1;
+}
diff --git a/include/hw/virtio/vhost.h b/include/hw/virtio/vhost.h
index 2106ed8..e433089 100644
--- a/include/hw/virtio/vhost.h
+++ b/include/hw/virtio/vhost.h
@@ -86,4 +86,8 @@ uint64_t vhost_get_features(struct vhost_dev *hdev, const int
*feature_bits,
void vhost_ack_features(struct vhost_dev *hdev, const int *feature_bits,
uint64_t features);
bool vhost_has_free_slot(void);
+
+int vhost_net_set_backend(struct vhost_dev *hdev,
+ struct vhost_vring_file *file);
+
#endif
--
2.9.0
- [Qemu-devel] [PATCH v5 20/31] vhost-net: vhost_migration_done is vhost-user specific, (continued)
- [Qemu-devel] [PATCH v5 20/31] vhost-net: vhost_migration_done is vhost-user specific, marcandre . lureau, 2016/07/21
- [Qemu-devel] [PATCH v5 21/31] vhost: add assert() to check runtime behaviour, marcandre . lureau, 2016/07/21
- [Qemu-devel] [PATCH v5 22/31] char: add chr_wait_connected callback, marcandre . lureau, 2016/07/21
- [Qemu-devel] [PATCH v5 23/31] char: add and use tcp_chr_wait_connected, marcandre . lureau, 2016/07/21
- [Qemu-devel] [PATCH v5 24/31] vhost-user: wait until backend init is completed, marcandre . lureau, 2016/07/21
- [Qemu-devel] [PATCH v5 25/31] tests: plug some leaks in virtio-net-test, marcandre . lureau, 2016/07/21
- [Qemu-devel] [PATCH v5 26/31] tests: fix vhost-user-test leak, marcandre . lureau, 2016/07/21
- [Qemu-devel] [PATCH v5 27/31] tests: add /vhost-user/connect-fail test, marcandre . lureau, 2016/07/21
- [Qemu-devel] [PATCH v5 28/31] tests: add a simple /vhost-user/multiqueue test, marcandre . lureau, 2016/07/21
- [Qemu-devel] [PATCH v5 29/31] vhost-user: add error report in vhost_user_write(), marcandre . lureau, 2016/07/21
- [Qemu-devel] [PATCH v5 30/31] vhost: add vhost_net_set_backend(),
marcandre . lureau <=
- [Qemu-devel] [PATCH v5 31/31] RFC: vhost: do not update last avail idx on get_vring_base() failure, marcandre . lureau, 2016/07/21