summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authormjacob <mjacob@FreeBSD.org>1999-03-26 00:33:13 +0000
committermjacob <mjacob@FreeBSD.org>1999-03-26 00:33:13 +0000
commit6535dd177ea41b7b038dd460888438f2f6b750f3 (patch)
tree125312bcca9a5c2313fb15174425901e44f7dc51 /sys
parent70f68a6c7d9228c30fd6f22b6decda12af143fd7 (diff)
downloadFreeBSD-src-6535dd177ea41b7b038dd460888438f2f6b750f3.zip
FreeBSD-src-6535dd177ea41b7b038dd460888438f2f6b750f3.tar.gz
Annoying little nigglet- apparently *some* Qlogic temporarily ignore
settings you've just sent them and return random values if you follow the set by a get. This causes problems when you latter run a Tag-enabled command when you've command tagged mode off.
Diffstat (limited to 'sys')
-rw-r--r--sys/dev/isp/isp.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/sys/dev/isp/isp.c b/sys/dev/isp/isp.c
index efc5217..0f85ce6 100644
--- a/sys/dev/isp/isp.c
+++ b/sys/dev/isp/isp.c
@@ -1,4 +1,4 @@
-/* $Id: isp.c,v 1.14 1999/03/17 05:04:38 mjacob Exp $ */
+/* $Id: isp.c,v 1.15 1999/03/25 22:52:44 mjacob Exp $ */
/* release_03_25_99 */
/*
* Machine and OS Independent (well, as best as possible)
@@ -743,7 +743,7 @@ isp_init(isp)
* We don't update dev_flags with what we've set
* because that's not the ultimate goal setting.
* If we succeed with the command, we *do* update
- * cur_dflags.
+ * cur_dflags by getting target parameters.
*/
mbs.param[0] = MBOX_GET_TARGET_PARAMS;
mbs.param[1] = (tgt << 8);
@@ -759,6 +759,14 @@ isp_init(isp)
sdp->isp_devparam[tgt].cur_offset = mbs.param[3] >> 8;
sdp->isp_devparam[tgt].cur_period = mbs.param[3] & 0xff;
}
+ /*
+ * Ensure that we don't believe tagged queuing is enabled yet.
+ * It turns out that sometimes the ISP just ignores our
+ * attempts to set parameters for devices that it hasn't
+ * seen yet.
+ */
+ sdp->isp_devparam[tgt].cur_dflags &= ~DPARM_TQING;
+
maxlun = (isp->isp_fwrev >= ISP_FW_REV(7, 55))? 32 : 8;
for (lun = 0; lun < maxlun; lun++) {
mbs.param[0] = MBOX_SET_DEV_QUEUE_PARAMS;
OpenPOWER on IntegriCloud