From owner-freebsd-net@FreeBSD.ORG Mon Mar 12 05:19:13 2012 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 44FDF106564A for ; Mon, 12 Mar 2012 05:19:13 +0000 (UTC) (envelope-from pyunyh@gmail.com) Received: from mail-pz0-f54.google.com (mail-pz0-f54.google.com [209.85.210.54]) by mx1.freebsd.org (Postfix) with ESMTP id 149BB8FC0A for ; Mon, 12 Mar 2012 05:19:12 +0000 (UTC) Received: by dald2 with SMTP id d2so5158237dal.13 for ; Sun, 11 Mar 2012 22:19:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:date:to:cc:subject:message-id:reply-to:references:mime-version :content-type:content-disposition:in-reply-to:user-agent; bh=3/quzGmWoBKFSSLRyfiGtZV2wBSSYAN4x6zR/Ui7gzs=; b=w7OMRBLdWaBrCNNRzjyV3GhHIrZs6lbTsWzz88sfEJXEuXvTL0ldQ2Qu0n0Z0v9YHP ByxMuDcM9iDJ8jJVGJTAwW5sF2KCy0dG4as6qToMpB0dvocLdvS1njZ7H1KHC8vTFv8y 5xSYC5i9mv6ISqLbh2VfXYGFCXtYOBXu93mvkD0zkqWwq83itltk9kJrv6oT3yP08Bm2 tnwCQSut77MgG/hMFGdtpLZw5xijdfMdShL4oYYQU8RnDH3NgWJXa9PLG89uS9hdlWxv rJj521YYVISsT+RG5FqtEbUkIQLm3scvTlUCgMg0kbbJwPOOt6K8l36iBQSn4ZEEc9u5 PGDg== Received: by 10.68.242.197 with SMTP id ws5mr17835496pbc.84.1331529552675; Sun, 11 Mar 2012 22:19:12 -0700 (PDT) Received: from pyunyh@gmail.com ([114.111.62.249]) by mx.google.com with ESMTPS id r9sm2812726pbi.53.2012.03.11.22.19.10 (version=TLSv1/SSLv3 cipher=OTHER); Sun, 11 Mar 2012 22:19:12 -0700 (PDT) Received: by pyunyh@gmail.com (sSMTP sendmail emulation); Mon, 12 Mar 2012 14:19:07 -0700 From: YongHyeon PYUN Date: Mon, 12 Mar 2012 14:19:07 -0700 To: Andreas Longwitz Message-ID: <20120312211907.GC3671@michelle.cdnetworks.com> References: <4F594856.3030303@incore.de> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4F594856.3030303@incore.de> User-Agent: Mutt/1.4.2.3i Cc: freebsd-net@freebsd.org Subject: Re: Intel 82550 Pro/100 Ethernet and Microcode X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: pyunyh@gmail.com List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Mar 2012 05:19:13 -0000 On Fri, Mar 09, 2012 at 01:01:26AM +0100, Andreas Longwitz wrote: > Hi, > > recently I installed FreeBSD 8.2 Stable on some older machines with > Intel 82550 and 82550C and found that the loading of microcode with the > parameter link0 in the ifconfig command did not work anymore. The reason > for this is the commit r223608 for if_fxp.c with the comment: > > Disable microcode loading for 82550 and 82550C controllers. Loading > the microcode caused SCB timeouts. > > I do not agree with this motivation and try to explain why. > > Without loading the microcode on 82550(C) there is a problem with > mount_nfs -U server:/bigdisk /mnt > cp /mnt/bigfile bigfile > > NFS with UDP works with 8 KB blocks and the cp hangs after some seconds > and you see SCB messages on the console. The reason is the TCO bug of > the hardware mentioned in rcvbundl.h. This old hardware bug disappears > after loading the microcode. > > All my hardware run without problems in FreeBSD 4.11, loading of > microcode is done by the function fxp_load_ucode(). Later there was > trouble with the loading of microcode, see kern/103332 and kern/118909. > I have posted my solution for the problem to kern/103332 but > unfortunately this PR is not online anymore and so I repeat my > considerations here. > > The difference of the function fxp_load_ucode() of FreeBSD 4.11 and > later versions is that this function in 4.11 has an own private memory > buffer for construction of the microcode message. In later versions > fxp_load_ucode() must use a memory buffer that is shared with other > parts of the driver and these other parts of the driver have problems if > the shared memory buffer was used by fxp_load_ucode() before. Thats the > reason for "Loading microcode caused SCB timeouts". > > Therefore my proposal is to revert r223608 and to clean the used shared > buffer at the end of the function fxp_load_ucode(). The following patch > works for me for years now: > > --- if_fxp.c.orig 2012-01-26 12:43:09.000000000 +0100 > +++ if_fxp.c 2012-03-08 23:41:32.000000000 +0100 > @@ -3085,6 +3081,7 @@ > sc->tunable_int_delay, > uc->bundle_max_offset == 0 ? 0 : sc->tunable_bundle_max); > sc->flags |= FXP_FLAG_UCODE; > + bzero(cbp, (uc->length + 2) * sizeof(uint32_t)); > } Unfortunately this still does not make any difference on i82550C controller(still spews SCB timeouts). By chance, do you have original i82550? Show me the output of 'pciconf -l'.