diff options
Diffstat (limited to 'sys/dev/isp/isp_library.c')
-rw-r--r-- | sys/dev/isp/isp_library.c | 502 |
1 files changed, 135 insertions, 367 deletions
diff --git a/sys/dev/isp/isp_library.c b/sys/dev/isp/isp_library.c index ee0206f..9e8f3ab 100644 --- a/sys/dev/isp/isp_library.c +++ b/sys/dev/isp/isp_library.c @@ -394,40 +394,31 @@ isp_print_bytes(ispsoftc_t *isp, const char *msg, int amt, void *arg) int isp_fc_runstate(ispsoftc_t *isp, int chan, int tval) { - fcparam *fcp; - - fcp = FCPARAM(isp, chan); - if (fcp->role == ISP_ROLE_NONE) { - return (0); - } - if (fcp->isp_fwstate < FW_READY || fcp->isp_loopstate < LOOP_PDB_RCVD) { - if (isp_control(isp, ISPCTL_FCLINK_TEST, chan, tval) != 0) { - isp_prt(isp, ISP_LOG_SANCFG, "isp_fc_runstate: linktest failed for channel %d", chan); - return (-1); - } - if (fcp->isp_fwstate != FW_READY || fcp->isp_loopstate < LOOP_PDB_RCVD) { - isp_prt(isp, ISP_LOG_SANCFG, "isp_fc_runstate: f/w not ready for channel %d", chan); - return (-1); - } - } + fcparam *fcp = FCPARAM(isp, chan); + int res; - if (isp_control(isp, ISPCTL_SCAN_LOOP, chan) != 0) { - isp_prt(isp, ISP_LOG_SANCFG, "isp_fc_runstate: scan loop fails on channel %d", chan); - return (LOOP_PDB_RCVD); - } - if (isp_control(isp, ISPCTL_SCAN_FABRIC, chan) != 0) { - isp_prt(isp, ISP_LOG_SANCFG, "isp_fc_runstate: scan fabric fails on channel %d", chan); - return (LOOP_LSCAN_DONE); - } - if (isp_control(isp, ISPCTL_PDB_SYNC, chan) != 0) { - isp_prt(isp, ISP_LOG_SANCFG, "isp_fc_runstate: pdb_sync fails on channel %d", chan); - return (LOOP_FSCAN_DONE); - } - if (fcp->isp_fwstate != FW_READY || fcp->isp_loopstate != LOOP_READY) { - isp_prt(isp, ISP_LOG_SANCFG, "isp_fc_runstate: f/w not ready again on channel %d", chan); +again: + if (fcp->role == ISP_ROLE_NONE) return (-1); - } - return (0); + res = isp_control(isp, ISPCTL_FCLINK_TEST, chan, tval); + if (res > 0) + goto again; + if (res < 0) + return (fcp->isp_loopstate); + res = isp_control(isp, ISPCTL_SCAN_LOOP, chan); + if (res > 0) + goto again; + if (res < 0) + return (fcp->isp_loopstate); + res = isp_control(isp, ISPCTL_SCAN_FABRIC, chan); + if (res > 0) + goto again; + if (res < 0) + return (fcp->isp_loopstate); + res = isp_control(isp, ISPCTL_PDB_SYNC, chan); + if (res > 0) + goto again; + return (fcp->isp_loopstate); } /* @@ -536,7 +527,7 @@ isp_fc_fw_statename(int state) { switch (state) { case FW_CONFIG_WAIT: return "Config Wait"; - case FW_WAIT_AL_PA: return "Waiting for AL_PA"; + case FW_WAIT_LINK: return "Wait Link"; case FW_WAIT_LOGIN: return "Wait Login"; case FW_READY: return "Ready"; case FW_LOSS_OF_SYNC: return "Loss Of Sync"; @@ -552,9 +543,10 @@ isp_fc_loop_statename(int state) { switch (state) { case LOOP_NIL: return "NIL"; - case LOOP_LIP_RCVD: return "LIP Received"; - case LOOP_PDB_RCVD: return "PDB Received"; - case LOOP_SCANNING_LOOP: return "Scanning"; + case LOOP_HAVE_LINK: return "Have Link"; + case LOOP_TESTING_LINK: return "Testing Link"; + case LOOP_LTEST_DONE: return "Link Test Done"; + case LOOP_SCANNING_LOOP: return "Scanning Loop"; case LOOP_LSCAN_DONE: return "Loop Scan Done"; case LOOP_SCANNING_FABRIC: return "Scanning Fabric"; case LOOP_FSCAN_DONE: return "Fabric Scan Done"; @@ -568,15 +560,15 @@ const char * isp_fc_toponame(fcparam *fcp) { - if (fcp->isp_fwstate != FW_READY) { + if (fcp->isp_loopstate < LOOP_LTEST_DONE) { return "Unavailable"; } switch (fcp->isp_topo) { - case TOPO_NL_PORT: return "Private Loop"; - case TOPO_FL_PORT: return "FL Port"; - case TOPO_N_PORT: return "N-Port to N-Port"; - case TOPO_F_PORT: return "F Port"; - case TOPO_PTP_STUB: return "F Port (no FLOGI_ACC response)"; + case TOPO_NL_PORT: return "Private Loop (NL_Port)"; + case TOPO_FL_PORT: return "Public Loop (FL_Port)"; + case TOPO_N_PORT: return "Point-to-Point (N_Port)"; + case TOPO_F_PORT: return "Fabric (F_Port)"; + case TOPO_PTP_STUB: return "Point-to-Point (no response)"; default: return "?????"; } } @@ -604,7 +596,8 @@ isp_fc_enable_vp(ispsoftc_t *isp, int chan) vp->vp_mod_cnt = 1; vp->vp_mod_idx0 = chan; vp->vp_mod_cmd = VP_MODIFY_ENA; - vp->vp_mod_ports[0].options = ICB2400_VPOPT_ENABLED; + vp->vp_mod_ports[0].options = ICB2400_VPOPT_ENABLED | + ICB2400_VPOPT_ENA_SNSLOGIN; if (fcp->role & ISP_ROLE_INITIATOR) { vp->vp_mod_ports[0].options |= ICB2400_VPOPT_INI_ENABLE; } @@ -784,16 +777,11 @@ isp_clear_commands(ispsoftc_t *isp) ctio->ct_syshandle = hdp->handle; ctio->ct_nphdl = CT_HBA_RESET; ctio->ct_header.rqs_entry_type = RQSTYPE_CTIO7; - } else if (IS_FC(isp)) { + } else { ct2_entry_t *ctio = (ct2_entry_t *) local; ctio->ct_syshandle = hdp->handle; ctio->ct_status = CT_HBA_RESET; ctio->ct_header.rqs_entry_type = RQSTYPE_CTIO2; - } else { - ct_entry_t *ctio = (ct_entry_t *) local; - ctio->ct_syshandle = hdp->handle; - ctio->ct_status = CT_HBA_RESET & 0xff; - ctio->ct_header.rqs_entry_type = RQSTYPE_CTIO; } isp_async(isp, ISPASYNC_TARGET_ACTION, local); } @@ -974,7 +962,8 @@ isp_put_request_t2(ispsoftc_t *isp, ispreqt2_t *src, ispreqt2_t *dst) ISP_IOXPUT_8(isp, src->req_target, &dst->req_target); ISP_IOXPUT_16(isp, src->req_scclun, &dst->req_scclun); ISP_IOXPUT_16(isp, src->req_flags, &dst->req_flags); - ISP_IOXPUT_16(isp, src->req_reserved, &dst->req_reserved); + ISP_IOXPUT_8(isp, src->req_crn, &dst->req_crn); + ISP_IOXPUT_8(isp, src->req_reserved, &dst->req_reserved); ISP_IOXPUT_16(isp, src->req_time, &dst->req_time); ISP_IOXPUT_16(isp, src->req_seg_count, &dst->req_seg_count); for (i = 0; i < ASIZE(src->req_cdb); i++) { @@ -996,7 +985,8 @@ isp_put_request_t2e(ispsoftc_t *isp, ispreqt2e_t *src, ispreqt2e_t *dst) ISP_IOXPUT_16(isp, src->req_target, &dst->req_target); ISP_IOXPUT_16(isp, src->req_scclun, &dst->req_scclun); ISP_IOXPUT_16(isp, src->req_flags, &dst->req_flags); - ISP_IOXPUT_16(isp, src->req_reserved, &dst->req_reserved); + ISP_IOXPUT_8(isp, src->req_crn, &dst->req_crn); + ISP_IOXPUT_8(isp, src->req_reserved, &dst->req_reserved); ISP_IOXPUT_16(isp, src->req_time, &dst->req_time); ISP_IOXPUT_16(isp, src->req_seg_count, &dst->req_seg_count); for (i = 0; i < ASIZE(src->req_cdb); i++) { @@ -1646,6 +1636,44 @@ isp_get_pdb_24xx(ispsoftc_t *isp, isp_pdb_24xx_t *src, isp_pdb_24xx_t *dst) } } +void +isp_get_pnhle_21xx(ispsoftc_t *isp, isp_pnhle_21xx_t *src, isp_pnhle_21xx_t *dst) +{ + + ISP_IOXGET_16(isp, &src->pnhle_port_id_lo, dst->pnhle_port_id_lo); + ISP_IOXGET_16(isp, &src->pnhle_port_id_hi_handle, dst->pnhle_port_id_hi_handle); +} + +void +isp_get_pnhle_23xx(ispsoftc_t *isp, isp_pnhle_23xx_t *src, isp_pnhle_23xx_t *dst) +{ + + ISP_IOXGET_16(isp, &src->pnhle_port_id_lo, dst->pnhle_port_id_lo); + ISP_IOXGET_16(isp, &src->pnhle_port_id_hi, dst->pnhle_port_id_hi); + ISP_IOXGET_16(isp, &src->pnhle_handle, dst->pnhle_handle); +} + +void +isp_get_pnhle_24xx(ispsoftc_t *isp, isp_pnhle_24xx_t *src, isp_pnhle_24xx_t *dst) +{ + + ISP_IOXGET_16(isp, &src->pnhle_port_id_lo, dst->pnhle_port_id_lo); + ISP_IOXGET_16(isp, &src->pnhle_port_id_hi, dst->pnhle_port_id_hi); + ISP_IOXGET_16(isp, &src->pnhle_handle, dst->pnhle_handle); + ISP_IOXGET_16(isp, &src->pnhle_reserved, dst->pnhle_reserved); +} + +void +isp_get_pnnle(ispsoftc_t *isp, isp_pnnle_t *src, isp_pnnle_t *dst) +{ + int i; + + for (i = 0; i < 8; i++) + ISP_IOXGET_8(isp, &src->pnnle_name[i], dst->pnnle_name[i]); + ISP_IOXGET_16(isp, &src->pnnle_handle, dst->pnnle_handle); + ISP_IOXGET_16(isp, &src->pnnle_reserved, dst->pnnle_reserved); +} + /* * PLOGI/LOGO IOCB canonicalization */ @@ -1695,6 +1723,10 @@ isp_get_ridacq(ispsoftc_t *isp, isp_ridacq_t *src, isp_ridacq_t *dst) int i; isp_get_hdr(isp, &src->ridacq_hdr, &dst->ridacq_hdr); ISP_IOXGET_32(isp, &src->ridacq_handle, dst->ridacq_handle); + ISP_IOXGET_8(isp, &src->ridacq_vp_acquired, dst->ridacq_vp_acquired); + ISP_IOXGET_8(isp, &src->ridacq_vp_setup, dst->ridacq_vp_setup); + ISP_IOXGET_8(isp, &src->ridacq_vp_index, dst->ridacq_vp_index); + ISP_IOXGET_8(isp, &src->ridacq_vp_status, dst->ridacq_vp_status); ISP_IOXGET_16(isp, &src->ridacq_vp_port_lo, dst->ridacq_vp_port_lo); ISP_IOXGET_8(isp, &src->ridacq_vp_port_hi, dst->ridacq_vp_port_hi); ISP_IOXGET_8(isp, &src->ridacq_format, dst->ridacq_format); @@ -1704,17 +1736,6 @@ isp_get_ridacq(ispsoftc_t *isp, isp_ridacq_t *src, isp_ridacq_t *dst) for (i = 0; i < sizeof (src->ridacq_reserved1) / sizeof (src->ridacq_reserved1[0]); i++) { ISP_IOXGET_16(isp, &src->ridacq_reserved1[i], dst->ridacq_reserved1[i]); } - if (dst->ridacq_format == 0) { - ISP_IOXGET_8(isp, &src->un.type0.ridacq_vp_acquired, dst->un.type0.ridacq_vp_acquired); - ISP_IOXGET_8(isp, &src->un.type0.ridacq_vp_setup, dst->un.type0.ridacq_vp_setup); - ISP_IOXGET_16(isp, &src->un.type0.ridacq_reserved0, dst->un.type0.ridacq_reserved0); - } else if (dst->ridacq_format == 1) { - ISP_IOXGET_16(isp, &src->un.type1.ridacq_vp_count, dst->un.type1.ridacq_vp_count); - ISP_IOXGET_8(isp, &src->un.type1.ridacq_vp_index, dst->un.type1.ridacq_vp_index); - ISP_IOXGET_8(isp, &src->un.type1.ridacq_vp_status, dst->un.type1.ridacq_vp_status); - } else { - ISP_MEMZERO(&dst->un, sizeof (dst->un)); - } } @@ -2132,6 +2153,20 @@ isp_put_rft_id(ispsoftc_t *isp, rft_id_t *src, rft_id_t *dst) } void +isp_put_rff_id(ispsoftc_t *isp, rff_id_t *src, rff_id_t *dst) +{ + int i; + + isp_put_ct_hdr(isp, &src->rffid_hdr, &dst->rffid_hdr); + ISP_IOZPUT_8(isp, src->rffid_reserved, &dst->rffid_reserved); + for (i = 0; i < 3; i++) + ISP_IOZPUT_8(isp, src->rffid_portid[i], &dst->rffid_portid[i]); + ISP_IOZPUT_16(isp, src->rffid_reserved2, &dst->rffid_reserved2); + ISP_IOZPUT_8(isp, src->rffid_fc4features, &dst->rffid_fc4features); + ISP_IOZPUT_8(isp, src->rffid_fc4type, &dst->rffid_fc4type); +} + +void isp_get_ct_hdr(ispsoftc_t *isp, ct_hdr_t *src, ct_hdr_t *dst) { ISP_IOZGET_8(isp, &src->ct_revision, dst->ct_revision); @@ -2225,10 +2260,6 @@ isp_send_tgt_cmd(ispsoftc_t *isp, void *fqe, void *segp, uint32_t nsegs, uint32_ * First, figure out how many pieces of data to transfer and what kind and how many we can put into the first queue entry. */ switch (type) { - case RQSTYPE_CTIO: - dsp = ((ct_entry_t *)fqe)->ct_dataseg; - seglim = ISP_RQDSEG; - break; case RQSTYPE_CTIO2: dsp = ((ct2_entry_t *)fqe)->rsp.m0.u.ct_dataseg; seglim = ISP_RQDSEG_T2; @@ -2316,10 +2347,6 @@ isp_send_tgt_cmd(ispsoftc_t *isp, void *fqe, void *segp, uint32_t nsegs, uint32_ */ ((isphdr_t *)fqe)->rqs_entry_count = nqe; switch (type) { - case RQSTYPE_CTIO: - ((ct_entry_t *)fqe)->ct_seg_count = nsegs; - isp_put_ctio(isp, fqe, qe0); - break; case RQSTYPE_CTIO2: case RQSTYPE_CTIO3: if (((ct2_entry_t *)fqe)->ct_flags & CT2_FLAG_MODE2) { @@ -2420,20 +2447,34 @@ isp_destroy_tgt_handle(ispsoftc_t *isp, uint32_t handle) * Find port database entries */ int -isp_find_pdb_by_wwn(ispsoftc_t *isp, int chan, uint64_t wwn, fcportdb_t **lptr) +isp_find_pdb_empty(ispsoftc_t *isp, int chan, fcportdb_t **lptr) { - fcparam *fcp; + fcparam *fcp = FCPARAM(isp, chan); + int i; + + for (i = 0; i < MAX_FC_TARG; i++) { + fcportdb_t *lp = &fcp->portdb[i]; + + if (lp->state == FC_PORTDB_STATE_NIL) { + *lptr = lp; + return (1); + } + } + return (0); +} + +int +isp_find_pdb_by_wwpn(ispsoftc_t *isp, int chan, uint64_t wwpn, fcportdb_t **lptr) +{ + fcparam *fcp = FCPARAM(isp, chan); int i; - if (chan >= isp->isp_nchan) - return (0); - fcp = FCPARAM(isp, chan); for (i = 0; i < MAX_FC_TARG; i++) { fcportdb_t *lp = &fcp->portdb[i]; if (lp->state == FC_PORTDB_STATE_NIL) continue; - if (lp->port_wwn == wwn) { + if (lp->port_wwn == wwpn) { *lptr = lp; return (1); } @@ -2441,17 +2482,13 @@ isp_find_pdb_by_wwn(ispsoftc_t *isp, int chan, uint64_t wwn, fcportdb_t **lptr) return (0); } -#ifdef ISP_TARGET_MODE - int -isp_find_pdb_by_handle(ispsoftc_t *isp, int chan, uint32_t handle, fcportdb_t **lptr) +isp_find_pdb_by_handle(ispsoftc_t *isp, int chan, uint16_t handle, + fcportdb_t **lptr) { - fcparam *fcp; + fcparam *fcp = FCPARAM(isp, chan); int i; - if (chan >= isp->isp_nchan) - return (0); - fcp = FCPARAM(isp, chan); for (i = 0; i < MAX_FC_TARG; i++) { fcportdb_t *lp = &fcp->portdb[i]; @@ -2466,20 +2503,18 @@ isp_find_pdb_by_handle(ispsoftc_t *isp, int chan, uint32_t handle, fcportdb_t ** } int -isp_find_pdb_by_sid(ispsoftc_t *isp, int chan, uint32_t sid, fcportdb_t **lptr) +isp_find_pdb_by_portid(ispsoftc_t *isp, int chan, uint32_t portid, + fcportdb_t **lptr) { - fcparam *fcp; + fcparam *fcp = FCPARAM(isp, chan); int i; - if (chan >= isp->isp_nchan) - return (0); - fcp = FCPARAM(isp, chan); for (i = 0; i < MAX_FC_TARG; i++) { fcportdb_t *lp = &fcp->portdb[i]; if (lp->state == FC_PORTDB_STATE_NIL) continue; - if (lp->portid == sid) { + if (lp->portid == portid) { *lptr = lp; return (1); } @@ -2487,6 +2522,7 @@ isp_find_pdb_by_sid(ispsoftc_t *isp, int chan, uint32_t sid, fcportdb_t **lptr) return (0); } +#ifdef ISP_TARGET_MODE void isp_find_chan_by_did(ispsoftc_t *isp, uint32_t did, uint16_t *cp) { @@ -2495,7 +2531,8 @@ isp_find_chan_by_did(ispsoftc_t *isp, uint32_t did, uint16_t *cp) *cp = ISP_NOCHAN; for (chan = 0; chan < isp->isp_nchan; chan++) { fcparam *fcp = FCPARAM(isp, chan); - if ((fcp->role & ISP_ROLE_TARGET) == 0 || fcp->isp_fwstate != FW_READY || fcp->isp_loopstate < LOOP_PDB_RCVD) { + if ((fcp->role & ISP_ROLE_TARGET) == 0 || + fcp->isp_loopstate < LOOP_LTEST_DONE) { continue; } if (fcp->isp_portid == did) { @@ -2530,13 +2567,13 @@ isp_add_wwn_entry(ispsoftc_t *isp, int chan, uint64_t wwpn, uint64_t wwnn, * with new parameters. Some cases of update can be suspicious, * so log them verbosely and dump the whole port database. */ - if ((VALID_INI(wwpn) && isp_find_pdb_by_wwn(isp, chan, wwpn, &lp)) || - (s_id != PORT_NONE && isp_find_pdb_by_sid(isp, chan, s_id, &lp))) { + if ((VALID_INI(wwpn) && isp_find_pdb_by_wwpn(isp, chan, wwpn, &lp)) || + (VALID_PORT(s_id) && isp_find_pdb_by_portid(isp, chan, s_id, &lp))) { change = 0; lp->new_portid = lp->portid; lp->new_prli_word3 = lp->prli_word3; - if (s_id != PORT_NONE && lp->portid != s_id) { - if (lp->portid == PORT_NONE) { + if (VALID_PORT(s_id) && lp->portid != s_id) { + if (!VALID_PORT(lp->portid)) { isp_prt(isp, ISP_LOGTINFO, "Chan %d WWPN 0x%016llx handle 0x%x " "gets PortID 0x%06x", @@ -2616,8 +2653,6 @@ isp_add_wwn_entry(ispsoftc_t *isp, int chan, uint64_t wwpn, uint64_t wwnn, isp_async(isp, ISPASYNC_DEV_CHANGED, chan, lp); lp->portid = lp->new_portid; lp->prli_word3 = lp->new_prli_word3; - lp->new_prli_word3 = 0; - lp->new_portid = 0; } else { isp_prt(isp, ISP_LOGTINFO, "Chan %d WWPN 0x%016llx PortID 0x%06x " @@ -2757,14 +2792,14 @@ isp_del_wwn_entries(ispsoftc_t *isp, isp_notify_t *mp) return; } } - if (mp->nt_wwn != INI_ANY) { - if (isp_find_pdb_by_wwn(isp, mp->nt_channel, mp->nt_wwn, &lp)) { + if (VALID_INI(mp->nt_wwn)) { + if (isp_find_pdb_by_wwpn(isp, mp->nt_channel, mp->nt_wwn, &lp)) { isp_del_wwn_entry(isp, mp->nt_channel, lp->port_wwn, lp->handle, lp->portid); return; } } - if (mp->nt_sid != PORT_ANY && mp->nt_sid != PORT_NONE) { - if (isp_find_pdb_by_sid(isp, mp->nt_channel, mp->nt_sid, &lp)) { + if (VALID_PORT(mp->nt_sid)) { + if (isp_find_pdb_by_portid(isp, mp->nt_channel, mp->nt_sid, &lp)) { isp_del_wwn_entry(isp, mp->nt_channel, lp->port_wwn, lp->handle, lp->portid); return; } @@ -2774,76 +2809,6 @@ isp_del_wwn_entries(ispsoftc_t *isp, isp_notify_t *mp) } void -isp_put_atio(ispsoftc_t *isp, at_entry_t *src, at_entry_t *dst) -{ - int i; - isp_put_hdr(isp, &src->at_header, &dst->at_header); - ISP_IOXPUT_16(isp, src->at_reserved, &dst->at_reserved); - ISP_IOXPUT_16(isp, src->at_handle, &dst->at_handle); - if (ISP_IS_SBUS(isp)) { - ISP_IOXPUT_8(isp, src->at_lun, &dst->at_iid); - ISP_IOXPUT_8(isp, src->at_iid, &dst->at_lun); - ISP_IOXPUT_8(isp, src->at_cdblen, &dst->at_tgt); - ISP_IOXPUT_8(isp, src->at_tgt, &dst->at_cdblen); - ISP_IOXPUT_8(isp, src->at_status, &dst->at_scsi_status); - ISP_IOXPUT_8(isp, src->at_scsi_status, &dst->at_status); - ISP_IOXPUT_8(isp, src->at_tag_val, &dst->at_tag_type); - ISP_IOXPUT_8(isp, src->at_tag_type, &dst->at_tag_val); - } else { - ISP_IOXPUT_8(isp, src->at_lun, &dst->at_lun); - ISP_IOXPUT_8(isp, src->at_iid, &dst->at_iid); - ISP_IOXPUT_8(isp, src->at_cdblen, &dst->at_cdblen); - ISP_IOXPUT_8(isp, src->at_tgt, &dst->at_tgt); - ISP_IOXPUT_8(isp, src->at_status, &dst->at_status); - ISP_IOXPUT_8(isp, src->at_scsi_status, &dst->at_scsi_status); - ISP_IOXPUT_8(isp, src->at_tag_val, &dst->at_tag_val); - ISP_IOXPUT_8(isp, src->at_tag_type, &dst->at_tag_type); - } - ISP_IOXPUT_32(isp, src->at_flags, &dst->at_flags); - for (i = 0; i < ATIO_CDBLEN; i++) { - ISP_IOXPUT_8(isp, src->at_cdb[i], &dst->at_cdb[i]); - } - for (i = 0; i < QLTM_SENSELEN; i++) { - ISP_IOXPUT_8(isp, src->at_sense[i], &dst->at_sense[i]); - } -} - -void -isp_get_atio(ispsoftc_t *isp, at_entry_t *src, at_entry_t *dst) -{ - int i; - isp_get_hdr(isp, &src->at_header, &dst->at_header); - ISP_IOXGET_16(isp, &src->at_reserved, dst->at_reserved); - ISP_IOXGET_16(isp, &src->at_handle, dst->at_handle); - if (ISP_IS_SBUS(isp)) { - ISP_IOXGET_8(isp, &src->at_lun, dst->at_iid); - ISP_IOXGET_8(isp, &src->at_iid, dst->at_lun); - ISP_IOXGET_8(isp, &src->at_cdblen, dst->at_tgt); - ISP_IOXGET_8(isp, &src->at_tgt, dst->at_cdblen); - ISP_IOXGET_8(isp, &src->at_status, dst->at_scsi_status); - ISP_IOXGET_8(isp, &src->at_scsi_status, dst->at_status); - ISP_IOXGET_8(isp, &src->at_tag_val, dst->at_tag_type); - ISP_IOXGET_8(isp, &src->at_tag_type, dst->at_tag_val); - } else { - ISP_IOXGET_8(isp, &src->at_lun, dst->at_lun); - ISP_IOXGET_8(isp, &src->at_iid, dst->at_iid); - ISP_IOXGET_8(isp, &src->at_cdblen, dst->at_cdblen); - ISP_IOXGET_8(isp, &src->at_tgt, dst->at_tgt); - ISP_IOXGET_8(isp, &src->at_status, dst->at_status); - ISP_IOXGET_8(isp, &src->at_scsi_status, dst->at_scsi_status); - ISP_IOXGET_8(isp, &src->at_tag_val, dst->at_tag_val); - ISP_IOXGET_8(isp, &src->at_tag_type, dst->at_tag_type); - } - ISP_IOXGET_32(isp, &src->at_flags, dst->at_flags); - for (i = 0; i < ATIO_CDBLEN; i++) { - ISP_IOXGET_8(isp, &src->at_cdb[i], dst->at_cdb[i]); - } - for (i = 0; i < QLTM_SENSELEN; i++) { - ISP_IOXGET_8(isp, &src->at_sense[i], dst->at_sense[i]); - } -} - -void isp_put_atio2(ispsoftc_t *isp, at2_entry_t *src, at2_entry_t *dst) { int i; @@ -2969,81 +2934,6 @@ isp_get_atio7(ispsoftc_t *isp, at7_entry_t *src, at7_entry_t *dst) } void -isp_put_ctio(ispsoftc_t *isp, ct_entry_t *src, ct_entry_t *dst) -{ - int i; - isp_put_hdr(isp, &src->ct_header, &dst->ct_header); - ISP_IOXPUT_16(isp, src->ct_syshandle, &dst->ct_syshandle); - ISP_IOXPUT_16(isp, src->ct_fwhandle, &dst->ct_fwhandle); - if (ISP_IS_SBUS(isp)) { - ISP_IOXPUT_8(isp, src->ct_iid, &dst->ct_lun); - ISP_IOXPUT_8(isp, src->ct_lun, &dst->ct_iid); - ISP_IOXPUT_8(isp, src->ct_tgt, &dst->ct_reserved2); - ISP_IOXPUT_8(isp, src->ct_reserved2, &dst->ct_tgt); - ISP_IOXPUT_8(isp, src->ct_status, &dst->ct_scsi_status); - ISP_IOXPUT_8(isp, src->ct_scsi_status, &dst->ct_status); - ISP_IOXPUT_8(isp, src->ct_tag_type, &dst->ct_tag_val); - ISP_IOXPUT_8(isp, src->ct_tag_val, &dst->ct_tag_type); - } else { - ISP_IOXPUT_8(isp, src->ct_iid, &dst->ct_iid); - ISP_IOXPUT_8(isp, src->ct_lun, &dst->ct_lun); - ISP_IOXPUT_8(isp, src->ct_tgt, &dst->ct_tgt); - ISP_IOXPUT_8(isp, src->ct_reserved2, &dst->ct_reserved2); - ISP_IOXPUT_8(isp, src->ct_scsi_status, - &dst->ct_scsi_status); - ISP_IOXPUT_8(isp, src->ct_status, &dst->ct_status); - ISP_IOXPUT_8(isp, src->ct_tag_type, &dst->ct_tag_type); - ISP_IOXPUT_8(isp, src->ct_tag_val, &dst->ct_tag_val); - } - ISP_IOXPUT_32(isp, src->ct_flags, &dst->ct_flags); - ISP_IOXPUT_32(isp, src->ct_xfrlen, &dst->ct_xfrlen); - ISP_IOXPUT_32(isp, src->ct_resid, &dst->ct_resid); - ISP_IOXPUT_16(isp, src->ct_timeout, &dst->ct_timeout); - ISP_IOXPUT_16(isp, src->ct_seg_count, &dst->ct_seg_count); - for (i = 0; i < ISP_RQDSEG; i++) { - ISP_IOXPUT_32(isp, src->ct_dataseg[i].ds_base, &dst->ct_dataseg[i].ds_base); - ISP_IOXPUT_32(isp, src->ct_dataseg[i].ds_count, &dst->ct_dataseg[i].ds_count); - } -} - -void -isp_get_ctio(ispsoftc_t *isp, ct_entry_t *src, ct_entry_t *dst) -{ - int i; - isp_get_hdr(isp, &src->ct_header, &dst->ct_header); - ISP_IOXGET_16(isp, &src->ct_syshandle, dst->ct_syshandle); - ISP_IOXGET_16(isp, &src->ct_fwhandle, dst->ct_fwhandle); - if (ISP_IS_SBUS(isp)) { - ISP_IOXGET_8(isp, &src->ct_lun, dst->ct_iid); - ISP_IOXGET_8(isp, &src->ct_iid, dst->ct_lun); - ISP_IOXGET_8(isp, &src->ct_reserved2, dst->ct_tgt); - ISP_IOXGET_8(isp, &src->ct_tgt, dst->ct_reserved2); - ISP_IOXGET_8(isp, &src->ct_status, dst->ct_scsi_status); - ISP_IOXGET_8(isp, &src->ct_scsi_status, dst->ct_status); - ISP_IOXGET_8(isp, &src->ct_tag_val, dst->ct_tag_type); - ISP_IOXGET_8(isp, &src->ct_tag_type, dst->ct_tag_val); - } else { - ISP_IOXGET_8(isp, &src->ct_lun, dst->ct_lun); - ISP_IOXGET_8(isp, &src->ct_iid, dst->ct_iid); - ISP_IOXGET_8(isp, &src->ct_reserved2, dst->ct_reserved2); - ISP_IOXGET_8(isp, &src->ct_tgt, dst->ct_tgt); - ISP_IOXGET_8(isp, &src->ct_status, dst->ct_status); - ISP_IOXGET_8(isp, &src->ct_scsi_status, dst->ct_scsi_status); - ISP_IOXGET_8(isp, &src->ct_tag_val, dst->ct_tag_val); - ISP_IOXGET_8(isp, &src->ct_tag_type, dst->ct_tag_type); - } - ISP_IOXGET_32(isp, &src->ct_flags, dst->ct_flags); - ISP_IOXGET_32(isp, &src->ct_xfrlen, dst->ct_xfrlen); - ISP_IOXGET_32(isp, &src->ct_resid, dst->ct_resid); - ISP_IOXGET_16(isp, &src->ct_timeout, dst->ct_timeout); - ISP_IOXGET_16(isp, &src->ct_seg_count, dst->ct_seg_count); - for (i = 0; i < ISP_RQDSEG; i++) { - ISP_IOXGET_32(isp, &src->ct_dataseg[i].ds_base, dst->ct_dataseg[i].ds_base); - ISP_IOXGET_32(isp, &src->ct_dataseg[i].ds_count, dst->ct_dataseg[i].ds_count); - } -} - -void isp_put_ctio2(ispsoftc_t *isp, ct2_entry_t *src, ct2_entry_t *dst) { int i; @@ -3461,82 +3351,6 @@ isp_get_enable_lun(ispsoftc_t *isp, lun_entry_t *lesrc, lun_entry_t *ledst) } void -isp_put_notify(ispsoftc_t *isp, in_entry_t *src, in_entry_t *dst) -{ - int i; - isp_put_hdr(isp, &src->in_header, &dst->in_header); - ISP_IOXPUT_32(isp, src->in_reserved, &dst->in_reserved); - if (ISP_IS_SBUS(isp)) { - ISP_IOXPUT_8(isp, src->in_lun, &dst->in_iid); - ISP_IOXPUT_8(isp, src->in_iid, &dst->in_lun); - ISP_IOXPUT_8(isp, src->in_reserved2, &dst->in_tgt); - ISP_IOXPUT_8(isp, src->in_tgt, &dst->in_reserved2); - ISP_IOXPUT_8(isp, src->in_status, &dst->in_rsvd2); - ISP_IOXPUT_8(isp, src->in_rsvd2, &dst->in_status); - ISP_IOXPUT_8(isp, src->in_tag_val, &dst->in_tag_type); - ISP_IOXPUT_8(isp, src->in_tag_type, &dst->in_tag_val); - } else { - ISP_IOXPUT_8(isp, src->in_lun, &dst->in_lun); - ISP_IOXPUT_8(isp, src->in_iid, &dst->in_iid); - ISP_IOXPUT_8(isp, src->in_reserved2, &dst->in_reserved2); - ISP_IOXPUT_8(isp, src->in_tgt, &dst->in_tgt); - ISP_IOXPUT_8(isp, src->in_status, &dst->in_status); - ISP_IOXPUT_8(isp, src->in_rsvd2, &dst->in_rsvd2); - ISP_IOXPUT_8(isp, src->in_tag_val, &dst->in_tag_val); - ISP_IOXPUT_8(isp, src->in_tag_type, &dst->in_tag_type); - } - ISP_IOXPUT_32(isp, src->in_flags, &dst->in_flags); - ISP_IOXPUT_16(isp, src->in_seqid, &dst->in_seqid); - for (i = 0; i < IN_MSGLEN; i++) { - ISP_IOXPUT_8(isp, src->in_msg[i], &dst->in_msg[i]); - } - for (i = 0; i < IN_RSVDLEN; i++) { - ISP_IOXPUT_8(isp, src->in_reserved3[i], &dst->in_reserved3[i]); - } - for (i = 0; i < QLTM_SENSELEN; i++) { - ISP_IOXPUT_8(isp, src->in_sense[i], &dst->in_sense[i]); - } -} - -void -isp_get_notify(ispsoftc_t *isp, in_entry_t *src, in_entry_t *dst) -{ - int i; - isp_get_hdr(isp, &src->in_header, &dst->in_header); - ISP_IOXGET_32(isp, &src->in_reserved, dst->in_reserved); - if (ISP_IS_SBUS(isp)) { - ISP_IOXGET_8(isp, &src->in_lun, dst->in_iid); - ISP_IOXGET_8(isp, &src->in_iid, dst->in_lun); - ISP_IOXGET_8(isp, &src->in_reserved2, dst->in_tgt); - ISP_IOXGET_8(isp, &src->in_tgt, dst->in_reserved2); - ISP_IOXGET_8(isp, &src->in_status, dst->in_rsvd2); - ISP_IOXGET_8(isp, &src->in_rsvd2, dst->in_status); - ISP_IOXGET_8(isp, &src->in_tag_val, dst->in_tag_type); - ISP_IOXGET_8(isp, &src->in_tag_type, dst->in_tag_val); - } else { - ISP_IOXGET_8(isp, &src->in_lun, dst->in_lun); - ISP_IOXGET_8(isp, &src->in_iid, dst->in_iid); - ISP_IOXGET_8(isp, &src->in_reserved2, dst->in_reserved2); - ISP_IOXGET_8(isp, &src->in_tgt, dst->in_tgt); - ISP_IOXGET_8(isp, &src->in_status, dst->in_status); - ISP_IOXGET_8(isp, &src->in_rsvd2, dst->in_rsvd2); - ISP_IOXGET_8(isp, &src->in_tag_val, dst->in_tag_val); - ISP_IOXGET_8(isp, &src->in_tag_type, dst->in_tag_type); - } - ISP_IOXGET_32(isp, &src->in_flags, dst->in_flags); - ISP_IOXGET_16(isp, &src->in_seqid, dst->in_seqid); - for (i = 0; i < IN_MSGLEN; i++) { - ISP_IOXGET_8(isp, &src->in_msg[i], dst->in_msg[i]); - } - for (i = 0; i < IN_RSVDLEN; i++) { - ISP_IOXGET_8(isp, &src->in_reserved3[i], dst->in_reserved3[i]); - } - for (i = 0; i < QLTM_SENSELEN; i++) { - ISP_IOXGET_8(isp, &src->in_sense[i], dst->in_sense[i]); - } -} - -void isp_put_notify_fc(ispsoftc_t *isp, in_fcentry_t *src, in_fcentry_t *dst) { isp_put_hdr(isp, &src->in_header, &dst->in_header); @@ -3663,52 +3477,6 @@ isp_get_notify_24xx(ispsoftc_t *isp, in_fcentry_24xx_t *src, in_fcentry_24xx_t * } void -isp_put_notify_ack(ispsoftc_t *isp, na_entry_t *src, na_entry_t *dst) -{ - int i; - isp_put_hdr(isp, &src->na_header, &dst->na_header); - ISP_IOXPUT_32(isp, src->na_reserved, &dst->na_reserved); - if (ISP_IS_SBUS(isp)) { - ISP_IOXPUT_8(isp, src->na_lun, &dst->na_iid); - ISP_IOXPUT_8(isp, src->na_iid, &dst->na_lun); - ISP_IOXPUT_8(isp, src->na_status, &dst->na_event); - ISP_IOXPUT_8(isp, src->na_event, &dst->na_status); - } else { - ISP_IOXPUT_8(isp, src->na_lun, &dst->na_lun); - ISP_IOXPUT_8(isp, src->na_iid, &dst->na_iid); - ISP_IOXPUT_8(isp, src->na_status, &dst->na_status); - ISP_IOXPUT_8(isp, src->na_event, &dst->na_event); - } - ISP_IOXPUT_32(isp, src->na_flags, &dst->na_flags); - for (i = 0; i < NA_RSVDLEN; i++) { - ISP_IOXPUT_16(isp, src->na_reserved3[i], &dst->na_reserved3[i]); - } -} - -void -isp_get_notify_ack(ispsoftc_t *isp, na_entry_t *src, na_entry_t *dst) -{ - int i; - isp_get_hdr(isp, &src->na_header, &dst->na_header); - ISP_IOXGET_32(isp, &src->na_reserved, dst->na_reserved); - if (ISP_IS_SBUS(isp)) { - ISP_IOXGET_8(isp, &src->na_lun, dst->na_iid); - ISP_IOXGET_8(isp, &src->na_iid, dst->na_lun); - ISP_IOXGET_8(isp, &src->na_status, dst->na_event); - ISP_IOXGET_8(isp, &src->na_event, dst->na_status); - } else { - ISP_IOXGET_8(isp, &src->na_lun, dst->na_lun); - ISP_IOXGET_8(isp, &src->na_iid, dst->na_iid); - ISP_IOXGET_8(isp, &src->na_status, dst->na_status); - ISP_IOXGET_8(isp, &src->na_event, dst->na_event); - } - ISP_IOXGET_32(isp, &src->na_flags, dst->na_flags); - for (i = 0; i < NA_RSVDLEN; i++) { - ISP_IOXGET_16(isp, &src->na_reserved3[i], dst->na_reserved3[i]); - } -} - -void isp_put_notify_ack_fc(ispsoftc_t *isp, na_fcentry_t *src, na_fcentry_t *dst) { int i; |