Note: this is the fourth version of this patch. Apply by doing cd /usr/src/sys/arch/sparc/dev patch -p0 < le.patch And then rebuild your kernel. Index: if_le.c =================================================================== RCS file: /cvs/src/sys/arch/sparc/dev/if_le.c,v retrieving revision 1.13 retrieving revision 1.15 diff -u -r1.13 -r1.15 --- if_le.c 1998/11/11 00:50:31 1.13 +++ if_le.c 1998/12/22 15:40:30 1.15 @@ -1,4 +1,4 @@ -/* $OpenBSD: if_le.c,v 1.13 1998/11/11 00:50:31 jason Exp $ */ +/* $OpenBSD: if_le.c,v 1.15 1998/12/22 15:40:30 jason Exp $ */ /* $NetBSD: if_le.c,v 1.50 1997/09/09 20:54:48 pk Exp $ */ /*- @@ -105,7 +105,7 @@ void *arg; { register struct le_softc *lesc = arg; -static int dodrain=0; + static int dodrain=0; if (lesc->sc_dma->sc_regs->csr & D_ERR_PEND) { dodrain = 1; @@ -213,6 +213,9 @@ { struct am7990_softc *sc = ifp->if_softc; struct ifmedia *ifm = &sc->sc_ifmedia; +#if defined(SUN4M) + struct le_softc *lesc = (struct le_softc *)sc; +#endif if (IFM_TYPE(ifm->ifm_media) != IFM_ETHER) return (EINVAL); @@ -226,14 +229,14 @@ switch (IFM_SUBTYPE(ifm->ifm_media)) { #if defined(SUN4M) case IFM_10_T: - if (CPU_ISSUN4M) + if (CPU_ISSUN4M && lesc->sc_dma) lesetutp(sc); else return (EOPNOTSUPP); break; case IFM_AUTO: - if (CPU_ISSUN4M) + if (CPU_ISSUN4M && lesc->sc_dma) return (0); else return (EOPNOTSUPP); @@ -242,7 +245,7 @@ case IFM_10_5: #if defined(SUN4M) - if (CPU_ISSUN4M) + if (CPU_ISSUN4M && lesc->sc_dma) lesetaui(sc); #else return (0);