59 lines
2.1 KiB
Diff
59 lines
2.1 KiB
Diff
|
|
From 78b2167f1e2fadb4de930bf51c699247031c8880 Mon Sep 17 00:00:00 2001
|
||
|
|
From: tangbinzy <tangbin_yewu@cmss.chinamobile.com>
|
||
|
|
Date: Mon, 4 Sep 2023 08:27:33 +0000
|
||
|
|
Subject: [PATCH] tulip: Assign default MAC address if not specified mainline
|
||
|
|
inclusion commit 052c2579b89b0d87debe8b05594b5180f0fde87d category: bugfix
|
||
|
|
MIME-Version: 1.0
|
||
|
|
Content-Type: text/plain; charset=UTF-8
|
||
|
|
Content-Transfer-Encoding: 8bit
|
||
|
|
|
||
|
|
---------------------------------------------------------------
|
||
|
|
|
||
|
|
The MAC of the tulip card is stored in the EEPROM and at startup
|
||
|
|
tulip_fill_eeprom() is called to initialize the EEPROM with the MAC
|
||
|
|
address given on the command line, e.g.:
|
||
|
|
-device tulip,mac=00:11:22:33:44:55
|
||
|
|
|
||
|
|
In case the mac address was not given on the command line,
|
||
|
|
tulip_fill_eeprom() initializes the MAC in EEPROM with 00:00:00:00:00:00
|
||
|
|
which breaks e.g. a HP-UX guest.
|
||
|
|
|
||
|
|
Fix this problem by moving qemu_macaddr_default_if_unset() a few lines
|
||
|
|
up, so that a default mac address is assigned before tulip_fill_eeprom()
|
||
|
|
initializes the EEPROM.
|
||
|
|
|
||
|
|
Signed-off-by: Helge Deller <deller@gmx.de>
|
||
|
|
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
|
||
|
|
Signed-off-by: Jason Wang <jasowang@redhat.com>
|
||
|
|
|
||
|
|
Signed-off-by: tangbinzy <tangbin_yewu@cmss.chinamobile.com>
|
||
|
|
---
|
||
|
|
hw/net/tulip.c | 4 ++--
|
||
|
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||
|
|
|
||
|
|
diff --git a/hw/net/tulip.c b/hw/net/tulip.c
|
||
|
|
index 5f8badefca..b9e42c322a 100644
|
||
|
|
--- a/hw/net/tulip.c
|
||
|
|
+++ b/hw/net/tulip.c
|
||
|
|
@@ -967,6 +967,8 @@ static void pci_tulip_realize(PCIDevice *pci_dev, Error **errp)
|
||
|
|
pci_conf = s->dev.config;
|
||
|
|
pci_conf[PCI_INTERRUPT_PIN] = 1; /* interrupt pin A */
|
||
|
|
|
||
|
|
+ qemu_macaddr_default_if_unset(&s->c.macaddr);
|
||
|
|
+
|
||
|
|
s->eeprom = eeprom93xx_new(&pci_dev->qdev, 64);
|
||
|
|
tulip_fill_eeprom(s);
|
||
|
|
|
||
|
|
@@ -981,8 +983,6 @@ static void pci_tulip_realize(PCIDevice *pci_dev, Error **errp)
|
||
|
|
|
||
|
|
s->irq = pci_allocate_irq(&s->dev);
|
||
|
|
|
||
|
|
- qemu_macaddr_default_if_unset(&s->c.macaddr);
|
||
|
|
-
|
||
|
|
s->nic = qemu_new_nic(&net_tulip_info, &s->c,
|
||
|
|
object_get_typename(OBJECT(pci_dev)),
|
||
|
|
pci_dev->qdev.id, s);
|
||
|
|
--
|
||
|
|
2.41.0.windows.1
|
||
|
|
|