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