Revision 8eca6b1b hw/virtio-net.c
b/hw/virtio-net.c | ||
---|---|---|
113 | 113 |
return features; |
114 | 114 |
} |
115 | 115 |
|
116 |
static uint32_t virtio_net_bad_features(VirtIODevice *vdev) |
|
117 |
{ |
|
118 |
uint32_t features = 0; |
|
119 |
|
|
120 |
/* Linux kernel 2.6.25. It understood MAC (as everyone must), |
|
121 |
* but also these: */ |
|
122 |
features |= (1 << VIRTIO_NET_F_MAC); |
|
123 |
features |= (1 << VIRTIO_NET_F_GUEST_CSUM); |
|
124 |
features |= (1 << VIRTIO_NET_F_GUEST_TSO4); |
|
125 |
features |= (1 << VIRTIO_NET_F_GUEST_TSO6); |
|
126 |
features |= (1 << VIRTIO_NET_F_GUEST_ECN); |
|
127 |
|
|
128 |
return features & virtio_net_get_features(vdev); |
|
129 |
} |
|
130 |
|
|
116 | 131 |
static void virtio_net_set_features(VirtIODevice *vdev, uint32_t features) |
117 | 132 |
{ |
118 | 133 |
VirtIONet *n = to_virtio_net(vdev); |
... | ... | |
580 | 595 |
n->vdev.set_config = virtio_net_set_config; |
581 | 596 |
n->vdev.get_features = virtio_net_get_features; |
582 | 597 |
n->vdev.set_features = virtio_net_set_features; |
598 |
n->vdev.bad_features = virtio_net_bad_features; |
|
583 | 599 |
n->vdev.reset = virtio_net_reset; |
584 | 600 |
n->rx_vq = virtio_add_queue(&n->vdev, 256, virtio_net_handle_rx); |
585 | 601 |
n->tx_vq = virtio_add_queue(&n->vdev, 256, virtio_net_handle_tx); |
Also available in: Unified diff