From owner-freebsd-stable Wed Jul 10 3:54:51 2002 Delivered-To: freebsd-stable@freebsd.org Received: from mx1.FreeBSD.org (mx1.FreeBSD.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id EEC1837B401 for ; Wed, 10 Jul 2002 03:54:47 -0700 (PDT) Received: from web40308.mail.yahoo.com (web40308.mail.yahoo.com [66.218.78.87]) by mx1.FreeBSD.org (Postfix) with SMTP id 9B61A43E52 for ; Wed, 10 Jul 2002 03:54:47 -0700 (PDT) (envelope-from nuzrin@yahoo.com) Message-ID: <20020710105447.84833.qmail@web40308.mail.yahoo.com> Received: from [203.106.140.173] by web40308.mail.yahoo.com via HTTP; Wed, 10 Jul 2002 03:54:47 PDT Date: Wed, 10 Jul 2002 03:54:47 -0700 (PDT) From: Nuzrin Yaapar Reply-To: nuzrin@nuzrin.com Subject: lnc interface dying under heavy I/O when running 4.6-STABLE under VMware 3.1.1 To: stable@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Sender: owner-freebsd-stable@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG Guys, The subject describes it all. I don't know if anyone else is facing this problem, but I can reproduce this problem at will. Under VMware 3.1.1 for Windows, the lnc driver will stop responding after some time. The weirdest part is that it will only manifest itself when doing some heavy network I/O, such as 'make installworld' from NFS mount, or doing netperf. The host OS is WinXP Pro, and the guest OS is the freshly cvsup RELENG_4. Looking at VMware log file, I see a lot these messages: Jul 09 16:42:48: VMX|VLANCE: ethernet0 skipped 1024 time(s) Jul 09 16:42:48: VMX|VLANCE: 254 30 24 23 26 215 11 3 2 0 0 0 0 0 0 0 Jul 09 16:42:48: VMX|VLANCE: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 436 Jul 09 16:42:51: VMX|VLANCE: ethernet0 skipped 1280 time(s) Jul 09 16:42:51: VMX|VLANCE: 354 44 37 35 37 313 17 3 3 1 0 0 0 0 0 0 Jul 09 16:42:51: VMX|VLANCE: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 436 I've done some investigation, and it seems that after some heavy network activity, the lnc driver will stop calling RX interrupt routine, lnc_rint(). The "fix" is very simple though; in sys/i386/isa/if_lnc.c, delete the call to outw(sc->rdp, RINT | INEA) at the very end of lnc_rint() function. See diff below applied against the latest RELENG_4 code. # diff -ruN sys/i386/isa/if_lnc.c.old sys/i386/isa/if_lnc.c --- sys/i386/isa/if_lnc.c.old Tue Jul 9 21:04:31 2002 +++ sys/i386/isa/if_lnc.c Tue Jul 9 21:04:45 2002 @@ -630,7 +630,6 @@ * here have been dealt with. */ - outw(sc->rdp, RINT | INEA); } Anyone care to describe/explain/enlighten me on what is happening actually? - nuzrin - __________________________________________________ Do You Yahoo!? Sign up for SBC Yahoo! Dial - First Month Free http://sbc.yahoo.com To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-stable" in the body of the message