From owner-cvs-src@FreeBSD.ORG Wed Dec 6 07:18:51 2006 Return-Path: X-Original-To: cvs-src@FreeBSD.org Delivered-To: cvs-src@FreeBSD.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 922F816A403; Wed, 6 Dec 2006 07:18:51 +0000 (UTC) (envelope-from bde@zeta.org.au) Received: from mailout1.pacific.net.au (mailout1-3.pacific.net.au [61.8.2.210]) by mx1.FreeBSD.org (Postfix) with ESMTP id 3A04243CA7; Wed, 6 Dec 2006 07:18:07 +0000 (GMT) (envelope-from bde@zeta.org.au) Received: from mailproxy2.pacific.net.au (mailproxy2.pacific.net.au [61.8.2.163]) by mailout1.pacific.net.au (Postfix) with ESMTP id 8D50E328173; Wed, 6 Dec 2006 18:18:49 +1100 (EST) Received: from katana.zip.com.au (katana.zip.com.au [61.8.7.246]) by mailproxy2.pacific.net.au (Postfix) with ESMTP id 6BF9627408; Wed, 6 Dec 2006 18:18:48 +1100 (EST) Date: Wed, 6 Dec 2006 18:18:47 +1100 (EST) From: Bruce Evans X-X-Sender: bde@delplex.bde.org To: Marius Strobl In-Reply-To: <20061206164242.A32496@delplex.bde.org> Message-ID: <20061206181350.S32496@delplex.bde.org> References: <200612060218.kB62IfVn046324@repoman.freebsd.org> <20061206164242.A32496@delplex.bde.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: cvs-src@FreeBSD.org, src-committers@FreeBSD.org, cvs-all@FreeBSD.org Subject: Re: cvs commit: src/sys/pci if_xl.c if_xlreg.h X-BeenThere: cvs-src@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 06 Dec 2006 07:18:51 -0000 On Wed, 6 Dec 2006, Bruce Evans wrote: > On Wed, 6 Dec 2006, Marius Strobl wrote: > ... >> While at it relax the watchdog a bit by reloading it in xl_txeof()/ >> xl_txeof_90xB() if there are still packets enqueued. > > Er, xl_txeof_90xB() was one of the 20-30% of txeof() routines that > handled this correctly. The timeout shouldn't be touched in xx_txeof() > except to clear it when all descriptors have been handled. > ... > xl_txeof_90xB() now reloads the timeout without checking anything > except that there are still some unhandled descriptors. ISTR that > this bug has been fixed in a few drivers, mainly ones that support > DEVICE_POLLING. Grepping for "0 : 5" shows the bug in the following > drivers: dc, pcn, sis, xl. All of these except pcn support Reference for a previous fix: if_rl.c 1.134. This actually reloads the timeout to 5 if it is 0 AND there is an unhandled tx descriptor. I think this case shouldn't happen (the watchdog should have handled it), and if it does it should be handled by resetting. Maybe it only happened due to the race decrementing if_timer. Bruce