summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorGabriel L. Somlo <gsomlo@gmail.com>2014-06-19 11:55:36 -0400
committerMichael S. Tsirkin <mst@redhat.com>2014-06-23 17:38:00 +0300
commit39bb8ee737595e9b264d075dfcd7d86f4d3f1133 (patch)
tree6efd2fc27d8c1ffedaa14d9af56be830651b78cb
parent6883b5914029fa8ffc42a43d2a2188493c27fd58 (diff)
downloadfocaccia-qemu-39bb8ee737595e9b264d075dfcd7d86f4d3f1133.tar.gz
focaccia-qemu-39bb8ee737595e9b264d075dfcd7d86f4d3f1133.zip
e1000: signal guest on successful link auto-negotiation
Generate a link status change interrupt once link auto-netotiation
is successfully completed. This does not affect Linux and Windows
(XP and 7 tested) in any way, but is needed by the stock OS X driver
(AppleIntel8254XEthernet.kext), which would otherwise fail to notice
the link status change event.

Signed-off-by: Gabriel Somlo <somlo@cmu.edu>
Reviewed-by: Alexander Graf <agraf@suse.de>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>


-rw-r--r--hw/net/e1000.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/hw/net/e1000.c b/hw/net/e1000.c
index d6ef802ce9..d20f8c8ff2 100644
--- a/hw/net/e1000.c
+++ b/hw/net/e1000.c
@@ -213,6 +213,7 @@ e1000_autoneg_timer(void *opaque)
         s->phy_reg[PHY_LP_ABILITY] |= MII_LPAR_LPACK;
         s->phy_reg[PHY_STATUS] |= MII_SR_AUTONEG_COMPLETE;
         DBGOUT(PHY, "Auto negotiation is completed\n");
+        set_ics(s, 0, E1000_ICS_LSC); /* signal link status change to guest */
     }
 }