Lines Matching refs:isp

45 MODULE_VERSION(isp, 1);
46 MODULE_DEPEND(isp, cam, 1, 1, 1);
54 static void isp_loop_changed(ispsoftc_t *isp, int chan);
76 ispsoftc_t *isp = (ispsoftc_t *)arg1; in isp_role_sysctl() local
80 value = FCPARAM(isp, chan)->role; in isp_role_sysctl()
89 ISP_LOCK(isp); in isp_role_sysctl()
90 old = FCPARAM(isp, chan)->role; in isp_role_sysctl()
97 ISP_UNLOCK(isp); in isp_role_sysctl()
102 error = isp_control(isp, ISPCTL_CHANGE_ROLE, chan, value); in isp_role_sysctl()
103 ISP_UNLOCK(isp); in isp_role_sysctl()
108 isp_attach_chan(ispsoftc_t *isp, struct cam_devq *devq, int chan) in isp_attach_chan() argument
110 fcparam *fcp = FCPARAM(isp, chan); in isp_attach_chan()
111 struct isp_fc *fc = ISP_FC_PC(isp, chan); in isp_attach_chan()
112 struct sysctl_ctx_list *ctx = device_get_sysctl_ctx(isp->isp_osinfo.dev); in isp_attach_chan()
113 struct sysctl_oid *tree = device_get_sysctl_tree(isp->isp_osinfo.dev); in isp_attach_chan()
121 sim = cam_sim_alloc(isp_action, isp_poll, "isp", isp, in isp_attach_chan()
122 device_get_unit(isp->isp_dev), &isp->isp_lock, in isp_attach_chan()
123 isp->isp_maxcmds, isp->isp_maxcmds, devq); in isp_attach_chan()
127 if (xpt_bus_register(sim, isp->isp_dev, chan) != CAM_SUCCESS) { in isp_attach_chan()
137 ISP_LOCK(isp); in isp_attach_chan()
140 fc->isp = isp; in isp_attach_chan()
145 callout_init_mtx(&fc->gdt, &isp->isp_lock, 0); in isp_attach_chan()
158 isp_loop_changed(isp, chan); in isp_attach_chan()
159 ISP_UNLOCK(isp); in isp_attach_chan()
161 "%s_%d", device_get_nameunit(isp->isp_osinfo.dev), chan)) { in isp_attach_chan()
193 isp, chan, isp_role_sysctl, "I", "Current role"); in isp_attach_chan()
228 isp_detach_chan(ispsoftc_t *isp, int chan) in isp_detach_chan() argument
230 struct isp_fc *fc = ISP_FC_PC(isp, chan); in isp_detach_chan()
239 mtx_sleep(&fc->num_threads, &isp->isp_lock, PRIBIO, "isp_reap", 0); in isp_detach_chan()
243 isp_attach(ispsoftc_t *isp) in isp_attach() argument
245 const char *nu = device_get_nameunit(isp->isp_osinfo.dev); in isp_attach()
246 int du = device_get_unit(isp->isp_dev); in isp_attach()
252 isp->isp_osinfo.devq = cam_simq_alloc(isp->isp_maxcmds); in isp_attach()
253 if (isp->isp_osinfo.devq == NULL) { in isp_attach()
257 for (chan = 0; chan < isp->isp_nchan; chan++) { in isp_attach()
258 if (isp_attach_chan(isp, isp->isp_osinfo.devq, chan)) { in isp_attach()
263 callout_init_mtx(&isp->isp_osinfo.tmo, &isp->isp_lock, 0); in isp_attach()
265 callout_reset(&isp->isp_osinfo.tmo, isp_timer_count, isp_timer, isp); in isp_attach()
267 isp->isp_osinfo.cdev = make_dev(&isp_cdevsw, du, UID_ROOT, GID_OPERATOR, 0600, "%s", nu); in isp_attach()
268 if (isp->isp_osinfo.cdev) { in isp_attach()
269 isp->isp_osinfo.cdev->si_drv1 = isp; in isp_attach()
274 ISP_LOCK(isp); in isp_attach()
275 isp->isp_osinfo.is_exiting = 1; in isp_attach()
277 isp_detach_chan(isp, chan); in isp_attach()
278 ISP_UNLOCK(isp); in isp_attach()
279 cam_simq_free(isp->isp_osinfo.devq); in isp_attach()
280 isp->isp_osinfo.devq = NULL; in isp_attach()
285 isp_detach(ispsoftc_t *isp) in isp_detach() argument
289 if (isp->isp_osinfo.cdev) { in isp_detach()
290 destroy_dev(isp->isp_osinfo.cdev); in isp_detach()
291 isp->isp_osinfo.cdev = NULL; in isp_detach()
293 ISP_LOCK(isp); in isp_detach()
295 isp->isp_osinfo.is_exiting = 1; in isp_detach()
296 for (chan = isp->isp_nchan - 1; chan >= 0; chan -= 1) in isp_detach()
297 isp_detach_chan(isp, chan); in isp_detach()
298 ISP_UNLOCK(isp); in isp_detach()
299 callout_drain(&isp->isp_osinfo.tmo); in isp_detach()
300 cam_simq_free(isp->isp_osinfo.devq); in isp_detach()
305 isp_freeze_loopdown(ispsoftc_t *isp, int chan) in isp_freeze_loopdown() argument
307 struct isp_fc *fc = ISP_FC_PC(isp, chan); in isp_freeze_loopdown()
312 isp_prt(isp, ISP_LOGDEBUG0, in isp_freeze_loopdown()
318 isp_prt(isp, ISP_LOGDEBUG0, in isp_freeze_loopdown()
325 isp_unfreeze_loopdown(ispsoftc_t *isp, int chan) in isp_unfreeze_loopdown() argument
327 struct isp_fc *fc = ISP_FC_PC(isp, chan); in isp_unfreeze_loopdown()
334 isp_prt(isp, ISP_LOGDEBUG0, in isp_unfreeze_loopdown()
346 isp_rq_check_above(ispsoftc_t *isp) in isp_rq_check_above() argument
348 struct isp_fc *fc = ISP_FC_PC(isp, 0); in isp_rq_check_above()
350 if (isp->isp_rqovf || fc->sim == NULL) in isp_rq_check_above()
352 if (!isp_rqentry_avail(isp, QENTRY_MAX)) { in isp_rq_check_above()
354 isp->isp_rqovf = 1; in isp_rq_check_above()
359 isp_rq_check_below(ispsoftc_t *isp) in isp_rq_check_below() argument
361 struct isp_fc *fc = ISP_FC_PC(isp, 0); in isp_rq_check_below()
363 if (!isp->isp_rqovf || fc->sim == NULL) in isp_rq_check_below()
365 if (isp_rqentry_avail(isp, QENTRY_MAX)) { in isp_rq_check_below()
367 isp->isp_rqovf = 0; in isp_rq_check_below()
374 ispsoftc_t *isp; in ispioctl() local
377 isp = dev->si_drv1; in ispioctl()
382 int olddblev = isp->isp_dblev; in ispioctl()
383 isp->isp_dblev = *(int *)addr; in ispioctl()
390 if (chan < 0 || chan >= isp->isp_nchan) { in ispioctl()
394 *(int *)addr = FCPARAM(isp, chan)->role; in ispioctl()
400 if (chan < 0 || chan >= isp->isp_nchan) { in ispioctl()
409 ISP_LOCK(isp); in ispioctl()
410 *(int *)addr = FCPARAM(isp, chan)->role; in ispioctl()
411 retval = isp_control(isp, ISPCTL_CHANGE_ROLE, chan, nr); in ispioctl()
412 ISP_UNLOCK(isp); in ispioctl()
416 ISP_LOCK(isp); in ispioctl()
417 isp_reinit(isp, 0); in ispioctl()
418 ISP_UNLOCK(isp); in ispioctl()
424 if (chan < 0 || chan >= isp->isp_nchan) { in ispioctl()
428 ISP_LOCK(isp); in ispioctl()
429 if (isp_fc_runstate(isp, chan, 5 * 1000000) != LOOP_READY) { in ispioctl()
434 ISP_UNLOCK(isp); in ispioctl()
439 if (chan < 0 || chan >= isp->isp_nchan) { in ispioctl()
443 ISP_LOCK(isp); in ispioctl()
444 if (isp_control(isp, ISPCTL_SEND_LIP, chan)) { in ispioctl()
449 ISP_UNLOCK(isp); in ispioctl()
460 lp = &FCPARAM(isp, ifc->chan)->portdb[ifc->loopid]; in ispioctl()
478 if (chan < 0 || chan >= isp->isp_nchan) { in ispioctl()
482 hba->fc_fw_major = ISP_FW_MAJORX(isp->isp_fwrev); in ispioctl()
483 hba->fc_fw_minor = ISP_FW_MINORX(isp->isp_fwrev); in ispioctl()
484 hba->fc_fw_micro = ISP_FW_MICROX(isp->isp_fwrev); in ispioctl()
485 hba->fc_nchannels = isp->isp_nchan; in ispioctl()
487 hba->fc_speed = FCPARAM(isp, hba->fc_channel)->isp_gbspeed; in ispioctl()
488 hba->fc_topology = FCPARAM(isp, chan)->isp_topo + 1; in ispioctl()
489 hba->fc_loopid = FCPARAM(isp, chan)->isp_loopid; in ispioctl()
490 hba->nvram_node_wwn = FCPARAM(isp, chan)->isp_wwnn_nvram; in ispioctl()
491 hba->nvram_port_wwn = FCPARAM(isp, chan)->isp_wwpn_nvram; in ispioctl()
492 hba->active_node_wwn = FCPARAM(isp, chan)->isp_wwnn; in ispioctl()
493 hba->active_port_wwn = FCPARAM(isp, chan)->isp_wwpn; in ispioctl()
509 if (chan < 0 || chan >= isp->isp_nchan) { in ispioctl()
516 ISP_LOCK(isp); in ispioctl()
517 fcp = FCPARAM(isp, chan); in ispioctl()
527 ISP_UNLOCK(isp); in ispioctl()
538 tmf.tmf_vpidx = ISP_GET_VPIDX(isp, chan); in ispioctl()
568 ISP_UNLOCK(isp); in ispioctl()
572 retval = isp_exec_entry_queue(isp, &tmf, &sp, 5); in ispioctl()
574 isp_prt(isp, ISP_LOGERR, "%s: TMF of chan %d error %d", in ispioctl()
576 ISP_UNLOCK(isp); in ispioctl()
584 ISP_UNLOCK(isp); in ispioctl()
601 isp_get_pcmd(ispsoftc_t *isp, union ccb *ccb) in isp_get_pcmd() argument
603 ISP_PCMD(ccb) = isp->isp_osinfo.pcmd_free; in isp_get_pcmd()
607 isp->isp_osinfo.pcmd_free = ((struct isp_pcmd *)ISP_PCMD(ccb))->next; in isp_get_pcmd()
612 isp_free_pcmd(ispsoftc_t *isp, union ccb *ccb) in isp_free_pcmd() argument
618 PISP_PCMD(ccb)->next = isp->isp_osinfo.pcmd_free; in isp_free_pcmd()
619 isp->isp_osinfo.pcmd_free = ISP_PCMD(ccb); in isp_free_pcmd()
640 static void isp_complete_ctio(ispsoftc_t *isp, union ccb *);
650 get_lun_statep(ispsoftc_t *isp, int bus, lun_id_t lun) in get_lun_statep() argument
652 struct isp_fc *fc = ISP_FC_PC(isp, bus); in get_lun_statep()
663 isp_atio_restart(ispsoftc_t *isp, int bus, tstate_t *tptr) in isp_atio_restart() argument
674 isp_prt(isp, ISP_LOGTDEBUG0, in isp_atio_restart()
677 isp_handle_platform_atio7(isp, (at7_entry_t *) ntp->data); in isp_atio_restart()
678 isp_put_ntpd(isp, bus, ntp); in isp_atio_restart()
690 isp_tmcmd_restart(ispsoftc_t *isp) in isp_tmcmd_restart() argument
697 for (bus = 0; bus < isp->isp_nchan; bus++) { in isp_tmcmd_restart()
698 fc = ISP_FC_PC(isp, bus); in isp_tmcmd_restart()
701 isp_atio_restart(isp, bus, tptr); in isp_tmcmd_restart()
710 isp_target_start_ctio(isp, ccb, FROM_TIMER); in isp_tmcmd_restart()
713 isp_rq_check_above(isp); in isp_tmcmd_restart()
714 isp_rq_check_below(isp); in isp_tmcmd_restart()
718 isp_get_atpd(ispsoftc_t *isp, int chan, uint32_t tag) in isp_get_atpd() argument
720 struct isp_fc *fc = ISP_FC_PC(isp, chan); in isp_get_atpd()
733 isp_find_atpd(ispsoftc_t *isp, int chan, uint32_t tag) in isp_find_atpd() argument
735 struct isp_fc *fc = ISP_FC_PC(isp, chan); in isp_find_atpd()
746 isp_put_atpd(ispsoftc_t *isp, int chan, atio_private_data_t *atp) in isp_put_atpd() argument
748 struct isp_fc *fc = ISP_FC_PC(isp, chan); in isp_put_atpd()
751 isp_put_ecmd(isp, atp->ests); in isp_put_atpd()
758 isp_dump_atpd(ispsoftc_t *isp, int chan) in isp_dump_atpd() argument
760 struct isp_fc *fc = ISP_FC_PC(isp, chan); in isp_dump_atpd()
767 …isp_prt(isp, ISP_LOGALL, "Chan %d ATP [0x%x] origdlen %u bytes_xfrd %u lun %jx nphdl 0x%04x s_id 0… in isp_dump_atpd()
773 isp_get_ntpd(ispsoftc_t *isp, int chan) in isp_get_ntpd() argument
775 struct isp_fc *fc = ISP_FC_PC(isp, chan); in isp_get_ntpd()
785 isp_find_ntpd(ispsoftc_t *isp, int chan, uint32_t tag_id, uint32_t seq_id) in isp_find_ntpd() argument
787 struct isp_fc *fc = ISP_FC_PC(isp, chan); in isp_find_ntpd()
798 isp_put_ntpd(ispsoftc_t *isp, int chan, inot_private_data_t *ntp) in isp_put_ntpd() argument
800 struct isp_fc *fc = ISP_FC_PC(isp, chan); in isp_put_ntpd()
807 create_lun_state(ispsoftc_t *isp, int bus, struct cam_path *path) in create_lun_state() argument
809 struct isp_fc *fc = ISP_FC_PC(isp, bus); in create_lun_state()
822 ISP_PATH_PRT(isp, ISP_LOGTDEBUG0, path, "created tstate\n"); in create_lun_state()
827 destroy_lun_state(ispsoftc_t *isp, int bus, tstate_t *tptr) in destroy_lun_state() argument
829 struct isp_fc *fc = ISP_FC_PC(isp, bus); in destroy_lun_state()
844 isp_endcmd(isp, ntp->data, NIL_HANDLE, bus, SCSI_STATUS_BUSY, 0); in destroy_lun_state()
846 isp_put_ntpd(isp, bus, ntp); in destroy_lun_state()
853 isp_enable_lun(ispsoftc_t *isp, union ccb *ccb) in isp_enable_lun() argument
864 ISP_PATH_PRT(isp, ISP_LOGTDEBUG0|ISP_LOGCONFIG, ccb->ccb_h.path, in isp_enable_lun()
873 tptr = get_lun_statep(isp, bus, lun); in isp_enable_lun()
879 tptr = create_lun_state(isp, bus, ccb->ccb_h.path); in isp_enable_lun()
891 isp_disable_lun(ispsoftc_t *isp, union ccb *ccb) in isp_disable_lun() argument
898 ISP_PATH_PRT(isp, ISP_LOGTDEBUG0|ISP_LOGCONFIG, ccb->ccb_h.path, in isp_disable_lun()
907 if ((tptr = get_lun_statep(isp, bus, lun)) == NULL) { in isp_disable_lun()
913 destroy_lun_state(isp, bus, tptr); in isp_disable_lun()
919 isp_target_start_ctio(ispsoftc_t *isp, union ccb *ccb, enum Start_Ctio_How how) in isp_target_start_ctio() argument
929 …isp_prt(isp, ISP_LOGTDEBUG0, "%s: ENTRY[0x%x] how %u xfrlen %u sendstatus %d sense_len %u", __func… in isp_target_start_ctio()
932 waitq = &ISP_FC_PC(isp, XS_CHANNEL(ccb))->waitq; in isp_target_start_ctio()
954 …ISP_PATH_PRT(isp, ISP_LOGERR, ccb->ccb_h.path, "a data transfer length of zero but no status to se… in isp_target_start_ctio()
961 atp = isp_find_atpd(isp, XS_CHANNEL(ccb), cso->tag_id); in isp_target_start_ctio()
963 …isp_prt(isp, ISP_LOGERR, "%s: [0x%x] cannot find private data adjunct in %s", __func__, cso->tag_i… in isp_target_start_ctio()
964 isp_dump_atpd(isp, XS_CHANNEL(ccb)); in isp_target_start_ctio()
974 …isp_prt(isp, ISP_LOGERR, "%s: [0x%x] not sending a CTIO for a dead command", __func__, cso->tag_id… in isp_target_start_ctio()
983 fcp = FCPARAM(isp, XS_CHANNEL(ccb)); in isp_target_start_ctio()
985 …isp_prt(isp, ISP_LOGERR, "%s: [0x%x] stopping sending a CTIO because we're no longer in target mod… in isp_target_start_ctio()
996 …isp_prt(isp, ISP_LOGTINFO, "[0x%x] handling only %d CCBs at a time (flags for this ccb: 0x%x)", cs… in isp_target_start_ctio()
1015 isp_prt(isp, ISP_LOGTDEBUG0, "[0x%x] now sending synthesized status orig_dl=%u xfered=%u bit=%u", in isp_target_start_ctio()
1050 isp_prt(isp, ISP_LOGERR, in isp_target_start_ctio()
1077 cto->ct_vpidx = ISP_GET_VPIDX(isp, XS_CHANNEL(ccb)); in isp_target_start_ctio()
1115 atp->ests = isp_get_ecmd(isp); in isp_target_start_ctio()
1139 isp_put_fcp_rsp_iu(isp, &rp, atp->ests); in isp_target_start_ctio()
1142 isp_put_fcp_rsp_iu(isp, &rp, atp->ests); in isp_target_start_ctio()
1144 if (isp->isp_dblev & ISP_LOGTDEBUG1) { in isp_target_start_ctio()
1145 …isp_print_bytes(isp, "FCP Response Frame After Swizzling", MIN_FCP_RESPONSE_SIZE + sense_length, a… in isp_target_start_ctio()
1147 bus_dmamap_sync(isp->isp_osinfo.ecmd_dmat, isp->isp_osinfo.ecmd_map, BUS_DMASYNC_PREWRITE); in isp_target_start_ctio()
1148 addr = isp->isp_osinfo.ecmd_dma; in isp_target_start_ctio()
1149 addr += ((((isp_ecmd_t *)atp->ests) - isp->isp_osinfo.ecmd_base) * XCMD_SIZE); in isp_target_start_ctio()
1150 …isp_prt(isp, ISP_LOGTDEBUG0, "%s: ests base %p vaddr %p ecmd_dma %jx addr %jx len %u", __func__, i… in isp_target_start_ctio()
1151 … (uintmax_t) isp->isp_osinfo.ecmd_dma, (uintmax_t)addr, MIN_FCP_RESPONSE_SIZE + sense_length); in isp_target_start_ctio()
1158 …isp_prt(isp, ISP_LOGTDEBUG0, "%s: CTIO7[0x%x] seq %u nc %d CDB0=%x sstatus=0x%x flags=0x%x resid=%… in isp_target_start_ctio()
1162 …isp_prt(isp, ISP_LOGDEBUG0, "%s: CTIO7[0x%x] seq %u nc %d CDB0=%x sstatus=0x%x flags=0x%x resid=%d… in isp_target_start_ctio()
1183 …if (ISP_FC_PC(isp, XS_CHANNEL(ccb))->inject_lost_data_frame && xfrlen > ISP_FC_PC(isp, XS_CHANNEL(… in isp_target_start_ctio()
1184 …isp_prt(isp, ISP_LOGWARN, "%s: truncating data frame with xfrlen %d to %d", __func__, xfrlen, xfrl… in isp_target_start_ctio()
1185 ISP_FC_PC(isp, XS_CHANNEL(ccb))->inject_lost_data_frame = 0; in isp_target_start_ctio()
1205 …isp_prt(isp, ISP_LOGTDEBUG0, "%s: CTIO7[0x%x] seq %u nc %d CDB0=%x sstatus=0x%x flags=0x%x xfrlen=… in isp_target_start_ctio()
1209 if (isp_get_pcmd(isp, ccb)) { in isp_target_start_ctio()
1210 ISP_PATH_PRT(isp, ISP_LOGWARN, ccb->ccb_h.path, "out of PCMDs\n"); in isp_target_start_ctio()
1214 handle = isp_allocate_handle(isp, ccb, ISP_HANDLE_TARGET); in isp_target_start_ctio()
1216 ISP_PATH_PRT(isp, ISP_LOGWARN, ccb->ccb_h.path, "No XFLIST pointers for %s\n", __func__); in isp_target_start_ctio()
1218 isp_free_pcmd(isp, ccb); in isp_target_start_ctio()
1233 dmaresult = ISP_DMASETUP(isp, cso, cto); in isp_target_start_ctio()
1235 isp_destroy_handle(isp, handle); in isp_target_start_ctio()
1236 isp_free_pcmd(isp, ccb); in isp_target_start_ctio()
1260 ispsoftc_t *isp = tp->isp; in isp_refire_notify_ack() local
1262 ISP_ASSERT_LOCKED(isp); in isp_refire_notify_ack()
1263 if (isp_notify_ack(isp, tp->not)) { in isp_refire_notify_ack()
1272 isp_complete_ctio(ispsoftc_t *isp, union ccb *ccb) in isp_complete_ctio() argument
1275 isp_rq_check_below(isp); in isp_complete_ctio()
1281 isp_handle_platform_atio7(ispsoftc_t *isp, at7_entry_t *aep) in isp_handle_platform_atio7() argument
1298 if (ISP_CAP_MULTI_ID(isp) && isp->isp_nchan > 1) { in isp_handle_platform_atio7()
1300 isp_find_chan_by_did(isp, did, &chan); in isp_handle_platform_atio7()
1302 isp_prt(isp, ISP_LOGWARN, in isp_handle_platform_atio7()
1305 isp_endcmd(isp, aep, NIL_HANDLE, ISP_NOCHAN, in isp_handle_platform_atio7()
1316 if (isp_find_pdb_by_portid(isp, chan, sid, &lp) == 0) { in isp_handle_platform_atio7()
1320 …isp_prt(isp, ISP_LOGTINFO, "%s: [RX_ID 0x%x] D_ID 0x%06x found on Chan %d for S_ID 0x%06x wasn't i… in isp_handle_platform_atio7()
1322 isp_dump_portdb(isp, chan); in isp_handle_platform_atio7()
1323 isp_endcmd(isp, aep, NIL_HANDLE, chan, ECMD_TERMINATE, 0); in isp_handle_platform_atio7()
1331 tptr = get_lun_statep(isp, chan, lun); in isp_handle_platform_atio7()
1333 tptr = get_lun_statep(isp, chan, CAM_LUN_WILDCARD); in isp_handle_platform_atio7()
1335 isp_prt(isp, ISP_LOGWARN, in isp_handle_platform_atio7()
1339 isp_endcmd(isp, aep, nphdl, chan, SCSI_STATUS_BUSY, 0); in isp_handle_platform_atio7()
1341 …isp_endcmd(isp, aep, nphdl, chan, SCSI_STATUS_CHECK_COND | ECMD_SVALID | (0x5 << 12) | (0x25 << 16… in isp_handle_platform_atio7()
1350 if (isp_atio_restart(isp, chan, tptr)) in isp_handle_platform_atio7()
1357 isp_endcmd(isp, aep, nphdl, chan, SCSI_BUSY, 0); in isp_handle_platform_atio7()
1366 isp_prt(isp, ISP_LOGTDEBUG0, "[0x%x] out of atios", aep->at_rxid); in isp_handle_platform_atio7()
1370 oatp = isp_find_atpd(isp, chan, aep->at_rxid); in isp_handle_platform_atio7()
1372 isp_prt(isp, oatp->state == ATPD_STATE_LAST_CTIO ? ISP_LOGTDEBUG0 : in isp_handle_platform_atio7()
1381 atp = isp_get_atpd(isp, chan, aep->at_rxid); in isp_handle_platform_atio7()
1383 isp_prt(isp, ISP_LOGTDEBUG0, "[0x%x] out of atps", aep->at_rxid); in isp_handle_platform_atio7()
1384 isp_endcmd(isp, aep, nphdl, chan, SCSI_BUSY, 0); in isp_handle_platform_atio7()
1390 ISP_PATH_PRT(isp, ISP_LOGTDEBUG2, atiop->ccb_h.path, "Take FREE ATIO\n"); in isp_handle_platform_atio7()
1391 atiop->init_id = FC_PORTDB_TGT(isp, chan, lp); in isp_handle_platform_atio7()
1392 atiop->ccb_h.target_id = ISP_MAX_TARGETS(isp); in isp_handle_platform_atio7()
1397 isp_prt(isp, ISP_LOGWARN, "additional CDBLEN ignored"); in isp_handle_platform_atio7()
1439 isp_prt(isp, ISP_LOGTDEBUG0, "ATIO7[0x%x] CDB=0x%x lun %jx datalen %u", in isp_handle_platform_atio7()
1445 ntp = isp_get_ntpd(isp, chan); in isp_handle_platform_atio7()
1447 isp_endcmd(isp, aep, nphdl, chan, SCSI_STATUS_BUSY, 0); in isp_handle_platform_atio7()
1462 isp_handle_srr_start(ispsoftc_t *isp, atio_private_data_t *atp) in isp_handle_srr_start() argument
1474 isp_prt(isp, ISP_LOGWARN, "SRR[0x%x] null ccb", atp->tag); in isp_handle_srr_start()
1490 …isp_prt(isp, ISP_LOGWARN, "SRR[0x%x] SRR offset 0x%x but current CCB doesn't transfer data", atp->… in isp_handle_srr_start()
1494 …isp_prt(isp, ISP_LOGWARN, "SRR[0x%x] SRR offset 0x%x not covered by current CCB data range [0x%x..… in isp_handle_srr_start()
1497 …isp_prt(isp, ISP_LOGWARN, "SRR[0x%x] SRR offset 0x%x covered by current CCB data range [0x%x..0x%x… in isp_handle_srr_start()
1500 isp_prt(isp, ISP_LOGTINFO, "SRR[0x%x] Got an FCP RSP SRR- resending status", atp->tag); in isp_handle_srr_start()
1510 isp_prt(isp, ISP_LOGWARN, "Got an FCP DATA IN SRR- dropping"); in isp_handle_srr_start()
1514 isp_prt(isp, ISP_LOGWARN, "Got an unknown information (%x) SRR- dropping", inot->in_srr_iu); in isp_handle_srr_start()
1523 if (isp_notify_ack(isp, inot)) { in isp_handle_srr_start()
1524 isp_prt(isp, ISP_LOGWARN, "could not push positive ack for SRR- you lose"); in isp_handle_srr_start()
1527 isp_target_start_ctio(isp, ccb, FROM_SRR); in isp_handle_srr_start()
1531 isp_async(isp, ISPASYNC_TARGET_NOTIFY_ACK, inot); in isp_handle_srr_start()
1534 isp_complete_ctio(isp, ccb); in isp_handle_srr_start()
1537 if (isp_notify_ack(isp, inot)) { in isp_handle_srr_start()
1538 isp_prt(isp, ISP_LOGWARN, "could not push positive ack for SRR- you lose"); in isp_handle_srr_start()
1555 isp_complete_ctio(isp, ccb); in isp_handle_srr_start()
1560 isp_handle_platform_srr(ispsoftc_t *isp, isp_notify_t *notify) in isp_handle_platform_srr() argument
1566 atp = isp_find_atpd(isp, notify->nt_channel, tag); in isp_handle_platform_srr()
1568 isp_prt(isp, ISP_LOGERR, "%s: cannot find adjunct for %x in SRR Notify", in isp_handle_platform_srr()
1570 isp_async(isp, ISPASYNC_TARGET_NOTIFY_ACK, inot); in isp_handle_platform_srr()
1575 isp_prt(isp, ISP_LOGTINFO, "SRR[0x%x] flags 0x%x srr_iu %x reloff 0x%x", in isp_handle_platform_srr()
1579 isp_handle_srr_start(isp, atp); in isp_handle_platform_srr()
1583 isp_handle_platform_ctio(ispsoftc_t *isp, ct7_entry_t *ct) in isp_handle_platform_ctio() argument
1592 ccb = isp_find_xs(isp, handle); in isp_handle_platform_ctio()
1594 isp_print_bytes(isp, "null ccb in isp_handle_platform_ctio", QENTRY_LEN, ct); in isp_handle_platform_ctio()
1597 isp_destroy_handle(isp, handle); in isp_handle_platform_ctio()
1599 isp_free_pcmd(isp, ccb); in isp_handle_platform_ctio()
1602 atp = isp_find_atpd(isp, bus, ct->ct_rxid); in isp_handle_platform_ctio()
1609 atp = isp_find_atpd(isp, bus, ccb->csio.tag_id); in isp_handle_platform_ctio()
1612 isp_prt(isp, ISP_LOGERR, "%s: cannot find adjunct for %x after I/O", __func__, ccb->csio.tag_id); in isp_handle_platform_ctio()
1623 isp_handle_srr_start(isp, atp); in isp_handle_platform_ctio()
1637 …isp_prt(isp, ok? ISP_LOGTDEBUG0 : ISP_LOGWARN, "%s: CTIO7[%x] seq %u nc %d sts 0x%x flg 0x%x sns %… in isp_handle_platform_ctio()
1661 isp_prt(isp, ISP_LOGTDEBUG0, "%s CTIO[0x%x] done (ok=%d nc=%d nowsendstatus=%d ccb ss=%d)", in isp_handle_platform_ctio()
1665 isp_target_start_ctio(isp, ccb, FROM_CTIO_DONE); in isp_handle_platform_ctio()
1675 isp_put_atpd(isp, bus, atp); in isp_handle_platform_ctio()
1682 isp_complete_ctio(isp, ccb); in isp_handle_platform_ctio()
1686 isp_handle_platform_target_notify_ack(ispsoftc_t *isp, isp_notify_t *mp, uint32_t rsp) in isp_handle_platform_target_notify_ack() argument
1690 if (isp->isp_state != ISP_RUNSTATE) { in isp_handle_platform_target_notify_ack()
1691 …isp_prt(isp, ISP_LOGTINFO, "Notify Code 0x%x (qevalid=%d) acked- h/w not ready (dropping)", mp->nt… in isp_handle_platform_target_notify_ack()
1705 if (isp_find_pdb_by_portid(isp, mp->nt_channel, sid, &lp)) { in isp_handle_platform_target_notify_ack()
1730 return (isp_send_entry(isp, cto)); in isp_handle_platform_target_notify_ack()
1745 …isp_prt(isp, ISP_LOGTDEBUG0, "%s: [%x] terminating after ABTS received", __func__, abts->abts_rxid… in isp_handle_platform_target_notify_ack()
1755 if (isp_send_entry(isp, cto)) { in isp_handle_platform_target_notify_ack()
1760 return (isp_acknak_abts(isp, mp->nt_lreserved, 0)); in isp_handle_platform_target_notify_ack()
1767 …isp_prt(isp, ISP_LOGTINFO, "Notify Code 0x%x (qevalid=%d) being acked", mp->nt_ncode, mp->nt_lrese… in isp_handle_platform_target_notify_ack()
1771 return (isp_notify_ack(isp, mp->nt_lreserved)); in isp_handle_platform_target_notify_ack()
1784 isp_handle_platform_target_tmf(ispsoftc_t *isp, isp_notify_t *notify) in isp_handle_platform_target_tmf() argument
1793 …isp_prt(isp, ISP_LOGTDEBUG0, "%s: code 0x%x sid 0x%x tagval 0x%016llx chan %d lun %jx", __func__,… in isp_handle_platform_target_tmf()
1799 atp = isp_find_atpd(isp, notify->nt_channel, in isp_handle_platform_target_tmf()
1806 tptr = get_lun_statep(isp, notify->nt_channel, lun); in isp_handle_platform_target_tmf()
1808 tptr = get_lun_statep(isp, notify->nt_channel, CAM_LUN_WILDCARD); in isp_handle_platform_target_tmf()
1810 …isp_prt(isp, ISP_LOGWARN, "%s: no state pointer found for chan %d lun %#jx", __func__, notify->nt_… in isp_handle_platform_target_tmf()
1816 …isp_prt(isp, ISP_LOGWARN, "%s: out of immediate notify structures for chan %d lun %#jx", __func__,… in isp_handle_platform_target_tmf()
1820 inot->ccb_h.target_id = ISP_MAX_TARGETS(isp); in isp_handle_platform_target_tmf()
1822 if (isp_find_pdb_by_portid(isp, notify->nt_channel, notify->nt_sid, &lp) == 0 && in isp_handle_platform_target_tmf()
1823 isp_find_pdb_by_handle(isp, notify->nt_channel, notify->nt_nphdl, &lp) == 0) { in isp_handle_platform_target_tmf()
1826 inot->initiator_id = FC_PORTDB_TGT(isp, notify->nt_channel, lp); in isp_handle_platform_target_tmf()
1833 isp_target_mark_aborted_early(isp, notify->nt_channel, tptr, inot->tag_id); in isp_handle_platform_target_tmf()
1837 isp_target_mark_aborted_early(isp, notify->nt_channel, tptr, TAG_ANY); in isp_handle_platform_target_tmf()
1859 …isp_prt(isp, ISP_LOGWARN, "%s: unknown TMF code 0x%x for chan %d lun %#jx", __func__, notify->nt_n… in isp_handle_platform_target_tmf()
1863 ntp = isp_get_ntpd(isp, notify->nt_channel); in isp_handle_platform_target_tmf()
1865 isp_prt(isp, ISP_LOGWARN, "%s: out of inotify private structures", __func__); in isp_handle_platform_target_tmf()
1877 ISP_PATH_PRT(isp, ISP_LOGTDEBUG2, inot->ccb_h.path, "Take FREE INOT\n"); in isp_handle_platform_target_tmf()
1884 if (isp_acknak_abts(isp, notify->nt_lreserved, ENOMEM)) { in isp_handle_platform_target_tmf()
1885 isp_prt(isp, ISP_LOGWARN, "you lose- unable to send an ACKNAK"); in isp_handle_platform_target_tmf()
1888 isp_async(isp, ISPASYNC_TARGET_NOTIFY_ACK, notify->nt_lreserved); in isp_handle_platform_target_tmf()
1894 isp_target_mark_aborted_early(ispsoftc_t *isp, int chan, tstate_t *tptr, uint32_t tag_id) in isp_target_mark_aborted_early() argument
1896 struct isp_fc *fc = ISP_FC_PC(isp, chan); in isp_target_mark_aborted_early()
1907 isp_endcmd(isp, ntp->data, NIL_HANDLE, chan, in isp_target_mark_aborted_early()
1909 isp_put_ntpd(isp, chan, ntp); in isp_target_mark_aborted_early()
1930 ispsoftc_t *isp = cam_sim_softc(sim); in isp_poll() local
1932 ISP_RUN_ISR(isp); in isp_poll()
1940 ispsoftc_t *isp; in isp_watchdog() local
1943 isp = XS_ISP(xs); in isp_watchdog()
1945 handle = isp_find_handle(isp, xs); in isp_watchdog()
1951 ISP_RUN_ISR(isp); in isp_watchdog()
1953 handle = isp_find_handle(isp, xs); in isp_watchdog()
1964 if (isp_control(isp, ISPCTL_ABORT_CMD, xs) == 0) { in isp_watchdog()
1972 xs = isp_find_xs(isp, handle); in isp_watchdog()
1985 ISP_DMAFREE(isp, xs); in isp_watchdog()
1986 isp_destroy_handle(isp, handle); in isp_watchdog()
1987 isp_prt(isp, ISP_LOGERR, "%s: timeout for handle 0x%x", __func__, handle); in isp_watchdog()
1992 …isp_prt(isp, ISP_LOGWARN, "%s: timeout for handle 0x%x, recovered during interrupt", __func__, oha… in isp_watchdog()
1994 isp_prt(isp, ISP_LOGWARN, "%s: timeout for handle already free", __func__); in isp_watchdog()
2000 isp_make_here(ispsoftc_t *isp, fcportdb_t *fcp, int chan, int tgt) in isp_make_here() argument
2003 struct isp_fc *fc = ISP_FC_PC(isp, chan); in isp_make_here()
2010 isp_prt(isp, ISP_LOGWARN, "Chan %d unable to alloc CCB for rescan", chan); in isp_make_here()
2015 isp_prt(isp, ISP_LOGWARN, "unable to create path for rescan"); in isp_make_here()
2023 isp_make_gone(ispsoftc_t *isp, fcportdb_t *fcp, int chan, int tgt) in isp_make_gone() argument
2026 struct isp_fc *fc = ISP_FC_PC(isp, chan); in isp_make_gone()
2055 ispsoftc_t *isp = fc->isp; in isp_gdt_task() local
2056 int chan = fc - ISP_FC_PC(isp, 0); in isp_gdt_task()
2062 ISP_LOCK(isp); in isp_gdt_task()
2063 isp_prt(isp, ISP_LOGDEBUG0, "Chan %d GDT timer expired", chan); in isp_gdt_task()
2065 lp = &FCPARAM(isp, chan)->portdb[dbidx]; in isp_gdt_task()
2075 isp_prt(isp, ISP_LOGCONFIG, prom3, chan, dbidx, lp->portid, "Gone Device Timeout"); in isp_gdt_task()
2078 isp_make_gone(isp, lp, chan, dbidx); in isp_gdt_task()
2097 …isp_prt(isp, ISP_LOG_SANCFG, "Chan %d Stopping Gone Device Timer @ %lu", chan, (unsigned long) tim… in isp_gdt_task()
2100 ISP_UNLOCK(isp); in isp_gdt_task()
2113 isp_loop_changed(ispsoftc_t *isp, int chan) in isp_loop_changed() argument
2115 fcparam *fcp = FCPARAM(isp, chan); in isp_loop_changed()
2116 struct isp_fc *fc = ISP_FC_PC(isp, chan); in isp_loop_changed()
2120 isp_prt(isp, ISP_LOG_SANCFG|ISP_LOGDEBUG0, "Chan %d Loop changed", chan); in isp_loop_changed()
2122 isp_freeze_loopdown(isp, chan); in isp_loop_changed()
2128 isp_loop_up(ispsoftc_t *isp, int chan) in isp_loop_up() argument
2130 struct isp_fc *fc = ISP_FC_PC(isp, chan); in isp_loop_up()
2132 isp_prt(isp, ISP_LOG_SANCFG|ISP_LOGDEBUG0, "Chan %d Loop is up", chan); in isp_loop_up()
2135 isp_unfreeze_loopdown(isp, chan); in isp_loop_up()
2139 isp_loop_dead(ispsoftc_t *isp, int chan) in isp_loop_dead() argument
2141 fcparam *fcp = FCPARAM(isp, chan); in isp_loop_dead()
2142 struct isp_fc *fc = ISP_FC_PC(isp, chan); in isp_loop_dead()
2148 isp_prt(isp, ISP_LOG_SANCFG|ISP_LOGDEBUG0, "Chan %d Loop is dead", chan); in isp_loop_dead()
2159 for (i = 0; i < ISP_HANDLE_NUM(isp); i++) { in isp_loop_dead()
2162 if (ISP_H2HT(isp->isp_xflist[i].handle) != ISP_HANDLE_INITIATOR) { in isp_loop_dead()
2165 if ((xs = isp->isp_xflist[i].cmd) == NULL) { in isp_loop_dead()
2171 isp_prt(isp, ISP_LOGWARN, "command handle 0x%x for %d.%d.%jx orphaned by loop down timeout", in isp_loop_dead()
2172 isp->isp_xflist[i].handle, chan, XS_TGT(xs), in isp_loop_dead()
2180 if (isp_control(isp, ISPCTL_ABORT_CMD, xs) == 0) { in isp_loop_dead()
2184 ISP_DMAFREE(isp, xs); in isp_loop_dead()
2185 isp_destroy_handle(isp, isp->isp_xflist[i].handle); in isp_loop_dead()
2186 …isp_prt(isp, ISP_LOGWARN, "command handle 0x%x for %d.%d.%jx could not be aborted and was destroye… in isp_loop_dead()
2187 isp->isp_xflist[i].handle, chan, XS_TGT(xs), in isp_loop_dead()
2193 isp_prt(isp, ISP_LOGCONFIG, prom3, chan, dbidx, lp->portid, "Loop Down Timeout"); in isp_loop_dead()
2196 isp_make_gone(isp, lp, chan, dbidx); in isp_loop_dead()
2210 isp_unfreeze_loopdown(isp, chan); in isp_loop_dead()
2218 ispsoftc_t *isp = fc->isp; in isp_kthread() local
2219 int chan = fc - ISP_FC_PC(isp, 0); in isp_kthread()
2223 ISP_LOCK(isp); in isp_kthread()
2224 while (isp->isp_osinfo.is_exiting == 0) { in isp_kthread()
2225 isp_prt(isp, ISP_LOG_SANCFG|ISP_LOGDEBUG0, in isp_kthread()
2227 lb = isp_fc_runstate(isp, chan, 250000); in isp_kthread()
2228 isp_prt(isp, ISP_LOG_SANCFG|ISP_LOGDEBUG0, in isp_kthread()
2270 isp_loop_up(isp, chan); in isp_kthread()
2272 isp_loop_dead(isp, chan); in isp_kthread()
2275 isp_prt(isp, ISP_LOG_SANCFG|ISP_LOGDEBUG0, in isp_kthread()
2277 msleep(fc, &isp->isp_lock, PRIBIO, "ispf", slp * hz); in isp_kthread()
2281 ISP_UNLOCK(isp); in isp_kthread()
2287 isp_abort_atio(ispsoftc_t *isp, union ccb *ccb) in isp_abort_atio() argument
2294 tptr = get_lun_statep(isp, XS_CHANNEL(accb), XS_LUN(accb)); in isp_abort_atio()
2301 ISP_PATH_PRT(isp, ISP_LOGTDEBUG2, sccb->path, in isp_abort_atio()
2311 atp = isp_find_atpd(isp, XS_CHANNEL(accb), accb->atio.tag_id); in isp_abort_atio()
2328 isp_send_entry(isp, cto); in isp_abort_atio()
2330 isp_put_atpd(isp, XS_CHANNEL(accb), atp); in isp_abort_atio()
2338 isp_abort_inot(ispsoftc_t *isp, union ccb *ccb) in isp_abort_inot() argument
2345 tptr = get_lun_statep(isp, XS_CHANNEL(accb), XS_LUN(accb)); in isp_abort_inot()
2352 ISP_PATH_PRT(isp, ISP_LOGTDEBUG2, sccb->path, in isp_abort_inot()
2362 ntp = isp_find_ntpd(isp, XS_CHANNEL(accb), accb->cin1.tag_id, accb->cin1.seq_id); in isp_abort_inot()
2365 isp_async(isp, ISPASYNC_TARGET_NOTIFY_ACK, in isp_abort_inot()
2368 isp_put_ntpd(isp, XS_CHANNEL(accb), ntp); in isp_abort_inot()
2381 ispsoftc_t *isp; in isp_action() local
2388 isp = (ispsoftc_t *)cam_sim_softc(sim); in isp_action()
2389 ISP_ASSERT_LOCKED(isp); in isp_action()
2391 isp_prt(isp, ISP_LOGDEBUG2, "isp_action code %x", ccb->ccb_h.func_code); in isp_action()
2407 if (ccb->ccb_h.target_id >= ISP_MAX_TARGETS(isp)) { in isp_action()
2417 if (isp_get_pcmd(isp, ccb)) { in isp_action()
2418 isp_prt(isp, ISP_LOGWARN, "out of PCMDs"); in isp_action()
2426 isp_rq_check_above(isp); in isp_action()
2438 isp_prt(isp, ISP_LOGDEBUG0, "%d.%jx retry later", in isp_action()
2443 isp_free_pcmd(isp, ccb); in isp_action()
2447 isp_free_pcmd(isp, ccb); in isp_action()
2457 isp_prt(isp, ISP_LOGERR, "What's this? 0x%x at %d in file %s", error, __LINE__, __FILE__); in isp_action()
2459 isp_free_pcmd(isp, ccb); in isp_action()
2467 isp_enable_lun(isp, ccb); in isp_action()
2469 isp_disable_lun(isp, ccb); in isp_action()
2475 tstate_t *tptr = get_lun_statep(isp, XS_CHANNEL(ccb), ccb->ccb_h.target_lun); in isp_action()
2483 ISP_PATH_PRT(isp, ISP_LOGWARN, ccb->ccb_h.path, in isp_action()
2494 ISP_PATH_PRT(isp, ISP_LOGTDEBUG2, ccb->ccb_h.path, in isp_action()
2499 ISP_PATH_PRT(isp, ISP_LOGTDEBUG2, ccb->ccb_h.path, in isp_action()
2516 …ISP_PATH_PRT(isp, ISP_LOGTDEBUG0, ccb->ccb_h.path, "%s: [0x%x] NOTIFY ACKNOWLEDGE for 0x%x seen\n"… in isp_action()
2517 ntp = isp_find_ntpd(isp, XS_CHANNEL(ccb), ccb->cna2.tag_id, ccb->cna2.seq_id); in isp_action()
2519 …ISP_PATH_PRT(isp, ISP_LOGWARN, ccb->ccb_h.path, "%s: [0x%x] XPT_NOTIFY_ACKNOWLEDGE of 0x%x cannot … in isp_action()
2525 if (isp_handle_platform_target_notify_ack(isp, &ntp->nt, in isp_action()
2533 isp_put_ntpd(isp, XS_CHANNEL(ccb), ntp); in isp_action()
2535 …ISP_PATH_PRT(isp, ISP_LOGTDEBUG0, ccb->ccb_h.path, "%s: [0x%x] calling xpt_done for tag 0x%x\n", _… in isp_action()
2540 isp_target_start_ctio(isp, ccb, FROM_CAM); in isp_action()
2541 isp_rq_check_above(isp); in isp_action()
2548 error = isp_control(isp, ISPCTL_RESET_DEV, bus, tgt); in isp_action()
2557 isp_fcp_reset_crn(isp, bus, tgt, /*tgt_set*/ 1); in isp_action()
2569 isp_abort_atio(isp, ccb); in isp_action()
2572 isp_abort_inot(isp, ccb); in isp_action()
2576 error = isp_control(isp, ISPCTL_ABORT_CMD, accb); in isp_action()
2613 fcp = FCPARAM(isp, bus); in isp_action()
2641 error = isp_control(isp, ISPCTL_RESET_BUS, bus); in isp_action()
2650 xpt_async(AC_BUS_RESET, ISP_FC_PC(isp, bus)->path, 0); in isp_action()
2663 fcparam *fcp = FCPARAM(isp, bus); in isp_action()
2666 fcp->isp_wwnn = ISP_FC_PC(isp, bus)->def_wwnn = kp->xport_specific.fc.wwnn; in isp_action()
2667 fcp->isp_wwpn = ISP_FC_PC(isp, bus)->def_wwpn = kp->xport_specific.fc.wwpn; in isp_action()
2668 …isp_prt(isp, ISP_LOGALL, "Setting Channel %d wwns to 0x%jx 0x%jx", bus, fcp->isp_wwnn, fcp->isp_ww… in isp_action()
2702 …ISP_PATH_PRT(isp, ISP_LOGCONFIG, ccb->ccb_h.path, "changing role on from %d to %d\n", fcp->role, n… in isp_action()
2703 if (isp_control(isp, ISPCTL_CHANGE_ROLE, in isp_action()
2718 fcparam *fcp = FCPARAM(isp, bus); in isp_action()
2752 cpi->max_target = ISP_MAX_TARGETS(isp) - 1; in isp_action()
2757 fcp = FCPARAM(isp, bus); in isp_action()
2771 if (IS_25XX(isp)) in isp_action()
2802 ispsoftc_t *isp = XS_ISP(sccb); in isp_done() local
2828 isp_free_pcmd(isp, (union ccb *) sccb); in isp_done()
2830 isp_rq_check_below(isp); in isp_done()
2835 isp_async(ispsoftc_t *isp, ispasync_t cmd, ...) in isp_async() argument
2857 lipp = ISP_READ(isp, OUTMAILBOX1); in isp_async()
2858 fcp = FCPARAM(isp, bus); in isp_async()
2860 isp_prt(isp, ISP_LOGINFO, "Chan %d LOOP Reset, LIP primitive %x", bus, lipp); in isp_async()
2873 isp_fcp_reset_crn(isp, bus, /*tgt*/0, /*tgt_set*/ 0); in isp_async()
2874 isp_loop_changed(isp, bus); in isp_async()
2891 isp_loop_changed(isp, bus); in isp_async()
2892 isp_prt(isp, ISP_LOGINFO, "Chan %d %s", bus, msg); in isp_async()
2899 fc = ISP_FC_PC(isp, bus); in isp_async()
2900 tgt = FC_PORTDB_TGT(isp, bus, lp); in isp_async()
2902 isp_prt(isp, ISP_LOGCONFIG, prom, bus, tgt, lp->port_wwn, lp->portid, lp->handle, buf, "arrived"); in isp_async()
2903 if ((FCPARAM(isp, bus)->role & ISP_ROLE_INITIATOR) && in isp_async()
2906 isp_fcp_reset_crn(isp, bus, tgt, /*tgt_set*/ 1); in isp_async()
2907 isp_make_here(isp, lp, bus, tgt); in isp_async()
2909 if ((FCPARAM(isp, bus)->role & ISP_ROLE_TARGET) && in isp_async()
2931 fc = ISP_FC_PC(isp, bus); in isp_async()
2932 tgt = FC_PORTDB_TGT(isp, bus, lp); in isp_async()
2935 …isp_prt(isp, ISP_LOGCONFIG, prom, bus, tgt, lp->port_wwn, lp->new_portid, lp->handle, buf, "change… in isp_async()
2937 isp_prt(isp, ISP_LOGCONFIG, prom, bus, tgt, lp->port_wwn, lp->portid, lp->handle, buf, "stayed"); in isp_async()
2940 ((FCPARAM(isp, bus)->role & ISP_ROLE_INITIATOR) && in isp_async()
2945 isp_fcp_reset_crn(isp, bus, tgt, /*tgt_set*/ 1); in isp_async()
2948 isp_make_here(isp, lp, bus, tgt); in isp_async()
2950 isp_make_gone(isp, lp, bus, tgt); in isp_async()
2952 isp_fcp_reset_crn(isp, bus, tgt, /*tgt_set*/ 1); in isp_async()
2958 ((FCPARAM(isp, bus)->role & ISP_ROLE_TARGET) && in isp_async()
2972 isp_fcp_reset_crn(isp, bus, tgt, /*tgt_set*/ 1); in isp_async()
2981 fc = ISP_FC_PC(isp, bus); in isp_async()
2982 tgt = FC_PORTDB_TGT(isp, bus, lp); in isp_async()
2991 …isp_prt(isp, ISP_LOGCONFIG, prom, bus, tgt, lp->port_wwn, lp->portid, lp->handle, buf, "gone zombi… in isp_async()
2993 …isp_prt(isp, ISP_LOG_SANCFG|ISP_LOGDEBUG0, "Chan %d Starting Gone Device Timer with %u seconds tim… in isp_async()
2998 isp_prt(isp, ISP_LOGCONFIG, prom, bus, tgt, lp->port_wwn, lp->portid, lp->handle, buf, "gone"); in isp_async()
3023 isp_prt(isp, ISP_LOGINFO, in isp_async()
3050 if (!isp_find_pdb_by_handle(isp, bus, nphdl, &lp)) in isp_async()
3052 tgt = FC_PORTDB_TGT(isp, bus, lp); in isp_async()
3055 isp_fcp_reset_crn(isp, bus, tgt, tgt_set); in isp_async()
3062 isp_prt(isp, ISP_LOGINFO, "Chan %d %s (PortID 0x%06x)", in isp_async()
3066 isp_prt(isp, ISP_LOGINFO, "Chan %d %s", bus, msg); in isp_async()
3068 isp_loop_changed(isp, bus); in isp_async()
3090 isp_handle_platform_target_tmf(isp, notify); in isp_async()
3101 isp_handle_platform_srr(isp, notify); in isp_async()
3104 isp_prt(isp, ISP_LOGALL, "target notify code 0x%x", notify->nt_ncode); in isp_async()
3105 isp_handle_platform_target_notify_ack(isp, notify, 0); in isp_async()
3116 if (isp_notify_ack(isp, inot)) { in isp_async()
3119 tp->isp = isp; in isp_async()
3122 callout_init_mtx(&tp->timer, &isp->isp_lock, 0); in isp_async()
3126 isp_prt(isp, ISP_LOGERR, "you lose- cannot allocate a notify refire"); in isp_async()
3140 isp_handle_platform_atio7(isp, (at7_entry_t *)hp); in isp_async()
3143 isp_handle_platform_ctio(isp, (ct7_entry_t *)hp); in isp_async()
3146 isp_prt(isp, ISP_LOGWARN, "%s: unhandled target action 0x%x", in isp_async()
3156 mbox1 = ISP_READ(isp, OUTMAILBOX1); in isp_async()
3157 isp_prt(isp, ISP_LOGERR, "Internal Firmware Error @ RISC Address 0x%x", mbox1); in isp_async()
3159 isp_reinit(isp, 1); in isp_async()
3160 isp_async(isp, ISPASYNC_FW_RESTARTED, NULL); in isp_async()
3165 isp_prt(isp, ISP_LOGERR, "unknown isp_async event %d", cmd); in isp_async()
3171 isp_default_wwn(ispsoftc_t * isp, int chan, int isactive, int iswwnn) in isp_default_wwn() argument
3174 struct isp_fc *fc = ISP_FC_PC(isp, chan); in isp_default_wwn()
3183 seed = iswwnn ? FCPARAM(isp, chan)->isp_wwnn_nvram : in isp_default_wwn()
3184 FCPARAM(isp, chan)->isp_wwpn_nvram; in isp_default_wwn()
3191 seed = iswwnn ? ISP_FC_PC(isp, 0)->def_wwnn : in isp_default_wwn()
3192 ISP_FC_PC(isp, 0)->def_wwpn; in isp_default_wwn()
3194 seed = iswwnn ? FCPARAM(isp, 0)->isp_wwnn_nvram : in isp_default_wwn()
3195 FCPARAM(isp, 0)->isp_wwpn_nvram; in isp_default_wwn()
3201 seed = 0x400000007F000000ull + device_get_unit(isp->isp_dev); in isp_default_wwn()
3221 isp_prt(ispsoftc_t *isp, int level, const char *fmt, ...) in isp_prt() argument
3227 if (level != ISP_LOGALL && (level & isp->isp_dblev) == 0) { in isp_prt()
3230 snprintf(lbuf, sizeof (lbuf), "%s: ", device_get_nameunit(isp->isp_dev)); in isp_prt()
3239 isp_xs_prt(ispsoftc_t *isp, XS_T *xs, int level, const char *fmt, ...) in isp_xs_prt() argument
3242 if (level != ISP_LOGALL && (level & isp->isp_dblev) == 0) { in isp_xs_prt()
3266 isp_fc_scratch_acquire(ispsoftc_t *isp, int chan) in isp_fc_scratch_acquire() argument
3268 struct isp_fc *fc = ISP_FC_PC(isp, chan); in isp_fc_scratch_acquire()
3279 ispsoftc_t *isp = arg; in isp_platform_intr() local
3281 ISP_LOCK(isp); in isp_platform_intr()
3282 ISP_RUN_ISR(isp); in isp_platform_intr()
3283 ISP_UNLOCK(isp); in isp_platform_intr()
3289 ispsoftc_t *isp = arg; in isp_platform_intr_resp() local
3291 ISP_LOCK(isp); in isp_platform_intr_resp()
3292 isp_intr_respq(isp); in isp_platform_intr_resp()
3293 ISP_UNLOCK(isp); in isp_platform_intr_resp()
3296 ISP_WRITE(isp, BIU2400_HCCR, HCCR_2400_CMD_CLEAR_RISC_INT); in isp_platform_intr_resp()
3302 ispsoftc_t *isp = arg; in isp_platform_intr_atio() local
3304 ISP_LOCK(isp); in isp_platform_intr_atio()
3306 isp_intr_atioq(isp); in isp_platform_intr_atio()
3308 ISP_UNLOCK(isp); in isp_platform_intr_atio()
3311 ISP_WRITE(isp, BIU2400_HCCR, HCCR_2400_CMD_CLEAR_RISC_INT); in isp_platform_intr_atio()
3315 ispsoftc_t *isp; member
3325 ispsoftc_t *isp= mp->isp; in isp_dma2() local
3338 bus_dmamap_sync(isp->isp_osinfo.dmat, PISP_PCMD(csio)->dmap, op); in isp_dma2()
3340 mp->error = ISP_SEND_CMD(isp, mp->qe, dm_segs, nseg); in isp_dma2()
3342 isp_dmafree(isp, csio); in isp_dma2()
3346 isp_dmasetup(ispsoftc_t *isp, struct ccb_scsiio *csio, void *qe) in isp_dmasetup() argument
3352 mp.isp = isp; in isp_dmasetup()
3356 error = bus_dmamap_load_ccb(isp->isp_osinfo.dmat, PISP_PCMD(csio)->dmap, in isp_dmasetup()
3361 error = ISP_SEND_CMD(isp, qe, NULL, 0); in isp_dmasetup()
3386 isp_dmafree(ispsoftc_t *isp, struct ccb_scsiio *csio) in isp_dmafree() argument
3398 bus_dmamap_sync(isp->isp_osinfo.dmat, PISP_PCMD(csio)->dmap, op); in isp_dmafree()
3399 bus_dmamap_unload(isp->isp_osinfo.dmat, PISP_PCMD(csio)->dmap); in isp_dmafree()
3408 isp_fcp_reset_crn(ispsoftc_t *isp, int chan, uint32_t tgt, int tgt_set) in isp_fcp_reset_crn() argument
3410 struct isp_fc *fc = ISP_FC_PC(isp, chan); in isp_fcp_reset_crn()
3415 isp_prt(isp, ISP_LOGDEBUG0, in isp_fcp_reset_crn()
3418 isp_prt(isp, ISP_LOGDEBUG0, in isp_fcp_reset_crn()
3430 isp_fcp_next_crn(ispsoftc_t *isp, uint8_t *crnp, XS_T *cmd) in isp_fcp_next_crn() argument
3441 fc = ISP_FC_PC(isp, chan); in isp_fcp_next_crn()
3477 ispsoftc_t *isp = arg; in isp_timer() local
3479 isp_tmcmd_restart(isp); in isp_timer()
3481 callout_reset(&isp->isp_osinfo.tmo, isp_timer_count, isp_timer, isp); in isp_timer()
3486 isp_get_ecmd(ispsoftc_t *isp) in isp_get_ecmd() argument
3488 isp_ecmd_t *ecmd = isp->isp_osinfo.ecmd_free; in isp_get_ecmd()
3490 isp->isp_osinfo.ecmd_free = ecmd->next; in isp_get_ecmd()
3496 isp_put_ecmd(ispsoftc_t *isp, isp_ecmd_t *ecmd) in isp_put_ecmd() argument
3498 ecmd->next = isp->isp_osinfo.ecmd_free; in isp_put_ecmd()
3499 isp->isp_osinfo.ecmd_free = ecmd; in isp_put_ecmd()