From owner-cvs-src@FreeBSD.ORG Wed Dec 20 14:04:39 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 50C8116A403; Wed, 20 Dec 2006 14:04:39 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from cell.sick.ru (cell.sick.ru [217.72.144.68]) by mx1.FreeBSD.org (Postfix) with ESMTP id 8BF7F43CA5; Wed, 20 Dec 2006 14:04:38 +0000 (GMT) (envelope-from glebius@FreeBSD.org) Received: from cell.sick.ru (glebius@localhost [127.0.0.1]) by cell.sick.ru (8.13.4/8.13.3) with ESMTP id kBKDQW1c099616 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 20 Dec 2006 16:26:32 +0300 (MSK) (envelope-from glebius@FreeBSD.org) Received: (from glebius@localhost) by cell.sick.ru (8.13.4/8.13.1/Submit) id kBKDQWrG099615; Wed, 20 Dec 2006 16:26:32 +0300 (MSK) (envelope-from glebius@FreeBSD.org) X-Authentication-Warning: cell.sick.ru: glebius set sender to glebius@FreeBSD.org using -f Date: Wed, 20 Dec 2006 16:26:32 +0300 From: Gleb Smirnoff To: Bruce Evans Message-ID: <20061220132631.GH34400@FreeBSD.org> References: <200612201203.kBKC3MhO053666@repoman.freebsd.org> Mime-Version: 1.0 Content-Type: text/plain; charset=koi8-r Content-Disposition: inline In-Reply-To: <200612201203.kBKC3MhO053666@repoman.freebsd.org> User-Agent: Mutt/1.5.6i 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 14:04:39 -0000 On Wed, Dec 20, 2006 at 12:03:21PM +0000, Bruce Evans wrote: B> bde 2006-12-20 12:03:21 UTC B> B> FreeBSD src repository B> B> Modified files: B> sys/dev/bge if_bge.c B> Log: B> In bge_txeof(), cancel the watchdog timeout if all descriptors have B> been handled instead of when at least one descriptor was just handled. B> For bge, it is normal to get a txeof when only a small fraction of the B> queued tx descriptors have been handled, so the bug broke the watchdog B> in a usual case. I have a suspicion that this may cause a problem under high load. Imagine that thread #1 is spinning in bge_start_locked() getting packets out of interface queue and putting them into TX ring. Some other threads are putting the packets into interface queue while its lock is temporarily relinguished be the thread #1. In the same time interrupts happen, some packets are sent, but the TX ring is never got empty. The above scenario will cause a fake watchdog event. -- Totus tuus, Glebius. GLEBIUS-RIPN GLEB-RIPE