cvs commit: src/sys/pci if_dc.c if_dcreg.h
Don Lewis
truckman at FreeBSD.org
Wed Jan 7 22:25:42 PST 2004
On 7 Jan, To: src-committers at FreeBSD.org wrote:
> truckman 2004/01/07 22:22:15 PST
>
> FreeBSD src repository
>
> Modified files:
> sys/pci if_dc.c if_dcreg.h
> Log:
> 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
>
> Revision Changes Path
> 1.138 +4 -3 src/sys/pci/if_dc.c
> 1.41 +1 -0 src/sys/pci/if_dcreg.h
This may be a good candidate for 5.2. I've gotten expressions of
interest in having this fixed for the release.
More information about the cvs-all
mailing list