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