freebsd-skq/sys/pci
truckman 21e6787900 The transmit frame status is stored in the last transmit descriptor for the
frame, not the first.  It is probably also not safe to free the mbuf chain
as soon as the OWN bit is cleared on the first descriptor since the chip
may not be done copying the frame into the transmit FIFO.  Revert the part of
of busdma conversion (if_dc.c rev 1.115) which changed dc_txeof() to look for
the status in the first descriptor and free the mbuf chain when processing
the first descriptor for the frame, and revert the matching changes elsewhere
in the driver.  This part of the busdma change caused the driver to report
spurious collisions and output errors, even when running in full-duplex mode.
Reverting the mbuf chain handling slightly complicates dc_dma_map_txbuf(),
since it is responsible for setting the OWN bits on the descriptors, but does
not normally have direct access to the mbuf chain.

Tested by:
  Dejan Lesjak <dejan.lesjak at ijs.si>  alpha/<Intel 21143 10/100BaseTX>
  "Xin LI" <delphij at frontfree.net>    i386/<Macronix 98713 10/100BaseTX>
  Wiktor Niesiobedzki <bsd at w.evip.pl> i386/<3Com OfficeConnect 10/100B>

Reviewed by:	mux
2004-01-08 06:22:15 +00:00
..
agp_ali.c - Disable AGP on ALI chipsets if aperture size is 0. 2003-11-11 21:49:18 +00:00
agp_amd.c Prefer new location of pci include files (which have only been in the 2003-08-22 07:20:27 +00:00
agp_i810.c Use a switch statement on the devid instead of if-else for determing which 2003-10-23 17:48:30 +00:00
agp_if.m Fix typo. 2003-04-07 10:06:48 +00:00
agp_intel.c Fix a typo in r1.8: The GTLB enable/flush bit is 1<<7, not 1<<8. 2003-09-17 02:58:17 +00:00
agp_nvidia.c PCI header files live in dev/pci. 2003-08-23 19:32:18 +00:00
agp_sis.c Prefer new location of pci include files (which have only been in the 2003-08-22 07:20:27 +00:00
agp_via.c Prefer new location of pci include files (which have only been in the 2003-08-22 07:20:27 +00:00
agp.c - Disable AGP on ALI chipsets if aperture size is 0. 2003-11-11 21:49:18 +00:00
agppriv.h
agpreg.h AGP GART driver for NVIDIA nForce/nForce2 chipsets. 2003-08-23 18:00:31 +00:00
agpvar.h
alpm.c Prefer new location of pci include files (which have only been in the 2003-08-22 07:20:27 +00:00
amdpm.c Make indentation uniform. 2003-09-06 14:04:30 +00:00
cy_pci.c Fixed some minor indentation bugs. 2003-12-02 12:47:08 +00:00
dc21040reg.h
if_dc.c The transmit frame status is stored in the last transmit descriptor for the 2004-01-08 06:22:15 +00:00
if_dcreg.h The transmit frame status is stored in the last transmit descriptor for the 2004-01-08 06:22:15 +00:00
if_de.c Replace the if_name and if_unit members of struct ifnet with new members 2003-10-31 18:32:15 +00:00
if_devar.h Replace the if_name and if_unit members of struct ifnet with new members 2003-10-31 18:32:15 +00:00
if_mn.c Use PCIR_BAR(x) instead of PCIR_MAPS. 2003-09-02 17:30:40 +00:00
if_pcn.c Don't use caddr_t in mchash(). Also use C99 spellings over BSD ones. 2003-12-08 07:54:15 +00:00
if_pcnreg.h Drop the driver lock around calls to if_input to avoid a LOR when 2003-11-14 19:00:32 +00:00
if_rl.c Fix detection of RealTek 8129 PCI cards. Apparently, these cards 2004-01-02 17:22:12 +00:00
if_rlreg.h Drop the driver lock around calls to if_input to avoid a LOR when 2003-11-14 19:00:32 +00:00
if_sf.c Don't use caddr_t in mchash(). Also use C99 spellings over BSD ones. 2003-12-08 07:54:15 +00:00
if_sfreg.h Drop the driver lock around calls to if_input to avoid a LOR when 2003-11-14 19:00:32 +00:00
if_sis.c Vastly improve performance of IRQ handling on stopped interfaces with 2003-12-25 22:14:25 +00:00
if_sisreg.h Vastly improve performance of IRQ handling on stopped interfaces with 2003-12-25 22:14:25 +00:00
if_sk.c Don't use caddr_t in mchash(). Also use C99 spellings over BSD ones. 2003-12-08 07:54:15 +00:00
if_skreg.h Drop the driver lock around calls to if_input to avoid a LOR when 2003-11-14 19:00:32 +00:00
if_ste.c Don't use caddr_t in mchash(). Also use C99 spellings over BSD ones. 2003-12-08 07:54:15 +00:00
if_stereg.h Drop the driver lock around calls to if_input to avoid a LOR when 2003-11-14 19:00:32 +00:00
if_ti.c Drop the driver lock around calls to if_input to avoid a LOR when 2003-11-14 19:00:32 +00:00
if_tireg.h Drop the driver lock around calls to if_input to avoid a LOR when 2003-11-14 19:00:32 +00:00
if_tl.c Don't use caddr_t in mchash(). Also use C99 spellings over BSD ones. 2003-12-08 07:54:15 +00:00
if_tlreg.h Drop the driver lock around calls to if_input to avoid a LOR when 2003-11-14 19:00:32 +00:00
if_vr.c Don't use caddr_t in mchash(). Also use C99 spellings over BSD ones. 2003-12-08 07:54:15 +00:00
if_vrreg.h Drop the driver lock around calls to if_input to avoid a LOR when 2003-11-14 19:00:32 +00:00
if_wb.c Don't use caddr_t in mchash(). Also use C99 spellings over BSD ones. 2003-12-08 07:54:15 +00:00
if_wbreg.h Drop the driver lock around calls to if_input to avoid a LOR when 2003-11-14 19:00:32 +00:00
if_xl.c Don't use caddr_t in mchash(). Also use C99 spellings over BSD ones. 2003-12-08 07:54:15 +00:00
if_xlreg.h Drop the driver lock around calls to if_input to avoid a LOR when 2003-11-14 19:00:32 +00:00
intpm.c Prefer new location of pci include files (which have only been in the 2003-08-22 07:20:27 +00:00
intpmreg.h
locate.pl
ncr.c Revert previous change for ncrreg.h. The header really lives in 2003-08-23 02:25:04 +00:00
ncrreg.h
ti_fw2.h
ti_fw.h
viapm.c Prefer new location of pci include files (which have only been in the 2003-08-22 07:20:27 +00:00
xmaciireg.h
xrpu.c Free major#100 2003-11-03 10:19:33 +00:00
yukonreg.h Add missing file, it is sorely needed to make if_sk.c compile again. 2003-09-20 15:49:22 +00:00