Revision f5436dd9 hw/virtio-net.c

b/hw/virtio-net.c
152 152
        features |= (1 << VIRTIO_NET_F_HOST_TSO4);
153 153
        features |= (1 << VIRTIO_NET_F_HOST_TSO6);
154 154
        features |= (1 << VIRTIO_NET_F_HOST_ECN);
155

  
156
        features |= (1 << VIRTIO_NET_F_GUEST_CSUM);
157
        features |= (1 << VIRTIO_NET_F_GUEST_TSO4);
158
        features |= (1 << VIRTIO_NET_F_GUEST_TSO6);
159
        features |= (1 << VIRTIO_NET_F_GUEST_ECN);
155 160
    }
156 161

  
157 162
    return features;
......
177 182
    VirtIONet *n = to_virtio_net(vdev);
178 183

  
179 184
    n->mergeable_rx_bufs = !!(features & (1 << VIRTIO_NET_F_MRG_RXBUF));
185

  
186
    if (n->has_vnet_hdr) {
187
        tap_set_offload(n->vc->peer,
188
                        (features >> VIRTIO_NET_F_GUEST_CSUM) & 1,
189
                        (features >> VIRTIO_NET_F_GUEST_TSO4) & 1,
190
                        (features >> VIRTIO_NET_F_GUEST_TSO6) & 1,
191
                        (features >> VIRTIO_NET_F_GUEST_ECN)  & 1);
192
    }
180 193
}
181 194

  
182 195
static int virtio_net_handle_rx_mode(VirtIONet *n, uint8_t cmd,
......
702 715

  
703 716
        if (n->has_vnet_hdr) {
704 717
            tap_using_vnet_hdr(n->vc->peer, 1);
718
            tap_set_offload(n->vc->peer,
719
                            (n->vdev.features >> VIRTIO_NET_F_GUEST_CSUM) & 1,
720
                            (n->vdev.features >> VIRTIO_NET_F_GUEST_TSO4) & 1,
721
                            (n->vdev.features >> VIRTIO_NET_F_GUEST_TSO6) & 1,
722
                            (n->vdev.features >> VIRTIO_NET_F_GUEST_ECN)  & 1);
705 723
        }
706 724
    }
707 725

  

Also available in: Unified diff