freebsd-src/sys/pci
Doug Ambrisko d44ef39e51 Fixes for the D-Link DFE-580 card.
This is pretty much fixes any issue I can find:
     -  Watchdog timeouts were due to starting the TX DMA engine
        before we had a packet ready for it.  So the first packet
        sent never got out only if we sent more then one packet
        at a time did the others make it out and not blow up.
        Of course reseting the chip then caused us not to transmit
        the first packet again ie. catch-22.  This required logic changes.
     -  Combine interrupts on TX packets being queued up.
     -  Don't keep running around the RX ring since we might get
        out of sync so only go around once per receive
     -  Let the RX engine recover via the poll interface which is
        similar to the TX interface.  This way the chip wakes
        up with no effort when we read enough packets.
     -  Do better hand-shaking on RX & TX packets so they don't
        start of to soon.
     -  Force a duplex setting when the link comes up after
        an ste_init or it will default to half-duplex and be
        really slow.  This only happens on subsequent ste_init.
        The first one worked.
     -  Don't call stat_update for every overflow.  We only monitor
        the collisions so the tick interval is good enough for that.
        Just read in the collision stats to minimize bus reads.
     -  Don't read the miibus every tick since it uses delays and
        delays are not good for performance.
     -  Tie link events directly to the miibus code so the port
        gets set correctly if someone changes the port settings.
     -  Reduce the extreme number of {R,T}FD's.  They would consume
        130K of kernel memory for each NIC.
     -  Set the TX_THRESH to wait for the DMA engine to complete
        before running the TX FIFO.  This hurts peak TX performance
        but under bi-directional load the DMA engine can't keep up
        with the FIFO.  Testing shows that we end up in the case
        anyways (a la dc(4) issues but worse since the RX engine hogs
	everything).
     -  When stopping the card do a reset since the reset verifies the
	card has stopped.  Otherwise on heavy RX load the RX DMA engine
	is still stuffing packets into memory.  If that happens after
	we free the DMA area memory bits get scribled in memory and
	bad things happen.

This card still has seemingly unfixable issues under heavy RX load in
which the card takes over the PCI bus.

