Patchwork [PATCHv2,09/14] virtio-net: simplify rx code

login
register
mail settings
Submitter Michael S. Tsirkin
Date Sept. 25, 2012, 11:12 a.m.
Message ID <e82d87d36fec9402c843dfc8705cc3b863ece4ab.1348571185.git.mst@redhat.com>
Download mbox | patch
Permalink /patch/186774/
State New
Headers show

Comments

Michael S. Tsirkin - Sept. 25, 2012, 11:12 a.m.
Remove code duplication using guest header length that we track.
Drop specific layout requirement for rx buffers: things work
using generic iovec functions in any case.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
 hw/virtio-net.c | 9 ++-------
 1 file changed, 2 insertions(+), 7 deletions(-)

Patch

diff --git a/hw/virtio-net.c b/hw/virtio-net.c
index 358093e..86cd4a9 100644
--- a/hw/virtio-net.c
+++ b/hw/virtio-net.c
@@ -720,12 +720,7 @@  static int32_t virtio_net_flush_tx(VirtIONet *n, VirtQueue *vq)
         struct iovec *out_sg = &elem.out_sg[0];
         struct iovec sg[VIRTQUEUE_MAX_SIZE];
 
-        /* hdr_len refers to the header received from the guest */
-        hdr_len = n->mergeable_rx_bufs ?
-            sizeof(struct virtio_net_hdr_mrg_rxbuf) :
-            sizeof(struct virtio_net_hdr);
-
-        if (out_num < 1 || out_sg->iov_len != hdr_len) {
+        if (out_num < 1) {
             error_report("virtio-net header not in first element");
             exit(1);
         }
@@ -747,7 +742,7 @@  static int32_t virtio_net_flush_tx(VirtIONet *n, VirtQueue *vq)
             out_sg = sg;
         }
 
-        len = hdr_len;
+        len = n->guest_hdr_len;
 
         ret = qemu_sendv_packet_async(&n->nic->nc, out_sg, out_num,
                                       virtio_net_tx_complete);