Under heavy load internet gets killed, only a reboot can bring it back up

Jeremy Chadwick koitsu at FreeBSD.org
Wed Oct 15 07:43:07 PDT 2008


On Wed, Oct 15, 2008 at 04:24:21PM +0200, Aniruddha wrote:
> On Wed, 2008-10-15 at 21:09 +0900, PYUN Yong-Hyeon wrote:
> > This controller is known to buggy one. See below.
> > 
> > [...]
> > 
> >  > > Trying to mount root from ufs:/dev/ad16s3a
> >  > > WARNING: / was not properly dismounted
> >  > > GEOM_LABEL: Label ext2fs/home removed.
> >  > > GEOM_LABEL: Label ext2fs/data removed.
> >  > > mskc0: Uncorrectable PCI Express error
> >  > > mskc0: Uncorrectable PCI Express error
> >  > 
> >  > Those errors at the end of your dmesg don't look good; could be the sign
> >  > of a NIC or motherboard that's going bad, or possibly a very strange
> >  > driver problem.
> > 
> > I guess the message above could be safely ignored.
> > 
> >  > 
> >  > Adding Yong-Hyeon PYUN to this thread, since he helps maintain the
> >  > msk(4) driver.  Yong-Hyeon, do you know of any conditions where heavy
> >  > network I/O could cause msk(4) to lock up or stop transmitting traffic,
> >  > or possibly hard-lock on ifconfig down/up?
> >  > 
> > 
> > I think workaround for the controller bug was committed to HEAD(SVN
> > r183346). To original poster, would you try latest if_msk.c from
> > HEAD?(Just copy if_msk.c/if_mskreg.h from HEAD to your box.)
> > 
> 
> You got to help me a little bit here. How do I achieve this? Btw I am
> running FreeBSD 7.1 BETA. Doesn't that mean the fix is already applied?

FreeBSD 7.1-BETA == RELENG_7 in CVS tag terms.
FreeBSD 8.0 == CURRENT == HEAD in CVS tag terms.

You need to download the data at the below links and save the output
in files shown on the left:

   if_msk.c -- http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/dev/msk/if_msk.c?rev=1.34;content-type=text%2Fplain
if_mskreg.h -- http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/dev/msk/if_mskreg.h?rev=1.13;content-type=text%2Fplain

These are the msk(4) Ethernet driver in CURRENT.

*DO NOT* visit those web pages in a browser then copy/paste the output
into a file.  Use a tool like fetch(1) or wget(1) to do the work for you.
It's not hard.

Once you have those two files, you will need to replace your existing
driver code with the new files.  First make backups:

$ cd /usr/src/sys/dev/msk
$ cp -p if_msk.c if_msk.c.orig
$ cp -p if_mskreg.h if_mskreg.h.orig

Now replace the old code with the new:

$ cd /wherever/you/downloaded/the/files
$ mv if_msk.c /usr/src/sys/dev/msk
$ mv if_mskreg.h /usr/src/sys/dev/msk

Now you need to rebuild the kernel and install the kernel.  In this
scenario, when building the kernel DO NOT use any "-j" flags, as if the
driver doesn't build, you'll be scrolling back through pages of data to
try and find out why.

If the build doesn't occur successfully, paste the errors you get
here and one of us can try to figure out why.

Otherwise, installkernel and reboot.  You should not need to build world
for this.

-- 
| Jeremy Chadwick                                jdc at parodius.com |
| Parodius Networking                       http://www.parodius.com/ |
| UNIX Systems Administrator                  Mountain View, CA, USA |
| Making life hard for others since 1977.              PGP: 4BD6C0CB |



More information about the freebsd-questions mailing list