Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 18 Apr 1997 15:18:12 -0700 (MST)
From:      Terry Lambert <terry@lambert.org>
To:        adrian@virginia.edu
Cc:        terry@lambert.org, hackers@freebsd.org
Subject:   Re: DEC 21140-Ax problems resolved?
Message-ID:  <199704182218.PAA03086@phaeton.artisoft.com>
In-Reply-To: <Pine.SUN.3.90.970418174147.20169E-100000@stretch.cs.Virginia.edu> from "Adrian T. Filipi-Martin" at Apr 18, 97 05:45:17 pm

next in thread | previous in thread | raw e-mail | index | archive | help
> > If that fails, the NetBSD driver was recently announced as ported
> > on the -current list (which is probably a better place to look,
> > especially if the 'x' in your '-Ax' is recent, since your card
> > may have overflow problems which need to be worked around in software).
> 
> 	Specifically the chip is a 21140-AC.  That's not too new.  Which 
> files do I need to get in addition to if_de.c?  I tried this route, but I 
> must have mised something, because it wouldn't compile.

You need the new driver.  The 'C' is a known rogue.  There were some
issues with the 21x40-?? where x=0 worked and x=1 didn't, but they
were (I thought) resolved in -current.


Here is Mark Dawson's posting on the subject of the hangup stuff... with
fix.  Like I said, you'd do better searching the -current archives.


Note that this does not fully update the driver to the NetBSD state
(from what I recall).


					Terry Lambert
					terry@lambert.org
---
Any opinions in this posting are my own and not those of my present
or previous employers.
========================================================================
NetBSD's de driver (1.83 1997/03/25 21:12:17) has a fix for 21140A
hangup's which is absent in FreeBSD's version...

in tulip_pci_attach():

    if (chipid == TULIP_21140A && revinfo <= 0x22)
        sc->tulip_features |= TULIP_HAVE_RXBUGGY;

in tulip_intr_handler():

            /*
             * Pass 2.[012] of the 21140A-A[CDE] may hang and/or corrupt data
             * on receive overflows.
             */
           if ((misses & 0x0FFE0000) && (sc->tulip_features &
TULIP_HAVE_RXBUGGY)) {
                /*
                 * Stop the receiver process and spin until it's stopped.
                 * Tell rx_intr to drop the packets it dequeues.
                 */
                TULIP_CSR_WRITE(sc, csr_command, sc->tulip_cmdmode &
~TULIP_CMD_RXRUN);
                while ((TULIP_CSR_READ(sc, csr_status) &
TULIP_STS_RXSTOPPED) == 0)
                    ;
                TULIP_CSR_WRITE(sc, csr_status, TULIP_STS_RXSTOPPED);
                sc->tulip_flags |= TULIP_RXBAD;
            }
========================================================================



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199704182218.PAA03086>