Revision 53c25cea hw/virtio-net.c
b/hw/virtio-net.c | ||
---|---|---|
585 | 585 |
virtio_cleanup(&n->vdev); |
586 | 586 |
} |
587 | 587 |
|
588 |
static void virtio_net_init(PCIDevice *pci_dev)
|
|
588 |
VirtIODevice *virtio_net_init(DeviceState *dev)
|
|
589 | 589 |
{ |
590 | 590 |
VirtIONet *n; |
591 | 591 |
static int virtio_net_id; |
592 | 592 |
|
593 |
n = (VirtIONet *)virtio_init_pci(pci_dev, "virtio-net", |
|
594 |
PCI_VENDOR_ID_REDHAT_QUMRANET, |
|
595 |
PCI_DEVICE_ID_VIRTIO_NET, |
|
596 |
PCI_VENDOR_ID_REDHAT_QUMRANET, |
|
597 |
VIRTIO_ID_NET, |
|
598 |
PCI_CLASS_NETWORK_ETHERNET, 0x00, |
|
599 |
sizeof(struct virtio_net_config)); |
|
593 |
n = (VirtIONet *)virtio_common_init("virtio-net", VIRTIO_ID_NET, |
|
594 |
sizeof(struct virtio_net_config), |
|
595 |
sizeof(VirtIONet)); |
|
600 | 596 |
|
601 | 597 |
n->vdev.get_config = virtio_net_get_config; |
602 | 598 |
n->vdev.set_config = virtio_net_set_config; |
... | ... | |
607 | 603 |
n->rx_vq = virtio_add_queue(&n->vdev, 256, virtio_net_handle_rx); |
608 | 604 |
n->tx_vq = virtio_add_queue(&n->vdev, 256, virtio_net_handle_tx); |
609 | 605 |
n->ctrl_vq = virtio_add_queue(&n->vdev, 16, virtio_net_handle_ctrl); |
610 |
qdev_get_macaddr(&pci_dev->qdev, n->mac);
|
|
606 |
qdev_get_macaddr(dev, n->mac); |
|
611 | 607 |
n->status = VIRTIO_NET_S_LINK_UP; |
612 |
n->vc = qdev_get_vlan_client(&pci_dev->qdev,
|
|
608 |
n->vc = qdev_get_vlan_client(dev, |
|
613 | 609 |
virtio_net_receive, |
614 | 610 |
virtio_net_can_receive, |
615 | 611 |
virtio_net_cleanup, n); |
... | ... | |
628 | 624 |
|
629 | 625 |
register_savevm("virtio-net", virtio_net_id++, VIRTIO_NET_VM_VERSION, |
630 | 626 |
virtio_net_save, virtio_net_load, n); |
631 |
} |
|
632 | 627 |
|
633 |
static void virtio_net_register_devices(void) |
|
634 |
{ |
|
635 |
pci_qdev_register("virtio_net", sizeof(VirtIONet), virtio_net_init); |
|
628 |
return &n->vdev; |
|
636 | 629 |
} |
637 |
|
|
638 |
device_init(virtio_net_register_devices) |
Also available in: Unified diff