From owner-cvs-src@FreeBSD.ORG Wed Jun 7 10:00:34 2006 Return-Path: X-Original-To: cvs-src@FreeBSD.org Delivered-To: cvs-src@FreeBSD.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 3562616CA2A; Wed, 7 Jun 2006 09:07:13 +0000 (UTC) (envelope-from yongari@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id EFFB943D49; Wed, 7 Jun 2006 09:07:12 +0000 (GMT) (envelope-from yongari@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id k5795LCf005102; Wed, 7 Jun 2006 09:05:21 GMT (envelope-from yongari@repoman.freebsd.org) Received: (from yongari@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id k5795Lvr005101; Wed, 7 Jun 2006 09:05:21 GMT (envelope-from yongari) Message-Id: <200606070905.k5795Lvr005101@repoman.freebsd.org> From: Pyun YongHyeon Date: Wed, 7 Jun 2006 09:05:20 +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/sk if_sk.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, 07 Jun 2006 10:00:44 -0000 yongari 2006-06-07 09:05:20 UTC FreeBSD src repository Modified files: sys/dev/sk if_sk.c Log: Fix watchdog timeout errors seen on a few systems. SK-NET GENESIS document says reading SK_ISSR should stop generating further interrupts(Since we drop a driver lock before invoking ifp->if_input handler we should disable interrupts in ISR in order to protect integrity of softc from subsequent interrupts). But it seems that there is possibility of loosing interrupts between reading SK_ISSR and determining which interrupts are reported. To cope with the situation we continuously read SK_ISSR register until there are no interrupts. However, it seems that the above work around doesn't fix all cases. To protect watchdog handler from triggering false alarm add a work around code which try to reclaim pending Tx descriptors before resetting hardware. This should fix occasional watchdog timeout errors seen on this driver. Reported by: Frank Behrens Tested by: Frank Behrens Revision Changes Path 1.125 +13 -6 src/sys/dev/sk/if_sk.c