diff options
| author | Matt Jacob <mjacob@FreeBSD.org> | 2002-10-10 17:29:05 +0000 |
|---|---|---|
| committer | Matt Jacob <mjacob@FreeBSD.org> | 2002-10-10 17:29:05 +0000 |
| commit | 41ed683e13872d545e21683bbe8ae46df01196d9 (patch) | |
| tree | f736ef7a6c9b24c0861e784847134b5606dd0cdf /sys/dev/isp | |
| parent | fa46e218c7ddfa8bdf9b848d69a19b7303d0bb78 (diff) | |
Notes
Diffstat (limited to 'sys/dev/isp')
| -rw-r--r-- | sys/dev/isp/isp_freebsd.c | 33 |
1 files changed, 18 insertions, 15 deletions
diff --git a/sys/dev/isp/isp_freebsd.c b/sys/dev/isp/isp_freebsd.c index c80c32c302a4c..5e1011de19bd1 100644 --- a/sys/dev/isp/isp_freebsd.c +++ b/sys/dev/isp/isp_freebsd.c @@ -1828,24 +1828,27 @@ isp_cam_async(void *cbarg, u_int32_t code, struct cam_path *path, void *arg) int tgt; tgt = xpt_path_target_id(path); - ISP_LOCK(isp); - sdp += cam_sim_bus(sim); - nflags = sdp->isp_devparam[tgt].nvrm_flags; + if (tgt >= 0) { + sdp += cam_sim_bus(sim); + ISP_LOCK(isp); + nflags = sdp->isp_devparam[tgt].nvrm_flags; #ifndef ISP_TARGET_MODE - nflags &= DPARM_SAFE_DFLT; - if (isp->isp_loaded_fw) { - nflags |= DPARM_NARROW | DPARM_ASYNC; - } + nflags &= DPARM_SAFE_DFLT; + if (isp->isp_loaded_fw) { + nflags |= DPARM_NARROW | DPARM_ASYNC; + } #else - nflags = DPARM_DEFAULT; + nflags = DPARM_DEFAULT; #endif - oflags = sdp->isp_devparam[tgt].goal_flags; - sdp->isp_devparam[tgt].goal_flags = nflags; - sdp->isp_devparam[tgt].dev_update = 1; - isp->isp_update |= (1 << cam_sim_bus(sim)); - (void) isp_control(isp, ISPCTL_UPDATE_PARAMS, NULL); - sdp->isp_devparam[tgt].goal_flags = oflags; - ISP_UNLOCK(isp); + oflags = sdp->isp_devparam[tgt].goal_flags; + sdp->isp_devparam[tgt].goal_flags = nflags; + sdp->isp_devparam[tgt].dev_update = 1; + isp->isp_update |= (1 << cam_sim_bus(sim)); + (void) isp_control(isp, + ISPCTL_UPDATE_PARAMS, NULL); + sdp->isp_devparam[tgt].goal_flags = oflags; + ISP_UNLOCK(isp); + } } break; default: |
