Date: Wed, 19 Feb 1997 11:30:42 +0100 (MET) From: Luigi Rizzo <luigi@labinfo.iet.unipi.it> To: matt@lkg.dec.com (Matt Thomas) Cc: hackers@freebsd.org, dg@freebsd.org Subject: if_de bug found! Message-ID: <199702191030.LAA09311@labinfo.iet.unipi.it> In-Reply-To: <3.0.32.19970215162211.0068f3e0@netrix.lkg.dec.com> from "Matt Thomas" at Feb 15, 97 04:28:37 pm
next in thread | previous in thread | raw e-mail | index | archive | help
After long and painful debugging I found the bug with the 21140A driver (if_de.c) from netbsd. The driver has a workaround for a bug of the 21140A when buffers overflow, and stops the receiver and resets the board when this occurs. This is done in the driver (around line 3230) by reading from CSR8 into "misses". Matt said this is an 'extremely rare' event, on my board, though, it turned out to happen at the end of every interrupt... A look at the 21140A reference manuals (on line on the DEC site) shows that the 3 high bits of CSR8 are set, so that they should be ignored. After doing this, the driver works like a charm. Probably the correct fix is to trigger the workaround only when b16 of CSR8 is set. Matt ? Thanks to Matt for writing the driver and suggesting that the event is rare, and to DEC for making the hardware manuals available on line. I'll submit a PR shortly. This might be a 2.2 candidate, if the if_de driver in 2.2 has the same workaround. David, can you check ? Thanks Luigi -----------------------------+-------------------------------------- Luigi Rizzo | Dip. di Ingegneria dell'Informazione email: luigi@iet.unipi.it | Universita' di Pisa tel: +39-50-568533 | via Diotisalvi 2, 56126 PISA (Italy) fax: +39-50-568522 | http://www.iet.unipi.it/~luigi/ _____________________________|______________________________________
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199702191030.LAA09311>