From owner-cvs-src@FreeBSD.ORG Wed Dec 20 16:39:52 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 95C9816A412; Wed, 20 Dec 2006 16:39:52 +0000 (UTC) (envelope-from scottl@samsco.org) Received: from pooker.samsco.org (pooker.samsco.org [168.103.85.57]) by mx1.FreeBSD.org (Postfix) with ESMTP id 423EA43CB2; Wed, 20 Dec 2006 16:39:49 +0000 (GMT) (envelope-from scottl@samsco.org) Received: from [127.0.0.1] (pooker.samsco.org [168.103.85.57]) (authenticated bits=0) by pooker.samsco.org (8.13.4/8.13.4) with ESMTP id kBKGdft4090301; Wed, 20 Dec 2006 09:39:47 -0700 (MST) (envelope-from scottl@samsco.org) Message-ID: <4589674D.6010408@samsco.org> Date: Wed, 20 Dec 2006 11:39:41 -0500 From: Scott Long User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.0.7) Gecko/20060910 SeaMonkey/1.0.5 MIME-Version: 1.0 To: Bruce Evans References: <200612201203.kBKC3MhO053666@repoman.freebsd.org> In-Reply-To: <200612201203.kBKC3MhO053666@repoman.freebsd.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-1.4 required=3.8 tests=ALL_TRUSTED autolearn=failed version=3.1.1 X-Spam-Checker-Version: SpamAssassin 3.1.1 (2006-03-10) on pooker.samsco.org Cc: cvs-src@FreeBSD.org, src-committers@FreeBSD.org, cvs-all@FreeBSD.org Subject: Re: cvs commit: src/sys/dev/bge if_bge.c 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, 20 Dec 2006 16:39:52 -0000 Bruce Evans wrote: > bde 2006-12-20 12:03:21 UTC > > FreeBSD src repository > > Modified files: > sys/dev/bge if_bge.c > Log: > In bge_txeof(), cancel the watchdog timeout if all descriptors have > been handled instead of when at least one descriptor was just handled. > For bge, it is normal to get a txeof when only a small fraction of the > queued tx descriptors have been handled, so the bug broke the watchdog > in a usual case. > > Revision Changes Path > 1.170 +2 -1 src/sys/dev/bge/if_bge.c As Gleb points out, what you've changed this to has a failure case too, though maybe it's not as common as the one that you might have been seeing. The whole countdown/reset scheme is basically insufficient. What is needed is something like if_em, where the rings pointers are actually checked for progress. It's simple and cheap to do, and it addresses the actual issue of detecting when the chip has stopped processing packets. Scott