diff options
author | Matt Jacob <mjacob@FreeBSD.org> | 1999-05-12 19:00:16 +0000 |
---|---|---|
committer | Matt Jacob <mjacob@FreeBSD.org> | 1999-05-12 19:00:16 +0000 |
commit | 83ae4407f5bdeafee4ea2f8883632f7cd6b14e94 (patch) | |
tree | fc1129f563ae1561029c6a5962ea6e7afcf736a2 /sys/dev/isp/isp_freebsd.c | |
parent | 442257d9c5557b8064cf99933fe62a0c6efe5e4c (diff) | |
download | src-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.c | 38 |
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); |