summaryrefslogtreecommitdiffstats
path: root/sys/dev/isp/isp_target.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/isp/isp_target.c')
-rw-r--r--sys/dev/isp/isp_target.c24
1 files changed, 14 insertions, 10 deletions
diff --git a/sys/dev/isp/isp_target.c b/sys/dev/isp/isp_target.c
index 9d23805..4f7d599 100644
--- a/sys/dev/isp/isp_target.c
+++ b/sys/dev/isp/isp_target.c
@@ -363,7 +363,7 @@ isp_target_put_entry(struct ispsoftc *isp, void *ap)
return (-1);
}
- ISP_TDQE(isp, "isp_target_put_entry", (int) optr, ap);;
+ ISP_TDQE(isp, "isp_target_put_entry", (int) optr, ap);
ISP_ADD_REQUEST(isp, nxti);
return (0);
}
@@ -539,6 +539,11 @@ isp_target_async(struct ispsoftc *isp, int bus, int event)
msg.nt_msg[0] = MSG_BUS_DEV_RESET;
(void) isp_async(isp, ISPASYNC_TARGET_MESSAGE, &msg);
break;
+ case ASYNC_CTIO_DONE:
+ evt.ev_bus = bus;
+ evt.ev_event = event;
+ (void) isp_async(isp, ISPASYNC_TARGET_EVENT, &evt);
+ return (0);
default:
isp_prt(isp, ISP_LOGERR,
"isp_target_async: unknown event 0x%x", event);
@@ -611,14 +616,18 @@ isp_got_msg_fc(struct ispsoftc *isp, int bus, in_fcentry_t *inp)
msg.nt_tagval = inp->in_seqid;
msg.nt_lun = lun;
- if (inp->in_task_flags & TASK_FLAGS_ABORT_TASK) {
- isp_prt(isp, ISP_LOGINFO, f1, "ABORT TASK",
+ if (inp->in_task_flags & TASK_FLAGS_ABORT_TASK_SET) {
+ isp_prt(isp, ISP_LOGINFO, f1, "ABORT TASK SET",
inp->in_iid, lun, inp->in_seqid);
- msg.nt_msg[0] = MSG_ABORT_TAG;
+ msg.nt_msg[0] = MSG_ABORT;
} else if (inp->in_task_flags & TASK_FLAGS_CLEAR_TASK_SET) {
isp_prt(isp, ISP_LOGINFO, f1, "CLEAR TASK SET",
inp->in_iid, lun, inp->in_seqid);
msg.nt_msg[0] = MSG_CLEAR_QUEUE;
+ } else if (inp->in_task_flags & TASK_FLAGS_LUN_RESET) {
+ isp_prt(isp, ISP_LOGINFO, f1, "LUN RESET",
+ inp->in_iid, lun, inp->in_seqid);
+ msg.nt_msg[0] = MSG_LUN_RESET;
} else if (inp->in_task_flags & TASK_FLAGS_TARGET_RESET) {
isp_prt(isp, ISP_LOGINFO, f1, "TARGET RESET",
inp->in_iid, lun, inp->in_seqid);
@@ -626,12 +635,7 @@ isp_got_msg_fc(struct ispsoftc *isp, int bus, in_fcentry_t *inp)
} else if (inp->in_task_flags & TASK_FLAGS_CLEAR_ACA) {
isp_prt(isp, ISP_LOGINFO, f1, "CLEAR ACA",
inp->in_iid, lun, inp->in_seqid);
- /* ???? */
msg.nt_msg[0] = MSG_REL_RECOVERY;
- } else if (inp->in_task_flags & TASK_FLAGS_TERMINATE_TASK) {
- isp_prt(isp, ISP_LOGINFO, f1, "TERMINATE TASK",
- inp->in_iid, lun, inp->in_seqid);
- msg.nt_msg[0] = MSG_TERM_IO_PROC;
} else {
isp_prt(isp, ISP_LOGWARN, f2, "task flag",
inp->in_status, lun, inp->in_iid,
@@ -1091,7 +1095,7 @@ isp_handle_ctio2(struct ispsoftc *isp, ct2_entry_t *ct)
/*
* CTIO rejected by the firmware - invalid data direction.
*/
- isp_prt(isp, ISP_LOGERR, "CTIO2 had wrong data directiond");
+ isp_prt(isp, ISP_LOGERR, "CTIO2 had wrong data direction");
break;
case CT_RSELTMO:
OpenPOWER on IntegriCloud