From 6f5fe1a4101998085321478248d917830843c54d Mon Sep 17 00:00:00 2001 From: mjacob Date: Sun, 5 Mar 2000 22:22:55 +0000 Subject: [PATCH] Don't issue an initial SCSI bus reset for Ultra3 cards. What seems to happen is that the SCSI bus reset, even after several seconds delay, seems to cause the Qlogic to then destroy several subsequent commands (which, ha ha, happen during probing for devices). I dunno why this is- some Qlogic f/w problem that we need to step around. --- sys/dev/ic/isp_openbsd.c | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/sys/dev/ic/isp_openbsd.c b/sys/dev/ic/isp_openbsd.c index 922e92b41ec..ca47ede724b 100644 --- a/sys/dev/ic/isp_openbsd.c +++ b/sys/dev/ic/isp_openbsd.c @@ -1,4 +1,4 @@ -/* $OpenBSD: isp_openbsd.c,v 1.7 2000/02/20 21:22:41 mjacob Exp $ */ +/* $OpenBSD: isp_openbsd.c,v 1.8 2000/03/05 22:22:55 mjacob Exp $ */ /* * Platform (OpenBSD) dependent common attachment code for Qlogic adapters. * @@ -122,18 +122,21 @@ isp_attach(isp) * XXX: that async events happen. */ if (IS_SCSI(isp)) { - int bus = 0; - (void) isp_control(isp, ISPCTL_RESET_BUS, &bus); - if (IS_DUALBUS(isp)) { - bus++; + /* XXX: There's some issue with resets && Ultra3 */ + if (!IS_ULTRA3(isp)) { + int bus = 0; (void) isp_control(isp, ISPCTL_RESET_BUS, &bus); + if (IS_DUALBUS(isp)) { + bus++; + (void) isp_control(isp, ISPCTL_RESET_BUS, &bus); + } + /* + * wait for the bus to settle. + */ + printf("%s: waiting 4 seconds for bus reset settling\n", + isp->isp_name); + delay(4 * 1000000); } - /* - * wait for the bus to settle. - */ - printf("%s: waiting 4 seconds for bus reset settling\n", - isp->isp_name); - delay(4 * 1000000); } else { int i, j; fcparam *fcp = isp->isp_param; -- 2.20.1