summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Wright <jason@cvs.openbsd.org>2003-03-24 17:40:01 +0000
committerJason Wright <jason@cvs.openbsd.org>2003-03-24 17:40:01 +0000
commita18db15e78aa10682d3327b9d47a1470782fdb20 (patch)
treee61625e6a71c4a3cc5fdb2684aec3f636bbea6a3
parent757538563d9bee41bc2c216c3c5570bb162a1751 (diff)
splimp() around xl_reset() during autoconf. something in xl_reset() wants
to generate an interrupt before the rings are setup correctly on some variants; ok deraadt.
-rw-r--r--sys/dev/ic/xl.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/sys/dev/ic/xl.c b/sys/dev/ic/xl.c
index 511decb73d6..01594b2fa14 100644
--- a/sys/dev/ic/xl.c
+++ b/sys/dev/ic/xl.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: xl.c,v 1.48 2003/01/05 20:07:44 deraadt Exp $ */
+/* $OpenBSD: xl.c,v 1.49 2003/03/24 17:40:00 jason Exp $ */
/*
* Copyright (c) 1997, 1998, 1999
@@ -2577,7 +2577,9 @@ xl_attach(sc)
struct ifmedia *ifm;
sc->xl_unit = sc->sc_dev.dv_unit;
+ i = splimp();
xl_reset(sc, 1);
+ splx(i);
/*
* Get station address from the EEPROM.
@@ -2755,7 +2757,9 @@ xl_attach(sc)
*/
if (sc->xl_xcvr == XL_XCVR_AUTO) {
xl_choose_xcvr(sc, 0);
+ i = splimp();
xl_reset(sc, 0);
+ splx(i);
}
if (sc->xl_media & XL_MEDIAOPT_BT) {