Lines Matching defs:isp

44 __FBSDID("$FreeBSD: releng/10.3/sys/dev/isp/isp_target.c 292921 2015-12-30 11:49:48Z mav $");
45 #include <dev/isp/isp_freebsd.h>
113 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);
220 isp_get_enable_lun(isp, lunenp, (lun_entry_t *) local);
221 isp_async(isp, ISPASYNC_TARGET_ACTION, local);
226 if (IS_24XX(isp)) {
227 isp_get_notify_24xx(isp, inot_24xx, (in_fcentry_24xx_t *)local);
229 isp_handle_24xx_inotify(isp, inot_24xx);
232 if (ISP_CAP_2KLOGIN(isp)) {
234 isp_get_notify_fc_e(isp, inote_fcp, ecp);
240 isp_get_notify_fc(isp, inot_fcp, fcp);
247 isp_prt(isp, ISP_LOGTDEBUG0, "Immediate Notify On Bus %d, status=0x%x seqid=0x%x", bus, status, seqid);
252 isp_got_msg_fc(isp, (in_fcentry_t *)local);
255 isp_prt(isp, ISP_LOGINFO, "Firmware out of ATIOs");
256 isp_async(isp, ISPASYNC_TARGET_NOTIFY_ACK, local);
261 notify.nt_hba = isp;
269 notify.nt_tagval |= (((uint64_t)(isp->isp_serno++)) << 32);
273 isp_async(isp, ISPASYNC_TARGET_NOTIFY, &notify);
278 notify.nt_hba = isp;
286 isp_async(isp, ISPASYNC_TARGET_NOTIFY, &notify);
291 notify.nt_hba = isp;
299 isp_async(isp, ISPASYNC_TARGET_NOTIFY, &notify);
303 isp_prt(isp, ISP_LOGTINFO, "%s: all ports logged out", __func__);
305 notify.nt_hba = isp;
313 isp_async(isp, ISPASYNC_TARGET_NOTIFY, &notify);
317 isp_prt(isp, ISP_LOGTINFO, "%s: port changed", __func__);
319 notify.nt_hba = isp;
327 isp_async(isp, ISPASYNC_TARGET_NOTIFY, &notify);
332 isp_print_bytes(isp, local, QENTRY_LEN, vptr);
333 isp_async(isp, ISPASYNC_TARGET_NOTIFY_ACK, local);
343 if (IS_24XX(isp)) {
344 isp_get_notify_ack_24xx(isp, nack_24xx, (na_fcentry_24xx_t *) local);
351 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);
353 if (ISP_CAP_2KLOGIN(isp)) {
354 isp_get_notify_ack_fc_e(isp, nacke_fcp, (na_fcentry_e_t *)local);
356 isp_get_notify_ack_fc(isp, nack_fcp, (na_fcentry_t *)local);
364 isp_prt(isp, level, "Notify Ack Status=0x%x seqid 0x%x", nack_fcp->na_status, nack_fcp->na_seqid);
369 isp_get_abts(isp, abts, (abts_t *)local);
370 isp_async(isp, ISPASYNC_TARGET_ACTION, &local);
373 isp_get_abts_rsp(isp, abts_rsp, (abts_rsp_t *)local);
380 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,
384 isp_prt(isp, ISP_LOGERR, "%s: unknown entry type 0x%x", __func__, type);
413 isp_target_put_entry(ispsoftc_t *isp, void *ap)
418 outp = isp_getrqentry(isp);
420 isp_prt(isp, ISP_LOGWARN, rqo, __func__);
425 if (ISP_CAP_2KLOGIN(isp)) {
426 isp_put_atio2e(isp, (at2e_entry_t *) ap, (at2e_entry_t *) outp);
428 isp_put_atio2(isp, (at2_entry_t *) ap, (at2_entry_t *) outp);
432 if (ISP_CAP_2KLOGIN(isp)) {
433 isp_put_ctio2e(isp, (ct2e_entry_t *) ap, (ct2e_entry_t *) outp);
435 isp_put_ctio2(isp, (ct2_entry_t *) ap, (ct2_entry_t *) outp);
439 isp_put_ctio7(isp, (ct7_entry_t *) ap, (ct7_entry_t *) outp);
442 isp_prt(isp, ISP_LOGERR, "%s: Unknown type 0x%x", __func__, etype);
445 ISP_TDQE(isp, __func__, isp->isp_reqidx, ap);
446 ISP_SYNC_REQUEST(isp);
451 isp_target_put_atio(ispsoftc_t *isp, void *arg)
462 if (ISP_CAP_SCCFW(isp)) {
467 if (ISP_CAP_2KLOGIN(isp)) {
474 return (isp_target_put_entry(isp, &atun));
496 isp_endcmd(ispsoftc_t *isp, ...)
509 if (IS_24XX(isp)) {
514 va_start(ap, isp);
524 isp_prt(isp, ISP_LOGTDEBUG0, "%s: [RX_ID 0x%x] chan %d code %x", __func__, aep->at_rxid, vpidx, code);
565 va_start(ap, isp);
571 isp_prt(isp, ISP_LOGTDEBUG0, "%s: [RX_ID 0x%x] code %x", __func__, aep->at_rxid, code);
576 if (ISP_CAP_SCCFW(isp) == 0) {
579 if (ISP_CAP_2KLOGIN(isp)) {
605 return (isp_target_put_entry(isp, &un));
613 isp_target_async(ispsoftc_t *isp, int bus, int event)
618 notify.nt_hba = isp;
627 notify.nt_tagval |= (((uint64_t)(isp->isp_serno++)) << 32);
632 isp_prt(isp, ISP_LOGTDEBUG0, "%s: LOOP UP", __func__);
634 isp_async(isp, ISPASYNC_TARGET_NOTIFY, &notify);
637 isp_prt(isp, ISP_LOGTDEBUG0, "%s: LOOP DOWN", __func__);
639 isp_async(isp, ISPASYNC_TARGET_NOTIFY, &notify);
645 isp_prt(isp, ISP_LOGTDEBUG0, "%s: LIP RESET", __func__);
647 isp_async(isp, ISPASYNC_TARGET_NOTIFY, &notify);
651 isp_prt(isp, ISP_LOGTDEBUG0, "%s: BUS RESET", __func__);
653 isp_async(isp, ISPASYNC_TARGET_NOTIFY, &notify);
656 isp_prt(isp, ISP_LOGTDEBUG0, "%s: DEVICE RESET", __func__);
658 isp_async(isp, ISPASYNC_TARGET_NOTIFY, &notify);
663 isp_prt(isp, ISP_LOGTDEBUG0, "%s: CTIO DONE", __func__);
665 if (IS_24XX(isp)) {
679 isp_async(isp, ISPASYNC_TARGET_ACTION, storage);
683 isp_prt(isp, ISP_LOGERR, "%s: unknown event 0x%x", __func__, event);
684 if (isp->isp_state == ISP_RUNSTATE) {
685 isp_async(isp, ISPASYNC_TARGET_NOTIFY_ACK, NULL);
696 isp_got_msg_fc(ispsoftc_t *isp, in_fcentry_t *inp)
704 notify.nt_hba = isp;
706 if (ISP_CAP_2KLOGIN(isp)) {
719 if (ISP_CAP_SCCFW(isp)) {
728 notify.nt_tagval |= (((uint64_t)(isp->isp_serno++)) << 32);
733 isp_prt(isp, ISP_LOGINFO, f2, "immediate notify status", inp->in_status, notify.nt_lun, nphdl, inp->in_task_flags, inp->in_seqid);
734 isp_async(isp, ISPASYNC_TARGET_NOTIFY_ACK, inp);
739 isp_prt(isp, ISP_LOGINFO, f1, "ABORT TASK SET", nphdl, notify.nt_lun, inp->in_seqid);
742 isp_prt(isp, ISP_LOGINFO, f1, "CLEAR TASK SET", nphdl, notify.nt_lun, inp->in_seqid);
745 isp_prt(isp, ISP_LOGINFO, f1, "LUN RESET", nphdl, notify.nt_lun, inp->in_seqid);
748 isp_prt(isp, ISP_LOGINFO, f1, "TARGET RESET", nphdl, notify.nt_lun, inp->in_seqid);
751 isp_prt(isp, ISP_LOGINFO, f1, "CLEAR ACA", nphdl, notify.nt_lun, inp->in_seqid);
754 isp_prt(isp, ISP_LOGWARN, f2, "task flag", inp->in_status, notify.nt_lun, nphdl, inp->in_task_flags, inp->in_seqid);
755 isp_async(isp, ISPASYNC_TARGET_NOTIFY_ACK, inp);
758 isp_async(isp, ISPASYNC_TARGET_NOTIFY, &notify);
762 isp_got_tmf_24xx(ispsoftc_t *isp, at7_entry_t *aep)
771 notify.nt_hba = isp;
775 notify.nt_tagval |= (((uint64_t)(isp->isp_serno++)) << 32);
781 for (chan = 0; chan < isp->isp_nchan; chan++) {
782 if (FCPARAM(isp, chan)->isp_portid == did) {
786 if (chan == isp->isp_nchan) {
787 isp_prt(isp, ISP_LOGWARN, "%s: D_ID 0x%x not found on any channel", __func__, did);
796 isp_prt(isp, ISP_LOGINFO, f1, "QUERY TASK SET", sid, notify.nt_lun, aep->at_rxid);
799 isp_prt(isp, ISP_LOGINFO, f1, "ABORT TASK SET", sid, notify.nt_lun, aep->at_rxid);
802 isp_prt(isp, ISP_LOGINFO, f1, "CLEAR TASK SET", sid, notify.nt_lun, aep->at_rxid);
805 isp_prt(isp, ISP_LOGINFO, f1, "QUERY ASYNC EVENT", sid, notify.nt_lun, aep->at_rxid);
808 isp_prt(isp, ISP_LOGINFO, f1, "LUN RESET", sid, notify.nt_lun, aep->at_rxid);
811 isp_prt(isp, ISP_LOGINFO, f1, "TARGET RESET", sid, notify.nt_lun, aep->at_rxid);
814 isp_prt(isp, ISP_LOGINFO, f1, "CLEAR ACA", sid, notify.nt_lun, aep->at_rxid);
817 isp_prt(isp, ISP_LOGWARN, f2, aep->at_cmnd.fcp_cmnd_task_management, notify.nt_lun, sid, aep->at_rxid);
821 isp_async(isp, ISPASYNC_TARGET_NOTIFY, &notify);
825 isp_notify_ack(ispsoftc_t *isp, void *arg)
833 if (IS_24XX(isp) && arg != NULL && (((isphdr_t *)arg)->rqs_entry_type == RQSTYPE_ATIO)) {
835 return (isp_endcmd(isp, aep, NIL_HANDLE, 0, 0, 0));
838 outp = isp_getrqentry(isp);
840 isp_prt(isp, ISP_LOGWARN, rqo, __func__);
846 if (IS_24XX(isp)) {
878 isp_put_notify_24xx_ack(isp, na, (na_fcentry_24xx_t *)outp);
886 if (ISP_CAP_2KLOGIN(isp)) {
909 if (ISP_CAP_2KLOGIN(isp)) {
910 isp_put_notify_ack_fc_e(isp, (na_fcentry_e_t *) na, (na_fcentry_e_t *)outp);
912 isp_put_notify_ack_fc(isp, na, (na_fcentry_t *)outp);
914 isp_prt(isp, ISP_LOGTDEBUG0, "notify ack handle %x seqid %x flags %x tflags %x response %x", iid, na->na_seqid,
917 ISP_TDQE(isp, "isp_notify_ack", isp->isp_reqidx, storage);
918 ISP_SYNC_REQUEST(isp);
923 isp_acknak_abts(ispsoftc_t *isp, void *arg, int errno)
932 if (!IS_24XX(isp)) {
933 isp_prt(isp, ISP_LOGERR, "%s: called for non-24XX card", __func__);
938 isp_prt(isp, ISP_LOGERR, "%s: called for non-ABTS entry (0x%x)", __func__, abts->abts_header.rqs_entry_type);
942 outp = isp_getrqentry(isp);
944 isp_prt(isp, ISP_LOGWARN, rqo, __func__);
975 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);
995 isp_put_abts_rsp(isp, rsp, (abts_rsp_t *)outp);
996 ISP_TDQE(isp, "isp_acknak_abts", isp->isp_reqidx, storage);
997 ISP_SYNC_REQUEST(isp);
1002 isp_handle_atio2(ispsoftc_t *isp, at2_entry_t *aep)
1006 if (ISP_CAP_SCCFW(isp)) {
1015 if (ISP_CAP_2KLOGIN(isp)) {
1038 isp_prt(isp, ISP_LOGERR, "rejected ATIO2 for disabled lun %x", lun);
1046 isp_prt(isp, ISP_LOGERR, "rejected ATIO2 for lun %x- command count overflow", lun);
1059 isp_prt(isp, ISP_LOGERR, atiocope, lun, 0);
1066 isp_async(isp, ISPASYNC_TARGET_ACTION, aep);
1078 isp_prt(isp, ISP_LOGERR, atior, lun, iid, 0);
1083 isp_prt(isp, ISP_LOGERR, "Unknown ATIO2 status 0x%x from handle %d for lun %x", aep->at_status, iid, lun);
1084 (void) isp_target_put_atio(isp, aep);
1090 isp_handle_ctio2(ispsoftc_t *isp, ct2_entry_t *ct)
1097 xs = isp_find_xs(isp, ct->ct_syshandle);
1107 isp_prt(isp, ISP_LOGERR, "PCI DMA Bus Error");
1146 isp_prt(isp, ISP_LOGTDEBUG0, "CTIO2 destroyed by %s: RX_ID=0x%x", fmsg, ct->ct_rxid);
1153 isp_prt(isp, ISP_LOGERR, "CTIO2 had wrong data direction");
1162 isp_prt(isp, ISP_LOGWARN, "Firmware timed out on %s", fmsg);
1183 isp_prt(isp, ISP_LOGWARN, "CTIO returned by f/w- %s", fmsg);
1191 isp_prt(isp, ISP_LOGWARN, "CTIO2 completed with Invalid RX_ID 0x%x", ct->ct_rxid);
1195 isp_prt(isp, ISP_LOGERR, "Unknown CTIO2 status 0x%x", ct->ct_status & ~QLTM_SVALID);
1209 isp_prt(isp, pl, "intermediate CTIO completed ok");
1211 isp_prt(isp, pl, "unmonitored CTIO completed ok");
1214 isp_prt(isp, pl, "NO xs for CTIO (handle 0x%x) status 0x%x", ct->ct_syshandle, ct->ct_status & ~QLTM_SVALID);
1218 ISP_DMAFREE(isp, xs, ct->ct_syshandle);
1229 isp_prt(isp, pl, "status CTIO complete");
1235 isp_prt(isp, pl, "data CTIO complete");
1237 isp_async(isp, ISPASYNC_TARGET_ACTION, ct);
1245 isp_handle_ctio7(ispsoftc_t *isp, ct7_entry_t *ct)
1252 xs = isp_find_xs(isp, ct->ct_syshandle);
1262 isp_prt(isp, ISP_LOGERR, "PCI DMA Bus Error");
1290 isp_prt(isp, ISP_LOGTDEBUG0, "CTIO7 destroyed by %s: RX_ID=0x%x", fmsg, ct->ct_rxid);
1297 isp_prt(isp, ISP_LOGWARN, "Firmware timed out on %s", fmsg);
1317 isp_prt(isp, ISP_LOGWARN, "CTIO returned by f/w- %s", fmsg);
1325 isp_prt(isp, ISP_LOGWARN, "CTIO7 completed with Invalid RX_ID 0x%x", ct->ct_rxid);
1329 isp_prt(isp, ISP_LOGWARN, "reassembly error");
1333 isp_prt(isp, ISP_LOGTDEBUG0, "SRR received");
1337 isp_prt(isp, ISP_LOGERR, "Unknown CTIO7 status 0x%x", ct->ct_nphdl);
1351 isp_prt(isp, ISP_LOGINFO, "termination of [RX_ID 0x%x] complete", ct->ct_rxid);
1353 isp_prt(isp, pl, "intermediate CTIO completed ok");
1355 isp_prt(isp, pl, "unmonitored CTIO completed ok");
1358 isp_prt(isp, pl, "NO xs for CTIO (handle 0x%x) status 0x%x", ct->ct_syshandle, ct->ct_nphdl);
1362 ISP_DMAFREE(isp, xs, ct->ct_syshandle);
1373 isp_prt(isp, pl, "status CTIO complete");
1379 isp_prt(isp, pl, "data CTIO complete");
1381 isp_async(isp, ISPASYNC_TARGET_ACTION, ct);
1389 isp_handle_24xx_inotify(ispsoftc_t *isp, in_fcentry_24xx_t *inot_24xx)
1397 ochan = chan = ISP_GET_VPIDX(isp, inot_24xx->in_vpidx);
1400 hichan = isp->isp_nchan;
1402 if (chan >= isp->isp_nchan) {
1405 isp_print_bytes(isp, buf, QENTRY_LEN, inot_24xx);
1406 isp_async(isp, ISPASYNC_TARGET_NOTIFY_ACK, inot_24xx);
1412 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);
1414 if (FCPARAM(isp, chan)->role == ISP_ROLE_NONE)
1426 isp_async(isp, ISPASYNC_TARGET_ACTION, inot_24xx);
1429 isp_prt(isp, ISP_LOGINFO, "%s: unhandled status (0x%x) for chan %d", __func__, inot_24xx->in_status, chan);
1430 isp_async(isp, ISPASYNC_TARGET_NOTIFY_ACK, inot_24xx);