From owner-cvs-all Tue Jun 27 12:31: 8 2000 Delivered-To: cvs-all@freebsd.org Received: from freefall.freebsd.org (freefall.FreeBSD.ORG [204.216.27.21]) by hub.freebsd.org (Postfix) with ESMTP id 278B237C1C7; Tue, 27 Jun 2000 12:31:03 -0700 (PDT) (envelope-from mjacob@FreeBSD.org) Received: (from mjacob@localhost) by freefall.freebsd.org (8.9.3/8.9.2) id MAA51908; Tue, 27 Jun 2000 12:31:03 -0700 (PDT) (envelope-from mjacob@FreeBSD.org) Message-Id: <200006271931.MAA51908@freefall.freebsd.org> From: Matt Jacob Date: Tue, 27 Jun 2000 12:31:03 -0700 (PDT) To: cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org Subject: cvs commit: src/sys/dev/isp isp_freebsd.c X-FreeBSD-CVS-Branch: HEAD Sender: owner-cvs-all@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG mjacob 2000/06/27 12:31:03 PDT Modified files: sys/dev/isp isp_freebsd.c Log: Add in the enabling of interrupts (to isp_attach). Clean up a busted comment. Check against firmware state- not loop state when enabling target mode. Other changes have to do with no longer enabling/disabling interrupts at will. Rearchitect command watchdog timeouts- First of all, set the timeout period for a command that has a timeout (in isp_action) to the period of time requested *plus* two seconds. We don't want the Qlogic firmware and the host system to race each other to report a dead command (the watchdog is there to catch dead and/or broken firmware). Next, make sure that the command being watched isn't done yet. If it's not done yet, check for INT_PENDING and call isp_intr- if that said it serviced an interrupt, check to see whether the command is now done (this is what the "IN WATCHDOG" private flag is for- if isp_intr completes the command, it won't call xpt_done on it because isp_watchdog is still looking at the command). If no interrupt was pending, or the command wasn't completed, check to see if we've set the private 'grace period' flag. If so, the command really *is* dead, so report it as dead and complete it with a CAM_CMD_TIMEOUT value. If the grace period flag wasn't set, set it and issue a SYNCHRONIZE_ALL Marker Request Queue entry and re-set the timeout for one second from now (see Revision 1.45 isp.c notes for more on this) to give the firmware a final chance to complete this command. Revision Changes Path 1.39 +94 -35 src/sys/dev/isp/isp_freebsd.c To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe cvs-all" in the body of the message