From 3bd28825ddeaec456d03eba89f3e908da2ad3968 Mon Sep 17 00:00:00 2001 From: Matt Jacob Date: Fri, 26 Mar 1999 00:33:13 +0000 Subject: 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. --- sys/dev/isp/isp.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'sys/dev/isp') diff --git a/sys/dev/isp/isp.c b/sys/dev/isp/isp.c index efc5217b740d..0f85ce668f20 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; -- cgit v1.3