Lines Matching refs:isp

47 MODULE_VERSION(isp, 1);
48 MODULE_DEPEND(isp, cam, 1, 1, 1);
56 static void isp_loop_changed(ispsoftc_t *isp, int chan);
78 ispsoftc_t *isp = (ispsoftc_t *)arg1; in isp_role_sysctl() local
82 value = FCPARAM(isp, chan)->role; in isp_role_sysctl()
91 ISP_LOCK(isp); in isp_role_sysctl()
92 old = FCPARAM(isp, chan)->role; in isp_role_sysctl()
99 ISP_UNLOCK(isp); in isp_role_sysctl()
104 error = isp_control(isp, ISPCTL_CHANGE_ROLE, chan, value); in isp_role_sysctl()
105 ISP_UNLOCK(isp); in isp_role_sysctl()
110 isp_attach_chan(ispsoftc_t *isp, struct cam_devq *devq, int chan) in isp_attach_chan() argument
112 fcparam *fcp = FCPARAM(isp, chan); in isp_attach_chan()
113 struct isp_fc *fc = ISP_FC_PC(isp, chan); in isp_attach_chan()
114 struct sysctl_ctx_list *ctx = device_get_sysctl_ctx(isp->isp_osinfo.dev); in isp_attach_chan()
115 struct sysctl_oid *tree = device_get_sysctl_tree(isp->isp_osinfo.dev); in isp_attach_chan()
123 sim = cam_sim_alloc(isp_action, isp_poll, "isp", isp, in isp_attach_chan()
124 device_get_unit(isp->isp_dev), &isp->isp_lock, in isp_attach_chan()
125 isp->isp_maxcmds, isp->isp_maxcmds, devq); in isp_attach_chan()
129 if (xpt_bus_register(sim, isp->isp_dev, chan) != CAM_SUCCESS) { in isp_attach_chan()
139 ISP_LOCK(isp); in isp_attach_chan()
142 fc->isp = isp; in isp_attach_chan()
147 callout_init_mtx(&fc->gdt, &isp->isp_lock, 0); in isp_attach_chan()
160 isp_loop_changed(isp, chan); in isp_attach_chan()
161 ISP_UNLOCK(isp); in isp_attach_chan()
163 "%s_%d", device_get_nameunit(isp->isp_osinfo.dev), chan)) { in isp_attach_chan()
195 isp, chan, isp_role_sysctl, "I", "Current role"); in isp_attach_chan()
221 isp_detach_chan(ispsoftc_t *isp, int chan) in isp_detach_chan() argument
223 struct isp_fc *fc = ISP_FC_PC(isp, chan); in isp_detach_chan()
232 mtx_sleep(&fc->num_threads, &isp->isp_lock, PRIBIO, "isp_reap", 0); in isp_detach_chan()
236 isp_attach(ispsoftc_t *isp) in isp_attach() argument
238 const char *nu = device_get_nameunit(isp->isp_osinfo.dev); in isp_attach()
239 int du = device_get_unit(isp->isp_dev); in isp_attach()
245 isp->isp_osinfo.devq = cam_simq_alloc(isp->isp_maxcmds); in isp_attach()
246 if (isp->isp_osinfo.devq == NULL) { in isp_attach()
250 for (chan = 0; chan < isp->isp_nchan; chan++) { in isp_attach()
251 if (isp_attach_chan(isp, isp->isp_osinfo.devq, chan)) { in isp_attach()
256 callout_init_mtx(&isp->isp_osinfo.tmo, &isp->isp_lock, 0); in isp_attach()
258 callout_reset(&isp->isp_osinfo.tmo, isp_timer_count, isp_timer, isp); in isp_attach()
260 isp->isp_osinfo.cdev = make_dev(&isp_cdevsw, du, UID_ROOT, GID_OPERATOR, 0600, "%s", nu); in isp_attach()
261 if (isp->isp_osinfo.cdev) { in isp_attach()
262 isp->isp_osinfo.cdev->si_drv1 = isp; in isp_attach()
267 ISP_LOCK(isp); in isp_attach()
268 isp->isp_osinfo.is_exiting = 1; in isp_attach()
270 isp_detach_chan(isp, chan); in isp_attach()
271 ISP_UNLOCK(isp); in isp_attach()
272 cam_simq_free(isp->isp_osinfo.devq); in isp_attach()
273 isp->isp_osinfo.devq = NULL; in isp_attach()
278 isp_detach(ispsoftc_t *isp) in isp_detach() argument
282 if (isp->isp_osinfo.cdev) { in isp_detach()
283 destroy_dev(isp->isp_osinfo.cdev); in isp_detach()
284 isp->isp_osinfo.cdev = NULL; in isp_detach()
286 ISP_LOCK(isp); in isp_detach()
288 isp->isp_osinfo.is_exiting = 1; in isp_detach()
289 for (chan = isp->isp_nchan - 1; chan >= 0; chan -= 1) in isp_detach()
290 isp_detach_chan(isp, chan); in isp_detach()
291 ISP_UNLOCK(isp); in isp_detach()
292 callout_drain(&isp->isp_osinfo.tmo); in isp_detach()
293 cam_simq_free(isp->isp_osinfo.devq); in isp_detach()
298 isp_freeze_loopdown(ispsoftc_t *isp, int chan) in isp_freeze_loopdown() argument
300 struct isp_fc *fc = ISP_FC_PC(isp, chan); in isp_freeze_loopdown()
305 isp_prt(isp, ISP_LOGDEBUG0, in isp_freeze_loopdown()
311 isp_prt(isp, ISP_LOGDEBUG0, in isp_freeze_loopdown()
318 isp_unfreeze_loopdown(ispsoftc_t *isp, int chan) in isp_unfreeze_loopdown() argument
320 struct isp_fc *fc = ISP_FC_PC(isp, chan); in isp_unfreeze_loopdown()
327 isp_prt(isp, ISP_LOGDEBUG0, in isp_unfreeze_loopdown()
339 isp_rq_check_above(ispsoftc_t *isp) in isp_rq_check_above() argument
341 struct isp_fc *fc = ISP_FC_PC(isp, 0); in isp_rq_check_above()
343 if (isp->isp_rqovf || fc->sim == NULL) in isp_rq_check_above()
345 if (!isp_rqentry_avail(isp, QENTRY_MAX)) { in isp_rq_check_above()
347 isp->isp_rqovf = 1; in isp_rq_check_above()
352 isp_rq_check_below(ispsoftc_t *isp) in isp_rq_check_below() argument
354 struct isp_fc *fc = ISP_FC_PC(isp, 0); in isp_rq_check_below()
356 if (!isp->isp_rqovf || fc->sim == NULL) in isp_rq_check_below()
358 if (isp_rqentry_avail(isp, QENTRY_MAX)) { in isp_rq_check_below()
360 isp->isp_rqovf = 0; in isp_rq_check_below()
367 ispsoftc_t *isp; in ispioctl() local
370 isp = dev->si_drv1; in ispioctl()
375 int olddblev = isp->isp_dblev; in ispioctl()
376 isp->isp_dblev = *(int *)addr; in ispioctl()
383 if (chan < 0 || chan >= isp->isp_nchan) { in ispioctl()
387 *(int *)addr = FCPARAM(isp, chan)->role; in ispioctl()
393 if (chan < 0 || chan >= isp->isp_nchan) { in ispioctl()
402 ISP_LOCK(isp); in ispioctl()
403 *(int *)addr = FCPARAM(isp, chan)->role; in ispioctl()
404 retval = isp_control(isp, ISPCTL_CHANGE_ROLE, chan, nr); in ispioctl()
405 ISP_UNLOCK(isp); in ispioctl()
409 ISP_LOCK(isp); in ispioctl()
410 isp_reinit(isp, 0); in ispioctl()
411 ISP_UNLOCK(isp); in ispioctl()
417 if (chan < 0 || chan >= isp->isp_nchan) { in ispioctl()
421 ISP_LOCK(isp); in ispioctl()
422 if (isp_fc_runstate(isp, chan, 5 * 1000000) != LOOP_READY) { in ispioctl()
427 ISP_UNLOCK(isp); in ispioctl()
432 if (chan < 0 || chan >= isp->isp_nchan) { in ispioctl()
436 ISP_LOCK(isp); in ispioctl()
437 if (isp_control(isp, ISPCTL_SEND_LIP, chan)) { in ispioctl()
442 ISP_UNLOCK(isp); in ispioctl()
453 lp = &FCPARAM(isp, ifc->chan)->portdb[ifc->loopid]; in ispioctl()
471 if (chan < 0 || chan >= isp->isp_nchan) { in ispioctl()
475 hba->fc_fw_major = ISP_FW_MAJORX(isp->isp_fwrev); in ispioctl()
476 hba->fc_fw_minor = ISP_FW_MINORX(isp->isp_fwrev); in ispioctl()
477 hba->fc_fw_micro = ISP_FW_MICROX(isp->isp_fwrev); in ispioctl()
478 hba->fc_nchannels = isp->isp_nchan; in ispioctl()
480 hba->fc_speed = FCPARAM(isp, hba->fc_channel)->isp_gbspeed; in ispioctl()
481 hba->fc_topology = FCPARAM(isp, chan)->isp_topo + 1; in ispioctl()
482 hba->fc_loopid = FCPARAM(isp, chan)->isp_loopid; in ispioctl()
483 hba->nvram_node_wwn = FCPARAM(isp, chan)->isp_wwnn_nvram; in ispioctl()
484 hba->nvram_port_wwn = FCPARAM(isp, chan)->isp_wwpn_nvram; in ispioctl()
485 hba->active_node_wwn = FCPARAM(isp, chan)->isp_wwnn; in ispioctl()
486 hba->active_port_wwn = FCPARAM(isp, chan)->isp_wwpn; in ispioctl()
502 if (chan < 0 || chan >= isp->isp_nchan) { in ispioctl()
509 ISP_LOCK(isp); in ispioctl()
510 fcp = FCPARAM(isp, chan); in ispioctl()
520 ISP_UNLOCK(isp); in ispioctl()
531 tmf.tmf_vpidx = ISP_GET_VPIDX(isp, chan); in ispioctl()
561 ISP_UNLOCK(isp); in ispioctl()
565 retval = isp_exec_entry_queue(isp, &tmf, &sp, 5); in ispioctl()
567 isp_prt(isp, ISP_LOGERR, "%s: TMF of chan %d error %d", in ispioctl()
569 ISP_UNLOCK(isp); in ispioctl()
577 ISP_UNLOCK(isp); in ispioctl()
594 isp_get_pcmd(ispsoftc_t *isp, union ccb *ccb) in isp_get_pcmd() argument
596 ISP_PCMD(ccb) = isp->isp_osinfo.pcmd_free; in isp_get_pcmd()
600 isp->isp_osinfo.pcmd_free = ((struct isp_pcmd *)ISP_PCMD(ccb))->next; in isp_get_pcmd()
605 isp_free_pcmd(ispsoftc_t *isp, union ccb *ccb) in isp_free_pcmd() argument
611 PISP_PCMD(ccb)->next = isp->isp_osinfo.pcmd_free; in isp_free_pcmd()
612 isp->isp_osinfo.pcmd_free = ISP_PCMD(ccb); in isp_free_pcmd()
633 static void isp_complete_ctio(ispsoftc_t *isp, union ccb *);
643 get_lun_statep(ispsoftc_t *isp, int bus, lun_id_t lun) in get_lun_statep() argument
645 struct isp_fc *fc = ISP_FC_PC(isp, bus); in get_lun_statep()
656 isp_atio_restart(ispsoftc_t *isp, int bus, tstate_t *tptr) in isp_atio_restart() argument
667 isp_prt(isp, ISP_LOGTDEBUG0, in isp_atio_restart()
670 isp_handle_platform_atio7(isp, (at7_entry_t *) ntp->data); in isp_atio_restart()
671 isp_put_ntpd(isp, bus, ntp); in isp_atio_restart()
683 isp_tmcmd_restart(ispsoftc_t *isp) in isp_tmcmd_restart() argument
690 for (bus = 0; bus < isp->isp_nchan; bus++) { in isp_tmcmd_restart()
691 fc = ISP_FC_PC(isp, bus); in isp_tmcmd_restart()
694 isp_atio_restart(isp, bus, tptr); in isp_tmcmd_restart()
703 isp_target_start_ctio(isp, ccb, FROM_TIMER); in isp_tmcmd_restart()
706 isp_rq_check_above(isp); in isp_tmcmd_restart()
707 isp_rq_check_below(isp); in isp_tmcmd_restart()
711 isp_get_atpd(ispsoftc_t *isp, int chan, uint32_t tag) in isp_get_atpd() argument
713 struct isp_fc *fc = ISP_FC_PC(isp, chan); in isp_get_atpd()
726 isp_find_atpd(ispsoftc_t *isp, int chan, uint32_t tag) in isp_find_atpd() argument
728 struct isp_fc *fc = ISP_FC_PC(isp, chan); in isp_find_atpd()
739 isp_put_atpd(ispsoftc_t *isp, int chan, atio_private_data_t *atp) in isp_put_atpd() argument
741 struct isp_fc *fc = ISP_FC_PC(isp, chan); in isp_put_atpd()
744 isp_put_ecmd(isp, atp->ests); in isp_put_atpd()
751 isp_dump_atpd(ispsoftc_t *isp, int chan) in isp_dump_atpd() argument
753 struct isp_fc *fc = ISP_FC_PC(isp, chan); in isp_dump_atpd()
760 …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()
766 isp_get_ntpd(ispsoftc_t *isp, int chan) in isp_get_ntpd() argument
768 struct isp_fc *fc = ISP_FC_PC(isp, chan); in isp_get_ntpd()
778 isp_find_ntpd(ispsoftc_t *isp, int chan, uint32_t tag_id, uint32_t seq_id) in isp_find_ntpd() argument
780 struct isp_fc *fc = ISP_FC_PC(isp, chan); in isp_find_ntpd()
791 isp_put_ntpd(ispsoftc_t *isp, int chan, inot_private_data_t *ntp) in isp_put_ntpd() argument
793 struct isp_fc *fc = ISP_FC_PC(isp, chan); in isp_put_ntpd()
800 create_lun_state(ispsoftc_t *isp, int bus, struct cam_path *path) in create_lun_state() argument
802 struct isp_fc *fc = ISP_FC_PC(isp, bus); in create_lun_state()
815 ISP_PATH_PRT(isp, ISP_LOGTDEBUG0, path, "created tstate\n"); in create_lun_state()
820 destroy_lun_state(ispsoftc_t *isp, int bus, tstate_t *tptr) in destroy_lun_state() argument
822 struct isp_fc *fc = ISP_FC_PC(isp, bus); in destroy_lun_state()
837 isp_endcmd(isp, ntp->data, NIL_HANDLE, bus, SCSI_STATUS_BUSY, 0); in destroy_lun_state()
839 isp_put_ntpd(isp, bus, ntp); in destroy_lun_state()
846 isp_enable_lun(ispsoftc_t *isp, union ccb *ccb) in isp_enable_lun() argument
857 ISP_PATH_PRT(isp, ISP_LOGTDEBUG0|ISP_LOGCONFIG, ccb->ccb_h.path, in isp_enable_lun()
866 tptr = get_lun_statep(isp, bus, lun); in isp_enable_lun()
872 tptr = create_lun_state(isp, bus, ccb->ccb_h.path); in isp_enable_lun()
884 isp_disable_lun(ispsoftc_t *isp, union ccb *ccb) in isp_disable_lun() argument
891 ISP_PATH_PRT(isp, ISP_LOGTDEBUG0|ISP_LOGCONFIG, ccb->ccb_h.path, in isp_disable_lun()
900 if ((tptr = get_lun_statep(isp, bus, lun)) == NULL) { in isp_disable_lun()
906 destroy_lun_state(isp, bus, tptr); in isp_disable_lun()
912 isp_target_start_ctio(ispsoftc_t *isp, union ccb *ccb, enum Start_Ctio_How how) in isp_target_start_ctio() argument
922 …isp_prt(isp, ISP_LOGTDEBUG0, "%s: ENTRY[0x%x] how %u xfrlen %u sendstatus %d sense_len %u", __func… in isp_target_start_ctio()
925 waitq = &ISP_FC_PC(isp, XS_CHANNEL(ccb))->waitq; in isp_target_start_ctio()
947 …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()
954 atp = isp_find_atpd(isp, XS_CHANNEL(ccb), cso->tag_id); in isp_target_start_ctio()
956 …isp_prt(isp, ISP_LOGERR, "%s: [0x%x] cannot find private data adjunct in %s", __func__, cso->tag_i… in isp_target_start_ctio()
957 isp_dump_atpd(isp, XS_CHANNEL(ccb)); in isp_target_start_ctio()
967 …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()
976 fcp = FCPARAM(isp, XS_CHANNEL(ccb)); in isp_target_start_ctio()
978 …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()
989 …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()
1008 isp_prt(isp, ISP_LOGTDEBUG0, "[0x%x] now sending synthesized status orig_dl=%u xfered=%u bit=%u", in isp_target_start_ctio()
1043 isp_prt(isp, ISP_LOGERR, in isp_target_start_ctio()
1070 cto->ct_vpidx = ISP_GET_VPIDX(isp, XS_CHANNEL(ccb)); in isp_target_start_ctio()
1108 atp->ests = isp_get_ecmd(isp); in isp_target_start_ctio()
1132 isp_put_fcp_rsp_iu(isp, &rp, atp->ests); in isp_target_start_ctio()
1135 isp_put_fcp_rsp_iu(isp, &rp, atp->ests); in isp_target_start_ctio()
1137 if (isp->isp_dblev & ISP_LOGTDEBUG1) { in isp_target_start_ctio()
1138 …isp_print_bytes(isp, "FCP Response Frame After Swizzling", MIN_FCP_RESPONSE_SIZE + sense_length, a… in isp_target_start_ctio()
1140 bus_dmamap_sync(isp->isp_osinfo.ecmd_dmat, isp->isp_osinfo.ecmd_map, BUS_DMASYNC_PREWRITE); in isp_target_start_ctio()
1141 addr = isp->isp_osinfo.ecmd_dma; in isp_target_start_ctio()
1142 addr += ((((isp_ecmd_t *)atp->ests) - isp->isp_osinfo.ecmd_base) * XCMD_SIZE); in isp_target_start_ctio()
1143 …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()
1144 … (uintmax_t) isp->isp_osinfo.ecmd_dma, (uintmax_t)addr, MIN_FCP_RESPONSE_SIZE + sense_length); in isp_target_start_ctio()
1151 …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()
1155 …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()
1176 …if (ISP_FC_PC(isp, XS_CHANNEL(ccb))->inject_lost_data_frame && xfrlen > ISP_FC_PC(isp, XS_CHANNEL(… in isp_target_start_ctio()
1177 …isp_prt(isp, ISP_LOGWARN, "%s: truncating data frame with xfrlen %d to %d", __func__, xfrlen, xfrl… in isp_target_start_ctio()
1178 ISP_FC_PC(isp, XS_CHANNEL(ccb))->inject_lost_data_frame = 0; in isp_target_start_ctio()
1198 …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()
1202 if (isp_get_pcmd(isp, ccb)) { in isp_target_start_ctio()
1203 ISP_PATH_PRT(isp, ISP_LOGWARN, ccb->ccb_h.path, "out of PCMDs\n"); in isp_target_start_ctio()
1207 handle = isp_allocate_handle(isp, ccb, ISP_HANDLE_TARGET); in isp_target_start_ctio()
1209 ISP_PATH_PRT(isp, ISP_LOGWARN, ccb->ccb_h.path, "No XFLIST pointers for %s\n", __func__); in isp_target_start_ctio()
1211 isp_free_pcmd(isp, ccb); in isp_target_start_ctio()
1226 dmaresult = ISP_DMASETUP(isp, cso, cto); in isp_target_start_ctio()
1228 isp_destroy_handle(isp, handle); in isp_target_start_ctio()
1229 isp_free_pcmd(isp, ccb); in isp_target_start_ctio()
1253 ispsoftc_t *isp = tp->isp; in isp_refire_notify_ack() local
1255 ISP_ASSERT_LOCKED(isp); in isp_refire_notify_ack()
1256 if (isp_notify_ack(isp, tp->not)) { in isp_refire_notify_ack()
1265 isp_complete_ctio(ispsoftc_t *isp, union ccb *ccb) in isp_complete_ctio() argument
1268 isp_rq_check_below(isp); in isp_complete_ctio()
1274 isp_handle_platform_atio7(ispsoftc_t *isp, at7_entry_t *aep) in isp_handle_platform_atio7() argument
1291 if (ISP_CAP_MULTI_ID(isp) && isp->isp_nchan > 1) { in isp_handle_platform_atio7()
1293 isp_find_chan_by_did(isp, did, &chan); in isp_handle_platform_atio7()
1295 isp_prt(isp, ISP_LOGWARN, in isp_handle_platform_atio7()
1298 isp_endcmd(isp, aep, NIL_HANDLE, ISP_NOCHAN, in isp_handle_platform_atio7()
1309 if (isp_find_pdb_by_portid(isp, chan, sid, &lp) == 0) { in isp_handle_platform_atio7()
1313 …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()
1315 isp_dump_portdb(isp, chan); in isp_handle_platform_atio7()
1316 isp_endcmd(isp, aep, NIL_HANDLE, chan, ECMD_TERMINATE, 0); in isp_handle_platform_atio7()
1324 tptr = get_lun_statep(isp, chan, lun); in isp_handle_platform_atio7()
1326 tptr = get_lun_statep(isp, chan, CAM_LUN_WILDCARD); in isp_handle_platform_atio7()
1328 isp_prt(isp, ISP_LOGWARN, in isp_handle_platform_atio7()
1332 isp_endcmd(isp, aep, nphdl, chan, SCSI_STATUS_BUSY, 0); in isp_handle_platform_atio7()
1334 …isp_endcmd(isp, aep, nphdl, chan, SCSI_STATUS_CHECK_COND | ECMD_SVALID | (0x5 << 12) | (0x25 << 16… in isp_handle_platform_atio7()
1343 if (isp_atio_restart(isp, chan, tptr)) in isp_handle_platform_atio7()
1350 isp_endcmd(isp, aep, nphdl, chan, SCSI_BUSY, 0); in isp_handle_platform_atio7()
1359 isp_prt(isp, ISP_LOGTDEBUG0, "[0x%x] out of atios", aep->at_rxid); in isp_handle_platform_atio7()
1363 oatp = isp_find_atpd(isp, chan, aep->at_rxid); in isp_handle_platform_atio7()
1365 isp_prt(isp, oatp->state == ATPD_STATE_LAST_CTIO ? ISP_LOGTDEBUG0 : in isp_handle_platform_atio7()
1374 atp = isp_get_atpd(isp, chan, aep->at_rxid); in isp_handle_platform_atio7()
1376 isp_prt(isp, ISP_LOGTDEBUG0, "[0x%x] out of atps", aep->at_rxid); in isp_handle_platform_atio7()
1377 isp_endcmd(isp, aep, nphdl, chan, SCSI_BUSY, 0); in isp_handle_platform_atio7()
1383 ISP_PATH_PRT(isp, ISP_LOGTDEBUG2, atiop->ccb_h.path, "Take FREE ATIO\n"); in isp_handle_platform_atio7()
1384 atiop->init_id = FC_PORTDB_TGT(isp, chan, lp); in isp_handle_platform_atio7()
1385 atiop->ccb_h.target_id = ISP_MAX_TARGETS(isp); in isp_handle_platform_atio7()
1390 isp_prt(isp, ISP_LOGWARN, "additional CDBLEN ignored"); in isp_handle_platform_atio7()
1432 isp_prt(isp, ISP_LOGTDEBUG0, "ATIO7[0x%x] CDB=0x%x lun %jx datalen %u", in isp_handle_platform_atio7()
1438 ntp = isp_get_ntpd(isp, chan); in isp_handle_platform_atio7()
1440 isp_endcmd(isp, aep, nphdl, chan, SCSI_STATUS_BUSY, 0); in isp_handle_platform_atio7()
1455 isp_handle_srr_start(ispsoftc_t *isp, atio_private_data_t *atp) in isp_handle_srr_start() argument
1467 isp_prt(isp, ISP_LOGWARN, "SRR[0x%x] null ccb", atp->tag); in isp_handle_srr_start()
1483 …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()
1487 …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()
1490 …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()
1493 isp_prt(isp, ISP_LOGTINFO, "SRR[0x%x] Got an FCP RSP SRR- resending status", atp->tag); in isp_handle_srr_start()
1503 isp_prt(isp, ISP_LOGWARN, "Got an FCP DATA IN SRR- dropping"); in isp_handle_srr_start()
1507 isp_prt(isp, ISP_LOGWARN, "Got an unknown information (%x) SRR- dropping", inot->in_srr_iu); in isp_handle_srr_start()
1516 if (isp_notify_ack(isp, inot)) { in isp_handle_srr_start()
1517 isp_prt(isp, ISP_LOGWARN, "could not push positive ack for SRR- you lose"); in isp_handle_srr_start()
1520 isp_target_start_ctio(isp, ccb, FROM_SRR); in isp_handle_srr_start()
1524 isp_async(isp, ISPASYNC_TARGET_NOTIFY_ACK, inot); in isp_handle_srr_start()
1527 isp_complete_ctio(isp, ccb); in isp_handle_srr_start()
1530 if (isp_notify_ack(isp, inot)) { in isp_handle_srr_start()
1531 isp_prt(isp, ISP_LOGWARN, "could not push positive ack for SRR- you lose"); in isp_handle_srr_start()
1548 isp_complete_ctio(isp, ccb); in isp_handle_srr_start()
1553 isp_handle_platform_srr(ispsoftc_t *isp, isp_notify_t *notify) in isp_handle_platform_srr() argument
1559 atp = isp_find_atpd(isp, notify->nt_channel, tag); in isp_handle_platform_srr()
1561 isp_prt(isp, ISP_LOGERR, "%s: cannot find adjunct for %x in SRR Notify", in isp_handle_platform_srr()
1563 isp_async(isp, ISPASYNC_TARGET_NOTIFY_ACK, inot); in isp_handle_platform_srr()
1568 isp_prt(isp, ISP_LOGTINFO, "SRR[0x%x] flags 0x%x srr_iu %x reloff 0x%x", in isp_handle_platform_srr()
1572 isp_handle_srr_start(isp, atp); in isp_handle_platform_srr()
1576 isp_handle_platform_ctio(ispsoftc_t *isp, ct7_entry_t *ct) in isp_handle_platform_ctio() argument
1585 ccb = isp_find_xs(isp, handle); in isp_handle_platform_ctio()
1587 isp_print_bytes(isp, "null ccb in isp_handle_platform_ctio", QENTRY_LEN, ct); in isp_handle_platform_ctio()
1590 isp_destroy_handle(isp, handle); in isp_handle_platform_ctio()
1592 isp_free_pcmd(isp, ccb); in isp_handle_platform_ctio()
1595 atp = isp_find_atpd(isp, bus, ct->ct_rxid); in isp_handle_platform_ctio()
1602 atp = isp_find_atpd(isp, bus, ccb->csio.tag_id); in isp_handle_platform_ctio()
1605 isp_prt(isp, ISP_LOGERR, "%s: cannot find adjunct for %x after I/O", __func__, ccb->csio.tag_id); in isp_handle_platform_ctio()
1616 isp_handle_srr_start(isp, atp); in isp_handle_platform_ctio()
1630 …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()
1654 isp_prt(isp, ISP_LOGTDEBUG0, "%s CTIO[0x%x] done (ok=%d nc=%d nowsendstatus=%d ccb ss=%d)", in isp_handle_platform_ctio()
1658 isp_target_start_ctio(isp, ccb, FROM_CTIO_DONE); in isp_handle_platform_ctio()
1668 isp_put_atpd(isp, bus, atp); in isp_handle_platform_ctio()
1675 isp_complete_ctio(isp, ccb); in isp_handle_platform_ctio()
1679 isp_handle_platform_target_notify_ack(ispsoftc_t *isp, isp_notify_t *mp, uint32_t rsp) in isp_handle_platform_target_notify_ack() argument
1683 if (isp->isp_state != ISP_RUNSTATE) { in isp_handle_platform_target_notify_ack()
1684 …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()
1698 if (isp_find_pdb_by_portid(isp, mp->nt_channel, sid, &lp)) { in isp_handle_platform_target_notify_ack()
1723 return (isp_send_entry(isp, cto)); in isp_handle_platform_target_notify_ack()
1738 …isp_prt(isp, ISP_LOGTDEBUG0, "%s: [%x] terminating after ABTS received", __func__, abts->abts_rxid… in isp_handle_platform_target_notify_ack()
1748 if (isp_send_entry(isp, cto)) { in isp_handle_platform_target_notify_ack()
1753 return (isp_acknak_abts(isp, mp->nt_lreserved, 0)); in isp_handle_platform_target_notify_ack()
1760 …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()
1764 return (isp_notify_ack(isp, mp->nt_lreserved)); in isp_handle_platform_target_notify_ack()
1777 isp_handle_platform_target_tmf(ispsoftc_t *isp, isp_notify_t *notify) in isp_handle_platform_target_tmf() argument
1786 …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()
1792 atp = isp_find_atpd(isp, notify->nt_channel, in isp_handle_platform_target_tmf()
1799 tptr = get_lun_statep(isp, notify->nt_channel, lun); in isp_handle_platform_target_tmf()
1801 tptr = get_lun_statep(isp, notify->nt_channel, CAM_LUN_WILDCARD); in isp_handle_platform_target_tmf()
1803 …isp_prt(isp, ISP_LOGWARN, "%s: no state pointer found for chan %d lun %#jx", __func__, notify->nt_… in isp_handle_platform_target_tmf()
1809 …isp_prt(isp, ISP_LOGWARN, "%s: out of immediate notify structures for chan %d lun %#jx", __func__,… in isp_handle_platform_target_tmf()
1813 inot->ccb_h.target_id = ISP_MAX_TARGETS(isp); in isp_handle_platform_target_tmf()
1815 if (isp_find_pdb_by_portid(isp, notify->nt_channel, notify->nt_sid, &lp) == 0 && in isp_handle_platform_target_tmf()
1816 isp_find_pdb_by_handle(isp, notify->nt_channel, notify->nt_nphdl, &lp) == 0) { in isp_handle_platform_target_tmf()
1819 inot->initiator_id = FC_PORTDB_TGT(isp, notify->nt_channel, lp); in isp_handle_platform_target_tmf()
1826 isp_target_mark_aborted_early(isp, notify->nt_channel, tptr, inot->tag_id); in isp_handle_platform_target_tmf()
1830 isp_target_mark_aborted_early(isp, notify->nt_channel, tptr, TAG_ANY); in isp_handle_platform_target_tmf()
1852 …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()
1856 ntp = isp_get_ntpd(isp, notify->nt_channel); in isp_handle_platform_target_tmf()
1858 isp_prt(isp, ISP_LOGWARN, "%s: out of inotify private structures", __func__); in isp_handle_platform_target_tmf()
1870 ISP_PATH_PRT(isp, ISP_LOGTDEBUG2, inot->ccb_h.path, "Take FREE INOT\n"); in isp_handle_platform_target_tmf()
1877 if (isp_acknak_abts(isp, notify->nt_lreserved, ENOMEM)) { in isp_handle_platform_target_tmf()
1878 isp_prt(isp, ISP_LOGWARN, "you lose- unable to send an ACKNAK"); in isp_handle_platform_target_tmf()
1881 isp_async(isp, ISPASYNC_TARGET_NOTIFY_ACK, notify->nt_lreserved); in isp_handle_platform_target_tmf()
1887 isp_target_mark_aborted_early(ispsoftc_t *isp, int chan, tstate_t *tptr, uint32_t tag_id) in isp_target_mark_aborted_early() argument
1889 struct isp_fc *fc = ISP_FC_PC(isp, chan); in isp_target_mark_aborted_early()
1900 isp_endcmd(isp, ntp->data, NIL_HANDLE, chan, in isp_target_mark_aborted_early()
1902 isp_put_ntpd(isp, chan, ntp); in isp_target_mark_aborted_early()
1923 ispsoftc_t *isp = cam_sim_softc(sim); in isp_poll() local
1925 ISP_RUN_ISR(isp); in isp_poll()
1933 ispsoftc_t *isp; in isp_watchdog() local
1936 isp = XS_ISP(xs); in isp_watchdog()
1938 handle = isp_find_handle(isp, xs); in isp_watchdog()
1944 ISP_RUN_ISR(isp); in isp_watchdog()
1946 handle = isp_find_handle(isp, xs); in isp_watchdog()
1957 if (isp_control(isp, ISPCTL_ABORT_CMD, xs) == 0) { in isp_watchdog()
1965 xs = isp_find_xs(isp, handle); in isp_watchdog()
1978 ISP_DMAFREE(isp, xs); in isp_watchdog()
1979 isp_destroy_handle(isp, handle); in isp_watchdog()
1980 isp_prt(isp, ISP_LOGERR, "%s: timeout for handle 0x%x", __func__, handle); in isp_watchdog()
1985 …isp_prt(isp, ISP_LOGWARN, "%s: timeout for handle 0x%x, recovered during interrupt", __func__, oha… in isp_watchdog()
1987 isp_prt(isp, ISP_LOGWARN, "%s: timeout for handle already free", __func__); in isp_watchdog()
1993 isp_make_here(ispsoftc_t *isp, fcportdb_t *fcp, int chan, int tgt) in isp_make_here() argument
1996 struct isp_fc *fc = ISP_FC_PC(isp, chan); in isp_make_here()
2003 isp_prt(isp, ISP_LOGWARN, "Chan %d unable to alloc CCB for rescan", chan); in isp_make_here()
2008 isp_prt(isp, ISP_LOGWARN, "unable to create path for rescan"); in isp_make_here()
2016 isp_make_gone(ispsoftc_t *isp, fcportdb_t *fcp, int chan, int tgt) in isp_make_gone() argument
2019 struct isp_fc *fc = ISP_FC_PC(isp, chan); in isp_make_gone()
2048 ispsoftc_t *isp = fc->isp; in isp_gdt_task() local
2049 int chan = fc - ISP_FC_PC(isp, 0); in isp_gdt_task()
2055 ISP_LOCK(isp); in isp_gdt_task()
2056 isp_prt(isp, ISP_LOGDEBUG0, "Chan %d GDT timer expired", chan); in isp_gdt_task()
2058 lp = &FCPARAM(isp, chan)->portdb[dbidx]; in isp_gdt_task()
2068 isp_prt(isp, ISP_LOGCONFIG, prom3, chan, dbidx, lp->portid, "Gone Device Timeout"); in isp_gdt_task()
2071 isp_make_gone(isp, lp, chan, dbidx); in isp_gdt_task()
2090 …isp_prt(isp, ISP_LOG_SANCFG, "Chan %d Stopping Gone Device Timer @ %lu", chan, (unsigned long) tim… in isp_gdt_task()
2093 ISP_UNLOCK(isp); in isp_gdt_task()
2106 isp_loop_changed(ispsoftc_t *isp, int chan) in isp_loop_changed() argument
2108 fcparam *fcp = FCPARAM(isp, chan); in isp_loop_changed()
2109 struct isp_fc *fc = ISP_FC_PC(isp, chan); in isp_loop_changed()
2113 isp_prt(isp, ISP_LOG_SANCFG|ISP_LOGDEBUG0, "Chan %d Loop changed", chan); in isp_loop_changed()
2115 isp_freeze_loopdown(isp, chan); in isp_loop_changed()
2121 isp_loop_up(ispsoftc_t *isp, int chan) in isp_loop_up() argument
2123 struct isp_fc *fc = ISP_FC_PC(isp, chan); in isp_loop_up()
2125 isp_prt(isp, ISP_LOG_SANCFG|ISP_LOGDEBUG0, "Chan %d Loop is up", chan); in isp_loop_up()
2128 isp_unfreeze_loopdown(isp, chan); in isp_loop_up()
2132 isp_loop_dead(ispsoftc_t *isp, int chan) in isp_loop_dead() argument
2134 fcparam *fcp = FCPARAM(isp, chan); in isp_loop_dead()
2135 struct isp_fc *fc = ISP_FC_PC(isp, chan); in isp_loop_dead()
2141 isp_prt(isp, ISP_LOG_SANCFG|ISP_LOGDEBUG0, "Chan %d Loop is dead", chan); in isp_loop_dead()
2152 for (i = 0; i < ISP_HANDLE_NUM(isp); i++) { in isp_loop_dead()
2155 if (ISP_H2HT(isp->isp_xflist[i].handle) != ISP_HANDLE_INITIATOR) { in isp_loop_dead()
2158 if ((xs = isp->isp_xflist[i].cmd) == NULL) { in isp_loop_dead()
2164 isp_prt(isp, ISP_LOGWARN, "command handle 0x%x for %d.%d.%jx orphaned by loop down timeout", in isp_loop_dead()
2165 isp->isp_xflist[i].handle, chan, XS_TGT(xs), in isp_loop_dead()
2173 if (isp_control(isp, ISPCTL_ABORT_CMD, xs) == 0) { in isp_loop_dead()
2177 ISP_DMAFREE(isp, xs); in isp_loop_dead()
2178 isp_destroy_handle(isp, isp->isp_xflist[i].handle); in isp_loop_dead()
2179 …isp_prt(isp, ISP_LOGWARN, "command handle 0x%x for %d.%d.%jx could not be aborted and was destroye… in isp_loop_dead()
2180 isp->isp_xflist[i].handle, chan, XS_TGT(xs), in isp_loop_dead()
2186 isp_prt(isp, ISP_LOGCONFIG, prom3, chan, dbidx, lp->portid, "Loop Down Timeout"); in isp_loop_dead()
2189 isp_make_gone(isp, lp, chan, dbidx); in isp_loop_dead()
2203 isp_unfreeze_loopdown(isp, chan); in isp_loop_dead()
2211 ispsoftc_t *isp = fc->isp; in isp_kthread() local
2212 int chan = fc - ISP_FC_PC(isp, 0); in isp_kthread()
2216 ISP_LOCK(isp); in isp_kthread()
2217 while (isp->isp_osinfo.is_exiting == 0) { in isp_kthread()
2218 isp_prt(isp, ISP_LOG_SANCFG|ISP_LOGDEBUG0, in isp_kthread()
2220 lb = isp_fc_runstate(isp, chan, 250000); in isp_kthread()
2221 isp_prt(isp, ISP_LOG_SANCFG|ISP_LOGDEBUG0, in isp_kthread()
2263 isp_loop_up(isp, chan); in isp_kthread()
2265 isp_loop_dead(isp, chan); in isp_kthread()
2268 isp_prt(isp, ISP_LOG_SANCFG|ISP_LOGDEBUG0, in isp_kthread()
2270 msleep(fc, &isp->isp_lock, PRIBIO, "ispf", slp * hz); in isp_kthread()
2274 ISP_UNLOCK(isp); in isp_kthread()
2280 isp_abort_atio(ispsoftc_t *isp, union ccb *ccb) in isp_abort_atio() argument
2287 tptr = get_lun_statep(isp, XS_CHANNEL(accb), XS_LUN(accb)); in isp_abort_atio()
2294 ISP_PATH_PRT(isp, ISP_LOGTDEBUG2, sccb->path, in isp_abort_atio()
2304 atp = isp_find_atpd(isp, XS_CHANNEL(accb), accb->atio.tag_id); in isp_abort_atio()
2321 isp_send_entry(isp, cto); in isp_abort_atio()
2323 isp_put_atpd(isp, XS_CHANNEL(accb), atp); in isp_abort_atio()
2331 isp_abort_inot(ispsoftc_t *isp, union ccb *ccb) in isp_abort_inot() argument
2338 tptr = get_lun_statep(isp, XS_CHANNEL(accb), XS_LUN(accb)); in isp_abort_inot()
2345 ISP_PATH_PRT(isp, ISP_LOGTDEBUG2, sccb->path, in isp_abort_inot()
2355 ntp = isp_find_ntpd(isp, XS_CHANNEL(accb), accb->cin1.tag_id, accb->cin1.seq_id); in isp_abort_inot()
2358 isp_async(isp, ISPASYNC_TARGET_NOTIFY_ACK, in isp_abort_inot()
2361 isp_put_ntpd(isp, XS_CHANNEL(accb), ntp); in isp_abort_inot()
2374 ispsoftc_t *isp; in isp_action() local
2381 isp = (ispsoftc_t *)cam_sim_softc(sim); in isp_action()
2382 ISP_ASSERT_LOCKED(isp); in isp_action()
2384 isp_prt(isp, ISP_LOGDEBUG2, "isp_action code %x", ccb->ccb_h.func_code); in isp_action()
2400 if (ccb->ccb_h.target_id >= ISP_MAX_TARGETS(isp)) { in isp_action()
2410 if (isp_get_pcmd(isp, ccb)) { in isp_action()
2411 isp_prt(isp, ISP_LOGWARN, "out of PCMDs"); in isp_action()
2419 isp_rq_check_above(isp); in isp_action()
2431 isp_prt(isp, ISP_LOGDEBUG0, "%d.%jx retry later", in isp_action()
2436 isp_free_pcmd(isp, ccb); in isp_action()
2440 isp_free_pcmd(isp, ccb); in isp_action()
2450 isp_prt(isp, ISP_LOGERR, "What's this? 0x%x at %d in file %s", error, __LINE__, __FILE__); in isp_action()
2452 isp_free_pcmd(isp, ccb); in isp_action()
2460 isp_enable_lun(isp, ccb); in isp_action()
2462 isp_disable_lun(isp, ccb); in isp_action()
2468 tstate_t *tptr = get_lun_statep(isp, XS_CHANNEL(ccb), ccb->ccb_h.target_lun); in isp_action()
2476 ISP_PATH_PRT(isp, ISP_LOGWARN, ccb->ccb_h.path, in isp_action()
2487 ISP_PATH_PRT(isp, ISP_LOGTDEBUG2, ccb->ccb_h.path, in isp_action()
2492 ISP_PATH_PRT(isp, ISP_LOGTDEBUG2, ccb->ccb_h.path, in isp_action()
2509 …ISP_PATH_PRT(isp, ISP_LOGTDEBUG0, ccb->ccb_h.path, "%s: [0x%x] NOTIFY ACKNOWLEDGE for 0x%x seen\n"… in isp_action()
2510 ntp = isp_find_ntpd(isp, XS_CHANNEL(ccb), ccb->cna2.tag_id, ccb->cna2.seq_id); in isp_action()
2512 …ISP_PATH_PRT(isp, ISP_LOGWARN, ccb->ccb_h.path, "%s: [0x%x] XPT_NOTIFY_ACKNOWLEDGE of 0x%x cannot … in isp_action()
2518 if (isp_handle_platform_target_notify_ack(isp, &ntp->nt, in isp_action()
2526 isp_put_ntpd(isp, XS_CHANNEL(ccb), ntp); in isp_action()
2528 …ISP_PATH_PRT(isp, ISP_LOGTDEBUG0, ccb->ccb_h.path, "%s: [0x%x] calling xpt_done for tag 0x%x\n", _… in isp_action()
2533 isp_target_start_ctio(isp, ccb, FROM_CAM); in isp_action()
2534 isp_rq_check_above(isp); in isp_action()
2541 error = isp_control(isp, ISPCTL_RESET_DEV, bus, tgt); in isp_action()
2550 isp_fcp_reset_crn(isp, bus, tgt, /*tgt_set*/ 1); in isp_action()
2562 isp_abort_atio(isp, ccb); in isp_action()
2565 isp_abort_inot(isp, ccb); in isp_action()
2569 error = isp_control(isp, ISPCTL_ABORT_CMD, accb); in isp_action()
2606 fcp = FCPARAM(isp, bus); in isp_action()
2634 error = isp_control(isp, ISPCTL_RESET_BUS, bus); in isp_action()
2643 xpt_async(AC_BUS_RESET, ISP_FC_PC(isp, bus)->path, 0); in isp_action()
2656 fcparam *fcp = FCPARAM(isp, bus); in isp_action()
2659 fcp->isp_wwnn = ISP_FC_PC(isp, bus)->def_wwnn = kp->xport_specific.fc.wwnn; in isp_action()
2660 fcp->isp_wwpn = ISP_FC_PC(isp, bus)->def_wwpn = kp->xport_specific.fc.wwpn; in isp_action()
2661 …isp_prt(isp, ISP_LOGALL, "Setting Channel %d wwns to 0x%jx 0x%jx", bus, fcp->isp_wwnn, fcp->isp_ww… in isp_action()
2695 …ISP_PATH_PRT(isp, ISP_LOGCONFIG, ccb->ccb_h.path, "changing role on from %d to %d\n", fcp->role, n… in isp_action()
2696 if (isp_control(isp, ISPCTL_CHANGE_ROLE, in isp_action()
2711 fcparam *fcp = FCPARAM(isp, bus); in isp_action()
2745 cpi->max_target = ISP_MAX_TARGETS(isp) - 1; in isp_action()
2750 fcp = FCPARAM(isp, bus); in isp_action()
2764 if (IS_25XX(isp)) in isp_action()
2795 ispsoftc_t *isp = XS_ISP(sccb); in isp_done() local
2821 isp_free_pcmd(isp, (union ccb *) sccb); in isp_done()
2823 isp_rq_check_below(isp); in isp_done()
2828 isp_async(ispsoftc_t *isp, ispasync_t cmd, ...) in isp_async() argument
2850 lipp = ISP_READ(isp, OUTMAILBOX1); in isp_async()
2851 fcp = FCPARAM(isp, bus); in isp_async()
2853 isp_prt(isp, ISP_LOGINFO, "Chan %d LOOP Reset, LIP primitive %x", bus, lipp); in isp_async()
2866 isp_fcp_reset_crn(isp, bus, /*tgt*/0, /*tgt_set*/ 0); in isp_async()
2867 isp_loop_changed(isp, bus); in isp_async()
2884 isp_loop_changed(isp, bus); in isp_async()
2885 isp_prt(isp, ISP_LOGINFO, "Chan %d %s", bus, msg); in isp_async()
2892 fc = ISP_FC_PC(isp, bus); in isp_async()
2893 tgt = FC_PORTDB_TGT(isp, bus, lp); in isp_async()
2895 isp_prt(isp, ISP_LOGCONFIG, prom, bus, tgt, lp->port_wwn, lp->portid, lp->handle, buf, "arrived"); in isp_async()
2896 if ((FCPARAM(isp, bus)->role & ISP_ROLE_INITIATOR) && in isp_async()
2899 isp_fcp_reset_crn(isp, bus, tgt, /*tgt_set*/ 1); in isp_async()
2900 isp_make_here(isp, lp, bus, tgt); in isp_async()
2902 if ((FCPARAM(isp, bus)->role & ISP_ROLE_TARGET) && in isp_async()
2924 fc = ISP_FC_PC(isp, bus); in isp_async()
2925 tgt = FC_PORTDB_TGT(isp, bus, lp); in isp_async()
2928 …isp_prt(isp, ISP_LOGCONFIG, prom, bus, tgt, lp->port_wwn, lp->new_portid, lp->handle, buf, "change… in isp_async()
2930 …isp_prt(isp, ISP_LOGCONFIG, prom, bus, tgt, lp->port_wwn, lp->portid, lp->handle, buf, "stayed"); … in isp_async()
2933 ((FCPARAM(isp, bus)->role & ISP_ROLE_INITIATOR) && in isp_async()
2938 isp_fcp_reset_crn(isp, bus, tgt, /*tgt_set*/ 1); in isp_async()
2941 isp_make_here(isp, lp, bus, tgt); in isp_async()
2943 isp_make_gone(isp, lp, bus, tgt); in isp_async()
2945 isp_fcp_reset_crn(isp, bus, tgt, /*tgt_set*/ 1); in isp_async()
2951 ((FCPARAM(isp, bus)->role & ISP_ROLE_TARGET) && in isp_async()
2965 isp_fcp_reset_crn(isp, bus, tgt, /*tgt_set*/ 1); in isp_async()
2974 fc = ISP_FC_PC(isp, bus); in isp_async()
2975 tgt = FC_PORTDB_TGT(isp, bus, lp); in isp_async()
2984 …isp_prt(isp, ISP_LOGCONFIG, prom, bus, tgt, lp->port_wwn, lp->portid, lp->handle, buf, "gone zombi… in isp_async()
2986 …isp_prt(isp, ISP_LOG_SANCFG|ISP_LOGDEBUG0, "Chan %d Starting Gone Device Timer with %u seconds tim… in isp_async()
2991 isp_prt(isp, ISP_LOGCONFIG, prom, bus, tgt, lp->port_wwn, lp->portid, lp->handle, buf, "gone"); in isp_async()
3016 isp_prt(isp, ISP_LOGINFO, in isp_async()
3043 if (!isp_find_pdb_by_handle(isp, bus, nphdl, &lp)) in isp_async()
3045 tgt = FC_PORTDB_TGT(isp, bus, lp); in isp_async()
3048 isp_fcp_reset_crn(isp, bus, tgt, tgt_set); in isp_async()
3055 isp_prt(isp, ISP_LOGINFO, "Chan %d %s (PortID 0x%06x)", in isp_async()
3059 isp_prt(isp, ISP_LOGINFO, "Chan %d %s", bus, msg); in isp_async()
3061 isp_loop_changed(isp, bus); in isp_async()
3083 isp_handle_platform_target_tmf(isp, notify); in isp_async()
3094 isp_handle_platform_srr(isp, notify); in isp_async()
3097 isp_prt(isp, ISP_LOGALL, "target notify code 0x%x", notify->nt_ncode); in isp_async()
3098 isp_handle_platform_target_notify_ack(isp, notify, 0); in isp_async()
3109 if (isp_notify_ack(isp, inot)) { in isp_async()
3112 tp->isp = isp; in isp_async()
3115 callout_init_mtx(&tp->timer, &isp->isp_lock, 0); in isp_async()
3119 isp_prt(isp, ISP_LOGERR, "you lose- cannot allocate a notify refire"); in isp_async()
3133 isp_handle_platform_atio7(isp, (at7_entry_t *)hp); in isp_async()
3136 isp_handle_platform_ctio(isp, (ct7_entry_t *)hp); in isp_async()
3139 isp_prt(isp, ISP_LOGWARN, "%s: unhandled target action 0x%x", in isp_async()
3149 mbox1 = ISP_READ(isp, OUTMAILBOX1); in isp_async()
3150 isp_prt(isp, ISP_LOGERR, "Internal Firmware Error @ RISC Address 0x%x", mbox1); in isp_async()
3152 isp_reinit(isp, 1); in isp_async()
3153 isp_async(isp, ISPASYNC_FW_RESTARTED, NULL); in isp_async()
3158 isp_prt(isp, ISP_LOGERR, "unknown isp_async event %d", cmd); in isp_async()
3164 isp_default_wwn(ispsoftc_t * isp, int chan, int isactive, int iswwnn) in isp_default_wwn() argument
3167 struct isp_fc *fc = ISP_FC_PC(isp, chan); in isp_default_wwn()
3176 seed = iswwnn ? FCPARAM(isp, chan)->isp_wwnn_nvram : in isp_default_wwn()
3177 FCPARAM(isp, chan)->isp_wwpn_nvram; in isp_default_wwn()
3184 seed = iswwnn ? ISP_FC_PC(isp, 0)->def_wwnn : in isp_default_wwn()
3185 ISP_FC_PC(isp, 0)->def_wwpn; in isp_default_wwn()
3187 seed = iswwnn ? FCPARAM(isp, 0)->isp_wwnn_nvram : in isp_default_wwn()
3188 FCPARAM(isp, 0)->isp_wwpn_nvram; in isp_default_wwn()
3194 seed = 0x400000007F000000ull + device_get_unit(isp->isp_dev); in isp_default_wwn()
3214 isp_prt(ispsoftc_t *isp, int level, const char *fmt, ...) in isp_prt() argument
3220 if (level != ISP_LOGALL && (level & isp->isp_dblev) == 0) { in isp_prt()
3223 snprintf(lbuf, sizeof (lbuf), "%s: ", device_get_nameunit(isp->isp_dev)); in isp_prt()
3232 isp_xs_prt(ispsoftc_t *isp, XS_T *xs, int level, const char *fmt, ...) in isp_xs_prt() argument
3235 if (level != ISP_LOGALL && (level & isp->isp_dblev) == 0) { in isp_xs_prt()
3259 isp_fc_scratch_acquire(ispsoftc_t *isp, int chan) in isp_fc_scratch_acquire() argument
3261 struct isp_fc *fc = ISP_FC_PC(isp, chan); in isp_fc_scratch_acquire()
3272 ispsoftc_t *isp = arg; in isp_platform_intr() local
3274 ISP_LOCK(isp); in isp_platform_intr()
3275 ISP_RUN_ISR(isp); in isp_platform_intr()
3276 ISP_UNLOCK(isp); in isp_platform_intr()
3282 ispsoftc_t *isp = arg; in isp_platform_intr_resp() local
3284 ISP_LOCK(isp); in isp_platform_intr_resp()
3285 isp_intr_respq(isp); in isp_platform_intr_resp()
3286 ISP_UNLOCK(isp); in isp_platform_intr_resp()
3289 ISP_WRITE(isp, BIU2400_HCCR, HCCR_2400_CMD_CLEAR_RISC_INT); in isp_platform_intr_resp()
3295 ispsoftc_t *isp = arg; in isp_platform_intr_atio() local
3297 ISP_LOCK(isp); in isp_platform_intr_atio()
3299 isp_intr_atioq(isp); in isp_platform_intr_atio()
3301 ISP_UNLOCK(isp); in isp_platform_intr_atio()
3304 ISP_WRITE(isp, BIU2400_HCCR, HCCR_2400_CMD_CLEAR_RISC_INT); in isp_platform_intr_atio()
3308 ispsoftc_t *isp; member
3318 ispsoftc_t *isp= mp->isp; in isp_dma2() local
3331 bus_dmamap_sync(isp->isp_osinfo.dmat, PISP_PCMD(csio)->dmap, op); in isp_dma2()
3333 mp->error = ISP_SEND_CMD(isp, mp->qe, dm_segs, nseg); in isp_dma2()
3335 isp_dmafree(isp, csio); in isp_dma2()
3339 isp_dmasetup(ispsoftc_t *isp, struct ccb_scsiio *csio, void *qe) in isp_dmasetup() argument
3345 mp.isp = isp; in isp_dmasetup()
3349 error = bus_dmamap_load_ccb(isp->isp_osinfo.dmat, PISP_PCMD(csio)->dmap, in isp_dmasetup()
3354 error = ISP_SEND_CMD(isp, qe, NULL, 0); in isp_dmasetup()
3379 isp_dmafree(ispsoftc_t *isp, struct ccb_scsiio *csio) in isp_dmafree() argument
3391 bus_dmamap_sync(isp->isp_osinfo.dmat, PISP_PCMD(csio)->dmap, op); in isp_dmafree()
3392 bus_dmamap_unload(isp->isp_osinfo.dmat, PISP_PCMD(csio)->dmap); in isp_dmafree()
3401 isp_fcp_reset_crn(ispsoftc_t *isp, int chan, uint32_t tgt, int tgt_set) in isp_fcp_reset_crn() argument
3403 struct isp_fc *fc = ISP_FC_PC(isp, chan); in isp_fcp_reset_crn()
3408 isp_prt(isp, ISP_LOGDEBUG0, in isp_fcp_reset_crn()
3411 isp_prt(isp, ISP_LOGDEBUG0, in isp_fcp_reset_crn()
3423 isp_fcp_next_crn(ispsoftc_t *isp, uint8_t *crnp, XS_T *cmd) in isp_fcp_next_crn() argument
3434 fc = ISP_FC_PC(isp, chan); in isp_fcp_next_crn()
3470 ispsoftc_t *isp = arg; in isp_timer() local
3472 isp_tmcmd_restart(isp); in isp_timer()
3474 callout_reset(&isp->isp_osinfo.tmo, isp_timer_count, isp_timer, isp); in isp_timer()
3479 isp_get_ecmd(ispsoftc_t *isp) in isp_get_ecmd() argument
3481 isp_ecmd_t *ecmd = isp->isp_osinfo.ecmd_free; in isp_get_ecmd()
3483 isp->isp_osinfo.ecmd_free = ecmd->next; in isp_get_ecmd()
3489 isp_put_ecmd(ispsoftc_t *isp, isp_ecmd_t *ecmd) in isp_put_ecmd() argument
3491 ecmd->next = isp->isp_osinfo.ecmd_free; in isp_put_ecmd()
3492 isp->isp_osinfo.ecmd_free = ecmd; in isp_put_ecmd()