Sponsored by:	Vernier Networks
MFC after:	1 week
2002-08-07 22:31:27 +00:00
..
agp.c o If the page returned by vm_page_grab(VM_ALLOC_ZERO) isn't prezeroed, 2002-07-21 04:07:26 +00:00
agp_ali.c Make these compile again by adding proc.h include for GIANT_REQUIRED 2001-07-05 21:28:47 +00:00
agp_amd.c Fix some nits in AMD AGP driver. Remove excess malloc and move a bzero 2002-04-15 18:57:26 +00:00
agp_i810.c o If the page returned by vm_page_grab(VM_ALLOC_ZERO) isn't prezeroed, 2002-07-21 04:07:26 +00:00
agp_if.m
agp_intel.c - Use more correct values to initialize the AGP controller during setup. 2002-07-17 02:52:01 +00:00
agp_sis.c Make these compile again by adding proc.h include for GIANT_REQUIRED 2001-07-05 21:28:47 +00:00
agp_via.c Recognise VIA Apollo KT133A bridge. 2001-08-30 14:17:48 +00:00
agppriv.h
agpreg.h This patch will fix the lockups associated with AMD 751,761,762 based AGP 2001-12-07 05:41:26 +00:00
agpvar.h Allow retrieval of the virtual address of the AGP aperture 2001-12-19 08:54:29 +00:00
alpm.c Major rework of the iicbus/smbus framework: 2002-03-23 15:49:15 +00:00
amd.c Move unused functions into #if 0 ... #endif. 2001-05-06 08:07:10 +00:00
amd.h
amdpm.c smbus_alloc_bus is not part of the smbus interface anymore 2002-03-23 18:27:16 +00:00
cy_pci.c Remove __P. 2002-03-20 02:08:01 +00:00
dc21040reg.h Fix typo in the BSD copyright: s/withough/without/ 2002-06-02 20:05:59 +00:00
if_dc.c Fix if_timer logic to make sure that there is always a timeout 2002-06-30 22:05:46 +00:00
if_dcreg.h Add suspend/resume code mostly merged from fxp/rl driver. 2002-05-06 10:55:42 +00:00
if_de.c Fix typo in the BSD copyright: s/withough/without/ 2002-06-02 20:05:59 +00:00
if_devar.h Fix typo in the BSD copyright: s/withough/without/ 2002-06-02 20:05:59 +00:00
if_en_pci.c Remove __P. 2002-03-20 02:08:01 +00:00
if_mn.c Repond properly to NGM_TEXT_CONFIG messages. 2002-08-04 20:50:50 +00:00
if_pcn.c Fix if_timer logic to make sure that there is always a timeout 2002-06-30 22:16:22 +00:00
if_pcnreg.h Change and clean the mutex lock interface. 2001-02-09 06:11:45 +00:00
if_rl.c If we get 0xffff back when reading the status register, assume the card 2002-07-30 17:31:42 +00:00
if_rlreg.h Add support for the D-Link DFE-690TXD Cardbus card which has a RealTek 8139 2002-05-06 13:43:00 +00:00
if_sf.c Change callers of mtx_init() to pass in an appropriate lock type name. In 2002-04-04 21:03:38 +00:00
if_sfreg.h Still more changes to try to prevent TX lockups. Will wait for one more 2001-08-16 00:32:20 +00:00
if_sis.c Use new interface for ether_input(). 2002-08-07 16:08:54 +00:00
if_sisreg.h Make sure that if_timer does not get reset if there are packets 2002-06-30 21:59:08 +00:00
if_sk.c catch up with mextadd callback taking a void argument instead of a caddr_t. 2002-06-29 01:49:22 +00:00
if_skreg.h Change and clean the mutex lock interface. 2001-02-09 06:11:45 +00:00
if_ste.c Fixes for the D-Link DFE-580 card. 2002-08-07 22:31:27 +00:00
if_stereg.h Fixes for the D-Link DFE-580 card. 2002-08-07 22:31:27 +00:00
if_ti.c catch up with mextfree callback change when TI_PRIVATE_JUMBOS is defined. 2002-06-29 11:26:05 +00:00
if_tireg.h At long last, commit the zero copy sockets code. 2002-06-26 03:37:47 +00:00
if_tl.c Change callers of mtx_init() to pass in an appropriate lock type name. In 2002-04-04 21:03:38 +00:00
if_tlreg.h Change and clean the mutex lock interface. 2001-02-09 06:11:45 +00:00
if_vr.c Make sure to set the DMA transfer length register, plus one 2002-08-05 13:24:06 +00:00
if_vrreg.h Make sure to set both sets of registers which control the RX and TX buffer 2002-07-31 19:58:36 +00:00
if_wb.c remove or replace caddr_t with void. 2002-06-28 23:48:23 +00:00
if_wbreg.h Change and clean the mutex lock interface. 2001-02-09 06:11:45 +00:00
if_xl.c Change callers of mtx_init() to pass in an appropriate lock type name. In 2002-04-04 21:03:38 +00:00
if_xlreg.h Fix a problem where stats overflow interrupts would cause 2001-12-17 22:24:19 +00:00
intpm.c Major rework of the iicbus/smbus framework: 2002-03-23 15:49:15 +00:00
intpmreg.h
locate.pl
meteor.c Remove __P. 2002-03-20 02:08:01 +00:00
meteor_reg.h
ncr.c s/adress/address/ 2001-07-23 12:05:27 +00:00
ncrreg.h
ohci_pci.c KNF style the code, ready for an MFC. 2002-02-17 11:58:58 +00:00
simos.c Remove __P. 2002-03-20 02:08:01 +00:00
simos.h
ti_fw.h At long last, commit the zero copy sockets code. 2002-06-26 03:37:47 +00:00
ti_fw2.h At long last, commit the zero copy sockets code. 2002-06-26 03:37:47 +00:00
uhci_pci.c Add PCI IDs for the A, B, and C UHCI controllers in the ICH4. 2002-07-19 22:17:02 +00:00
viapm.c Major rework of the iicbus/smbus framework: 2002-03-23 15:49:15 +00:00
xmaciireg.h
xrpu.c Redo the pps bit to avoid digging into the private bits of the timecounter. 2002-04-26 21:22:02 +00:00