Home | History | Annotate | Line # | Download | only in ic
isp_library.c revision 1.3
      1  1.3  mjacob /* $NetBSD: isp_library.c,v 1.3 2008/03/11 05:33:30 mjacob Exp $ */
      2  1.1  mjacob /*
      3  1.1  mjacob  * Copyright (c) 2006-2007 by Matthew Jacob
      4  1.1  mjacob  * All rights reserved.
      5  1.1  mjacob  *
      6  1.1  mjacob  * Redistribution and use in source and binary forms, with or without
      7  1.1  mjacob  * modification, are permitted provided that the following conditions
      8  1.1  mjacob  * are met:
      9  1.1  mjacob  *
     10  1.1  mjacob  * 1. Redistributions of source code must retain the above copyright
     11  1.1  mjacob  *    notice, this list of conditions and the following disclaimer.
     12  1.1  mjacob  * 2. Redistributions in binary form must reproduce the above copyright
     13  1.1  mjacob  *    notice, this list of conditions and the following disclaimer in the
     14  1.1  mjacob  *    documentation and/or other materials provided with the distribution.
     15  1.1  mjacob  *
     16  1.1  mjacob  * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND
     17  1.1  mjacob  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     18  1.1  mjacob  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
     19  1.1  mjacob  * ARE DISCLAIMED.  IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
     20  1.1  mjacob  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     21  1.1  mjacob  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     22  1.1  mjacob  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     23  1.1  mjacob  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
     24  1.1  mjacob  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
     25  1.1  mjacob  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
     26  1.1  mjacob  * SUCH DAMAGE.
     27  1.1  mjacob  */
     28  1.1  mjacob /*
     29  1.1  mjacob  * Qlogic Host Adapter Internal Library Functions
     30  1.1  mjacob  */
     31  1.1  mjacob #ifdef	__NetBSD__
     32  1.1  mjacob #include <sys/cdefs.h>
     33  1.3  mjacob __KERNEL_RCSID(0, "$NetBSD: isp_library.c,v 1.3 2008/03/11 05:33:30 mjacob Exp $");
     34  1.1  mjacob #include <dev/ic/isp_netbsd.h>
     35  1.1  mjacob #endif
     36  1.1  mjacob #ifdef	__FreeBSD__
     37  1.1  mjacob #include <sys/cdefs.h>
     38  1.1  mjacob __FBSDID("$FreeBSD$");
     39  1.1  mjacob #include <dev/isp/isp_freebsd.h>
     40  1.1  mjacob #endif
     41  1.1  mjacob #ifdef	__OpenBSD__
     42  1.1  mjacob #include <dev/ic/isp_openbsd.h>
     43  1.1  mjacob #endif
     44  1.1  mjacob #ifdef	__linux__
     45  1.1  mjacob #include "isp_linux.h"
     46  1.1  mjacob #endif
     47  1.1  mjacob #ifdef	__svr4__
     48  1.1  mjacob #include "isp_solaris.h"
     49  1.1  mjacob #endif
     50  1.1  mjacob 
     51  1.3  mjacob const char *isp_class3_roles[4] = {
     52  1.3  mjacob     "None", "Target", "Initiator", "Target/Initiator"
     53  1.3  mjacob };
     54  1.3  mjacob 
     55  1.1  mjacob int
     56  1.1  mjacob isp_save_xs(ispsoftc_t *isp, XS_T *xs, uint32_t *handlep)
     57  1.1  mjacob {
     58  1.1  mjacob 	uint16_t i, j;
     59  1.1  mjacob 
     60  1.1  mjacob 	for (j = isp->isp_lasthdls, i = 0; i < isp->isp_maxcmds; i++) {
     61  1.1  mjacob 		if (isp->isp_xflist[j] == NULL) {
     62  1.1  mjacob 			break;
     63  1.1  mjacob 		}
     64  1.1  mjacob 		if (++j == isp->isp_maxcmds) {
     65  1.1  mjacob 			j = 0;
     66  1.1  mjacob 		}
     67  1.1  mjacob 	}
     68  1.1  mjacob 	if (i == isp->isp_maxcmds) {
     69  1.1  mjacob 		return (-1);
     70  1.1  mjacob 	}
     71  1.1  mjacob 	isp->isp_xflist[j] = xs;
     72  1.1  mjacob 	*handlep = j+1;
     73  1.1  mjacob 	if (++j == isp->isp_maxcmds) {
     74  1.1  mjacob 		j = 0;
     75  1.1  mjacob 	}
     76  1.1  mjacob 	isp->isp_lasthdls = (uint32_t)j;
     77  1.1  mjacob 	return (0);
     78  1.1  mjacob }
     79  1.1  mjacob 
     80  1.1  mjacob XS_T *
     81  1.1  mjacob isp_find_xs(ispsoftc_t *isp, uint32_t handle)
     82  1.1  mjacob {
     83  1.1  mjacob 	if (handle < 1 || handle > (uint32_t) isp->isp_maxcmds) {
     84  1.1  mjacob 		return (NULL);
     85  1.1  mjacob 	} else {
     86  1.1  mjacob 		return (isp->isp_xflist[handle - 1]);
     87  1.1  mjacob 	}
     88  1.1  mjacob }
     89  1.1  mjacob 
     90  1.1  mjacob uint32_t
     91  1.1  mjacob isp_find_handle(ispsoftc_t *isp, XS_T *xs)
     92  1.1  mjacob {
     93  1.1  mjacob 	uint16_t i;
     94  1.1  mjacob 	if (xs != NULL) {
     95  1.1  mjacob 		for (i = 0; i < isp->isp_maxcmds; i++) {
     96  1.1  mjacob 			if (isp->isp_xflist[i] == xs) {
     97  1.1  mjacob 				return ((uint32_t) (i+1));
     98  1.1  mjacob 			}
     99  1.1  mjacob 		}
    100  1.1  mjacob 	}
    101  1.1  mjacob 	return (0);
    102  1.1  mjacob }
    103  1.1  mjacob 
    104  1.1  mjacob uint32_t
    105  1.1  mjacob isp_handle_index(uint32_t handle)
    106  1.1  mjacob {
    107  1.1  mjacob 	return (handle - 1);
    108  1.1  mjacob }
    109  1.1  mjacob 
    110  1.1  mjacob void
    111  1.1  mjacob isp_destroy_handle(ispsoftc_t *isp, uint32_t handle)
    112  1.1  mjacob {
    113  1.1  mjacob 	if (handle > 0 && handle <= (uint32_t) isp->isp_maxcmds) {
    114  1.1  mjacob 		isp->isp_xflist[handle - 1] = NULL;
    115  1.1  mjacob 	}
    116  1.1  mjacob }
    117  1.1  mjacob 
    118  1.1  mjacob int
    119  1.1  mjacob isp_getrqentry(ispsoftc_t *isp, uint32_t *iptrp,
    120  1.1  mjacob     uint32_t *optrp, void **resultp)
    121  1.1  mjacob {
    122  1.1  mjacob 	volatile uint32_t iptr, optr;
    123  1.1  mjacob 
    124  1.1  mjacob 	optr = isp->isp_reqodx = ISP_READ(isp, isp->isp_rqstoutrp);
    125  1.1  mjacob 	iptr = isp->isp_reqidx;
    126  1.1  mjacob 	*resultp = ISP_QUEUE_ENTRY(isp->isp_rquest, iptr);
    127  1.1  mjacob 	iptr = ISP_NXT_QENTRY(iptr, RQUEST_QUEUE_LEN(isp));
    128  1.1  mjacob 	if (iptr == optr) {
    129  1.1  mjacob 		return (1);
    130  1.1  mjacob 	}
    131  1.1  mjacob 	if (optrp)
    132  1.1  mjacob 		*optrp = optr;
    133  1.1  mjacob 	if (iptrp)
    134  1.1  mjacob 		*iptrp = iptr;
    135  1.1  mjacob 	return (0);
    136  1.1  mjacob }
    137  1.1  mjacob 
    138  1.1  mjacob #define	TBA	(4 * (((QENTRY_LEN >> 2) * 3) + 1) + 1)
    139  1.1  mjacob void
    140  1.1  mjacob isp_print_qentry(ispsoftc_t *isp, char *msg, int idx, void *arg)
    141  1.1  mjacob {
    142  1.1  mjacob 	char buf[TBA];
    143  1.1  mjacob 	int amt, i, j;
    144  1.1  mjacob 	uint8_t *ptr = arg;
    145  1.1  mjacob 
    146  1.1  mjacob 	isp_prt(isp, ISP_LOGALL, "%s index %d=>", msg, idx);
    147  1.1  mjacob 	for (buf[0] = 0, amt = i = 0; i < 4; i++) {
    148  1.1  mjacob 		buf[0] = 0;
    149  1.1  mjacob 		SNPRINTF(buf, TBA, "  ");
    150  1.1  mjacob 		for (j = 0; j < (QENTRY_LEN >> 2); j++) {
    151  1.1  mjacob 			SNPRINTF(buf, TBA, "%s %02x", buf, ptr[amt++] & 0xff);
    152  1.1  mjacob 		}
    153  1.1  mjacob 		isp_prt(isp, ISP_LOGALL, buf);
    154  1.1  mjacob 	}
    155  1.1  mjacob }
    156  1.1  mjacob 
    157  1.1  mjacob void
    158  1.1  mjacob isp_print_bytes(ispsoftc_t *isp, const char *msg, int amt, void *arg)
    159  1.1  mjacob {
    160  1.1  mjacob 	char buf[128];
    161  1.1  mjacob 	uint8_t *ptr = arg;
    162  1.1  mjacob 	int off;
    163  1.1  mjacob 
    164  1.1  mjacob 	if (msg)
    165  1.1  mjacob 		isp_prt(isp, ISP_LOGALL, "%s:", msg);
    166  1.1  mjacob 	off = 0;
    167  1.1  mjacob 	buf[0] = 0;
    168  1.1  mjacob 	while (off < amt) {
    169  1.1  mjacob 		int j, to;
    170  1.1  mjacob 		to = off;
    171  1.1  mjacob 		for (j = 0; j < 16; j++) {
    172  1.1  mjacob 			SNPRINTF(buf, 128, "%s %02x", buf, ptr[off++] & 0xff);
    173  1.1  mjacob 			if (off == amt)
    174  1.1  mjacob 				break;
    175  1.1  mjacob 		}
    176  1.1  mjacob 		isp_prt(isp, ISP_LOGALL, "0x%08x:%s", to, buf);
    177  1.1  mjacob 		buf[0] = 0;
    178  1.1  mjacob 	}
    179  1.1  mjacob }
    180  1.1  mjacob 
    181  1.1  mjacob /*
    182  1.1  mjacob  * Do the common path to try and ensure that link is up, we've scanned
    183  1.1  mjacob  * the fabric (if we're on a fabric), and that we've synchronized this
    184  1.1  mjacob  * all with our own database and done the appropriate logins.
    185  1.1  mjacob  *
    186  1.1  mjacob  * We repeatedly check for firmware state and loop state after each
    187  1.1  mjacob  * action because things may have changed while we were doing this.
    188  1.1  mjacob  * Any failure or change of state causes us to return a nonzero value.
    189  1.1  mjacob  *
    190  1.1  mjacob  * We assume we enter here with any locks held.
    191  1.1  mjacob  */
    192  1.1  mjacob 
    193  1.1  mjacob int
    194  1.3  mjacob isp_fc_runstate(ispsoftc_t *isp, int chan, int tval)
    195  1.1  mjacob {
    196  1.1  mjacob 	fcparam *fcp;
    197  1.1  mjacob 
    198  1.3  mjacob 	fcp = FCPARAM(isp, chan);
    199  1.3  mjacob         if (fcp->role == ISP_ROLE_NONE) {
    200  1.1  mjacob 		return (0);
    201  1.1  mjacob 	}
    202  1.1  mjacob 	if (fcp->isp_fwstate < FW_READY ||
    203  1.1  mjacob 	    fcp->isp_loopstate < LOOP_PDB_RCVD) {
    204  1.3  mjacob 		if (isp_control(isp, ISPCTL_FCLINK_TEST, chan, tval) != 0) {
    205  1.1  mjacob 			isp_prt(isp, ISP_LOGSANCFG,
    206  1.3  mjacob 			    "isp_fc_runstate: linktest failed for channel %d",
    207  1.3  mjacob 			    chan);
    208  1.1  mjacob 			return (-1);
    209  1.1  mjacob 		}
    210  1.1  mjacob 		if (fcp->isp_fwstate != FW_READY ||
    211  1.1  mjacob 		    fcp->isp_loopstate < LOOP_PDB_RCVD) {
    212  1.1  mjacob 			isp_prt(isp, ISP_LOGSANCFG,
    213  1.3  mjacob 			    "isp_fc_runstate: f/w not ready for channel %d",
    214  1.3  mjacob 			    chan);
    215  1.1  mjacob 			return (-1);
    216  1.1  mjacob 		}
    217  1.1  mjacob 	}
    218  1.3  mjacob 
    219  1.3  mjacob 	if ((fcp->role & ISP_ROLE_INITIATOR) == 0) {
    220  1.1  mjacob 		return (0);
    221  1.1  mjacob 	}
    222  1.3  mjacob 
    223  1.3  mjacob 	if (isp_control(isp, ISPCTL_SCAN_LOOP, chan) != 0) {
    224  1.1  mjacob 		isp_prt(isp, ISP_LOGSANCFG,
    225  1.3  mjacob 		    "isp_fc_runstate: scan loop fails on channel %d", chan);
    226  1.1  mjacob 		return (LOOP_PDB_RCVD);
    227  1.1  mjacob 	}
    228  1.3  mjacob 	if (isp_control(isp, ISPCTL_SCAN_FABRIC, chan) != 0) {
    229  1.1  mjacob 		isp_prt(isp, ISP_LOGSANCFG,
    230  1.3  mjacob 		    "isp_fc_runstate: scan fabric fails on channel %d", chan);
    231  1.1  mjacob 		return (LOOP_LSCAN_DONE);
    232  1.1  mjacob 	}
    233  1.3  mjacob 	if (isp_control(isp, ISPCTL_PDB_SYNC, chan) != 0) {
    234  1.3  mjacob 		isp_prt(isp, ISP_LOGSANCFG,
    235  1.3  mjacob 		    "isp_fc_runstate: pdb_sync fails on channel %d", chan);
    236  1.1  mjacob 		return (LOOP_FSCAN_DONE);
    237  1.1  mjacob 	}
    238  1.1  mjacob 	if (fcp->isp_fwstate != FW_READY || fcp->isp_loopstate != LOOP_READY) {
    239  1.1  mjacob 		isp_prt(isp, ISP_LOGSANCFG,
    240  1.3  mjacob 		    "isp_fc_runstate: f/w not ready again on channel %d", chan);
    241  1.1  mjacob 		return (-1);
    242  1.1  mjacob 	}
    243  1.1  mjacob 	return (0);
    244  1.1  mjacob }
    245  1.1  mjacob 
    246  1.1  mjacob /*
    247  1.3  mjacob  * Fibre Channel Support routines
    248  1.1  mjacob  */
    249  1.1  mjacob void
    250  1.3  mjacob isp_dump_portdb(ispsoftc_t *isp, int chan)
    251  1.1  mjacob {
    252  1.3  mjacob 	fcparam *fcp = FCPARAM(isp, chan);
    253  1.1  mjacob 	int i;
    254  1.1  mjacob 
    255  1.1  mjacob 	for (i = 0; i < MAX_FC_TARG; i++) {
    256  1.1  mjacob 		char mb[4];
    257  1.1  mjacob 		const char *dbs[8] = {
    258  1.1  mjacob 			"NIL ",
    259  1.1  mjacob 			"PROB",
    260  1.1  mjacob 			"DEAD",
    261  1.1  mjacob 			"CHGD",
    262  1.1  mjacob 			"NEW ",
    263  1.1  mjacob 			"PVLD",
    264  1.1  mjacob 			"ZOMB",
    265  1.1  mjacob 			"VLD "
    266  1.1  mjacob 		};
    267  1.1  mjacob 		const char *roles[4] = {
    268  1.1  mjacob 			" UNK", " TGT", " INI", "TINI"
    269  1.1  mjacob 		};
    270  1.1  mjacob 		fcportdb_t *lp = &fcp->portdb[i];
    271  1.1  mjacob 
    272  1.1  mjacob 		if (lp->state == FC_PORTDB_STATE_NIL) {
    273  1.1  mjacob 			continue;
    274  1.1  mjacob 		}
    275  1.1  mjacob 		if (lp->ini_map_idx) {
    276  1.1  mjacob 			SNPRINTF(mb, sizeof (mb), "%3d",
    277  1.1  mjacob 			    ((int) lp->ini_map_idx) - 1);
    278  1.1  mjacob 		} else {
    279  1.1  mjacob 			SNPRINTF(mb, sizeof (mb), "---");
    280  1.1  mjacob 		}
    281  1.3  mjacob 		isp_prt(isp, ISP_LOGALL, "Chan %d [%d]: hdl 0x%x %s al%d tgt %s"
    282  1.3  mjacob 		    " %s 0x%06x =>%s 0x%06x; WWNN 0x%08x%08x WWPN 0x%08x%08x",
    283  1.3  mjacob 		    chan, i, lp->handle, dbs[lp->state], lp->autologin, mb,
    284  1.1  mjacob 		    roles[lp->roles], lp->portid,
    285  1.1  mjacob 		    roles[lp->new_roles], lp->new_portid,
    286  1.1  mjacob 		    (uint32_t) (lp->node_wwn >> 32),
    287  1.1  mjacob 		    (uint32_t) (lp->node_wwn),
    288  1.1  mjacob 		    (uint32_t) (lp->port_wwn >> 32),
    289  1.1  mjacob 		    (uint32_t) (lp->port_wwn));
    290  1.1  mjacob 	}
    291  1.1  mjacob }
    292  1.1  mjacob 
    293  1.1  mjacob void
    294  1.1  mjacob isp_shutdown(ispsoftc_t *isp)
    295  1.1  mjacob {
    296  1.1  mjacob 	if (IS_FC(isp)) {
    297  1.1  mjacob 		if (IS_24XX(isp)) {
    298  1.1  mjacob 			ISP_WRITE(isp, BIU2400_ICR, 0);
    299  1.1  mjacob 			ISP_WRITE(isp, BIU2400_HCCR, HCCR_2400_CMD_PAUSE);
    300  1.1  mjacob 		} else {
    301  1.1  mjacob 			ISP_WRITE(isp, BIU_ICR, 0);
    302  1.1  mjacob 			ISP_WRITE(isp, HCCR, HCCR_CMD_PAUSE);
    303  1.1  mjacob 			ISP_WRITE(isp, BIU2100_CSR, BIU2100_FPM0_REGS);
    304  1.1  mjacob 			ISP_WRITE(isp, FPM_DIAG_CONFIG, FPM_SOFT_RESET);
    305  1.1  mjacob 			ISP_WRITE(isp, BIU2100_CSR, BIU2100_FB_REGS);
    306  1.1  mjacob 			ISP_WRITE(isp, FBM_CMD, FBMCMD_FIFO_RESET_ALL);
    307  1.1  mjacob 			ISP_WRITE(isp, BIU2100_CSR, BIU2100_RISC_REGS);
    308  1.1  mjacob 		}
    309  1.1  mjacob 	} else {
    310  1.1  mjacob 		ISP_WRITE(isp, BIU_ICR, 0);
    311  1.1  mjacob 		ISP_WRITE(isp, HCCR, HCCR_CMD_PAUSE);
    312  1.1  mjacob 	}
    313  1.1  mjacob }
    314  1.1  mjacob 
    315  1.1  mjacob /*
    316  1.1  mjacob  * Functions to move stuff to a form that the QLogic RISC engine understands
    317  1.1  mjacob  * and functions to move stuff back to a form the processor understands.
    318  1.1  mjacob  *
    319  1.1  mjacob  * Each platform is required to provide the 8, 16 and 32 bit
    320  1.1  mjacob  * swizzle and unswizzle macros (ISP_IOX{PUT|GET}_{8,16,32})
    321  1.1  mjacob  *
    322  1.1  mjacob  * The assumption is that swizzling and unswizzling is mostly done 'in place'
    323  1.1  mjacob  * (with a few exceptions for efficiency).
    324  1.1  mjacob  */
    325  1.1  mjacob 
    326  1.1  mjacob #define	ISP_IS_SBUS(isp)	\
    327  1.1  mjacob 	(ISP_SBUS_SUPPORTED && (isp)->isp_bustype == ISP_BT_SBUS)
    328  1.1  mjacob 
    329  1.1  mjacob #define	ASIZE(x)	(sizeof (x) / sizeof (x[0]))
    330  1.1  mjacob /*
    331  1.1  mjacob  * Swizzle/Copy Functions
    332  1.1  mjacob  */
    333  1.1  mjacob void
    334  1.1  mjacob isp_put_hdr(ispsoftc_t *isp, isphdr_t *hpsrc, isphdr_t *hpdst)
    335  1.1  mjacob {
    336  1.1  mjacob 	if (ISP_IS_SBUS(isp)) {
    337  1.1  mjacob 		ISP_IOXPUT_8(isp, hpsrc->rqs_entry_type,
    338  1.1  mjacob 		    &hpdst->rqs_entry_count);
    339  1.1  mjacob 		ISP_IOXPUT_8(isp, hpsrc->rqs_entry_count,
    340  1.1  mjacob 		    &hpdst->rqs_entry_type);
    341  1.1  mjacob 		ISP_IOXPUT_8(isp, hpsrc->rqs_seqno,
    342  1.1  mjacob 		    &hpdst->rqs_flags);
    343  1.1  mjacob 		ISP_IOXPUT_8(isp, hpsrc->rqs_flags,
    344  1.1  mjacob 		    &hpdst->rqs_seqno);
    345  1.1  mjacob 	} else {
    346  1.1  mjacob 		ISP_IOXPUT_8(isp, hpsrc->rqs_entry_type,
    347  1.1  mjacob 		    &hpdst->rqs_entry_type);
    348  1.1  mjacob 		ISP_IOXPUT_8(isp, hpsrc->rqs_entry_count,
    349  1.1  mjacob 		    &hpdst->rqs_entry_count);
    350  1.1  mjacob 		ISP_IOXPUT_8(isp, hpsrc->rqs_seqno,
    351  1.1  mjacob 		    &hpdst->rqs_seqno);
    352  1.1  mjacob 		ISP_IOXPUT_8(isp, hpsrc->rqs_flags,
    353  1.1  mjacob 		    &hpdst->rqs_flags);
    354  1.1  mjacob 	}
    355  1.1  mjacob }
    356  1.1  mjacob 
    357  1.1  mjacob void
    358  1.1  mjacob isp_get_hdr(ispsoftc_t *isp, isphdr_t *hpsrc, isphdr_t *hpdst)
    359  1.1  mjacob {
    360  1.1  mjacob 	if (ISP_IS_SBUS(isp)) {
    361  1.1  mjacob 		ISP_IOXGET_8(isp, &hpsrc->rqs_entry_type,
    362  1.1  mjacob 		    hpdst->rqs_entry_count);
    363  1.1  mjacob 		ISP_IOXGET_8(isp, &hpsrc->rqs_entry_count,
    364  1.1  mjacob 		    hpdst->rqs_entry_type);
    365  1.1  mjacob 		ISP_IOXGET_8(isp, &hpsrc->rqs_seqno,
    366  1.1  mjacob 		    hpdst->rqs_flags);
    367  1.1  mjacob 		ISP_IOXGET_8(isp, &hpsrc->rqs_flags,
    368  1.1  mjacob 		    hpdst->rqs_seqno);
    369  1.1  mjacob 	} else {
    370  1.1  mjacob 		ISP_IOXGET_8(isp, &hpsrc->rqs_entry_type,
    371  1.1  mjacob 		    hpdst->rqs_entry_type);
    372  1.1  mjacob 		ISP_IOXGET_8(isp, &hpsrc->rqs_entry_count,
    373  1.1  mjacob 		    hpdst->rqs_entry_count);
    374  1.1  mjacob 		ISP_IOXGET_8(isp, &hpsrc->rqs_seqno,
    375  1.1  mjacob 		    hpdst->rqs_seqno);
    376  1.1  mjacob 		ISP_IOXGET_8(isp, &hpsrc->rqs_flags,
    377  1.1  mjacob 		    hpdst->rqs_flags);
    378  1.1  mjacob 	}
    379  1.1  mjacob }
    380  1.1  mjacob 
    381  1.1  mjacob int
    382  1.1  mjacob isp_get_response_type(ispsoftc_t *isp, isphdr_t *hp)
    383  1.1  mjacob {
    384  1.1  mjacob 	uint8_t type;
    385  1.1  mjacob 	if (ISP_IS_SBUS(isp)) {
    386  1.1  mjacob 		ISP_IOXGET_8(isp, &hp->rqs_entry_count, type);
    387  1.1  mjacob 	} else {
    388  1.1  mjacob 		ISP_IOXGET_8(isp, &hp->rqs_entry_type, type);
    389  1.1  mjacob 	}
    390  1.1  mjacob 	return ((int)type);
    391  1.1  mjacob }
    392  1.1  mjacob 
    393  1.1  mjacob void
    394  1.1  mjacob isp_put_request(ispsoftc_t *isp, ispreq_t *rqsrc, ispreq_t *rqdst)
    395  1.1  mjacob {
    396  1.1  mjacob 	int i;
    397  1.1  mjacob 	isp_put_hdr(isp, &rqsrc->req_header, &rqdst->req_header);
    398  1.1  mjacob 	ISP_IOXPUT_32(isp, rqsrc->req_handle, &rqdst->req_handle);
    399  1.1  mjacob 	if (ISP_IS_SBUS(isp)) {
    400  1.1  mjacob 		ISP_IOXPUT_8(isp, rqsrc->req_lun_trn, &rqdst->req_target);
    401  1.1  mjacob 		ISP_IOXPUT_8(isp, rqsrc->req_target, &rqdst->req_lun_trn);
    402  1.1  mjacob 	} else {
    403  1.1  mjacob 		ISP_IOXPUT_8(isp, rqsrc->req_lun_trn, &rqdst->req_lun_trn);
    404  1.1  mjacob 		ISP_IOXPUT_8(isp, rqsrc->req_target, &rqdst->req_target);
    405  1.1  mjacob 	}
    406  1.1  mjacob 	ISP_IOXPUT_16(isp, rqsrc->req_cdblen, &rqdst->req_cdblen);
    407  1.1  mjacob 	ISP_IOXPUT_16(isp, rqsrc->req_flags, &rqdst->req_flags);
    408  1.1  mjacob 	ISP_IOXPUT_16(isp, rqsrc->req_time, &rqdst->req_time);
    409  1.1  mjacob 	ISP_IOXPUT_16(isp, rqsrc->req_seg_count, &rqdst->req_seg_count);
    410  1.1  mjacob 	for (i = 0; i < ASIZE(rqsrc->req_cdb); i++) {
    411  1.1  mjacob 		ISP_IOXPUT_8(isp, rqsrc->req_cdb[i], &rqdst->req_cdb[i]);
    412  1.1  mjacob 	}
    413  1.1  mjacob 	for (i = 0; i < ISP_RQDSEG; i++) {
    414  1.1  mjacob 		ISP_IOXPUT_32(isp, rqsrc->req_dataseg[i].ds_base,
    415  1.1  mjacob 		    &rqdst->req_dataseg[i].ds_base);
    416  1.1  mjacob 		ISP_IOXPUT_32(isp, rqsrc->req_dataseg[i].ds_count,
    417  1.1  mjacob 		    &rqdst->req_dataseg[i].ds_count);
    418  1.1  mjacob 	}
    419  1.1  mjacob }
    420  1.1  mjacob 
    421  1.1  mjacob void
    422  1.1  mjacob isp_put_marker(ispsoftc_t *isp, isp_marker_t *src, isp_marker_t *dst)
    423  1.1  mjacob {
    424  1.1  mjacob 	int i;
    425  1.1  mjacob 	isp_put_hdr(isp, &src->mrk_header, &dst->mrk_header);
    426  1.1  mjacob 	ISP_IOXPUT_32(isp, src->mrk_handle, &dst->mrk_handle);
    427  1.1  mjacob 	if (ISP_IS_SBUS(isp)) {
    428  1.1  mjacob 		ISP_IOXPUT_8(isp, src->mrk_reserved0, &dst->mrk_target);
    429  1.1  mjacob 		ISP_IOXPUT_8(isp, src->mrk_target, &dst->mrk_reserved0);
    430  1.1  mjacob 	} else {
    431  1.1  mjacob 		ISP_IOXPUT_8(isp, src->mrk_reserved0, &dst->mrk_reserved0);
    432  1.1  mjacob 		ISP_IOXPUT_8(isp, src->mrk_target, &dst->mrk_target);
    433  1.1  mjacob 	}
    434  1.1  mjacob 	ISP_IOXPUT_16(isp, src->mrk_modifier, &dst->mrk_modifier);
    435  1.1  mjacob 	ISP_IOXPUT_16(isp, src->mrk_flags, &dst->mrk_flags);
    436  1.1  mjacob 	ISP_IOXPUT_16(isp, src->mrk_lun, &dst->mrk_lun);
    437  1.1  mjacob 	for (i = 0; i < ASIZE(src->mrk_reserved1); i++) {
    438  1.1  mjacob 		ISP_IOXPUT_8(isp, src->mrk_reserved1[i],
    439  1.1  mjacob 		    &dst->mrk_reserved1[i]);
    440  1.1  mjacob 	}
    441  1.1  mjacob }
    442  1.1  mjacob 
    443  1.1  mjacob void
    444  1.1  mjacob isp_put_marker_24xx(ispsoftc_t *isp,
    445  1.1  mjacob     isp_marker_24xx_t *src, isp_marker_24xx_t *dst)
    446  1.1  mjacob {
    447  1.1  mjacob 	int i;
    448  1.1  mjacob 	isp_put_hdr(isp, &src->mrk_header, &dst->mrk_header);
    449  1.1  mjacob 	ISP_IOXPUT_32(isp, src->mrk_handle, &dst->mrk_handle);
    450  1.1  mjacob 	ISP_IOXPUT_16(isp, src->mrk_nphdl, &dst->mrk_nphdl);
    451  1.1  mjacob 	ISP_IOXPUT_8(isp, src->mrk_modifier, &dst->mrk_modifier);
    452  1.1  mjacob 	ISP_IOXPUT_8(isp, src->mrk_reserved0, &dst->mrk_reserved0);
    453  1.1  mjacob 	ISP_IOXPUT_8(isp, src->mrk_reserved1, &dst->mrk_reserved1);
    454  1.1  mjacob 	ISP_IOXPUT_8(isp, src->mrk_vphdl, &dst->mrk_vphdl);
    455  1.1  mjacob 	ISP_IOXPUT_8(isp, src->mrk_reserved2, &dst->mrk_reserved2);
    456  1.1  mjacob 	for (i = 0; i < ASIZE(src->mrk_lun); i++) {
    457  1.1  mjacob 		ISP_IOXPUT_8(isp, src->mrk_lun[i], &dst->mrk_lun[i]);
    458  1.1  mjacob 	}
    459  1.1  mjacob 	for (i = 0; i < ASIZE(src->mrk_reserved3); i++) {
    460  1.1  mjacob 		ISP_IOXPUT_8(isp, src->mrk_reserved3[i],
    461  1.1  mjacob 		    &dst->mrk_reserved3[i]);
    462  1.1  mjacob 	}
    463  1.1  mjacob }
    464  1.1  mjacob 
    465  1.1  mjacob void
    466  1.1  mjacob isp_put_request_t2(ispsoftc_t *isp, ispreqt2_t *src, ispreqt2_t *dst)
    467  1.1  mjacob {
    468  1.1  mjacob 	int i;
    469  1.1  mjacob 	isp_put_hdr(isp, &src->req_header, &dst->req_header);
    470  1.1  mjacob 	ISP_IOXPUT_32(isp, src->req_handle, &dst->req_handle);
    471  1.1  mjacob 	ISP_IOXPUT_8(isp, src->req_lun_trn, &dst->req_lun_trn);
    472  1.1  mjacob 	ISP_IOXPUT_8(isp, src->req_target, &dst->req_target);
    473  1.1  mjacob 	ISP_IOXPUT_16(isp, src->req_scclun, &dst->req_scclun);
    474  1.1  mjacob 	ISP_IOXPUT_16(isp, src->req_flags,  &dst->req_flags);
    475  1.1  mjacob 	ISP_IOXPUT_16(isp, src->req_reserved, &dst->req_reserved);
    476  1.1  mjacob 	ISP_IOXPUT_16(isp, src->req_time, &dst->req_time);
    477  1.1  mjacob 	ISP_IOXPUT_16(isp, src->req_seg_count, &dst->req_seg_count);
    478  1.1  mjacob 	for (i = 0; i < ASIZE(src->req_cdb); i++) {
    479  1.1  mjacob 		ISP_IOXPUT_8(isp, src->req_cdb[i], &dst->req_cdb[i]);
    480  1.1  mjacob 	}
    481  1.1  mjacob 	ISP_IOXPUT_32(isp, src->req_totalcnt, &dst->req_totalcnt);
    482  1.1  mjacob 	for (i = 0; i < ISP_RQDSEG_T2; i++) {
    483  1.1  mjacob 		ISP_IOXPUT_32(isp, src->req_dataseg[i].ds_base,
    484  1.1  mjacob 		    &dst->req_dataseg[i].ds_base);
    485  1.1  mjacob 		ISP_IOXPUT_32(isp, src->req_dataseg[i].ds_count,
    486  1.1  mjacob 		    &dst->req_dataseg[i].ds_count);
    487  1.1  mjacob 	}
    488  1.1  mjacob }
    489  1.1  mjacob 
    490  1.1  mjacob void
    491  1.1  mjacob isp_put_request_t2e(ispsoftc_t *isp, ispreqt2e_t *src, ispreqt2e_t *dst)
    492  1.1  mjacob {
    493  1.1  mjacob 	int i;
    494  1.1  mjacob 	isp_put_hdr(isp, &src->req_header, &dst->req_header);
    495  1.1  mjacob 	ISP_IOXPUT_32(isp, src->req_handle, &dst->req_handle);
    496  1.1  mjacob 	ISP_IOXPUT_16(isp, src->req_target, &dst->req_target);
    497  1.1  mjacob 	ISP_IOXPUT_16(isp, src->req_scclun, &dst->req_scclun);
    498  1.1  mjacob 	ISP_IOXPUT_16(isp, src->req_flags,  &dst->req_flags);
    499  1.1  mjacob 	ISP_IOXPUT_16(isp, src->req_reserved, &dst->req_reserved);
    500  1.1  mjacob 	ISP_IOXPUT_16(isp, src->req_time, &dst->req_time);
    501  1.1  mjacob 	ISP_IOXPUT_16(isp, src->req_seg_count, &dst->req_seg_count);
    502  1.1  mjacob 	for (i = 0; i < ASIZE(src->req_cdb); i++) {
    503  1.1  mjacob 		ISP_IOXPUT_8(isp, src->req_cdb[i], &dst->req_cdb[i]);
    504  1.1  mjacob 	}
    505  1.1  mjacob 	ISP_IOXPUT_32(isp, src->req_totalcnt, &dst->req_totalcnt);
    506  1.1  mjacob 	for (i = 0; i < ISP_RQDSEG_T2; i++) {
    507  1.1  mjacob 		ISP_IOXPUT_32(isp, src->req_dataseg[i].ds_base,
    508  1.1  mjacob 		    &dst->req_dataseg[i].ds_base);
    509  1.1  mjacob 		ISP_IOXPUT_32(isp, src->req_dataseg[i].ds_count,
    510  1.1  mjacob 		    &dst->req_dataseg[i].ds_count);
    511  1.1  mjacob 	}
    512  1.1  mjacob }
    513  1.1  mjacob 
    514  1.1  mjacob void
    515  1.1  mjacob isp_put_request_t3(ispsoftc_t *isp, ispreqt3_t *src, ispreqt3_t *dst)
    516  1.1  mjacob {
    517  1.1  mjacob 	int i;
    518  1.1  mjacob 	isp_put_hdr(isp, &src->req_header, &dst->req_header);
    519  1.1  mjacob 	ISP_IOXPUT_32(isp, src->req_handle, &dst->req_handle);
    520  1.1  mjacob 	ISP_IOXPUT_8(isp, src->req_lun_trn, &dst->req_lun_trn);
    521  1.1  mjacob 	ISP_IOXPUT_8(isp, src->req_target, &dst->req_target);
    522  1.1  mjacob 	ISP_IOXPUT_16(isp, src->req_scclun, &dst->req_scclun);
    523  1.1  mjacob 	ISP_IOXPUT_16(isp, src->req_flags,  &dst->req_flags);
    524  1.1  mjacob 	ISP_IOXPUT_16(isp, src->req_reserved, &dst->req_reserved);
    525  1.1  mjacob 	ISP_IOXPUT_16(isp, src->req_time, &dst->req_time);
    526  1.1  mjacob 	ISP_IOXPUT_16(isp, src->req_seg_count, &dst->req_seg_count);
    527  1.1  mjacob 	for (i = 0; i < ASIZE(src->req_cdb); i++) {
    528  1.1  mjacob 		ISP_IOXPUT_8(isp, src->req_cdb[i], &dst->req_cdb[i]);
    529  1.1  mjacob 	}
    530  1.1  mjacob 	ISP_IOXPUT_32(isp, src->req_totalcnt, &dst->req_totalcnt);
    531  1.1  mjacob 	for (i = 0; i < ISP_RQDSEG_T3; i++) {
    532  1.1  mjacob 		ISP_IOXPUT_32(isp, src->req_dataseg[i].ds_base,
    533  1.1  mjacob 		    &dst->req_dataseg[i].ds_base);
    534  1.1  mjacob 		ISP_IOXPUT_32(isp, src->req_dataseg[i].ds_basehi,
    535  1.1  mjacob 		    &dst->req_dataseg[i].ds_basehi);
    536  1.1  mjacob 		ISP_IOXPUT_32(isp, src->req_dataseg[i].ds_count,
    537  1.1  mjacob 		    &dst->req_dataseg[i].ds_count);
    538  1.1  mjacob 	}
    539  1.1  mjacob }
    540  1.1  mjacob 
    541  1.1  mjacob void
    542  1.1  mjacob isp_put_request_t3e(ispsoftc_t *isp, ispreqt3e_t *src, ispreqt3e_t *dst)
    543  1.1  mjacob {
    544  1.1  mjacob 	int i;
    545  1.1  mjacob 	isp_put_hdr(isp, &src->req_header, &dst->req_header);
    546  1.1  mjacob 	ISP_IOXPUT_32(isp, src->req_handle, &dst->req_handle);
    547  1.1  mjacob 	ISP_IOXPUT_16(isp, src->req_target, &dst->req_target);
    548  1.1  mjacob 	ISP_IOXPUT_16(isp, src->req_scclun, &dst->req_scclun);
    549  1.1  mjacob 	ISP_IOXPUT_16(isp, src->req_flags,  &dst->req_flags);
    550  1.1  mjacob 	ISP_IOXPUT_16(isp, src->req_reserved, &dst->req_reserved);
    551  1.1  mjacob 	ISP_IOXPUT_16(isp, src->req_time, &dst->req_time);
    552  1.1  mjacob 	ISP_IOXPUT_16(isp, src->req_seg_count, &dst->req_seg_count);
    553  1.1  mjacob 	for (i = 0; i < ASIZE(src->req_cdb); i++) {
    554  1.1  mjacob 		ISP_IOXPUT_8(isp, src->req_cdb[i], &dst->req_cdb[i]);
    555  1.1  mjacob 	}
    556  1.1  mjacob 	ISP_IOXPUT_32(isp, src->req_totalcnt, &dst->req_totalcnt);
    557  1.1  mjacob 	for (i = 0; i < ISP_RQDSEG_T3; i++) {
    558  1.1  mjacob 		ISP_IOXPUT_32(isp, src->req_dataseg[i].ds_base,
    559  1.1  mjacob 		    &dst->req_dataseg[i].ds_base);
    560  1.1  mjacob 		ISP_IOXPUT_32(isp, src->req_dataseg[i].ds_basehi,
    561  1.1  mjacob 		    &dst->req_dataseg[i].ds_basehi);
    562  1.1  mjacob 		ISP_IOXPUT_32(isp, src->req_dataseg[i].ds_count,
    563  1.1  mjacob 		    &dst->req_dataseg[i].ds_count);
    564  1.1  mjacob 	}
    565  1.1  mjacob }
    566  1.1  mjacob 
    567  1.1  mjacob void
    568  1.1  mjacob isp_put_extended_request(ispsoftc_t *isp, ispextreq_t *src, ispextreq_t *dst)
    569  1.1  mjacob {
    570  1.1  mjacob 	int i;
    571  1.1  mjacob 	isp_put_hdr(isp, &src->req_header, &dst->req_header);
    572  1.1  mjacob 	ISP_IOXPUT_32(isp, src->req_handle, &dst->req_handle);
    573  1.1  mjacob 	if (ISP_IS_SBUS(isp)) {
    574  1.1  mjacob 		ISP_IOXPUT_8(isp, src->req_lun_trn, &dst->req_target);
    575  1.1  mjacob 		ISP_IOXPUT_8(isp, src->req_target, &dst->req_lun_trn);
    576  1.1  mjacob 	} else {
    577  1.1  mjacob 		ISP_IOXPUT_8(isp, src->req_lun_trn, &dst->req_lun_trn);
    578  1.1  mjacob 		ISP_IOXPUT_8(isp, src->req_target, &dst->req_target);
    579  1.1  mjacob 	}
    580  1.1  mjacob 	ISP_IOXPUT_16(isp, src->req_cdblen, &dst->req_cdblen);
    581  1.1  mjacob 	ISP_IOXPUT_16(isp, src->req_flags, &dst->req_flags);
    582  1.1  mjacob 	ISP_IOXPUT_16(isp, src->req_time, &dst->req_time);
    583  1.1  mjacob 	ISP_IOXPUT_16(isp, src->req_seg_count, &dst->req_seg_count);
    584  1.1  mjacob 	for (i = 0; i < ASIZE(src->req_cdb); i++) {
    585  1.1  mjacob 		ISP_IOXPUT_8(isp, src->req_cdb[i], &dst->req_cdb[i]);
    586  1.1  mjacob 	}
    587  1.1  mjacob }
    588  1.1  mjacob 
    589  1.1  mjacob void
    590  1.1  mjacob isp_put_request_t7(ispsoftc_t *isp, ispreqt7_t *src, ispreqt7_t *dst)
    591  1.1  mjacob {
    592  1.1  mjacob 	int i;
    593  1.1  mjacob 	uint32_t *a, *b;
    594  1.1  mjacob 
    595  1.1  mjacob 	isp_put_hdr(isp, &src->req_header, &dst->req_header);
    596  1.1  mjacob 	ISP_IOXPUT_32(isp, src->req_handle, &dst->req_handle);
    597  1.1  mjacob 	ISP_IOXPUT_16(isp, src->req_nphdl, &dst->req_nphdl);
    598  1.1  mjacob 	ISP_IOXPUT_16(isp, src->req_time, &dst->req_time);
    599  1.1  mjacob 	ISP_IOXPUT_16(isp, src->req_seg_count, &dst->req_seg_count);
    600  1.1  mjacob 	ISP_IOXPUT_16(isp, src->req_reserved, &dst->req_reserved);
    601  1.1  mjacob 	a = (uint32_t *) src->req_lun;
    602  1.1  mjacob 	b = (uint32_t *) dst->req_lun;
    603  1.1  mjacob 	for (i = 0; i < (ASIZE(src->req_lun) >> 2); i++ ) {
    604  1.2  mjacob 		*b++ = ISP_SWAP32(isp, *a++);
    605  1.1  mjacob 	}
    606  1.1  mjacob 	ISP_IOXPUT_8(isp, src->req_alen_datadir, &dst->req_alen_datadir);
    607  1.1  mjacob 	ISP_IOXPUT_8(isp, src->req_task_management, &dst->req_task_management);
    608  1.1  mjacob 	ISP_IOXPUT_8(isp, src->req_task_attribute, &dst->req_task_attribute);
    609  1.1  mjacob 	ISP_IOXPUT_8(isp, src->req_crn, &dst->req_crn);
    610  1.1  mjacob 	a = (uint32_t *) src->req_cdb;
    611  1.1  mjacob 	b = (uint32_t *) dst->req_cdb;
    612  1.2  mjacob 	for (i = 0; i < (ASIZE(src->req_cdb) >> 2); i++) {
    613  1.2  mjacob 		*b++ = ISP_SWAP32(isp, *a++);
    614  1.1  mjacob 	}
    615  1.1  mjacob 	ISP_IOXPUT_32(isp, src->req_dl, &dst->req_dl);
    616  1.1  mjacob 	ISP_IOXPUT_16(isp, src->req_tidlo, &dst->req_tidlo);
    617  1.1  mjacob 	ISP_IOXPUT_8(isp, src->req_tidhi, &dst->req_tidhi);
    618  1.1  mjacob 	ISP_IOXPUT_8(isp, src->req_vpidx, &dst->req_vpidx);
    619  1.1  mjacob 	ISP_IOXPUT_32(isp, src->req_dataseg.ds_base,
    620  1.1  mjacob 	    &dst->req_dataseg.ds_base);
    621  1.1  mjacob 	ISP_IOXPUT_32(isp, src->req_dataseg.ds_basehi,
    622  1.1  mjacob 	    &dst->req_dataseg.ds_basehi);
    623  1.1  mjacob 	ISP_IOXPUT_32(isp, src->req_dataseg.ds_count,
    624  1.1  mjacob 	    &dst->req_dataseg.ds_count);
    625  1.1  mjacob }
    626  1.1  mjacob 
    627  1.1  mjacob void
    628  1.3  mjacob isp_put_24xx_tmf(ispsoftc_t *isp, isp24xx_tmf_t *src, isp24xx_tmf_t *dst)
    629  1.3  mjacob {
    630  1.3  mjacob 	int i;
    631  1.3  mjacob 	uint32_t *a, *b;
    632  1.3  mjacob 
    633  1.3  mjacob 	isp_put_hdr(isp, &src->tmf_header, &dst->tmf_header);
    634  1.3  mjacob 	ISP_IOXPUT_32(isp, src->tmf_handle, &dst->tmf_handle);
    635  1.3  mjacob 	ISP_IOXPUT_16(isp, src->tmf_nphdl, &dst->tmf_nphdl);
    636  1.3  mjacob 	ISP_IOXPUT_16(isp, src->tmf_delay, &dst->tmf_delay);
    637  1.3  mjacob 	ISP_IOXPUT_16(isp, src->tmf_timeout, &dst->tmf_timeout);
    638  1.3  mjacob 	for (i = 0; i < ASIZE(src->tmf_reserved0); i++) {
    639  1.3  mjacob 		ISP_IOXPUT_8(isp, src->tmf_reserved0[i],
    640  1.3  mjacob 		    &dst->tmf_reserved0[i]);
    641  1.3  mjacob 	}
    642  1.3  mjacob 	a = (uint32_t *) src->tmf_lun;
    643  1.3  mjacob 	b = (uint32_t *) dst->tmf_lun;
    644  1.3  mjacob 	for (i = 0; i < (ASIZE(src->tmf_lun) >> 2); i++ ) {
    645  1.3  mjacob 		*b++ = ISP_SWAP32(isp, *a++);
    646  1.3  mjacob 	}
    647  1.3  mjacob 	ISP_IOXPUT_32(isp, src->tmf_flags, &dst->tmf_flags);
    648  1.3  mjacob 	for (i = 0; i < ASIZE(src->tmf_reserved1); i++) {
    649  1.3  mjacob 		ISP_IOXPUT_8(isp, src->tmf_reserved1[i],
    650  1.3  mjacob 		    &dst->tmf_reserved1[i]);
    651  1.3  mjacob 	}
    652  1.3  mjacob 	ISP_IOXPUT_16(isp, src->tmf_tidlo, &dst->tmf_tidlo);
    653  1.3  mjacob 	ISP_IOXPUT_8(isp, src->tmf_tidhi, &dst->tmf_tidhi);
    654  1.3  mjacob 	ISP_IOXPUT_8(isp, src->tmf_vpidx, &dst->tmf_vpidx);
    655  1.3  mjacob 	for (i = 0; i < ASIZE(src->tmf_reserved2); i++) {
    656  1.3  mjacob 		ISP_IOXPUT_8(isp, src->tmf_reserved2[i],
    657  1.3  mjacob 		    &dst->tmf_reserved2[i]);
    658  1.3  mjacob 	}
    659  1.3  mjacob }
    660  1.3  mjacob 
    661  1.3  mjacob void
    662  1.1  mjacob isp_put_24xx_abrt(ispsoftc_t *isp, isp24xx_abrt_t *src, isp24xx_abrt_t *dst)
    663  1.1  mjacob {
    664  1.1  mjacob 	int i;
    665  1.1  mjacob 	isp_put_hdr(isp, &src->abrt_header, &dst->abrt_header);
    666  1.1  mjacob 	ISP_IOXPUT_32(isp, src->abrt_handle, &dst->abrt_handle);
    667  1.1  mjacob 	ISP_IOXPUT_16(isp, src->abrt_nphdl, &dst->abrt_nphdl);
    668  1.1  mjacob 	ISP_IOXPUT_16(isp, src->abrt_options, &dst->abrt_options);
    669  1.1  mjacob 	ISP_IOXPUT_32(isp, src->abrt_cmd_handle, &dst->abrt_cmd_handle);
    670  1.1  mjacob 	for (i = 0; i < ASIZE(src->abrt_reserved); i++) {
    671  1.1  mjacob 		ISP_IOXPUT_8(isp, src->abrt_reserved[i],
    672  1.1  mjacob 		    &dst->abrt_reserved[i]);
    673  1.1  mjacob 	}
    674  1.1  mjacob 	ISP_IOXPUT_16(isp, src->abrt_tidlo, &dst->abrt_tidlo);
    675  1.1  mjacob 	ISP_IOXPUT_8(isp, src->abrt_tidhi, &dst->abrt_tidhi);
    676  1.1  mjacob 	ISP_IOXPUT_8(isp, src->abrt_vpidx, &dst->abrt_vpidx);
    677  1.1  mjacob 	for (i = 0; i < ASIZE(src->abrt_reserved1); i++) {
    678  1.1  mjacob 		ISP_IOXPUT_8(isp, src->abrt_reserved1[i],
    679  1.1  mjacob 		    &dst->abrt_reserved1[i]);
    680  1.1  mjacob 	}
    681  1.1  mjacob }
    682  1.1  mjacob 
    683  1.1  mjacob void
    684  1.1  mjacob isp_put_cont_req(ispsoftc_t *isp, ispcontreq_t *src, ispcontreq_t *dst)
    685  1.1  mjacob {
    686  1.1  mjacob 	int i;
    687  1.1  mjacob 	isp_put_hdr(isp, &src->req_header, &dst->req_header);
    688  1.1  mjacob 	for (i = 0; i < ISP_CDSEG; i++) {
    689  1.1  mjacob 		ISP_IOXPUT_32(isp, src->req_dataseg[i].ds_base,
    690  1.1  mjacob 		    &dst->req_dataseg[i].ds_base);
    691  1.1  mjacob 		ISP_IOXPUT_32(isp, src->req_dataseg[i].ds_count,
    692  1.1  mjacob 		    &dst->req_dataseg[i].ds_count);
    693  1.1  mjacob 	}
    694  1.1  mjacob }
    695  1.1  mjacob 
    696  1.1  mjacob void
    697  1.1  mjacob isp_put_cont64_req(ispsoftc_t *isp, ispcontreq64_t *src, ispcontreq64_t *dst)
    698  1.1  mjacob {
    699  1.1  mjacob 	int i;
    700  1.1  mjacob 	isp_put_hdr(isp, &src->req_header, &dst->req_header);
    701  1.1  mjacob 	for (i = 0; i < ISP_CDSEG64; i++) {
    702  1.1  mjacob 		ISP_IOXPUT_32(isp, src->req_dataseg[i].ds_base,
    703  1.1  mjacob 		    &dst->req_dataseg[i].ds_base);
    704  1.1  mjacob 		ISP_IOXPUT_32(isp, src->req_dataseg[i].ds_basehi,
    705  1.1  mjacob 		    &dst->req_dataseg[i].ds_basehi);
    706  1.1  mjacob 		ISP_IOXPUT_32(isp, src->req_dataseg[i].ds_count,
    707  1.1  mjacob 		    &dst->req_dataseg[i].ds_count);
    708  1.1  mjacob 	}
    709  1.1  mjacob }
    710  1.1  mjacob 
    711  1.1  mjacob void
    712  1.1  mjacob isp_get_response(ispsoftc_t *isp, ispstatusreq_t *src, ispstatusreq_t *dst)
    713  1.1  mjacob {
    714  1.1  mjacob 	int i;
    715  1.1  mjacob 	isp_get_hdr(isp, &src->req_header, &dst->req_header);
    716  1.1  mjacob 	ISP_IOXGET_32(isp, &src->req_handle, dst->req_handle);
    717  1.1  mjacob 	ISP_IOXGET_16(isp, &src->req_scsi_status, dst->req_scsi_status);
    718  1.1  mjacob 	ISP_IOXGET_16(isp, &src->req_completion_status,
    719  1.1  mjacob 	    dst->req_completion_status);
    720  1.1  mjacob 	ISP_IOXGET_16(isp, &src->req_state_flags, dst->req_state_flags);
    721  1.1  mjacob 	ISP_IOXGET_16(isp, &src->req_status_flags, dst->req_status_flags);
    722  1.1  mjacob 	ISP_IOXGET_16(isp, &src->req_time, dst->req_time);
    723  1.1  mjacob 	ISP_IOXGET_16(isp, &src->req_sense_len, dst->req_sense_len);
    724  1.1  mjacob 	ISP_IOXGET_32(isp, &src->req_resid, dst->req_resid);
    725  1.1  mjacob 	for (i = 0; i < 8; i++) {
    726  1.1  mjacob 		ISP_IOXGET_8(isp, &src->req_response[i],
    727  1.1  mjacob 		    dst->req_response[i]);
    728  1.1  mjacob 	}
    729  1.1  mjacob 	for (i = 0; i < 32; i++) {
    730  1.1  mjacob 		ISP_IOXGET_8(isp, &src->req_sense_data[i],
    731  1.1  mjacob 		    dst->req_sense_data[i]);
    732  1.1  mjacob 	}
    733  1.1  mjacob }
    734  1.1  mjacob 
    735  1.1  mjacob void
    736  1.1  mjacob isp_get_24xx_response(ispsoftc_t *isp, isp24xx_statusreq_t *src,
    737  1.1  mjacob     isp24xx_statusreq_t *dst)
    738  1.1  mjacob {
    739  1.1  mjacob 	int i;
    740  1.2  mjacob 	uint32_t *s, *d;
    741  1.2  mjacob 
    742  1.1  mjacob 	isp_get_hdr(isp, &src->req_header, &dst->req_header);
    743  1.1  mjacob 	ISP_IOXGET_32(isp, &src->req_handle, dst->req_handle);
    744  1.1  mjacob 	ISP_IOXGET_16(isp, &src->req_completion_status,
    745  1.1  mjacob 	    dst->req_completion_status);
    746  1.1  mjacob 	ISP_IOXGET_16(isp, &src->req_oxid, dst->req_oxid);
    747  1.1  mjacob 	ISP_IOXGET_32(isp, &src->req_resid, dst->req_resid);
    748  1.1  mjacob 	ISP_IOXGET_16(isp, &src->req_reserved0, dst->req_reserved0);
    749  1.1  mjacob 	ISP_IOXGET_16(isp, &src->req_state_flags, dst->req_state_flags);
    750  1.1  mjacob 	ISP_IOXGET_16(isp, &src->req_reserved1, dst->req_reserved1);
    751  1.1  mjacob 	ISP_IOXGET_16(isp, &src->req_scsi_status, dst->req_scsi_status);
    752  1.1  mjacob 	ISP_IOXGET_32(isp, &src->req_fcp_residual, dst->req_fcp_residual);
    753  1.1  mjacob 	ISP_IOXGET_32(isp, &src->req_sense_len, dst->req_sense_len);
    754  1.1  mjacob 	ISP_IOXGET_32(isp, &src->req_response_len, dst->req_response_len);
    755  1.2  mjacob 	s = (uint32_t *)src->req_rsp_sense;
    756  1.2  mjacob 	d = (uint32_t *)dst->req_rsp_sense;
    757  1.2  mjacob 	for (i = 0; i < (ASIZE(src->req_rsp_sense) >> 2); i++) {
    758  1.2  mjacob 		d[i] = ISP_SWAP32(isp, s[i]);
    759  1.1  mjacob 	}
    760  1.1  mjacob }
    761  1.1  mjacob 
    762  1.1  mjacob void
    763  1.1  mjacob isp_get_24xx_abrt(ispsoftc_t *isp, isp24xx_abrt_t *src, isp24xx_abrt_t *dst)
    764  1.1  mjacob {
    765  1.1  mjacob 	int i;
    766  1.1  mjacob 	isp_get_hdr(isp, &src->abrt_header, &dst->abrt_header);
    767  1.1  mjacob 	ISP_IOXGET_32(isp, &src->abrt_handle, dst->abrt_handle);
    768  1.1  mjacob 	ISP_IOXGET_16(isp, &src->abrt_nphdl, dst->abrt_nphdl);
    769  1.1  mjacob 	ISP_IOXGET_16(isp, &src->abrt_options, dst->abrt_options);
    770  1.1  mjacob 	ISP_IOXGET_32(isp, &src->abrt_cmd_handle, dst->abrt_cmd_handle);
    771  1.2  mjacob 	for (i = 0; i < ASIZE(src->abrt_reserved); i++) {
    772  1.1  mjacob 		ISP_IOXGET_8(isp, &src->abrt_reserved[i],
    773  1.1  mjacob 		    dst->abrt_reserved[i]);
    774  1.1  mjacob 	}
    775  1.1  mjacob 	ISP_IOXGET_16(isp, &src->abrt_tidlo, dst->abrt_tidlo);
    776  1.1  mjacob 	ISP_IOXGET_8(isp, &src->abrt_tidhi, dst->abrt_tidhi);
    777  1.1  mjacob 	ISP_IOXGET_8(isp, &src->abrt_vpidx, dst->abrt_vpidx);
    778  1.2  mjacob 	for (i = 0; i < ASIZE(src->abrt_reserved1); i++) {
    779  1.1  mjacob 		ISP_IOXGET_8(isp, &src->abrt_reserved1[i],
    780  1.1  mjacob 		    dst->abrt_reserved1[i]);
    781  1.1  mjacob 	}
    782  1.1  mjacob }
    783  1.1  mjacob 
    784  1.1  mjacob 
    785  1.1  mjacob void
    786  1.1  mjacob isp_get_rio2(ispsoftc_t *isp, isp_rio2_t *r2src, isp_rio2_t *r2dst)
    787  1.1  mjacob {
    788  1.1  mjacob 	int i;
    789  1.1  mjacob 	isp_get_hdr(isp, &r2src->req_header, &r2dst->req_header);
    790  1.1  mjacob 	if (r2dst->req_header.rqs_seqno > 30) {
    791  1.1  mjacob 		r2dst->req_header.rqs_seqno = 30;
    792  1.1  mjacob 	}
    793  1.1  mjacob 	for (i = 0; i < r2dst->req_header.rqs_seqno; i++) {
    794  1.1  mjacob 		ISP_IOXGET_16(isp, &r2src->req_handles[i],
    795  1.1  mjacob 		    r2dst->req_handles[i]);
    796  1.1  mjacob 	}
    797  1.1  mjacob 	while (i < 30) {
    798  1.1  mjacob 		r2dst->req_handles[i++] = 0;
    799  1.1  mjacob 	}
    800  1.1  mjacob }
    801  1.1  mjacob 
    802  1.1  mjacob void
    803  1.1  mjacob isp_put_icb(ispsoftc_t *isp, isp_icb_t *src, isp_icb_t *dst)
    804  1.1  mjacob {
    805  1.1  mjacob 	int i;
    806  1.1  mjacob 	if (ISP_IS_SBUS(isp)) {
    807  1.1  mjacob 		ISP_IOXPUT_8(isp, src->icb_version, &dst->icb_reserved0);
    808  1.1  mjacob 		ISP_IOXPUT_8(isp, src->icb_reserved0, &dst->icb_version);
    809  1.1  mjacob 	} else {
    810  1.1  mjacob 		ISP_IOXPUT_8(isp, src->icb_version, &dst->icb_version);
    811  1.1  mjacob 		ISP_IOXPUT_8(isp, src->icb_reserved0, &dst->icb_reserved0);
    812  1.1  mjacob 	}
    813  1.1  mjacob 	ISP_IOXPUT_16(isp, src->icb_fwoptions, &dst->icb_fwoptions);
    814  1.1  mjacob 	ISP_IOXPUT_16(isp, src->icb_maxfrmlen, &dst->icb_maxfrmlen);
    815  1.1  mjacob 	ISP_IOXPUT_16(isp, src->icb_maxalloc, &dst->icb_maxalloc);
    816  1.1  mjacob 	ISP_IOXPUT_16(isp, src->icb_execthrottle, &dst->icb_execthrottle);
    817  1.1  mjacob 	if (ISP_IS_SBUS(isp)) {
    818  1.1  mjacob 		ISP_IOXPUT_8(isp, src->icb_retry_count, &dst->icb_retry_delay);
    819  1.1  mjacob 		ISP_IOXPUT_8(isp, src->icb_retry_delay, &dst->icb_retry_count);
    820  1.1  mjacob 	} else {
    821  1.1  mjacob 		ISP_IOXPUT_8(isp, src->icb_retry_count, &dst->icb_retry_count);
    822  1.1  mjacob 		ISP_IOXPUT_8(isp, src->icb_retry_delay, &dst->icb_retry_delay);
    823  1.1  mjacob 	}
    824  1.1  mjacob 	for (i = 0; i < 8; i++) {
    825  1.1  mjacob 		ISP_IOXPUT_8(isp, src->icb_portname[i], &dst->icb_portname[i]);
    826  1.1  mjacob 	}
    827  1.1  mjacob 	ISP_IOXPUT_16(isp, src->icb_hardaddr, &dst->icb_hardaddr);
    828  1.1  mjacob 	if (ISP_IS_SBUS(isp)) {
    829  1.1  mjacob 		ISP_IOXPUT_8(isp, src->icb_iqdevtype, &dst->icb_logintime);
    830  1.1  mjacob 		ISP_IOXPUT_8(isp, src->icb_logintime, &dst->icb_iqdevtype);
    831  1.1  mjacob 	} else {
    832  1.1  mjacob 		ISP_IOXPUT_8(isp, src->icb_iqdevtype, &dst->icb_iqdevtype);
    833  1.1  mjacob 		ISP_IOXPUT_8(isp, src->icb_logintime, &dst->icb_logintime);
    834  1.1  mjacob 	}
    835  1.1  mjacob 	for (i = 0; i < 8; i++) {
    836  1.1  mjacob 		ISP_IOXPUT_8(isp, src->icb_nodename[i], &dst->icb_nodename[i]);
    837  1.1  mjacob 	}
    838  1.1  mjacob 	ISP_IOXPUT_16(isp, src->icb_rqstout, &dst->icb_rqstout);
    839  1.1  mjacob 	ISP_IOXPUT_16(isp, src->icb_rspnsin, &dst->icb_rspnsin);
    840  1.1  mjacob 	ISP_IOXPUT_16(isp, src->icb_rqstqlen, &dst->icb_rqstqlen);
    841  1.1  mjacob 	ISP_IOXPUT_16(isp, src->icb_rsltqlen, &dst->icb_rsltqlen);
    842  1.1  mjacob 	for (i = 0; i < 4; i++) {
    843  1.1  mjacob 		ISP_IOXPUT_16(isp, src->icb_rqstaddr[i], &dst->icb_rqstaddr[i]);
    844  1.1  mjacob 	}
    845  1.1  mjacob 	for (i = 0; i < 4; i++) {
    846  1.1  mjacob 		ISP_IOXPUT_16(isp, src->icb_respaddr[i], &dst->icb_respaddr[i]);
    847  1.1  mjacob 	}
    848  1.1  mjacob 	ISP_IOXPUT_16(isp, src->icb_lunenables, &dst->icb_lunenables);
    849  1.1  mjacob 	if (ISP_IS_SBUS(isp)) {
    850  1.1  mjacob 		ISP_IOXPUT_8(isp, src->icb_ccnt, &dst->icb_icnt);
    851  1.1  mjacob 		ISP_IOXPUT_8(isp, src->icb_icnt, &dst->icb_ccnt);
    852  1.1  mjacob 	} else {
    853  1.1  mjacob 		ISP_IOXPUT_8(isp, src->icb_ccnt, &dst->icb_ccnt);
    854  1.1  mjacob 		ISP_IOXPUT_8(isp, src->icb_icnt, &dst->icb_icnt);
    855  1.1  mjacob 	}
    856  1.1  mjacob 	ISP_IOXPUT_16(isp, src->icb_lunetimeout, &dst->icb_lunetimeout);
    857  1.1  mjacob 	ISP_IOXPUT_16(isp, src->icb_reserved1, &dst->icb_reserved1);
    858  1.1  mjacob 	ISP_IOXPUT_16(isp, src->icb_xfwoptions, &dst->icb_xfwoptions);
    859  1.1  mjacob 	if (ISP_IS_SBUS(isp)) {
    860  1.1  mjacob 		ISP_IOXPUT_8(isp, src->icb_racctimer, &dst->icb_idelaytimer);
    861  1.1  mjacob 		ISP_IOXPUT_8(isp, src->icb_idelaytimer, &dst->icb_racctimer);
    862  1.1  mjacob 	} else {
    863  1.1  mjacob 		ISP_IOXPUT_8(isp, src->icb_racctimer, &dst->icb_racctimer);
    864  1.1  mjacob 		ISP_IOXPUT_8(isp, src->icb_idelaytimer, &dst->icb_idelaytimer);
    865  1.1  mjacob 	}
    866  1.1  mjacob 	ISP_IOXPUT_16(isp, src->icb_zfwoptions, &dst->icb_zfwoptions);
    867  1.1  mjacob }
    868  1.1  mjacob 
    869  1.1  mjacob void
    870  1.1  mjacob isp_put_icb_2400(ispsoftc_t *isp, isp_icb_2400_t *src, isp_icb_2400_t *dst)
    871  1.1  mjacob {
    872  1.1  mjacob 	int i;
    873  1.1  mjacob 	ISP_IOXPUT_16(isp, src->icb_version, &dst->icb_version);
    874  1.1  mjacob 	ISP_IOXPUT_16(isp, src->icb_reserved0, &dst->icb_reserved0);
    875  1.1  mjacob 	ISP_IOXPUT_16(isp, src->icb_maxfrmlen, &dst->icb_maxfrmlen);
    876  1.1  mjacob 	ISP_IOXPUT_16(isp, src->icb_execthrottle, &dst->icb_execthrottle);
    877  1.1  mjacob 	ISP_IOXPUT_16(isp, src->icb_xchgcnt, &dst->icb_xchgcnt);
    878  1.1  mjacob 	ISP_IOXPUT_16(isp, src->icb_hardaddr, &dst->icb_hardaddr);
    879  1.1  mjacob 	for (i = 0; i < 8; i++) {
    880  1.1  mjacob 		ISP_IOXPUT_8(isp, src->icb_portname[i], &dst->icb_portname[i]);
    881  1.1  mjacob 	}
    882  1.1  mjacob 	for (i = 0; i < 8; i++) {
    883  1.1  mjacob 		ISP_IOXPUT_8(isp, src->icb_nodename[i], &dst->icb_nodename[i]);
    884  1.1  mjacob 	}
    885  1.1  mjacob 	ISP_IOXPUT_16(isp, src->icb_rspnsin, &dst->icb_rspnsin);
    886  1.1  mjacob 	ISP_IOXPUT_16(isp, src->icb_rqstout, &dst->icb_rqstout);
    887  1.1  mjacob 	ISP_IOXPUT_16(isp, src->icb_retry_count, &dst->icb_retry_count);
    888  1.1  mjacob 	ISP_IOXPUT_16(isp, src->icb_priout, &dst->icb_priout);
    889  1.1  mjacob 	ISP_IOXPUT_16(isp, src->icb_rsltqlen, &dst->icb_rsltqlen);
    890  1.1  mjacob 	ISP_IOXPUT_16(isp, src->icb_rqstqlen, &dst->icb_rqstqlen);
    891  1.1  mjacob 	ISP_IOXPUT_16(isp, src->icb_ldn_nols, &dst->icb_ldn_nols);
    892  1.1  mjacob 	ISP_IOXPUT_16(isp, src->icb_prqstqlen, &dst->icb_prqstqlen);
    893  1.1  mjacob 	for (i = 0; i < 4; i++) {
    894  1.1  mjacob 		ISP_IOXPUT_16(isp, src->icb_rqstaddr[i], &dst->icb_rqstaddr[i]);
    895  1.1  mjacob 	}
    896  1.1  mjacob 	for (i = 0; i < 4; i++) {
    897  1.1  mjacob 		ISP_IOXPUT_16(isp, src->icb_respaddr[i], &dst->icb_respaddr[i]);
    898  1.1  mjacob 	}
    899  1.1  mjacob 	for (i = 0; i < 4; i++) {
    900  1.1  mjacob 		ISP_IOXPUT_16(isp, src->icb_priaddr[i], &dst->icb_priaddr[i]);
    901  1.1  mjacob 	}
    902  1.1  mjacob 	for (i = 0; i < 4; i++) {
    903  1.1  mjacob 		ISP_IOXPUT_16(isp, src->icb_reserved1[i],
    904  1.1  mjacob 		    &dst->icb_reserved1[i]);
    905  1.1  mjacob 	}
    906  1.1  mjacob 	ISP_IOXPUT_16(isp, src->icb_atio_in, &dst->icb_atio_in);
    907  1.1  mjacob 	ISP_IOXPUT_16(isp, src->icb_atioqlen, &dst->icb_atioqlen);
    908  1.1  mjacob 	for (i = 0; i < 4; i++) {
    909  1.1  mjacob 		ISP_IOXPUT_16(isp, src->icb_atioqaddr[i],
    910  1.1  mjacob 		    &dst->icb_atioqaddr[i]);
    911  1.1  mjacob 	}
    912  1.1  mjacob 	ISP_IOXPUT_16(isp, src->icb_idelaytimer, &dst->icb_idelaytimer);
    913  1.1  mjacob 	ISP_IOXPUT_16(isp, src->icb_logintime, &dst->icb_logintime);
    914  1.1  mjacob 	ISP_IOXPUT_32(isp, src->icb_fwoptions1, &dst->icb_fwoptions1);
    915  1.1  mjacob 	ISP_IOXPUT_32(isp, src->icb_fwoptions2, &dst->icb_fwoptions2);
    916  1.1  mjacob 	ISP_IOXPUT_32(isp, src->icb_fwoptions3, &dst->icb_fwoptions3);
    917  1.1  mjacob 	for (i = 0; i < 12; i++) {
    918  1.1  mjacob 		ISP_IOXPUT_16(isp, src->icb_reserved2[i],
    919  1.1  mjacob 		    &dst->icb_reserved2[i]);
    920  1.1  mjacob 	}
    921  1.1  mjacob }
    922  1.1  mjacob 
    923  1.1  mjacob void
    924  1.3  mjacob isp_put_icb_2400_vpinfo(ispsoftc_t *isp, isp_icb_2400_vpinfo_t *src, isp_icb_2400_vpinfo_t *dst)
    925  1.3  mjacob {
    926  1.3  mjacob 	ISP_IOXPUT_16(isp, src->vp_count, &dst->vp_count);
    927  1.3  mjacob 	ISP_IOXPUT_16(isp, src->vp_global_options, &dst->vp_global_options);
    928  1.3  mjacob }
    929  1.3  mjacob 
    930  1.3  mjacob void
    931  1.3  mjacob isp_put_vp_port_info(ispsoftc_t *isp, vp_port_info_t *src, vp_port_info_t *dst)
    932  1.3  mjacob {
    933  1.3  mjacob 	int i;
    934  1.3  mjacob 	ISP_IOXPUT_16(isp, src->vp_port_status, &dst->vp_port_status);
    935  1.3  mjacob 	ISP_IOXPUT_8(isp, src->vp_port_options, &dst->vp_port_options);
    936  1.3  mjacob 	ISP_IOXPUT_8(isp, src->vp_port_loopid, &dst->vp_port_loopid);
    937  1.3  mjacob 	for (i = 0; i < 8; i++) {
    938  1.3  mjacob 		ISP_IOXPUT_8(isp, src->vp_port_portname[i], &dst->vp_port_portname[i]);
    939  1.3  mjacob 	}
    940  1.3  mjacob 	for (i = 0; i < 8; i++) {
    941  1.3  mjacob 		ISP_IOXPUT_8(isp, src->vp_port_nodename[i], &dst->vp_port_nodename[i]);
    942  1.3  mjacob 	}
    943  1.3  mjacob 	/* we never *put* portid_lo/portid_hi */
    944  1.3  mjacob }
    945  1.3  mjacob 
    946  1.3  mjacob void
    947  1.3  mjacob isp_get_vp_port_info(ispsoftc_t *isp, vp_port_info_t *src, vp_port_info_t *dst)
    948  1.3  mjacob {
    949  1.3  mjacob 	int i;
    950  1.3  mjacob 	ISP_IOXGET_16(isp, &src->vp_port_status, dst->vp_port_status);
    951  1.3  mjacob 	ISP_IOXGET_8(isp, &src->vp_port_options, dst->vp_port_options);
    952  1.3  mjacob 	ISP_IOXGET_8(isp, &src->vp_port_loopid, dst->vp_port_loopid);
    953  1.3  mjacob 	for (i = 0; i < ASIZE(src->vp_port_portname); i++) {
    954  1.3  mjacob 		ISP_IOXGET_8(isp, &src->vp_port_portname[i], dst->vp_port_portname[i]);
    955  1.3  mjacob 	}
    956  1.3  mjacob 	for (i = 0; i < ASIZE(src->vp_port_nodename); i++) {
    957  1.3  mjacob 		ISP_IOXGET_8(isp, &src->vp_port_nodename[i], dst->vp_port_nodename[i]);
    958  1.3  mjacob 	}
    959  1.3  mjacob 	ISP_IOXGET_16(isp, &src->vp_port_portid_lo, dst->vp_port_portid_lo);
    960  1.3  mjacob 	ISP_IOXGET_16(isp, &src->vp_port_portid_hi, dst->vp_port_portid_hi);
    961  1.3  mjacob }
    962  1.3  mjacob 
    963  1.3  mjacob void
    964  1.3  mjacob isp_put_vp_ctrl_info(ispsoftc_t *isp, vp_ctrl_info_t *src, vp_ctrl_info_t *dst)
    965  1.3  mjacob {
    966  1.3  mjacob 	int i;
    967  1.3  mjacob 	isp_put_hdr(isp, &src->vp_ctrl_hdr, &dst->vp_ctrl_hdr);
    968  1.3  mjacob 	ISP_IOXPUT_32(isp, src->vp_ctrl_handle, &dst->vp_ctrl_handle);
    969  1.3  mjacob 	ISP_IOXPUT_16(isp, src->vp_ctrl_index_fail, &dst->vp_ctrl_index_fail);
    970  1.3  mjacob 	ISP_IOXPUT_16(isp, src->vp_ctrl_status, &dst->vp_ctrl_status);
    971  1.3  mjacob 	ISP_IOXPUT_16(isp, src->vp_ctrl_command, &dst->vp_ctrl_command);
    972  1.3  mjacob 	ISP_IOXPUT_16(isp, src->vp_ctrl_vp_count, &dst->vp_ctrl_vp_count);
    973  1.3  mjacob 	for (i = 0; i < ASIZE(src->vp_ctrl_idmap); i++) {
    974  1.3  mjacob 		ISP_IOXPUT_16(isp, src->vp_ctrl_idmap[i], &dst->vp_ctrl_idmap[i]);
    975  1.3  mjacob 	}
    976  1.3  mjacob 	for (i = 0; i < ASIZE(src->vp_ctrl_reserved); i++) {
    977  1.3  mjacob 		ISP_IOXPUT_8(isp, src->vp_ctrl_idmap[i], &dst->vp_ctrl_idmap[i]);
    978  1.3  mjacob 	}
    979  1.3  mjacob }
    980  1.3  mjacob 
    981  1.3  mjacob void
    982  1.3  mjacob isp_get_vp_ctrl_info(ispsoftc_t *isp, vp_ctrl_info_t *src, vp_ctrl_info_t *dst)
    983  1.3  mjacob {
    984  1.3  mjacob 	int i;
    985  1.3  mjacob 	isp_get_hdr(isp, &src->vp_ctrl_hdr, &dst->vp_ctrl_hdr);
    986  1.3  mjacob 	ISP_IOXGET_32(isp, &src->vp_ctrl_handle, dst->vp_ctrl_handle);
    987  1.3  mjacob 	ISP_IOXGET_16(isp, &src->vp_ctrl_index_fail, dst->vp_ctrl_index_fail);
    988  1.3  mjacob 	ISP_IOXGET_16(isp, &src->vp_ctrl_status, dst->vp_ctrl_status);
    989  1.3  mjacob 	ISP_IOXGET_16(isp, &src->vp_ctrl_command, dst->vp_ctrl_command);
    990  1.3  mjacob 	ISP_IOXGET_16(isp, &src->vp_ctrl_vp_count, dst->vp_ctrl_vp_count);
    991  1.3  mjacob 	for (i = 0; i < ASIZE(src->vp_ctrl_idmap); i++) {
    992  1.3  mjacob 		ISP_IOXGET_16(isp, &src->vp_ctrl_idmap[i], dst->vp_ctrl_idmap[i]);
    993  1.3  mjacob 	}
    994  1.3  mjacob 	for (i = 0; i < ASIZE(src->vp_ctrl_reserved); i++) {
    995  1.3  mjacob 		ISP_IOXGET_8(isp, &src->vp_ctrl_reserved[i], dst->vp_ctrl_reserved[i]);
    996  1.3  mjacob 	}
    997  1.3  mjacob }
    998  1.3  mjacob 
    999  1.3  mjacob void
   1000  1.3  mjacob isp_put_vp_modify(ispsoftc_t *isp, vp_modify_t *src, vp_modify_t *dst)
   1001  1.3  mjacob {
   1002  1.3  mjacob 	int i, j;
   1003  1.3  mjacob 	isp_put_hdr(isp, &src->vp_mod_hdr, &dst->vp_mod_hdr);
   1004  1.3  mjacob 	ISP_IOXPUT_32(isp, src->vp_mod_hdl, &dst->vp_mod_hdl);
   1005  1.3  mjacob 	ISP_IOXPUT_16(isp, src->vp_mod_reserved0, &dst->vp_mod_reserved0);
   1006  1.3  mjacob 	ISP_IOXPUT_16(isp, src->vp_mod_status, &dst->vp_mod_status);
   1007  1.3  mjacob 	ISP_IOXPUT_8(isp, src->vp_mod_cmd, &dst->vp_mod_cmd);
   1008  1.3  mjacob 	ISP_IOXPUT_8(isp, src->vp_mod_cnt, &dst->vp_mod_cnt);
   1009  1.3  mjacob 	ISP_IOXPUT_8(isp, src->vp_mod_idx0, &dst->vp_mod_idx0);
   1010  1.3  mjacob 	ISP_IOXPUT_8(isp, src->vp_mod_idx1, &dst->vp_mod_idx1);
   1011  1.3  mjacob 	for (i = 0; i < ASIZE(src->vp_mod_ports); i++) {
   1012  1.3  mjacob 		ISP_IOXPUT_8(isp, src->vp_mod_ports[i].options, &dst->vp_mod_ports[i].options);
   1013  1.3  mjacob 		ISP_IOXPUT_8(isp, src->vp_mod_ports[i].loopid, &dst->vp_mod_ports[i].loopid);
   1014  1.3  mjacob 		ISP_IOXPUT_16(isp, src->vp_mod_ports[i].reserved1, &dst->vp_mod_ports[i].reserved1);
   1015  1.3  mjacob 		for (j = 0; j < ASIZE(src->vp_mod_ports[i].wwpn); j++) {
   1016  1.3  mjacob 			ISP_IOXPUT_8(isp, src->vp_mod_ports[i].wwpn[j], &dst->vp_mod_ports[i].wwpn[j]);
   1017  1.3  mjacob 		}
   1018  1.3  mjacob 		for (j = 0; j < ASIZE(src->vp_mod_ports[i].wwnn); j++) {
   1019  1.3  mjacob 			ISP_IOXPUT_8(isp, src->vp_mod_ports[i].wwnn[j], &dst->vp_mod_ports[i].wwnn[j]);
   1020  1.3  mjacob 		}
   1021  1.3  mjacob 	}
   1022  1.3  mjacob 	for (i = 0; i < ASIZE(src->vp_mod_reserved2); i++) {
   1023  1.3  mjacob 		ISP_IOXPUT_8(isp, src->vp_mod_reserved2[i], &dst->vp_mod_reserved2[i]);
   1024  1.3  mjacob 	}
   1025  1.3  mjacob }
   1026  1.3  mjacob 
   1027  1.3  mjacob void
   1028  1.3  mjacob isp_get_vp_modify(ispsoftc_t *isp, vp_modify_t *src, vp_modify_t *dst)
   1029  1.3  mjacob {
   1030  1.3  mjacob 	int i, j;
   1031  1.3  mjacob 	isp_get_hdr(isp, &src->vp_mod_hdr, &dst->vp_mod_hdr);
   1032  1.3  mjacob 	ISP_IOXGET_32(isp, &src->vp_mod_hdl, dst->vp_mod_hdl);
   1033  1.3  mjacob 	ISP_IOXGET_16(isp, &src->vp_mod_reserved0, dst->vp_mod_reserved0);
   1034  1.3  mjacob 	ISP_IOXGET_16(isp, &src->vp_mod_status, dst->vp_mod_status);
   1035  1.3  mjacob 	ISP_IOXGET_8(isp, &src->vp_mod_cmd, dst->vp_mod_cmd);
   1036  1.3  mjacob 	ISP_IOXGET_8(isp, &src->vp_mod_cnt, dst->vp_mod_cnt);
   1037  1.3  mjacob 	ISP_IOXGET_8(isp, &src->vp_mod_idx0, dst->vp_mod_idx0);
   1038  1.3  mjacob 	ISP_IOXGET_8(isp, &src->vp_mod_idx1, dst->vp_mod_idx1);
   1039  1.3  mjacob 	for (i = 0; i < ASIZE(src->vp_mod_ports); i++) {
   1040  1.3  mjacob 		ISP_IOXGET_8(isp, &src->vp_mod_ports[i].options, dst->vp_mod_ports[i].options);
   1041  1.3  mjacob 		ISP_IOXGET_8(isp, &src->vp_mod_ports[i].loopid, dst->vp_mod_ports[i].loopid);
   1042  1.3  mjacob 		ISP_IOXGET_16(isp, &src->vp_mod_ports[i].reserved1, dst->vp_mod_ports[i].reserved1);
   1043  1.3  mjacob 		for (j = 0; j < ASIZE(src->vp_mod_ports[i].wwpn); j++) {
   1044  1.3  mjacob 			ISP_IOXGET_8(isp, &src->vp_mod_ports[i].wwpn[j], dst->vp_mod_ports[i].wwpn[j]);
   1045  1.3  mjacob 		}
   1046  1.3  mjacob 		for (j = 0; j < ASIZE(src->vp_mod_ports[i].wwnn); j++) {
   1047  1.3  mjacob 			ISP_IOXGET_8(isp, &src->vp_mod_ports[i].wwnn[j], dst->vp_mod_ports[i].wwnn[j]);
   1048  1.3  mjacob 		}
   1049  1.3  mjacob 	}
   1050  1.3  mjacob 	for (i = 0; i < ASIZE(src->vp_mod_reserved2); i++) {
   1051  1.3  mjacob 		ISP_IOXGET_8(isp, &src->vp_mod_reserved2[i], dst->vp_mod_reserved2[i]);
   1052  1.3  mjacob 	}
   1053  1.3  mjacob }
   1054  1.3  mjacob 
   1055  1.3  mjacob void
   1056  1.1  mjacob isp_get_pdb_21xx(ispsoftc_t *isp, isp_pdb_21xx_t *src, isp_pdb_21xx_t *dst)
   1057  1.1  mjacob {
   1058  1.1  mjacob 	int i;
   1059  1.1  mjacob 	ISP_IOXGET_16(isp, &src->pdb_options, dst->pdb_options);
   1060  1.1  mjacob         ISP_IOXGET_8(isp, &src->pdb_mstate, dst->pdb_mstate);
   1061  1.1  mjacob         ISP_IOXGET_8(isp, &src->pdb_sstate, dst->pdb_sstate);
   1062  1.1  mjacob 	for (i = 0; i < 4; i++) {
   1063  1.1  mjacob 		ISP_IOXGET_8(isp, &src->pdb_hardaddr_bits[i],
   1064  1.1  mjacob 		    dst->pdb_hardaddr_bits[i]);
   1065  1.1  mjacob 	}
   1066  1.1  mjacob 	for (i = 0; i < 4; i++) {
   1067  1.1  mjacob 		ISP_IOXGET_8(isp, &src->pdb_portid_bits[i],
   1068  1.1  mjacob 		    dst->pdb_portid_bits[i]);
   1069  1.1  mjacob 	}
   1070  1.1  mjacob 	for (i = 0; i < 8; i++) {
   1071  1.1  mjacob 		ISP_IOXGET_8(isp, &src->pdb_nodename[i], dst->pdb_nodename[i]);
   1072  1.1  mjacob 	}
   1073  1.1  mjacob 	for (i = 0; i < 8; i++) {
   1074  1.1  mjacob 		ISP_IOXGET_8(isp, &src->pdb_portname[i], dst->pdb_portname[i]);
   1075  1.1  mjacob 	}
   1076  1.1  mjacob 	ISP_IOXGET_16(isp, &src->pdb_execthrottle, dst->pdb_execthrottle);
   1077  1.1  mjacob 	ISP_IOXGET_16(isp, &src->pdb_exec_count, dst->pdb_exec_count);
   1078  1.1  mjacob 	ISP_IOXGET_8(isp, &src->pdb_retry_count, dst->pdb_retry_count);
   1079  1.1  mjacob 	ISP_IOXGET_8(isp, &src->pdb_retry_delay, dst->pdb_retry_delay);
   1080  1.1  mjacob 	ISP_IOXGET_16(isp, &src->pdb_resalloc, dst->pdb_resalloc);
   1081  1.1  mjacob 	ISP_IOXGET_16(isp, &src->pdb_curalloc, dst->pdb_curalloc);
   1082  1.1  mjacob 	ISP_IOXGET_16(isp, &src->pdb_qhead, dst->pdb_qhead);
   1083  1.1  mjacob 	ISP_IOXGET_16(isp, &src->pdb_qtail, dst->pdb_qtail);
   1084  1.1  mjacob 	ISP_IOXGET_16(isp, &src->pdb_tl_next, dst->pdb_tl_next);
   1085  1.1  mjacob 	ISP_IOXGET_16(isp, &src->pdb_tl_last, dst->pdb_tl_last);
   1086  1.1  mjacob 	ISP_IOXGET_16(isp, &src->pdb_features, dst->pdb_features);
   1087  1.1  mjacob 	ISP_IOXGET_16(isp, &src->pdb_pconcurrnt, dst->pdb_pconcurrnt);
   1088  1.1  mjacob 	ISP_IOXGET_16(isp, &src->pdb_roi, dst->pdb_roi);
   1089  1.1  mjacob 	ISP_IOXGET_8(isp, &src->pdb_target, dst->pdb_target);
   1090  1.1  mjacob 	ISP_IOXGET_8(isp, &src->pdb_initiator, dst->pdb_initiator);
   1091  1.1  mjacob 	ISP_IOXGET_16(isp, &src->pdb_rdsiz, dst->pdb_rdsiz);
   1092  1.1  mjacob 	ISP_IOXGET_16(isp, &src->pdb_ncseq, dst->pdb_ncseq);
   1093  1.1  mjacob 	ISP_IOXGET_16(isp, &src->pdb_noseq, dst->pdb_noseq);
   1094  1.1  mjacob 	ISP_IOXGET_16(isp, &src->pdb_labrtflg, dst->pdb_labrtflg);
   1095  1.1  mjacob 	ISP_IOXGET_16(isp, &src->pdb_lstopflg, dst->pdb_lstopflg);
   1096  1.1  mjacob 	ISP_IOXGET_16(isp, &src->pdb_sqhead, dst->pdb_sqhead);
   1097  1.1  mjacob 	ISP_IOXGET_16(isp, &src->pdb_sqtail, dst->pdb_sqtail);
   1098  1.1  mjacob 	ISP_IOXGET_16(isp, &src->pdb_ptimer, dst->pdb_ptimer);
   1099  1.1  mjacob 	ISP_IOXGET_16(isp, &src->pdb_nxt_seqid, dst->pdb_nxt_seqid);
   1100  1.1  mjacob 	ISP_IOXGET_16(isp, &src->pdb_fcount, dst->pdb_fcount);
   1101  1.1  mjacob 	ISP_IOXGET_16(isp, &src->pdb_prli_len, dst->pdb_prli_len);
   1102  1.1  mjacob 	ISP_IOXGET_16(isp, &src->pdb_prli_svc0, dst->pdb_prli_svc0);
   1103  1.1  mjacob 	ISP_IOXGET_16(isp, &src->pdb_prli_svc3, dst->pdb_prli_svc3);
   1104  1.1  mjacob 	ISP_IOXGET_16(isp, &src->pdb_loopid, dst->pdb_loopid);
   1105  1.1  mjacob 	ISP_IOXGET_16(isp, &src->pdb_il_ptr, dst->pdb_il_ptr);
   1106  1.1  mjacob 	ISP_IOXGET_16(isp, &src->pdb_sl_ptr, dst->pdb_sl_ptr);
   1107  1.1  mjacob }
   1108  1.1  mjacob 
   1109  1.1  mjacob void
   1110  1.1  mjacob isp_get_pdb_24xx(ispsoftc_t *isp, isp_pdb_24xx_t *src, isp_pdb_24xx_t *dst)
   1111  1.1  mjacob {
   1112  1.1  mjacob 	int i;
   1113  1.1  mjacob 	ISP_IOXGET_16(isp, &src->pdb_flags, dst->pdb_flags);
   1114  1.1  mjacob         ISP_IOXGET_8(isp, &src->pdb_curstate, dst->pdb_curstate);
   1115  1.1  mjacob         ISP_IOXGET_8(isp, &src->pdb_laststate, dst->pdb_laststate);
   1116  1.1  mjacob 	for (i = 0; i < 4; i++) {
   1117  1.1  mjacob 		ISP_IOXGET_8(isp, &src->pdb_hardaddr_bits[i],
   1118  1.1  mjacob 		    dst->pdb_hardaddr_bits[i]);
   1119  1.1  mjacob 	}
   1120  1.1  mjacob 	for (i = 0; i < 4; i++) {
   1121  1.1  mjacob 		ISP_IOXGET_8(isp, &src->pdb_portid_bits[i],
   1122  1.1  mjacob 		    dst->pdb_portid_bits[i]);
   1123  1.1  mjacob 	}
   1124  1.1  mjacob 	ISP_IOXGET_16(isp, &src->pdb_retry_timer, dst->pdb_retry_timer);
   1125  1.1  mjacob 	ISP_IOXGET_16(isp, &src->pdb_handle, dst->pdb_handle);
   1126  1.1  mjacob 	ISP_IOXGET_16(isp, &src->pdb_rcv_dsize, dst->pdb_rcv_dsize);
   1127  1.1  mjacob 	ISP_IOXGET_16(isp, &src->pdb_reserved0, dst->pdb_reserved0);
   1128  1.1  mjacob 	ISP_IOXGET_16(isp, &src->pdb_prli_svc0, dst->pdb_prli_svc0);
   1129  1.1  mjacob 	ISP_IOXGET_16(isp, &src->pdb_prli_svc3, dst->pdb_prli_svc3);
   1130  1.1  mjacob 	for (i = 0; i < 8; i++) {
   1131  1.1  mjacob 		ISP_IOXGET_8(isp, &src->pdb_nodename[i], dst->pdb_nodename[i]);
   1132  1.1  mjacob 	}
   1133  1.1  mjacob 	for (i = 0; i < 8; i++) {
   1134  1.1  mjacob 		ISP_IOXGET_8(isp, &src->pdb_portname[i], dst->pdb_portname[i]);
   1135  1.1  mjacob 	}
   1136  1.1  mjacob 	for (i = 0; i < 24; i++) {
   1137  1.1  mjacob 		ISP_IOXGET_8(isp, &src->pdb_reserved1[i],
   1138  1.1  mjacob 		    dst->pdb_reserved1[i]);
   1139  1.1  mjacob 	}
   1140  1.1  mjacob }
   1141  1.1  mjacob 
   1142  1.1  mjacob /*
   1143  1.1  mjacob  * PLOGI/LOGO IOCB canonicalization
   1144  1.1  mjacob  */
   1145  1.1  mjacob 
   1146  1.1  mjacob void
   1147  1.1  mjacob isp_get_plogx(ispsoftc_t *isp, isp_plogx_t *src, isp_plogx_t *dst)
   1148  1.1  mjacob {
   1149  1.1  mjacob 	int i;
   1150  1.1  mjacob 	isp_get_hdr(isp, &src->plogx_header, &dst->plogx_header);
   1151  1.1  mjacob 	ISP_IOXGET_32(isp, &src->plogx_handle, dst->plogx_handle);
   1152  1.1  mjacob 	ISP_IOXGET_16(isp, &src->plogx_status, dst->plogx_status);
   1153  1.1  mjacob 	ISP_IOXGET_16(isp, &src->plogx_nphdl, dst->plogx_nphdl);
   1154  1.1  mjacob 	ISP_IOXGET_16(isp, &src->plogx_flags, dst->plogx_flags);
   1155  1.1  mjacob 	ISP_IOXGET_16(isp, &src->plogx_vphdl, dst->plogx_vphdl);
   1156  1.1  mjacob 	ISP_IOXGET_16(isp, &src->plogx_portlo, dst->plogx_portlo);
   1157  1.1  mjacob 	ISP_IOXGET_16(isp, &src->plogx_rspsz_porthi, dst->plogx_rspsz_porthi);
   1158  1.1  mjacob 	for (i = 0; i < 11; i++) {
   1159  1.1  mjacob 		ISP_IOXGET_16(isp, &src->plogx_ioparm[i].lo16,
   1160  1.1  mjacob 		    dst->plogx_ioparm[i].lo16);
   1161  1.1  mjacob 		ISP_IOXGET_16(isp, &src->plogx_ioparm[i].hi16,
   1162  1.1  mjacob 		    dst->plogx_ioparm[i].hi16);
   1163  1.1  mjacob 	}
   1164  1.1  mjacob }
   1165  1.1  mjacob 
   1166  1.1  mjacob void
   1167  1.1  mjacob isp_put_plogx(ispsoftc_t *isp, isp_plogx_t *src, isp_plogx_t *dst)
   1168  1.1  mjacob {
   1169  1.1  mjacob 	int i;
   1170  1.1  mjacob 	isp_put_hdr(isp, &src->plogx_header, &dst->plogx_header);
   1171  1.1  mjacob 	ISP_IOXPUT_32(isp, src->plogx_handle, &dst->plogx_handle);
   1172  1.1  mjacob 	ISP_IOXPUT_16(isp, src->plogx_status, &dst->plogx_status);
   1173  1.1  mjacob 	ISP_IOXPUT_16(isp, src->plogx_nphdl, &dst->plogx_nphdl);
   1174  1.1  mjacob 	ISP_IOXPUT_16(isp, src->plogx_flags, &dst->plogx_flags);
   1175  1.1  mjacob 	ISP_IOXPUT_16(isp, src->plogx_vphdl, &dst->plogx_vphdl);
   1176  1.1  mjacob 	ISP_IOXPUT_16(isp, src->plogx_portlo, &dst->plogx_portlo);
   1177  1.1  mjacob 	ISP_IOXPUT_16(isp, src->plogx_rspsz_porthi, &dst->plogx_rspsz_porthi);
   1178  1.1  mjacob 	for (i = 0; i < 11; i++) {
   1179  1.1  mjacob 		ISP_IOXPUT_16(isp, src->plogx_ioparm[i].lo16,
   1180  1.1  mjacob 		    &dst->plogx_ioparm[i].lo16);
   1181  1.1  mjacob 		ISP_IOXPUT_16(isp, src->plogx_ioparm[i].hi16,
   1182  1.1  mjacob 		    &dst->plogx_ioparm[i].hi16);
   1183  1.1  mjacob 	}
   1184  1.1  mjacob }
   1185  1.1  mjacob 
   1186  1.1  mjacob /*
   1187  1.3  mjacob  * Report ID canonicalization
   1188  1.3  mjacob  */
   1189  1.3  mjacob void
   1190  1.3  mjacob isp_get_ridacq(ispsoftc_t *isp, isp_ridacq_t *src, isp_ridacq_t *dst)
   1191  1.3  mjacob {
   1192  1.3  mjacob 	int i;
   1193  1.3  mjacob 	isp_get_hdr(isp, &src->ridacq_hdr, &dst->ridacq_hdr);
   1194  1.3  mjacob 	ISP_IOXGET_32(isp, &src->ridacq_handle, dst->ridacq_handle);
   1195  1.3  mjacob 	ISP_IOXGET_16(isp, &src->ridacq_vp_port_lo, dst->ridacq_vp_port_lo);
   1196  1.3  mjacob 	ISP_IOXGET_8(isp, &src->ridacq_vp_port_hi, dst->ridacq_vp_port_hi);
   1197  1.3  mjacob 	ISP_IOXGET_8(isp, &src->ridacq_format, dst->ridacq_format);
   1198  1.3  mjacob 	for (i = 0; i < sizeof (src->ridacq_map) / sizeof (src->ridacq_map[0]);
   1199  1.3  mjacob 	    i++) {
   1200  1.3  mjacob 		ISP_IOXGET_16(isp, &src->ridacq_map[i], dst->ridacq_map[i]);
   1201  1.3  mjacob 	}
   1202  1.3  mjacob 	for (i = 0; i < sizeof (src->ridacq_reserved1) /
   1203  1.3  mjacob 	    sizeof (src->ridacq_reserved1[0]); i++) {
   1204  1.3  mjacob 		ISP_IOXGET_16(isp, &src->ridacq_reserved1[i],
   1205  1.3  mjacob 		    dst->ridacq_reserved1[i]);
   1206  1.3  mjacob 	}
   1207  1.3  mjacob 	if (dst->ridacq_format == 0) {
   1208  1.3  mjacob 		ISP_IOXGET_8(isp, &src->un.type0.ridacq_vp_acquired,
   1209  1.3  mjacob 		    dst->un.type0.ridacq_vp_acquired);
   1210  1.3  mjacob 		ISP_IOXGET_8(isp, &src->un.type0.ridacq_vp_setup,
   1211  1.3  mjacob 		    dst->un.type0.ridacq_vp_setup);
   1212  1.3  mjacob 		ISP_IOXGET_16(isp, &src->un.type0.ridacq_reserved0,
   1213  1.3  mjacob 		    dst->un.type0.ridacq_reserved0);
   1214  1.3  mjacob 	} else if (dst->ridacq_format == 1) {
   1215  1.3  mjacob 		ISP_IOXGET_16(isp, &src->un.type1.ridacq_vp_count,
   1216  1.3  mjacob 		    dst->un.type1.ridacq_vp_count);
   1217  1.3  mjacob 		ISP_IOXGET_8(isp, &src->un.type1.ridacq_vp_index,
   1218  1.3  mjacob 		    dst->un.type1.ridacq_vp_index);
   1219  1.3  mjacob 		ISP_IOXGET_8(isp, &src->un.type1.ridacq_vp_status,
   1220  1.3  mjacob 		    dst->un.type1.ridacq_vp_status);
   1221  1.3  mjacob 	} else {
   1222  1.3  mjacob 		MEMZERO(&dst->un, sizeof (dst->un));
   1223  1.3  mjacob 	}
   1224  1.3  mjacob }
   1225  1.3  mjacob 
   1226  1.3  mjacob 
   1227  1.3  mjacob /*
   1228  1.1  mjacob  * CT Passthru canonicalization
   1229  1.1  mjacob  */
   1230  1.1  mjacob void
   1231  1.1  mjacob isp_get_ct_pt(ispsoftc_t *isp, isp_ct_pt_t *src, isp_ct_pt_t *dst)
   1232  1.1  mjacob {
   1233  1.1  mjacob 	int i;
   1234  1.1  mjacob 
   1235  1.1  mjacob 	isp_get_hdr(isp, &src->ctp_header, &dst->ctp_header);
   1236  1.1  mjacob 	ISP_IOXGET_32(isp, &src->ctp_handle, dst->ctp_handle);
   1237  1.1  mjacob 	ISP_IOXGET_16(isp, &src->ctp_status, dst->ctp_status);
   1238  1.1  mjacob 	ISP_IOXGET_16(isp, &src->ctp_nphdl, dst->ctp_nphdl);
   1239  1.1  mjacob 	ISP_IOXGET_16(isp, &src->ctp_cmd_cnt, dst->ctp_cmd_cnt);
   1240  1.3  mjacob 	ISP_IOXGET_8(isp, &src->ctp_vpidx, dst->ctp_vpidx);
   1241  1.3  mjacob 	ISP_IOXGET_8(isp, &src->ctp_reserved0, dst->ctp_reserved0);
   1242  1.1  mjacob 	ISP_IOXGET_16(isp, &src->ctp_time, dst->ctp_time);
   1243  1.3  mjacob 	ISP_IOXGET_16(isp, &src->ctp_reserved1, dst->ctp_reserved1);
   1244  1.1  mjacob 	ISP_IOXGET_16(isp, &src->ctp_rsp_cnt, dst->ctp_rsp_cnt);
   1245  1.1  mjacob 	for (i = 0; i < 5; i++) {
   1246  1.3  mjacob 		ISP_IOXGET_16(isp, &src->ctp_reserved2[i],
   1247  1.3  mjacob 		    dst->ctp_reserved2[i]);
   1248  1.1  mjacob 	}
   1249  1.1  mjacob 	ISP_IOXGET_32(isp, &src->ctp_rsp_bcnt, dst->ctp_rsp_bcnt);
   1250  1.1  mjacob 	ISP_IOXGET_32(isp, &src->ctp_cmd_bcnt, dst->ctp_cmd_bcnt);
   1251  1.1  mjacob 	for (i = 0; i < 2; i++) {
   1252  1.1  mjacob 		ISP_IOXGET_32(isp, &src->ctp_dataseg[i].ds_base,
   1253  1.1  mjacob 		    dst->ctp_dataseg[i].ds_base);
   1254  1.1  mjacob 		ISP_IOXGET_32(isp, &src->ctp_dataseg[i].ds_basehi,
   1255  1.1  mjacob 		    dst->ctp_dataseg[i].ds_basehi);
   1256  1.1  mjacob 		ISP_IOXGET_32(isp, &src->ctp_dataseg[i].ds_count,
   1257  1.1  mjacob 		    dst->ctp_dataseg[i].ds_count);
   1258  1.1  mjacob 	}
   1259  1.1  mjacob }
   1260  1.1  mjacob 
   1261  1.1  mjacob void
   1262  1.1  mjacob isp_get_ms(ispsoftc_t *isp, isp_ms_t *src, isp_ms_t *dst)
   1263  1.1  mjacob {
   1264  1.1  mjacob 	int i;
   1265  1.1  mjacob 
   1266  1.1  mjacob 	isp_get_hdr(isp, &src->ms_header, &dst->ms_header);
   1267  1.1  mjacob 	ISP_IOXGET_32(isp, &src->ms_handle, dst->ms_handle);
   1268  1.1  mjacob 	ISP_IOXGET_16(isp, &src->ms_nphdl, dst->ms_nphdl);
   1269  1.1  mjacob 	ISP_IOXGET_16(isp, &src->ms_status, dst->ms_status);
   1270  1.1  mjacob 	ISP_IOXGET_16(isp, &src->ms_flags, dst->ms_flags);
   1271  1.1  mjacob 	ISP_IOXGET_16(isp, &src->ms_reserved1, dst->ms_reserved1);
   1272  1.1  mjacob 	ISP_IOXGET_16(isp, &src->ms_time, dst->ms_time);
   1273  1.1  mjacob 	ISP_IOXGET_16(isp, &src->ms_cmd_cnt, dst->ms_cmd_cnt);
   1274  1.1  mjacob 	ISP_IOXGET_16(isp, &src->ms_tot_cnt, dst->ms_tot_cnt);
   1275  1.1  mjacob 	ISP_IOXGET_8(isp, &src->ms_type, dst->ms_type);
   1276  1.1  mjacob 	ISP_IOXGET_8(isp, &src->ms_r_ctl, dst->ms_r_ctl);
   1277  1.1  mjacob 	ISP_IOXGET_16(isp, &src->ms_rxid, dst->ms_rxid);
   1278  1.1  mjacob 	ISP_IOXGET_16(isp, &src->ms_reserved2, dst->ms_reserved2);
   1279  1.1  mjacob 	ISP_IOXGET_32(isp, &src->ms_rsp_bcnt, dst->ms_rsp_bcnt);
   1280  1.1  mjacob 	ISP_IOXGET_32(isp, &src->ms_cmd_bcnt, dst->ms_cmd_bcnt);
   1281  1.1  mjacob 	for (i = 0; i < 2; i++) {
   1282  1.1  mjacob 		ISP_IOXGET_32(isp, &src->ms_dataseg[i].ds_base,
   1283  1.1  mjacob 		    dst->ms_dataseg[i].ds_base);
   1284  1.1  mjacob 		ISP_IOXGET_32(isp, &src->ms_dataseg[i].ds_basehi,
   1285  1.1  mjacob 		    dst->ms_dataseg[i].ds_basehi);
   1286  1.1  mjacob 		ISP_IOXGET_32(isp, &src->ms_dataseg[i].ds_count,
   1287  1.1  mjacob 		    dst->ms_dataseg[i].ds_count);
   1288  1.1  mjacob 	}
   1289  1.1  mjacob }
   1290  1.1  mjacob 
   1291  1.1  mjacob void
   1292  1.1  mjacob isp_put_ct_pt(ispsoftc_t *isp, isp_ct_pt_t *src, isp_ct_pt_t *dst)
   1293  1.1  mjacob {
   1294  1.1  mjacob 	int i;
   1295  1.1  mjacob 
   1296  1.1  mjacob 	isp_put_hdr(isp, &src->ctp_header, &dst->ctp_header);
   1297  1.1  mjacob 	ISP_IOXPUT_32(isp, src->ctp_handle, &dst->ctp_handle);
   1298  1.1  mjacob 	ISP_IOXPUT_16(isp, src->ctp_status, &dst->ctp_status);
   1299  1.1  mjacob 	ISP_IOXPUT_16(isp, src->ctp_nphdl, &dst->ctp_nphdl);
   1300  1.1  mjacob 	ISP_IOXPUT_16(isp, src->ctp_cmd_cnt, &dst->ctp_cmd_cnt);
   1301  1.3  mjacob 	ISP_IOXPUT_8(isp, src->ctp_vpidx, &dst->ctp_vpidx);
   1302  1.3  mjacob 	ISP_IOXPUT_8(isp, src->ctp_reserved0, &dst->ctp_reserved0);
   1303  1.1  mjacob 	ISP_IOXPUT_16(isp, src->ctp_time, &dst->ctp_time);
   1304  1.3  mjacob 	ISP_IOXPUT_16(isp, src->ctp_reserved1, &dst->ctp_reserved1);
   1305  1.1  mjacob 	ISP_IOXPUT_16(isp, src->ctp_rsp_cnt, &dst->ctp_rsp_cnt);
   1306  1.1  mjacob 	for (i = 0; i < 5; i++) {
   1307  1.3  mjacob 		ISP_IOXPUT_16(isp, src->ctp_reserved2[i],
   1308  1.3  mjacob 		    &dst->ctp_reserved2[i]);
   1309  1.1  mjacob 	}
   1310  1.1  mjacob 	ISP_IOXPUT_32(isp, src->ctp_rsp_bcnt, &dst->ctp_rsp_bcnt);
   1311  1.1  mjacob 	ISP_IOXPUT_32(isp, src->ctp_cmd_bcnt, &dst->ctp_cmd_bcnt);
   1312  1.1  mjacob 	for (i = 0; i < 2; i++) {
   1313  1.1  mjacob 		ISP_IOXPUT_32(isp, src->ctp_dataseg[i].ds_base,
   1314  1.1  mjacob 		    &dst->ctp_dataseg[i].ds_base);
   1315  1.1  mjacob 		ISP_IOXPUT_32(isp, src->ctp_dataseg[i].ds_basehi,
   1316  1.1  mjacob 		    &dst->ctp_dataseg[i].ds_basehi);
   1317  1.1  mjacob 		ISP_IOXPUT_32(isp, src->ctp_dataseg[i].ds_count,
   1318  1.1  mjacob 		    &dst->ctp_dataseg[i].ds_count);
   1319  1.1  mjacob 	}
   1320  1.1  mjacob }
   1321  1.1  mjacob 
   1322  1.1  mjacob void
   1323  1.1  mjacob isp_put_ms(ispsoftc_t *isp, isp_ms_t *src, isp_ms_t *dst)
   1324  1.1  mjacob {
   1325  1.1  mjacob 	int i;
   1326  1.1  mjacob 
   1327  1.1  mjacob 	isp_put_hdr(isp, &src->ms_header, &dst->ms_header);
   1328  1.1  mjacob 	ISP_IOXPUT_32(isp, src->ms_handle, &dst->ms_handle);
   1329  1.1  mjacob 	ISP_IOXPUT_16(isp, src->ms_nphdl, &dst->ms_nphdl);
   1330  1.1  mjacob 	ISP_IOXPUT_16(isp, src->ms_status, &dst->ms_status);
   1331  1.1  mjacob 	ISP_IOXPUT_16(isp, src->ms_flags, &dst->ms_flags);
   1332  1.1  mjacob 	ISP_IOXPUT_16(isp, src->ms_reserved1, &dst->ms_reserved1);
   1333  1.1  mjacob 	ISP_IOXPUT_16(isp, src->ms_time, &dst->ms_time);
   1334  1.1  mjacob 	ISP_IOXPUT_16(isp, src->ms_cmd_cnt, &dst->ms_cmd_cnt);
   1335  1.1  mjacob 	ISP_IOXPUT_16(isp, src->ms_tot_cnt, &dst->ms_tot_cnt);
   1336  1.1  mjacob 	ISP_IOXPUT_8(isp, src->ms_type, &dst->ms_type);
   1337  1.1  mjacob 	ISP_IOXPUT_8(isp, src->ms_r_ctl, &dst->ms_r_ctl);
   1338  1.1  mjacob 	ISP_IOXPUT_16(isp, src->ms_rxid, &dst->ms_rxid);
   1339  1.1  mjacob 	ISP_IOXPUT_16(isp, src->ms_reserved2, &dst->ms_reserved2);
   1340  1.1  mjacob 	ISP_IOXPUT_32(isp, src->ms_rsp_bcnt, &dst->ms_rsp_bcnt);
   1341  1.1  mjacob 	ISP_IOXPUT_32(isp, src->ms_cmd_bcnt, &dst->ms_cmd_bcnt);
   1342  1.1  mjacob 	for (i = 0; i < 2; i++) {
   1343  1.1  mjacob 		ISP_IOXPUT_32(isp, src->ms_dataseg[i].ds_base,
   1344  1.1  mjacob 		    &dst->ms_dataseg[i].ds_base);
   1345  1.1  mjacob 		ISP_IOXPUT_32(isp, src->ms_dataseg[i].ds_basehi,
   1346  1.1  mjacob 		    &dst->ms_dataseg[i].ds_basehi);
   1347  1.1  mjacob 		ISP_IOXPUT_32(isp, src->ms_dataseg[i].ds_count,
   1348  1.1  mjacob 		    &dst->ms_dataseg[i].ds_count);
   1349  1.1  mjacob 	}
   1350  1.1  mjacob }
   1351  1.1  mjacob 
   1352  1.1  mjacob /*
   1353  1.1  mjacob  * Generic SNS request - not particularly useful since the per-command data
   1354  1.1  mjacob  * isn't always 16 bit words.
   1355  1.1  mjacob  */
   1356  1.1  mjacob void
   1357  1.1  mjacob isp_put_sns_request(ispsoftc_t *isp, sns_screq_t *src, sns_screq_t *dst)
   1358  1.1  mjacob {
   1359  1.1  mjacob 	int i, nw = (int) src->snscb_sblen;
   1360  1.1  mjacob 	ISP_IOXPUT_16(isp, src->snscb_rblen, &dst->snscb_rblen);
   1361  1.1  mjacob 	for (i = 0; i < 4; i++) {
   1362  1.1  mjacob 		ISP_IOXPUT_16(isp, src->snscb_addr[i], &dst->snscb_addr[i]);
   1363  1.1  mjacob 	}
   1364  1.1  mjacob 	ISP_IOXPUT_16(isp, src->snscb_sblen, &dst->snscb_sblen);
   1365  1.1  mjacob 	for (i = 0; i < nw; i++) {
   1366  1.1  mjacob 		ISP_IOXPUT_16(isp, src->snscb_data[i], &dst->snscb_data[i]);
   1367  1.1  mjacob 	}
   1368  1.1  mjacob 
   1369  1.1  mjacob }
   1370  1.1  mjacob 
   1371  1.1  mjacob void
   1372  1.1  mjacob isp_put_gid_ft_request(ispsoftc_t *isp, sns_gid_ft_req_t *src,
   1373  1.1  mjacob     sns_gid_ft_req_t *dst)
   1374  1.1  mjacob {
   1375  1.1  mjacob 	ISP_IOXPUT_16(isp, src->snscb_rblen, &dst->snscb_rblen);
   1376  1.1  mjacob 	ISP_IOXPUT_16(isp, src->snscb_reserved0, &dst->snscb_reserved0);
   1377  1.1  mjacob 	ISP_IOXPUT_16(isp, src->snscb_addr[0], &dst->snscb_addr[0]);
   1378  1.1  mjacob 	ISP_IOXPUT_16(isp, src->snscb_addr[1], &dst->snscb_addr[1]);
   1379  1.1  mjacob 	ISP_IOXPUT_16(isp, src->snscb_addr[2], &dst->snscb_addr[2]);
   1380  1.1  mjacob 	ISP_IOXPUT_16(isp, src->snscb_addr[3], &dst->snscb_addr[3]);
   1381  1.1  mjacob 	ISP_IOXPUT_16(isp, src->snscb_sblen, &dst->snscb_sblen);
   1382  1.1  mjacob 	ISP_IOXPUT_16(isp, src->snscb_reserved1, &dst->snscb_reserved1);
   1383  1.1  mjacob 	ISP_IOXPUT_16(isp, src->snscb_cmd, &dst->snscb_cmd);
   1384  1.1  mjacob 	ISP_IOXPUT_16(isp, src->snscb_mword_div_2, &dst->snscb_mword_div_2);
   1385  1.1  mjacob 	ISP_IOXPUT_32(isp, src->snscb_reserved3, &dst->snscb_reserved3);
   1386  1.1  mjacob 	ISP_IOXPUT_32(isp, src->snscb_fc4_type, &dst->snscb_fc4_type);
   1387  1.1  mjacob }
   1388  1.1  mjacob 
   1389  1.1  mjacob void
   1390  1.1  mjacob isp_put_gxn_id_request(ispsoftc_t *isp, sns_gxn_id_req_t *src,
   1391  1.1  mjacob     sns_gxn_id_req_t *dst)
   1392  1.1  mjacob {
   1393  1.1  mjacob 	ISP_IOXPUT_16(isp, src->snscb_rblen, &dst->snscb_rblen);
   1394  1.1  mjacob 	ISP_IOXPUT_16(isp, src->snscb_reserved0, &dst->snscb_reserved0);
   1395  1.1  mjacob 	ISP_IOXPUT_16(isp, src->snscb_addr[0], &dst->snscb_addr[0]);
   1396  1.1  mjacob 	ISP_IOXPUT_16(isp, src->snscb_addr[1], &dst->snscb_addr[1]);
   1397  1.1  mjacob 	ISP_IOXPUT_16(isp, src->snscb_addr[2], &dst->snscb_addr[2]);
   1398  1.1  mjacob 	ISP_IOXPUT_16(isp, src->snscb_addr[3], &dst->snscb_addr[3]);
   1399  1.1  mjacob 	ISP_IOXPUT_16(isp, src->snscb_sblen, &dst->snscb_sblen);
   1400  1.1  mjacob 	ISP_IOXPUT_16(isp, src->snscb_reserved1, &dst->snscb_reserved1);
   1401  1.1  mjacob 	ISP_IOXPUT_16(isp, src->snscb_cmd, &dst->snscb_cmd);
   1402  1.1  mjacob 	ISP_IOXPUT_16(isp, src->snscb_reserved2, &dst->snscb_reserved2);
   1403  1.1  mjacob 	ISP_IOXPUT_32(isp, src->snscb_reserved3, &dst->snscb_reserved3);
   1404  1.1  mjacob 	ISP_IOXPUT_32(isp, src->snscb_portid, &dst->snscb_portid);
   1405  1.1  mjacob }
   1406  1.1  mjacob 
   1407  1.1  mjacob /*
   1408  1.1  mjacob  * Generic SNS response - not particularly useful since the per-command data
   1409  1.1  mjacob  * isn't always 16 bit words.
   1410  1.1  mjacob  */
   1411  1.1  mjacob void
   1412  1.1  mjacob isp_get_sns_response(ispsoftc_t *isp, sns_scrsp_t *src,
   1413  1.1  mjacob     sns_scrsp_t *dst, int nwords)
   1414  1.1  mjacob {
   1415  1.1  mjacob 	int i;
   1416  1.1  mjacob 	isp_get_ct_hdr(isp, &src->snscb_cthdr, &dst->snscb_cthdr);
   1417  1.1  mjacob 	ISP_IOXGET_8(isp, &src->snscb_port_type, dst->snscb_port_type);
   1418  1.1  mjacob 	for (i = 0; i < 3; i++) {
   1419  1.1  mjacob 		ISP_IOXGET_8(isp, &src->snscb_port_id[i],
   1420  1.1  mjacob 		    dst->snscb_port_id[i]);
   1421  1.1  mjacob 	}
   1422  1.1  mjacob 	for (i = 0; i < 8; i++) {
   1423  1.1  mjacob 		ISP_IOXGET_8(isp, &src->snscb_portname[i],
   1424  1.1  mjacob 		    dst->snscb_portname[i]);
   1425  1.1  mjacob 	}
   1426  1.1  mjacob 	for (i = 0; i < nwords; i++) {
   1427  1.1  mjacob 		ISP_IOXGET_16(isp, &src->snscb_data[i], dst->snscb_data[i]);
   1428  1.1  mjacob 	}
   1429  1.1  mjacob }
   1430  1.1  mjacob 
   1431  1.1  mjacob void
   1432  1.1  mjacob isp_get_gid_ft_response(ispsoftc_t *isp, sns_gid_ft_rsp_t *src,
   1433  1.1  mjacob     sns_gid_ft_rsp_t *dst, int nwords)
   1434  1.1  mjacob {
   1435  1.1  mjacob 	int i;
   1436  1.1  mjacob 	isp_get_ct_hdr(isp, &src->snscb_cthdr, &dst->snscb_cthdr);
   1437  1.1  mjacob 	for (i = 0; i < nwords; i++) {
   1438  1.1  mjacob 		int j;
   1439  1.1  mjacob 		ISP_IOXGET_8(isp,
   1440  1.1  mjacob 		    &src->snscb_ports[i].control,
   1441  1.1  mjacob 		    dst->snscb_ports[i].control);
   1442  1.1  mjacob 		for (j = 0; j < 3; j++) {
   1443  1.1  mjacob 			ISP_IOXGET_8(isp,
   1444  1.1  mjacob 			    &src->snscb_ports[i].portid[j],
   1445  1.1  mjacob 			    dst->snscb_ports[i].portid[j]);
   1446  1.1  mjacob 		}
   1447  1.1  mjacob 		if (dst->snscb_ports[i].control & 0x80) {
   1448  1.1  mjacob 			break;
   1449  1.1  mjacob 		}
   1450  1.1  mjacob 	}
   1451  1.1  mjacob }
   1452  1.1  mjacob 
   1453  1.1  mjacob void
   1454  1.1  mjacob isp_get_gxn_id_response(ispsoftc_t *isp, sns_gxn_id_rsp_t *src,
   1455  1.1  mjacob     sns_gxn_id_rsp_t *dst)
   1456  1.1  mjacob {
   1457  1.1  mjacob 	int i;
   1458  1.1  mjacob 	isp_get_ct_hdr(isp, &src->snscb_cthdr, &dst->snscb_cthdr);
   1459  1.1  mjacob 	for (i = 0; i < 8; i++)
   1460  1.1  mjacob 		ISP_IOXGET_8(isp, &src->snscb_wwn[i], dst->snscb_wwn[i]);
   1461  1.1  mjacob }
   1462  1.1  mjacob 
   1463  1.1  mjacob void
   1464  1.1  mjacob isp_get_gff_id_response(ispsoftc_t *isp, sns_gff_id_rsp_t *src,
   1465  1.1  mjacob     sns_gff_id_rsp_t *dst)
   1466  1.1  mjacob {
   1467  1.1  mjacob 	int i;
   1468  1.1  mjacob 	isp_get_ct_hdr(isp, &src->snscb_cthdr, &dst->snscb_cthdr);
   1469  1.1  mjacob 	for (i = 0; i < 32; i++) {
   1470  1.1  mjacob 		ISP_IOXGET_32(isp, &src->snscb_fc4_features[i],
   1471  1.1  mjacob 		    dst->snscb_fc4_features[i]);
   1472  1.1  mjacob 	}
   1473  1.1  mjacob }
   1474  1.1  mjacob 
   1475  1.1  mjacob void
   1476  1.1  mjacob isp_get_ga_nxt_response(ispsoftc_t *isp, sns_ga_nxt_rsp_t *src,
   1477  1.1  mjacob     sns_ga_nxt_rsp_t *dst)
   1478  1.1  mjacob {
   1479  1.1  mjacob 	int i;
   1480  1.1  mjacob 	isp_get_ct_hdr(isp, &src->snscb_cthdr, &dst->snscb_cthdr);
   1481  1.1  mjacob 	ISP_IOXGET_8(isp, &src->snscb_port_type, dst->snscb_port_type);
   1482  1.1  mjacob 	for (i = 0; i < 3; i++) {
   1483  1.1  mjacob 		ISP_IOXGET_8(isp, &src->snscb_port_id[i],
   1484  1.1  mjacob 		    dst->snscb_port_id[i]);
   1485  1.1  mjacob 	}
   1486  1.1  mjacob 	for (i = 0; i < 8; i++) {
   1487  1.1  mjacob 		ISP_IOXGET_8(isp, &src->snscb_portname[i],
   1488  1.1  mjacob 		    dst->snscb_portname[i]);
   1489  1.1  mjacob 	}
   1490  1.1  mjacob 	ISP_IOXGET_8(isp, &src->snscb_pnlen, dst->snscb_pnlen);
   1491  1.1  mjacob 	for (i = 0; i < 255; i++) {
   1492  1.1  mjacob 		ISP_IOXGET_8(isp, &src->snscb_pname[i], dst->snscb_pname[i]);
   1493  1.1  mjacob 	}
   1494  1.1  mjacob 	for (i = 0; i < 8; i++) {
   1495  1.1  mjacob 		ISP_IOXGET_8(isp, &src->snscb_nodename[i],
   1496  1.1  mjacob 		    dst->snscb_nodename[i]);
   1497  1.1  mjacob 	}
   1498  1.1  mjacob 	ISP_IOXGET_8(isp, &src->snscb_nnlen, dst->snscb_nnlen);
   1499  1.1  mjacob 	for (i = 0; i < 255; i++) {
   1500  1.1  mjacob 		ISP_IOXGET_8(isp, &src->snscb_nname[i], dst->snscb_nname[i]);
   1501  1.1  mjacob 	}
   1502  1.1  mjacob 	for (i = 0; i < 8; i++) {
   1503  1.1  mjacob 		ISP_IOXGET_8(isp, &src->snscb_ipassoc[i],
   1504  1.1  mjacob 		    dst->snscb_ipassoc[i]);
   1505  1.1  mjacob 	}
   1506  1.1  mjacob 	for (i = 0; i < 16; i++) {
   1507  1.1  mjacob 		ISP_IOXGET_8(isp, &src->snscb_ipaddr[i], dst->snscb_ipaddr[i]);
   1508  1.1  mjacob 	}
   1509  1.1  mjacob 	for (i = 0; i < 4; i++) {
   1510  1.1  mjacob 		ISP_IOXGET_8(isp, &src->snscb_svc_class[i],
   1511  1.1  mjacob 		    dst->snscb_svc_class[i]);
   1512  1.1  mjacob 	}
   1513  1.1  mjacob 	for (i = 0; i < 32; i++) {
   1514  1.1  mjacob 		ISP_IOXGET_8(isp, &src->snscb_fc4_types[i],
   1515  1.1  mjacob 		    dst->snscb_fc4_types[i]);
   1516  1.1  mjacob 	}
   1517  1.1  mjacob 	for (i = 0; i < 8; i++) {
   1518  1.1  mjacob 		ISP_IOXGET_8(isp, &src->snscb_fpname[i], dst->snscb_fpname[i]);
   1519  1.1  mjacob 	}
   1520  1.1  mjacob 	ISP_IOXGET_8(isp, &src->snscb_reserved, dst->snscb_reserved);
   1521  1.1  mjacob 	for (i = 0; i < 3; i++) {
   1522  1.1  mjacob 		ISP_IOXGET_8(isp, &src->snscb_hardaddr[i],
   1523  1.1  mjacob 		    dst->snscb_hardaddr[i]);
   1524  1.1  mjacob 	}
   1525  1.1  mjacob }
   1526  1.1  mjacob 
   1527  1.1  mjacob void
   1528  1.1  mjacob isp_get_els(ispsoftc_t *isp, els_t *src, els_t *dst)
   1529  1.1  mjacob {
   1530  1.1  mjacob 	int i;
   1531  1.1  mjacob 
   1532  1.1  mjacob 	isp_get_hdr(isp, &src->els_hdr, &dst->els_hdr);
   1533  1.1  mjacob 	ISP_IOXGET_32(isp, &src->els_handle, dst->els_handle);
   1534  1.1  mjacob 	ISP_IOXGET_16(isp, &src->els_status, dst->els_status);
   1535  1.1  mjacob 	ISP_IOXGET_16(isp, &src->els_nphdl, dst->els_nphdl);
   1536  1.1  mjacob 	ISP_IOXGET_16(isp, &src->els_xmit_dsd_count, dst->els_xmit_dsd_count);
   1537  1.1  mjacob 	ISP_IOXGET_8(isp, &src->els_vphdl, dst->els_vphdl);
   1538  1.1  mjacob 	ISP_IOXGET_8(isp, &src->els_sof, dst->els_sof);
   1539  1.1  mjacob 	ISP_IOXGET_32(isp, &src->els_rxid, dst->els_rxid);
   1540  1.1  mjacob 	ISP_IOXGET_16(isp, &src->els_recv_dsd_count, dst->els_recv_dsd_count);
   1541  1.1  mjacob 	ISP_IOXGET_8(isp, &src->els_opcode, dst->els_opcode);
   1542  1.1  mjacob 	ISP_IOXGET_8(isp, &src->els_reserved2, dst->els_reserved1);
   1543  1.1  mjacob 	ISP_IOXGET_8(isp, &src->els_did_lo, dst->els_did_lo);
   1544  1.1  mjacob 	ISP_IOXGET_8(isp, &src->els_did_mid, dst->els_did_mid);
   1545  1.1  mjacob 	ISP_IOXGET_8(isp, &src->els_did_hi, dst->els_did_hi);
   1546  1.1  mjacob 	ISP_IOXGET_8(isp, &src->els_reserved2, dst->els_reserved2);
   1547  1.1  mjacob 	ISP_IOXGET_16(isp, &src->els_reserved3, dst->els_reserved3);
   1548  1.1  mjacob 	ISP_IOXGET_16(isp, &src->els_ctl_flags, dst->els_ctl_flags);
   1549  1.1  mjacob 	ISP_IOXGET_32(isp, &src->els_bytecnt, dst->els_bytecnt);
   1550  1.1  mjacob 	ISP_IOXGET_32(isp, &src->els_subcode1, dst->els_subcode1);
   1551  1.1  mjacob 	ISP_IOXGET_32(isp, &src->els_subcode2, dst->els_subcode2);
   1552  1.1  mjacob 	for (i = 0; i < 20; i++) {
   1553  1.1  mjacob 		ISP_IOXGET_8(isp, &src->els_reserved4[i],
   1554  1.1  mjacob 		    dst->els_reserved4[i]);
   1555  1.1  mjacob 	}
   1556  1.1  mjacob }
   1557  1.1  mjacob 
   1558  1.1  mjacob void
   1559  1.1  mjacob isp_put_els(ispsoftc_t *isp, els_t *src, els_t *dst)
   1560  1.1  mjacob {
   1561  1.1  mjacob 	isp_put_hdr(isp, &src->els_hdr, &dst->els_hdr);
   1562  1.1  mjacob 	ISP_IOXPUT_32(isp, src->els_handle, &dst->els_handle);
   1563  1.1  mjacob 	ISP_IOXPUT_16(isp, src->els_status, &dst->els_status);
   1564  1.1  mjacob 	ISP_IOXPUT_16(isp, src->els_nphdl, &dst->els_nphdl);
   1565  1.1  mjacob 	ISP_IOXPUT_16(isp, src->els_xmit_dsd_count, &dst->els_xmit_dsd_count);
   1566  1.1  mjacob 	ISP_IOXPUT_8(isp, src->els_vphdl, &dst->els_vphdl);
   1567  1.1  mjacob 	ISP_IOXPUT_8(isp, src->els_sof, &dst->els_sof);
   1568  1.1  mjacob 	ISP_IOXPUT_32(isp, src->els_rxid, &dst->els_rxid);
   1569  1.1  mjacob 	ISP_IOXPUT_16(isp, src->els_recv_dsd_count, &dst->els_recv_dsd_count);
   1570  1.1  mjacob 	ISP_IOXPUT_8(isp, src->els_opcode, &dst->els_opcode);
   1571  1.1  mjacob 	ISP_IOXPUT_8(isp, src->els_reserved2, &dst->els_reserved1);
   1572  1.1  mjacob 	ISP_IOXPUT_8(isp, src->els_did_lo, &dst->els_did_lo);
   1573  1.1  mjacob 	ISP_IOXPUT_8(isp, src->els_did_mid, &dst->els_did_mid);
   1574  1.1  mjacob 	ISP_IOXPUT_8(isp, src->els_did_hi, &dst->els_did_hi);
   1575  1.1  mjacob 	ISP_IOXPUT_8(isp, src->els_reserved2, &dst->els_reserved2);
   1576  1.1  mjacob 	ISP_IOXPUT_16(isp, src->els_reserved3, &dst->els_reserved3);
   1577  1.1  mjacob 	ISP_IOXPUT_16(isp, src->els_ctl_flags, &dst->els_ctl_flags);
   1578  1.1  mjacob 	ISP_IOXPUT_32(isp, src->els_recv_bytecnt, &dst->els_recv_bytecnt);
   1579  1.1  mjacob 	ISP_IOXPUT_32(isp, src->els_xmit_bytecnt, &dst->els_xmit_bytecnt);
   1580  1.1  mjacob 	ISP_IOXPUT_32(isp, src->els_xmit_dsd_length, &dst->els_xmit_dsd_length);
   1581  1.1  mjacob 	ISP_IOXPUT_16(isp, src->els_xmit_dsd_a1500, &dst->els_xmit_dsd_a1500);
   1582  1.1  mjacob 	ISP_IOXPUT_16(isp, src->els_xmit_dsd_a3116, &dst->els_xmit_dsd_a3116);
   1583  1.1  mjacob 	ISP_IOXPUT_16(isp, src->els_xmit_dsd_a4732, &dst->els_xmit_dsd_a4732);
   1584  1.1  mjacob 	ISP_IOXPUT_16(isp, src->els_xmit_dsd_a6348, &dst->els_xmit_dsd_a6348);
   1585  1.1  mjacob 	ISP_IOXPUT_32(isp, src->els_recv_dsd_length, &dst->els_recv_dsd_length);
   1586  1.1  mjacob 	ISP_IOXPUT_16(isp, src->els_recv_dsd_a1500, &dst->els_recv_dsd_a1500);
   1587  1.1  mjacob 	ISP_IOXPUT_16(isp, src->els_recv_dsd_a3116, &dst->els_recv_dsd_a3116);
   1588  1.1  mjacob 	ISP_IOXPUT_16(isp, src->els_recv_dsd_a4732, &dst->els_recv_dsd_a4732);
   1589  1.1  mjacob 	ISP_IOXPUT_16(isp, src->els_recv_dsd_a6348, &dst->els_recv_dsd_a6348);
   1590  1.1  mjacob }
   1591  1.1  mjacob 
   1592  1.1  mjacob /*
   1593  1.1  mjacob  * FC Structure Canonicalization
   1594  1.1  mjacob  */
   1595  1.1  mjacob 
   1596  1.1  mjacob void
   1597  1.1  mjacob isp_get_fc_hdr(ispsoftc_t *isp, fc_hdr_t *src, fc_hdr_t *dst)
   1598  1.1  mjacob {
   1599  1.1  mjacob         ISP_IOZGET_8(isp, &src->r_ctl, dst->r_ctl);
   1600  1.1  mjacob         ISP_IOZGET_8(isp, &src->d_id[0], dst->d_id[0]);
   1601  1.1  mjacob         ISP_IOZGET_8(isp, &src->d_id[1], dst->d_id[1]);
   1602  1.1  mjacob         ISP_IOZGET_8(isp, &src->d_id[2], dst->d_id[2]);
   1603  1.1  mjacob         ISP_IOZGET_8(isp, &src->cs_ctl, dst->cs_ctl);
   1604  1.1  mjacob         ISP_IOZGET_8(isp, &src->s_id[0], dst->s_id[0]);
   1605  1.1  mjacob         ISP_IOZGET_8(isp, &src->s_id[1], dst->s_id[1]);
   1606  1.1  mjacob         ISP_IOZGET_8(isp, &src->s_id[2], dst->s_id[2]);
   1607  1.1  mjacob         ISP_IOZGET_8(isp, &src->type, dst->type);
   1608  1.1  mjacob         ISP_IOZGET_8(isp, &src->f_ctl, dst->f_ctl);
   1609  1.1  mjacob         ISP_IOZGET_8(isp, &src->seq_id, dst->seq_id);
   1610  1.1  mjacob         ISP_IOZGET_8(isp, &src->df_ctl, dst->df_ctl);
   1611  1.1  mjacob         ISP_IOZGET_16(isp, &src->seq_cnt, dst->seq_cnt);
   1612  1.1  mjacob         ISP_IOZGET_32(isp, &src->ox_id, dst->parameter);
   1613  1.1  mjacob         dst->ox_id = dst->parameter;
   1614  1.1  mjacob         dst->rx_id = dst->parameter >> 16;
   1615  1.1  mjacob         ISP_IOZGET_32(isp, &src->parameter, dst->parameter);
   1616  1.1  mjacob }
   1617  1.1  mjacob 
   1618  1.1  mjacob void
   1619  1.1  mjacob isp_get_fcp_cmnd_iu(ispsoftc_t *isp, fcp_cmnd_iu_t *src, fcp_cmnd_iu_t *dst)
   1620  1.1  mjacob {
   1621  1.1  mjacob 	int i;
   1622  1.1  mjacob 
   1623  1.1  mjacob 	for (i = 0; i < 8; i++) {
   1624  1.1  mjacob 		ISP_IOZGET_8(isp, &src->fcp_cmnd_lun[i], dst->fcp_cmnd_lun[i]);
   1625  1.1  mjacob 	}
   1626  1.1  mjacob         ISP_IOZGET_8(isp, &src->fcp_cmnd_crn, dst->fcp_cmnd_crn);
   1627  1.1  mjacob         ISP_IOZGET_8(isp, &src->fcp_cmnd_task_attribute,
   1628  1.1  mjacob 	    dst->fcp_cmnd_task_attribute);
   1629  1.1  mjacob         ISP_IOZGET_8(isp, &src->fcp_cmnd_task_management,
   1630  1.1  mjacob 	    dst->fcp_cmnd_task_management);
   1631  1.1  mjacob         ISP_IOZGET_8(isp, &src->fcp_cmnd_alen_datadir,
   1632  1.1  mjacob 	    dst->fcp_cmnd_alen_datadir);
   1633  1.1  mjacob 	for (i = 0; i < 16; i++) {
   1634  1.1  mjacob 		ISP_IOZGET_8(isp, &src->cdb_dl.sf.fcp_cmnd_cdb[i],
   1635  1.1  mjacob 		    dst->cdb_dl.sf.fcp_cmnd_cdb[i]);
   1636  1.1  mjacob 	}
   1637  1.1  mjacob 	ISP_IOZGET_32(isp, &src->cdb_dl.sf.fcp_cmnd_dl,
   1638  1.1  mjacob 	    dst->cdb_dl.sf.fcp_cmnd_dl);
   1639  1.1  mjacob }
   1640  1.1  mjacob 
   1641  1.1  mjacob void
   1642  1.1  mjacob isp_put_rft_id(ispsoftc_t *isp, rft_id_t *src, rft_id_t *dst)
   1643  1.1  mjacob {
   1644  1.1  mjacob 	int i;
   1645  1.1  mjacob 	isp_put_ct_hdr(isp, &src->rftid_hdr, &dst->rftid_hdr);
   1646  1.1  mjacob 	ISP_IOZPUT_8(isp, src->rftid_reserved, &dst->rftid_reserved);
   1647  1.1  mjacob 	for (i = 0; i < 3; i++) {
   1648  1.1  mjacob 		ISP_IOZPUT_8(isp, src->rftid_portid[i], &dst->rftid_portid[i]);
   1649  1.1  mjacob 	}
   1650  1.1  mjacob 	for (i = 0; i < 8; i++) {
   1651  1.1  mjacob 		ISP_IOZPUT_32(isp, src->rftid_fc4types[i],
   1652  1.1  mjacob 		    &dst->rftid_fc4types[i]);
   1653  1.1  mjacob 	}
   1654  1.1  mjacob }
   1655  1.1  mjacob 
   1656  1.1  mjacob void
   1657  1.1  mjacob isp_get_ct_hdr(ispsoftc_t *isp, ct_hdr_t *src, ct_hdr_t *dst)
   1658  1.1  mjacob {
   1659  1.1  mjacob 	ISP_IOZGET_8(isp, &src->ct_revision, dst->ct_revision);
   1660  1.1  mjacob 	ISP_IOZGET_8(isp, &src->ct_in_id[0], dst->ct_in_id[0]);
   1661  1.1  mjacob 	ISP_IOZGET_8(isp, &src->ct_in_id[1], dst->ct_in_id[1]);
   1662  1.1  mjacob 	ISP_IOZGET_8(isp, &src->ct_in_id[2], dst->ct_in_id[2]);
   1663  1.1  mjacob 	ISP_IOZGET_8(isp, &src->ct_fcs_type, dst->ct_fcs_type);
   1664  1.1  mjacob 	ISP_IOZGET_8(isp, &src->ct_fcs_subtype, dst->ct_fcs_subtype);
   1665  1.1  mjacob 	ISP_IOZGET_8(isp, &src->ct_options, dst->ct_options);
   1666  1.1  mjacob 	ISP_IOZGET_8(isp, &src->ct_reserved0, dst->ct_reserved0);
   1667  1.1  mjacob 	ISP_IOZGET_16(isp, &src->ct_cmd_resp, dst->ct_cmd_resp);
   1668  1.1  mjacob 	ISP_IOZGET_16(isp, &src->ct_bcnt_resid, dst->ct_bcnt_resid);
   1669  1.1  mjacob 	ISP_IOZGET_8(isp, &src->ct_reserved1, dst->ct_reserved1);
   1670  1.1  mjacob 	ISP_IOZGET_8(isp, &src->ct_reason, dst->ct_reason);
   1671  1.1  mjacob 	ISP_IOZGET_8(isp, &src->ct_explanation, dst->ct_explanation);
   1672  1.1  mjacob 	ISP_IOZGET_8(isp, &src->ct_vunique, dst->ct_vunique);
   1673  1.1  mjacob }
   1674  1.1  mjacob 
   1675  1.1  mjacob void
   1676  1.1  mjacob isp_put_ct_hdr(ispsoftc_t *isp, ct_hdr_t *src, ct_hdr_t *dst)
   1677  1.1  mjacob {
   1678  1.1  mjacob 	ISP_IOZPUT_8(isp, src->ct_revision, &dst->ct_revision);
   1679  1.1  mjacob 	ISP_IOZPUT_8(isp, src->ct_in_id[0], &dst->ct_in_id[0]);
   1680  1.1  mjacob 	ISP_IOZPUT_8(isp, src->ct_in_id[1], &dst->ct_in_id[1]);
   1681  1.1  mjacob 	ISP_IOZPUT_8(isp, src->ct_in_id[2], &dst->ct_in_id[2]);
   1682  1.1  mjacob 	ISP_IOZPUT_8(isp, src->ct_fcs_type, &dst->ct_fcs_type);
   1683  1.1  mjacob 	ISP_IOZPUT_8(isp, src->ct_fcs_subtype, &dst->ct_fcs_subtype);
   1684  1.1  mjacob 	ISP_IOZPUT_8(isp, src->ct_options, &dst->ct_options);
   1685  1.1  mjacob 	ISP_IOZPUT_8(isp, src->ct_reserved0, &dst->ct_reserved0);
   1686  1.1  mjacob 	ISP_IOZPUT_16(isp, src->ct_cmd_resp, &dst->ct_cmd_resp);
   1687  1.1  mjacob 	ISP_IOZPUT_16(isp, src->ct_bcnt_resid, &dst->ct_bcnt_resid);
   1688  1.1  mjacob 	ISP_IOZPUT_8(isp, src->ct_reserved1, &dst->ct_reserved1);
   1689  1.1  mjacob 	ISP_IOZPUT_8(isp, src->ct_reason, &dst->ct_reason);
   1690  1.1  mjacob 	ISP_IOZPUT_8(isp, src->ct_explanation, &dst->ct_explanation);
   1691  1.1  mjacob 	ISP_IOZPUT_8(isp, src->ct_vunique, &dst->ct_vunique);
   1692  1.1  mjacob }
   1693  1.1  mjacob 
   1694  1.1  mjacob #ifdef	ISP_TARGET_MODE
   1695  1.1  mjacob int
   1696  1.1  mjacob isp_save_xs_tgt(ispsoftc_t *isp, void *xs, uint32_t *handlep)
   1697  1.1  mjacob {
   1698  1.1  mjacob 	int i;
   1699  1.1  mjacob 
   1700  1.1  mjacob 	for (i = 0; i < (int) isp->isp_maxcmds; i++) {
   1701  1.1  mjacob 		if (isp->isp_tgtlist[i] == NULL) {
   1702  1.1  mjacob 			break;
   1703  1.1  mjacob 		}
   1704  1.1  mjacob 	}
   1705  1.1  mjacob 	if (i == isp->isp_maxcmds) {
   1706  1.1  mjacob 		return (-1);
   1707  1.1  mjacob 	}
   1708  1.1  mjacob 	isp->isp_tgtlist[i] = xs;
   1709  1.1  mjacob 	*handlep = (i+1) | 0x8000;
   1710  1.1  mjacob 	return (0);
   1711  1.1  mjacob }
   1712  1.1  mjacob 
   1713  1.1  mjacob void *
   1714  1.1  mjacob isp_find_xs_tgt(ispsoftc_t *isp, uint32_t handle)
   1715  1.1  mjacob {
   1716  1.1  mjacob 	if (handle == 0 || IS_TARGET_HANDLE(handle) == 0 ||
   1717  1.1  mjacob 	    (handle & ISP_HANDLE_MASK) > isp->isp_maxcmds) {
   1718  1.1  mjacob 		isp_prt(isp, ISP_LOGERR, "bad handle in isp_find_xs_tgt");
   1719  1.1  mjacob 		return (NULL);
   1720  1.1  mjacob 	} else {
   1721  1.1  mjacob 		return (isp->isp_tgtlist[(handle & ISP_HANDLE_MASK) - 1]);
   1722  1.1  mjacob 	}
   1723  1.1  mjacob }
   1724  1.1  mjacob 
   1725  1.1  mjacob uint32_t
   1726  1.1  mjacob isp_find_tgt_handle(ispsoftc_t *isp, void *xs)
   1727  1.1  mjacob {
   1728  1.1  mjacob 	int i;
   1729  1.1  mjacob 	if (xs != NULL) {
   1730  1.1  mjacob 		for (i = 0; i < isp->isp_maxcmds; i++) {
   1731  1.1  mjacob 			if (isp->isp_tgtlist[i] == xs) {
   1732  1.1  mjacob 				return ((i+1) & ISP_HANDLE_MASK);
   1733  1.1  mjacob 			}
   1734  1.1  mjacob 		}
   1735  1.1  mjacob 	}
   1736  1.1  mjacob 	return (0);
   1737  1.1  mjacob }
   1738  1.1  mjacob 
   1739  1.1  mjacob void
   1740  1.1  mjacob isp_destroy_tgt_handle(ispsoftc_t *isp, uint32_t handle)
   1741  1.1  mjacob {
   1742  1.1  mjacob 	if (handle == 0 || IS_TARGET_HANDLE(handle) == 0 ||
   1743  1.1  mjacob 	    (handle & ISP_HANDLE_MASK) > isp->isp_maxcmds) {
   1744  1.1  mjacob 		isp_prt(isp, ISP_LOGERR,
   1745  1.1  mjacob 		    "bad handle in isp_destroy_tgt_handle");
   1746  1.1  mjacob 	} else {
   1747  1.1  mjacob 		isp->isp_tgtlist[(handle & ISP_HANDLE_MASK) - 1] = NULL;
   1748  1.1  mjacob 	}
   1749  1.1  mjacob }
   1750  1.1  mjacob 
   1751  1.1  mjacob void
   1752  1.1  mjacob isp_put_atio(ispsoftc_t *isp, at_entry_t *src, at_entry_t *dst)
   1753  1.1  mjacob {
   1754  1.1  mjacob 	int i;
   1755  1.1  mjacob 	isp_put_hdr(isp, &src->at_header, &dst->at_header);
   1756  1.1  mjacob 	ISP_IOXPUT_16(isp, src->at_reserved, &dst->at_reserved);
   1757  1.1  mjacob 	ISP_IOXPUT_16(isp, src->at_handle, &dst->at_handle);
   1758  1.1  mjacob 	if (ISP_IS_SBUS(isp)) {
   1759  1.1  mjacob 		ISP_IOXPUT_8(isp, src->at_lun, &dst->at_iid);
   1760  1.1  mjacob 		ISP_IOXPUT_8(isp, src->at_iid, &dst->at_lun);
   1761  1.1  mjacob 		ISP_IOXPUT_8(isp, src->at_cdblen, &dst->at_tgt);
   1762  1.1  mjacob 		ISP_IOXPUT_8(isp, src->at_tgt, &dst->at_cdblen);
   1763  1.1  mjacob 		ISP_IOXPUT_8(isp, src->at_status, &dst->at_scsi_status);
   1764  1.1  mjacob 		ISP_IOXPUT_8(isp, src->at_scsi_status, &dst->at_status);
   1765  1.1  mjacob 		ISP_IOXPUT_8(isp, src->at_tag_val, &dst->at_tag_type);
   1766  1.1  mjacob 		ISP_IOXPUT_8(isp, src->at_tag_type, &dst->at_tag_val);
   1767  1.1  mjacob 	} else {
   1768  1.1  mjacob 		ISP_IOXPUT_8(isp, src->at_lun, &dst->at_lun);
   1769  1.1  mjacob 		ISP_IOXPUT_8(isp, src->at_iid, &dst->at_iid);
   1770  1.1  mjacob 		ISP_IOXPUT_8(isp, src->at_cdblen, &dst->at_cdblen);
   1771  1.1  mjacob 		ISP_IOXPUT_8(isp, src->at_tgt, &dst->at_tgt);
   1772  1.1  mjacob 		ISP_IOXPUT_8(isp, src->at_status, &dst->at_status);
   1773  1.1  mjacob 		ISP_IOXPUT_8(isp, src->at_scsi_status,
   1774  1.1  mjacob 		    &dst->at_scsi_status);
   1775  1.1  mjacob 		ISP_IOXPUT_8(isp, src->at_tag_val, &dst->at_tag_val);
   1776  1.1  mjacob 		ISP_IOXPUT_8(isp, src->at_tag_type, &dst->at_tag_type);
   1777  1.1  mjacob 	}
   1778  1.1  mjacob 	ISP_IOXPUT_32(isp, src->at_flags, &dst->at_flags);
   1779  1.1  mjacob 	for (i = 0; i < ATIO_CDBLEN; i++) {
   1780  1.1  mjacob 		ISP_IOXPUT_8(isp, src->at_cdb[i], &dst->at_cdb[i]);
   1781  1.1  mjacob 	}
   1782  1.1  mjacob 	for (i = 0; i < QLTM_SENSELEN; i++) {
   1783  1.1  mjacob 		ISP_IOXPUT_8(isp, src->at_sense[i], &dst->at_sense[i]);
   1784  1.1  mjacob 	}
   1785  1.1  mjacob }
   1786  1.1  mjacob 
   1787  1.1  mjacob void
   1788  1.1  mjacob isp_get_atio(ispsoftc_t *isp, at_entry_t *src, at_entry_t *dst)
   1789  1.1  mjacob {
   1790  1.1  mjacob 	int i;
   1791  1.1  mjacob 	isp_get_hdr(isp, &src->at_header, &dst->at_header);
   1792  1.1  mjacob 	ISP_IOXGET_16(isp, &src->at_reserved, dst->at_reserved);
   1793  1.1  mjacob 	ISP_IOXGET_16(isp, &src->at_handle, dst->at_handle);
   1794  1.1  mjacob 	if (ISP_IS_SBUS(isp)) {
   1795  1.1  mjacob 		ISP_IOXGET_8(isp, &src->at_lun, dst->at_iid);
   1796  1.1  mjacob 		ISP_IOXGET_8(isp, &src->at_iid, dst->at_lun);
   1797  1.1  mjacob 		ISP_IOXGET_8(isp, &src->at_cdblen, dst->at_tgt);
   1798  1.1  mjacob 		ISP_IOXGET_8(isp, &src->at_tgt, dst->at_cdblen);
   1799  1.1  mjacob 		ISP_IOXGET_8(isp, &src->at_status, dst->at_scsi_status);
   1800  1.1  mjacob 		ISP_IOXGET_8(isp, &src->at_scsi_status, dst->at_status);
   1801  1.1  mjacob 		ISP_IOXGET_8(isp, &src->at_tag_val, dst->at_tag_type);
   1802  1.1  mjacob 		ISP_IOXGET_8(isp, &src->at_tag_type, dst->at_tag_val);
   1803  1.1  mjacob 	} else {
   1804  1.1  mjacob 		ISP_IOXGET_8(isp, &src->at_lun, dst->at_lun);
   1805  1.1  mjacob 		ISP_IOXGET_8(isp, &src->at_iid, dst->at_iid);
   1806  1.1  mjacob 		ISP_IOXGET_8(isp, &src->at_cdblen, dst->at_cdblen);
   1807  1.1  mjacob 		ISP_IOXGET_8(isp, &src->at_tgt, dst->at_tgt);
   1808  1.1  mjacob 		ISP_IOXGET_8(isp, &src->at_status, dst->at_status);
   1809  1.1  mjacob 		ISP_IOXGET_8(isp, &src->at_scsi_status,
   1810  1.1  mjacob 		    dst->at_scsi_status);
   1811  1.1  mjacob 		ISP_IOXGET_8(isp, &src->at_tag_val, dst->at_tag_val);
   1812  1.1  mjacob 		ISP_IOXGET_8(isp, &src->at_tag_type, dst->at_tag_type);
   1813  1.1  mjacob 	}
   1814  1.1  mjacob 	ISP_IOXGET_32(isp, &src->at_flags, dst->at_flags);
   1815  1.1  mjacob 	for (i = 0; i < ATIO_CDBLEN; i++) {
   1816  1.1  mjacob 		ISP_IOXGET_8(isp, &src->at_cdb[i], dst->at_cdb[i]);
   1817  1.1  mjacob 	}
   1818  1.1  mjacob 	for (i = 0; i < QLTM_SENSELEN; i++) {
   1819  1.1  mjacob 		ISP_IOXGET_8(isp, &src->at_sense[i], dst->at_sense[i]);
   1820  1.1  mjacob 	}
   1821  1.1  mjacob }
   1822  1.1  mjacob 
   1823  1.1  mjacob void
   1824  1.1  mjacob isp_put_atio2(ispsoftc_t *isp, at2_entry_t *src, at2_entry_t *dst)
   1825  1.1  mjacob {
   1826  1.1  mjacob 	int i;
   1827  1.1  mjacob 	isp_put_hdr(isp, &src->at_header, &dst->at_header);
   1828  1.1  mjacob 	ISP_IOXPUT_32(isp, src->at_reserved, &dst->at_reserved);
   1829  1.1  mjacob 	ISP_IOXPUT_8(isp, src->at_lun, &dst->at_lun);
   1830  1.1  mjacob 	ISP_IOXPUT_8(isp, src->at_iid, &dst->at_iid);
   1831  1.1  mjacob 	ISP_IOXPUT_16(isp, src->at_rxid, &dst->at_rxid);
   1832  1.1  mjacob 	ISP_IOXPUT_16(isp, src->at_flags, &dst->at_flags);
   1833  1.1  mjacob 	ISP_IOXPUT_16(isp, src->at_status, &dst->at_status);
   1834  1.1  mjacob 	ISP_IOXPUT_8(isp, src->at_crn, &dst->at_crn);
   1835  1.1  mjacob 	ISP_IOXPUT_8(isp, src->at_taskcodes, &dst->at_taskcodes);
   1836  1.1  mjacob 	ISP_IOXPUT_8(isp, src->at_taskflags, &dst->at_taskflags);
   1837  1.1  mjacob 	ISP_IOXPUT_8(isp, src->at_execodes, &dst->at_execodes);
   1838  1.1  mjacob 	for (i = 0; i < ATIO2_CDBLEN; i++) {
   1839  1.1  mjacob 		ISP_IOXPUT_8(isp, src->at_cdb[i], &dst->at_cdb[i]);
   1840  1.1  mjacob 	}
   1841  1.1  mjacob 	ISP_IOXPUT_32(isp, src->at_datalen, &dst->at_datalen);
   1842  1.1  mjacob 	ISP_IOXPUT_16(isp, src->at_scclun, &dst->at_scclun);
   1843  1.1  mjacob 	for (i = 0; i < 4; i++) {
   1844  1.1  mjacob 		ISP_IOXPUT_16(isp, src->at_wwpn[i], &dst->at_wwpn[i]);
   1845  1.1  mjacob 	}
   1846  1.1  mjacob 	for (i = 0; i < 6; i++) {
   1847  1.1  mjacob 		ISP_IOXPUT_16(isp, src->at_reserved2[i],
   1848  1.1  mjacob 		    &dst->at_reserved2[i]);
   1849  1.1  mjacob 	}
   1850  1.1  mjacob 	ISP_IOXPUT_16(isp, src->at_oxid, &dst->at_oxid);
   1851  1.1  mjacob }
   1852  1.1  mjacob 
   1853  1.1  mjacob void
   1854  1.1  mjacob isp_put_atio2e(ispsoftc_t *isp, at2e_entry_t *src, at2e_entry_t *dst)
   1855  1.1  mjacob {
   1856  1.1  mjacob 	int i;
   1857  1.1  mjacob 	isp_put_hdr(isp, &src->at_header, &dst->at_header);
   1858  1.1  mjacob 	ISP_IOXPUT_32(isp, src->at_reserved, &dst->at_reserved);
   1859  1.1  mjacob 	ISP_IOXPUT_16(isp, src->at_iid, &dst->at_iid);
   1860  1.1  mjacob 	ISP_IOXPUT_16(isp, src->at_rxid, &dst->at_rxid);
   1861  1.1  mjacob 	ISP_IOXPUT_16(isp, src->at_flags, &dst->at_flags);
   1862  1.1  mjacob 	ISP_IOXPUT_16(isp, src->at_status, &dst->at_status);
   1863  1.1  mjacob 	ISP_IOXPUT_8(isp, src->at_crn, &dst->at_crn);
   1864  1.1  mjacob 	ISP_IOXPUT_8(isp, src->at_taskcodes, &dst->at_taskcodes);
   1865  1.1  mjacob 	ISP_IOXPUT_8(isp, src->at_taskflags, &dst->at_taskflags);
   1866  1.1  mjacob 	ISP_IOXPUT_8(isp, src->at_execodes, &dst->at_execodes);
   1867  1.1  mjacob 	for (i = 0; i < ATIO2_CDBLEN; i++) {
   1868  1.1  mjacob 		ISP_IOXPUT_8(isp, src->at_cdb[i], &dst->at_cdb[i]);
   1869  1.1  mjacob 	}
   1870  1.1  mjacob 	ISP_IOXPUT_32(isp, src->at_datalen, &dst->at_datalen);
   1871  1.1  mjacob 	ISP_IOXPUT_16(isp, src->at_scclun, &dst->at_scclun);
   1872  1.1  mjacob 	for (i = 0; i < 4; i++) {
   1873  1.1  mjacob 		ISP_IOXPUT_16(isp, src->at_wwpn[i], &dst->at_wwpn[i]);
   1874  1.1  mjacob 	}
   1875  1.1  mjacob 	for (i = 0; i < 6; i++) {
   1876  1.1  mjacob 		ISP_IOXPUT_16(isp, src->at_reserved2[i],
   1877  1.1  mjacob 		    &dst->at_reserved2[i]);
   1878  1.1  mjacob 	}
   1879  1.1  mjacob 	ISP_IOXPUT_16(isp, src->at_oxid, &dst->at_oxid);
   1880  1.1  mjacob }
   1881  1.1  mjacob 
   1882  1.1  mjacob void
   1883  1.1  mjacob isp_get_atio2(ispsoftc_t *isp, at2_entry_t *src, at2_entry_t *dst)
   1884  1.1  mjacob {
   1885  1.1  mjacob 	int i;
   1886  1.1  mjacob 	isp_get_hdr(isp, &src->at_header, &dst->at_header);
   1887  1.1  mjacob 	ISP_IOXGET_32(isp, &src->at_reserved, dst->at_reserved);
   1888  1.1  mjacob 	ISP_IOXGET_8(isp, &src->at_lun, dst->at_lun);
   1889  1.1  mjacob 	ISP_IOXGET_8(isp, &src->at_iid, dst->at_iid);
   1890  1.1  mjacob 	ISP_IOXGET_16(isp, &src->at_rxid, dst->at_rxid);
   1891  1.1  mjacob 	ISP_IOXGET_16(isp, &src->at_flags, dst->at_flags);
   1892  1.1  mjacob 	ISP_IOXGET_16(isp, &src->at_status, dst->at_status);
   1893  1.1  mjacob 	ISP_IOXGET_8(isp, &src->at_crn, dst->at_crn);
   1894  1.1  mjacob 	ISP_IOXGET_8(isp, &src->at_taskcodes, dst->at_taskcodes);
   1895  1.1  mjacob 	ISP_IOXGET_8(isp, &src->at_taskflags, dst->at_taskflags);
   1896  1.1  mjacob 	ISP_IOXGET_8(isp, &src->at_execodes, dst->at_execodes);
   1897  1.1  mjacob 	for (i = 0; i < ATIO2_CDBLEN; i++) {
   1898  1.1  mjacob 		ISP_IOXGET_8(isp, &src->at_cdb[i], dst->at_cdb[i]);
   1899  1.1  mjacob 	}
   1900  1.1  mjacob 	ISP_IOXGET_32(isp, &src->at_datalen, dst->at_datalen);
   1901  1.1  mjacob 	ISP_IOXGET_16(isp, &src->at_scclun, dst->at_scclun);
   1902  1.1  mjacob 	for (i = 0; i < 4; i++) {
   1903  1.1  mjacob 		ISP_IOXGET_16(isp, &src->at_wwpn[i], dst->at_wwpn[i]);
   1904  1.1  mjacob 	}
   1905  1.1  mjacob 	for (i = 0; i < 6; i++) {
   1906  1.1  mjacob 		ISP_IOXGET_16(isp, &src->at_reserved2[i],
   1907  1.1  mjacob 		    dst->at_reserved2[i]);
   1908  1.1  mjacob 	}
   1909  1.1  mjacob 	ISP_IOXGET_16(isp, &src->at_oxid, dst->at_oxid);
   1910  1.1  mjacob }
   1911  1.1  mjacob 
   1912  1.1  mjacob void
   1913  1.1  mjacob isp_get_atio2e(ispsoftc_t *isp, at2e_entry_t *src, at2e_entry_t *dst)
   1914  1.1  mjacob {
   1915  1.1  mjacob 	int i;
   1916  1.1  mjacob 	isp_get_hdr(isp, &src->at_header, &dst->at_header);
   1917  1.1  mjacob 	ISP_IOXGET_32(isp, &src->at_reserved, dst->at_reserved);
   1918  1.1  mjacob 	ISP_IOXGET_16(isp, &src->at_iid, dst->at_iid);
   1919  1.1  mjacob 	ISP_IOXGET_16(isp, &src->at_rxid, dst->at_rxid);
   1920  1.1  mjacob 	ISP_IOXGET_16(isp, &src->at_flags, dst->at_flags);
   1921  1.1  mjacob 	ISP_IOXGET_16(isp, &src->at_status, dst->at_status);
   1922  1.1  mjacob 	ISP_IOXGET_8(isp, &src->at_crn, dst->at_crn);
   1923  1.1  mjacob 	ISP_IOXGET_8(isp, &src->at_taskcodes, dst->at_taskcodes);
   1924  1.1  mjacob 	ISP_IOXGET_8(isp, &src->at_taskflags, dst->at_taskflags);
   1925  1.1  mjacob 	ISP_IOXGET_8(isp, &src->at_execodes, dst->at_execodes);
   1926  1.1  mjacob 	for (i = 0; i < ATIO2_CDBLEN; i++) {
   1927  1.1  mjacob 		ISP_IOXGET_8(isp, &src->at_cdb[i], dst->at_cdb[i]);
   1928  1.1  mjacob 	}
   1929  1.1  mjacob 	ISP_IOXGET_32(isp, &src->at_datalen, dst->at_datalen);
   1930  1.1  mjacob 	ISP_IOXGET_16(isp, &src->at_scclun, dst->at_scclun);
   1931  1.1  mjacob 	for (i = 0; i < 4; i++) {
   1932  1.1  mjacob 		ISP_IOXGET_16(isp, &src->at_wwpn[i], dst->at_wwpn[i]);
   1933  1.1  mjacob 	}
   1934  1.1  mjacob 	for (i = 0; i < 6; i++) {
   1935  1.1  mjacob 		ISP_IOXGET_16(isp, &src->at_reserved2[i],
   1936  1.1  mjacob 		    dst->at_reserved2[i]);
   1937  1.1  mjacob 	}
   1938  1.1  mjacob 	ISP_IOXGET_16(isp, &src->at_oxid, dst->at_oxid);
   1939  1.1  mjacob }
   1940  1.1  mjacob 
   1941  1.1  mjacob void
   1942  1.1  mjacob isp_get_atio7(ispsoftc_t *isp, at7_entry_t *src, at7_entry_t *dst)
   1943  1.1  mjacob {
   1944  1.1  mjacob 	ISP_IOXGET_8(isp, &src->at_type, dst->at_type);
   1945  1.1  mjacob 	ISP_IOXGET_8(isp, &src->at_count, dst->at_count);
   1946  1.1  mjacob 	ISP_IOXGET_16(isp, &src->at_ta_len, dst->at_ta_len);
   1947  1.1  mjacob 	ISP_IOXGET_32(isp, &src->at_rxid, dst->at_rxid);
   1948  1.1  mjacob 	isp_get_fc_hdr(isp, &src->at_hdr, &dst->at_hdr);
   1949  1.1  mjacob 	isp_get_fcp_cmnd_iu(isp, &src->at_cmnd, &dst->at_cmnd);
   1950  1.1  mjacob }
   1951  1.1  mjacob 
   1952  1.1  mjacob void
   1953  1.1  mjacob isp_put_ctio(ispsoftc_t *isp, ct_entry_t *src, ct_entry_t *dst)
   1954  1.1  mjacob {
   1955  1.1  mjacob 	int i;
   1956  1.1  mjacob 	isp_put_hdr(isp, &src->ct_header, &dst->ct_header);
   1957  1.1  mjacob 	ISP_IOXPUT_16(isp, src->ct_syshandle, &dst->ct_syshandle);
   1958  1.1  mjacob 	ISP_IOXPUT_16(isp, src->ct_fwhandle, &dst->ct_fwhandle);
   1959  1.1  mjacob 	if (ISP_IS_SBUS(isp)) {
   1960  1.1  mjacob 		ISP_IOXPUT_8(isp, src->ct_iid, &dst->ct_lun);
   1961  1.1  mjacob 		ISP_IOXPUT_8(isp, src->ct_lun, &dst->ct_iid);
   1962  1.1  mjacob 		ISP_IOXPUT_8(isp, src->ct_tgt, &dst->ct_reserved2);
   1963  1.1  mjacob 		ISP_IOXPUT_8(isp, src->ct_reserved2, &dst->ct_tgt);
   1964  1.1  mjacob 		ISP_IOXPUT_8(isp, src->ct_status, &dst->ct_scsi_status);
   1965  1.1  mjacob 		ISP_IOXPUT_8(isp, src->ct_scsi_status, &dst->ct_status);
   1966  1.1  mjacob 		ISP_IOXPUT_8(isp, src->ct_tag_type, &dst->ct_tag_val);
   1967  1.1  mjacob 		ISP_IOXPUT_8(isp, src->ct_tag_val, &dst->ct_tag_type);
   1968  1.1  mjacob 	} else {
   1969  1.1  mjacob 		ISP_IOXPUT_8(isp, src->ct_iid, &dst->ct_iid);
   1970  1.1  mjacob 		ISP_IOXPUT_8(isp, src->ct_lun, &dst->ct_lun);
   1971  1.1  mjacob 		ISP_IOXPUT_8(isp, src->ct_tgt, &dst->ct_tgt);
   1972  1.1  mjacob 		ISP_IOXPUT_8(isp, src->ct_reserved2, &dst->ct_reserved2);
   1973  1.1  mjacob 		ISP_IOXPUT_8(isp, src->ct_scsi_status,
   1974  1.1  mjacob 		    &dst->ct_scsi_status);
   1975  1.1  mjacob 		ISP_IOXPUT_8(isp, src->ct_status, &dst->ct_status);
   1976  1.1  mjacob 		ISP_IOXPUT_8(isp, src->ct_tag_type, &dst->ct_tag_type);
   1977  1.1  mjacob 		ISP_IOXPUT_8(isp, src->ct_tag_val, &dst->ct_tag_val);
   1978  1.1  mjacob 	}
   1979  1.1  mjacob 	ISP_IOXPUT_32(isp, src->ct_flags, &dst->ct_flags);
   1980  1.1  mjacob 	ISP_IOXPUT_32(isp, src->ct_xfrlen, &dst->ct_xfrlen);
   1981  1.1  mjacob 	ISP_IOXPUT_32(isp, src->ct_resid, &dst->ct_resid);
   1982  1.1  mjacob 	ISP_IOXPUT_16(isp, src->ct_timeout, &dst->ct_timeout);
   1983  1.1  mjacob 	ISP_IOXPUT_16(isp, src->ct_seg_count, &dst->ct_seg_count);
   1984  1.1  mjacob 	for (i = 0; i < ISP_RQDSEG; i++) {
   1985  1.1  mjacob 		ISP_IOXPUT_32(isp, src->ct_dataseg[i].ds_base,
   1986  1.1  mjacob 		    &dst->ct_dataseg[i].ds_base);
   1987  1.1  mjacob 		ISP_IOXPUT_32(isp, src->ct_dataseg[i].ds_count,
   1988  1.1  mjacob 		    &dst->ct_dataseg[i].ds_count);
   1989  1.1  mjacob 	}
   1990  1.1  mjacob }
   1991  1.1  mjacob 
   1992  1.1  mjacob void
   1993  1.1  mjacob isp_get_ctio(ispsoftc_t *isp, ct_entry_t *src, ct_entry_t *dst)
   1994  1.1  mjacob {
   1995  1.1  mjacob 	int i;
   1996  1.1  mjacob 	isp_get_hdr(isp, &src->ct_header, &dst->ct_header);
   1997  1.1  mjacob 	ISP_IOXGET_16(isp, &src->ct_syshandle, dst->ct_syshandle);
   1998  1.1  mjacob 	ISP_IOXGET_16(isp, &src->ct_fwhandle, dst->ct_fwhandle);
   1999  1.1  mjacob 	if (ISP_IS_SBUS(isp)) {
   2000  1.1  mjacob 		ISP_IOXGET_8(isp, &src->ct_lun, dst->ct_iid);
   2001  1.1  mjacob 		ISP_IOXGET_8(isp, &src->ct_iid, dst->ct_lun);
   2002  1.1  mjacob 		ISP_IOXGET_8(isp, &src->ct_reserved2, dst->ct_tgt);
   2003  1.1  mjacob 		ISP_IOXGET_8(isp, &src->ct_tgt, dst->ct_reserved2);
   2004  1.1  mjacob 		ISP_IOXGET_8(isp, &src->ct_status, dst->ct_scsi_status);
   2005  1.1  mjacob 		ISP_IOXGET_8(isp, &src->ct_scsi_status, dst->ct_status);
   2006  1.1  mjacob 		ISP_IOXGET_8(isp, &src->ct_tag_val, dst->ct_tag_type);
   2007  1.1  mjacob 		ISP_IOXGET_8(isp, &src->ct_tag_type, dst->ct_tag_val);
   2008  1.1  mjacob 	} else {
   2009  1.1  mjacob 		ISP_IOXGET_8(isp, &src->ct_lun, dst->ct_lun);
   2010  1.1  mjacob 		ISP_IOXGET_8(isp, &src->ct_iid, dst->ct_iid);
   2011  1.1  mjacob 		ISP_IOXGET_8(isp, &src->ct_reserved2, dst->ct_reserved2);
   2012  1.1  mjacob 		ISP_IOXGET_8(isp, &src->ct_tgt, dst->ct_tgt);
   2013  1.1  mjacob 		ISP_IOXGET_8(isp, &src->ct_status, dst->ct_status);
   2014  1.1  mjacob 		ISP_IOXGET_8(isp, &src->ct_scsi_status,
   2015  1.1  mjacob 		    dst->ct_scsi_status);
   2016  1.1  mjacob 		ISP_IOXGET_8(isp, &src->ct_tag_val, dst->ct_tag_val);
   2017  1.1  mjacob 		ISP_IOXGET_8(isp, &src->ct_tag_type, dst->ct_tag_type);
   2018  1.1  mjacob 	}
   2019  1.1  mjacob 	ISP_IOXGET_32(isp, &src->ct_flags, dst->ct_flags);
   2020  1.1  mjacob 	ISP_IOXGET_32(isp, &src->ct_xfrlen, dst->ct_xfrlen);
   2021  1.1  mjacob 	ISP_IOXGET_32(isp, &src->ct_resid, dst->ct_resid);
   2022  1.1  mjacob 	ISP_IOXGET_16(isp, &src->ct_timeout, dst->ct_timeout);
   2023  1.1  mjacob 	ISP_IOXGET_16(isp, &src->ct_seg_count, dst->ct_seg_count);
   2024  1.1  mjacob 	for (i = 0; i < ISP_RQDSEG; i++) {
   2025  1.1  mjacob 		ISP_IOXGET_32(isp,
   2026  1.1  mjacob 		    &src->ct_dataseg[i].ds_base,
   2027  1.1  mjacob 		    dst->ct_dataseg[i].ds_base);
   2028  1.1  mjacob 		ISP_IOXGET_32(isp,
   2029  1.1  mjacob 		    &src->ct_dataseg[i].ds_count,
   2030  1.1  mjacob 		    dst->ct_dataseg[i].ds_count);
   2031  1.1  mjacob 	}
   2032  1.1  mjacob }
   2033  1.1  mjacob 
   2034  1.1  mjacob void
   2035  1.1  mjacob isp_put_ctio2(ispsoftc_t *isp, ct2_entry_t *src, ct2_entry_t *dst)
   2036  1.1  mjacob {
   2037  1.1  mjacob 	int i;
   2038  1.1  mjacob 	isp_put_hdr(isp, &src->ct_header, &dst->ct_header);
   2039  1.1  mjacob 	ISP_IOXPUT_32(isp, src->ct_syshandle, &dst->ct_syshandle);
   2040  1.1  mjacob 	ISP_IOXPUT_8(isp, src->ct_lun, &dst->ct_lun);
   2041  1.1  mjacob 	ISP_IOXPUT_8(isp, src->ct_iid, &dst->ct_iid);
   2042  1.1  mjacob 	ISP_IOXPUT_16(isp, src->ct_rxid, &dst->ct_rxid);
   2043  1.1  mjacob 	ISP_IOXPUT_16(isp, src->ct_flags, &dst->ct_flags);
   2044  1.1  mjacob 	ISP_IOXPUT_16(isp, src->ct_timeout, &dst->ct_timeout);
   2045  1.1  mjacob 	ISP_IOXPUT_16(isp, src->ct_seg_count, &dst->ct_seg_count);
   2046  1.1  mjacob 	ISP_IOXPUT_32(isp, src->ct_resid, &dst->ct_resid);
   2047  1.1  mjacob 	ISP_IOXPUT_32(isp, src->ct_reloff, &dst->ct_reloff);
   2048  1.1  mjacob 	if ((src->ct_flags & CT2_FLAG_MMASK) == CT2_FLAG_MODE0) {
   2049  1.1  mjacob 		ISP_IOXPUT_32(isp, src->rsp.m0._reserved,
   2050  1.1  mjacob 		    &dst->rsp.m0._reserved);
   2051  1.1  mjacob 		ISP_IOXPUT_16(isp, src->rsp.m0._reserved2,
   2052  1.1  mjacob 		    &dst->rsp.m0._reserved2);
   2053  1.1  mjacob 		ISP_IOXPUT_16(isp, src->rsp.m0.ct_scsi_status,
   2054  1.1  mjacob 		    &dst->rsp.m0.ct_scsi_status);
   2055  1.1  mjacob 		ISP_IOXPUT_32(isp, src->rsp.m0.ct_xfrlen,
   2056  1.1  mjacob 		    &dst->rsp.m0.ct_xfrlen);
   2057  1.1  mjacob 		if (src->ct_header.rqs_entry_type == RQSTYPE_CTIO2) {
   2058  1.1  mjacob 			for (i = 0; i < ISP_RQDSEG_T2; i++) {
   2059  1.1  mjacob 				ISP_IOXPUT_32(isp,
   2060  1.1  mjacob 				    src->rsp.m0.u.ct_dataseg[i].ds_base,
   2061  1.1  mjacob 				    &dst->rsp.m0.u.ct_dataseg[i].ds_base);
   2062  1.1  mjacob 				ISP_IOXPUT_32(isp,
   2063  1.1  mjacob 				    src->rsp.m0.u.ct_dataseg[i].ds_count,
   2064  1.1  mjacob 				    &dst->rsp.m0.u.ct_dataseg[i].ds_count);
   2065  1.1  mjacob 			}
   2066  1.1  mjacob 		} else if (src->ct_header.rqs_entry_type == RQSTYPE_CTIO3) {
   2067  1.1  mjacob 			for (i = 0; i < ISP_RQDSEG_T3; i++) {
   2068  1.1  mjacob 				ISP_IOXPUT_32(isp,
   2069  1.1  mjacob 				    src->rsp.m0.u.ct_dataseg64[i].ds_base,
   2070  1.1  mjacob 				    &dst->rsp.m0.u.ct_dataseg64[i].ds_base);
   2071  1.1  mjacob 				ISP_IOXPUT_32(isp,
   2072  1.1  mjacob 				    src->rsp.m0.u.ct_dataseg64[i].ds_basehi,
   2073  1.1  mjacob 				    &dst->rsp.m0.u.ct_dataseg64[i].ds_basehi);
   2074  1.1  mjacob 				ISP_IOXPUT_32(isp,
   2075  1.1  mjacob 				    src->rsp.m0.u.ct_dataseg64[i].ds_count,
   2076  1.1  mjacob 				    &dst->rsp.m0.u.ct_dataseg64[i].ds_count);
   2077  1.1  mjacob 			}
   2078  1.1  mjacob 		} else if (src->ct_header.rqs_entry_type == RQSTYPE_CTIO4) {
   2079  1.1  mjacob 			ISP_IOXPUT_16(isp, src->rsp.m0.u.ct_dslist.ds_type,
   2080  1.1  mjacob 			    &dst->rsp.m0.u.ct_dslist.ds_type);
   2081  1.1  mjacob 			ISP_IOXPUT_32(isp, src->rsp.m0.u.ct_dslist.ds_segment,
   2082  1.1  mjacob 			    &dst->rsp.m0.u.ct_dslist.ds_segment);
   2083  1.1  mjacob 			ISP_IOXPUT_32(isp, src->rsp.m0.u.ct_dslist.ds_base,
   2084  1.1  mjacob 			    &dst->rsp.m0.u.ct_dslist.ds_base);
   2085  1.1  mjacob 		}
   2086  1.1  mjacob 	} else if ((src->ct_flags & CT2_FLAG_MMASK) == CT2_FLAG_MODE1) {
   2087  1.1  mjacob 		ISP_IOXPUT_16(isp, src->rsp.m1._reserved,
   2088  1.1  mjacob 		    &dst->rsp.m1._reserved);
   2089  1.1  mjacob 		ISP_IOXPUT_16(isp, src->rsp.m1._reserved2,
   2090  1.1  mjacob 		    &dst->rsp.m1._reserved2);
   2091  1.1  mjacob 		ISP_IOXPUT_16(isp, src->rsp.m1.ct_senselen,
   2092  1.1  mjacob 		    &dst->rsp.m1.ct_senselen);
   2093  1.1  mjacob 		ISP_IOXPUT_16(isp, src->rsp.m1.ct_scsi_status,
   2094  1.1  mjacob 		    &dst->rsp.m1.ct_scsi_status);
   2095  1.1  mjacob 		ISP_IOXPUT_16(isp, src->rsp.m1.ct_resplen,
   2096  1.1  mjacob 		    &dst->rsp.m1.ct_resplen);
   2097  1.1  mjacob 		for (i = 0; i < MAXRESPLEN; i++) {
   2098  1.1  mjacob 			ISP_IOXPUT_8(isp, src->rsp.m1.ct_resp[i],
   2099  1.1  mjacob 			    &dst->rsp.m1.ct_resp[i]);
   2100  1.1  mjacob 		}
   2101  1.1  mjacob 	} else {
   2102  1.1  mjacob 		ISP_IOXPUT_32(isp, src->rsp.m2._reserved,
   2103  1.1  mjacob 		    &dst->rsp.m2._reserved);
   2104  1.1  mjacob 		ISP_IOXPUT_16(isp, src->rsp.m2._reserved2,
   2105  1.1  mjacob 		    &dst->rsp.m2._reserved2);
   2106  1.1  mjacob 		ISP_IOXPUT_16(isp, src->rsp.m2._reserved3,
   2107  1.1  mjacob 		    &dst->rsp.m2._reserved3);
   2108  1.1  mjacob 		ISP_IOXPUT_32(isp, src->rsp.m2.ct_datalen,
   2109  1.1  mjacob 		    &dst->rsp.m2.ct_datalen);
   2110  1.1  mjacob 		ISP_IOXPUT_32(isp, src->rsp.m2.ct_fcp_rsp_iudata.ds_base,
   2111  1.1  mjacob 		    &dst->rsp.m2.ct_fcp_rsp_iudata.ds_base);
   2112  1.1  mjacob 		ISP_IOXPUT_32(isp, src->rsp.m2.ct_fcp_rsp_iudata.ds_count,
   2113  1.1  mjacob 		    &dst->rsp.m2.ct_fcp_rsp_iudata.ds_count);
   2114  1.1  mjacob 	}
   2115  1.1  mjacob }
   2116  1.1  mjacob 
   2117  1.1  mjacob void
   2118  1.1  mjacob isp_put_ctio2e(ispsoftc_t *isp, ct2e_entry_t *src, ct2e_entry_t *dst)
   2119  1.1  mjacob {
   2120  1.1  mjacob 	int i;
   2121  1.1  mjacob 	isp_put_hdr(isp, &src->ct_header, &dst->ct_header);
   2122  1.1  mjacob 	ISP_IOXPUT_32(isp, src->ct_syshandle, &dst->ct_syshandle);
   2123  1.1  mjacob 	ISP_IOXPUT_16(isp, src->ct_iid, &dst->ct_iid);
   2124  1.1  mjacob 	ISP_IOXPUT_16(isp, src->ct_rxid, &dst->ct_rxid);
   2125  1.1  mjacob 	ISP_IOXPUT_16(isp, src->ct_flags, &dst->ct_flags);
   2126  1.1  mjacob 	ISP_IOXPUT_16(isp, src->ct_timeout, &dst->ct_timeout);
   2127  1.1  mjacob 	ISP_IOXPUT_16(isp, src->ct_seg_count, &dst->ct_seg_count);
   2128  1.1  mjacob 	ISP_IOXPUT_32(isp, src->ct_resid, &dst->ct_resid);
   2129  1.1  mjacob 	ISP_IOXPUT_32(isp, src->ct_reloff, &dst->ct_reloff);
   2130  1.1  mjacob 	if ((src->ct_flags & CT2_FLAG_MMASK) == CT2_FLAG_MODE0) {
   2131  1.1  mjacob 		ISP_IOXPUT_32(isp, src->rsp.m0._reserved,
   2132  1.1  mjacob 		    &dst->rsp.m0._reserved);
   2133  1.1  mjacob 		ISP_IOXPUT_16(isp, src->rsp.m0._reserved2,
   2134  1.1  mjacob 		    &dst->rsp.m0._reserved2);
   2135  1.1  mjacob 		ISP_IOXPUT_16(isp, src->rsp.m0.ct_scsi_status,
   2136  1.1  mjacob 		    &dst->rsp.m0.ct_scsi_status);
   2137  1.1  mjacob 		ISP_IOXPUT_32(isp, src->rsp.m0.ct_xfrlen,
   2138  1.1  mjacob 		    &dst->rsp.m0.ct_xfrlen);
   2139  1.1  mjacob 		if (src->ct_header.rqs_entry_type == RQSTYPE_CTIO2) {
   2140  1.1  mjacob 			for (i = 0; i < ISP_RQDSEG_T2; i++) {
   2141  1.1  mjacob 				ISP_IOXPUT_32(isp,
   2142  1.1  mjacob 				    src->rsp.m0.u.ct_dataseg[i].ds_base,
   2143  1.1  mjacob 				    &dst->rsp.m0.u.ct_dataseg[i].ds_base);
   2144  1.1  mjacob 				ISP_IOXPUT_32(isp,
   2145  1.1  mjacob 				    src->rsp.m0.u.ct_dataseg[i].ds_count,
   2146  1.1  mjacob 				    &dst->rsp.m0.u.ct_dataseg[i].ds_count);
   2147  1.1  mjacob 			}
   2148  1.1  mjacob 		} else if (src->ct_header.rqs_entry_type == RQSTYPE_CTIO3) {
   2149  1.1  mjacob 			for (i = 0; i < ISP_RQDSEG_T3; i++) {
   2150  1.1  mjacob 				ISP_IOXPUT_32(isp,
   2151  1.1  mjacob 				    src->rsp.m0.u.ct_dataseg64[i].ds_base,
   2152  1.1  mjacob 				    &dst->rsp.m0.u.ct_dataseg64[i].ds_base);
   2153  1.1  mjacob 				ISP_IOXPUT_32(isp,
   2154  1.1  mjacob 				    src->rsp.m0.u.ct_dataseg64[i].ds_basehi,
   2155  1.1  mjacob 				    &dst->rsp.m0.u.ct_dataseg64[i].ds_basehi);
   2156  1.1  mjacob 				ISP_IOXPUT_32(isp,
   2157  1.1  mjacob 				    src->rsp.m0.u.ct_dataseg64[i].ds_count,
   2158  1.1  mjacob 				    &dst->rsp.m0.u.ct_dataseg64[i].ds_count);
   2159  1.1  mjacob 			}
   2160  1.1  mjacob 		} else if (src->ct_header.rqs_entry_type == RQSTYPE_CTIO4) {
   2161  1.1  mjacob 			ISP_IOXPUT_16(isp, src->rsp.m0.u.ct_dslist.ds_type,
   2162  1.1  mjacob 			    &dst->rsp.m0.u.ct_dslist.ds_type);
   2163  1.1  mjacob 			ISP_IOXPUT_32(isp, src->rsp.m0.u.ct_dslist.ds_segment,
   2164  1.1  mjacob 			    &dst->rsp.m0.u.ct_dslist.ds_segment);
   2165  1.1  mjacob 			ISP_IOXPUT_32(isp, src->rsp.m0.u.ct_dslist.ds_base,
   2166  1.1  mjacob 			    &dst->rsp.m0.u.ct_dslist.ds_base);
   2167  1.1  mjacob 		}
   2168  1.1  mjacob 	} else if ((src->ct_flags & CT2_FLAG_MMASK) == CT2_FLAG_MODE1) {
   2169  1.1  mjacob 		ISP_IOXPUT_16(isp, src->rsp.m1._reserved,
   2170  1.1  mjacob 		    &dst->rsp.m1._reserved);
   2171  1.1  mjacob 		ISP_IOXPUT_16(isp, src->rsp.m1._reserved2,
   2172  1.1  mjacob 		    &dst->rsp.m1._reserved2);
   2173  1.1  mjacob 		ISP_IOXPUT_16(isp, src->rsp.m1.ct_senselen,
   2174  1.1  mjacob 		    &dst->rsp.m1.ct_senselen);
   2175  1.1  mjacob 		ISP_IOXPUT_16(isp, src->rsp.m1.ct_scsi_status,
   2176  1.1  mjacob 		    &dst->rsp.m1.ct_scsi_status);
   2177  1.1  mjacob 		ISP_IOXPUT_16(isp, src->rsp.m1.ct_resplen,
   2178  1.1  mjacob 		    &dst->rsp.m1.ct_resplen);
   2179  1.1  mjacob 		for (i = 0; i < MAXRESPLEN; i++) {
   2180  1.1  mjacob 			ISP_IOXPUT_8(isp, src->rsp.m1.ct_resp[i],
   2181  1.1  mjacob 			    &dst->rsp.m1.ct_resp[i]);
   2182  1.1  mjacob 		}
   2183  1.1  mjacob 	} else {
   2184  1.1  mjacob 		ISP_IOXPUT_32(isp, src->rsp.m2._reserved,
   2185  1.1  mjacob 		    &dst->rsp.m2._reserved);
   2186  1.1  mjacob 		ISP_IOXPUT_16(isp, src->rsp.m2._reserved2,
   2187  1.1  mjacob 		    &dst->rsp.m2._reserved2);
   2188  1.1  mjacob 		ISP_IOXPUT_16(isp, src->rsp.m2._reserved3,
   2189  1.1  mjacob 		    &dst->rsp.m2._reserved3);
   2190  1.1  mjacob 		ISP_IOXPUT_32(isp, src->rsp.m2.ct_datalen,
   2191  1.1  mjacob 		    &dst->rsp.m2.ct_datalen);
   2192  1.1  mjacob 		ISP_IOXPUT_32(isp, src->rsp.m2.ct_fcp_rsp_iudata.ds_base,
   2193  1.1  mjacob 		    &dst->rsp.m2.ct_fcp_rsp_iudata.ds_base);
   2194  1.1  mjacob 		ISP_IOXPUT_32(isp, src->rsp.m2.ct_fcp_rsp_iudata.ds_count,
   2195  1.1  mjacob 		    &dst->rsp.m2.ct_fcp_rsp_iudata.ds_count);
   2196  1.1  mjacob 	}
   2197  1.1  mjacob }
   2198  1.1  mjacob 
   2199  1.1  mjacob void
   2200  1.1  mjacob isp_put_ctio7(ispsoftc_t *isp, ct7_entry_t *src, ct7_entry_t *dst)
   2201  1.1  mjacob {
   2202  1.1  mjacob 	int i;
   2203  1.1  mjacob 
   2204  1.1  mjacob 	isp_put_hdr(isp, &src->ct_header, &dst->ct_header);
   2205  1.1  mjacob 	ISP_IOXPUT_32(isp, src->ct_syshandle, &dst->ct_syshandle);
   2206  1.1  mjacob 	ISP_IOXPUT_16(isp, src->ct_nphdl, &dst->ct_nphdl);
   2207  1.1  mjacob 	ISP_IOXPUT_16(isp, src->ct_timeout, &dst->ct_timeout);
   2208  1.1  mjacob 	ISP_IOXPUT_16(isp, src->ct_seg_count, &dst->ct_seg_count);
   2209  1.1  mjacob 	ISP_IOXPUT_8(isp, src->ct_vpindex, &dst->ct_vpindex);
   2210  1.1  mjacob 	ISP_IOXPUT_8(isp, src->ct_xflags, &dst->ct_xflags);
   2211  1.1  mjacob 	ISP_IOXPUT_16(isp, src->ct_iid_lo, &dst->ct_iid_lo);
   2212  1.1  mjacob 	ISP_IOXPUT_8(isp, src->ct_iid_hi, &dst->ct_iid_hi);
   2213  1.1  mjacob 	ISP_IOXPUT_8(isp, src->ct_reserved, &dst->ct_reserved);
   2214  1.1  mjacob 	ISP_IOXPUT_32(isp, src->ct_rxid, &dst->ct_rxid);
   2215  1.1  mjacob 	ISP_IOXPUT_16(isp, src->ct_senselen, &dst->ct_senselen);
   2216  1.1  mjacob 	ISP_IOXPUT_16(isp, src->ct_flags, &dst->ct_flags);
   2217  1.1  mjacob 	ISP_IOXPUT_32(isp, src->ct_resid, &dst->ct_resid);
   2218  1.1  mjacob 	ISP_IOXPUT_16(isp, src->ct_oxid, &dst->ct_oxid);
   2219  1.1  mjacob 	ISP_IOXPUT_16(isp, src->ct_scsi_status, &dst->ct_scsi_status);
   2220  1.1  mjacob 	if ((dst->ct_flags & CT7_FLAG_MMASK) == CT7_FLAG_MODE0) {
   2221  1.1  mjacob 		ISP_IOXPUT_32(isp, src->rsp.m0.reloff, &dst->rsp.m0.reloff);
   2222  1.1  mjacob 		ISP_IOXPUT_32(isp, src->rsp.m0.reserved0,
   2223  1.1  mjacob 		    &dst->rsp.m0.reserved0);
   2224  1.1  mjacob 		ISP_IOXPUT_32(isp, src->rsp.m0.ct_xfrlen,
   2225  1.1  mjacob 		    &dst->rsp.m0.ct_xfrlen);
   2226  1.1  mjacob 		ISP_IOXPUT_32(isp, src->rsp.m0.reserved1,
   2227  1.1  mjacob 		    &dst->rsp.m0.reserved1);
   2228  1.1  mjacob 		ISP_IOXPUT_32(isp, src->rsp.m0.ds.ds_base,
   2229  1.1  mjacob 		    &dst->rsp.m0.ds.ds_base);
   2230  1.1  mjacob 		ISP_IOXPUT_32(isp, src->rsp.m0.ds.ds_basehi,
   2231  1.1  mjacob 		    &dst->rsp.m0.ds.ds_basehi);
   2232  1.1  mjacob 		ISP_IOXPUT_32(isp, src->rsp.m0.ds.ds_count,
   2233  1.1  mjacob 		    &dst->rsp.m0.ds.ds_count);
   2234  1.1  mjacob 	} else if ((dst->ct_flags & CT7_FLAG_MMASK) == CT7_FLAG_MODE1) {
   2235  1.3  mjacob 		uint32_t *a, *b;
   2236  1.3  mjacob 
   2237  1.1  mjacob 		ISP_IOXPUT_16(isp, src->rsp.m1.ct_resplen,
   2238  1.1  mjacob 		    &dst->rsp.m1.ct_resplen);
   2239  1.1  mjacob 		ISP_IOXPUT_16(isp, src->rsp.m1.reserved, &dst->rsp.m1.reserved);
   2240  1.3  mjacob 		a = (uint32_t *) src->rsp.m1.ct_resp;
   2241  1.3  mjacob 		b = (uint32_t *) dst->rsp.m1.ct_resp;
   2242  1.3  mjacob 		for (i = 0; i < (ASIZE(src->rsp.m1.ct_resp) >> 2); i++) {
   2243  1.3  mjacob 			*b++ = ISP_SWAP32(isp, *a++);
   2244  1.1  mjacob 		}
   2245  1.1  mjacob 	} else {
   2246  1.1  mjacob 		ISP_IOXPUT_32(isp, src->rsp.m2.reserved0,
   2247  1.1  mjacob 		    &dst->rsp.m2.reserved0);
   2248  1.1  mjacob 		ISP_IOXPUT_32(isp, src->rsp.m2.ct_datalen,
   2249  1.1  mjacob 		    &dst->rsp.m2.ct_datalen);
   2250  1.1  mjacob 		ISP_IOXPUT_32(isp, src->rsp.m2.reserved1,
   2251  1.1  mjacob 		    &dst->rsp.m2.reserved1);
   2252  1.1  mjacob 		ISP_IOXPUT_32(isp, src->rsp.m2.ct_fcp_rsp_iudata.ds_base,
   2253  1.1  mjacob 		    &dst->rsp.m2.ct_fcp_rsp_iudata.ds_base);
   2254  1.1  mjacob 		ISP_IOXPUT_32(isp, src->rsp.m2.ct_fcp_rsp_iudata.ds_basehi,
   2255  1.1  mjacob 		    &dst->rsp.m2.ct_fcp_rsp_iudata.ds_basehi);
   2256  1.1  mjacob 		ISP_IOXPUT_32(isp, src->rsp.m2.ct_fcp_rsp_iudata.ds_count,
   2257  1.1  mjacob 		    &dst->rsp.m2.ct_fcp_rsp_iudata.ds_count);
   2258  1.1  mjacob 	}
   2259  1.1  mjacob }
   2260  1.1  mjacob 
   2261  1.1  mjacob 
   2262  1.1  mjacob void
   2263  1.1  mjacob isp_get_ctio2(ispsoftc_t *isp, ct2_entry_t *src, ct2_entry_t *dst)
   2264  1.1  mjacob {
   2265  1.1  mjacob 	int i;
   2266  1.1  mjacob 
   2267  1.1  mjacob 	isp_get_hdr(isp, &src->ct_header, &dst->ct_header);
   2268  1.1  mjacob 	ISP_IOXGET_32(isp, &src->ct_syshandle, dst->ct_syshandle);
   2269  1.1  mjacob 	ISP_IOXGET_8(isp, &src->ct_lun, dst->ct_lun);
   2270  1.1  mjacob 	ISP_IOXGET_8(isp, &src->ct_iid, dst->ct_iid);
   2271  1.1  mjacob 	ISP_IOXGET_16(isp, &src->ct_rxid, dst->ct_rxid);
   2272  1.1  mjacob 	ISP_IOXGET_16(isp, &src->ct_flags, dst->ct_flags);
   2273  1.1  mjacob 	ISP_IOXGET_16(isp, &src->ct_status, dst->ct_status);
   2274  1.1  mjacob 	ISP_IOXGET_16(isp, &src->ct_timeout, dst->ct_timeout);
   2275  1.1  mjacob 	ISP_IOXGET_16(isp, &src->ct_seg_count, dst->ct_seg_count);
   2276  1.1  mjacob 	ISP_IOXGET_32(isp, &src->ct_reloff, dst->ct_reloff);
   2277  1.1  mjacob 	ISP_IOXGET_32(isp, &src->ct_resid, dst->ct_resid);
   2278  1.1  mjacob 	if ((dst->ct_flags & CT2_FLAG_MMASK) == CT2_FLAG_MODE0) {
   2279  1.1  mjacob 		ISP_IOXGET_32(isp, &src->rsp.m0._reserved,
   2280  1.1  mjacob 		    dst->rsp.m0._reserved);
   2281  1.1  mjacob 		ISP_IOXGET_16(isp, &src->rsp.m0._reserved2,
   2282  1.1  mjacob 		    dst->rsp.m0._reserved2);
   2283  1.1  mjacob 		ISP_IOXGET_16(isp, &src->rsp.m0.ct_scsi_status,
   2284  1.1  mjacob 		    dst->rsp.m0.ct_scsi_status);
   2285  1.1  mjacob 		ISP_IOXGET_32(isp, &src->rsp.m0.ct_xfrlen,
   2286  1.1  mjacob 		    dst->rsp.m0.ct_xfrlen);
   2287  1.1  mjacob 		if (dst->ct_header.rqs_entry_type == RQSTYPE_CTIO2) {
   2288  1.1  mjacob 			for (i = 0; i < ISP_RQDSEG_T2; i++) {
   2289  1.1  mjacob 				ISP_IOXGET_32(isp,
   2290  1.1  mjacob 				    &src->rsp.m0.u.ct_dataseg[i].ds_base,
   2291  1.1  mjacob 				    dst->rsp.m0.u.ct_dataseg[i].ds_base);
   2292  1.1  mjacob 				ISP_IOXGET_32(isp,
   2293  1.1  mjacob 				    &src->rsp.m0.u.ct_dataseg[i].ds_count,
   2294  1.1  mjacob 				    dst->rsp.m0.u.ct_dataseg[i].ds_count);
   2295  1.1  mjacob 			}
   2296  1.1  mjacob 		} else if (dst->ct_header.rqs_entry_type == RQSTYPE_CTIO3) {
   2297  1.1  mjacob 			for (i = 0; i < ISP_RQDSEG_T3; i++) {
   2298  1.1  mjacob 				ISP_IOXGET_32(isp,
   2299  1.1  mjacob 				    &src->rsp.m0.u.ct_dataseg64[i].ds_base,
   2300  1.1  mjacob 				    dst->rsp.m0.u.ct_dataseg64[i].ds_base);
   2301  1.1  mjacob 				ISP_IOXGET_32(isp,
   2302  1.1  mjacob 				    &src->rsp.m0.u.ct_dataseg64[i].ds_basehi,
   2303  1.1  mjacob 				    dst->rsp.m0.u.ct_dataseg64[i].ds_basehi);
   2304  1.1  mjacob 				ISP_IOXGET_32(isp,
   2305  1.1  mjacob 				    &src->rsp.m0.u.ct_dataseg64[i].ds_count,
   2306  1.1  mjacob 				    dst->rsp.m0.u.ct_dataseg64[i].ds_count);
   2307  1.1  mjacob 			}
   2308  1.1  mjacob 		} else if (dst->ct_header.rqs_entry_type == RQSTYPE_CTIO4) {
   2309  1.1  mjacob 			ISP_IOXGET_16(isp, &src->rsp.m0.u.ct_dslist.ds_type,
   2310  1.1  mjacob 			    dst->rsp.m0.u.ct_dslist.ds_type);
   2311  1.1  mjacob 			ISP_IOXGET_32(isp, &src->rsp.m0.u.ct_dslist.ds_segment,
   2312  1.1  mjacob 			    dst->rsp.m0.u.ct_dslist.ds_segment);
   2313  1.1  mjacob 			ISP_IOXGET_32(isp, &src->rsp.m0.u.ct_dslist.ds_base,
   2314  1.1  mjacob 			    dst->rsp.m0.u.ct_dslist.ds_base);
   2315  1.1  mjacob 		}
   2316  1.1  mjacob 	} else if ((dst->ct_flags & CT2_FLAG_MMASK) == CT2_FLAG_MODE1) {
   2317  1.1  mjacob 		ISP_IOXGET_16(isp, &src->rsp.m1._reserved,
   2318  1.1  mjacob 		    dst->rsp.m1._reserved);
   2319  1.1  mjacob 		ISP_IOXGET_16(isp, &src->rsp.m1._reserved2,
   2320  1.1  mjacob 		    dst->rsp.m1._reserved2);
   2321  1.1  mjacob 		ISP_IOXGET_16(isp, &src->rsp.m1.ct_senselen,
   2322  1.1  mjacob 		    dst->rsp.m1.ct_senselen);
   2323  1.1  mjacob 		ISP_IOXGET_16(isp, &src->rsp.m1.ct_scsi_status,
   2324  1.1  mjacob 		    dst->rsp.m1.ct_scsi_status);
   2325  1.1  mjacob 		ISP_IOXGET_16(isp, &src->rsp.m1.ct_resplen,
   2326  1.1  mjacob 		    dst->rsp.m1.ct_resplen);
   2327  1.1  mjacob 		for (i = 0; i < MAXRESPLEN; i++) {
   2328  1.1  mjacob 			ISP_IOXGET_8(isp, &src->rsp.m1.ct_resp[i],
   2329  1.1  mjacob 			    dst->rsp.m1.ct_resp[i]);
   2330  1.1  mjacob 		}
   2331  1.1  mjacob 	} else {
   2332  1.1  mjacob 		ISP_IOXGET_32(isp, &src->rsp.m2._reserved,
   2333  1.1  mjacob 		    dst->rsp.m2._reserved);
   2334  1.1  mjacob 		ISP_IOXGET_16(isp, &src->rsp.m2._reserved2,
   2335  1.1  mjacob 		    dst->rsp.m2._reserved2);
   2336  1.1  mjacob 		ISP_IOXGET_16(isp, &src->rsp.m2._reserved3,
   2337  1.1  mjacob 		    dst->rsp.m2._reserved3);
   2338  1.1  mjacob 		ISP_IOXGET_32(isp, &src->rsp.m2.ct_datalen,
   2339  1.1  mjacob 		    dst->rsp.m2.ct_datalen);
   2340  1.1  mjacob 		ISP_IOXGET_32(isp, &src->rsp.m2.ct_fcp_rsp_iudata.ds_base,
   2341  1.1  mjacob 		    dst->rsp.m2.ct_fcp_rsp_iudata.ds_base);
   2342  1.1  mjacob 		ISP_IOXGET_32(isp, &src->rsp.m2.ct_fcp_rsp_iudata.ds_count,
   2343  1.1  mjacob 		    dst->rsp.m2.ct_fcp_rsp_iudata.ds_count);
   2344  1.1  mjacob 	}
   2345  1.1  mjacob }
   2346  1.1  mjacob 
   2347  1.1  mjacob void
   2348  1.1  mjacob isp_get_ctio2e(ispsoftc_t *isp, ct2e_entry_t *src, ct2e_entry_t *dst)
   2349  1.1  mjacob {
   2350  1.1  mjacob 	int i;
   2351  1.1  mjacob 
   2352  1.1  mjacob 	isp_get_hdr(isp, &src->ct_header, &dst->ct_header);
   2353  1.1  mjacob 	ISP_IOXGET_32(isp, &src->ct_syshandle, dst->ct_syshandle);
   2354  1.1  mjacob 	ISP_IOXGET_16(isp, &src->ct_iid, dst->ct_iid);
   2355  1.1  mjacob 	ISP_IOXGET_16(isp, &src->ct_rxid, dst->ct_rxid);
   2356  1.1  mjacob 	ISP_IOXGET_16(isp, &src->ct_flags, dst->ct_flags);
   2357  1.1  mjacob 	ISP_IOXGET_16(isp, &src->ct_status, dst->ct_status);
   2358  1.1  mjacob 	ISP_IOXGET_16(isp, &src->ct_timeout, dst->ct_timeout);
   2359  1.1  mjacob 	ISP_IOXGET_16(isp, &src->ct_seg_count, dst->ct_seg_count);
   2360  1.1  mjacob 	ISP_IOXGET_32(isp, &src->ct_reloff, dst->ct_reloff);
   2361  1.1  mjacob 	ISP_IOXGET_32(isp, &src->ct_resid, dst->ct_resid);
   2362  1.1  mjacob 	if ((dst->ct_flags & CT2_FLAG_MMASK) == CT2_FLAG_MODE0) {
   2363  1.1  mjacob 		ISP_IOXGET_32(isp, &src->rsp.m0._reserved,
   2364  1.1  mjacob 		    dst->rsp.m0._reserved);
   2365  1.1  mjacob 		ISP_IOXGET_16(isp, &src->rsp.m0._reserved2,
   2366  1.1  mjacob 		    dst->rsp.m0._reserved2);
   2367  1.1  mjacob 		ISP_IOXGET_16(isp, &src->rsp.m0.ct_scsi_status,
   2368  1.1  mjacob 		    dst->rsp.m0.ct_scsi_status);
   2369  1.1  mjacob 		ISP_IOXGET_32(isp, &src->rsp.m0.ct_xfrlen,
   2370  1.1  mjacob 		    dst->rsp.m0.ct_xfrlen);
   2371  1.1  mjacob 		if (src->ct_header.rqs_entry_type == RQSTYPE_CTIO2) {
   2372  1.1  mjacob 			for (i = 0; i < ISP_RQDSEG_T2; i++) {
   2373  1.1  mjacob 				ISP_IOXGET_32(isp,
   2374  1.1  mjacob 				    &src->rsp.m0.u.ct_dataseg[i].ds_base,
   2375  1.1  mjacob 				    dst->rsp.m0.u.ct_dataseg[i].ds_base);
   2376  1.1  mjacob 				ISP_IOXGET_32(isp,
   2377  1.1  mjacob 				    &src->rsp.m0.u.ct_dataseg[i].ds_count,
   2378  1.1  mjacob 				    dst->rsp.m0.u.ct_dataseg[i].ds_count);
   2379  1.1  mjacob 			}
   2380  1.1  mjacob 		} else if (dst->ct_header.rqs_entry_type == RQSTYPE_CTIO3) {
   2381  1.1  mjacob 			for (i = 0; i < ISP_RQDSEG_T3; i++) {
   2382  1.1  mjacob 				ISP_IOXGET_32(isp,
   2383  1.1  mjacob 				    &src->rsp.m0.u.ct_dataseg64[i].ds_base,
   2384  1.1  mjacob 				    dst->rsp.m0.u.ct_dataseg64[i].ds_base);
   2385  1.1  mjacob 				ISP_IOXGET_32(isp,
   2386  1.1  mjacob 				    &src->rsp.m0.u.ct_dataseg64[i].ds_basehi,
   2387  1.1  mjacob 				    dst->rsp.m0.u.ct_dataseg64[i].ds_basehi);
   2388  1.1  mjacob 				ISP_IOXGET_32(isp,
   2389  1.1  mjacob 				    &src->rsp.m0.u.ct_dataseg64[i].ds_count,
   2390  1.1  mjacob 				    dst->rsp.m0.u.ct_dataseg64[i].ds_count);
   2391  1.1  mjacob 			}
   2392  1.1  mjacob 		} else if (dst->ct_header.rqs_entry_type == RQSTYPE_CTIO4) {
   2393  1.1  mjacob 			ISP_IOXGET_16(isp, &src->rsp.m0.u.ct_dslist.ds_type,
   2394  1.1  mjacob 			    dst->rsp.m0.u.ct_dslist.ds_type);
   2395  1.1  mjacob 			ISP_IOXGET_32(isp, &src->rsp.m0.u.ct_dslist.ds_segment,
   2396  1.1  mjacob 			    dst->rsp.m0.u.ct_dslist.ds_segment);
   2397  1.1  mjacob 			ISP_IOXGET_32(isp, &src->rsp.m0.u.ct_dslist.ds_base,
   2398  1.1  mjacob 			    dst->rsp.m0.u.ct_dslist.ds_base);
   2399  1.1  mjacob 		}
   2400  1.1  mjacob 	} else if ((dst->ct_flags & CT2_FLAG_MMASK) == CT2_FLAG_MODE1) {
   2401  1.1  mjacob 		ISP_IOXGET_16(isp, &src->rsp.m1._reserved,
   2402  1.1  mjacob 		    dst->rsp.m1._reserved);
   2403  1.1  mjacob 		ISP_IOXGET_16(isp, &src->rsp.m1._reserved2,
   2404  1.1  mjacob 		    dst->rsp.m1._reserved2);
   2405  1.1  mjacob 		ISP_IOXGET_16(isp, &src->rsp.m1.ct_senselen,
   2406  1.1  mjacob 		    dst->rsp.m1.ct_senselen);
   2407  1.1  mjacob 		ISP_IOXGET_16(isp, &src->rsp.m1.ct_scsi_status,
   2408  1.1  mjacob 		    dst->rsp.m1.ct_scsi_status);
   2409  1.1  mjacob 		ISP_IOXGET_16(isp, &src->rsp.m1.ct_resplen,
   2410  1.1  mjacob 		    dst->rsp.m1.ct_resplen);
   2411  1.1  mjacob 		for (i = 0; i < MAXRESPLEN; i++) {
   2412  1.1  mjacob 			ISP_IOXGET_8(isp, &src->rsp.m1.ct_resp[i],
   2413  1.1  mjacob 			    dst->rsp.m1.ct_resp[i]);
   2414  1.1  mjacob 		}
   2415  1.1  mjacob 	} else {
   2416  1.1  mjacob 		ISP_IOXGET_32(isp, &src->rsp.m2._reserved,
   2417  1.1  mjacob 		    dst->rsp.m2._reserved);
   2418  1.1  mjacob 		ISP_IOXGET_16(isp, &src->rsp.m2._reserved2,
   2419  1.1  mjacob 		    dst->rsp.m2._reserved2);
   2420  1.1  mjacob 		ISP_IOXGET_16(isp, &src->rsp.m2._reserved3,
   2421  1.1  mjacob 		    dst->rsp.m2._reserved3);
   2422  1.1  mjacob 		ISP_IOXGET_32(isp, &src->rsp.m2.ct_datalen,
   2423  1.1  mjacob 		    dst->rsp.m2.ct_datalen);
   2424  1.1  mjacob 		ISP_IOXGET_32(isp, &src->rsp.m2.ct_fcp_rsp_iudata.ds_base,
   2425  1.1  mjacob 		    dst->rsp.m2.ct_fcp_rsp_iudata.ds_base);
   2426  1.1  mjacob 		ISP_IOXGET_32(isp, &src->rsp.m2.ct_fcp_rsp_iudata.ds_count,
   2427  1.1  mjacob 		    dst->rsp.m2.ct_fcp_rsp_iudata.ds_count);
   2428  1.1  mjacob 	}
   2429  1.1  mjacob }
   2430  1.1  mjacob 
   2431  1.1  mjacob void
   2432  1.1  mjacob isp_get_ctio7(ispsoftc_t *isp, ct7_entry_t *src, ct7_entry_t *dst)
   2433  1.1  mjacob {
   2434  1.1  mjacob 	int i;
   2435  1.1  mjacob 
   2436  1.1  mjacob 	isp_get_hdr(isp, &src->ct_header, &dst->ct_header);
   2437  1.1  mjacob 	ISP_IOXGET_32(isp, &src->ct_syshandle, dst->ct_syshandle);
   2438  1.1  mjacob 	ISP_IOXGET_16(isp, &src->ct_nphdl, dst->ct_nphdl);
   2439  1.1  mjacob 	ISP_IOXGET_16(isp, &src->ct_timeout, dst->ct_timeout);
   2440  1.1  mjacob 	ISP_IOXGET_16(isp, &src->ct_seg_count, dst->ct_seg_count);
   2441  1.1  mjacob 	ISP_IOXGET_8(isp, &src->ct_vpindex, dst->ct_vpindex);
   2442  1.1  mjacob 	ISP_IOXGET_8(isp, &src->ct_xflags, dst->ct_xflags);
   2443  1.1  mjacob 	ISP_IOXGET_16(isp, &src->ct_iid_lo, dst->ct_iid_lo);
   2444  1.1  mjacob 	ISP_IOXGET_8(isp, &src->ct_iid_hi, dst->ct_iid_hi);
   2445  1.1  mjacob 	ISP_IOXGET_8(isp, &src->ct_reserved, dst->ct_reserved);
   2446  1.1  mjacob 	ISP_IOXGET_32(isp, &src->ct_rxid, dst->ct_rxid);
   2447  1.1  mjacob 	ISP_IOXGET_16(isp, &src->ct_senselen, dst->ct_senselen);
   2448  1.1  mjacob 	ISP_IOXGET_16(isp, &src->ct_flags, dst->ct_flags);
   2449  1.1  mjacob 	ISP_IOXGET_32(isp, &src->ct_resid, dst->ct_resid);
   2450  1.1  mjacob 	ISP_IOXGET_16(isp, &src->ct_oxid, dst->ct_oxid);
   2451  1.1  mjacob 	ISP_IOXGET_16(isp, &src->ct_scsi_status, dst->ct_scsi_status);
   2452  1.1  mjacob 	if ((dst->ct_flags & CT7_FLAG_MMASK) == CT7_FLAG_MODE0) {
   2453  1.1  mjacob 		ISP_IOXGET_32(isp, &src->rsp.m0.reloff, dst->rsp.m0.reloff);
   2454  1.1  mjacob 		ISP_IOXGET_32(isp, &src->rsp.m0.reserved0,
   2455  1.1  mjacob 		    dst->rsp.m0.reserved0);
   2456  1.1  mjacob 		ISP_IOXGET_32(isp, &src->rsp.m0.ct_xfrlen,
   2457  1.1  mjacob 		    dst->rsp.m0.ct_xfrlen);
   2458  1.1  mjacob 		ISP_IOXGET_32(isp, &src->rsp.m0.reserved1,
   2459  1.1  mjacob 		    dst->rsp.m0.reserved1);
   2460  1.1  mjacob 		ISP_IOXGET_32(isp, &src->rsp.m0.ds.ds_base,
   2461  1.1  mjacob 		    dst->rsp.m0.ds.ds_base);
   2462  1.1  mjacob 		ISP_IOXGET_32(isp, &src->rsp.m0.ds.ds_basehi,
   2463  1.1  mjacob 		    dst->rsp.m0.ds.ds_basehi);
   2464  1.1  mjacob 		ISP_IOXGET_32(isp, &src->rsp.m0.ds.ds_count,
   2465  1.1  mjacob 		    dst->rsp.m0.ds.ds_count);
   2466  1.1  mjacob 	} else if ((dst->ct_flags & CT7_FLAG_MMASK) == CT7_FLAG_MODE1) {
   2467  1.3  mjacob 		uint32_t *a, *b;
   2468  1.3  mjacob 
   2469  1.1  mjacob 		ISP_IOXGET_16(isp, &src->rsp.m1.ct_resplen,
   2470  1.1  mjacob 		    dst->rsp.m1.ct_resplen);
   2471  1.1  mjacob 		ISP_IOXGET_16(isp, &src->rsp.m1.reserved, dst->rsp.m1.reserved);
   2472  1.3  mjacob 		a = (uint32_t *) src->rsp.m1.ct_resp;
   2473  1.3  mjacob 		b = (uint32_t *) dst->rsp.m1.ct_resp;
   2474  1.1  mjacob 		for (i = 0; i < MAXRESPLEN_24XX; i++) {
   2475  1.1  mjacob 			ISP_IOXGET_8(isp, &src->rsp.m1.ct_resp[i],
   2476  1.1  mjacob 			    dst->rsp.m1.ct_resp[i]);
   2477  1.1  mjacob 		}
   2478  1.3  mjacob 		for (i = 0; i < (ASIZE(src->rsp.m1.ct_resp) >> 2); i++) {
   2479  1.3  mjacob 			*b++ = ISP_SWAP32(isp, *a++);
   2480  1.3  mjacob 		}
   2481  1.1  mjacob 	} else {
   2482  1.1  mjacob 		ISP_IOXGET_32(isp, &src->rsp.m2.reserved0,
   2483  1.1  mjacob 		    dst->rsp.m2.reserved0);
   2484  1.1  mjacob 		ISP_IOXGET_32(isp, &src->rsp.m2.ct_datalen,
   2485  1.1  mjacob 		    dst->rsp.m2.ct_datalen);
   2486  1.1  mjacob 		ISP_IOXGET_32(isp, &src->rsp.m2.reserved1,
   2487  1.1  mjacob 		    dst->rsp.m2.reserved1);
   2488  1.1  mjacob 		ISP_IOXGET_32(isp, &src->rsp.m2.ct_fcp_rsp_iudata.ds_base,
   2489  1.1  mjacob 		    dst->rsp.m2.ct_fcp_rsp_iudata.ds_base);
   2490  1.1  mjacob 		ISP_IOXGET_32(isp, &src->rsp.m2.ct_fcp_rsp_iudata.ds_basehi,
   2491  1.1  mjacob 		    dst->rsp.m2.ct_fcp_rsp_iudata.ds_basehi);
   2492  1.1  mjacob 		ISP_IOXGET_32(isp, &src->rsp.m2.ct_fcp_rsp_iudata.ds_count,
   2493  1.1  mjacob 		    dst->rsp.m2.ct_fcp_rsp_iudata.ds_count);
   2494  1.1  mjacob 	}
   2495  1.1  mjacob }
   2496  1.1  mjacob 
   2497  1.1  mjacob void
   2498  1.1  mjacob isp_put_enable_lun(ispsoftc_t *isp, lun_entry_t *lesrc, lun_entry_t *ledst)
   2499  1.1  mjacob {
   2500  1.1  mjacob 	int i;
   2501  1.1  mjacob 	isp_put_hdr(isp, &lesrc->le_header, &ledst->le_header);
   2502  1.1  mjacob 	ISP_IOXPUT_32(isp, lesrc->le_reserved, &ledst->le_reserved);
   2503  1.1  mjacob 	if (ISP_IS_SBUS(isp)) {
   2504  1.1  mjacob 		ISP_IOXPUT_8(isp, lesrc->le_lun, &ledst->le_rsvd);
   2505  1.1  mjacob 		ISP_IOXPUT_8(isp, lesrc->le_rsvd, &ledst->le_lun);
   2506  1.1  mjacob 		ISP_IOXPUT_8(isp, lesrc->le_ops, &ledst->le_tgt);
   2507  1.1  mjacob 		ISP_IOXPUT_8(isp, lesrc->le_tgt, &ledst->le_ops);
   2508  1.1  mjacob 		ISP_IOXPUT_8(isp, lesrc->le_status, &ledst->le_reserved2);
   2509  1.1  mjacob 		ISP_IOXPUT_8(isp, lesrc->le_reserved2, &ledst->le_status);
   2510  1.1  mjacob 		ISP_IOXPUT_8(isp, lesrc->le_cmd_count, &ledst->le_in_count);
   2511  1.1  mjacob 		ISP_IOXPUT_8(isp, lesrc->le_in_count, &ledst->le_cmd_count);
   2512  1.1  mjacob 		ISP_IOXPUT_8(isp, lesrc->le_cdb6len, &ledst->le_cdb7len);
   2513  1.1  mjacob 		ISP_IOXPUT_8(isp, lesrc->le_cdb7len, &ledst->le_cdb6len);
   2514  1.1  mjacob 	} else {
   2515  1.1  mjacob 		ISP_IOXPUT_8(isp, lesrc->le_lun, &ledst->le_lun);
   2516  1.1  mjacob 		ISP_IOXPUT_8(isp, lesrc->le_rsvd, &ledst->le_rsvd);
   2517  1.1  mjacob 		ISP_IOXPUT_8(isp, lesrc->le_ops, &ledst->le_ops);
   2518  1.1  mjacob 		ISP_IOXPUT_8(isp, lesrc->le_tgt, &ledst->le_tgt);
   2519  1.1  mjacob 		ISP_IOXPUT_8(isp, lesrc->le_status, &ledst->le_status);
   2520  1.1  mjacob 		ISP_IOXPUT_8(isp, lesrc->le_reserved2, &ledst->le_reserved2);
   2521  1.1  mjacob 		ISP_IOXPUT_8(isp, lesrc->le_cmd_count, &ledst->le_cmd_count);
   2522  1.1  mjacob 		ISP_IOXPUT_8(isp, lesrc->le_in_count, &ledst->le_in_count);
   2523  1.1  mjacob 		ISP_IOXPUT_8(isp, lesrc->le_cdb6len, &ledst->le_cdb6len);
   2524  1.1  mjacob 		ISP_IOXPUT_8(isp, lesrc->le_cdb7len, &ledst->le_cdb7len);
   2525  1.1  mjacob 	}
   2526  1.1  mjacob 	ISP_IOXPUT_32(isp, lesrc->le_flags, &ledst->le_flags);
   2527  1.1  mjacob 	ISP_IOXPUT_16(isp, lesrc->le_timeout, &ledst->le_timeout);
   2528  1.1  mjacob 	for (i = 0; i < 20; i++) {
   2529  1.1  mjacob 		ISP_IOXPUT_8(isp, lesrc->le_reserved3[i],
   2530  1.1  mjacob 		    &ledst->le_reserved3[i]);
   2531  1.1  mjacob 	}
   2532  1.1  mjacob }
   2533  1.1  mjacob 
   2534  1.1  mjacob void
   2535  1.1  mjacob isp_get_enable_lun(ispsoftc_t *isp, lun_entry_t *lesrc, lun_entry_t *ledst)
   2536  1.1  mjacob {
   2537  1.1  mjacob 	int i;
   2538  1.1  mjacob 	isp_get_hdr(isp, &lesrc->le_header, &ledst->le_header);
   2539  1.1  mjacob 	ISP_IOXGET_32(isp, &lesrc->le_reserved, ledst->le_reserved);
   2540  1.1  mjacob 	if (ISP_IS_SBUS(isp)) {
   2541  1.1  mjacob 		ISP_IOXGET_8(isp, &lesrc->le_lun, ledst->le_rsvd);
   2542  1.1  mjacob 		ISP_IOXGET_8(isp, &lesrc->le_rsvd, ledst->le_lun);
   2543  1.1  mjacob 		ISP_IOXGET_8(isp, &lesrc->le_ops, ledst->le_tgt);
   2544  1.1  mjacob 		ISP_IOXGET_8(isp, &lesrc->le_tgt, ledst->le_ops);
   2545  1.1  mjacob 		ISP_IOXGET_8(isp, &lesrc->le_status, ledst->le_reserved2);
   2546  1.1  mjacob 		ISP_IOXGET_8(isp, &lesrc->le_reserved2, ledst->le_status);
   2547  1.1  mjacob 		ISP_IOXGET_8(isp, &lesrc->le_cmd_count, ledst->le_in_count);
   2548  1.1  mjacob 		ISP_IOXGET_8(isp, &lesrc->le_in_count, ledst->le_cmd_count);
   2549  1.1  mjacob 		ISP_IOXGET_8(isp, &lesrc->le_cdb6len, ledst->le_cdb7len);
   2550  1.1  mjacob 		ISP_IOXGET_8(isp, &lesrc->le_cdb7len, ledst->le_cdb6len);
   2551  1.1  mjacob 	} else {
   2552  1.1  mjacob 		ISP_IOXGET_8(isp, &lesrc->le_lun, ledst->le_lun);
   2553  1.1  mjacob 		ISP_IOXGET_8(isp, &lesrc->le_rsvd, ledst->le_rsvd);
   2554  1.1  mjacob 		ISP_IOXGET_8(isp, &lesrc->le_ops, ledst->le_ops);
   2555  1.1  mjacob 		ISP_IOXGET_8(isp, &lesrc->le_tgt, ledst->le_tgt);
   2556  1.1  mjacob 		ISP_IOXGET_8(isp, &lesrc->le_status, ledst->le_status);
   2557  1.1  mjacob 		ISP_IOXGET_8(isp, &lesrc->le_reserved2, ledst->le_reserved2);
   2558  1.1  mjacob 		ISP_IOXGET_8(isp, &lesrc->le_cmd_count, ledst->le_cmd_count);
   2559  1.1  mjacob 		ISP_IOXGET_8(isp, &lesrc->le_in_count, ledst->le_in_count);
   2560  1.1  mjacob 		ISP_IOXGET_8(isp, &lesrc->le_cdb6len, ledst->le_cdb6len);
   2561  1.1  mjacob 		ISP_IOXGET_8(isp, &lesrc->le_cdb7len, ledst->le_cdb7len);
   2562  1.1  mjacob 	}
   2563  1.1  mjacob 	ISP_IOXGET_32(isp, &lesrc->le_flags, ledst->le_flags);
   2564  1.1  mjacob 	ISP_IOXGET_16(isp, &lesrc->le_timeout, ledst->le_timeout);
   2565  1.1  mjacob 	for (i = 0; i < 20; i++) {
   2566  1.1  mjacob 		ISP_IOXGET_8(isp, &lesrc->le_reserved3[i],
   2567  1.1  mjacob 		    ledst->le_reserved3[i]);
   2568  1.1  mjacob 	}
   2569  1.1  mjacob }
   2570  1.1  mjacob 
   2571  1.1  mjacob void
   2572  1.1  mjacob isp_put_notify(ispsoftc_t *isp, in_entry_t *src, in_entry_t *dst)
   2573  1.1  mjacob {
   2574  1.1  mjacob 	int i;
   2575  1.1  mjacob 	isp_put_hdr(isp, &src->in_header, &dst->in_header);
   2576  1.1  mjacob 	ISP_IOXPUT_32(isp, src->in_reserved, &dst->in_reserved);
   2577  1.1  mjacob 	if (ISP_IS_SBUS(isp)) {
   2578  1.1  mjacob 		ISP_IOXPUT_8(isp, src->in_lun, &dst->in_iid);
   2579  1.1  mjacob 		ISP_IOXPUT_8(isp, src->in_iid, &dst->in_lun);
   2580  1.1  mjacob 		ISP_IOXPUT_8(isp, src->in_reserved2, &dst->in_tgt);
   2581  1.1  mjacob 		ISP_IOXPUT_8(isp, src->in_tgt, &dst->in_reserved2);
   2582  1.1  mjacob 		ISP_IOXPUT_8(isp, src->in_status, &dst->in_rsvd2);
   2583  1.1  mjacob 		ISP_IOXPUT_8(isp, src->in_rsvd2, &dst->in_status);
   2584  1.1  mjacob 		ISP_IOXPUT_8(isp, src->in_tag_val, &dst->in_tag_type);
   2585  1.1  mjacob 		ISP_IOXPUT_8(isp, src->in_tag_type, &dst->in_tag_val);
   2586  1.1  mjacob 	} else {
   2587  1.1  mjacob 		ISP_IOXPUT_8(isp, src->in_lun, &dst->in_lun);
   2588  1.1  mjacob 		ISP_IOXPUT_8(isp, src->in_iid, &dst->in_iid);
   2589  1.1  mjacob 		ISP_IOXPUT_8(isp, src->in_reserved2, &dst->in_reserved2);
   2590  1.1  mjacob 		ISP_IOXPUT_8(isp, src->in_tgt, &dst->in_tgt);
   2591  1.1  mjacob 		ISP_IOXPUT_8(isp, src->in_status, &dst->in_status);
   2592  1.1  mjacob 		ISP_IOXPUT_8(isp, src->in_rsvd2, &dst->in_rsvd2);
   2593  1.1  mjacob 		ISP_IOXPUT_8(isp, src->in_tag_val, &dst->in_tag_val);
   2594  1.1  mjacob 		ISP_IOXPUT_8(isp, src->in_tag_type, &dst->in_tag_type);
   2595  1.1  mjacob 	}
   2596  1.1  mjacob 	ISP_IOXPUT_32(isp, src->in_flags, &dst->in_flags);
   2597  1.1  mjacob 	ISP_IOXPUT_16(isp, src->in_seqid, &dst->in_seqid);
   2598  1.1  mjacob 	for (i = 0; i < IN_MSGLEN; i++) {
   2599  1.1  mjacob 		ISP_IOXPUT_8(isp, src->in_msg[i], &dst->in_msg[i]);
   2600  1.1  mjacob 	}
   2601  1.1  mjacob 	for (i = 0; i < IN_RSVDLEN; i++) {
   2602  1.1  mjacob 		ISP_IOXPUT_8(isp, src->in_reserved3[i],
   2603  1.1  mjacob 		    &dst->in_reserved3[i]);
   2604  1.1  mjacob 	}
   2605  1.1  mjacob 	for (i = 0; i < QLTM_SENSELEN; i++) {
   2606  1.1  mjacob 		ISP_IOXPUT_8(isp, src->in_sense[i],
   2607  1.1  mjacob 		    &dst->in_sense[i]);
   2608  1.1  mjacob 	}
   2609  1.1  mjacob }
   2610  1.1  mjacob 
   2611  1.1  mjacob void
   2612  1.1  mjacob isp_get_notify(ispsoftc_t *isp, in_entry_t *src, in_entry_t *dst)
   2613  1.1  mjacob {
   2614  1.1  mjacob 	int i;
   2615  1.1  mjacob 	isp_get_hdr(isp, &src->in_header, &dst->in_header);
   2616  1.1  mjacob 	ISP_IOXGET_32(isp, &src->in_reserved, dst->in_reserved);
   2617  1.1  mjacob 	if (ISP_IS_SBUS(isp)) {
   2618  1.1  mjacob 		ISP_IOXGET_8(isp, &src->in_lun, dst->in_iid);
   2619  1.1  mjacob 		ISP_IOXGET_8(isp, &src->in_iid, dst->in_lun);
   2620  1.1  mjacob 		ISP_IOXGET_8(isp, &src->in_reserved2, dst->in_tgt);
   2621  1.1  mjacob 		ISP_IOXGET_8(isp, &src->in_tgt, dst->in_reserved2);
   2622  1.1  mjacob 		ISP_IOXGET_8(isp, &src->in_status, dst->in_rsvd2);
   2623  1.1  mjacob 		ISP_IOXGET_8(isp, &src->in_rsvd2, dst->in_status);
   2624  1.1  mjacob 		ISP_IOXGET_8(isp, &src->in_tag_val, dst->in_tag_type);
   2625  1.1  mjacob 		ISP_IOXGET_8(isp, &src->in_tag_type, dst->in_tag_val);
   2626  1.1  mjacob 	} else {
   2627  1.1  mjacob 		ISP_IOXGET_8(isp, &src->in_lun, dst->in_lun);
   2628  1.1  mjacob 		ISP_IOXGET_8(isp, &src->in_iid, dst->in_iid);
   2629  1.1  mjacob 		ISP_IOXGET_8(isp, &src->in_reserved2, dst->in_reserved2);
   2630  1.1  mjacob 		ISP_IOXGET_8(isp, &src->in_tgt, dst->in_tgt);
   2631  1.1  mjacob 		ISP_IOXGET_8(isp, &src->in_status, dst->in_status);
   2632  1.1  mjacob 		ISP_IOXGET_8(isp, &src->in_rsvd2, dst->in_rsvd2);
   2633  1.1  mjacob 		ISP_IOXGET_8(isp, &src->in_tag_val, dst->in_tag_val);
   2634  1.1  mjacob 		ISP_IOXGET_8(isp, &src->in_tag_type, dst->in_tag_type);
   2635  1.1  mjacob 	}
   2636  1.1  mjacob 	ISP_IOXGET_32(isp, &src->in_flags, dst->in_flags);
   2637  1.1  mjacob 	ISP_IOXGET_16(isp, &src->in_seqid, dst->in_seqid);
   2638  1.1  mjacob 	for (i = 0; i < IN_MSGLEN; i++) {
   2639  1.1  mjacob 		ISP_IOXGET_8(isp, &src->in_msg[i], dst->in_msg[i]);
   2640  1.1  mjacob 	}
   2641  1.1  mjacob 	for (i = 0; i < IN_RSVDLEN; i++) {
   2642  1.1  mjacob 		ISP_IOXGET_8(isp, &src->in_reserved3[i],
   2643  1.1  mjacob 		    dst->in_reserved3[i]);
   2644  1.1  mjacob 	}
   2645  1.1  mjacob 	for (i = 0; i < QLTM_SENSELEN; i++) {
   2646  1.1  mjacob 		ISP_IOXGET_8(isp, &src->in_sense[i],
   2647  1.1  mjacob 		    dst->in_sense[i]);
   2648  1.1  mjacob 	}
   2649  1.1  mjacob }
   2650  1.1  mjacob 
   2651  1.1  mjacob void
   2652  1.1  mjacob isp_put_notify_fc(ispsoftc_t *isp, in_fcentry_t *src,
   2653  1.1  mjacob     in_fcentry_t *dst)
   2654  1.1  mjacob {
   2655  1.1  mjacob 	isp_put_hdr(isp, &src->in_header, &dst->in_header);
   2656  1.1  mjacob 	ISP_IOXPUT_32(isp, src->in_reserved, &dst->in_reserved);
   2657  1.1  mjacob 	ISP_IOXPUT_8(isp, src->in_lun, &dst->in_lun);
   2658  1.1  mjacob 	ISP_IOXPUT_8(isp, src->in_iid, &dst->in_iid);
   2659  1.1  mjacob 	ISP_IOXPUT_16(isp, src->in_scclun, &dst->in_scclun);
   2660  1.1  mjacob 	ISP_IOXPUT_32(isp, src->in_reserved2, &dst->in_reserved2);
   2661  1.1  mjacob 	ISP_IOXPUT_16(isp, src->in_status, &dst->in_status);
   2662  1.1  mjacob 	ISP_IOXPUT_16(isp, src->in_task_flags, &dst->in_task_flags);
   2663  1.1  mjacob 	ISP_IOXPUT_16(isp, src->in_seqid, &dst->in_seqid);
   2664  1.1  mjacob }
   2665  1.1  mjacob 
   2666  1.1  mjacob void
   2667  1.1  mjacob isp_put_notify_fc_e(ispsoftc_t *isp, in_fcentry_e_t *src,
   2668  1.1  mjacob     in_fcentry_e_t *dst)
   2669  1.1  mjacob {
   2670  1.1  mjacob 	isp_put_hdr(isp, &src->in_header, &dst->in_header);
   2671  1.1  mjacob 	ISP_IOXPUT_32(isp, src->in_reserved, &dst->in_reserved);
   2672  1.1  mjacob 	ISP_IOXPUT_16(isp, src->in_iid, &dst->in_iid);
   2673  1.1  mjacob 	ISP_IOXPUT_16(isp, src->in_scclun, &dst->in_scclun);
   2674  1.1  mjacob 	ISP_IOXPUT_32(isp, src->in_reserved2, &dst->in_reserved2);
   2675  1.1  mjacob 	ISP_IOXPUT_16(isp, src->in_status, &dst->in_status);
   2676  1.1  mjacob 	ISP_IOXPUT_16(isp, src->in_task_flags, &dst->in_task_flags);
   2677  1.1  mjacob 	ISP_IOXPUT_16(isp, src->in_seqid, &dst->in_seqid);
   2678  1.1  mjacob }
   2679  1.1  mjacob 
   2680  1.1  mjacob void
   2681  1.1  mjacob isp_put_notify_24xx(ispsoftc_t *isp, in_fcentry_24xx_t *src,
   2682  1.1  mjacob     in_fcentry_24xx_t *dst)
   2683  1.1  mjacob {
   2684  1.1  mjacob 	int i;
   2685  1.1  mjacob 
   2686  1.1  mjacob 	isp_put_hdr(isp, &src->in_header, &dst->in_header);
   2687  1.1  mjacob 	ISP_IOXPUT_32(isp, src->in_reserved, &dst->in_reserved);
   2688  1.1  mjacob 	ISP_IOXPUT_16(isp, src->in_nphdl, &dst->in_nphdl);
   2689  1.1  mjacob 	ISP_IOXPUT_16(isp, src->in_reserved1, &dst->in_reserved1);
   2690  1.1  mjacob 	ISP_IOXPUT_16(isp, src->in_flags, &dst->in_flags);
   2691  1.1  mjacob 	ISP_IOXPUT_16(isp, src->in_srr_rxid, &dst->in_srr_rxid);
   2692  1.1  mjacob 	ISP_IOXPUT_16(isp, src->in_status, &dst->in_status);
   2693  1.1  mjacob 	ISP_IOXPUT_8(isp, src->in_status_subcode, &dst->in_status_subcode);
   2694  1.1  mjacob 	ISP_IOXPUT_16(isp, src->in_reserved2, &dst->in_reserved2);
   2695  1.1  mjacob 	ISP_IOXPUT_32(isp, src->in_rxid, &dst->in_rxid);
   2696  1.1  mjacob 	ISP_IOXPUT_16(isp, src->in_srr_reloff_hi, &dst->in_srr_reloff_hi);
   2697  1.1  mjacob 	ISP_IOXPUT_16(isp, src->in_srr_reloff_lo, &dst->in_srr_reloff_lo);
   2698  1.1  mjacob 	ISP_IOXPUT_16(isp, src->in_srr_iu, &dst->in_srr_iu);
   2699  1.1  mjacob 	ISP_IOXPUT_16(isp, src->in_srr_oxid, &dst->in_srr_oxid);
   2700  1.3  mjacob 	ISP_IOXPUT_16(isp, src->in_nport_id_hi, &dst->in_nport_id_hi);
   2701  1.3  mjacob 	ISP_IOXPUT_8(isp, src->in_nport_id_lo, &dst->in_nport_id_lo);
   2702  1.3  mjacob 	ISP_IOXPUT_8(isp, src->in_reserved3, &dst->in_reserved3);
   2703  1.3  mjacob 	ISP_IOXPUT_16(isp, src->in_np_handle, &dst->in_np_handle);
   2704  1.3  mjacob 	for (i = 0; i < ASIZE(src->in_reserved4); i++) {
   2705  1.3  mjacob 		ISP_IOXPUT_8(isp, src->in_reserved4[i], &dst->in_reserved4[i]);
   2706  1.1  mjacob 	}
   2707  1.3  mjacob 	ISP_IOXPUT_8(isp, src->in_reserved5, &dst->in_reserved5);
   2708  1.1  mjacob 	ISP_IOXPUT_8(isp, src->in_vpindex, &dst->in_vpindex);
   2709  1.3  mjacob 	ISP_IOXPUT_32(isp, src->in_reserved6, &dst->in_reserved6);
   2710  1.1  mjacob 	ISP_IOXPUT_16(isp, src->in_portid_lo, &dst->in_portid_lo);
   2711  1.1  mjacob 	ISP_IOXPUT_8(isp, src->in_portid_hi, &dst->in_portid_hi);
   2712  1.3  mjacob 	ISP_IOXPUT_8(isp, src->in_reserved7, &dst->in_reserved7);
   2713  1.3  mjacob 	ISP_IOXPUT_16(isp, src->in_reserved8, &dst->in_reserved8);
   2714  1.1  mjacob 	ISP_IOXPUT_16(isp, src->in_oxid, &dst->in_oxid);
   2715  1.1  mjacob }
   2716  1.1  mjacob 
   2717  1.1  mjacob void
   2718  1.1  mjacob isp_get_notify_fc(ispsoftc_t *isp, in_fcentry_t *src,
   2719  1.1  mjacob     in_fcentry_t *dst)
   2720  1.1  mjacob {
   2721  1.1  mjacob 	isp_get_hdr(isp, &src->in_header, &dst->in_header);
   2722  1.1  mjacob 	ISP_IOXGET_32(isp, &src->in_reserved, dst->in_reserved);
   2723  1.1  mjacob 	ISP_IOXGET_8(isp, &src->in_lun, dst->in_lun);
   2724  1.1  mjacob 	ISP_IOXGET_8(isp, &src->in_iid, dst->in_iid);
   2725  1.1  mjacob 	ISP_IOXGET_16(isp, &src->in_scclun, dst->in_scclun);
   2726  1.1  mjacob 	ISP_IOXGET_32(isp, &src->in_reserved2, dst->in_reserved2);
   2727  1.1  mjacob 	ISP_IOXGET_16(isp, &src->in_status, dst->in_status);
   2728  1.1  mjacob 	ISP_IOXGET_16(isp, &src->in_task_flags, dst->in_task_flags);
   2729  1.1  mjacob 	ISP_IOXGET_16(isp, &src->in_seqid, dst->in_seqid);
   2730  1.1  mjacob }
   2731  1.1  mjacob 
   2732  1.1  mjacob void
   2733  1.1  mjacob isp_get_notify_fc_e(ispsoftc_t *isp, in_fcentry_e_t *src,
   2734  1.1  mjacob     in_fcentry_e_t *dst)
   2735  1.1  mjacob {
   2736  1.1  mjacob 	isp_get_hdr(isp, &src->in_header, &dst->in_header);
   2737  1.1  mjacob 	ISP_IOXGET_32(isp, &src->in_reserved, dst->in_reserved);
   2738  1.1  mjacob 	ISP_IOXGET_16(isp, &src->in_iid, dst->in_iid);
   2739  1.1  mjacob 	ISP_IOXGET_16(isp, &src->in_scclun, dst->in_scclun);
   2740  1.1  mjacob 	ISP_IOXGET_32(isp, &src->in_reserved2, dst->in_reserved2);
   2741  1.1  mjacob 	ISP_IOXGET_16(isp, &src->in_status, dst->in_status);
   2742  1.1  mjacob 	ISP_IOXGET_16(isp, &src->in_task_flags, dst->in_task_flags);
   2743  1.1  mjacob 	ISP_IOXGET_16(isp, &src->in_seqid, dst->in_seqid);
   2744  1.1  mjacob }
   2745  1.1  mjacob 
   2746  1.1  mjacob void
   2747  1.1  mjacob isp_get_notify_24xx(ispsoftc_t *isp, in_fcentry_24xx_t *src,
   2748  1.1  mjacob     in_fcentry_24xx_t *dst)
   2749  1.1  mjacob {
   2750  1.1  mjacob 	int i;
   2751  1.1  mjacob 
   2752  1.1  mjacob 	isp_get_hdr(isp, &src->in_header, &dst->in_header);
   2753  1.1  mjacob 	ISP_IOXGET_32(isp, &src->in_reserved, dst->in_reserved);
   2754  1.1  mjacob 	ISP_IOXGET_16(isp, &src->in_nphdl, dst->in_nphdl);
   2755  1.1  mjacob 	ISP_IOXGET_16(isp, &src->in_reserved1, dst->in_reserved1);
   2756  1.1  mjacob 	ISP_IOXGET_16(isp, &src->in_flags, dst->in_flags);
   2757  1.1  mjacob 	ISP_IOXGET_16(isp, &src->in_srr_rxid, dst->in_srr_rxid);
   2758  1.1  mjacob 	ISP_IOXGET_16(isp, &src->in_status, dst->in_status);
   2759  1.1  mjacob 	ISP_IOXGET_8(isp, &src->in_status_subcode, dst->in_status_subcode);
   2760  1.1  mjacob 	ISP_IOXGET_16(isp, &src->in_reserved2, dst->in_reserved2);
   2761  1.1  mjacob 	ISP_IOXGET_32(isp, &src->in_rxid, dst->in_rxid);
   2762  1.1  mjacob 	ISP_IOXGET_16(isp, &src->in_srr_reloff_hi, dst->in_srr_reloff_hi);
   2763  1.1  mjacob 	ISP_IOXGET_16(isp, &src->in_srr_reloff_lo, dst->in_srr_reloff_lo);
   2764  1.1  mjacob 	ISP_IOXGET_16(isp, &src->in_srr_iu, dst->in_srr_iu);
   2765  1.1  mjacob 	ISP_IOXGET_16(isp, &src->in_srr_oxid, dst->in_srr_oxid);
   2766  1.3  mjacob 	ISP_IOXGET_16(isp, &src->in_nport_id_hi, dst->in_nport_id_hi);
   2767  1.3  mjacob 	ISP_IOXGET_8(isp, &src->in_nport_id_lo, dst->in_nport_id_lo);
   2768  1.3  mjacob 	ISP_IOXGET_8(isp, &src->in_reserved3, dst->in_reserved3);
   2769  1.3  mjacob 	ISP_IOXGET_16(isp, &src->in_np_handle, dst->in_np_handle);
   2770  1.3  mjacob 	for (i = 0; i < ASIZE(src->in_reserved4); i++) {
   2771  1.3  mjacob 		ISP_IOXGET_8(isp, &src->in_reserved4[i], dst->in_reserved4[i]);
   2772  1.1  mjacob 	}
   2773  1.3  mjacob 	ISP_IOXGET_8(isp, &src->in_reserved5, dst->in_reserved5);
   2774  1.1  mjacob 	ISP_IOXGET_8(isp, &src->in_vpindex, dst->in_vpindex);
   2775  1.3  mjacob 	ISP_IOXGET_32(isp, &src->in_reserved6, dst->in_reserved6);
   2776  1.1  mjacob 	ISP_IOXGET_16(isp, &src->in_portid_lo, dst->in_portid_lo);
   2777  1.1  mjacob 	ISP_IOXGET_8(isp, &src->in_portid_hi, dst->in_portid_hi);
   2778  1.3  mjacob 	ISP_IOXGET_8(isp, &src->in_reserved7, dst->in_reserved7);
   2779  1.3  mjacob 	ISP_IOXGET_16(isp, &src->in_reserved8, dst->in_reserved8);
   2780  1.1  mjacob 	ISP_IOXGET_16(isp, &src->in_oxid, dst->in_oxid);
   2781  1.1  mjacob }
   2782  1.1  mjacob 
   2783  1.1  mjacob void
   2784  1.1  mjacob isp_put_notify_ack(ispsoftc_t *isp, na_entry_t *src,  na_entry_t *dst)
   2785  1.1  mjacob {
   2786  1.1  mjacob 	int i;
   2787  1.1  mjacob 	isp_put_hdr(isp, &src->na_header, &dst->na_header);
   2788  1.1  mjacob 	ISP_IOXPUT_32(isp, src->na_reserved, &dst->na_reserved);
   2789  1.1  mjacob 	if (ISP_IS_SBUS(isp)) {
   2790  1.1  mjacob 		ISP_IOXPUT_8(isp, src->na_lun, &dst->na_iid);
   2791  1.1  mjacob 		ISP_IOXPUT_8(isp, src->na_iid, &dst->na_lun);
   2792  1.1  mjacob 		ISP_IOXPUT_8(isp, src->na_status, &dst->na_event);
   2793  1.1  mjacob 		ISP_IOXPUT_8(isp, src->na_event, &dst->na_status);
   2794  1.1  mjacob 	} else {
   2795  1.1  mjacob 		ISP_IOXPUT_8(isp, src->na_lun, &dst->na_lun);
   2796  1.1  mjacob 		ISP_IOXPUT_8(isp, src->na_iid, &dst->na_iid);
   2797  1.1  mjacob 		ISP_IOXPUT_8(isp, src->na_status, &dst->na_status);
   2798  1.1  mjacob 		ISP_IOXPUT_8(isp, src->na_event, &dst->na_event);
   2799  1.1  mjacob 	}
   2800  1.1  mjacob 	ISP_IOXPUT_32(isp, src->na_flags, &dst->na_flags);
   2801  1.1  mjacob 	for (i = 0; i < NA_RSVDLEN; i++) {
   2802  1.1  mjacob 		ISP_IOXPUT_16(isp, src->na_reserved3[i],
   2803  1.1  mjacob 		    &dst->na_reserved3[i]);
   2804  1.1  mjacob 	}
   2805  1.1  mjacob }
   2806  1.1  mjacob 
   2807  1.1  mjacob void
   2808  1.1  mjacob isp_get_notify_ack(ispsoftc_t *isp, na_entry_t *src, na_entry_t *dst)
   2809  1.1  mjacob {
   2810  1.1  mjacob 	int i;
   2811  1.1  mjacob 	isp_get_hdr(isp, &src->na_header, &dst->na_header);
   2812  1.1  mjacob 	ISP_IOXGET_32(isp, &src->na_reserved, dst->na_reserved);
   2813  1.1  mjacob 	if (ISP_IS_SBUS(isp)) {
   2814  1.1  mjacob 		ISP_IOXGET_8(isp, &src->na_lun, dst->na_iid);
   2815  1.1  mjacob 		ISP_IOXGET_8(isp, &src->na_iid, dst->na_lun);
   2816  1.1  mjacob 		ISP_IOXGET_8(isp, &src->na_status, dst->na_event);
   2817  1.1  mjacob 		ISP_IOXGET_8(isp, &src->na_event, dst->na_status);
   2818  1.1  mjacob 	} else {
   2819  1.1  mjacob 		ISP_IOXGET_8(isp, &src->na_lun, dst->na_lun);
   2820  1.1  mjacob 		ISP_IOXGET_8(isp, &src->na_iid, dst->na_iid);
   2821  1.1  mjacob 		ISP_IOXGET_8(isp, &src->na_status, dst->na_status);
   2822  1.1  mjacob 		ISP_IOXGET_8(isp, &src->na_event, dst->na_event);
   2823  1.1  mjacob 	}
   2824  1.1  mjacob 	ISP_IOXGET_32(isp, &src->na_flags, dst->na_flags);
   2825  1.1  mjacob 	for (i = 0; i < NA_RSVDLEN; i++) {
   2826  1.1  mjacob 		ISP_IOXGET_16(isp, &src->na_reserved3[i],
   2827  1.1  mjacob 		    dst->na_reserved3[i]);
   2828  1.1  mjacob 	}
   2829  1.1  mjacob }
   2830  1.1  mjacob 
   2831  1.1  mjacob void
   2832  1.1  mjacob isp_put_notify_ack_fc(ispsoftc_t *isp, na_fcentry_t *src,
   2833  1.1  mjacob     na_fcentry_t *dst)
   2834  1.1  mjacob {
   2835  1.1  mjacob 	int i;
   2836  1.1  mjacob 	isp_put_hdr(isp, &src->na_header, &dst->na_header);
   2837  1.1  mjacob 	ISP_IOXPUT_32(isp, src->na_reserved, &dst->na_reserved);
   2838  1.1  mjacob 	ISP_IOXPUT_8(isp, src->na_reserved1, &dst->na_reserved1);
   2839  1.1  mjacob 	ISP_IOXPUT_8(isp, src->na_iid, &dst->na_iid);
   2840  1.1  mjacob 	ISP_IOXPUT_16(isp, src->na_response, &dst->na_response);
   2841  1.1  mjacob 	ISP_IOXPUT_16(isp, src->na_flags, &dst->na_flags);
   2842  1.1  mjacob 	ISP_IOXPUT_16(isp, src->na_reserved2, &dst->na_reserved2);
   2843  1.1  mjacob 	ISP_IOXPUT_16(isp, src->na_status, &dst->na_status);
   2844  1.1  mjacob 	ISP_IOXPUT_16(isp, src->na_task_flags, &dst->na_task_flags);
   2845  1.1  mjacob 	ISP_IOXPUT_16(isp, src->na_seqid, &dst->na_seqid);
   2846  1.1  mjacob 	for (i = 0; i < NA2_RSVDLEN; i++) {
   2847  1.1  mjacob 		ISP_IOXPUT_16(isp, src->na_reserved3[i],
   2848  1.1  mjacob 		    &dst->na_reserved3[i]);
   2849  1.1  mjacob 	}
   2850  1.1  mjacob }
   2851  1.1  mjacob 
   2852  1.1  mjacob void
   2853  1.1  mjacob isp_put_notify_ack_fc_e(ispsoftc_t *isp, na_fcentry_e_t *src,
   2854  1.1  mjacob     na_fcentry_e_t *dst)
   2855  1.1  mjacob {
   2856  1.1  mjacob 	int i;
   2857  1.1  mjacob 	isp_put_hdr(isp, &src->na_header, &dst->na_header);
   2858  1.1  mjacob 	ISP_IOXPUT_32(isp, src->na_reserved, &dst->na_reserved);
   2859  1.1  mjacob 	ISP_IOXPUT_16(isp, src->na_iid, &dst->na_iid);
   2860  1.1  mjacob 	ISP_IOXPUT_16(isp, src->na_response, &dst->na_response);
   2861  1.1  mjacob 	ISP_IOXPUT_16(isp, src->na_flags, &dst->na_flags);
   2862  1.1  mjacob 	ISP_IOXPUT_16(isp, src->na_reserved2, &dst->na_reserved2);
   2863  1.1  mjacob 	ISP_IOXPUT_16(isp, src->na_status, &dst->na_status);
   2864  1.1  mjacob 	ISP_IOXPUT_16(isp, src->na_task_flags, &dst->na_task_flags);
   2865  1.1  mjacob 	ISP_IOXPUT_16(isp, src->na_seqid, &dst->na_seqid);
   2866  1.1  mjacob 	for (i = 0; i < NA2_RSVDLEN; i++) {
   2867  1.1  mjacob 		ISP_IOXPUT_16(isp, src->na_reserved3[i],
   2868  1.1  mjacob 		    &dst->na_reserved3[i]);
   2869  1.1  mjacob 	}
   2870  1.1  mjacob }
   2871  1.1  mjacob 
   2872  1.1  mjacob void
   2873  1.1  mjacob isp_put_notify_24xx_ack(ispsoftc_t *isp, na_fcentry_24xx_t *src,
   2874  1.1  mjacob     na_fcentry_24xx_t *dst)
   2875  1.1  mjacob {
   2876  1.1  mjacob 	int i;
   2877  1.1  mjacob 
   2878  1.1  mjacob 	isp_put_hdr(isp, &src->na_header, &dst->na_header);
   2879  1.1  mjacob 	ISP_IOXPUT_32(isp, src->na_handle, &dst->na_handle);
   2880  1.1  mjacob 	ISP_IOXPUT_16(isp, src->na_nphdl, &dst->na_nphdl);
   2881  1.1  mjacob 	ISP_IOXPUT_16(isp, src->na_reserved1, &dst->na_reserved1);
   2882  1.1  mjacob 	ISP_IOXPUT_16(isp, src->na_flags, &dst->na_flags);
   2883  1.1  mjacob 	ISP_IOXPUT_16(isp, src->na_srr_rxid, &dst->na_srr_rxid);
   2884  1.1  mjacob 	ISP_IOXPUT_16(isp, src->na_status, &dst->na_status);
   2885  1.1  mjacob 	ISP_IOXPUT_8(isp, src->na_status_subcode, &dst->na_status_subcode);
   2886  1.1  mjacob 	ISP_IOXPUT_16(isp, src->na_reserved2, &dst->na_reserved2);
   2887  1.1  mjacob 	ISP_IOXPUT_32(isp, src->na_rxid, &dst->na_rxid);
   2888  1.1  mjacob 	ISP_IOXPUT_16(isp, src->na_srr_reloff_hi, &dst->na_srr_reloff_hi);
   2889  1.1  mjacob 	ISP_IOXPUT_16(isp, src->na_srr_reloff_lo, &dst->na_srr_reloff_lo);
   2890  1.1  mjacob 	ISP_IOXPUT_16(isp, src->na_srr_iu, &dst->na_srr_iu);
   2891  1.1  mjacob 	ISP_IOXPUT_16(isp, src->na_srr_flags, &dst->na_srr_flags);
   2892  1.1  mjacob 	for (i = 0; i < 18; i++) {
   2893  1.1  mjacob 		ISP_IOXPUT_8(isp, src->na_reserved3[i], &dst->na_reserved3[i]);
   2894  1.1  mjacob 	}
   2895  1.1  mjacob 	ISP_IOXPUT_8(isp, src->na_reserved4, &dst->na_reserved4);
   2896  1.1  mjacob 	ISP_IOXPUT_8(isp, src->na_vpindex, &dst->na_vpindex);
   2897  1.1  mjacob 	ISP_IOXPUT_8(isp, src->na_srr_reject_vunique,
   2898  1.1  mjacob 	    &dst->na_srr_reject_vunique);
   2899  1.1  mjacob 	ISP_IOXPUT_8(isp, src->na_srr_reject_explanation,
   2900  1.1  mjacob 	    &dst->na_srr_reject_explanation);
   2901  1.1  mjacob 	ISP_IOXPUT_8(isp, src->na_srr_reject_code, &dst->na_srr_reject_code);
   2902  1.1  mjacob 	ISP_IOXPUT_8(isp, src->na_reserved5, &dst->na_reserved5);
   2903  1.1  mjacob 	for (i = 0; i < 6; i++) {
   2904  1.1  mjacob 		ISP_IOXPUT_8(isp, src->na_reserved6[i], &dst->na_reserved6[i]);
   2905  1.1  mjacob 	}
   2906  1.1  mjacob 	ISP_IOXPUT_16(isp, src->na_oxid, &dst->na_oxid);
   2907  1.1  mjacob }
   2908  1.1  mjacob 
   2909  1.1  mjacob void
   2910  1.1  mjacob isp_get_notify_ack_fc(ispsoftc_t *isp, na_fcentry_t *src,
   2911  1.1  mjacob     na_fcentry_t *dst)
   2912  1.1  mjacob {
   2913  1.1  mjacob 	int i;
   2914  1.1  mjacob 	isp_get_hdr(isp, &src->na_header, &dst->na_header);
   2915  1.1  mjacob 	ISP_IOXGET_32(isp, &src->na_reserved, dst->na_reserved);
   2916  1.1  mjacob 	ISP_IOXGET_8(isp, &src->na_reserved1, dst->na_reserved1);
   2917  1.1  mjacob 	ISP_IOXGET_8(isp, &src->na_iid, dst->na_iid);
   2918  1.1  mjacob 	ISP_IOXGET_16(isp, &src->na_response, dst->na_response);
   2919  1.1  mjacob 	ISP_IOXGET_16(isp, &src->na_flags, dst->na_flags);
   2920  1.1  mjacob 	ISP_IOXGET_16(isp, &src->na_reserved2, dst->na_reserved2);
   2921  1.1  mjacob 	ISP_IOXGET_16(isp, &src->na_status, dst->na_status);
   2922  1.1  mjacob 	ISP_IOXGET_16(isp, &src->na_task_flags, dst->na_task_flags);
   2923  1.1  mjacob 	ISP_IOXGET_16(isp, &src->na_seqid, dst->na_seqid);
   2924  1.1  mjacob 	for (i = 0; i < NA2_RSVDLEN; i++) {
   2925  1.1  mjacob 		ISP_IOXGET_16(isp, &src->na_reserved3[i],
   2926  1.1  mjacob 		    dst->na_reserved3[i]);
   2927  1.1  mjacob 	}
   2928  1.1  mjacob }
   2929  1.1  mjacob 
   2930  1.1  mjacob void
   2931  1.1  mjacob isp_get_notify_ack_fc_e(ispsoftc_t *isp, na_fcentry_e_t *src,
   2932  1.1  mjacob     na_fcentry_e_t *dst)
   2933  1.1  mjacob {
   2934  1.1  mjacob 	int i;
   2935  1.1  mjacob 	isp_get_hdr(isp, &src->na_header, &dst->na_header);
   2936  1.1  mjacob 	ISP_IOXGET_32(isp, &src->na_reserved, dst->na_reserved);
   2937  1.1  mjacob 	ISP_IOXGET_16(isp, &src->na_iid, dst->na_iid);
   2938  1.1  mjacob 	ISP_IOXGET_16(isp, &src->na_response, dst->na_response);
   2939  1.1  mjacob 	ISP_IOXGET_16(isp, &src->na_flags, dst->na_flags);
   2940  1.1  mjacob 	ISP_IOXGET_16(isp, &src->na_reserved2, dst->na_reserved2);
   2941  1.1  mjacob 	ISP_IOXGET_16(isp, &src->na_status, dst->na_status);
   2942  1.1  mjacob 	ISP_IOXGET_16(isp, &src->na_task_flags, dst->na_task_flags);
   2943  1.1  mjacob 	ISP_IOXGET_16(isp, &src->na_seqid, dst->na_seqid);
   2944  1.1  mjacob 	for (i = 0; i < NA2_RSVDLEN; i++) {
   2945  1.1  mjacob 		ISP_IOXGET_16(isp, &src->na_reserved3[i],
   2946  1.1  mjacob 		    dst->na_reserved3[i]);
   2947  1.1  mjacob 	}
   2948  1.1  mjacob }
   2949  1.1  mjacob 
   2950  1.1  mjacob void
   2951  1.1  mjacob isp_get_notify_ack_24xx(ispsoftc_t *isp, na_fcentry_24xx_t *src,
   2952  1.1  mjacob     na_fcentry_24xx_t *dst)
   2953  1.1  mjacob {
   2954  1.1  mjacob 	int i;
   2955  1.1  mjacob 
   2956  1.1  mjacob 	isp_get_hdr(isp, &src->na_header, &dst->na_header);
   2957  1.1  mjacob 	ISP_IOXGET_32(isp, &src->na_handle, dst->na_handle);
   2958  1.1  mjacob 	ISP_IOXGET_16(isp, &src->na_nphdl, dst->na_nphdl);
   2959  1.1  mjacob 	ISP_IOXGET_16(isp, &src->na_reserved1, dst->na_reserved1);
   2960  1.1  mjacob 	ISP_IOXGET_16(isp, &src->na_flags, dst->na_flags);
   2961  1.1  mjacob 	ISP_IOXGET_16(isp, &src->na_srr_rxid, dst->na_srr_rxid);
   2962  1.1  mjacob 	ISP_IOXGET_16(isp, &src->na_status, dst->na_status);
   2963  1.1  mjacob 	ISP_IOXGET_8(isp, &src->na_status_subcode, dst->na_status_subcode);
   2964  1.1  mjacob 	ISP_IOXGET_16(isp, &src->na_reserved2, dst->na_reserved2);
   2965  1.1  mjacob 	ISP_IOXGET_32(isp, &src->na_rxid, dst->na_rxid);
   2966  1.1  mjacob 	ISP_IOXGET_16(isp, &src->na_srr_reloff_hi, dst->na_srr_reloff_hi);
   2967  1.1  mjacob 	ISP_IOXGET_16(isp, &src->na_srr_reloff_lo, dst->na_srr_reloff_lo);
   2968  1.1  mjacob 	ISP_IOXGET_16(isp, &src->na_srr_iu, dst->na_srr_iu);
   2969  1.1  mjacob 	ISP_IOXGET_16(isp, &src->na_srr_flags, dst->na_srr_flags);
   2970  1.1  mjacob 	for (i = 0; i < 18; i++) {
   2971  1.1  mjacob 		ISP_IOXGET_8(isp, &src->na_reserved3[i], dst->na_reserved3[i]);
   2972  1.1  mjacob 	}
   2973  1.1  mjacob 	ISP_IOXGET_8(isp, &src->na_reserved4, dst->na_reserved4);
   2974  1.1  mjacob 	ISP_IOXGET_8(isp, &src->na_vpindex, dst->na_vpindex);
   2975  1.1  mjacob 	ISP_IOXGET_8(isp, &src->na_srr_reject_vunique,
   2976  1.1  mjacob 	    dst->na_srr_reject_vunique);
   2977  1.1  mjacob 	ISP_IOXGET_8(isp, &src->na_srr_reject_explanation,
   2978  1.1  mjacob 	    dst->na_srr_reject_explanation);
   2979  1.1  mjacob 	ISP_IOXGET_8(isp, &src->na_srr_reject_code, dst->na_srr_reject_code);
   2980  1.1  mjacob 	ISP_IOXGET_8(isp, &src->na_reserved5, dst->na_reserved5);
   2981  1.1  mjacob 	for (i = 0; i < 6; i++) {
   2982  1.1  mjacob 		ISP_IOXGET_8(isp, &src->na_reserved6[i], dst->na_reserved6[i]);
   2983  1.1  mjacob 	}
   2984  1.1  mjacob 	ISP_IOXGET_16(isp, &src->na_oxid, dst->na_oxid);
   2985  1.1  mjacob }
   2986  1.1  mjacob 
   2987  1.1  mjacob void
   2988  1.1  mjacob isp_get_abts(ispsoftc_t *isp, abts_t *src, abts_t *dst)
   2989  1.1  mjacob {
   2990  1.1  mjacob 	int i;
   2991  1.1  mjacob 
   2992  1.1  mjacob 	isp_get_hdr(isp, &src->abts_header, &dst->abts_header);
   2993  1.1  mjacob 	for (i = 0; i < 6; i++) {
   2994  1.1  mjacob 		ISP_IOXGET_8(isp, &src->abts_reserved0[i],
   2995  1.1  mjacob 		    dst->abts_reserved0[i]);
   2996  1.1  mjacob 	}
   2997  1.1  mjacob 	ISP_IOXGET_16(isp, &src->abts_nphdl, dst->abts_nphdl);
   2998  1.1  mjacob 	ISP_IOXGET_16(isp, &src->abts_reserved1, dst->abts_reserved1);
   2999  1.1  mjacob 	ISP_IOXGET_16(isp, &src->abts_sof, dst->abts_sof);
   3000  1.1  mjacob 	ISP_IOXGET_32(isp, &src->abts_rxid_abts, dst->abts_rxid_abts);
   3001  1.1  mjacob 	ISP_IOXGET_16(isp, &src->abts_did_lo, dst->abts_did_lo);
   3002  1.1  mjacob 	ISP_IOXGET_8(isp, &src->abts_did_hi, dst->abts_did_hi);
   3003  1.1  mjacob 	ISP_IOXGET_8(isp, &src->abts_r_ctl, dst->abts_r_ctl);
   3004  1.1  mjacob 	ISP_IOXGET_16(isp, &src->abts_sid_lo, dst->abts_sid_lo);
   3005  1.1  mjacob 	ISP_IOXGET_8(isp, &src->abts_sid_hi, dst->abts_sid_hi);
   3006  1.1  mjacob 	ISP_IOXGET_8(isp, &src->abts_cs_ctl, dst->abts_cs_ctl);
   3007  1.1  mjacob 	ISP_IOXGET_16(isp, &src->abts_fs_ctl, dst->abts_fs_ctl);
   3008  1.1  mjacob 	ISP_IOXGET_8(isp, &src->abts_f_ctl, dst->abts_f_ctl);
   3009  1.1  mjacob 	ISP_IOXGET_8(isp, &src->abts_type, dst->abts_type);
   3010  1.1  mjacob 	ISP_IOXGET_16(isp, &src->abts_seq_cnt, dst->abts_seq_cnt);
   3011  1.1  mjacob 	ISP_IOXGET_8(isp, &src->abts_df_ctl, dst->abts_df_ctl);
   3012  1.1  mjacob 	ISP_IOXGET_8(isp, &src->abts_seq_id, dst->abts_seq_id);
   3013  1.1  mjacob 	ISP_IOXGET_16(isp, &src->abts_rx_id, dst->abts_rx_id);
   3014  1.1  mjacob 	ISP_IOXGET_16(isp, &src->abts_ox_id, dst->abts_ox_id);
   3015  1.1  mjacob 	ISP_IOXGET_32(isp, &src->abts_param, dst->abts_param);
   3016  1.1  mjacob 	for (i = 0; i < 16; i++) {
   3017  1.1  mjacob 	ISP_IOXGET_8(isp, &src->abts_reserved2[i],
   3018  1.1  mjacob 		    dst->abts_reserved2[i]);
   3019  1.1  mjacob 	}
   3020  1.1  mjacob 	ISP_IOXGET_32(isp, &src->abts_rxid_task, dst->abts_rxid_task);
   3021  1.1  mjacob }
   3022  1.1  mjacob 
   3023  1.1  mjacob void
   3024  1.1  mjacob isp_put_abts_rsp(ispsoftc_t *isp, abts_rsp_t *src, abts_rsp_t *dst)
   3025  1.1  mjacob {
   3026  1.1  mjacob 	int i;
   3027  1.1  mjacob 
   3028  1.1  mjacob 	isp_put_hdr(isp, &src->abts_rsp_header, &dst->abts_rsp_header);
   3029  1.1  mjacob 	ISP_IOXPUT_32(isp, src->abts_rsp_handle, &dst->abts_rsp_handle);
   3030  1.1  mjacob 	ISP_IOXPUT_16(isp, src->abts_rsp_status, &dst->abts_rsp_status);
   3031  1.1  mjacob 	ISP_IOXPUT_16(isp, src->abts_rsp_nphdl, &dst->abts_rsp_nphdl);
   3032  1.1  mjacob 	ISP_IOXPUT_16(isp, src->abts_rsp_ctl_flags, &dst->abts_rsp_ctl_flags);
   3033  1.1  mjacob 	ISP_IOXPUT_16(isp, src->abts_rsp_sof, &dst->abts_rsp_sof);
   3034  1.1  mjacob 	ISP_IOXPUT_32(isp, src->abts_rsp_rxid_abts, &dst->abts_rsp_rxid_abts);
   3035  1.1  mjacob 	ISP_IOXPUT_16(isp, src->abts_rsp_did_lo, &dst->abts_rsp_did_lo);
   3036  1.1  mjacob 	ISP_IOXPUT_8(isp, src->abts_rsp_did_hi, &dst->abts_rsp_did_hi);
   3037  1.1  mjacob 	ISP_IOXPUT_8(isp, src->abts_rsp_r_ctl, &dst->abts_rsp_r_ctl);
   3038  1.1  mjacob 	ISP_IOXPUT_16(isp, src->abts_rsp_sid_lo, &dst->abts_rsp_sid_lo);
   3039  1.1  mjacob 	ISP_IOXPUT_8(isp, src->abts_rsp_sid_hi, &dst->abts_rsp_sid_hi);
   3040  1.1  mjacob 	ISP_IOXPUT_8(isp, src->abts_rsp_cs_ctl, &dst->abts_rsp_cs_ctl);
   3041  1.1  mjacob 	ISP_IOXPUT_16(isp, src->abts_rsp_f_ctl_lo, &dst->abts_rsp_f_ctl_lo);
   3042  1.1  mjacob 	ISP_IOXPUT_8(isp, src->abts_rsp_f_ctl_hi, &dst->abts_rsp_f_ctl_hi);
   3043  1.1  mjacob 	ISP_IOXPUT_8(isp, src->abts_rsp_type, &dst->abts_rsp_type);
   3044  1.1  mjacob 	ISP_IOXPUT_16(isp, src->abts_rsp_seq_cnt, &dst->abts_rsp_seq_cnt);
   3045  1.1  mjacob 	ISP_IOXPUT_8(isp, src->abts_rsp_df_ctl, &dst->abts_rsp_df_ctl);
   3046  1.1  mjacob 	ISP_IOXPUT_8(isp, src->abts_rsp_seq_id, &dst->abts_rsp_seq_id);
   3047  1.1  mjacob 	ISP_IOXPUT_16(isp, src->abts_rsp_rx_id, &dst->abts_rsp_rx_id);
   3048  1.1  mjacob 	ISP_IOXPUT_16(isp, src->abts_rsp_ox_id, &dst->abts_rsp_ox_id);
   3049  1.1  mjacob 	ISP_IOXPUT_32(isp, src->abts_rsp_param, &dst->abts_rsp_param);
   3050  1.1  mjacob 	if (src->abts_rsp_r_ctl == BA_ACC) {
   3051  1.1  mjacob 		ISP_IOXPUT_16(isp, src->abts_rsp_payload.ba_acc.reserved,
   3052  1.1  mjacob 		    &dst->abts_rsp_payload.ba_acc.reserved);
   3053  1.1  mjacob 		ISP_IOXPUT_8(isp, src->abts_rsp_payload.ba_acc.last_seq_id,
   3054  1.1  mjacob 		    &dst->abts_rsp_payload.ba_acc.last_seq_id);
   3055  1.1  mjacob 		ISP_IOXPUT_8(isp, src->abts_rsp_payload.ba_acc.seq_id_valid,
   3056  1.1  mjacob 		    &dst->abts_rsp_payload.ba_acc.seq_id_valid);
   3057  1.1  mjacob 		ISP_IOXPUT_16(isp, src->abts_rsp_payload.ba_acc.aborted_rx_id,
   3058  1.1  mjacob 		    &dst->abts_rsp_payload.ba_acc.aborted_rx_id);
   3059  1.1  mjacob 		ISP_IOXPUT_16(isp, src->abts_rsp_payload.ba_acc.aborted_ox_id,
   3060  1.1  mjacob 		    &dst->abts_rsp_payload.ba_acc.aborted_ox_id);
   3061  1.1  mjacob 		ISP_IOXPUT_16(isp, src->abts_rsp_payload.ba_acc.high_seq_cnt,
   3062  1.1  mjacob 		    &dst->abts_rsp_payload.ba_acc.high_seq_cnt);
   3063  1.1  mjacob 		ISP_IOXPUT_16(isp, src->abts_rsp_payload.ba_acc.low_seq_cnt,
   3064  1.1  mjacob 		    &dst->abts_rsp_payload.ba_acc.low_seq_cnt);
   3065  1.1  mjacob 		for (i = 0; i < 4; i++) {
   3066  1.1  mjacob 			ISP_IOXPUT_16(isp,
   3067  1.1  mjacob 			    src->abts_rsp_payload.ba_acc.reserved2[i],
   3068  1.1  mjacob 			    &dst->abts_rsp_payload.ba_acc.reserved2[i]);
   3069  1.1  mjacob 		}
   3070  1.1  mjacob 	} else if (src->abts_rsp_r_ctl == BA_RJT) {
   3071  1.1  mjacob 		ISP_IOXPUT_8(isp, src->abts_rsp_payload.ba_rjt.vendor_unique,
   3072  1.1  mjacob 		    &dst->abts_rsp_payload.ba_rjt.vendor_unique);
   3073  1.1  mjacob 		ISP_IOXPUT_8(isp, src->abts_rsp_payload.ba_rjt.explanation,
   3074  1.1  mjacob 		    &dst->abts_rsp_payload.ba_rjt.explanation);
   3075  1.1  mjacob 		ISP_IOXPUT_8(isp, src->abts_rsp_payload.ba_rjt.reason,
   3076  1.1  mjacob 		    &dst->abts_rsp_payload.ba_rjt.reason);
   3077  1.1  mjacob 		ISP_IOXPUT_8(isp, src->abts_rsp_payload.ba_rjt.reserved,
   3078  1.1  mjacob 		    &dst->abts_rsp_payload.ba_rjt.reserved);
   3079  1.1  mjacob 		for (i = 0; i < 12; i++) {
   3080  1.1  mjacob 			ISP_IOXPUT_16(isp,
   3081  1.1  mjacob 			    src->abts_rsp_payload.ba_rjt.reserved2[i],
   3082  1.1  mjacob 			    &dst->abts_rsp_payload.ba_rjt.reserved2[i]);
   3083  1.1  mjacob 		}
   3084  1.1  mjacob 	} else {
   3085  1.1  mjacob 		for (i = 0; i < 16; i++) {
   3086  1.1  mjacob 			ISP_IOXPUT_8(isp, src->abts_rsp_payload.reserved[i],
   3087  1.1  mjacob 			    &dst->abts_rsp_payload.reserved[i]);
   3088  1.1  mjacob 		}
   3089  1.1  mjacob 	}
   3090  1.1  mjacob 	ISP_IOXPUT_32(isp, src->abts_rsp_rxid_task, &dst->abts_rsp_rxid_task);
   3091  1.1  mjacob }
   3092  1.1  mjacob 
   3093  1.1  mjacob void
   3094  1.1  mjacob isp_get_abts_rsp(ispsoftc_t *isp, abts_rsp_t *src, abts_rsp_t *dst)
   3095  1.1  mjacob {
   3096  1.1  mjacob 	int i;
   3097  1.1  mjacob 
   3098  1.1  mjacob 	isp_get_hdr(isp, &src->abts_rsp_header, &dst->abts_rsp_header);
   3099  1.1  mjacob 	ISP_IOXGET_32(isp, &src->abts_rsp_handle, dst->abts_rsp_handle);
   3100  1.1  mjacob 	ISP_IOXGET_16(isp, &src->abts_rsp_status, dst->abts_rsp_status);
   3101  1.1  mjacob 	ISP_IOXGET_16(isp, &src->abts_rsp_nphdl, dst->abts_rsp_nphdl);
   3102  1.1  mjacob 	ISP_IOXGET_16(isp, &src->abts_rsp_ctl_flags, dst->abts_rsp_ctl_flags);
   3103  1.1  mjacob 	ISP_IOXGET_16(isp, &src->abts_rsp_sof, dst->abts_rsp_sof);
   3104  1.1  mjacob 	ISP_IOXGET_32(isp, &src->abts_rsp_rxid_abts, dst->abts_rsp_rxid_abts);
   3105  1.1  mjacob 	ISP_IOXGET_16(isp, &src->abts_rsp_did_lo, dst->abts_rsp_did_lo);
   3106  1.1  mjacob 	ISP_IOXGET_8(isp, &src->abts_rsp_did_hi, dst->abts_rsp_did_hi);
   3107  1.1  mjacob 	ISP_IOXGET_8(isp, &src->abts_rsp_r_ctl, dst->abts_rsp_r_ctl);
   3108  1.1  mjacob 	ISP_IOXGET_16(isp, &src->abts_rsp_sid_lo, dst->abts_rsp_sid_lo);
   3109  1.1  mjacob 	ISP_IOXGET_8(isp, &src->abts_rsp_sid_hi, dst->abts_rsp_sid_hi);
   3110  1.1  mjacob 	ISP_IOXGET_8(isp, &src->abts_rsp_cs_ctl, dst->abts_rsp_cs_ctl);
   3111  1.1  mjacob 	ISP_IOXGET_16(isp, &src->abts_rsp_f_ctl_lo, dst->abts_rsp_f_ctl_lo);
   3112  1.1  mjacob 	ISP_IOXGET_8(isp, &src->abts_rsp_f_ctl_hi, dst->abts_rsp_f_ctl_hi);
   3113  1.1  mjacob 	ISP_IOXGET_8(isp, &src->abts_rsp_type, dst->abts_rsp_type);
   3114  1.1  mjacob 	ISP_IOXGET_16(isp, &src->abts_rsp_seq_cnt, dst->abts_rsp_seq_cnt);
   3115  1.1  mjacob 	ISP_IOXGET_8(isp, &src->abts_rsp_df_ctl, dst->abts_rsp_df_ctl);
   3116  1.1  mjacob 	ISP_IOXGET_8(isp, &src->abts_rsp_seq_id, dst->abts_rsp_seq_id);
   3117  1.1  mjacob 	ISP_IOXGET_16(isp, &src->abts_rsp_rx_id, dst->abts_rsp_rx_id);
   3118  1.1  mjacob 	ISP_IOXGET_16(isp, &src->abts_rsp_ox_id, dst->abts_rsp_ox_id);
   3119  1.1  mjacob 	ISP_IOXGET_32(isp, &src->abts_rsp_param, dst->abts_rsp_param);
   3120  1.1  mjacob 	for (i = 0; i < 8; i++) {
   3121  1.1  mjacob 		ISP_IOXGET_8(isp, &src->abts_rsp_payload.rsp.reserved[i],
   3122  1.1  mjacob 		    dst->abts_rsp_payload.rsp.reserved[i]);
   3123  1.1  mjacob 	}
   3124  1.1  mjacob 	ISP_IOXGET_32(isp, &src->abts_rsp_payload.rsp.subcode1,
   3125  1.1  mjacob 	    dst->abts_rsp_payload.rsp.subcode1);
   3126  1.1  mjacob 	ISP_IOXGET_32(isp, &src->abts_rsp_payload.rsp.subcode2,
   3127  1.1  mjacob 	    dst->abts_rsp_payload.rsp.subcode2);
   3128  1.1  mjacob 	ISP_IOXGET_32(isp, &src->abts_rsp_rxid_task, dst->abts_rsp_rxid_task);
   3129  1.1  mjacob }
   3130  1.1  mjacob #endif	/* ISP_TARGET_MODE */
   3131  1.1  mjacob /*
   3132  1.1  mjacob  * vim:ts=8:sw=8
   3133  1.1  mjacob  */
   3134