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