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