[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 39/41] vhost: add vhost_net_set_backend()
From: |
Michael S. Tsirkin |
Subject: |
[Qemu-devel] [PULL 39/41] vhost: add vhost_net_set_backend() |
Date: |
Fri, 29 Jul 2016 06:17:22 +0300 |
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>
Reviewed-by: Michael S. Tsirkin <address@hidden>
Signed-off-by: Michael S. Tsirkin <address@hidden>
---
include/hw/virtio/vhost.h | 4 ++++
hw/net/vhost_net.c | 9 +++------
hw/virtio/vhost.c | 10 ++++++++++
3 files changed, 17 insertions(+), 6 deletions(-)
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
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 2d0d1d1..b0e8ecc 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;
+}
--
MST
- [Qemu-devel] [PULL 29/41] vhost-user: add get_vhost_net() assertions, (continued)
- [Qemu-devel] [PULL 29/41] vhost-user: add get_vhost_net() assertions, Michael S. Tsirkin, 2016/07/28
- [Qemu-devel] [PULL 30/41] Revert "vhost-net: do not crash if backend is not present", Michael S. Tsirkin, 2016/07/28
- [Qemu-devel] [PULL 31/41] vhost-net: vhost_migration_done is vhost-user specific, Michael S. Tsirkin, 2016/07/28
- [Qemu-devel] [PULL 32/41] vhost: add assert() to check runtime behaviour, Michael S. Tsirkin, 2016/07/28
- [Qemu-devel] [PULL 33/41] char: add chr_wait_connected callback, Michael S. Tsirkin, 2016/07/28
- [Qemu-devel] [PULL 35/41] vhost-user: wait until backend init is completed, Michael S. Tsirkin, 2016/07/28
- [Qemu-devel] [PULL 34/41] char: add and use tcp_chr_wait_connected, Michael S. Tsirkin, 2016/07/28
- [Qemu-devel] [PULL 36/41] tests: plug some leaks in virtio-net-test, Michael S. Tsirkin, 2016/07/28
- [Qemu-devel] [PULL 37/41] tests: fix vhost-user-test leak, Michael S. Tsirkin, 2016/07/28
- [Qemu-devel] [PULL 38/41] vhost-user: add error report in vhost_user_write(), Michael S. Tsirkin, 2016/07/28
- [Qemu-devel] [PULL 39/41] vhost: add vhost_net_set_backend(),
Michael S. Tsirkin <=
- [Qemu-devel] [PULL 41/41] mptsas: Fix a migration compatible issue, Michael S. Tsirkin, 2016/07/28
- [Qemu-devel] [PULL 40/41] vhost: do not update last avail idx on get_vring_base() failure, Michael S. Tsirkin, 2016/07/28
- Re: [Qemu-devel] [PULL 00/41] pc, pci, virtio: cleanups, fixes, Peter Maydell, 2016/07/29