Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 9 Apr 2009 09:04:27 +0900
From:      Pyun YongHyeon <pyunyh@gmail.com>
To:        Bjoern Koenig <bkoenig@alpha-tierchen.de>
Cc:        stable@freebsd.org, yongari@freebsd.org
Subject:   Re: fxp: stalled transfers
Message-ID:  <20090409000427.GD37714@michelle.cdnetworks.co.kr>
In-Reply-To: <70ba25e4f1a5e43ab8d99b361235dda2.squirrel@webmail.alpha-tierchen.de>
References:  <70ba25e4f1a5e43ab8d99b361235dda2.squirrel@webmail.alpha-tierchen.de>

next in thread | previous in thread | raw e-mail | index | archive | help
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).



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20090409000427.GD37714>