From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1N0bCV-0007vU-Fq for qemu-devel@nongnu.org; Wed, 21 Oct 2009 09:26:03 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1N0bCP-0007mD-Q0 for qemu-devel@nongnu.org; Wed, 21 Oct 2009 09:26:02 -0400 Received: from [199.232.76.173] (port=55719 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1N0bCO-0007lf-T5 for qemu-devel@nongnu.org; Wed, 21 Oct 2009 09:25:57 -0400 Received: from mx1.redhat.com ([209.132.183.28]:32856) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1N0bCN-0007Pc-FG for qemu-devel@nongnu.org; Wed, 21 Oct 2009 09:25:55 -0400 Received: from int-mx05.intmail.prod.int.phx2.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.18]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id n9LDPsb8007478 for ; Wed, 21 Oct 2009 09:25:54 -0400 From: Gerd Hoffmann Date: Wed, 21 Oct 2009 15:25:30 +0200 Message-Id: <1256131543-28416-10-git-send-email-kraxel@redhat.com> In-Reply-To: <1256131543-28416-1-git-send-email-kraxel@redhat.com> References: <1256131543-28416-1-git-send-email-kraxel@redhat.com> Subject: [Qemu-devel] [PATCH 09/22] ne2k_pci: use qdev properties for configuration. List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Gerd Hoffmann Signed-off-by: Gerd Hoffmann --- hw/ne2000.c | 39 ++++++++++++++++++++++++++++++++------- 1 files changed, 32 insertions(+), 7 deletions(-) diff --git a/hw/ne2000.c b/hw/ne2000.c index 7ce56ff..41893b3 100644 --- a/hw/ne2000.c +++ b/hw/ne2000.c @@ -25,6 +25,7 @@ #include "pci.h" #include "net.h" #include "ne2000.h" +#include "loader.h" /* debug NE2000 card */ //#define DEBUG_NE2000 @@ -738,7 +739,7 @@ static void ne2000_cleanup(VLANClientState *vc) { NE2000State *s = vc->opaque; - unregister_savevm("ne2000", s); + s->vc = NULL; } static int pci_ne2000_init(PCIDevice *pci_dev) @@ -758,22 +759,46 @@ 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); + if (!pci_dev->qdev.hotplugged) { + static int loaded = 0; + if (!loaded) { + rom_add_option("pxe-ne2k_pci.bin"); + loaded = 1; + } + } + 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; + + unregister_savevm("ne2000", s); + 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) -- 1.6.2.5