freebsd-dev/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_ali.c
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
agp_via.c
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
agppriv.h
agpreg.h
agpvar.h
alpm.c
amd.c
amd.h
amdpm.c
cy_pci.c
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
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
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
if_sfreg.h
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
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
if_tlreg.h
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
if_xl.c
if_xlreg.h
intpm.c
intpmreg.h
locate.pl
meteor_reg.h
meteor.c
ncr.c
ncrreg.h
ohci_pci.c
simos.c
simos.h
ti_fw2.h At long last, commit the zero copy sockets code. 2002-06-26 03:37:47 +00:00
ti_fw.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
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