summaryrefslogtreecommitdiffstats
path: root/src/drivers/net/forcedeth.c
diff options
context:
space:
mode:
authorYann Cézard2011-03-20 13:29:05 +0100
committerMichael Brown2011-03-20 13:36:09 +0100
commit9215b7f4c0e24cceeac42d8ced5b4af824c4b011 (patch)
treeaa17817b2dcf6c48999b9668e9878ba6ea2075f2 /src/drivers/net/forcedeth.c
parent[console] Try to avoid problems caused by keycode 86 (diff)
downloadipxe-9215b7f4c0e24cceeac42d8ced5b4af824c4b011.tar.gz
ipxe-9215b7f4c0e24cceeac42d8ced5b4af824c4b011.tar.xz
ipxe-9215b7f4c0e24cceeac42d8ced5b4af824c4b011.zip
[forcedeth] Clear the MII link status register on link status changes
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/drivers/net/forcedeth.c')
-rw-r--r--src/drivers/net/forcedeth.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/drivers/net/forcedeth.c b/src/drivers/net/forcedeth.c
index 6876b005..918f502f 100644
--- a/src/drivers/net/forcedeth.c
+++ b/src/drivers/net/forcedeth.c
@@ -967,6 +967,12 @@ static void
forcedeth_link_status ( struct net_device *netdev )
{
struct forcedeth_private *priv = netdev_priv ( netdev );
+ void *ioaddr = priv->mmio_addr;
+ u32 mii_status;
+
+ /* Clear the MII link change status */
+ mii_status = readl ( ioaddr + NvRegMIIStatus );
+ writel ( NVREG_MIISTAT_LINKCHANGE, ioaddr + NvRegMIIStatus );
if ( nv_update_linkspeed ( priv ) == 1 )
netdev_link_up ( netdev );