qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH] Fix e1000 emulation for FreeBSD 8.0-current
@ 2009-06-07 19:29 Juergen Lock
  2009-06-07 20:07 ` Juergen Lock
  2009-06-13 22:21 ` Anthony Liguori
  0 siblings, 2 replies; 3+ messages in thread
From: Juergen Lock @ 2009-06-07 19:29 UTC (permalink / raw)
  To: qemu-devel

FreeBSD 8.0-current svn rev >= 190872 changed the way initial
MAC addresses are read in the em(4) driver, it now reads them from
E1000_RA instead of from the EEPROM.  See e1000_read_mac_addr_generic()
in sys/dev/e1000/if_em.c:
	http://svn.freebsd.org/viewvc/base/head/sys/dev/e1000/e1000_nvm.c?view=markup&pathrev=190872
	http://svn.freebsd.org/viewvc/base?view=revision&revision=190872

diff --git a/hw/e1000.c b/hw/e1000.c
index 2665792..5d614bd 100644
--- a/hw/e1000.c
+++ b/hw/e1000.c
@@ -1102,6 +1102,16 @@ static void pci_e1000_init(PCIDevice *pci_dev)
     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);
+    /*
+     * FreeBSD 8.0-current svn rev >= 190872 expects the mac address here,
+     * see e1000_read_mac_addr_generic() in sys/dev/e1000/if_em.c:
+     * http://svn.freebsd.org/viewvc/base/head/sys/dev/e1000/e1000_nvm.c?view=markup&pathrev=190872
+     * http://svn.freebsd.org/viewvc/base?view=revision&revision=190872
+     */
+    d->mac_reg[RA] = (macaddr[3]<<24) | (macaddr[2]<<16) |
+        (macaddr[1]<<8) | macaddr[0]; 
+    d->mac_reg[RA+1] = (macaddr[5]<<8) | macaddr[4]; 
+
     d->rxbuf_min_shift = 1;
     memset(&d->tx, 0, sizeof d->tx);
 

^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2009-06-13 22:21 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-06-07 19:29 [Qemu-devel] [PATCH] Fix e1000 emulation for FreeBSD 8.0-current Juergen Lock
2009-06-07 20:07 ` Juergen Lock
2009-06-13 22:21 ` Anthony Liguori

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).