aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/isp/isp_freebsd.c
diff options
context:
space:
mode:
authorMatt Jacob <mjacob@FreeBSD.org>1999-05-12 19:00:16 +0000
committerMatt Jacob <mjacob@FreeBSD.org>1999-05-12 19:00:16 +0000
commit83ae4407f5bdeafee4ea2f8883632f7cd6b14e94 (patch)
treefc1129f563ae1561029c6a5962ea6e7afcf736a2 /sys/dev/isp/isp_freebsd.c
parent442257d9c5557b8064cf99933fe62a0c6efe5e4c (diff)
downloadsrc-83ae4407f5bdeafee4ea2f8883632f7cd6b14e94.tar.gz
src-83ae4407f5bdeafee4ea2f8883632f7cd6b14e94.zip
When asked to get the current transfer settings go do a dev_refresh
isp_update call to get a better chance at seeing whether a recent settings change has latched up.
Notes
Notes: svn path=/head/; revision=47073
Diffstat (limited to 'sys/dev/isp/isp_freebsd.c')
-rw-r--r--sys/dev/isp/isp_freebsd.c38
1 files changed, 26 insertions, 12 deletions
diff --git a/sys/dev/isp/isp_freebsd.c b/sys/dev/isp/isp_freebsd.c
index 37900b7c16ae..49998cedad65 100644
--- a/sys/dev/isp/isp_freebsd.c
+++ b/sys/dev/isp/isp_freebsd.c
@@ -1,4 +1,4 @@
-/* $Id: isp_freebsd.c,v 1.17 1999/05/06 20:16:25 ken Exp $ */
+/* $Id: isp_freebsd.c,v 1.18 1999/05/11 05:10:06 mjacob Exp $ */
/* release_5_11_99 */
/*
* Platform (FreeBSD) dependent common attachment code for Qlogic adapters.
@@ -409,13 +409,15 @@ isp_action(struct cam_sim *sim, union ccb *ccb)
} else {
*dptr &= ~DPARM_SYNC;
}
- IDPRINTF(3, ("%s: %d.%d set %s period 0x%x offset 0x%x"
- " flags 0x%x\n", isp->isp_name, bus, tgt,
- (cts->flags & CCB_TRANS_CURRENT_SETTINGS)?
- "current" : "user",
- sdp->isp_devparam[tgt].sync_period,
- sdp->isp_devparam[tgt].sync_offset,
- sdp->isp_devparam[tgt].dev_flags));
+ if (bootverbose || isp->isp_dblev >= 3)
+ printf("%s: %d.%d set %s period 0x%x offset "
+ "0x%x flags 0x%x\n", isp->isp_name, bus,
+ tgt,
+ (cts->flags & CCB_TRANS_CURRENT_SETTINGS)?
+ "current" : "user",
+ sdp->isp_devparam[tgt].sync_period,
+ sdp->isp_devparam[tgt].sync_offset,
+ sdp->isp_devparam[tgt].dev_flags);
s = splcam();
sdp->isp_devparam[tgt].dev_update = 1;
isp->isp_update |= (1 << bus);
@@ -452,6 +454,16 @@ isp_action(struct cam_sim *sim, union ccb *ccb)
sdp += bus;
if (cts->flags & CCB_TRANS_CURRENT_SETTINGS) {
+ s = splcam();
+ /*
+ * First do a refresh to see if things
+ * have changed recently!
+ */
+ sdp->isp_devparam[tgt].dev_refresh = 1;
+ isp->isp_update |= (1 << bus);
+ (void) isp_control(isp, ISPCTL_UPDATE_PARAMS,
+ NULL);
+ (void) splx(s);
dval = sdp->isp_devparam[tgt].cur_dflags;
oval = sdp->isp_devparam[tgt].cur_offset;
pval = sdp->isp_devparam[tgt].cur_period;
@@ -486,10 +498,12 @@ isp_action(struct cam_sim *sim, union ccb *ccb)
CCB_TRANS_SYNC_OFFSET_VALID;
}
splx(s);
- IDPRINTF(3, ("%s: %d.%d get %s period 0x%x offset 0x%x"
- " flags 0x%x\n", isp->isp_name, bus, tgt,
- (cts->flags & CCB_TRANS_CURRENT_SETTINGS)?
- "current" : "user", pval, oval, dval));
+ if (bootverbose || isp->isp_dblev >= 3)
+ printf("%s: %d.%d get %s period 0x%x offset "
+ "0x%x flags 0x%x\n", isp->isp_name, bus,
+ tgt,
+ (cts->flags & CCB_TRANS_CURRENT_SETTINGS)?
+ "current" : "user", pval, oval, dval);
}
ccb->ccb_h.status = CAM_REQ_CMP;
xpt_done(ccb);