summaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
authorBjoern A. Zeeb <bz@FreeBSD.org>2008-04-08 11:51:17 +0000
committerBjoern A. Zeeb <bz@FreeBSD.org>2008-04-08 11:51:17 +0000
commit902827f6f3e795e979ab94359bc9f75ea05f539e (patch)
tree91b5da26bca032545419babfafbf63fdc46e728c /sys/dev
parent97344c5281b4c5ce3cd9d0c2f3a90b23fb9ff926 (diff)
Notes
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/bge/if_bge.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/sys/dev/bge/if_bge.c b/sys/dev/bge/if_bge.c
index 4cd179930773..b0238f7e16b8 100644
--- a/sys/dev/bge/if_bge.c
+++ b/sys/dev/bge/if_bge.c
@@ -3795,6 +3795,23 @@ bge_ifmedia_upd_locked(struct ifnet *ifp)
}
mii_mediachg(mii);
+ /*
+ * Force an interrupt so that we will call bge_link_upd
+ * if needed and clear any pending link state attention.
+ * Without this we are not getting any further interrupts
+ * for link state changes and thus will not UP the link and
+ * not be able to send in bge_start_locked. The only
+ * way to get things working was to receive a packet and
+ * get an RX intr.
+ * bge_tick should help for fiber cards and we might not
+ * need to do this here if BGE_FLAG_TBI is set but as
+ * we poll for fiber anyway it should not harm.
+ */
+ BGE_SETBIT(sc, BGE_MISC_LOCAL_CTL, BGE_MLC_INTR_SET);
+#ifdef notyet
+ BGE_SETBIT(sc, BGE_HCC_MODE, BGE_HCCMODE_ATTN);
+#endif
+
return (0);
}