[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL v2 45/45] net: set endianness on all backend devices
From: |
Michael S. Tsirkin |
Subject: |
[Qemu-devel] [PULL v2 45/45] net: set endianness on all backend devices |
Date: |
Sat, 6 Feb 2016 21:15:17 +0200 |
From: Laurent Vivier <address@hidden>
commit 5be7d9f1b1452613b95c6ba70b8d7ad3d0797991
vhost-net: tell tap backend about the vnet endianness
makes vhost net to set the endianness of the device, but only for
the first device.
In case of multiqueue, we have multiple devices... This patch sets the
endianness for all the devices of the interface.
Signed-off-by: Laurent Vivier <address@hidden>
Reviewed-by: Michael S. Tsirkin <address@hidden>
Signed-off-by: Michael S. Tsirkin <address@hidden>
Reviewed-by: Greg Kurz <address@hidden>
Reviewed-by: Cornelia Huck <address@hidden>
Reviewed-by: Jason Wang <address@hidden>
---
hw/net/vhost_net.c | 23 +++++++++++------------
1 file changed, 11 insertions(+), 12 deletions(-)
diff --git a/hw/net/vhost_net.c b/hw/net/vhost_net.c
index 0bd5131..3940a04 100644
--- a/hw/net/vhost_net.c
+++ b/hw/net/vhost_net.c
@@ -298,21 +298,19 @@ int vhost_net_start(VirtIODevice *dev, NetClientState
*ncs,
BusState *qbus = BUS(qdev_get_parent_bus(DEVICE(dev)));
VirtioBusState *vbus = VIRTIO_BUS(qbus);
VirtioBusClass *k = VIRTIO_BUS_GET_CLASS(vbus);
- int r, e, i;
+ int r, e, i, j;
if (!k->set_guest_notifiers) {
error_report("binding does not support guest notifiers");
- r = -ENOSYS;
- goto err;
+ return -ENOSYS;
}
- r = vhost_net_set_vnet_endian(dev, ncs[0].peer, true);
- if (r < 0) {
- goto err;
- }
-
- for (i = 0; i < total_queues; i++) {
- vhost_net_set_vq_index(get_vhost_net(ncs[i].peer), i * 2);
+ for (j = 0; j < total_queues; j++) {
+ r = vhost_net_set_vnet_endian(dev, ncs[j].peer, true);
+ if (r < 0) {
+ goto err_endian;
+ }
+ vhost_net_set_vq_index(get_vhost_net(ncs[j].peer), j * 2);
}
r = k->set_guest_notifiers(qbus->parent, total_queues * 2, true);
@@ -341,8 +339,9 @@ err_start:
fflush(stderr);
}
err_endian:
- vhost_net_set_vnet_endian(dev, ncs[0].peer, false);
-err:
+ while (--j >= 0) {
+ vhost_net_set_vnet_endian(dev, ncs[j].peer, false);
+ }
return r;
}
--
MST
- [Qemu-devel] [PULL v2 36/45] pc: Move APIC and NUMA data from PcGuestInfo to PCMachineState, (continued)
- [Qemu-devel] [PULL v2 36/45] pc: Move APIC and NUMA data from PcGuestInfo to PCMachineState, Michael S. Tsirkin, 2016/02/06
- [Qemu-devel] [PULL v2 37/45] pc: Eliminate PcGuestInfo struct, Michael S. Tsirkin, 2016/02/06
- [Qemu-devel] [PULL v2 38/45] acpi: take oem_id in build_header(), optionally, Michael S. Tsirkin, 2016/02/06
- [Qemu-devel] [PULL v2 39/45] acpi: expose oem_id and oem_table_id in build_rsdt(), Michael S. Tsirkin, 2016/02/06
- [Qemu-devel] [PULL v2 40/45] acpi: add function to extract oem_id and oem_table_id from the user's SLIC, Michael S. Tsirkin, 2016/02/06
- [Qemu-devel] [PULL v2 41/45] pc: set the OEM fields in the RSDT and the FADT from the SLIC, Michael S. Tsirkin, 2016/02/06
- [Qemu-devel] [PULL v2 42/45] dimm: Correct type of MemoryHotplugState->base, Michael S. Tsirkin, 2016/02/06
- [Qemu-devel] [PULL v2 43/45] intel_iommu: large page support, Michael S. Tsirkin, 2016/02/06
- [Qemu-devel] [PULL v2 44/45] fix MSI injection on Xen, Michael S. Tsirkin, 2016/02/06
- [Qemu-devel] [PULL v2 45/45] net: set endianness on all backend devices,
Michael S. Tsirkin <=
- Re: [Qemu-devel] [PULL v2 00/45] pc and misc cleanups and fixes, virtio optimizations, Peter Maydell, 2016/02/08