On Thu, Apr 09, 2009 at 12:05:06AM +0200, Bjoern Koenig
wrote:> Hello,
>
> after upgrading my system from 7.1-RELEASE to recent RELENG_7 I noticed
> stalled network transfers in certain cases. I have an Intel PRO/100
> ethernet adapter (card=0x00408086 chip=0x12298086 rev=0x0c). In general
> networking works fine. I can ping hosts, surf on websites and so on. But
> if I send large files (>1 MB) to my server the transfer stalls after a
few
> kilobytes. This concerns FTP and SCP likewise. While trying to find a
> reason for this problem I did a binary search on the source tree using a
> generic kernel configuration and found out that the following commit is
> responsible for this:
>
> SVN rev 188374 on 2009-02-09 03:48:49Z by yongari
>
> MFC r185330:
> Implement TSO for 82550/82551 controllers.
> o Configure controller to use dynamic TBD as TSO requires that
> operation mode.
> o Add a dummy TBD to tx_cb_u as TSO can access one more TBD in TSO
> operation.
> o Increase a DMA segment size to 4096 to hold a full IP segment
> with link layer header.
> o Unlike other TSO capable controllers, 82550/82551 does not
> modify the first IP packet in TSO operation so driver should
> create an IP packet with proper header. Subsequent IP packets
> are generated from the header information in the first IP packet
> header. Likewise pseudo checksum also should be computed by
> driver for the first packet.
> o TSO requires one more TBD to hold total TCP payload. To make
> code simple for TSO/non-TSO case, increase the index of the
> first available TBD array.
> o Remove KASSERT that checks the size of a DMA segment should be
> less than or equal to MCLBYTES as it's no longer valid in TSO.
> o Tx threshold and number of TBDs field is used to store MSS in
> TSO. So don't set the Tx threshold in TSO case.
>
>
> I didn't look further on this commit for now. Please review it.
Probably
> someone of you can give me a hint.
>
Could you disable TSO and try again?('ifconfig fxp0 -tso' will do
the job).