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