From patchwork Fri Oct 16 13:42:02 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [RfC,v3,09/10] ne2k_pci: qdev-ify. Date: Fri, 16 Oct 2009 03:42:02 -0000 From: Gerd Hoffmann X-Patchwork-Id: 36224 Message-Id: <1255700523-15270-10-git-send-email-kraxel@redhat.com> To: qemu-devel@nongnu.org Cc: Gerd Hoffmann Signed-off-by: Gerd Hoffmann --- hw/ne2000.c | 27 +++++++++++++++++++++------ 1 files changed, 21 insertions(+), 6 deletions(-) diff --git a/hw/ne2000.c b/hw/ne2000.c index 7ce56ff..f296b10 100644 --- a/hw/ne2000.c +++ b/hw/ne2000.c @@ -758,22 +758,37 @@ static int pci_ne2000_init(PCIDevice *pci_dev) PCI_ADDRESS_SPACE_IO, ne2000_map); s = &d->ne2000; s->irq = d->dev.irq[0]; - qdev_get_macaddr(&d->dev.qdev, s->c.macaddr.a); + + qemu_macaddr_default_if_unset(&s->c.macaddr); ne2000_reset(s); - s->vc = qdev_get_vlan_client(&d->dev.qdev, + s->vc = qemu_new_vlan_client(s->c.vlan, s->c.peer, + pci_dev->qdev.info->name, pci_dev->qdev.id, ne2000_can_receive, ne2000_receive, NULL, ne2000_cleanup, s); - qemu_format_nic_info_str(s->vc, s->c.macaddr.a); register_savevm("ne2000", -1, 3, pci_ne2000_save, pci_ne2000_load, d); return 0; } +static int pci_ne2000_exit(PCIDevice *pci_dev) +{ + PCINE2000State *d = DO_UPCAST(PCINE2000State, dev, pci_dev); + NE2000State *s = &d->ne2000; + + qemu_del_vlan_client(s->vc); + return 0; +} + static PCIDeviceInfo ne2000_info = { - .qdev.name = "ne2k_pci", - .qdev.size = sizeof(PCINE2000State), - .init = pci_ne2000_init, + .qdev.name = "ne2k_pci", + .qdev.size = sizeof(PCINE2000State), + .init = pci_ne2000_init, + .exit = pci_ne2000_exit, + .qdev.props = (Property[]) { + DEFINE_NIC_PROPERTIES(PCINE2000State, ne2000.c), + DEFINE_PROP_END_OF_LIST(), + } }; static void ne2000_register_devices(void)