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