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);