From owner-cvs-all@FreeBSD.ORG Tue Feb 21 20:20:44 2006 Return-Path: X-Original-To: cvs-all@FreeBSD.org Delivered-To: cvs-all@FreeBSD.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 1F77C16A420; Tue, 21 Feb 2006 20:20:44 +0000 (GMT) (envelope-from marius@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id E100E43D45; Tue, 21 Feb 2006 20:20:43 +0000 (GMT) (envelope-from marius@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.1/8.13.1) with ESMTP id k1LKKhGv062616; Tue, 21 Feb 2006 20:20:43 GMT (envelope-from marius@repoman.freebsd.org) Received: (from marius@localhost) by repoman.freebsd.org (8.13.1/8.13.1/Submit) id k1LKKhk1062615; Tue, 21 Feb 2006 20:20:43 GMT (envelope-from marius) Message-Id: <200602212020.k1LKKhk1062615@repoman.freebsd.org> From: Marius Strobl Date: Tue, 21 Feb 2006 20:20:43 +0000 (UTC) To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org X-FreeBSD-CVS-Branch: HEAD Cc: Subject: cvs commit: src/sys/dev/le am7990.c am79900.c X-BeenThere: cvs-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: CVS commit messages for the entire tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 21 Feb 2006 20:20:44 -0000 marius 2006-02-21 20:20:43 UTC FreeBSD src repository Modified files: sys/dev/le am7990.c am79900.c Log: - In the interrupt handler clear the interrupt source flags before processing the interrupt events. If we clear them afterwards we can completely miss some events as the NIC can change the source flags while we're in the handler. In order to not get another interrupt while we're in ifp->if_input() with the driver lock dropped we now turn off NIC interrupts while in the interrupt handler. Previously this was meant to be achieved by clearing the interrupt source flags after processing the interrupt events but didn't really work as clearing these flags doesn't actually acknowledge and re-enable the events. This fixes the device timeouts seen with the VMware LANCE. - Relax the watchdog timer somewhat; don't enable it until the last packet is enqueued and if there is a TX interrupt but there are still outstanding ones reload the timer. Reported and tested by: Morten Rodal MFC after: 3 days Revision Changes Path 1.2 +24 -17 src/sys/dev/le/am7990.c 1.2 +24 -17 src/sys/dev/le/am79900.c