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>
