summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBlue Swirl <blauwirbel@gmail.com>2009-06-09 15:02:00 +0000
committerBlue Swirl <blauwirbel@gmail.com>2009-06-09 15:02:00 +0000
commit32c86e95b258515099d04f9eff48efc57a469bf7 (patch)
treef9733ba1364a0aaa3c9a640a8f6531dfc42e44dc
parent98ba2632fc2695838657a972fce69270cb79dc77 (diff)
downloadqemu-32c86e95b258515099d04f9eff48efc57a469bf7.tar.gz
Register reset functions for e1000 and rtl8139
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
-rw-r--r--hw/e1000.c21
-rw-r--r--hw/rtl8139.c4
2 files changed, 17 insertions, 8 deletions
diff --git a/hw/e1000.c b/hw/e1000.c
index 26657922c5..a04d7b1fe4 100644
--- a/hw/e1000.c
+++ b/hw/e1000.c
@@ -1058,6 +1058,18 @@ pci_e1000_uninit(PCIDevice *dev)
return 0;
}
+static void e1000_reset(void *opaque)
+{
+ E1000State *d = opaque;
+
+ memset(d->phy_reg, 0, sizeof d->phy_reg);
+ memmove(d->phy_reg, phy_reg_init, sizeof phy_reg_init);
+ memset(d->mac_reg, 0, sizeof d->mac_reg);
+ memmove(d->mac_reg, mac_reg_init, sizeof mac_reg_init);
+ d->rxbuf_min_shift = 1;
+ memset(&d->tx, 0, sizeof d->tx);
+}
+
static void pci_e1000_init(PCIDevice *pci_dev)
{
E1000State *d = (E1000State *)pci_dev;
@@ -1098,13 +1110,6 @@ static void pci_e1000_init(PCIDevice *pci_dev)
checksum = (uint16_t) EEPROM_SUM - checksum;
d->eeprom_data[EEPROM_CHECKSUM_REG] = checksum;
- memset(d->phy_reg, 0, sizeof d->phy_reg);
- memmove(d->phy_reg, phy_reg_init, sizeof phy_reg_init);
- memset(d->mac_reg, 0, sizeof d->mac_reg);
- memmove(d->mac_reg, mac_reg_init, sizeof mac_reg_init);
- d->rxbuf_min_shift = 1;
- memset(&d->tx, 0, sizeof d->tx);
-
d->vc = qdev_get_vlan_client(&d->dev.qdev,
e1000_receive, e1000_can_receive,
e1000_cleanup, d);
@@ -1114,6 +1119,8 @@ static void pci_e1000_init(PCIDevice *pci_dev)
register_savevm(info_str, -1, 2, nic_save, nic_load, d);
d->dev.unregister = pci_e1000_uninit;
+ qemu_register_reset(e1000_reset, 0, d);
+ e1000_reset(d);
}
static void e1000_register_devices(void)
diff --git a/hw/rtl8139.c b/hw/rtl8139.c
index d99f35c130..ea2ca25182 100644
--- a/hw/rtl8139.c
+++ b/hw/rtl8139.c
@@ -1170,8 +1170,9 @@ static void rtl8139_reset_rxring(RTL8139State *s, uint32_t bufferSize)
s->RxBufAddr = 0;
}
-static void rtl8139_reset(RTL8139State *s)
+static void rtl8139_reset(void *opaque)
{
+ RTL8139State *s = opaque;
int i;
/* restore MAC address */
@@ -3473,6 +3474,7 @@ static void pci_rtl8139_init(PCIDevice *dev)
s->pci_dev = (PCIDevice *)d;
qdev_get_macaddr(&dev->qdev, s->macaddr);
+ qemu_register_reset(rtl8139_reset, 0, s);
rtl8139_reset(s);
s->vc = qdev_get_vlan_client(&dev->qdev,
rtl8139_receive, rtl8139_can_receive,