.msg_controllen = 0,
                .msg_flags = MSG_DONTWAIT,
        };
-       struct virtio_net_hdr_mrg_rxbuf hdr = {
-               .hdr.flags = 0,
-               .hdr.gso_type = VIRTIO_NET_HDR_GSO_NONE
+       struct virtio_net_hdr hdr = {
+               .flags = 0,
+               .gso_type = VIRTIO_NET_HDR_GSO_NONE
        };
        size_t total_len = 0;
        int err, mergeable;
        size_t vhost_len, sock_len;
        struct socket *sock;
        struct iov_iter fixup;
+       __virtio16 num_buffers;
 
        mutex_lock(&vq->mutex);
        sock = vq->private_data;
                }
                /* TODO: Should check and handle checksum. */
 
-               hdr.num_buffers = cpu_to_vhost16(vq, headcount);
+               num_buffers = cpu_to_vhost16(vq, headcount);
                if (likely(mergeable) &&
-                   copy_to_iter(&hdr.num_buffers, 2, &fixup) != 2) {
+                   copy_to_iter(&num_buffers, 2, &fixup) != 2) {
                        vq_err(vq, "Failed num_buffers write");
                        vhost_discard_vq_desc(vq, headcount);
                        break;