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