[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v4 29/29] vhost: add vhost_net_set_backend()
From: |
marcandre . lureau |
Subject: |
[Qemu-devel] [PATCH v4 29/29] vhost: add vhost_net_set_backend() |
Date: |
Thu, 7 Jul 2016 03:00:53 +0200 |
From: Marc-André Lureau <address@hidden>
Not all vhost-user backends support ops->vhost_net_set_backend(), it is
a bit nicer to provide an assert/error than to crash trying to call
it. 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 a8ffcb2..b6c4c5a 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_OPTIONS_KIND_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_OPTIONS_KIND_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 3688236..96c57aa 100644
--- a/hw/virtio/vhost.c
+++ b/hw/virtio/vhost.c
@@ -1313,3 +1313,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 b60d758..4bc8ccd 100644
--- a/include/hw/virtio/vhost.h
+++ b/include/hw/virtio/vhost.h
@@ -85,4 +85,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 v4 19/29] vhost-net: vhost_migration_done is vhost-user specific, (continued)
- [Qemu-devel] [PATCH v4 19/29] vhost-net: vhost_migration_done is vhost-user specific, marcandre . lureau, 2016/07/06
- [Qemu-devel] [PATCH v4 20/29] vhost: add assert() to check runtime behaviour, marcandre . lureau, 2016/07/06
- [Qemu-devel] [PATCH v4 22/29] char: add and use tcp_chr_wait_connected, marcandre . lureau, 2016/07/06
- [Qemu-devel] [PATCH v4 21/29] char: add chr_wait_connected callback, marcandre . lureau, 2016/07/06
- [Qemu-devel] [PATCH v4 23/29] vhost-user: wait until backend init is completed, marcandre . lureau, 2016/07/06
- [Qemu-devel] [PATCH v4 24/29] tests: plug some leaks in virtio-net-test, marcandre . lureau, 2016/07/06
- [Qemu-devel] [PATCH v4 25/29] tests: fix vhost-user-test leak, marcandre . lureau, 2016/07/06
- [Qemu-devel] [PATCH v4 26/29] tests: add /vhost-user/connect-fail test, marcandre . lureau, 2016/07/06
- [Qemu-devel] [PATCH v4 27/29] tests: add a simple /vhost-user/multiqueue test, marcandre . lureau, 2016/07/06
- [Qemu-devel] [PATCH v4 28/29] vhost-user: add error report in vhost_user_write(), marcandre . lureau, 2016/07/06
- [Qemu-devel] [PATCH v4 29/29] vhost: add vhost_net_set_backend(),
marcandre . lureau <=
- Re: [Qemu-devel] [PATCH v4 00/29] vhost-user reconnect fixes, Marc-André Lureau, 2016/07/07
- Re: [Qemu-devel] [PATCH v4 00/29] vhost-user reconnect fixes, Michael S. Tsirkin, 2016/07/20