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()
641 static void isp_complete_ctio(ispsoftc_t *isp, union ccb *);
651 get_lun_statep(ispsoftc_t *isp, int bus, lun_id_t lun) in get_lun_statep() argument
653 struct isp_fc *fc = ISP_FC_PC(isp, bus); in get_lun_statep()
664 isp_atio_restart(ispsoftc_t *isp, int bus, tstate_t *tptr) in isp_atio_restart() argument
675 isp_prt(isp, ISP_LOGTDEBUG0, in isp_atio_restart()
678 isp_handle_platform_atio7(isp, (at7_entry_t *) ntp->data); in isp_atio_restart()
679 isp_put_ntpd(isp, bus, ntp); in isp_atio_restart()
691 isp_tmcmd_restart(ispsoftc_t *isp) in isp_tmcmd_restart() argument
698 for (bus = 0; bus < isp->isp_nchan; bus++) { in isp_tmcmd_restart()
699 fc = ISP_FC_PC(isp, bus); in isp_tmcmd_restart()
702 isp_atio_restart(isp, bus, tptr); in isp_tmcmd_restart()
711 isp_target_start_ctio(isp, ccb, FROM_TIMER); in isp_tmcmd_restart()
714 isp_rq_check_above(isp); in isp_tmcmd_restart()
715 isp_rq_check_below(isp); in isp_tmcmd_restart()
719 isp_get_atpd(ispsoftc_t *isp, int chan, uint32_t tag, void *ccb) in isp_get_atpd() argument
721 struct isp_fc *fc = ISP_FC_PC(isp, chan); in isp_get_atpd()
735 isp_find_atpd(ispsoftc_t *isp, int chan, uint32_t tag) in isp_find_atpd() argument
737 struct isp_fc *fc = ISP_FC_PC(isp, chan); in isp_find_atpd()
752 isp_find_atpd_ccb(ispsoftc_t *isp, int chan, uint32_t tag, void *ccb) in isp_find_atpd_ccb() argument
754 struct isp_fc *fc = ISP_FC_PC(isp, chan); in isp_find_atpd_ccb()
765 isp_put_atpd(ispsoftc_t *isp, int chan, atio_private_data_t *atp) in isp_put_atpd() argument
767 struct isp_fc *fc = ISP_FC_PC(isp, chan); in isp_put_atpd()
770 isp_put_ecmd(isp, atp->ests); in isp_put_atpd()
777 isp_dump_atpd(ispsoftc_t *isp, int chan) in isp_dump_atpd() argument
779 struct isp_fc *fc = ISP_FC_PC(isp, chan); in isp_dump_atpd()
786 …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()
792 isp_get_ntpd(ispsoftc_t *isp, int chan) in isp_get_ntpd() argument
794 struct isp_fc *fc = ISP_FC_PC(isp, chan); in isp_get_ntpd()
804 isp_find_ntpd(ispsoftc_t *isp, int chan, uint32_t tag_id, uint32_t seq_id) in isp_find_ntpd() argument
806 struct isp_fc *fc = ISP_FC_PC(isp, chan); in isp_find_ntpd()
817 isp_put_ntpd(ispsoftc_t *isp, int chan, inot_private_data_t *ntp) in isp_put_ntpd() argument
819 struct isp_fc *fc = ISP_FC_PC(isp, chan); in isp_put_ntpd()
826 create_lun_state(ispsoftc_t *isp, int bus, struct cam_path *path) in create_lun_state() argument
828 struct isp_fc *fc = ISP_FC_PC(isp, bus); in create_lun_state()
841 ISP_PATH_PRT(isp, ISP_LOGTDEBUG0, path, "created tstate\n"); in create_lun_state()
846 destroy_lun_state(ispsoftc_t *isp, int bus, tstate_t *tptr) in destroy_lun_state() argument
848 struct isp_fc *fc = ISP_FC_PC(isp, bus); in destroy_lun_state()
863 isp_endcmd(isp, ntp->data, NIL_HANDLE, bus, SCSI_STATUS_BUSY, 0); in destroy_lun_state()
865 isp_put_ntpd(isp, bus, ntp); in destroy_lun_state()
872 isp_enable_lun(ispsoftc_t *isp, union ccb *ccb) in isp_enable_lun() argument
883 ISP_PATH_PRT(isp, ISP_LOGTDEBUG0|ISP_LOGCONFIG, ccb->ccb_h.path, in isp_enable_lun()
892 tptr = get_lun_statep(isp, bus, lun); in isp_enable_lun()
898 tptr = create_lun_state(isp, bus, ccb->ccb_h.path); in isp_enable_lun()
910 isp_disable_lun(ispsoftc_t *isp, union ccb *ccb) in isp_disable_lun() argument
917 ISP_PATH_PRT(isp, ISP_LOGTDEBUG0|ISP_LOGCONFIG, ccb->ccb_h.path, in isp_disable_lun()
926 if ((tptr = get_lun_statep(isp, bus, lun)) == NULL) { in isp_disable_lun()
932 destroy_lun_state(isp, bus, tptr); in isp_disable_lun()
938 isp_target_start_ctio(ispsoftc_t *isp, union ccb *ccb, enum Start_Ctio_How how) in isp_target_start_ctio() argument
948 …isp_prt(isp, ISP_LOGTDEBUG0, "%s: ENTRY[0x%x] how %u xfrlen %u sendstatus %d sense_len %u", __func… in isp_target_start_ctio()
951 waitq = &ISP_FC_PC(isp, XS_CHANNEL(ccb))->waitq; in isp_target_start_ctio()
973 …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()
980 atp = isp_find_atpd(isp, XS_CHANNEL(ccb), cso->tag_id); in isp_target_start_ctio()
982 …isp_prt(isp, ISP_LOGERR, "%s: [0x%x] cannot find private data adjunct in %s", __func__, cso->tag_i… in isp_target_start_ctio()
983 isp_dump_atpd(isp, XS_CHANNEL(ccb)); in isp_target_start_ctio()
993 …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()
1002 fcp = FCPARAM(isp, XS_CHANNEL(ccb)); in isp_target_start_ctio()
1004 …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()
1015 …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()
1034 isp_prt(isp, ISP_LOGTDEBUG0, "[0x%x] now sending synthesized status orig_dl=%u xfered=%u bit=%u", in isp_target_start_ctio()
1069 isp_prt(isp, ISP_LOGERR, in isp_target_start_ctio()
1096 cto->ct_vpidx = ISP_GET_VPIDX(isp, XS_CHANNEL(ccb)); in isp_target_start_ctio()
1134 atp->ests = isp_get_ecmd(isp); in isp_target_start_ctio()
1158 isp_put_fcp_rsp_iu(isp, &rp, atp->ests); in isp_target_start_ctio()
1161 isp_put_fcp_rsp_iu(isp, &rp, atp->ests); in isp_target_start_ctio()
1163 if (isp->isp_dblev & ISP_LOGTDEBUG1) { in isp_target_start_ctio()
1164 …isp_print_bytes(isp, "FCP Response Frame After Swizzling", MIN_FCP_RESPONSE_SIZE + sense_length, a… in isp_target_start_ctio()
1166 bus_dmamap_sync(isp->isp_osinfo.ecmd_dmat, isp->isp_osinfo.ecmd_map, BUS_DMASYNC_PREWRITE); in isp_target_start_ctio()
1167 addr = isp->isp_osinfo.ecmd_dma; in isp_target_start_ctio()
1168 addr += ((((isp_ecmd_t *)atp->ests) - isp->isp_osinfo.ecmd_base) * XCMD_SIZE); in isp_target_start_ctio()
1169 …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()
1170 … (uintmax_t) isp->isp_osinfo.ecmd_dma, (uintmax_t)addr, MIN_FCP_RESPONSE_SIZE + sense_length); in isp_target_start_ctio()
1177 …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()
1181 …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()
1202 …if (ISP_FC_PC(isp, XS_CHANNEL(ccb))->inject_lost_data_frame && xfrlen > ISP_FC_PC(isp, XS_CHANNEL(… in isp_target_start_ctio()
1203 …isp_prt(isp, ISP_LOGWARN, "%s: truncating data frame with xfrlen %d to %d", __func__, xfrlen, xfrl… in isp_target_start_ctio()
1204 ISP_FC_PC(isp, XS_CHANNEL(ccb))->inject_lost_data_frame = 0; in isp_target_start_ctio()
1224 …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()
1228 if (isp_get_pcmd(isp, ccb)) { in isp_target_start_ctio()
1229 ISP_PATH_PRT(isp, ISP_LOGWARN, ccb->ccb_h.path, "out of PCMDs\n"); in isp_target_start_ctio()
1233 handle = isp_allocate_handle(isp, ccb, ISP_HANDLE_TARGET); in isp_target_start_ctio()
1235 ISP_PATH_PRT(isp, ISP_LOGWARN, ccb->ccb_h.path, "No XFLIST pointers for %s\n", __func__); in isp_target_start_ctio()
1237 isp_free_pcmd(isp, ccb); in isp_target_start_ctio()
1252 dmaresult = ISP_DMASETUP(isp, cso, cto); in isp_target_start_ctio()
1254 isp_destroy_handle(isp, handle); in isp_target_start_ctio()
1255 isp_free_pcmd(isp, ccb); in isp_target_start_ctio()
1279 ispsoftc_t *isp = tp->isp; in isp_refire_notify_ack() local
1281 ISP_ASSERT_LOCKED(isp); in isp_refire_notify_ack()
1282 if (isp_notify_ack(isp, tp->not)) { in isp_refire_notify_ack()
1291 isp_complete_ctio(ispsoftc_t *isp, union ccb *ccb) in isp_complete_ctio() argument
1294 isp_rq_check_below(isp); in isp_complete_ctio()
1300 isp_handle_platform_atio7(ispsoftc_t *isp, at7_entry_t *aep) in isp_handle_platform_atio7() argument
1317 if (ISP_CAP_MULTI_ID(isp) && isp->isp_nchan > 1) { in isp_handle_platform_atio7()
1319 isp_find_chan_by_did(isp, did, &chan); in isp_handle_platform_atio7()
1321 isp_prt(isp, ISP_LOGWARN, in isp_handle_platform_atio7()
1324 isp_endcmd(isp, aep, NIL_HANDLE, ISP_NOCHAN, in isp_handle_platform_atio7()
1335 if (isp_find_pdb_by_portid(isp, chan, sid, &lp) == 0) { in isp_handle_platform_atio7()
1339 …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()
1341 isp_dump_portdb(isp, chan); in isp_handle_platform_atio7()
1342 isp_endcmd(isp, aep, NIL_HANDLE, chan, ECMD_TERMINATE, 0); in isp_handle_platform_atio7()
1350 tptr = get_lun_statep(isp, chan, lun); in isp_handle_platform_atio7()
1352 tptr = get_lun_statep(isp, chan, CAM_LUN_WILDCARD); in isp_handle_platform_atio7()
1354 isp_prt(isp, ISP_LOGWARN, in isp_handle_platform_atio7()
1358 isp_endcmd(isp, aep, nphdl, chan, SCSI_STATUS_BUSY, 0); in isp_handle_platform_atio7()
1360 …isp_endcmd(isp, aep, nphdl, chan, SCSI_STATUS_CHECK_COND | ECMD_SVALID | (0x5 << 12) | (0x25 << 16… in isp_handle_platform_atio7()
1369 if (isp_atio_restart(isp, chan, tptr)) in isp_handle_platform_atio7()
1376 isp_endcmd(isp, aep, nphdl, chan, SCSI_BUSY, 0); in isp_handle_platform_atio7()
1385 isp_prt(isp, ISP_LOGTDEBUG0, "[0x%x] out of atios", aep->at_rxid); in isp_handle_platform_atio7()
1389 oatp = isp_find_atpd(isp, chan, aep->at_rxid); in isp_handle_platform_atio7()
1391 isp_prt(isp, oatp->state == ATPD_STATE_LAST_CTIO ? ISP_LOGTDEBUG0 : in isp_handle_platform_atio7()
1400 atp = isp_get_atpd(isp, chan, aep->at_rxid, atiop); in isp_handle_platform_atio7()
1402 isp_prt(isp, ISP_LOGTDEBUG0, "[0x%x] out of atps", aep->at_rxid); in isp_handle_platform_atio7()
1403 isp_endcmd(isp, aep, nphdl, chan, SCSI_BUSY, 0); in isp_handle_platform_atio7()
1409 ISP_PATH_PRT(isp, ISP_LOGTDEBUG2, atiop->ccb_h.path, "Take FREE ATIO\n"); in isp_handle_platform_atio7()
1410 atiop->init_id = FC_PORTDB_TGT(isp, chan, lp); in isp_handle_platform_atio7()
1411 atiop->ccb_h.target_id = ISP_MAX_TARGETS(isp); in isp_handle_platform_atio7()
1416 isp_prt(isp, ISP_LOGWARN, "additional CDBLEN ignored"); in isp_handle_platform_atio7()
1458 isp_prt(isp, ISP_LOGTDEBUG0, "ATIO7[0x%x] CDB=0x%x lun %jx datalen %u", in isp_handle_platform_atio7()
1464 ntp = isp_get_ntpd(isp, chan); in isp_handle_platform_atio7()
1466 isp_endcmd(isp, aep, nphdl, chan, SCSI_STATUS_BUSY, 0); in isp_handle_platform_atio7()
1481 isp_handle_srr_start(ispsoftc_t *isp, atio_private_data_t *atp) in isp_handle_srr_start() argument
1493 isp_prt(isp, ISP_LOGWARN, "SRR[0x%x] null ccb", atp->tag); in isp_handle_srr_start()
1509 …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()
1513 …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()
1516 …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()
1519 isp_prt(isp, ISP_LOGTINFO, "SRR[0x%x] Got an FCP RSP SRR- resending status", atp->tag); in isp_handle_srr_start()
1529 isp_prt(isp, ISP_LOGWARN, "Got an FCP DATA IN SRR- dropping"); in isp_handle_srr_start()
1533 isp_prt(isp, ISP_LOGWARN, "Got an unknown information (%x) SRR- dropping", inot->in_srr_iu); in isp_handle_srr_start()
1542 if (isp_notify_ack(isp, inot)) { in isp_handle_srr_start()
1543 isp_prt(isp, ISP_LOGWARN, "could not push positive ack for SRR- you lose"); in isp_handle_srr_start()
1546 isp_target_start_ctio(isp, ccb, FROM_SRR); in isp_handle_srr_start()
1550 isp_async(isp, ISPASYNC_TARGET_NOTIFY_ACK, inot); in isp_handle_srr_start()
1553 isp_complete_ctio(isp, ccb); in isp_handle_srr_start()
1556 if (isp_notify_ack(isp, inot)) { in isp_handle_srr_start()
1557 isp_prt(isp, ISP_LOGWARN, "could not push positive ack for SRR- you lose"); in isp_handle_srr_start()
1574 isp_complete_ctio(isp, ccb); in isp_handle_srr_start()
1579 isp_handle_platform_srr(ispsoftc_t *isp, isp_notify_t *notify) in isp_handle_platform_srr() argument
1585 atp = isp_find_atpd(isp, notify->nt_channel, tag); in isp_handle_platform_srr()
1587 isp_prt(isp, ISP_LOGERR, "%s: cannot find adjunct for %x in SRR Notify", in isp_handle_platform_srr()
1589 isp_async(isp, ISPASYNC_TARGET_NOTIFY_ACK, inot); in isp_handle_platform_srr()
1594 isp_prt(isp, ISP_LOGTINFO, "SRR[0x%x] flags 0x%x srr_iu %x reloff 0x%x", in isp_handle_platform_srr()
1598 isp_handle_srr_start(isp, atp); in isp_handle_platform_srr()
1602 isp_handle_platform_ctio(ispsoftc_t *isp, ct7_entry_t *ct) in isp_handle_platform_ctio() argument
1611 ccb = isp_find_xs(isp, handle); in isp_handle_platform_ctio()
1613 isp_print_bytes(isp, "null ccb in isp_handle_platform_ctio", QENTRY_LEN, ct); in isp_handle_platform_ctio()
1616 isp_destroy_handle(isp, handle); in isp_handle_platform_ctio()
1618 isp_free_pcmd(isp, ccb); in isp_handle_platform_ctio()
1621 atp = isp_find_atpd(isp, bus, ct->ct_rxid); in isp_handle_platform_ctio()
1628 atp = isp_find_atpd(isp, bus, ccb->csio.tag_id); in isp_handle_platform_ctio()
1631 isp_prt(isp, ISP_LOGERR, "%s: cannot find adjunct for %x after I/O", __func__, ccb->csio.tag_id); in isp_handle_platform_ctio()
1642 isp_handle_srr_start(isp, atp); in isp_handle_platform_ctio()
1656 …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()
1680 isp_prt(isp, ISP_LOGTDEBUG0, "%s CTIO[0x%x] done (ok=%d nc=%d nowsendstatus=%d ccb ss=%d)", in isp_handle_platform_ctio()
1684 isp_target_start_ctio(isp, ccb, FROM_CTIO_DONE); in isp_handle_platform_ctio()
1694 isp_put_atpd(isp, bus, atp); in isp_handle_platform_ctio()
1701 isp_complete_ctio(isp, ccb); in isp_handle_platform_ctio()
1705 isp_handle_platform_target_notify_ack(ispsoftc_t *isp, isp_notify_t *mp, uint32_t rsp) in isp_handle_platform_target_notify_ack() argument
1709 if (isp->isp_state != ISP_RUNSTATE) { in isp_handle_platform_target_notify_ack()
1710 …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()
1724 if (isp_find_pdb_by_portid(isp, mp->nt_channel, sid, &lp)) { in isp_handle_platform_target_notify_ack()
1749 return (isp_send_entry(isp, cto)); in isp_handle_platform_target_notify_ack()
1756 return (isp_acknak_abts(isp, mp->nt_lreserved, (rsp == 0) ? 0 : EINVAL)); in isp_handle_platform_target_notify_ack()
1762 …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()
1766 return (isp_notify_ack(isp, mp->nt_lreserved)); in isp_handle_platform_target_notify_ack()
1779 isp_handle_platform_target_tmf(ispsoftc_t *isp, isp_notify_t *notify) in isp_handle_platform_target_tmf() argument
1788 …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()
1794 atp = isp_find_atpd(isp, notify->nt_channel, in isp_handle_platform_target_tmf()
1801 tptr = get_lun_statep(isp, notify->nt_channel, lun); in isp_handle_platform_target_tmf()
1803 tptr = get_lun_statep(isp, notify->nt_channel, CAM_LUN_WILDCARD); in isp_handle_platform_target_tmf()
1805 …isp_prt(isp, ISP_LOGWARN, "%s: no state pointer found for chan %d lun %#jx", __func__, notify->nt_… in isp_handle_platform_target_tmf()
1811 …isp_prt(isp, ISP_LOGWARN, "%s: out of immediate notify structures for chan %d lun %#jx", __func__,… in isp_handle_platform_target_tmf()
1815 inot->ccb_h.target_id = ISP_MAX_TARGETS(isp); in isp_handle_platform_target_tmf()
1817 if (isp_find_pdb_by_portid(isp, notify->nt_channel, notify->nt_sid, &lp) == 0 && in isp_handle_platform_target_tmf()
1818 isp_find_pdb_by_handle(isp, notify->nt_channel, notify->nt_nphdl, &lp) == 0) { in isp_handle_platform_target_tmf()
1821 inot->initiator_id = FC_PORTDB_TGT(isp, notify->nt_channel, lp); in isp_handle_platform_target_tmf()
1828 isp_target_mark_aborted_early(isp, notify->nt_channel, tptr, inot->tag_id); in isp_handle_platform_target_tmf()
1832 isp_target_mark_aborted_early(isp, notify->nt_channel, tptr, TAG_ANY); in isp_handle_platform_target_tmf()
1854 …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()
1858 ntp = isp_get_ntpd(isp, notify->nt_channel); in isp_handle_platform_target_tmf()
1860 isp_prt(isp, ISP_LOGWARN, "%s: out of inotify private structures", __func__); in isp_handle_platform_target_tmf()
1872 ISP_PATH_PRT(isp, ISP_LOGTDEBUG2, inot->ccb_h.path, "Take FREE INOT\n"); in isp_handle_platform_target_tmf()
1879 if (isp_acknak_abts(isp, notify->nt_lreserved, ENOMEM)) { in isp_handle_platform_target_tmf()
1880 isp_prt(isp, ISP_LOGWARN, "you lose- unable to send an ACKNAK"); in isp_handle_platform_target_tmf()
1883 isp_async(isp, ISPASYNC_TARGET_NOTIFY_ACK, notify->nt_lreserved); in isp_handle_platform_target_tmf()
1892 isp_target_mark_aborted_early(ispsoftc_t *isp, int chan, tstate_t *tptr, uint32_t tag_id) in isp_target_mark_aborted_early() argument
1902 isp_endcmd(isp, ntp->data, NIL_HANDLE, chan, in isp_target_mark_aborted_early()
1904 isp_put_ntpd(isp, chan, ntp); in isp_target_mark_aborted_early()
1913 ispsoftc_t *isp = cam_sim_softc(sim); in isp_poll() local
1915 ISP_RUN_ISR(isp); in isp_poll()
1923 ispsoftc_t *isp; in isp_watchdog() local
1926 isp = XS_ISP(xs); in isp_watchdog()
1928 handle = isp_find_handle(isp, xs); in isp_watchdog()
1934 ISP_RUN_ISR(isp); in isp_watchdog()
1936 handle = isp_find_handle(isp, xs); in isp_watchdog()
1947 if (isp_control(isp, ISPCTL_ABORT_CMD, xs) == 0) { in isp_watchdog()
1955 xs = isp_find_xs(isp, handle); in isp_watchdog()
1968 ISP_DMAFREE(isp, xs); in isp_watchdog()
1969 isp_destroy_handle(isp, handle); in isp_watchdog()
1970 isp_prt(isp, ISP_LOGERR, "%s: timeout for handle 0x%x", __func__, handle); in isp_watchdog()
1975 …isp_prt(isp, ISP_LOGWARN, "%s: timeout for handle 0x%x, recovered during interrupt", __func__, oha… in isp_watchdog()
1977 isp_prt(isp, ISP_LOGWARN, "%s: timeout for handle already free", __func__); in isp_watchdog()
1983 isp_make_here(ispsoftc_t *isp, fcportdb_t *fcp, int chan, int tgt) in isp_make_here() argument
1986 struct isp_fc *fc = ISP_FC_PC(isp, chan); in isp_make_here()
1993 isp_prt(isp, ISP_LOGWARN, "Chan %d unable to alloc CCB for rescan", chan); in isp_make_here()
1998 isp_prt(isp, ISP_LOGWARN, "unable to create path for rescan"); in isp_make_here()
2006 isp_make_gone(ispsoftc_t *isp, fcportdb_t *fcp, int chan, int tgt) in isp_make_gone() argument
2009 struct isp_fc *fc = ISP_FC_PC(isp, chan); in isp_make_gone()
2038 ispsoftc_t *isp = fc->isp; in isp_gdt_task() local
2039 int chan = fc - ISP_FC_PC(isp, 0); in isp_gdt_task()
2045 ISP_LOCK(isp); in isp_gdt_task()
2046 isp_prt(isp, ISP_LOGDEBUG0, "Chan %d GDT timer expired", chan); in isp_gdt_task()
2048 lp = &FCPARAM(isp, chan)->portdb[dbidx]; in isp_gdt_task()
2058 isp_prt(isp, ISP_LOGCONFIG, prom3, chan, dbidx, lp->portid, "Gone Device Timeout"); in isp_gdt_task()
2061 isp_make_gone(isp, lp, chan, dbidx); in isp_gdt_task()
2080 …isp_prt(isp, ISP_LOG_SANCFG, "Chan %d Stopping Gone Device Timer @ %lu", chan, (unsigned long) tim… in isp_gdt_task()
2083 ISP_UNLOCK(isp); in isp_gdt_task()
2096 isp_loop_changed(ispsoftc_t *isp, int chan) in isp_loop_changed() argument
2098 fcparam *fcp = FCPARAM(isp, chan); in isp_loop_changed()
2099 struct isp_fc *fc = ISP_FC_PC(isp, chan); in isp_loop_changed()
2103 isp_prt(isp, ISP_LOG_SANCFG|ISP_LOGDEBUG0, "Chan %d Loop changed", chan); in isp_loop_changed()
2105 isp_freeze_loopdown(isp, chan); in isp_loop_changed()
2111 isp_loop_up(ispsoftc_t *isp, int chan) in isp_loop_up() argument
2113 struct isp_fc *fc = ISP_FC_PC(isp, chan); in isp_loop_up()
2115 isp_prt(isp, ISP_LOG_SANCFG|ISP_LOGDEBUG0, "Chan %d Loop is up", chan); in isp_loop_up()
2118 isp_unfreeze_loopdown(isp, chan); in isp_loop_up()
2122 isp_loop_dead(ispsoftc_t *isp, int chan) in isp_loop_dead() argument
2124 fcparam *fcp = FCPARAM(isp, chan); in isp_loop_dead()
2125 struct isp_fc *fc = ISP_FC_PC(isp, chan); in isp_loop_dead()
2131 isp_prt(isp, ISP_LOG_SANCFG|ISP_LOGDEBUG0, "Chan %d Loop is dead", chan); in isp_loop_dead()
2142 for (i = 0; i < ISP_HANDLE_NUM(isp); i++) { in isp_loop_dead()
2145 if (ISP_H2HT(isp->isp_xflist[i].handle) != ISP_HANDLE_INITIATOR) { in isp_loop_dead()
2148 if ((xs = isp->isp_xflist[i].cmd) == NULL) { in isp_loop_dead()
2154 isp_prt(isp, ISP_LOGWARN, "command handle 0x%x for %d.%d.%jx orphaned by loop down timeout", in isp_loop_dead()
2155 isp->isp_xflist[i].handle, chan, XS_TGT(xs), in isp_loop_dead()
2163 if (isp_control(isp, ISPCTL_ABORT_CMD, xs) == 0) { in isp_loop_dead()
2167 ISP_DMAFREE(isp, xs); in isp_loop_dead()
2168 isp_destroy_handle(isp, isp->isp_xflist[i].handle); in isp_loop_dead()
2169 …isp_prt(isp, ISP_LOGWARN, "command handle 0x%x for %d.%d.%jx could not be aborted and was destroye… in isp_loop_dead()
2170 isp->isp_xflist[i].handle, chan, XS_TGT(xs), in isp_loop_dead()
2176 isp_prt(isp, ISP_LOGCONFIG, prom3, chan, dbidx, lp->portid, "Loop Down Timeout"); in isp_loop_dead()
2179 isp_make_gone(isp, lp, chan, dbidx); in isp_loop_dead()
2193 isp_unfreeze_loopdown(isp, chan); in isp_loop_dead()
2201 ispsoftc_t *isp = fc->isp; in isp_kthread() local
2202 int chan = fc - ISP_FC_PC(isp, 0); in isp_kthread()
2206 ISP_LOCK(isp); in isp_kthread()
2207 while (isp->isp_osinfo.is_exiting == 0) { in isp_kthread()
2208 isp_prt(isp, ISP_LOG_SANCFG|ISP_LOGDEBUG0, in isp_kthread()
2210 lb = isp_fc_runstate(isp, chan, 250000); in isp_kthread()
2211 isp_prt(isp, ISP_LOG_SANCFG|ISP_LOGDEBUG0, in isp_kthread()
2253 isp_loop_up(isp, chan); in isp_kthread()
2255 isp_loop_dead(isp, chan); in isp_kthread()
2258 isp_prt(isp, ISP_LOG_SANCFG|ISP_LOGDEBUG0, in isp_kthread()
2260 msleep(fc, &isp->isp_lock, PRIBIO, "ispf", slp * hz); in isp_kthread()
2264 ISP_UNLOCK(isp); in isp_kthread()
2270 isp_abort_atpd(ispsoftc_t *isp, int chan, atio_private_data_t *atp) in isp_abort_atpd() argument
2285 return (isp_send_entry(isp, cto)); in isp_abort_atpd()
2289 isp_abort_atio(ispsoftc_t *isp, union ccb *ccb) in isp_abort_atio() argument
2296 tptr = get_lun_statep(isp, XS_CHANNEL(accb), XS_LUN(accb)); in isp_abort_atio()
2303 ISP_PATH_PRT(isp, ISP_LOGTDEBUG2, sccb->path, in isp_abort_atio()
2313 atp = isp_find_atpd_ccb(isp, XS_CHANNEL(accb), accb->atio.tag_id, accb); in isp_abort_atio()
2315 if (isp_abort_atpd(isp, XS_CHANNEL(accb), atp)) { in isp_abort_atio()
2319 isp_put_atpd(isp, XS_CHANNEL(accb), atp); in isp_abort_atio()
2326 isp_abort_inot(ispsoftc_t *isp, union ccb *ccb) in isp_abort_inot() argument
2333 tptr = get_lun_statep(isp, XS_CHANNEL(accb), XS_LUN(accb)); in isp_abort_inot()
2340 ISP_PATH_PRT(isp, ISP_LOGTDEBUG2, sccb->path, in isp_abort_inot()
2350 ntp = isp_find_ntpd(isp, XS_CHANNEL(accb), accb->cin1.tag_id, accb->cin1.seq_id); in isp_abort_inot()
2353 isp_async(isp, ISPASYNC_TARGET_NOTIFY_ACK, in isp_abort_inot()
2356 isp_put_ntpd(isp, XS_CHANNEL(accb), ntp); in isp_abort_inot()
2369 ispsoftc_t *isp; in isp_action() local
2376 isp = (ispsoftc_t *)cam_sim_softc(sim); in isp_action()
2377 ISP_ASSERT_LOCKED(isp); in isp_action()
2379 isp_prt(isp, ISP_LOGDEBUG2, "isp_action code %x", ccb->ccb_h.func_code); in isp_action()
2395 if (ccb->ccb_h.target_id >= ISP_MAX_TARGETS(isp)) { in isp_action()
2405 if (isp_get_pcmd(isp, ccb)) { in isp_action()
2406 isp_prt(isp, ISP_LOGWARN, "out of PCMDs"); in isp_action()
2414 isp_rq_check_above(isp); in isp_action()
2426 isp_prt(isp, ISP_LOGDEBUG0, "%d.%jx retry later", in isp_action()
2431 isp_free_pcmd(isp, ccb); in isp_action()
2435 isp_free_pcmd(isp, ccb); in isp_action()
2445 isp_prt(isp, ISP_LOGERR, "What's this? 0x%x at %d in file %s", error, __LINE__, __FILE__); in isp_action()
2447 isp_free_pcmd(isp, ccb); in isp_action()
2455 isp_enable_lun(isp, ccb); in isp_action()
2457 isp_disable_lun(isp, ccb); in isp_action()
2463 tstate_t *tptr = get_lun_statep(isp, XS_CHANNEL(ccb), ccb->ccb_h.target_lun); in isp_action()
2471 ISP_PATH_PRT(isp, ISP_LOGWARN, ccb->ccb_h.path, in isp_action()
2482 ISP_PATH_PRT(isp, ISP_LOGTDEBUG2, ccb->ccb_h.path, in isp_action()
2487 ISP_PATH_PRT(isp, ISP_LOGTDEBUG2, ccb->ccb_h.path, in isp_action()
2505 …ISP_PATH_PRT(isp, ISP_LOGTDEBUG0, ccb->ccb_h.path, "%s: [0x%x] NOTIFY ACKNOWLEDGE for 0x%x seen\n"… in isp_action()
2506 ntp = isp_find_ntpd(isp, XS_CHANNEL(ccb), ccb->cna2.tag_id, ccb->cna2.seq_id); in isp_action()
2508 …ISP_PATH_PRT(isp, ISP_LOGWARN, ccb->ccb_h.path, "%s: [0x%x] XPT_NOTIFY_ACKNOWLEDGE of 0x%x cannot … in isp_action()
2523 (atp = isp_find_atpd(isp, XS_CHANNEL(ccb), ccb->cna2.seq_id)) != NULL) { in isp_action()
2525 isp_abort_atpd(isp, XS_CHANNEL(ccb), atp) == 0) in isp_action()
2526 isp_put_atpd(isp, XS_CHANNEL(ccb), atp); in isp_action()
2531 if (isp_handle_platform_target_notify_ack(isp, &ntp->nt, rsp)) { in isp_action()
2538 isp_put_ntpd(isp, XS_CHANNEL(ccb), ntp); in isp_action()
2540 …ISP_PATH_PRT(isp, ISP_LOGTDEBUG0, ccb->ccb_h.path, "%s: [0x%x] calling xpt_done for tag 0x%x\n", _… in isp_action()
2545 isp_target_start_ctio(isp, ccb, FROM_CAM); in isp_action()
2546 isp_rq_check_above(isp); in isp_action()
2553 error = isp_control(isp, ISPCTL_RESET_DEV, bus, tgt); in isp_action()
2562 isp_fcp_reset_crn(isp, bus, tgt, /*tgt_set*/ 1); in isp_action()
2574 isp_abort_atio(isp, ccb); in isp_action()
2577 isp_abort_inot(isp, ccb); in isp_action()
2581 error = isp_control(isp, ISPCTL_ABORT_CMD, accb); in isp_action()
2618 fcp = FCPARAM(isp, bus); in isp_action()
2646 error = isp_control(isp, ISPCTL_RESET_BUS, bus); in isp_action()
2655 xpt_async(AC_BUS_RESET, ISP_FC_PC(isp, bus)->path, 0); in isp_action()
2668 fcparam *fcp = FCPARAM(isp, bus); in isp_action()
2671 fcp->isp_wwnn = ISP_FC_PC(isp, bus)->def_wwnn = kp->xport_specific.fc.wwnn; in isp_action()
2672 fcp->isp_wwpn = ISP_FC_PC(isp, bus)->def_wwpn = kp->xport_specific.fc.wwpn; in isp_action()
2673 …isp_prt(isp, ISP_LOGALL, "Setting Channel %d wwns to 0x%jx 0x%jx", bus, fcp->isp_wwnn, fcp->isp_ww… in isp_action()
2707 …ISP_PATH_PRT(isp, ISP_LOGCONFIG, ccb->ccb_h.path, "changing role on from %d to %d\n", fcp->role, n… in isp_action()
2708 if (isp_control(isp, ISPCTL_CHANGE_ROLE, in isp_action()
2723 fcparam *fcp = FCPARAM(isp, bus); in isp_action()
2757 cpi->max_target = ISP_MAX_TARGETS(isp) - 1; in isp_action()
2762 fcp = FCPARAM(isp, bus); in isp_action()
2776 if (IS_25XX(isp)) in isp_action()
2807 ispsoftc_t *isp = XS_ISP(sccb); in isp_done() local
2833 isp_free_pcmd(isp, (union ccb *) sccb); in isp_done()
2835 isp_rq_check_below(isp); in isp_done()
2840 isp_async(ispsoftc_t *isp, ispasync_t cmd, ...) in isp_async() argument
2862 lipp = ISP_READ(isp, OUTMAILBOX1); in isp_async()
2863 fcp = FCPARAM(isp, bus); in isp_async()
2865 isp_prt(isp, ISP_LOGINFO, "Chan %d LOOP Reset, LIP primitive %x", bus, lipp); in isp_async()
2878 isp_fcp_reset_crn(isp, bus, /*tgt*/0, /*tgt_set*/ 0); in isp_async()
2879 isp_loop_changed(isp, bus); in isp_async()
2896 isp_loop_changed(isp, bus); in isp_async()
2897 isp_prt(isp, ISP_LOGINFO, "Chan %d %s", bus, msg); in isp_async()
2904 fc = ISP_FC_PC(isp, bus); in isp_async()
2905 tgt = FC_PORTDB_TGT(isp, bus, lp); in isp_async()
2907 isp_prt(isp, ISP_LOGCONFIG, prom, bus, tgt, lp->port_wwn, lp->portid, lp->handle, buf, "arrived"); in isp_async()
2908 if ((FCPARAM(isp, bus)->role & ISP_ROLE_INITIATOR) && in isp_async()
2911 isp_fcp_reset_crn(isp, bus, tgt, /*tgt_set*/ 1); in isp_async()
2912 isp_make_here(isp, lp, bus, tgt); in isp_async()
2914 if ((FCPARAM(isp, bus)->role & ISP_ROLE_TARGET) && in isp_async()
2936 fc = ISP_FC_PC(isp, bus); in isp_async()
2937 tgt = FC_PORTDB_TGT(isp, bus, lp); in isp_async()
2940 …isp_prt(isp, ISP_LOGCONFIG, prom, bus, tgt, lp->port_wwn, lp->new_portid, lp->handle, buf, "change… in isp_async()
2942 isp_prt(isp, ISP_LOGCONFIG, prom, bus, tgt, lp->port_wwn, lp->portid, lp->handle, buf, "stayed"); in isp_async()
2945 ((FCPARAM(isp, bus)->role & ISP_ROLE_INITIATOR) && in isp_async()
2950 isp_fcp_reset_crn(isp, bus, tgt, /*tgt_set*/ 1); in isp_async()
2953 isp_make_here(isp, lp, bus, tgt); in isp_async()
2955 isp_make_gone(isp, lp, bus, tgt); in isp_async()
2957 isp_fcp_reset_crn(isp, bus, tgt, /*tgt_set*/ 1); in isp_async()
2963 ((FCPARAM(isp, bus)->role & ISP_ROLE_TARGET) && in isp_async()
2977 isp_fcp_reset_crn(isp, bus, tgt, /*tgt_set*/ 1); in isp_async()
2986 fc = ISP_FC_PC(isp, bus); in isp_async()
2987 tgt = FC_PORTDB_TGT(isp, bus, lp); in isp_async()
2996 …isp_prt(isp, ISP_LOGCONFIG, prom, bus, tgt, lp->port_wwn, lp->portid, lp->handle, buf, "gone zombi… in isp_async()
2998 …isp_prt(isp, ISP_LOG_SANCFG|ISP_LOGDEBUG0, "Chan %d Starting Gone Device Timer with %u seconds tim… in isp_async()
3003 isp_prt(isp, ISP_LOGCONFIG, prom, bus, tgt, lp->port_wwn, lp->portid, lp->handle, buf, "gone"); in isp_async()
3028 isp_prt(isp, ISP_LOGINFO, in isp_async()
3055 if (!isp_find_pdb_by_handle(isp, bus, nphdl, &lp)) in isp_async()
3057 tgt = FC_PORTDB_TGT(isp, bus, lp); in isp_async()
3060 isp_fcp_reset_crn(isp, bus, tgt, tgt_set); in isp_async()
3067 isp_prt(isp, ISP_LOGINFO, "Chan %d %s (PortID 0x%06x)", in isp_async()
3071 isp_prt(isp, ISP_LOGINFO, "Chan %d %s", bus, msg); in isp_async()
3073 isp_loop_changed(isp, bus); in isp_async()
3095 isp_handle_platform_target_tmf(isp, notify); in isp_async()
3106 isp_handle_platform_srr(isp, notify); in isp_async()
3109 isp_prt(isp, ISP_LOGALL, "target notify code 0x%x", notify->nt_ncode); in isp_async()
3110 isp_handle_platform_target_notify_ack(isp, notify, 0); in isp_async()
3121 if (isp_notify_ack(isp, inot)) { in isp_async()
3124 tp->isp = isp; in isp_async()
3127 callout_init_mtx(&tp->timer, &isp->isp_lock, 0); in isp_async()
3131 isp_prt(isp, ISP_LOGERR, "you lose- cannot allocate a notify refire"); in isp_async()
3145 isp_handle_platform_atio7(isp, (at7_entry_t *)hp); in isp_async()
3148 isp_handle_platform_ctio(isp, (ct7_entry_t *)hp); in isp_async()
3151 isp_prt(isp, ISP_LOGWARN, "%s: unhandled target action 0x%x", in isp_async()
3161 mbox1 = ISP_READ(isp, OUTMAILBOX1); in isp_async()
3162 isp_prt(isp, ISP_LOGERR, "Internal Firmware Error @ RISC Address 0x%x", mbox1); in isp_async()
3164 isp_reinit(isp, 1); in isp_async()
3165 isp_async(isp, ISPASYNC_FW_RESTARTED, NULL); in isp_async()
3170 isp_prt(isp, ISP_LOGERR, "unknown isp_async event %d", cmd); in isp_async()
3176 isp_default_wwn(ispsoftc_t * isp, int chan, int isactive, int iswwnn) in isp_default_wwn() argument
3179 struct isp_fc *fc = ISP_FC_PC(isp, chan); in isp_default_wwn()
3188 seed = iswwnn ? FCPARAM(isp, chan)->isp_wwnn_nvram : in isp_default_wwn()
3189 FCPARAM(isp, chan)->isp_wwpn_nvram; in isp_default_wwn()
3196 seed = iswwnn ? ISP_FC_PC(isp, 0)->def_wwnn : in isp_default_wwn()
3197 ISP_FC_PC(isp, 0)->def_wwpn; in isp_default_wwn()
3199 seed = iswwnn ? FCPARAM(isp, 0)->isp_wwnn_nvram : in isp_default_wwn()
3200 FCPARAM(isp, 0)->isp_wwpn_nvram; in isp_default_wwn()
3206 seed = 0x400000007F000000ull + device_get_unit(isp->isp_dev); in isp_default_wwn()
3226 isp_prt(ispsoftc_t *isp, int level, const char *fmt, ...) in isp_prt() argument
3232 if (level != ISP_LOGALL && (level & isp->isp_dblev) == 0) { in isp_prt()
3235 snprintf(lbuf, sizeof (lbuf), "%s: ", device_get_nameunit(isp->isp_dev)); in isp_prt()
3244 isp_xs_prt(ispsoftc_t *isp, XS_T *xs, int level, const char *fmt, ...) in isp_xs_prt() argument
3247 if (level != ISP_LOGALL && (level & isp->isp_dblev) == 0) { in isp_xs_prt()
3271 isp_fc_scratch_acquire(ispsoftc_t *isp, int chan) in isp_fc_scratch_acquire() argument
3273 struct isp_fc *fc = ISP_FC_PC(isp, chan); in isp_fc_scratch_acquire()
3284 ispsoftc_t *isp = arg; in isp_platform_intr() local
3286 ISP_LOCK(isp); in isp_platform_intr()
3287 ISP_RUN_ISR(isp); in isp_platform_intr()
3288 ISP_UNLOCK(isp); in isp_platform_intr()
3294 ispsoftc_t *isp = arg; in isp_platform_intr_resp() local
3296 ISP_LOCK(isp); in isp_platform_intr_resp()
3297 isp_intr_respq(isp); in isp_platform_intr_resp()
3298 ISP_UNLOCK(isp); in isp_platform_intr_resp()
3301 ISP_WRITE(isp, BIU2400_HCCR, HCCR_2400_CMD_CLEAR_RISC_INT); in isp_platform_intr_resp()
3307 ispsoftc_t *isp = arg; in isp_platform_intr_atio() local
3309 ISP_LOCK(isp); in isp_platform_intr_atio()
3311 isp_intr_atioq(isp); in isp_platform_intr_atio()
3313 ISP_UNLOCK(isp); in isp_platform_intr_atio()
3316 ISP_WRITE(isp, BIU2400_HCCR, HCCR_2400_CMD_CLEAR_RISC_INT); in isp_platform_intr_atio()
3320 ispsoftc_t *isp; member
3330 ispsoftc_t *isp= mp->isp; in isp_dma2() local
3343 bus_dmamap_sync(isp->isp_osinfo.dmat, PISP_PCMD(csio)->dmap, op); in isp_dma2()
3345 mp->error = ISP_SEND_CMD(isp, mp->qe, dm_segs, nseg); in isp_dma2()
3347 isp_dmafree(isp, csio); in isp_dma2()
3351 isp_dmasetup(ispsoftc_t *isp, struct ccb_scsiio *csio, void *qe) in isp_dmasetup() argument
3357 mp.isp = isp; in isp_dmasetup()
3361 error = bus_dmamap_load_ccb(isp->isp_osinfo.dmat, PISP_PCMD(csio)->dmap, in isp_dmasetup()
3366 error = ISP_SEND_CMD(isp, qe, NULL, 0); in isp_dmasetup()
3391 isp_dmafree(ispsoftc_t *isp, struct ccb_scsiio *csio) in isp_dmafree() argument
3403 bus_dmamap_sync(isp->isp_osinfo.dmat, PISP_PCMD(csio)->dmap, op); in isp_dmafree()
3404 bus_dmamap_unload(isp->isp_osinfo.dmat, PISP_PCMD(csio)->dmap); in isp_dmafree()
3413 isp_fcp_reset_crn(ispsoftc_t *isp, int chan, uint32_t tgt, int tgt_set) in isp_fcp_reset_crn() argument
3415 struct isp_fc *fc = ISP_FC_PC(isp, chan); in isp_fcp_reset_crn()
3420 isp_prt(isp, ISP_LOGDEBUG0, in isp_fcp_reset_crn()
3423 isp_prt(isp, ISP_LOGDEBUG0, in isp_fcp_reset_crn()
3435 isp_fcp_next_crn(ispsoftc_t *isp, uint8_t *crnp, XS_T *cmd) in isp_fcp_next_crn() argument
3446 fc = ISP_FC_PC(isp, chan); in isp_fcp_next_crn()
3482 ispsoftc_t *isp = arg; in isp_timer() local
3484 isp_tmcmd_restart(isp); in isp_timer()
3486 callout_reset(&isp->isp_osinfo.tmo, isp_timer_count, isp_timer, isp); in isp_timer()
3491 isp_get_ecmd(ispsoftc_t *isp) in isp_get_ecmd() argument
3493 isp_ecmd_t *ecmd = isp->isp_osinfo.ecmd_free; in isp_get_ecmd()
3495 isp->isp_osinfo.ecmd_free = ecmd->next; in isp_get_ecmd()
3501 isp_put_ecmd(ispsoftc_t *isp, isp_ecmd_t *ecmd) in isp_put_ecmd() argument
3503 ecmd->next = isp->isp_osinfo.ecmd_free; in isp_put_ecmd()
3504 isp->isp_osinfo.ecmd_free = ecmd; in isp_put_ecmd()