Lines Matching refs:isp
127 isp_change_fw_state(ispsoftc_t *isp, int chan, int state) in isp_change_fw_state() argument
129 fcparam *fcp = FCPARAM(isp, chan); in isp_change_fw_state()
133 isp_prt(isp, ISP_LOGCONFIG|ISP_LOG_SANCFG, in isp_change_fw_state()
148 isp_reset(ispsoftc_t *isp, int do_load_defaults) in isp_reset() argument
158 isp->isp_state = ISP_NILSTATE; in isp_reset()
159 ISP_DISABLE_INTS(isp); in isp_reset()
165 ISP_WRITE(isp, BIU2400_HCCR, HCCR_2400_CMD_CLEAR_HOST_INT); in isp_reset()
166 ISP_WRITE(isp, BIU2400_HCCR, HCCR_2400_CMD_CLEAR_RISC_INT); in isp_reset()
167 ISP_WRITE(isp, BIU2400_HCCR, HCCR_2400_CMD_PAUSE); in isp_reset()
169 switch (isp->isp_type) { in isp_reset()
189 ISP_WRITE(isp, BIU2400_CSR, BIU2400_DMA_STOP|(3 << 4)); in isp_reset()
192 val = ISP_READ(isp, BIU2400_CSR); in isp_reset()
198 isp_prt(isp, ISP_LOGERR, "DMA Failed to Stop on Reset"); in isp_reset()
203 ISP_WRITE(isp, BIU2400_CSR, BIU2400_SOFT_RESET|BIU2400_DMA_STOP|(3 << 4)); in isp_reset()
207 val = ISP_READ(isp, OUTMAILBOX0); in isp_reset()
215 isp_prt(isp, ISP_LOGERR, "The ROM code is busy after 50ms."); in isp_reset()
218 isp_prt(isp, ISP_LOGERR, "Board configuration error."); in isp_reset()
221 isp_prt(isp, ISP_LOGERR, "Unknown RISC Status Code 0x%x.", val); in isp_reset()
228 ISP_WRITE(isp, BIU2400_HCCR, HCCR_2400_CMD_RESET); in isp_reset()
229 ISP_WRITE(isp, BIU2400_HCCR, HCCR_2400_CMD_RELEASE); in isp_reset()
230 ISP_WRITE(isp, BIU2400_HCCR, HCCR_2400_CMD_CLEAR_RESET); in isp_reset()
237 val = ISP_READ(isp, OUTMAILBOX0); in isp_reset()
245 isp_prt(isp, ISP_LOGERR, "The ROM code is busy after 50ms."); in isp_reset()
248 isp_prt(isp, ISP_LOGERR, "Board configuration error."); in isp_reset()
251 isp_prt(isp, ISP_LOGERR, "Unknown RISC Status Code 0x%x.", val); in isp_reset()
255 isp->isp_reqidx = isp->isp_reqodx = 0; in isp_reset()
256 isp->isp_resodx = 0; in isp_reset()
257 isp->isp_atioodx = 0; in isp_reset()
258 ISP_WRITE(isp, BIU2400_REQINP, 0); in isp_reset()
259 ISP_WRITE(isp, BIU2400_REQOUTP, 0); in isp_reset()
260 ISP_WRITE(isp, BIU2400_RSPINP, 0); in isp_reset()
261 ISP_WRITE(isp, BIU2400_RSPOUTP, 0); in isp_reset()
262 if (!IS_26XX(isp)) { in isp_reset()
263 ISP_WRITE(isp, BIU2400_PRI_REQINP, 0); in isp_reset()
264 ISP_WRITE(isp, BIU2400_PRI_REQOUTP, 0); in isp_reset()
266 ISP_WRITE(isp, BIU2400_ATIO_RSPINP, 0); in isp_reset()
267 ISP_WRITE(isp, BIU2400_ATIO_RSPOUTP, 0); in isp_reset()
280 isp_mboxcmd(isp, &mbs); in isp_reset()
282 isp_prt(isp, ISP_LOGERR, "NOP command failed (%x)", mbs.param[0]); in isp_reset()
300 int nmbox = ISP_NMBOX(isp); in isp_reset()
305 isp_mboxcmd(isp, &mbs); in isp_reset()
311 …isp_prt(isp, ISP_LOGERR, "Register Test Failed at Register %d: should have 0x%04x but got 0x%04x",… in isp_reset()
326 if ((isp->isp_mdvec->dv_ispfw == NULL) || (isp->isp_confopts & ISP_CFG_NORELOAD)) { in isp_reset()
335 if (ISP_MBOXDMASETUP(isp) != 0) { in isp_reset()
336 isp_prt(isp, ISP_LOGERR, "Cannot setup DMA"); in isp_reset()
344 const uint32_t *ptr = isp->isp_mdvec->dv_ispfw; in isp_reset()
352 isp_prt(isp, ISP_LOGDEBUG0, "load 0x%x words of code at load address 0x%x", ptr[3], ptr[2]); in isp_reset()
361 nw = min(wl, ISP_QUEUE_SIZE(RQUEST_QUEUE_LEN(isp)) / 4); in isp_reset()
362 cp = isp->isp_rquest; in isp_reset()
364 ISP_IOXPUT_32(isp, ptr[wi + i], &cp[i]); in isp_reset()
365 MEMORYBARRIER(isp, SYNC_REQUEST, 0, ISP_QUEUE_SIZE(RQUEST_QUEUE_LEN(isp)), -1); in isp_reset()
368 mbs.param[2] = DMA_WD1(isp->isp_rquest_dma); in isp_reset()
369 mbs.param[3] = DMA_WD0(isp->isp_rquest_dma); in isp_reset()
372 mbs.param[6] = DMA_WD3(isp->isp_rquest_dma); in isp_reset()
373 mbs.param[7] = DMA_WD2(isp->isp_rquest_dma); in isp_reset()
375 isp_prt(isp, ISP_LOGDEBUG0, "LOAD RISC RAM %u words at load address 0x%x", nw, la); in isp_reset()
376 isp_mboxcmd(isp, &mbs); in isp_reset()
378 isp_prt(isp, ISP_LOGERR, "F/W download failed"); in isp_reset()
392 } else if (IS_26XX(isp)) { in isp_reset()
393 isp_prt(isp, ISP_LOGDEBUG1, "loading firmware from flash"); in isp_reset()
397 isp_mboxcmd(isp, &mbs); in isp_reset()
399 isp_prt(isp, ISP_LOGERR, "Flash F/W load failed"); in isp_reset()
403 isp_prt(isp, ISP_LOGDEBUG2, "skipping f/w download"); in isp_reset()
413 isp_mboxcmd(isp, &mbs); in isp_reset()
415 isp_prt(isp, ISP_LOGERR, dcrc); in isp_reset()
429 if (!IS_26XX(isp)) in isp_reset()
431 isp_mboxcmd(isp, &mbs); in isp_reset()
440 isp_mboxcmd(isp, &mbs); in isp_reset()
445 isp->isp_fwrev[0] = mbs.param[1]; in isp_reset()
446 isp->isp_fwrev[1] = mbs.param[2]; in isp_reset()
447 isp->isp_fwrev[2] = mbs.param[3]; in isp_reset()
448 isp->isp_fwattr = mbs.param[6]; in isp_reset()
449 isp->isp_fwattr |= ((uint64_t) mbs.param[15]) << 16; in isp_reset()
450 if (isp->isp_fwattr & ISP2400_FW_ATTR_EXTNDED) { in isp_reset()
451 isp->isp_fwattr |= in isp_reset()
456 isp_prt(isp, ISP_LOGCONFIG, "Board Type %s, Chip Revision 0x%x, %s F/W Revision %d.%d.%d", in isp_reset()
457 …btype, isp->isp_revision, dodnld? "loaded" : "resident", isp->isp_fwrev[0], isp->isp_fwrev[1], isp… in isp_reset()
459 fwt = isp->isp_fwattr; in isp_reset()
460 buf = FCPARAM(isp, 0)->isp_scanscratch; in isp_reset()
547 isp_prt(isp, ISP_LOGCONFIG, "%s", buf); in isp_reset()
555 isp_mboxcmd(isp, &mbs); in isp_reset()
558 isp->isp_maxcmds = MIN(mbs.param[3], ISP_HANDLE_MAX - ISP_HANDLE_RESERVE); in isp_reset()
559 isp_prt(isp, ISP_LOGCONFIG, "%d max I/O command limit set", isp->isp_maxcmds); in isp_reset()
566 if (isp->isp_nchan > 1) { in isp_reset()
567 if (!ISP_CAP_MULTI_ID(isp)) { in isp_reset()
568 isp_prt(isp, ISP_LOGWARN, "non-MULTIID f/w loaded, " in isp_reset()
569 "only can enable 1 of %d channels", isp->isp_nchan); in isp_reset()
570 isp->isp_nchan = 1; in isp_reset()
571 } else if (!ISP_CAP_VP0(isp)) { in isp_reset()
572 isp_prt(isp, ISP_LOGWARN, "We can not use MULTIID " in isp_reset()
574 isp->isp_nchan = 1; in isp_reset()
581 if (ISP_MBOXDMASETUP(isp) != 0) { in isp_reset()
582 isp_prt(isp, ISP_LOGERR, "Cannot setup DMA"); in isp_reset()
589 if (ISP_IRQSETUP(isp) != 0) { in isp_reset()
590 isp_prt(isp, ISP_LOGERR, "Cannot setup IRQ"); in isp_reset()
593 ISP_ENABLE_INTS(isp); in isp_reset()
595 for (i = 0; i < isp->isp_nchan; i++) in isp_reset()
596 isp_change_fw_state(isp, i, FW_CONFIG_WAIT); in isp_reset()
598 isp->isp_state = ISP_RESETSTATE; in isp_reset()
606 for (i = 0; i < isp->isp_nchan; i++) in isp_reset()
607 isp_setdfltfcparm(isp, i); in isp_reset()
615 isp_stop(ispsoftc_t *isp) in isp_stop() argument
619 isp->isp_state = ISP_NILSTATE; in isp_stop()
629 isp_mboxcmd(isp, &mbs); in isp_stop()
637 isp_shutdown(ispsoftc_t *isp) in isp_shutdown() argument
640 if (isp->isp_state >= ISP_RESETSTATE) in isp_shutdown()
641 isp_stop(isp); in isp_shutdown()
642 ISP_DISABLE_INTS(isp); in isp_shutdown()
643 ISP_WRITE(isp, BIU2400_ICR, 0); in isp_shutdown()
644 ISP_WRITE(isp, BIU2400_HCCR, HCCR_2400_CMD_PAUSE); in isp_shutdown()
653 isp_init(ispsoftc_t *isp) in isp_init() argument
664 for (chan = 0; chan < isp->isp_nchan; chan++) { in isp_init()
665 fcp = FCPARAM(isp, chan); in isp_init()
670 if (chan == isp->isp_nchan) { in isp_init()
671 isp_prt(isp, ISP_LOG_WARN1, "all %d channels with role 'none'", chan); in isp_init()
675 isp->isp_state = ISP_INITSTATE; in isp_init()
680 fcp = FCPARAM(isp, 0); in isp_init()
687 isp_mboxcmd(isp, &mbs); in isp_init()
696 if (isp->isp_nchan > 1 && ISP_CAP_VP0(isp)) { in isp_init()
711 icbp->icb_maxfrmlen = DEFAULT_FRAMESIZE(isp); in isp_init()
713 …isp_prt(isp, ISP_LOGERR, "bad frame length (%d) from NVRAM- using %d", DEFAULT_FRAMESIZE(isp), ICB… in isp_init()
717 if (!IS_26XX(isp)) in isp_init()
726 icbp->icb_xchgcnt = MIN(isp->isp_maxcmds / 2, ATPDPSIZE); in isp_init()
728 icbp->icb_xchgcnt = isp->isp_maxcmds; in isp_init()
732 ownloopid = (isp->isp_confopts & ISP_CFG_OWNLOOPID) != 0; in isp_init()
742 if (isp->isp_confopts & ISP_CFG_NOFCTAPE) { in isp_init()
745 if (isp->isp_confopts & ISP_CFG_FCTAPE) { in isp_init()
749 for (chan = 0; chan < isp->isp_nchan; chan++) { in isp_init()
751 FCPARAM(isp, chan)->fctape_enabled = 1; in isp_init()
753 FCPARAM(isp, chan)->fctape_enabled = 0; in isp_init()
756 switch (isp->isp_confopts & ISP_CFG_PORT_PREF) { in isp_init()
793 …isp_prt(isp, ISP_LOGWARN, "bad value %x in fwopt2 timer field", icbp->icb_fwoptions2 & ICB2400_OPT… in isp_init()
798 if (IS_26XX(isp)) { in isp_init()
807 if (isp->isp_confopts & ISP_CFG_1GB) { in isp_init()
810 } else if (isp->isp_confopts & ISP_CFG_2GB) { in isp_init()
813 } else if (isp->isp_confopts & ISP_CFG_4GB) { in isp_init()
816 } else if (isp->isp_confopts & ISP_CFG_8GB) { in isp_init()
819 } else if (isp->isp_confopts & ISP_CFG_16GB) { in isp_init()
822 } else if (isp->isp_confopts & ISP_CFG_32GB) { in isp_init()
834 if (isp->isp_type <= ISP_HA_FC_2500) in isp_init()
838 if (isp->isp_type <= ISP_HA_FC_2400) in isp_init()
856 …isp_prt(isp, ISP_LOGDEBUG1, "Setting ICB Node 0x%08x%08x Port 0x%08x%08x", ((uint32_t) (fcp->isp_w… in isp_init()
861 …isp_prt(isp, ISP_LOGDEBUG1, "Setting ICB Node to be same as Port 0x%08x%08x", ((uint32_t) (fcp->is… in isp_init()
863 isp_prt(isp, ISP_LOGERR, "No valid WWNs to use"); in isp_init()
866 icbp->icb_rspnsin = isp->isp_resodx; in isp_init()
867 icbp->icb_rqstout = isp->isp_reqidx; in isp_init()
870 icbp->icb_rqstqlen = RQUEST_QUEUE_LEN(isp); in isp_init()
872 isp_prt(isp, ISP_LOGERR, "bad request queue length %d", icbp->icb_rqstqlen); in isp_init()
875 icbp->icb_rsltqlen = RESULT_QUEUE_LEN(isp); in isp_init()
877 isp_prt(isp, ISP_LOGERR, "bad result queue length %d", in isp_init()
881 icbp->icb_rqstaddr[RQRSP_ADDR0015] = DMA_WD0(isp->isp_rquest_dma); in isp_init()
882 icbp->icb_rqstaddr[RQRSP_ADDR1631] = DMA_WD1(isp->isp_rquest_dma); in isp_init()
883 icbp->icb_rqstaddr[RQRSP_ADDR3247] = DMA_WD2(isp->isp_rquest_dma); in isp_init()
884 icbp->icb_rqstaddr[RQRSP_ADDR4863] = DMA_WD3(isp->isp_rquest_dma); in isp_init()
886 icbp->icb_respaddr[RQRSP_ADDR0015] = DMA_WD0(isp->isp_result_dma); in isp_init()
887 icbp->icb_respaddr[RQRSP_ADDR1631] = DMA_WD1(isp->isp_result_dma); in isp_init()
888 icbp->icb_respaddr[RQRSP_ADDR3247] = DMA_WD2(isp->isp_result_dma); in isp_init()
889 icbp->icb_respaddr[RQRSP_ADDR4863] = DMA_WD3(isp->isp_result_dma); in isp_init()
893 icbp->icb_atio_in = isp->isp_atioodx; in isp_init()
894 icbp->icb_atioqlen = ATIO_QUEUE_LEN(isp); in isp_init()
896 isp_prt(isp, ISP_LOGERR, "bad ATIO queue length %d", icbp->icb_atioqlen); in isp_init()
899 icbp->icb_atioqaddr[RQRSP_ADDR0015] = DMA_WD0(isp->isp_atioq_dma); in isp_init()
900 icbp->icb_atioqaddr[RQRSP_ADDR1631] = DMA_WD1(isp->isp_atioq_dma); in isp_init()
901 icbp->icb_atioqaddr[RQRSP_ADDR3247] = DMA_WD2(isp->isp_atioq_dma); in isp_init()
902 icbp->icb_atioqaddr[RQRSP_ADDR4863] = DMA_WD3(isp->isp_atioq_dma); in isp_init()
903 …isp_prt(isp, ISP_LOGDEBUG0, "isp_init: atioq %04x%04x%04x%04x", DMA_WD3(isp->isp_atioq_dma), DMA_W… in isp_init()
904 DMA_WD1(isp->isp_atioq_dma), DMA_WD0(isp->isp_atioq_dma)); in isp_init()
907 if (ISP_CAP_MSIX(isp) && isp->isp_nirq >= 2) { in isp_init()
909 if (IS_26XX(isp) && isp->isp_nirq >= 3) in isp_init()
913 …isp_prt(isp, ISP_LOGDEBUG0, "isp_init: fwopt1 0x%x fwopt2 0x%x fwopt3 0x%x", icbp->icb_fwoptions1,… in isp_init()
915 …isp_prt(isp, ISP_LOGDEBUG0, "isp_init: rqst %04x%04x%04x%04x rsp %04x%04x%04x%04x", DMA_WD3(isp->i… in isp_init()
916 …DMA_WD1(isp->isp_rquest_dma), DMA_WD0(isp->isp_rquest_dma), DMA_WD3(isp->isp_result_dma), DMA_WD2(… in isp_init()
917 DMA_WD1(isp->isp_result_dma), DMA_WD0(isp->isp_result_dma)); in isp_init()
919 if (FC_SCRATCH_ACQUIRE(isp, 0)) { in isp_init()
920 isp_prt(isp, ISP_LOGERR, sacq); in isp_init()
924 isp_put_icb_2400(isp, icbp, fcp->isp_scratch); in isp_init()
925 if (isp->isp_dblev & ISP_LOGDEBUG1) { in isp_init()
926 isp_print_bytes(isp, "isp_init", in isp_init()
933 if (isp->isp_nchan > 1) { in isp_init()
940 if (ISP_CAP_VP0(isp)) { in isp_init()
942 vpinfo.vp_count = isp->isp_nchan; in isp_init()
945 vpinfo.vp_count = isp->isp_nchan - 1; in isp_init()
951 isp_put_icb_2400_vpinfo(isp, &vpinfo, vdst); in isp_init()
953 for (; chan < isp->isp_nchan; chan++) { in isp_init()
957 fcp2 = FCPARAM(isp, chan); in isp_init()
967 if (isp->isp_confopts & ISP_CFG_OWNLOOPID) in isp_init()
975 if (ISP_CAP_VP0(isp)) in isp_init()
980 isp_put_vp_port_info(isp, &pi, pdst); in isp_init()
983 if (isp->isp_dblev & ISP_LOGDEBUG1) { in isp_init()
984 isp_print_bytes(isp, "isp_init", in isp_init()
994 if (isp->isp_nchan > 1) { in isp_init()
1004 …isp_prt(isp, ISP_LOGDEBUG0, "INIT F/W from %04x%04x%04x%04x", DMA_WD3(fcp->isp_scdma), DMA_WD2(fcp… in isp_init()
1005 MEMORYBARRIER(isp, SYNC_SFORDEV, 0, sizeof (*icbp), 0); in isp_init()
1006 isp_mboxcmd(isp, &mbs); in isp_init()
1007 FC_SCRATCH_RELEASE(isp, 0); in isp_init()
1016 isp->isp_state = ISP_RUNSTATE; in isp_init()
1020 isp_fc_enable_vp(ispsoftc_t *isp, int chan) in isp_fc_enable_vp() argument
1022 fcparam *fcp = FCPARAM(isp, chan); in isp_fc_enable_vp()
1041 if (isp->isp_confopts & ISP_CFG_OWNLOOPID) in isp_fc_enable_vp()
1047 retval = isp_exec_entry_queue(isp, &vp, &vp, 5); in isp_fc_enable_vp()
1049 isp_prt(isp, ISP_LOGERR, "%s: VP_MODIFY of chan %d error %d", in isp_fc_enable_vp()
1055 isp_prt(isp, ISP_LOGERR, in isp_fc_enable_vp()
1064 isp_fc_disable_vp(ispsoftc_t *isp, int chan) in isp_fc_disable_vp() argument
1073 if (ISP_CAP_VP0(isp)) { in isp_fc_disable_vp()
1083 retval = isp_exec_entry_queue(isp, &vp, &vp, 5); in isp_fc_disable_vp()
1085 isp_prt(isp, ISP_LOGERR, "%s: VP_CTRL of chan %d error %d", in isp_fc_disable_vp()
1091 isp_prt(isp, ISP_LOGERR, in isp_fc_disable_vp()
1101 isp_fc_change_role(ispsoftc_t *isp, int chan, int new_role) in isp_fc_change_role() argument
1103 fcparam *fcp = FCPARAM(isp, chan); in isp_fc_change_role()
1106 if (chan >= isp->isp_nchan) { in isp_fc_change_role()
1107 isp_prt(isp, ISP_LOGWARN, "%s: bad channel %d", __func__, chan); in isp_fc_change_role()
1112 for (was = 0, i = 0; i < isp->isp_nchan; i++) { in isp_fc_change_role()
1113 if (FCPARAM(isp, i)->role != ISP_ROLE_NONE) in isp_fc_change_role()
1118 return (isp_reinit(isp, 0)); in isp_fc_change_role()
1121 res = isp_fc_disable_vp(isp, chan); in isp_fc_change_role()
1122 isp_clear_portdb(isp, chan); in isp_fc_change_role()
1126 res = isp_fc_enable_vp(isp, chan); in isp_fc_change_role()
1131 isp_clear_portdb(ispsoftc_t *isp, int chan) in isp_clear_portdb() argument
1133 fcparam *fcp = FCPARAM(isp, chan); in isp_clear_portdb()
1144 isp_async(isp, ISPASYNC_DEV_GONE, chan, lp); in isp_clear_portdb()
1159 isp_mark_portdb(ispsoftc_t *isp, int chan) in isp_mark_portdb() argument
1161 fcparam *fcp = FCPARAM(isp, chan); in isp_mark_portdb()
1181 isp_plogx(ispsoftc_t *isp, int chan, uint16_t handle, uint32_t portid, int flags) in isp_plogx() argument
1189 isp_prt(isp, ISP_LOG_SANCFG, "Chan %d PLOGX %s PortID 0x%06x nphdl 0x%x", in isp_plogx()
1202 retval = isp_exec_entry_queue(isp, &pl, &pl, 3 * ICB_LOGIN_TOV); in isp_plogx()
1204 isp_prt(isp, ISP_LOGERR, "%s: PLOGX of chan %d error %d", in isp_plogx()
1212 isp_prt(isp, ISP_LOGWARN, in isp_plogx()
1285 isp_prt(isp, lev, "Chan %d PLOGX PortID 0x%06x to N-Port handle 0x%x: %s", in isp_plogx()
1292 isp_getpdb(ispsoftc_t *isp, int chan, uint16_t id, isp_pdb_t *pdb) in isp_getpdb() argument
1303 mbs.param[2] = DMA_WD1(isp->isp_iocb_dma); in isp_getpdb()
1304 mbs.param[3] = DMA_WD0(isp->isp_iocb_dma); in isp_getpdb()
1305 mbs.param[6] = DMA_WD3(isp->isp_iocb_dma); in isp_getpdb()
1306 mbs.param[7] = DMA_WD2(isp->isp_iocb_dma); in isp_getpdb()
1308 MEMORYBARRIER(isp, SYNC_IFORDEV, 0, sizeof(un), chan); in isp_getpdb()
1310 isp_mboxcmd(isp, &mbs); in isp_getpdb()
1314 MEMORYBARRIER(isp, SYNC_IFORCPU, 0, sizeof(un), chan); in isp_getpdb()
1315 isp_get_pdb_24xx(isp, isp->isp_iocb, &un.bill); in isp_getpdb()
1322 isp_prt(isp, ISP_LOGDEBUG0, in isp_getpdb()
1335 isp_gethandles(ispsoftc_t *isp, int chan, uint16_t *handles, int *num, int loop) in isp_gethandles() argument
1337 fcparam *fcp = FCPARAM(isp, chan); in isp_gethandles()
1350 if (FC_SCRATCH_ACQUIRE(isp, chan)) { in isp_gethandles()
1351 isp_prt(isp, ISP_LOGERR, sacq); in isp_gethandles()
1354 MEMORYBARRIER(isp, SYNC_SFORDEV, 0, ISP_FC_SCRLEN, chan); in isp_gethandles()
1355 isp_mboxcmd(isp, &mbs); in isp_gethandles()
1357 FC_SCRATCH_RELEASE(isp, chan); in isp_gethandles()
1360 MEMORYBARRIER(isp, SYNC_SFORCPU, 0, ISP_FC_SCRLEN, chan); in isp_gethandles()
1363 isp_get_pnhle_24xx(isp, &elp4[i], &el4); in isp_gethandles()
1370 FC_SCRATCH_RELEASE(isp, chan); in isp_gethandles()
1375 isp_dump_chip_portdb(ispsoftc_t *isp, int chan) in isp_dump_chip_portdb() argument
1380 isp_prt(isp, ISP_LOG_SANCFG|ISP_LOGINFO, "Chan %d chip port dump", chan); in isp_dump_chip_portdb()
1382 if (isp_getpdb(isp, chan, nphdl, &pdb)) { in isp_dump_chip_portdb()
1385 isp_prt(isp, ISP_LOG_SANCFG|ISP_LOGINFO, "Chan %d Handle 0x%04x " in isp_dump_chip_portdb()
1394 isp_get_wwn(ispsoftc_t *isp, int chan, int nphdl, int nodename) in isp_get_wwn() argument
1405 isp_mboxcmd(isp, &mbs); in isp_get_wwn()
1425 isp_fclink_test(ispsoftc_t *isp, int chan, int usdelay) in isp_fclink_test() argument
1433 fcp = FCPARAM(isp, chan); in isp_fclink_test()
1440 isp_prt(isp, ISP_LOG_SANCFG, "Chan %d FC link test", chan); in isp_fclink_test()
1447 isp_change_fw_state(isp, chan, isp_fw_state(isp, chan)); in isp_fclink_test()
1456 ISP_SLEEP(isp, 1000); in isp_fclink_test()
1459 isp_prt(isp, ISP_LOG_SANCFG, in isp_fclink_test()
1470 isp_mboxcmd(isp, &mbs); in isp_fclink_test()
1500 r = isp_getpdb(isp, chan, NPH_FL_ID, &pdb); in isp_fclink_test()
1502 isp_prt(isp, ISP_LOGWARN, in isp_fclink_test()
1510 r = isp_register_fc4_type(isp, chan); in isp_fclink_test()
1515 r = isp_register_fc4_features_24xx(isp, chan); in isp_fclink_test()
1520 r = isp_register_port_name_24xx(isp, chan); in isp_fclink_test()
1525 isp_register_node_name_24xx(isp, chan); in isp_fclink_test()
1536 isp_mboxcmd(isp, &mbs); in isp_fclink_test()
1556 isp_prt(isp, ISP_LOG_SANCFG, in isp_fclink_test()
1561 isp_prt(isp, ISP_LOG_SANCFG|ISP_LOGCONFIG, in isp_fclink_test()
1564 isp_prt(isp, ISP_LOG_SANCFG|ISP_LOGCONFIG, in isp_fclink_test()
1568 isp_prt(isp, ISP_LOG_SANCFG, "Chan %d FC link test done", chan); in isp_fclink_test()
1584 isp_pdb_sync(ispsoftc_t *isp, int chan) in isp_pdb_sync() argument
1586 fcparam *fcp = FCPARAM(isp, chan); in isp_pdb_sync()
1595 isp_prt(isp, ISP_LOG_SANCFG, "Chan %d FC PDB sync", chan); in isp_pdb_sync()
1609 isp_async(isp, ISPASYNC_DEV_GONE, chan, lp); in isp_pdb_sync()
1611 (void) isp_plogx(isp, chan, lp->handle, in isp_pdb_sync()
1624 isp_async(isp, ISPASYNC_DEV_ARRIVED, chan, lp); in isp_pdb_sync()
1628 isp_async(isp, ISPASYNC_DEV_CHANGED, chan, lp); in isp_pdb_sync()
1634 isp_async(isp, ISPASYNC_DEV_STAYED, chan, lp); in isp_pdb_sync()
1639 isp_prt(isp, ISP_LOGWARN, in isp_pdb_sync()
1642 isp_dump_portdb(isp, chan); in isp_pdb_sync()
1647 isp_prt(isp, ISP_LOG_SANCFG, in isp_pdb_sync()
1653 isp_prt(isp, ISP_LOG_SANCFG, "Chan %d FC PDB sync done", chan); in isp_pdb_sync()
1658 isp_pdb_add_update(ispsoftc_t *isp, int chan, isp_pdb_t *pdb) in isp_pdb_add_update() argument
1667 if (isp_find_pdb_by_wwpn(isp, chan, wwpn, &lp)) { in isp_pdb_add_update()
1669 isp_prt(isp, ISP_LOGERR, in isp_pdb_add_update()
1672 FC_PORTDB_TGT(isp, chan, lp), lp->state); in isp_pdb_add_update()
1673 isp_dump_portdb(isp, chan); in isp_pdb_add_update()
1687 isp_prt(isp, ISP_LOG_SANCFG, in isp_pdb_add_update()
1699 isp_prt(isp, ISP_LOG_SANCFG, in isp_pdb_add_update()
1706 if (!isp_find_pdb_empty(isp, chan, &lp)) { in isp_pdb_add_update()
1707 isp_prt(isp, ISP_LOGERR, "Chan %d out of portdb entries", chan); in isp_pdb_add_update()
1720 isp_prt(isp, ISP_LOG_SANCFG, "Chan %d Port 0x%06x@0x%04x is new", in isp_pdb_add_update()
1728 isp_scan_loop(ispsoftc_t *isp, int chan) in isp_scan_loop() argument
1730 fcparam *fcp = FCPARAM(isp, chan); in isp_scan_loop()
1741 isp_prt(isp, ISP_LOG_SANCFG, "Chan %d FC loop scan", chan); in isp_scan_loop()
1744 isp_prt(isp, ISP_LOG_SANCFG, in isp_scan_loop()
1752 r = isp_gethandles(isp, chan, handles, &lim, 1); in isp_scan_loop()
1754 isp_prt(isp, ISP_LOG_SANCFG, in isp_scan_loop()
1756 isp_prt(isp, ISP_LOG_SANCFG, in isp_scan_loop()
1761 isp_prt(isp, ISP_LOG_SANCFG, "Chan %d Got %d handles", in isp_scan_loop()
1767 isp_mark_portdb(isp, chan); in isp_scan_loop()
1780 r = isp_getpdb(isp, chan, handle, &pdb); in isp_scan_loop()
1783 isp_prt(isp, ISP_LOG_SANCFG, in isp_scan_loop()
1788 isp_prt(isp, ISP_LOGDEBUG1, in isp_scan_loop()
1794 isp_pdb_add_update(isp, chan, &pdb); in isp_scan_loop()
1799 isp_prt(isp, ISP_LOG_SANCFG, "Chan %d FC loop scan done", chan); in isp_scan_loop()
1804 isp_ct_passthru(ispsoftc_t *isp, int chan, uint32_t cmd_bcnt, uint32_t rsp_bcnt) in isp_ct_passthru() argument
1806 fcparam *fcp = FCPARAM(isp, chan); in isp_ct_passthru()
1810 if (isp->isp_dblev & ISP_LOGDEBUG1) in isp_ct_passthru()
1811 isp_print_bytes(isp, "CT request", cmd_bcnt, fcp->isp_scratch); in isp_ct_passthru()
1821 pt.ctp_vpidx = ISP_GET_VPIDX(isp, chan); in isp_ct_passthru()
1833 retval = isp_exec_entry_queue(isp, &pt, &pt, 2 * pt.ctp_time); in isp_ct_passthru()
1835 isp_prt(isp, ISP_LOGERR, "%s: CTP of chan %d error %d", in isp_ct_passthru()
1841 isp_prt(isp, ISP_LOGWARN, in isp_ct_passthru()
1847 if (isp->isp_dblev & ISP_LOGDEBUG1) in isp_ct_passthru()
1848 isp_print_bytes(isp, "CT response", rsp_bcnt, fcp->isp_scratch); in isp_ct_passthru()
1865 isp_gid_pt(ispsoftc_t *isp, int chan) in isp_gid_pt() argument
1867 fcparam *fcp = FCPARAM(isp, chan); in isp_gid_pt()
1871 isp_prt(isp, ISP_LOGDEBUG0, "Chan %d requesting GID_PT", chan); in isp_gid_pt()
1872 if (FC_SCRATCH_ACQUIRE(isp, chan)) { in isp_gid_pt()
1873 isp_prt(isp, ISP_LOGERR, sacq); in isp_gid_pt()
1884 isp_put_ct_hdr(isp, &ct, (ct_hdr_t *)scp); in isp_gid_pt()
1890 if (isp_ct_passthru(isp, chan, sizeof(ct) + sizeof(uint32_t), GIDLEN)) { in isp_gid_pt()
1891 FC_SCRATCH_RELEASE(isp, chan); in isp_gid_pt()
1895 isp_get_gid_xx_response(isp, (sns_gid_xx_rsp_t *)scp, in isp_gid_pt()
1897 FC_SCRATCH_RELEASE(isp, chan); in isp_gid_pt()
1902 isp_gff_id(ispsoftc_t *isp, int chan, uint32_t portid) in isp_gff_id() argument
1904 fcparam *fcp = FCPARAM(isp, chan); in isp_gff_id()
1914 isp_prt(isp, ISP_LOGDEBUG0, "Chan %d requesting GFF_ID", chan); in isp_gff_id()
1915 if (FC_SCRATCH_ACQUIRE(isp, chan)) { in isp_gff_id()
1916 isp_prt(isp, ISP_LOGERR, sacq); in isp_gff_id()
1927 isp_put_ct_hdr(isp, &ct, (ct_hdr_t *)scp); in isp_gff_id()
1929 ISP_IOZPUT_32(isp, portid, rp); in isp_gff_id()
1931 if (isp_ct_passthru(isp, chan, sizeof(ct) + sizeof(uint32_t), in isp_gff_id()
1933 FC_SCRATCH_RELEASE(isp, chan); in isp_gff_id()
1937 isp_get_gff_id_response(isp, (sns_gff_id_rsp_t *)scp, &rsp); in isp_gff_id()
1949 if (((ISP_SWAP32(isp, rsp.snscb_fc4_features[FC4_SCSI / 8]) >> in isp_gff_id()
1953 FC_SCRATCH_RELEASE(isp, chan); in isp_gff_id()
1954 isp_prt(isp, ISP_LOGDEBUG0, "Chan %d GFF_ID result is %d", chan, res); in isp_gff_id()
1959 isp_gft_id(ispsoftc_t *isp, int chan, uint32_t portid) in isp_gft_id() argument
1961 fcparam *fcp = FCPARAM(isp, chan); in isp_gft_id()
1971 isp_prt(isp, ISP_LOGDEBUG0, "Chan %d requesting GFT_ID", chan); in isp_gft_id()
1972 if (FC_SCRATCH_ACQUIRE(isp, chan)) { in isp_gft_id()
1973 isp_prt(isp, ISP_LOGERR, sacq); in isp_gft_id()
1984 isp_put_ct_hdr(isp, &ct, (ct_hdr_t *)scp); in isp_gft_id()
1986 ISP_IOZPUT_32(isp, portid, rp); in isp_gft_id()
1988 if (isp_ct_passthru(isp, chan, sizeof(ct) + sizeof(uint32_t), in isp_gft_id()
1990 FC_SCRATCH_RELEASE(isp, chan); in isp_gft_id()
1994 isp_get_gft_id_response(isp, (sns_gft_id_rsp_t *)scp, &rsp); in isp_gft_id()
2006 FC_SCRATCH_RELEASE(isp, chan); in isp_gft_id()
2007 isp_prt(isp, ISP_LOGDEBUG0, "Chan %d GFT_ID result is %d", chan, res); in isp_gft_id()
2012 isp_scan_fabric(ispsoftc_t *isp, int chan) in isp_scan_fabric() argument
2014 fcparam *fcp = FCPARAM(isp, chan); in isp_scan_fabric()
2026 isp_prt(isp, ISP_LOG_SANCFG, "Chan %d FC fabric scan", chan); in isp_scan_fabric()
2030 isp_prt(isp, ISP_LOG_SANCFG, in isp_scan_fabric()
2037 FC_SCRATCH_RELEASE(isp, chan); in isp_scan_fabric()
2038 isp_prt(isp, ISP_LOG_SANCFG, in isp_scan_fabric()
2046 r = isp_getpdb(isp, chan, NPH_FL_ID, &pdb); in isp_scan_fabric()
2048 isp_dump_chip_portdb(isp, chan); in isp_scan_fabric()
2053 isp_prt(isp, ISP_LOG_SANCFG, in isp_scan_fabric()
2059 r = isp_gid_pt(isp, chan); in isp_scan_fabric()
2083 isp_prt(isp, level, "Chan %d Fabric Nameserver rejected GID_PT" in isp_scan_fabric()
2097 isp_prt(isp, ISP_LOGWARN, in isp_scan_fabric()
2101 isp_prt(isp, ISP_LOG_SANCFG, in isp_scan_fabric()
2127 …isp_prt(isp, ISP_LOG_SANCFG, "Chan %d removing duplicate PortID 0x%06x entry from list", chan, por… in isp_scan_fabric()
2145 isp_mark_portdb(isp, chan); in isp_scan_fabric()
2150 isp_prt(isp, ISP_LOG_SANCFG, in isp_scan_fabric()
2153 isp_prt(isp, ISP_LOG_SANCFG, in isp_scan_fabric()
2159 isp_prt(isp, ISP_LOG_SANCFG, in isp_scan_fabric()
2165 if (isp_find_pdb_by_portid(isp, chan, portid, &lp)) { in isp_scan_fabric()
2167 isp_prt(isp, ISP_LOGERR, in isp_scan_fabric()
2170 FC_PORTDB_TGT(isp, chan, lp), lp->state); in isp_scan_fabric()
2171 isp_dump_portdb(isp, chan); in isp_scan_fabric()
2193 r = isp_getpdb(isp, chan, lp->handle, &pdb); in isp_scan_fabric()
2198 isp_prt(isp, ISP_LOG_SANCFG, in isp_scan_fabric()
2204 isp_pdb_add_update(isp, chan, &pdb); in isp_scan_fabric()
2210 isp_prt(isp, ISP_LOG_SANCFG, in isp_scan_fabric()
2215 r = isp_gff_id(isp, chan, portid); in isp_scan_fabric()
2217 isp_prt(isp, ISP_LOG_SANCFG, in isp_scan_fabric()
2222 r = isp_gft_id(isp, chan, portid); in isp_scan_fabric()
2224 isp_prt(isp, ISP_LOG_SANCFG, in isp_scan_fabric()
2229 if (isp_login_device(isp, chan, portid, &pdb, in isp_scan_fabric()
2230 &FCPARAM(isp, 0)->isp_lasthdl)) { in isp_scan_fabric()
2236 isp_pdb_add_update(isp, chan, &pdb); in isp_scan_fabric()
2242 isp_prt(isp, ISP_LOG_SANCFG, "Chan %d FC fabric scan done", chan); in isp_scan_fabric()
2250 isp_login_device(ispsoftc_t *isp, int chan, uint32_t portid, isp_pdb_t *p, uint16_t *ohp) in isp_login_device() argument
2255 handle = isp_next_handle(isp, ohp); in isp_login_device()
2257 if (FCPARAM(isp, chan)->isp_loopstate != LOOP_SCANNING_FABRIC) in isp_login_device()
2261 r = isp_getpdb(isp, chan, handle, p); in isp_login_device()
2265 handle = isp_next_handle(isp, ohp); in isp_login_device()
2270 if (FCPARAM(isp, chan)->isp_loopstate != LOOP_SCANNING_FABRIC) in isp_login_device()
2276 r = isp_plogx(isp, chan, handle, portid, PLOGX_FLG_CMD_PLOGI); in isp_login_device()
2285 …if (isp_plogx(isp, chan, r >> 16, portid, PLOGX_FLG_CMD_LOGO | PLOGX_FLG_IMPLICIT | PLOGX_FLG_FREE… in isp_login_device()
2286 isp_prt(isp, ISP_LOGERR, "baw... logout of %x failed", r >> 16); in isp_login_device()
2288 if (FCPARAM(isp, chan)->isp_loopstate != LOOP_SCANNING_FABRIC) in isp_login_device()
2290 r = isp_plogx(isp, chan, handle, portid, PLOGX_FLG_CMD_PLOGI); in isp_login_device()
2296 handle = isp_next_handle(isp, ohp); in isp_login_device()
2305 isp_prt(isp, ISP_LOGWARN, "Chan %d PLOGI 0x%06x failed", chan, portid); in isp_login_device()
2314 r = isp_getpdb(isp, chan, handle, p); in isp_login_device()
2316 isp_prt(isp, ISP_LOGERR, "Chan %d new device 0x%06x@0x%x disappeared", chan, portid, handle); in isp_login_device()
2321 isp_prt(isp, ISP_LOGERR, "Chan %d new device 0x%06x@0x%x changed (0x%06x@0x%0x)", in isp_login_device()
2329 isp_register_fc4_type(ispsoftc_t *isp, int chan) in isp_register_fc4_type() argument
2331 fcparam *fcp = FCPARAM(isp, chan); in isp_register_fc4_type()
2336 if (FC_SCRATCH_ACQUIRE(isp, chan)) { in isp_register_fc4_type()
2337 isp_prt(isp, ISP_LOGERR, sacq); in isp_register_fc4_type()
2352 isp_put_rft_id(isp, &rp, (rft_id_t *)scp); in isp_register_fc4_type()
2354 if (isp_ct_passthru(isp, chan, sizeof(rft_id_t), sizeof(ct_hdr_t))) { in isp_register_fc4_type()
2355 FC_SCRATCH_RELEASE(isp, chan); in isp_register_fc4_type()
2359 isp_get_ct_hdr(isp, (ct_hdr_t *) scp, ct); in isp_register_fc4_type()
2360 FC_SCRATCH_RELEASE(isp, chan); in isp_register_fc4_type()
2362 isp_prt(isp, ISP_LOG_SANCFG|ISP_LOG_WARN1, "Chan %d Register FC4 Type rejected", chan); in isp_register_fc4_type()
2365 isp_prt(isp, ISP_LOG_SANCFG, "Chan %d Register FC4 Type accepted", chan); in isp_register_fc4_type()
2367 isp_prt(isp, ISP_LOGWARN, "Chan %d Register FC4 Type: 0x%x", chan, ct->ct_cmd_resp); in isp_register_fc4_type()
2374 isp_register_fc4_features_24xx(ispsoftc_t *isp, int chan) in isp_register_fc4_features_24xx() argument
2376 fcparam *fcp = FCPARAM(isp, chan); in isp_register_fc4_features_24xx()
2381 if (FC_SCRATCH_ACQUIRE(isp, chan)) { in isp_register_fc4_features_24xx()
2382 isp_prt(isp, ISP_LOGERR, sacq); in isp_register_fc4_features_24xx()
2405 isp_put_rff_id(isp, &rp, (rff_id_t *)scp); in isp_register_fc4_features_24xx()
2406 if (isp->isp_dblev & ISP_LOGDEBUG1) in isp_register_fc4_features_24xx()
2407 isp_print_bytes(isp, "CT request", sizeof(rft_id_t), scp); in isp_register_fc4_features_24xx()
2409 if (isp_ct_passthru(isp, chan, sizeof(rft_id_t), sizeof(ct_hdr_t))) { in isp_register_fc4_features_24xx()
2410 FC_SCRATCH_RELEASE(isp, chan); in isp_register_fc4_features_24xx()
2414 isp_get_ct_hdr(isp, (ct_hdr_t *) scp, ct); in isp_register_fc4_features_24xx()
2415 FC_SCRATCH_RELEASE(isp, chan); in isp_register_fc4_features_24xx()
2417 isp_prt(isp, ISP_LOG_SANCFG|ISP_LOG_WARN1, in isp_register_fc4_features_24xx()
2421 isp_prt(isp, ISP_LOG_SANCFG, in isp_register_fc4_features_24xx()
2424 isp_prt(isp, ISP_LOGWARN, in isp_register_fc4_features_24xx()
2432 isp_register_port_name_24xx(ispsoftc_t *isp, int chan) in isp_register_port_name_24xx() argument
2434 fcparam *fcp = FCPARAM(isp, chan); in isp_register_port_name_24xx()
2440 if (FC_SCRATCH_ACQUIRE(isp, chan)) { in isp_register_port_name_24xx()
2441 isp_prt(isp, ISP_LOGERR, sacq); in isp_register_port_name_24xx()
2464 ":%s", device_get_nameunit(isp->isp_dev)); in isp_register_port_name_24xx()
2471 isp_put_rspn_id(isp, &rp, (rspn_id_t *)scp); in isp_register_port_name_24xx()
2473 if (isp_ct_passthru(isp, chan, len, sizeof(ct_hdr_t))) { in isp_register_port_name_24xx()
2474 FC_SCRATCH_RELEASE(isp, chan); in isp_register_port_name_24xx()
2478 isp_get_ct_hdr(isp, (ct_hdr_t *) scp, ct); in isp_register_port_name_24xx()
2479 FC_SCRATCH_RELEASE(isp, chan); in isp_register_port_name_24xx()
2481 isp_prt(isp, ISP_LOG_SANCFG|ISP_LOG_WARN1, in isp_register_port_name_24xx()
2485 isp_prt(isp, ISP_LOG_SANCFG, in isp_register_port_name_24xx()
2488 isp_prt(isp, ISP_LOGWARN, in isp_register_port_name_24xx()
2496 isp_register_node_name_24xx(ispsoftc_t *isp, int chan) in isp_register_node_name_24xx() argument
2498 fcparam *fcp = FCPARAM(isp, chan); in isp_register_node_name_24xx()
2504 if (FC_SCRATCH_ACQUIRE(isp, chan)) { in isp_register_node_name_24xx()
2505 isp_prt(isp, ISP_LOGERR, sacq); in isp_register_node_name_24xx()
2527 isp_put_rsnn_nn(isp, &rp, (rsnn_nn_t *)scp); in isp_register_node_name_24xx()
2529 if (isp_ct_passthru(isp, chan, len, sizeof(ct_hdr_t))) { in isp_register_node_name_24xx()
2530 FC_SCRATCH_RELEASE(isp, chan); in isp_register_node_name_24xx()
2534 isp_get_ct_hdr(isp, (ct_hdr_t *) scp, ct); in isp_register_node_name_24xx()
2535 FC_SCRATCH_RELEASE(isp, chan); in isp_register_node_name_24xx()
2537 isp_prt(isp, ISP_LOG_SANCFG|ISP_LOG_WARN1, in isp_register_node_name_24xx()
2541 isp_prt(isp, ISP_LOG_SANCFG, in isp_register_node_name_24xx()
2544 isp_prt(isp, ISP_LOGWARN, in isp_register_node_name_24xx()
2552 isp_next_handle(ispsoftc_t *isp, uint16_t *ohp) in isp_next_handle() argument
2568 isp_prt(isp, ISP_LOGERR, "Out of port handles!"); in isp_next_handle()
2574 for (chan = 0; chan < isp->isp_nchan; chan++) { in isp_next_handle()
2575 fcp = FCPARAM(isp, chan); in isp_next_handle()
2595 ispsoftc_t *isp; in isp_start() local
2604 isp = XS_ISP(xs); in isp_start()
2614 …isp_prt(isp, ISP_LOGERR, "unsupported cdb length (%d, CDB[0]=0x%x)", XS_CDBLEN(xs), XS_CDBP(xs)[0]… in isp_start()
2624 fcp = FCPARAM(isp, XS_CHANNEL(xs)); in isp_start()
2627 isp_prt(isp, ISP_LOG_WARN1, in isp_start()
2634 if (isp->isp_state != ISP_RUNSTATE) { in isp_start()
2635 isp_prt(isp, ISP_LOGERR, "Adapter not at RUNSTATE"); in isp_start()
2640 isp_prt(isp, ISP_LOGDEBUG2, "XS_TGT(xs)=%d", target); in isp_start()
2648 isp_prt(isp, ISP_LOGDEBUG1, in isp_start()
2654 isp_prt(isp, ISP_LOGDEBUG1, in isp_start()
2660 isp_prt(isp, ISP_LOGDEBUG1, in isp_start()
2669 qep = isp_getrqentry(isp); in isp_start()
2671 isp_prt(isp, ISP_LOG_WARN1, "Request Queue Overflow"); in isp_start()
2683 if (ISP_TST_SENDMARKER(isp, XS_CHANNEL(xs))) { in isp_start()
2689 isp_put_marker_24xx(isp, m, qep); in isp_start()
2690 ISP_SYNC_REQUEST(isp); in isp_start()
2691 ISP_SET_SENDMARKER(isp, XS_CHANNEL(xs), 0); in isp_start()
2700 isp_prt(isp, ISP_LOGERR, "Command Length %u too long for this chip", cdblen); in isp_start()
2720 if (FCPARAM(isp, XS_CHANNEL(xs))->fctape_enabled && (lp->prli_word3 & PRLI_WD3_RETRY)) { in isp_start()
2721 if (FCP_NEXT_CRN(isp, &reqp->req_crn, xs)) { in isp_start()
2722 isp_prt(isp, ISP_LOG_WARN1, in isp_start()
2733 reqp->req_vpidx = ISP_GET_VPIDX(isp, XS_CHANNEL(xs)); in isp_start()
2736 reqp->req_handle = isp_allocate_handle(isp, xs, ISP_HANDLE_INITIATOR); in isp_start()
2738 isp_prt(isp, ISP_LOG_WARN1, "out of xflist pointers"); in isp_start()
2749 dmaresult = ISP_DMASETUP(isp, xs, reqp); in isp_start()
2751 isp_destroy_handle(isp, reqp->req_handle); in isp_start()
2758 …isp_xs_prt(isp, xs, ISP_LOGDEBUG0, "START cmd cdb[0]=0x%x datalen %ld", XS_CDBP(xs)[0], (long) XS_… in isp_start()
2768 isp_control(ispsoftc_t *isp, ispctl_t ctl, ...) in isp_control() argument
2784 isp_prt(isp, ISP_LOGERR, "BUS RESET NOT IMPLEMENTED"); in isp_control()
2796 fcp = FCPARAM(isp, chan); in isp_control()
2799 isp_prt(isp, ISP_LOGWARN, "Chan %d trying to reset bad target %d", chan, tgt); in isp_control()
2804 isp_prt(isp, ISP_LOGWARN, "Chan %d abort of no longer valid target %d", chan, tgt); in isp_control()
2818 tmf->tmf_vpidx = ISP_GET_VPIDX(isp, chan); in isp_control()
2820 …isp_prt(isp, ISP_LOGALL, "Chan %d Reset N-Port Handle 0x%04x @ Port 0x%06x", chan, lp->handle, lp-… in isp_control()
2823 if (isp_exec_entry_mbox(isp, tmf, sp, 2 * tmf->tmf_timeout)) in isp_control()
2828 …isp_prt(isp, ISP_LOGWARN, "Chan %d reset of target %d returned 0x%x", chan, tgt, sp->req_completio… in isp_control()
2842 handle = isp_find_handle(isp, xs); in isp_control()
2844 isp_prt(isp, ISP_LOGWARN, "cannot find handle for command to abort"); in isp_control()
2848 fcp = FCPARAM(isp, chan); in isp_control()
2850 isp_prt(isp, ISP_LOGWARN, "Chan %d trying to abort bad target %d", chan, tgt); in isp_control()
2855 isp_prt(isp, ISP_LOGWARN, "Chan %d abort of no longer valid target %d", chan, tgt); in isp_control()
2858 …isp_prt(isp, ISP_LOGALL, "Chan %d Abort Cmd for N-Port 0x%04x @ Port 0x%06x", chan, lp->handle, lp… in isp_control()
2866 ab->abrt_vpidx = ISP_GET_VPIDX(isp, chan); in isp_control()
2868 if (isp_exec_entry_mbox(isp, ab, ab, 5)) in isp_control()
2873 isp_prt(isp, ISP_LOGWARN, "Chan %d handle %d abort returned 0x%x", chan, tgt, ab->abrt_nphdl); in isp_control()
2885 return (isp_fclink_test(isp, chan, usdelay)); in isp_control()
2892 return (isp_scan_fabric(isp, chan)); in isp_control()
2899 return (isp_scan_loop(isp, chan)); in isp_control()
2906 return (isp_pdb_sync(isp, chan)); in isp_control()
2919 return (isp_getpdb(isp, chan, tgt, pdb)); in isp_control()
2934 *wwnn = isp_get_wwn(isp, chan, tgt, 1); in isp_control()
2940 *wwnp = isp_get_wwn(isp, chan, tgt, 0); in isp_control()
2952 isp_mboxcmd(isp, mbr); in isp_control()
2965 return (isp_plogx(isp, p->channel, p->handle, p->portid, p->flags)); in isp_control()
2968 isp_next_handle(isp, &p->handle); in isp_control()
2969 r = isp_plogx(isp, p->channel, p->handle, p->portid, p->flags); in isp_control()
2986 return (isp_fc_change_role(isp, chan, role)); in isp_control()
2989 isp_prt(isp, ISP_LOGERR, "Unknown Control Opcode 0x%x", ctl); in isp_control()
3005 isp_intr_atioq(ispsoftc_t *isp) in isp_intr_atioq() argument
3010 iptr = ISP_READ(isp, BIU2400_ATIO_RSPINP); in isp_intr_atioq()
3011 optr = isp->isp_atioodx; in isp_intr_atioq()
3014 MEMORYBARRIER(isp, SYNC_ATIOQ, oop, QENTRY_LEN, -1); in isp_intr_atioq()
3015 addr = ISP_QUEUE_ENTRY(isp->isp_atioq, oop); in isp_intr_atioq()
3021 (void) isp_target_notify(isp, addr, &oop, in isp_intr_atioq()
3022 ATIO_QUEUE_LEN(isp)); in isp_intr_atioq()
3026 isp_print_qentry(isp, "?ATIOQ entry?", oop, addr); in isp_intr_atioq()
3029 optr = ISP_NXT_QENTRY(oop, ATIO_QUEUE_LEN(isp)); in isp_intr_atioq()
3031 if (isp->isp_atioodx != optr) { in isp_intr_atioq()
3032 ISP_WRITE(isp, BIU2400_ATIO_RSPOUTP, optr); in isp_intr_atioq()
3033 isp->isp_atioodx = optr; in isp_intr_atioq()
3039 isp_intr_mbox(ispsoftc_t *isp, uint16_t mbox0) in isp_intr_mbox() argument
3043 if (!isp->isp_mboxbsy) { in isp_intr_mbox()
3044 isp_prt(isp, ISP_LOGWARN, "mailbox 0x%x with no waiters", mbox0); in isp_intr_mbox()
3047 obits = isp->isp_obits; in isp_intr_mbox()
3048 isp->isp_mboxtmp[0] = mbox0; in isp_intr_mbox()
3049 for (i = 1; i < ISP_NMBOX(isp); i++) { in isp_intr_mbox()
3052 isp->isp_mboxtmp[i] = ISP_READ(isp, MBOX_OFF(i)); in isp_intr_mbox()
3054 isp->isp_mboxbsy = 0; in isp_intr_mbox()
3058 isp_intr_respq(ispsoftc_t *isp) in isp_intr_respq() argument
3075 if (isp->isp_state != ISP_RUNSTATE) { in isp_intr_respq()
3076 isp_prt(isp, ISP_LOGINFO, "respq interrupt when not ready"); in isp_intr_respq()
3080 iptr = ISP_READ(isp, BIU2400_RSPINP); in isp_intr_respq()
3081 optr = isp->isp_resodx; in isp_intr_respq()
3087 hp = (isphdr_t *) ISP_QUEUE_ENTRY(isp->isp_result, cptr); in isp_intr_respq()
3088 optr = ISP_NXT_QENTRY(optr, RESULT_QUEUE_LEN(isp)); in isp_intr_respq()
3093 MEMORYBARRIER(isp, SYNC_RESULT, cptr, QENTRY_LEN, -1); in isp_intr_respq()
3094 if (isp->isp_dblev & ISP_LOGDEBUG1) in isp_intr_respq()
3095 isp_print_qentry(isp, "Response Queue Entry", cptr, hp); in isp_intr_respq()
3096 isp_get_hdr(isp, hp, &sp->req_header); in isp_intr_respq()
3103 isp_print_qentry(isp, "invalid entry type", cptr, hp); in isp_intr_respq()
3107 isp_print_qentry(isp, "invalid entry parameter", cptr, hp); in isp_intr_respq()
3111 isp_print_qentry(isp, "invalid entry count", cptr, hp); in isp_intr_respq()
3115 isp_print_qentry(isp, "invalid entry order", cptr, hp); in isp_intr_respq()
3127 if (isp_handle_control(isp, hp)) { in isp_intr_respq()
3134 isp_get_24xx_response(isp, (isp24xx_statusreq_t *)hp, sp); in isp_intr_respq()
3137 isp_prt(isp, ISP_LOG_WARN1, "Marker Response"); in isp_intr_respq()
3141 isp_get_cont_response(isp, (ispstatus_cont_t *)hp, scp); in isp_intr_respq()
3149 isp_prt(isp, ISP_LOGDEBUG0|ISP_LOG_CWARN, in isp_intr_respq()
3154 isp_prt(isp, ISP_LOG_WARN1, "Ignored Continuation Response"); in isp_intr_respq()
3163 isp_target_notify(isp, hp, &cptr, RESULT_QUEUE_LEN(isp)); in isp_intr_respq()
3167 sptr = ISP_NXT_QENTRY(sptr, RESULT_QUEUE_LEN(isp)); in isp_intr_respq()
3168 hp = (isphdr_t *)ISP_QUEUE_ENTRY(isp->isp_result, sptr); in isp_intr_respq()
3171 optr = ISP_NXT_QENTRY(cptr, RESULT_QUEUE_LEN(isp)); in isp_intr_respq()
3175 isp_handle_rpt_id_acq(isp, hp); in isp_intr_respq()
3180 isp_prt(isp, ISP_LOGERR, notresp, etype, cptr, optr); in isp_intr_respq()
3185 xs = isp_find_xs(isp, sp->req_handle); in isp_intr_respq()
3193 isp_prt(isp, ISP_LOGERR, "cannot find handle 0x%x (status 0x%x)", in isp_intr_respq()
3239 isp_xs_prt(isp, xs, ISP_LOGWARN, in isp_intr_respq()
3246 isp_parse_status_24xx(isp, sp, xs); in isp_intr_respq()
3252 isp_prt(isp, ISP_LOGDEBUG0|ISP_LOG_CWARN, in isp_intr_respq()
3258 ISP_DMAFREE(isp, xs); in isp_intr_respq()
3259 isp_destroy_handle(isp, sp->req_handle); in isp_intr_respq()
3272 if (optr != isp->isp_resodx) { in isp_intr_respq()
3273 ISP_WRITE(isp, BIU2400_RSPOUTP, optr); in isp_intr_respq()
3274 isp->isp_resodx = optr; in isp_intr_respq()
3280 isp_intr_async(ispsoftc_t *isp, uint16_t mbox) in isp_intr_async() argument
3285 isp_prt(isp, ISP_LOGDEBUG2, "Async Mbox 0x%x", mbox); in isp_intr_async()
3289 isp->isp_state = ISP_CRASHED; in isp_intr_async()
3290 for (chan = 0; chan < isp->isp_nchan; chan++) { in isp_intr_async()
3291 FCPARAM(isp, chan)->isp_loopstate = LOOP_NIL; in isp_intr_async()
3292 isp_change_fw_state(isp, chan, FW_CONFIG_WAIT); in isp_intr_async()
3298 if (isp->isp_mboxbsy) { in isp_intr_async()
3299 isp->isp_obits = 1; in isp_intr_async()
3300 isp->isp_mboxtmp[0] = MBOX_HOST_INTERFACE_ERROR; in isp_intr_async()
3301 isp->isp_mboxbsy = 0; in isp_intr_async()
3307 isp_async(isp, ISPASYNC_FW_CRASH); in isp_intr_async()
3311 isp_prt(isp, ISP_LOGERR, "Request Queue Transfer Error"); in isp_intr_async()
3315 isp_prt(isp, ISP_LOGERR, "Response Queue Transfer Error"); in isp_intr_async()
3319 isp_prt(isp, ISP_LOGERR, "ATIO Queue Transfer Error"); in isp_intr_async()
3330 for (chan = 0; chan < isp->isp_nchan; chan++) { in isp_intr_async()
3331 fcp = FCPARAM(isp, chan); in isp_intr_async()
3338 ISP_SET_SENDMARKER(isp, chan, 1); in isp_intr_async()
3339 isp_async(isp, ISPASYNC_LIP, chan); in isp_intr_async()
3341 isp_target_async(isp, chan, mbox); in isp_intr_async()
3352 for (i = j = 0; i < ISP_HANDLE_NUM(isp); i++) { in isp_intr_async()
3356 hdp = &isp->isp_xflist[i]; in isp_intr_async()
3365 isp_prt(isp, ISP_LOG_WARN1, in isp_intr_async()
3373 isp_prt(isp, ISP_LOGERR, lipd, chan, j); in isp_intr_async()
3384 for (chan = 0; chan < isp->isp_nchan; chan++) { in isp_intr_async()
3385 fcp = FCPARAM(isp, chan); in isp_intr_async()
3391 ISP_SET_SENDMARKER(isp, chan, 1); in isp_intr_async()
3392 isp_async(isp, ISPASYNC_LOOP_UP, chan); in isp_intr_async()
3394 isp_target_async(isp, chan, mbox); in isp_intr_async()
3404 for (chan = 0; chan < isp->isp_nchan; chan++) { in isp_intr_async()
3405 fcp = FCPARAM(isp, chan); in isp_intr_async()
3408 ISP_SET_SENDMARKER(isp, chan, 1); in isp_intr_async()
3411 isp_async(isp, ISPASYNC_LOOP_DOWN, chan); in isp_intr_async()
3413 isp_target_async(isp, chan, mbox); in isp_intr_async()
3423 for (chan = 0; chan < isp->isp_nchan; chan++) { in isp_intr_async()
3424 fcp = FCPARAM(isp, chan); in isp_intr_async()
3427 ISP_SET_SENDMARKER(isp, chan, 1); in isp_intr_async()
3430 isp_async(isp, ISPASYNC_LOOP_RESET, chan); in isp_intr_async()
3432 isp_target_async(isp, chan, mbox); in isp_intr_async()
3441 nphdl = ISP_READ(isp, OUTMAILBOX1); in isp_intr_async()
3442 nlstate = ISP_READ(isp, OUTMAILBOX2); in isp_intr_async()
3443 reason = ISP_READ(isp, OUTMAILBOX3) >> 8; in isp_intr_async()
3444 if (ISP_CAP_MULTI_ID(isp)) { in isp_intr_async()
3445 chan = ISP_READ(isp, OUTMAILBOX3) & 0xff; in isp_intr_async()
3448 echan = isp->isp_nchan - 1; in isp_intr_async()
3449 } else if (chan >= isp->isp_nchan) { in isp_intr_async()
3458 fcp = FCPARAM(isp, chan); in isp_intr_async()
3469 isp_async(isp, ISPASYNC_CHANGE_NOTIFY, chan, in isp_intr_async()
3478 portid = ((ISP_READ(isp, OUTMAILBOX1) & 0xff) << 16) | in isp_intr_async()
3479 ISP_READ(isp, OUTMAILBOX2); in isp_intr_async()
3480 if (ISP_CAP_MULTI_ID(isp)) { in isp_intr_async()
3481 chan = ISP_READ(isp, OUTMAILBOX3) & 0xff; in isp_intr_async()
3482 if (chan >= isp->isp_nchan) in isp_intr_async()
3487 fcp = FCPARAM(isp, chan); in isp_intr_async()
3494 isp_async(isp, ISPASYNC_CHANGE_NOTIFY, chan, in isp_intr_async()
3499 isp_prt(isp, ISP_LOGWARN, "Error logging disabled (reason 0x%x)", in isp_intr_async()
3500 ISP_READ(isp, OUTMAILBOX1)); in isp_intr_async()
3503 isp_prt(isp, ISP_LOGWARN, "P2P init error (reason 0x%x)", in isp_intr_async()
3504 ISP_READ(isp, OUTMAILBOX1)); in isp_intr_async()
3507 isp_prt(isp, ISP_LOGWARN, "Receive Error"); in isp_intr_async()
3510 isp_prt(isp, ISP_LOGTDEBUG0, "LS_RJT sent"); in isp_intr_async()
3513 isp_prt(isp, ISP_LOGDEBUG0, "FW restart complete"); in isp_intr_async()
3516 isp_prt(isp, ISP_LOGERR, "Temperature alert (subcode 0x%x)", in isp_intr_async()
3517 ISP_READ(isp, OUTMAILBOX1)); in isp_intr_async()
3520 isp_prt(isp, ISP_LOGDEBUG0, "Inter-driver communication complete"); in isp_intr_async()
3523 isp_prt(isp, ISP_LOGDEBUG0, "Inter-driver communication notification"); in isp_intr_async()
3526 isp_prt(isp, ISP_LOGDEBUG0, "Inter-driver communication time extended"); in isp_intr_async()
3529 isp_prt(isp, ISP_LOGDEBUG0, "Transceiver insertion (0x%x)", in isp_intr_async()
3530 ISP_READ(isp, OUTMAILBOX1)); in isp_intr_async()
3533 isp_prt(isp, ISP_LOGDEBUG0, "Transceiver removal"); in isp_intr_async()
3536 isp_prt(isp, ISP_LOGDEBUG0, "NIC Firmware State Change"); in isp_intr_async()
3539 isp_prt(isp, ISP_LOGDEBUG0, "Autoload FW init complete"); in isp_intr_async()
3542 isp_prt(isp, ISP_LOGERR, "Autoload FW init failure"); in isp_intr_async()
3545 isp_prt(isp, ISP_LOGWARN, "Unknown Async Code 0x%x", mbox); in isp_intr_async()
3554 isp_handle_control(ispsoftc_t *isp, isphdr_t *hp) in isp_handle_control() argument
3572 ISP_IOXGET_32(isp, (uint32_t *)(hp + 1), hdl); in isp_handle_control()
3575 ptr = isp_find_xs(isp, hdl); in isp_handle_control()
3577 isp_destroy_handle(isp, hdl); in isp_handle_control()
3587 isp_handle_rpt_id_acq(ispsoftc_t *isp, isphdr_t *hp) in isp_handle_rpt_id_acq() argument
3594 isp_get_ridacq(isp, (isp_ridacq_t *)hp, &rid); in isp_handle_rpt_id_acq()
3598 for (chan = 0; chan < isp->isp_nchan; chan++) { in isp_handle_rpt_id_acq()
3599 fcp = FCPARAM(isp, chan); in isp_handle_rpt_id_acq()
3606 isp_async(isp, ISPASYNC_CHANGE_NOTIFY, in isp_handle_rpt_id_acq()
3610 isp_async(isp, ISPASYNC_LOOP_DOWN, in isp_handle_rpt_id_acq()
3615 fcp = FCPARAM(isp, rid.ridacq_vp_index); in isp_handle_rpt_id_acq()
3621 isp_async(isp, ISPASYNC_CHANGE_NOTIFY, in isp_handle_rpt_id_acq()
3625 isp_async(isp, ISPASYNC_LOOP_DOWN, in isp_handle_rpt_id_acq()
3632 isp_parse_status_24xx(ispsoftc_t *isp, isp24xx_statusreq_t *sp, XS_T *xs) in isp_parse_status_24xx() argument
3642 isp_xs_prt(isp, xs, ISP_LOGERR, "DMA error"); in isp_parse_status_24xx()
3648 isp_xs_prt(isp, xs, ISP_LOGERR, "Transport Error"); in isp_parse_status_24xx()
3654 isp_xs_prt(isp, xs, ISP_LOGWARN, "reset destroyed command"); in isp_parse_status_24xx()
3655 FCPARAM(isp, chan)->sendmarker = 1; in isp_parse_status_24xx()
3661 isp_xs_prt(isp, xs, ISP_LOGERR, "Command Aborted"); in isp_parse_status_24xx()
3662 FCPARAM(isp, chan)->sendmarker = 1; in isp_parse_status_24xx()
3668 isp_xs_prt(isp, xs, ISP_LOGWARN, "Command Timed Out"); in isp_parse_status_24xx()
3675 isp_xs_prt(isp, xs, ISP_LOGERR, "Data Overrun"); in isp_parse_status_24xx()
3681 isp_prt(isp, ISP_LOGERR, "Chan %d data reassembly error for target %d", chan, XS_TGT(xs)); in isp_parse_status_24xx()
3687 isp_prt(isp, ISP_LOGERR, "Chan %d target %d sent ABTS", chan, XS_TGT(xs)); in isp_parse_status_24xx()
3701 …isp_xs_prt(isp, xs, ISP_LOGWARN, bun, XS_XFRLEN(xs), sp->req_resid, (ru_marked)? "marked" : "not m… in isp_parse_status_24xx()
3707 …isp_xs_prt(isp, xs, ISP_LOG_WARN1, "Data Underrun (%d) for command 0x%x", sp->req_resid, XS_CDBP(x… in isp_parse_status_24xx()
3718 fcparam *fcp = FCPARAM(isp, XS_CHANNEL(xs)); in isp_parse_status_24xx()
3730 isp_prt(isp, ISP_LOGINFO, "Chan %d port %s for target %d", in isp_parse_status_24xx()
3746 isp_prt(isp, ISP_LOGWARN, "port changed for target %d chan %d", XS_TGT(xs), chan); in isp_parse_status_24xx()
3754 isp_prt(isp, ISP_LOGWARN, "f/w resource unavailable for target %d chan %d", XS_TGT(xs), chan); in isp_parse_status_24xx()
3762 …isp_prt(isp, ISP_LOGWARN, "command for target %d overlapped task management for chan %d", XS_TGT(x… in isp_parse_status_24xx()
3770 …isp_prt(isp, ISP_LOGERR, "Unknown Completion Status 0x%x on chan %d", sp->req_completion_status, c… in isp_parse_status_24xx()
4053 isp_mboxcmd(ispsoftc_t *isp, mbreg_t *mbp) in isp_mboxcmd() argument
4062 isp_prt(isp, ISP_LOGERR, "Unknown Command 0x%x", opcode); in isp_mboxcmd()
4072 isp_prt(isp, ISP_LOGDEBUG3, "Mailbox Command '%s'", cname); in isp_mboxcmd()
4089 isp_prt(isp, ISP_LOGERR, "no parameters for 0x%x", opcode); in isp_mboxcmd()
4093 for (box = 0; box < ISP_NMBOX(isp); box++) { in isp_mboxcmd()
4095 isp_prt(isp, ISP_LOGDEBUG3, "IN mbox %d = 0x%04x", box, in isp_mboxcmd()
4097 ISP_WRITE(isp, MBOX_OFF(box), mbp->param[box]); in isp_mboxcmd()
4099 isp->isp_mboxtmp[box] = mbp->param[box] = 0; in isp_mboxcmd()
4102 isp->isp_obits = obits; in isp_mboxcmd()
4103 isp->isp_mboxbsy = 1; in isp_mboxcmd()
4108 ISP_WRITE(isp, BIU2400_HCCR, HCCR_2400_CMD_SET_HOST_INT); in isp_mboxcmd()
4115 if (!isp->isp_mboxbsy) in isp_mboxcmd()
4117 ISP_RUN_ISR(isp); in isp_mboxcmd()
4118 if (!isp->isp_mboxbsy) in isp_mboxcmd()
4126 if (isp->isp_mboxbsy) { in isp_mboxcmd()
4127 isp->isp_mboxbsy = 0; in isp_mboxcmd()
4128 isp_prt(isp, ISP_LOGWARN, "Mailbox Command (0x%x) Timeout (%uus) (%s:%d)", in isp_mboxcmd()
4137 for (box = 0; box < ISP_NMBOX(isp); box++) { in isp_mboxcmd()
4139 mbp->param[box] = isp->isp_mboxtmp[box]; in isp_mboxcmd()
4140 isp_prt(isp, ISP_LOGDEBUG3, "OUT mbox %d = 0x%04x", box, in isp_mboxcmd()
4210 isp_prt(isp, ISP_LOGALL, "Mailbox Command '%s' failed (%s%s)", in isp_mboxcmd()
4216 isp_fw_state(ispsoftc_t *isp, int chan) in isp_fw_state() argument
4221 isp_mboxcmd(isp, &mbs); in isp_fw_state()
4228 isp_setdfltfcparm(ispsoftc_t *isp, int chan) in isp_setdfltfcparm() argument
4230 fcparam *fcp = FCPARAM(isp, chan); in isp_setdfltfcparm()
4235 fcp->role = DEFAULT_ROLE(isp, chan); in isp_setdfltfcparm()
4238 fcp->isp_loopid = DEFAULT_LOOPID(isp, chan); in isp_setdfltfcparm()
4239 fcp->isp_wwnn_nvram = DEFAULT_NODEWWN(isp, chan); in isp_setdfltfcparm()
4240 fcp->isp_wwpn_nvram = DEFAULT_PORTWWN(isp, chan); in isp_setdfltfcparm()
4249 if (isp->isp_confopts & ISP_CFG_FULL_DUPLEX) in isp_setdfltfcparm()
4259 if ((isp->isp_confopts & ISP_CFG_NONVRAM) == 0) { in isp_setdfltfcparm()
4265 j = isp_read_nvram(isp, chan); in isp_setdfltfcparm()
4271 isp->isp_confopts |= ISP_CFG_NONVRAM; in isp_setdfltfcparm()
4275 fcp->isp_wwnn = ACTIVE_NODEWWN(isp, chan); in isp_setdfltfcparm()
4276 fcp->isp_wwpn = ACTIVE_PORTWWN(isp, chan); in isp_setdfltfcparm()
4277 isp_prt(isp, ISP_LOGCONFIG, "Chan %d 0x%08x%08x/0x%08x%08x Role %s", in isp_setdfltfcparm()
4290 isp_reinit(ispsoftc_t *isp, int do_load_defaults) in isp_reinit() argument
4294 if (isp->isp_state > ISP_RESETSTATE) in isp_reinit()
4295 isp_stop(isp); in isp_reinit()
4296 if (isp->isp_state != ISP_RESETSTATE) in isp_reinit()
4297 isp_reset(isp, do_load_defaults); in isp_reinit()
4298 if (isp->isp_state != ISP_RESETSTATE) { in isp_reinit()
4300 isp_prt(isp, ISP_LOGERR, "%s: cannot reset card", __func__); in isp_reinit()
4304 isp_init(isp); in isp_reinit()
4305 if (isp->isp_state > ISP_RESETSTATE && in isp_reinit()
4306 isp->isp_state != ISP_RUNSTATE) { in isp_reinit()
4308 isp_prt(isp, ISP_LOGERR, "%s: cannot init card", __func__); in isp_reinit()
4309 ISP_DISABLE_INTS(isp); in isp_reinit()
4313 isp_clear_commands(isp); in isp_reinit()
4314 for (i = 0; i < isp->isp_nchan; i++) in isp_reinit()
4315 isp_clear_portdb(isp, i); in isp_reinit()
4323 isp_read_nvram(ispsoftc_t *isp, int bus) in isp_read_nvram() argument
4326 return (isp_read_nvram_2400(isp)); in isp_read_nvram()
4330 isp_read_nvram_2400(ispsoftc_t *isp) in isp_read_nvram_2400() argument
4336 addr = ISP2400_NVRAM_PORT_ADDR(isp->isp_port); in isp_read_nvram_2400()
4339 isp_rd_2400_nvram(isp, addr++, dptr++); in isp_read_nvram_2400()
4343 isp_prt(isp, ISP_LOGWARN, "invalid NVRAM header (%x %x %x)", in isp_read_nvram_2400()
4351 ISP_IOXGET_32(isp, &dptr[lwrds], tmp); in isp_read_nvram_2400()
4355 isp_prt(isp, ISP_LOGWARN, "invalid NVRAM checksum"); in isp_read_nvram_2400()
4359 isp_parse_nvram_2400(isp, nvram_data); in isp_read_nvram_2400()
4365 isp_rd_2400_nvram(ispsoftc_t *isp, uint32_t addr, uint32_t *rp) in isp_rd_2400_nvram() argument
4371 if (IS_26XX(isp)) { in isp_rd_2400_nvram()
4373 } else if (IS_25XX(isp)) { in isp_rd_2400_nvram()
4376 ISP_WRITE(isp, BIU2400_FLASH_ADDR, base | addr); in isp_rd_2400_nvram()
4379 tmp = ISP_READ(isp, BIU2400_FLASH_ADDR); in isp_rd_2400_nvram()
4385 *rp = ISP_READ(isp, BIU2400_FLASH_DATA); in isp_rd_2400_nvram()
4386 ISP_SWIZZLE_NVRAM_LONG(isp, rp); in isp_rd_2400_nvram()
4393 isp_parse_nvram_2400(ispsoftc_t *isp, uint8_t *nvram_data) in isp_parse_nvram_2400() argument
4395 fcparam *fcp = FCPARAM(isp, 0); in isp_parse_nvram_2400()
4398 isp_prt(isp, ISP_LOGDEBUG0, in isp_parse_nvram_2400()
4405 isp_prt(isp, ISP_LOGDEBUG0, in isp_parse_nvram_2400()
4427 if ((isp->isp_confopts & ISP_CFG_OWNFSZ) == 0) { in isp_parse_nvram_2400()
4428 DEFAULT_FRAMESIZE(isp) = in isp_parse_nvram_2400()
4431 if ((isp->isp_confopts & ISP_CFG_OWNLOOPID) == 0) { in isp_parse_nvram_2400()