Date: Sat, 10 Mar 2012 15:29:02 -0800 From: YongHyeon PYUN <pyunyh@gmail.com> To: Adrian Chadd <adrian@freebsd.org> Cc: jfv@freebsd.org, freebsd-net@freebsd.org, Andreas Longwitz <longwitz@incore.de>, Pyun YongHyeon <yongari@freebsd.org> Subject: Re: Intel 82550 Pro/100 Ethernet and Microcode Message-ID: <20120310232902.GA4566@michelle.cdnetworks.com> In-Reply-To: <CAJ-Vmo===vnCgh2hg2azjYY=hzJ7S%2BGGYF_-q2tiReHPME4FpQ@mail.gmail.com> References: <4F594856.3030303@incore.de> <CAJ-Vmo===vnCgh2hg2azjYY=hzJ7S%2BGGYF_-q2tiReHPME4FpQ@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, Mar 09, 2012 at 01:36:22AM -0800, Adrian Chadd wrote: > Hi! > > That's actually a really good catch! > > yongari/jfv, what do you think? > Give me some more time to verify it on one of i82550 controller I have. > > Adrian > > On 8 March 2012 16:01, Andreas Longwitz <longwitz@incore.de> 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)); > > ?} > > > > > > -- > > Dr. Andreas Longwitz > > > > Data Service GmbH > > Beethovenstr. 2A > > 23617 Stockelsdorf > > Amtsgericht L?beck, HRB 318 BS > > Gesch?ftsf?hrer: Wilfried Paepcke, Dr. Andreas Longwitz, Josef Flatau
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120310232902.GA4566>