Lines Matching defs:isp

47 #include <dev/isp/isp_freebsd.h>
117 isp_target_notify(ispsoftc_t *isp, void *vptr, uint32_t *optrp)
159 type = isp_get_response_type(isp, (isphdr_t *)vptr);
162 ISP_TDQE(isp, "isp_target_notify", (int) *optrp, vptr);
166 isp_get_atio7(isp, at7iop, (at7_entry_t *) local);
175 isp_prt(isp, ISP_LOGINFO, "long IU length (%d) ignored", len);
177 *optrp = ISP_NXT_QENTRY(*optrp, RESULT_QUEUE_LEN(isp));
185 isp_got_tmf_24xx(isp, at7iop);
191 isp_async(isp, ISPASYNC_TARGET_ACTION, local);
195 if (ISP_CAP_2KLOGIN(isp)) {
196 isp_get_atio2e(isp, at2eiop, (at2e_entry_t *) local);
198 isp_get_atio2(isp, at2iop, (at2_entry_t *) local);
200 isp_handle_atio2(isp, (at2_entry_t *) local);
205 if (ISP_CAP_2KLOGIN(isp)) {
206 isp_get_ctio2e(isp, ct2eiop, (ct2e_entry_t *) local);
208 isp_get_ctio2(isp, ct2iop, (ct2_entry_t *) local);
210 isp_handle_ctio2(isp, (ct2_entry_t *) local);
214 isp_get_ctio7(isp, ct7iop, (ct7_entry_t *) local);
215 isp_handle_ctio7(isp, (ct7_entry_t *) local);
219 if (IS_24XX(isp)) {
220 isp_get_notify_24xx(isp, inot_24xx, (in_fcentry_24xx_t *)local);
221 isp_handle_notify_24xx(isp, (in_fcentry_24xx_t *)local);
224 if (ISP_CAP_2KLOGIN(isp))
225 isp_get_notify_fc_e(isp, inote_fcp, (in_fcentry_e_t *)local);
227 isp_get_notify_fc(isp, inot_fcp, (in_fcentry_t *)local);
228 isp_handle_notify(isp, (in_fcentry_t *)local);
236 if (IS_24XX(isp)) {
237 isp_get_notify_ack_24xx(isp, nack_24xx, (na_fcentry_24xx_t *) local);
244 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);
246 if (ISP_CAP_2KLOGIN(isp)) {
247 isp_get_notify_ack_fc_e(isp, nacke_fcp, (na_fcentry_e_t *)local);
249 isp_get_notify_ack_fc(isp, nack_fcp, (na_fcentry_t *)local);
257 isp_prt(isp, level, "Notify Ack Status=0x%x seqid 0x%x", nack_fcp->na_status, nack_fcp->na_seqid);
262 isp_get_abts(isp, abts, (abts_t *)local);
263 isp_handle_abts(isp, (abts_t *)local);
266 isp_get_abts_rsp(isp, abts_rsp, (abts_rsp_t *)local);
273 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,
277 isp_prt(isp, ISP_LOGERR, "%s: unknown entry type 0x%x", __func__, type);
306 isp_target_put_entry(ispsoftc_t *isp, void *ap)
311 outp = isp_getrqentry(isp);
313 isp_prt(isp, ISP_LOGWARN, rqo, __func__);
318 if (IS_24XX(isp))
319 isp_put_notify_24xx_ack(isp, (na_fcentry_24xx_t *)ap,
321 else if (ISP_CAP_2KLOGIN(isp))
322 isp_put_notify_ack_fc_e(isp, (na_fcentry_e_t *)ap,
325 isp_put_notify_ack_fc(isp, ap, (na_fcentry_t *)outp);
328 if (ISP_CAP_2KLOGIN(isp))
329 isp_put_atio2e(isp, (at2e_entry_t *)ap,
332 isp_put_atio2(isp, (at2_entry_t *)ap,
336 if (ISP_CAP_2KLOGIN(isp))
337 isp_put_ctio2e(isp, (ct2e_entry_t *)ap,
340 isp_put_ctio2(isp, (ct2_entry_t *)ap,
344 isp_put_ctio7(isp, (ct7_entry_t *)ap, (ct7_entry_t *)outp);
347 isp_put_abts_rsp(isp, (abts_rsp_t *)ap, (abts_rsp_t *)outp);
350 isp_prt(isp, ISP_LOGERR, "%s: Unknown type 0x%x", __func__, etype);
353 ISP_TDQE(isp, __func__, isp->isp_reqidx, ap);
354 ISP_SYNC_REQUEST(isp);
359 isp_target_put_atio(ispsoftc_t *isp, void *arg)
370 if (ISP_CAP_SCCFW(isp)) {
375 if (ISP_CAP_2KLOGIN(isp)) {
382 return (isp_target_put_entry(isp, &atun));
404 isp_endcmd(ispsoftc_t *isp, ...)
418 if (IS_24XX(isp)) {
422 va_start(ap, isp);
432 isp_prt(isp, ISP_LOGTDEBUG0, "%s: [RX_ID 0x%x] chan %d code %x", __func__, aep->at_rxid, vpidx, code);
478 va_start(ap, isp);
487 isp_prt(isp, ISP_LOGTDEBUG0, "%s: [RX_ID 0x%x] code %x", __func__, aep->at_rxid, code);
492 if (ISP_CAP_SCCFW(isp) == 0) {
495 if (ISP_CAP_2KLOGIN(isp)) {
521 return (isp_target_put_entry(isp, &un));
529 isp_target_async(ispsoftc_t *isp, int bus, int event)
534 notify.nt_hba = isp;
543 notify.nt_tagval |= (((uint64_t)(isp->isp_serno++)) << 32);
548 isp_prt(isp, ISP_LOGTDEBUG0, "%s: LOOP UP", __func__);
550 isp_async(isp, ISPASYNC_TARGET_NOTIFY, &notify);
553 isp_prt(isp, ISP_LOGTDEBUG0, "%s: LOOP DOWN", __func__);
555 isp_async(isp, ISPASYNC_TARGET_NOTIFY, &notify);
561 isp_prt(isp, ISP_LOGTDEBUG0, "%s: LIP RESET", __func__);
563 isp_async(isp, ISPASYNC_TARGET_NOTIFY, &notify);
567 isp_prt(isp, ISP_LOGTDEBUG0, "%s: BUS RESET", __func__);
569 isp_async(isp, ISPASYNC_TARGET_NOTIFY, &notify);
572 isp_prt(isp, ISP_LOGTDEBUG0, "%s: DEVICE RESET", __func__);
574 isp_async(isp, ISPASYNC_TARGET_NOTIFY, &notify);
579 isp_prt(isp, ISP_LOGTDEBUG0, "%s: CTIO DONE", __func__);
581 if (IS_24XX(isp)) {
595 isp_async(isp, ISPASYNC_TARGET_ACTION, storage);
599 isp_prt(isp, ISP_LOGERR, "%s: unknown event 0x%x", __func__, event);
608 isp_got_msg_fc(ispsoftc_t *isp, in_fcentry_t *inp)
616 notify.nt_hba = isp;
618 if (ISP_CAP_2KLOGIN(isp)) {
631 if (ISP_CAP_SCCFW(isp)) {
637 notify.nt_tagval |= (((uint64_t)(isp->isp_serno++)) << 32);
642 isp_prt(isp, ISP_LOGINFO, f2, "immediate notify status", inp->in_status, notify.nt_lun, nphdl, inp->in_task_flags, inp->in_seqid);
643 isp_async(isp, ISPASYNC_TARGET_NOTIFY_ACK, inp);
648 isp_prt(isp, ISP_LOGINFO, f1, "ABORT TASK SET", nphdl, notify.nt_lun, inp->in_seqid);
651 isp_prt(isp, ISP_LOGINFO, f1, "CLEAR TASK SET", nphdl, notify.nt_lun, inp->in_seqid);
654 isp_prt(isp, ISP_LOGINFO, f1, "LUN RESET", nphdl, notify.nt_lun, inp->in_seqid);
657 isp_prt(isp, ISP_LOGINFO, f1, "TARGET RESET", nphdl, notify.nt_lun, inp->in_seqid);
660 isp_prt(isp, ISP_LOGINFO, f1, "CLEAR ACA", nphdl, notify.nt_lun, inp->in_seqid);
663 isp_prt(isp, ISP_LOGWARN, f2, "task flag", inp->in_status, notify.nt_lun, nphdl, inp->in_task_flags, inp->in_seqid);
664 isp_async(isp, ISPASYNC_TARGET_NOTIFY_ACK, inp);
667 isp_async(isp, ISPASYNC_TARGET_NOTIFY, &notify);
671 isp_got_tmf_24xx(ispsoftc_t *isp, at7_entry_t *aep)
681 notify.nt_hba = isp;
685 notify.nt_tagval |= (((uint64_t)(isp->isp_serno++)) << 32);
689 if (ISP_CAP_MULTI_ID(isp) && isp->isp_nchan > 1) {
691 isp_find_chan_by_did(isp, did, &chan);
693 isp_prt(isp, ISP_LOGWARN,
696 isp_endcmd(isp, aep, NIL_HANDLE, ISP_NOCHAN,
703 if (isp_find_pdb_by_portid(isp, chan, sid, &lp))
711 isp_prt(isp, ISP_LOGINFO, f1, "QUERY TASK SET", sid, notify.nt_lun, aep->at_rxid);
714 isp_prt(isp, ISP_LOGINFO, f1, "ABORT TASK SET", sid, notify.nt_lun, aep->at_rxid);
717 isp_prt(isp, ISP_LOGINFO, f1, "CLEAR TASK SET", sid, notify.nt_lun, aep->at_rxid);
720 isp_prt(isp, ISP_LOGINFO, f1, "QUERY ASYNC EVENT", sid, notify.nt_lun, aep->at_rxid);
723 isp_prt(isp, ISP_LOGINFO, f1, "LUN RESET", sid, notify.nt_lun, aep->at_rxid);
726 isp_prt(isp, ISP_LOGINFO, f1, "TARGET RESET", sid, notify.nt_lun, aep->at_rxid);
729 isp_prt(isp, ISP_LOGINFO, f1, "CLEAR ACA", sid, notify.nt_lun, aep->at_rxid);
732 isp_prt(isp, ISP_LOGWARN, f2, aep->at_cmnd.fcp_cmnd_task_management, notify.nt_lun, sid, aep->at_rxid);
734 isp_endcmd(isp, aep, notify.nt_nphdl, chan, ECMD_RVALID | (0x4 << 12), 0);
737 isp_async(isp, ISPASYNC_TARGET_NOTIFY, &notify);
741 isp_notify_ack(ispsoftc_t *isp, void *arg)
748 if (IS_24XX(isp) && ((isphdr_t *)arg)->rqs_entry_type == RQSTYPE_ATIO) {
750 return (isp_endcmd(isp, aep, NIL_HANDLE, 0, 0, 0));
754 if (IS_24XX(isp)) {
793 if (ISP_CAP_2KLOGIN(isp)) {
813 isp_prt(isp, ISP_LOGTDEBUG0, "notify ack handle %x seqid %x flags %x tflags %x response %x", iid, na->na_seqid,
816 return (isp_target_put_entry(isp, &storage));
820 isp_acknak_abts(ispsoftc_t *isp, void *arg, int errno)
828 if (!IS_24XX(isp)) {
829 isp_prt(isp, ISP_LOGERR, "%s: called for non-24XX card", __func__);
834 isp_prt(isp, ISP_LOGERR, "%s: called for non-ABTS entry (0x%x)", __func__, abts->abts_header.rqs_entry_type);
865 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);
880 return (isp_target_put_entry(isp, rsp));
884 isp_handle_abts(ispsoftc_t *isp, abts_t *abts)
895 nt->nt_hba = isp;
899 if (ISP_CAP_MULTI_ID(isp) && isp->isp_nchan > 1) {
901 isp_find_chan_by_did(isp, did, &chan);
903 isp_prt(isp, ISP_LOGWARN,
906 isp_acknak_abts(isp, abts, ENXIO);
911 nt->nt_tgt = FCPARAM(isp, chan)->isp_wwpn;
912 if (isp_find_pdb_by_handle(isp, chan, abts->abts_nphdl, &lp))
920 isp_prt(isp, ISP_LOGTINFO, "[0x%x] ABTS from N-Port handle 0x%x"
927 isp_async(isp, ISPASYNC_TARGET_NOTIFY, &notify);
931 isp_handle_atio2(ispsoftc_t *isp, at2_entry_t *aep)
936 if (ISP_CAP_SCCFW(isp)) {
942 if (ISP_CAP_2KLOGIN(isp)) {
965 isp_prt(isp, ISP_LOGERR, "rejected ATIO2 for disabled lun %x", lun);
973 isp_prt(isp, ISP_LOGERR, "rejected ATIO2 for lun %x- command count overflow", lun);
986 isp_prt(isp, ISP_LOGERR, atiocope, lun, 0);
992 if (!IS_2100(isp) &&
993 (isp_find_pdb_by_handle(isp, 0, iid, &lp) == 0 ||
995 fcparam *fcp = FCPARAM(isp, 0);
1001 isp_add_wwn_entry(isp, 0, wwpn, INI_NONE,
1005 isp_async(isp, ISPASYNC_CHANGE_NOTIFY, 0,
1010 isp_async(isp, ISPASYNC_TARGET_ACTION, aep);
1022 isp_prt(isp, ISP_LOGERR, atior, lun, iid, 0);
1027 isp_prt(isp, ISP_LOGERR, "Unknown ATIO2 status 0x%x from handle %d for lun %x", aep->at_status, iid, lun);
1028 (void) isp_target_put_atio(isp, aep);
1034 isp_handle_ctio2(ispsoftc_t *isp, ct2_entry_t *ct)
1041 xs = isp_find_xs(isp, ct->ct_syshandle);
1051 isp_prt(isp, ISP_LOGERR, "PCI DMA Bus Error");
1090 isp_prt(isp, ISP_LOGTDEBUG0, "CTIO2 destroyed by %s: RX_ID=0x%x", fmsg, ct->ct_rxid);
1097 isp_prt(isp, ISP_LOGERR, "CTIO2 had wrong data direction");
1106 isp_prt(isp, ISP_LOGWARN, "Firmware timed out on %s", fmsg);
1127 isp_prt(isp, ISP_LOGWARN, "CTIO returned by f/w- %s", fmsg);
1135 isp_prt(isp, ISP_LOGWARN, "CTIO2 completed with Invalid RX_ID 0x%x", ct->ct_rxid);
1139 isp_prt(isp, ISP_LOGERR, "Unknown CTIO2 status 0x%x", ct->ct_status & ~QLTM_SVALID);
1153 isp_prt(isp, pl, "intermediate CTIO completed ok");
1155 isp_prt(isp, pl, "unmonitored CTIO completed ok");
1158 isp_prt(isp, pl, "NO xs for CTIO (handle 0x%x) status 0x%x", ct->ct_syshandle, ct->ct_status & ~QLTM_SVALID);
1162 ISP_DMAFREE(isp, xs, ct->ct_syshandle);
1173 isp_prt(isp, pl, "status CTIO complete");
1179 isp_prt(isp, pl, "data CTIO complete");
1181 isp_async(isp, ISPASYNC_TARGET_ACTION, ct);
1189 isp_handle_ctio7(ispsoftc_t *isp, ct7_entry_t *ct)
1196 xs = isp_find_xs(isp, ct->ct_syshandle);
1206 isp_prt(isp, ISP_LOGERR, "PCI DMA Bus Error");
1234 isp_prt(isp, ISP_LOGTDEBUG0, "CTIO7 destroyed by %s: RX_ID=0x%x", fmsg, ct->ct_rxid);
1241 isp_prt(isp, ISP_LOGWARN, "Firmware timed out on %s", fmsg);
1261 isp_prt(isp, ISP_LOGWARN, "CTIO returned by f/w- %s", fmsg);
1269 isp_prt(isp, ISP_LOGWARN, "CTIO7 completed with Invalid RX_ID 0x%x", ct->ct_rxid);
1273 isp_prt(isp, ISP_LOGWARN, "reassembly error");
1277 isp_prt(isp, ISP_LOGTDEBUG0, "SRR received");
1281 isp_prt(isp, ISP_LOGERR, "Unknown CTIO7 status 0x%x", ct->ct_nphdl);
1295 isp_prt(isp, ISP_LOGINFO, "termination of [RX_ID 0x%x] complete", ct->ct_rxid);
1297 isp_prt(isp, pl, "intermediate CTIO completed ok");
1299 isp_prt(isp, pl, "unmonitored CTIO completed ok");
1302 isp_prt(isp, pl, "NO xs for CTIO (handle 0x%x) status 0x%x", ct->ct_syshandle, ct->ct_nphdl);
1306 ISP_DMAFREE(isp, xs, ct->ct_syshandle);
1317 isp_prt(isp, pl, "status CTIO complete");
1323 isp_prt(isp, pl, "data CTIO complete");
1325 isp_async(isp, ISPASYNC_TARGET_ACTION, ct);
1333 isp_handle_notify(ispsoftc_t *isp, in_fcentry_t *inp)
1342 isp_prt(isp, ISP_LOGTDEBUG0, "Immediate Notify, status=0x%x seqid=0x%x",
1347 isp_got_msg_fc(isp, inp);
1350 isp_prt(isp, ISP_LOGINFO, "Firmware out of ATIOs");
1351 isp_async(isp, ISPASYNC_TARGET_NOTIFY_ACK, inp);
1355 if (ISP_CAP_2KLOGIN(isp))
1359 if (isp_find_pdb_by_handle(isp, 0, nphdl, &lp)) {
1368 notify.nt_hba = isp;
1370 notify.nt_tgt = FCPARAM(isp, 0)->isp_wwpn;
1374 if (ISP_CAP_SCCFW(isp))
1379 notify.nt_tagval |= (((uint64_t)(isp->isp_serno++)) << 32);
1401 isp_prt(isp, ISP_LOGINFO, "%s: unhandled status (0x%x)",
1403 isp_async(isp, ISPASYNC_TARGET_NOTIFY_ACK, inp);
1406 isp_async(isp, ISPASYNC_TARGET_NOTIFY, &notify);
1410 isp_handle_notify_24xx(ispsoftc_t *isp, in_fcentry_24xx_t *inot)
1429 chan = ISP_GET_VPIDX(isp, inot->in_vpidx);
1430 if (chan >= isp->isp_nchan &&
1434 isp_prt(isp, ISP_LOGWARN, "%s: Received INOT with status %x on VP %x",
1436 isp_async(isp, ISPASYNC_TARGET_NOTIFY_ACK, inot);
1453 isp_del_wwn_entry(isp, chan, wwpn, nphdl, portid);
1462 isp_add_wwn_entry(isp, chan, wwpn, wwnn,
1471 isp_add_wwn_entry(isp, chan, wwpn, wwnn,
1487 isp_prt(isp, ISP_LOGERR, "%s Chan %d ELS N-port handle %x"
1492 isp_prt(isp, ISP_LOGTDEBUG0, "%s Chan %d ELS N-port handle %x"
1495 isp_async(isp, ISPASYNC_TARGET_NOTIFY_ACK, inot);
1501 if (isp_find_pdb_by_handle(isp, chan, nphdl, &lp))
1502 isp_del_wwn_entry(isp, chan, lp->port_wwn, nphdl, lp->portid);
1511 isp_prt(isp, ISP_LOGINFO, "Chan %d %s (sub-status 0x%x) for "
1521 isp_async(isp, ISPASYNC_TARGET_NOTIFY_ACK, inot);
1527 notify.nt_hba = isp;
1529 notify.nt_tgt = FCPARAM(isp, chan)->isp_wwpn;
1540 isp_async(isp, ISPASYNC_TARGET_NOTIFY, &notify);
1554 isp_prt(isp, ISP_LOGWARN, "Chan %d %s", chan, msg);
1555 isp_async(isp, ISPASYNC_TARGET_NOTIFY_ACK, inot);