fxp: stalled transfers

Pyun YongHyeon pyunyh at gmail.com
Thu Apr 9 00:03:25 UTC 2009

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).

More information about the freebsd-stable mailing list