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