1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-12-25 11:37:56 +00:00
freebsd/sys/pci
Mike Silbersack b72d483eb5 Fixes from Thomas Nystrom to fix hanging problems experienced by vr cards
under load.

This patch has been tested by Thomas and other for more than a month now,
and all (known) hangs seem to be solved.

Thomas's explanation of the patch:

*  Fix the problem with the printing of the RX-error.

*  Code from if_fet do better deal with the RX-recovery including a
   timeout of the RX-turnoff.

*  The call to vr_rxeof before vr_rxeoc have been moved to a point
   where the RX-part of the chip is turned off. Otherwise there is a
   window where new data could have been written to the buffer chain
   before the RX-part is turned off. If this happens the chip will see
   a busy rx-buffer. I have no evidence that this have occured but
   god knows what the chip will do in this case!

*  I have added a timeout of the TX-turnoff. I have checked and in
   my 900 MHz system the flags for turnoff (both RX & TX) is seen at
   the first check in the loop.

*  I could see that I got the VR_ISR_DROPPED interrupt sometimes and
   started to thinking about this. I then realized that no recovery is
   needed for this case and therefore I only count it as an rxerror
   (which was not done before).

*  Finally I have changed the FIFO RX threshhold to 128 bytes. When I
   did this the VR_ISR_DROPPED interrupt went away. Theory: The chip
   will receive a complete frame before it tries to write it out to
   memory then the RX threshold is set to store'n'forward. IF the frame
   is large AND the next rx frame also is large AND the bus is busy
   transfering a TX frame to the TX fifo THEN the second received
   frame wont fit in the FIFO and is then dropped. By having the RX
   threshold set to 128 the RX fifo is emptied faster.

MFC after:	5 days
2003-01-31 07:37:06 +00:00
..
agp_ali.c Remove a bunch of #include "opt_pci.h". 2002-11-13 17:40:15 +00:00
agp_amd.c Remove a bunch of #include "opt_pci.h". 2002-11-13 17:40:15 +00:00
agp_i810.c Remove M_TRYWAIT/M_WAITOK/M_WAIT. Callers should use 0. 2003-01-21 08:56:16 +00:00
agp_if.m
agp_intel.c Add support for the Intel 82820 UP-only AGP bridge. 2003-01-11 20:08:28 +00:00
agp_sis.c Remove a bunch of #include "opt_pci.h". 2002-11-13 17:40:15 +00:00
agp_via.c Remove a bunch of #include "opt_pci.h". 2002-11-13 17:40:15 +00:00
agp.c Remove M_TRYWAIT/M_WAITOK/M_WAIT. Callers should use 0. 2003-01-21 08:56:16 +00:00
agppriv.h
agpreg.h
agpvar.h
alpm.c
amdpm.c
cy_pci.c
dc21040reg.h
if_dc.c Remove M_TRYWAIT/M_WAITOK/M_WAIT. Callers should use 0. 2003-01-21 08:56:16 +00:00
if_dcreg.h Add preliminary support for the Hawking PN672TX CardBus cards. 2003-01-10 05:37:15 +00:00
if_de.c Remove M_TRYWAIT/M_WAITOK/M_WAIT. Callers should use 0. 2003-01-21 08:56:16 +00:00
if_devar.h
if_en_pci.c
if_mn.c Remove M_TRYWAIT/M_WAITOK/M_WAIT. Callers should use 0. 2003-01-21 08:56:16 +00:00
if_pcn.c Remove M_TRYWAIT/M_WAITOK/M_WAIT. Callers should use 0. 2003-01-21 08:56:16 +00:00
if_pcnreg.h
if_rl.c Remove M_TRYWAIT/M_WAITOK/M_WAIT. Callers should use 0. 2003-01-21 08:56:16 +00:00
if_rlreg.h Add support for Corega FEtherII CB-TXD (CardBus 100M/10M). 2003-01-11 07:10:35 +00:00
if_sf.c Remove M_TRYWAIT/M_WAITOK/M_WAIT. Callers should use 0. 2003-01-21 08:56:16 +00:00
if_sfreg.h
if_sis.c Add PCI revision number for 630A and 900B. Enable parity error detection 2003-01-28 10:55:38 +00:00
if_sisreg.h Fix typo in an unused macro. 2003-01-29 21:56:10 +00:00
if_sk.c Remove M_TRYWAIT/M_WAITOK/M_WAIT. Callers should use 0. 2003-01-21 08:56:16 +00:00
if_skreg.h
if_ste.c Remove M_TRYWAIT/M_WAITOK/M_WAIT. Callers should use 0. 2003-01-21 08:56:16 +00:00
if_stereg.h Change the chip description from "DFE-550TX" to "DL10050". 2002-12-23 21:50:47 +00:00
if_ti.c Remove M_TRYWAIT/M_WAITOK/M_WAIT. Callers should use 0. 2003-01-21 08:56:16 +00:00
if_tireg.h Fix instances of macros with improperly parenthasized arguments. 2002-11-09 12:55:07 +00:00
if_tl.c Remove M_TRYWAIT/M_WAITOK/M_WAIT. Callers should use 0. 2003-01-21 08:56:16 +00:00
if_tlreg.h Use if_printf(ifp, "blah") and device_printf(dev, "blah") instead of 2002-10-21 02:54:50 +00:00
if_vr.c Fixes from Thomas Nystrom to fix hanging problems experienced by vr cards 2003-01-31 07:37:06 +00:00
if_vrreg.h Fixes from Thomas Nystrom to fix hanging problems experienced by vr cards 2003-01-31 07:37:06 +00:00
if_wb.c Remove M_TRYWAIT/M_WAITOK/M_WAIT. Callers should use 0. 2003-01-21 08:56:16 +00:00
if_wbreg.h
if_xl.c Remove the now unused sys/malloc.h header. 2003-01-24 02:42:22 +00:00
if_xlreg.h Correctly identify the 3C920B chipset; although it may ship with some Nforce2 2003-01-22 17:14:33 +00:00
intpm.c Wrap a device_printf() that violates bus space abstractions to figure out 2002-11-08 15:01:02 +00:00
intpmreg.h
locate.pl
meteor_reg.h
meteor.c
ncr.c Remove M_TRYWAIT/M_WAITOK/M_WAIT. Callers should use 0. 2003-01-21 08:56:16 +00:00
ncrreg.h
simos.c Remove M_TRYWAIT/M_WAITOK/M_WAIT. Callers should use 0. 2003-01-21 08:56:16 +00:00
simos.h
ti_fw2.h
ti_fw.h
viapm.c Fix an unparenthasized macro argument. md5s differ but this is likely 2002-11-09 20:13:16 +00:00
xmaciireg.h
xrpu.c Remove M_TRYWAIT/M_WAITOK/M_WAIT. Callers should use 0. 2003-01-21 08:56:16 +00:00