summaryrefslogtreecommitdiffstats
path: root/sys/dev/isp/isp_library.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/isp/isp_library.c')
-rw-r--r--sys/dev/isp/isp_library.c502
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;
OpenPOWER on IntegriCloud