summaryrefslogtreecommitdiff
path: root/hw/net/vhost_net.c
diff options
context:
space:
mode:
authorDamjan Marion <damarion@cisco.com>2014-09-11 14:55:48 -0700
committerMichael S. Tsirkin <mst@redhat.com>2014-09-18 21:51:24 +0300
commitd8e80ae37a7acfea416ad9abbe76b453a73d9cc0 (patch)
tree242808ff8401bce41c318c544b72738cd2b0d159 /hw/net/vhost_net.c
parente43c0b2ea5574efb0bedebf6a7d05916eefeba52 (diff)
downloadqemu-d8e80ae37a7acfea416ad9abbe76b453a73d9cc0.tar.gz
qemu-d8e80ae37a7acfea416ad9abbe76b453a73d9cc0.tar.bz2
qemu-d8e80ae37a7acfea416ad9abbe76b453a73d9cc0.zip
vhost-user: fix VIRTIO_NET_F_MRG_RXBUF negotiation
Header length check should happen only if backend is kernel. For user backend there is no reason to reset this bit. vhost-user code does not define .has_vnet_hdr_len so VIRTIO_NET_F_MRG_RXBUF cannot be negotiated even if both sides support it. Signed-off-by: Damjan Marion <damarion@cisco.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Diffstat (limited to 'hw/net/vhost_net.c')
-rw-r--r--hw/net/vhost_net.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/hw/net/vhost_net.c b/hw/net/vhost_net.c
index b21e7a434f..77bb93e4d7 100644
--- a/hw/net/vhost_net.c
+++ b/hw/net/vhost_net.c
@@ -163,11 +163,11 @@ struct vhost_net *vhost_net_init(VhostNetOptions *options)
if (r < 0) {
goto fail;
}
- if (!qemu_has_vnet_hdr_len(options->net_backend,
- sizeof(struct virtio_net_hdr_mrg_rxbuf))) {
- net->dev.features &= ~(1 << VIRTIO_NET_F_MRG_RXBUF);
- }
if (backend_kernel) {
+ if (!qemu_has_vnet_hdr_len(options->net_backend,
+ sizeof(struct virtio_net_hdr_mrg_rxbuf))) {
+ net->dev.features &= ~(1 << VIRTIO_NET_F_MRG_RXBUF);
+ }
if (~net->dev.features & net->dev.backend_features) {
fprintf(stderr, "vhost lacks feature mask %" PRIu64
" for backend\n",