Lines Matching defs:isp
74 #include <dev/isp/isp_freebsd.h>
145 isp_target_notify(ispsoftc_t *isp, void *vptr, uint32_t *optrp)
199 type = isp_get_response_type(isp, (isphdr_t *)vptr);
202 ISP_TDQE(isp, "isp_target_notify", (int) *optrp, vptr);
206 if (IS_24XX(isp)) {
209 isp_get_atio7(isp, at7iop, (at7_entry_t *) local);
218 isp_prt(isp, ISP_LOGINFO, "long IU length (%d) ignored", len);
220 *optrp = ISP_NXT_QENTRY(*optrp, RESULT_QUEUE_LEN(isp));
228 isp_got_tmf_24xx(isp, at7iop);
234 isp_async(isp, ISPASYNC_TARGET_ACTION, local);
236 isp_get_atio(isp, atiop, (at_entry_t *) local);
237 isp_handle_atio(isp, (at_entry_t *) local);
242 isp_get_ctio(isp, ctiop, (ct_entry_t *) local);
243 isp_handle_ctio(isp, (ct_entry_t *) local);
247 if (ISP_CAP_2KLOGIN(isp)) {
248 isp_get_atio2e(isp, at2eiop, (at2e_entry_t *) local);
250 isp_get_atio2(isp, at2iop, (at2_entry_t *) local);
252 isp_handle_atio2(isp, (at2_entry_t *) local);
257 if (ISP_CAP_2KLOGIN(isp)) {
258 isp_get_ctio2e(isp, ct2eiop, (ct2e_entry_t *) local);
260 isp_get_ctio2(isp, ct2iop, (ct2_entry_t *) local);
262 isp_handle_ctio2(isp, (ct2_entry_t *) local);
266 isp_get_ctio7(isp, ct7iop, (ct7_entry_t *) local);
267 isp_handle_ctio7(isp, (ct7_entry_t *) local);
272 isp_get_enable_lun(isp, lunenp, (lun_entry_t *) local);
273 isp_async(isp, ISPASYNC_TARGET_ACTION, local);
278 if (IS_24XX(isp)) {
279 isp_get_notify_24xx(isp, inot_24xx, (in_fcentry_24xx_t *)local);
281 isp_handle_24xx_inotify(isp, inot_24xx);
284 if (IS_FC(isp)) {
285 if (ISP_CAP_2KLOGIN(isp)) {
287 isp_get_notify_fc_e(isp, inote_fcp, ecp);
293 isp_get_notify_fc(isp, inot_fcp, fcp);
300 isp_get_notify(isp, inotp, inp);
304 if (IS_DUALBUS(isp)) {
310 isp_prt(isp, ISP_LOGTDEBUG0, "Immediate Notify On Bus %d, status=0x%x seqid=0x%x", bus, status, seqid);
315 if (IS_FC(isp)) {
316 isp_got_msg_fc(isp, (in_fcentry_t *)local);
318 isp_got_msg(isp, (in_entry_t *)local);
322 isp_prt(isp, ISP_LOGINFO, "Firmware out of ATIOs");
323 (void) isp_notify_ack(isp, local);
328 notify.nt_hba = isp;
336 notify.nt_tagval |= (((uint64_t)(isp->isp_serno++)) << 32);
340 isp_async(isp, ISPASYNC_TARGET_NOTIFY, ¬ify);
345 notify.nt_hba = isp;
353 isp_async(isp, ISPASYNC_TARGET_NOTIFY, ¬ify);
358 notify.nt_hba = isp;
366 isp_async(isp, ISPASYNC_TARGET_NOTIFY, ¬ify);
370 isp_prt(isp, ISP_LOGTINFO, "%s: all ports logged out", __func__);
372 notify.nt_hba = isp;
378 isp_async(isp, ISPASYNC_TARGET_NOTIFY, ¬ify);
379 (void) isp_notify_ack(isp, local);
383 isp_prt(isp, ISP_LOGTINFO, "%s: port changed", __func__);
384 (void) isp_notify_ack(isp, local);
389 isp_print_bytes(isp, local, QENTRY_LEN, vptr);
390 (void) isp_notify_ack(isp, local);
400 if (IS_24XX(isp)) {
401 isp_get_notify_ack_24xx(isp, nack_24xx, (na_fcentry_24xx_t *) local);
408 isp_prt(isp, level, "Notify Ack Status=0x%x; Subcode 0x%x seqid=0x%x", nack_24xx->na_status, nack_24xx->na_status_subcode, nack_24xx->na_rxid);
409 } else if (IS_FC(isp)) {
410 if (ISP_CAP_2KLOGIN(isp)) {
411 isp_get_notify_ack_fc_e(isp, nacke_fcp, (na_fcentry_e_t *)local);
413 isp_get_notify_ack_fc(isp, nack_fcp, (na_fcentry_t *)local);
421 isp_prt(isp, level, "Notify Ack Status=0x%x seqid 0x%x", nack_fcp->na_status, nack_fcp->na_seqid);
423 isp_get_notify_ack(isp, nackp, (na_entry_t *)local);
430 isp_prt(isp, level, "Notify Ack event 0x%x status=0x%x seqid 0x%x", nackp->na_event, nackp->na_status, nackp->na_seqid);
435 isp_get_abts(isp, abts, (abts_t *)local);
436 isp_async(isp, ISPASYNC_TARGET_ACTION, &local);
439 isp_get_abts_rsp(isp, abts_rsp, (abts_rsp_t *)local);
446 isp_prt(isp, level, "ABTS RSP response[0x%x]: status=0x%x sub=(0x%x 0x%x)", abts_rsp->abts_rsp_rxid_task, abts_rsp->abts_rsp_status,
450 isp_prt(isp, ISP_LOGERR, "%s: unknown entry type 0x%x", __func__, type);
489 isp_lun_cmd(ispsoftc_t *isp, int cmd, int bus, int lun, int cmd_cnt, int inot_cnt)
495 if (IS_DUALBUS(isp)) {
501 if (IS_SCSI(isp)) {
518 if (IS_SCSI(isp)) {
519 el.le_tgt = SDPARAM(isp, bus)->isp_initiator_id;
521 } else if (ISP_CAP_SCCFW(isp) == 0) {
526 outp = isp_getrqentry(isp);
528 isp_prt(isp, ISP_LOGERR, rqo, __func__);
531 isp_put_enable_lun(isp, &el, outp);
532 ISP_TDQE(isp, "isp_lun_cmd", isp->isp_reqidx, &el);
533 ISP_SYNC_REQUEST(isp);
538 isp_target_put_entry(ispsoftc_t *isp, void *ap)
543 outp = isp_getrqentry(isp);
545 isp_prt(isp, ISP_LOGWARN, rqo, __func__);
550 isp_put_atio(isp, (at_entry_t *) ap, (at_entry_t *) outp);
553 if (ISP_CAP_2KLOGIN(isp)) {
554 isp_put_atio2e(isp, (at2e_entry_t *) ap, (at2e_entry_t *) outp);
556 isp_put_atio2(isp, (at2_entry_t *) ap, (at2_entry_t *) outp);
560 isp_put_ctio(isp, (ct_entry_t *) ap, (ct_entry_t *) outp);
563 if (ISP_CAP_2KLOGIN(isp)) {
564 isp_put_ctio2e(isp, (ct2e_entry_t *) ap, (ct2e_entry_t *) outp);
566 isp_put_ctio2(isp, (ct2_entry_t *) ap, (ct2_entry_t *) outp);
570 isp_put_ctio7(isp, (ct7_entry_t *) ap, (ct7_entry_t *) outp);
573 isp_prt(isp, ISP_LOGERR, "%s: Unknown type 0x%x", __func__, etype);
576 ISP_TDQE(isp, __func__, isp->isp_reqidx, ap);
577 ISP_SYNC_REQUEST(isp);
582 isp_target_put_atio(ispsoftc_t *isp, void *arg)
591 if (IS_FC(isp)) {
595 if (ISP_CAP_SCCFW(isp)) {
600 if (ISP_CAP_2KLOGIN(isp)) {
620 return (isp_target_put_entry(isp, &atun));
642 isp_endcmd(ispsoftc_t *isp, ...)
656 if (IS_24XX(isp)) {
661 va_start(ap, isp);
671 isp_prt(isp, ISP_LOGTDEBUG0, "%s: [RX_ID 0x%x] chan %d code %x", __func__, aep->at_rxid, vpidx, code);
708 } else if (IS_FC(isp)) {
712 va_start(ap, isp);
718 isp_prt(isp, ISP_LOGTDEBUG0, "%s: [RX_ID 0x%x] code %x", __func__, aep->at_rxid, code);
723 if (ISP_CAP_SCCFW(isp) == 0) {
726 if (ISP_CAP_2KLOGIN(isp)) {
755 va_start(ap, isp);
760 isp_prt(isp, ISP_LOGTDEBUG0, "%s: [IID %d] code %x", __func__, aep->at_iid, code);
781 return (isp_target_put_entry(isp, &un));
789 isp_target_async(ispsoftc_t *isp, int bus, int event)
794 notify.nt_hba = isp;
803 notify.nt_tagval |= (((uint64_t)(isp->isp_serno++)) << 32);
808 isp_prt(isp, ISP_LOGTDEBUG0, "%s: LOOP UP", __func__);
810 isp_async(isp, ISPASYNC_TARGET_NOTIFY, ¬ify);
813 isp_prt(isp, ISP_LOGTDEBUG0, "%s: LOOP DOWN", __func__);
815 isp_async(isp, ISPASYNC_TARGET_NOTIFY, ¬ify);
821 isp_prt(isp, ISP_LOGTDEBUG0, "%s: LIP RESET", __func__);
823 isp_async(isp, ISPASYNC_TARGET_NOTIFY, ¬ify);
827 isp_prt(isp, ISP_LOGTDEBUG0, "%s: BUS RESET", __func__);
829 isp_async(isp, ISPASYNC_TARGET_NOTIFY, ¬ify);
832 isp_prt(isp, ISP_LOGTDEBUG0, "%s: DEVICE RESET", __func__);
834 isp_async(isp, ISPASYNC_TARGET_NOTIFY, ¬ify);
839 isp_prt(isp, ISP_LOGTDEBUG0, "%s: CTIO DONE", __func__);
841 if (IS_24XX(isp)) {
847 } else if (IS_FC(isp)) {
863 isp_async(isp, ISPASYNC_TARGET_ACTION, storage);
867 isp_prt(isp, ISP_LOGERR, "%s: unknown event 0x%x", __func__, event);
868 if (isp->isp_state == ISP_RUNSTATE) {
869 (void) isp_notify_ack(isp, NULL);
886 isp_got_msg(ispsoftc_t *isp, in_entry_t *inp)
892 notify.nt_hba = isp;
901 notify.nt_tagval |= (((uint64_t)(isp->isp_serno++)) << 32);
928 isp_prt(isp, ISP_LOGERR, "%s: unhandled message 0x%x", __func__, inp->in_msg[0]);
929 (void) isp_notify_ack(isp, inp);
932 isp_async(isp, ISPASYNC_TARGET_NOTIFY, ¬ify);
934 isp_prt(isp, ISP_LOGERR, "%s: unknown immediate notify status 0x%x", __func__, inp->in_status);
935 (void) isp_notify_ack(isp, inp);
943 isp_got_msg_fc(ispsoftc_t *isp, in_fcentry_t *inp)
951 notify.nt_hba = isp;
953 if (ISP_CAP_2KLOGIN(isp)) {
966 if (ISP_CAP_SCCFW(isp)) {
972 notify.nt_tagval |= (((uint64_t)(isp->isp_serno++)) << 32);
977 isp_prt(isp, ISP_LOGINFO, f2, "immediate notify status", inp->in_status, notify.nt_lun, loopid, inp->in_task_flags, inp->in_seqid);
978 (void) isp_notify_ack(isp, inp);
983 isp_prt(isp, ISP_LOGINFO, f1, "ABORT TASK SET", loopid, notify.nt_lun, inp->in_seqid);
986 isp_prt(isp, ISP_LOGINFO, f1, "CLEAR TASK SET", loopid, notify.nt_lun, inp->in_seqid);
989 isp_prt(isp, ISP_LOGINFO, f1, "LUN RESET", loopid, notify.nt_lun, inp->in_seqid);
992 isp_prt(isp, ISP_LOGINFO, f1, "TARGET RESET", loopid, notify.nt_lun, inp->in_seqid);
995 isp_prt(isp, ISP_LOGINFO, f1, "CLEAR ACA", loopid, notify.nt_lun, inp->in_seqid);
998 isp_prt(isp, ISP_LOGWARN, f2, "task flag", inp->in_status, notify.nt_lun, loopid, inp->in_task_flags, inp->in_seqid);
999 (void) isp_notify_ack(isp, inp);
1002 isp_async(isp, ISPASYNC_TARGET_NOTIFY, ¬ify);
1006 isp_got_tmf_24xx(ispsoftc_t *isp, at7_entry_t *aep)
1015 notify.nt_hba = isp;
1019 notify.nt_tagval |= (((uint64_t)(isp->isp_serno++)) << 32);
1025 for (chan = 0; chan < isp->isp_nchan; chan++) {
1026 if (FCPARAM(isp, chan)->isp_portid == did) {
1030 if (chan == isp->isp_nchan) {
1031 isp_prt(isp, ISP_LOGWARN, "%s: D_ID 0x%x not found on any channel", __func__, did);
1040 isp_prt(isp, ISP_LOGINFO, f1, "ABORT TASK SET", sid, notify.nt_lun, aep->at_rxid);
1043 isp_prt(isp, ISP_LOGINFO, f1, "CLEAR TASK SET", sid, notify.nt_lun, aep->at_rxid);
1046 isp_prt(isp, ISP_LOGINFO, f1, "LUN RESET", sid, notify.nt_lun, aep->at_rxid);
1049 isp_prt(isp, ISP_LOGINFO, f1, "TARGET RESET", sid, notify.nt_lun, aep->at_rxid);
1052 isp_prt(isp, ISP_LOGINFO, f1, "CLEAR ACA", sid, notify.nt_lun, aep->at_rxid);
1055 isp_prt(isp, ISP_LOGWARN, f2, aep->at_cmnd.fcp_cmnd_task_management, notify.nt_lun, sid, aep->at_rxid);
1059 isp_async(isp, ISPASYNC_TARGET_NOTIFY, ¬ify);
1063 isp_notify_ack(ispsoftc_t *isp, void *arg)
1071 if (IS_24XX(isp) && arg != NULL && (((isphdr_t *)arg)->rqs_entry_type == RQSTYPE_ATIO)) {
1073 return (isp_endcmd(isp, aep, NIL_HANDLE, 0, 0, 0));
1076 outp = isp_getrqentry(isp);
1078 isp_prt(isp, ISP_LOGWARN, rqo, __func__);
1084 if (IS_24XX(isp)) {
1108 isp_put_notify_24xx_ack(isp, na, (na_fcentry_24xx_t *)outp);
1109 } else if (IS_FC(isp)) {
1116 if (ISP_CAP_2KLOGIN(isp)) {
1139 if (ISP_CAP_2KLOGIN(isp)) {
1140 isp_put_notify_ack_fc_e(isp, (na_fcentry_e_t *) na, (na_fcentry_e_t *)outp);
1142 isp_put_notify_ack_fc(isp, na, (na_fcentry_t *)outp);
1144 isp_prt(isp, ISP_LOGTDEBUG0, "notify ack loopid %u seqid %x flags %x tflags %x response %x", iid, na->na_seqid,
1163 isp_put_notify_ack(isp, na, (na_entry_t *)outp);
1164 isp_prt(isp, ISP_LOGTDEBUG0, "notify ack loopid %u lun %u tgt %u seqid %x event %x", na->na_iid, na->na_lun, na->na_tgt, na->na_seqid, na->na_event);
1166 ISP_TDQE(isp, "isp_notify_ack", isp->isp_reqidx, storage);
1167 ISP_SYNC_REQUEST(isp);
1172 isp_acknak_abts(ispsoftc_t *isp, void *arg, int errno)
1181 if (!IS_24XX(isp)) {
1182 isp_prt(isp, ISP_LOGERR, "%s: called for non-24XX card", __func__);
1187 isp_prt(isp, ISP_LOGERR, "%s: called for non-ABTS entry (0x%x)", __func__, abts->abts_header.rqs_entry_type);
1191 outp = isp_getrqentry(isp);
1193 isp_prt(isp, ISP_LOGWARN, rqo, __func__);
1224 isp_prt(isp, ISP_LOGTINFO, "[0x%x] ABTS of 0x%x being BA_ACC'd", rsp->abts_rsp_rxid_abts, rsp->abts_rsp_rxid_task);
1244 isp_put_abts_rsp(isp, rsp, (abts_rsp_t *)outp);
1245 ISP_TDQE(isp, "isp_acknak_abts", isp->isp_reqidx, storage);
1246 ISP_SYNC_REQUEST(isp);
1251 isp_handle_atio(ispsoftc_t *isp, at_entry_t *aep)
1272 isp_prt(isp, ISP_LOGERR, "rejected ATIO for disabled lun %d", lun);
1280 isp_prt(isp, ISP_LOGERR, "rejected ATIO for lun %d because of command count overflow", lun);
1293 isp_prt(isp, ISP_LOGERR, atiocope, lun, GET_BUS_VAL(aep->at_iid));
1301 isp_async(isp, ISPASYNC_TARGET_ACTION, aep);
1313 isp_prt(isp, ISP_LOGWARN, atior, lun, GET_IID_VAL(aep->at_iid), GET_BUS_VAL(aep->at_iid));
1318 isp_prt(isp, ISP_LOGERR, "Unknown ATIO status 0x%x from loopid %d for lun %d", aep->at_status, aep->at_iid, lun);
1319 (void) isp_target_put_atio(isp, aep);
1325 isp_handle_atio2(ispsoftc_t *isp, at2_entry_t *aep)
1329 if (ISP_CAP_SCCFW(isp)) {
1335 if (ISP_CAP_2KLOGIN(isp)) {
1358 isp_prt(isp, ISP_LOGERR, "rejected ATIO2 for disabled lun %d", lun);
1366 isp_prt(isp, ISP_LOGERR, "rejected ATIO2 for lun %d- command count overflow", lun);
1379 isp_prt(isp, ISP_LOGERR, atiocope, lun, 0);
1386 isp_async(isp, ISPASYNC_TARGET_ACTION, aep);
1398 isp_prt(isp, ISP_LOGERR, atior, lun, iid, 0);
1403 isp_prt(isp, ISP_LOGERR, "Unknown ATIO2 status 0x%x from loopid %d for lun %d", aep->at_status, iid, lun);
1404 (void) isp_target_put_atio(isp, aep);
1410 isp_handle_ctio(ispsoftc_t *isp, ct_entry_t *ct)
1417 xs = isp_find_xs_tgt(isp, ct->ct_syshandle);
1441 isp_prt(isp, pl, "CTIO- iid %d disconnected OK", ct->ct_iid);
1470 isp_prt(isp, ISP_LOGTDEBUG0, "CTIO destroyed by %s", fmsg);
1478 isp_prt(isp, ISP_LOGERR, "Firmware rejected CTIO for disabled lun %d", ct->ct_lun);
1488 isp_prt(isp, ISP_LOGERR, "Firmware rejected CTIO for bad nexus %d/%d/%d", ct->ct_iid, ct->ct_tgt, ct->ct_lun);
1497 isp_prt(isp, ISP_LOGWARN, "Firmware timed out on %s", fmsg);
1519 isp_prt(isp, ISP_LOGERR, "CTIO returned by f/w- %s", fmsg);
1522 isp_prt(isp, ISP_LOGERR, "Unknown CTIO status 0x%x", ct->ct_status & ~QLTM_SVALID);
1536 isp_prt(isp, pl, "intermediate CTIO completed ok");
1538 isp_prt(isp, pl, "unmonitored CTIO completed ok");
1541 isp_prt(isp, pl, "NO xs for CTIO (handle 0x%x) status 0x%x", ct->ct_syshandle, ct->ct_status & ~QLTM_SVALID);
1549 ISP_DMAFREE(isp, xs, ct->ct_syshandle);
1551 isp_prt(isp, pl, "final CTIO complete");
1555 isp_async(isp, ISPASYNC_TARGET_ACTION, ct);
1560 isp_handle_ctio2(ispsoftc_t *isp, ct2_entry_t *ct)
1567 xs = isp_find_xs_tgt(isp, ct->ct_syshandle);
1577 isp_prt(isp, ISP_LOGERR, "PCI DMA Bus Error");
1616 isp_prt(isp, ISP_LOGTDEBUG0, "CTIO2 destroyed by %s: RX_ID=0x%x", fmsg, ct->ct_rxid);
1623 isp_prt(isp, ISP_LOGERR, "CTIO2 had wrong data direction");
1632 isp_prt(isp, ISP_LOGWARN, "Firmware timed out on %s", fmsg);
1653 isp_prt(isp, ISP_LOGWARN, "CTIO returned by f/w- %s", fmsg);
1661 isp_prt(isp, ISP_LOGWARN, "CTIO2 completed with Invalid RX_ID 0x%x", ct->ct_rxid);
1665 isp_prt(isp, ISP_LOGERR, "Unknown CTIO2 status 0x%x", ct->ct_status & ~QLTM_SVALID);
1679 isp_prt(isp, pl, "intermediate CTIO completed ok");
1681 isp_prt(isp, pl, "unmonitored CTIO completed ok");
1684 isp_prt(isp, pl, "NO xs for CTIO (handle 0x%x) status 0x%x", ct->ct_syshandle, ct->ct_status & ~QLTM_SVALID);
1688 ISP_DMAFREE(isp, xs, ct->ct_syshandle);
1699 isp_prt(isp, pl, "status CTIO complete");
1705 isp_prt(isp, pl, "data CTIO complete");
1707 isp_async(isp, ISPASYNC_TARGET_ACTION, ct);
1715 isp_handle_ctio7(ispsoftc_t *isp, ct7_entry_t *ct)
1722 xs = isp_find_xs_tgt(isp, ct->ct_syshandle);
1732 isp_prt(isp, ISP_LOGERR, "PCI DMA Bus Error");
1760 isp_prt(isp, ISP_LOGTDEBUG0, "CTIO7 destroyed by %s: RX_ID=0x%x", fmsg, ct->ct_rxid);
1767 isp_prt(isp, ISP_LOGWARN, "Firmware timed out on %s", fmsg);
1787 isp_prt(isp, ISP_LOGWARN, "CTIO returned by f/w- %s", fmsg);
1795 isp_prt(isp, ISP_LOGWARN, "CTIO7 completed with Invalid RX_ID 0x%x", ct->ct_rxid);
1799 isp_prt(isp, ISP_LOGWARN, "reassembly error");
1803 isp_prt(isp, ISP_LOGWARN, "SRR received");
1807 isp_prt(isp, ISP_LOGERR, "Unknown CTIO7 status 0x%x", ct->ct_nphdl);
1821 isp_prt(isp, ISP_LOGINFO, "termination of 0x%x complete", ct->ct_rxid);
1823 isp_prt(isp, pl, "intermediate CTIO completed ok");
1825 isp_prt(isp, pl, "unmonitored CTIO completed ok");
1828 isp_prt(isp, pl, "NO xs for CTIO (handle 0x%x) status 0x%x", ct->ct_syshandle, ct->ct_nphdl);
1832 ISP_DMAFREE(isp, xs, ct->ct_syshandle);
1843 isp_prt(isp, pl, "status CTIO complete");
1849 isp_prt(isp, pl, "data CTIO complete");
1851 isp_async(isp, ISPASYNC_TARGET_ACTION, ct);
1859 isp_handle_24xx_inotify(ispsoftc_t *isp, in_fcentry_24xx_t *inot_24xx)
1867 ochan = chan = ISP_GET_VPIDX(isp, inot_24xx->in_vpidx);
1870 hichan = isp->isp_nchan;
1872 if (chan >= isp->isp_nchan) {
1875 isp_print_bytes(isp, buf, QENTRY_LEN, inot_24xx);
1876 (void) isp_notify_ack(isp, inot_24xx);
1882 isp_prt(isp, ISP_LOGTDEBUG1, "%s: Immediate Notify Channels %d..%d status=0x%x seqid=0x%x", __func__, lochan, hichan-1, inot_24xx->in_status, inot_24xx->in_rxid);
1893 isp_async(isp, ISPASYNC_TARGET_ACTION, inot_24xx);
1896 isp_prt(isp, ISP_LOGINFO, "%s: unhandled status (0x%x) for chan %d", __func__, inot_24xx->in_status, chan);
1897 (void) isp_notify_ack(isp, inot_24xx);