xref: /openbsd-src/sys/dev/ic/qlwreg.h (revision de2fb981ec4f707c5728dc05b79bc26c2bb3f7ee)
1*de2fb981Skettenis /*	$OpenBSD: qlwreg.h,v 1.7 2014/03/15 21:49:47 kettenis Exp $ */
2c0265cf2Skettenis 
3c0265cf2Skettenis /*
4c0265cf2Skettenis  * Copyright (c) 2013, 2014 Jonathan Matthew <jmatthew@openbsd.org>
5c0265cf2Skettenis  * Copyright (c) 2014 Mark Kettenis <kettenis@openbsd.org>
6c0265cf2Skettenis  *
7c0265cf2Skettenis  * Permission to use, copy, modify, and distribute this software for any
8c0265cf2Skettenis  * purpose with or without fee is hereby granted, provided that the above
9c0265cf2Skettenis  * copyright notice and this permission notice appear in all copies.
10c0265cf2Skettenis  *
11c0265cf2Skettenis  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
12c0265cf2Skettenis  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
13c0265cf2Skettenis  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
14c0265cf2Skettenis  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
15c0265cf2Skettenis  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
16c0265cf2Skettenis  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
17c0265cf2Skettenis  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
18c0265cf2Skettenis  */
19c0265cf2Skettenis 
20c0265cf2Skettenis /* firmware loading */
21c0265cf2Skettenis #define QLW_CODE_ORG			0x1000
22c0265cf2Skettenis 
23c0265cf2Skettenis /* interrupt types */
24c0265cf2Skettenis #define QLW_INT_TYPE_MBOX		1
25c0265cf2Skettenis #define QLW_INT_TYPE_ASYNC		2
26c0265cf2Skettenis #define QLW_INT_TYPE_IO			3
27c0265cf2Skettenis #define QLW_INT_TYPE_OTHER		4
28c0265cf2Skettenis 
29c0265cf2Skettenis /* ISP registers */
30c0265cf2Skettenis #define QLW_CFG0			0x04
31c0265cf2Skettenis #define QLW_CFG1			0x06
32c0265cf2Skettenis #define QLW_INT_CTRL			0x08
33c0265cf2Skettenis #define QLW_INT_STATUS			0x0a
34c0265cf2Skettenis #define QLW_SEMA			0x0c
35c0265cf2Skettenis #define QLW_NVRAM			0x0e
36c0265cf2Skettenis #define QLW_FLASH_BIOS_DATA		0x10
37c0265cf2Skettenis #define QLW_FLASH_BIOS_ADDR		0x12
38fdfcaeaeSkettenis #define QLW_CDMA_CFG			0x20
39fdfcaeaeSkettenis #define QLW_DDMA_CFG			0x40
40e753b624Skettenis #define QLW_MBOX_BASE_PCI		0x70
41e753b624Skettenis #define QLW_MBOX_BASE_SBUS		0x80
42fdfcaeaeSkettenis #define QLW_CDMA_CFG_1080		0x80
43fdfcaeaeSkettenis #define QLW_DDMA_CFG_1080		0xa0
44e753b624Skettenis #define QLW_HOST_CMD_CTRL_PCI		0xc0
45c0265cf2Skettenis #define QLW_GPIO_DATA			0xcc
46c0265cf2Skettenis #define QLW_GPIO_ENABLE			0xce
47c0265cf2Skettenis 
48e753b624Skettenis #define QLW_HOST_CMD_CTRL_SBUS		0x440
49e753b624Skettenis 
50e753b624Skettenis #define QLW_REQ_IN			0x08
51e753b624Skettenis #define QLW_REQ_OUT			0x08
52e753b624Skettenis #define QLW_RESP_IN			0x0a
53e753b624Skettenis #define QLW_RESP_OUT			0x0a
54c0265cf2Skettenis 
55fdfcaeaeSkettenis /* QLW_CFG1 */
56fdfcaeaeSkettenis #define QLW_BURST_ENABLE		0x0004
57fdfcaeaeSkettenis #define QLW_PCI_FIFO_16			0x0010
58fdfcaeaeSkettenis #define QLW_PCI_FIFO_32			0x0020
59fdfcaeaeSkettenis #define QLW_PCI_FIFO_64			0x0030
60fdfcaeaeSkettenis #define QLW_PCI_FIFO_128		0x0040
61fdfcaeaeSkettenis #define QLW_PCI_FIFO_MASK		0x0070
62e753b624Skettenis #define QLW_SBUS_FIFO_64		0x0003
63e753b624Skettenis #define QLW_SBUS_FIFO_32		0x0002
64e753b624Skettenis #define QLW_SBUS_FIFO_16		0x0001
65e753b624Skettenis #define QLW_SBUS_FIFO_8			0x0000
66e753b624Skettenis #define QLW_SBUS_FIFO_MASK		0x0003
67e753b624Skettenis #define QLW_SBUS_BURST_8		0x0008
68fdfcaeaeSkettenis #define QLW_DMA_BANK			0x0300
69fdfcaeaeSkettenis 
70c0265cf2Skettenis /* QLW_INT_CTRL */
71c0265cf2Skettenis #define QLW_RESET			0x0001
72c0265cf2Skettenis 
73c0265cf2Skettenis /* QLW_INT_STATUS */
74c0265cf2Skettenis #define QLW_INT_REQ			0x0002
75c0265cf2Skettenis #define QLW_RISC_INT_REQ		0x0004
76c0265cf2Skettenis 
77c0265cf2Skettenis /* QLW_SEMA */
78c0265cf2Skettenis #define QLW_SEMA_STATUS			0x0002
79c0265cf2Skettenis #define QLW_SEMA_LOCK			0x0001
80c0265cf2Skettenis 
81c0265cf2Skettenis /* QLW_NVRAM */
82c0265cf2Skettenis #define QLW_NVRAM_DATA_IN		0x0008
83c0265cf2Skettenis #define QLW_NVRAM_DATA_OUT		0x0004
84c0265cf2Skettenis #define QLW_NVRAM_CHIP_SEL		0x0002
85c0265cf2Skettenis #define QLW_NVRAM_CLOCK			0x0001
86c0265cf2Skettenis #define QLW_NVRAM_CMD_READ		6
87c0265cf2Skettenis 
88fdfcaeaeSkettenis /* QLW_CDMA_CFG and QLW_DDMA_CFG */
89fdfcaeaeSkettenis #define QLW_DMA_BURST_ENABLE		0x0002
90fdfcaeaeSkettenis 
91c0265cf2Skettenis /* QLW_HOST_CMD_CTRL write */
92c0265cf2Skettenis #define QLW_HOST_CMD_SHIFT		12
93c0265cf2Skettenis #define QLW_HOST_CMD_NOP		0x0
94c0265cf2Skettenis #define QLW_HOST_CMD_RESET		0x1
95c0265cf2Skettenis #define QLW_HOST_CMD_PAUSE		0x2
96c0265cf2Skettenis #define QLW_HOST_CMD_RELEASE		0x3
97c0265cf2Skettenis #define QLW_HOST_CMD_MASK_PARITY	0x4
98c0265cf2Skettenis #define QLW_HOST_CMD_SET_HOST_INT	0x5
99c0265cf2Skettenis #define QLW_HOST_CMD_CLR_HOST_INT	0x6
100c0265cf2Skettenis #define QLW_HOST_CMD_CLR_RISC_INT	0x7
101c0265cf2Skettenis #define QLW_HOST_CMD_BIOS		0x9
102c0265cf2Skettenis #define QLW_HOST_CMD_ENABLE_PARITY	0xa
103c0265cf2Skettenis #define QLW_HOST_CMD_PARITY_ERROR	0xe
104c0265cf2Skettenis 
105c0265cf2Skettenis /* QLA_HOST_CMD_CTRL read */
106c0265cf2Skettenis #define QLA_HOST_STATUS_HOST_INT	0x0080
107c0265cf2Skettenis #define QLA_HOST_STATUS_RISC_RESET	0x0040
108c0265cf2Skettenis #define QLA_HOST_STATUS_RISC_PAUSE	0x0020
109c0265cf2Skettenis #define QLA_HOST_STATUS_RISC_EXT	0x0010
110c0265cf2Skettenis 
111c0265cf2Skettenis /* QLW_MBIX_BASE (reg 0) read */
112c0265cf2Skettenis #define QLW_MBOX_HAS_STATUS		0x4000
113c0265cf2Skettenis #define QLW_MBOX_COMPLETE		0x4000
114c0265cf2Skettenis #define QLW_MBOX_INVALID		0x4001
115c0265cf2Skettenis #define QLW_ASYNC_BUS_RESET		0x8001
116c0265cf2Skettenis #define QLW_ASYNC_SYSTEM_ERROR		0x8002
117c0265cf2Skettenis #define QLW_ASYNC_REQ_XFER_ERROR	0x8003
118c0265cf2Skettenis #define QLW_ASYNC_RSP_XFER_ERROR	0x8004
119c0265cf2Skettenis #define QLW_ASYNC_SCSI_CMD_COMPLETE	0x8020
120c0265cf2Skettenis #define QLW_ASYNC_CTIO_COMPLETE		0x8021
121c0265cf2Skettenis 
122c0265cf2Skettenis /* QLW_MBOX_BASE (reg 0) write */
123c0265cf2Skettenis #define QLW_MBOX_NOP			0x0000
124c0265cf2Skettenis #define QLW_MBOX_LOAD_RAM		0x0001
125c0265cf2Skettenis #define QLW_MBOX_EXEC_FIRMWARE		0x0002
126c0265cf2Skettenis #define QLW_MBOX_WRITE_RAM_WORD		0x0004
127c0265cf2Skettenis #define QLW_MBOX_REGISTER_TEST		0x0006
128c0265cf2Skettenis #define QLW_MBOX_VERIFY_CSUM		0x0007
129c0265cf2Skettenis #define QLW_MBOX_ABOUT_FIRMWARE		0x0008
130de121c55Skettenis #define QLW_MBOX_INIT_REQ_QUEUE		0x0010
131de121c55Skettenis #define QLW_MBOX_INIT_RSP_QUEUE		0x0011
132c0265cf2Skettenis #define QLW_MBOX_BUS_RESET		0x0018
133c0265cf2Skettenis #define QLW_MBOX_GET_FIRMWARE_STATUS	0x001F
134c0265cf2Skettenis #define QLW_MBOX_SET_INITIATOR_ID	0x0030
135c0265cf2Skettenis #define QLW_MBOX_SET_SELECTION_TIMEOUT	0x0031
136c0265cf2Skettenis #define QLW_MBOX_SET_RETRY_COUNT	0x0032
137c0265cf2Skettenis #define QLW_MBOX_SET_TAG_AGE_LIMIT	0x0033
138c0265cf2Skettenis #define QLW_MBOX_SET_CLOCK_RATE		0x0034
139c0265cf2Skettenis #define QLW_MBOX_SET_ACTIVE_NEGATION	0x0035
140c0265cf2Skettenis #define QLW_MBOX_SET_ASYNC_DATA_SETUP	0x0036
141c0265cf2Skettenis #define QLW_MBOX_SET_PCI_CONTROL	0x0037
142c0265cf2Skettenis #define QLW_MBOX_SET_TARGET_PARAMETERS	0x0038
143c0265cf2Skettenis #define QLW_MBOX_SET_DEVICE_QUEUE	0x0039
144c0265cf2Skettenis #define QLW_MBOX_SET_SYSTEM_PARAMETER	0x0045
145c0265cf2Skettenis #define QLW_MBOX_SET_FIRMWARE_FEATURES	0x004a
146c0265cf2Skettenis #define QLW_MBOX_INIT_REQ_QUEUE_A64	0x0052
147c0265cf2Skettenis #define QLW_MBOX_INIT_RSP_QUEUE_A64	0x0053
148c0265cf2Skettenis #define QLW_MBOX_SET_DATA_OVERRUN_RECOVERY	0x005a
149c0265cf2Skettenis 
150c0265cf2Skettenis /* mailbox operation register bitfields */
151c0265cf2Skettenis #define QLW_MBOX_ABOUT_FIRMWARE_IN	0x0001
152c0265cf2Skettenis #define QLW_MBOX_ABOUT_FIRMWARE_OUT	0x004f
153c0265cf2Skettenis #define QLW_MBOX_INIT_FIRMWARE_IN	0x00fd
154c0265cf2Skettenis 
155d28ac15bSkettenis #define QLW_FW_FEATURE_FAST_POSTING	0x0001
156d28ac15bSkettenis #define QLW_FW_FEATURE_LVD_NOTIFY	0x0002
157d28ac15bSkettenis 
158c0265cf2Skettenis /* nvram layout */
159c0265cf2Skettenis struct qlw_nvram_target {
160c0265cf2Skettenis 	u_int8_t	parameter;
161c0265cf2Skettenis 	u_int8_t	execution_throttle;
162c0265cf2Skettenis 	u_int8_t	sync_period;
163c0265cf2Skettenis 	u_int8_t	flags;
164c0265cf2Skettenis 	u_int8_t	reserved[2];
165c0265cf2Skettenis } __packed;
166c0265cf2Skettenis 
167c0265cf2Skettenis struct qlw_nvram_1040 {
168c0265cf2Skettenis 	u_int8_t	id[4];
169c0265cf2Skettenis 	u_int8_t	nvram_version;
170c0265cf2Skettenis 	u_int8_t	config1;
171c0265cf2Skettenis 	u_int8_t	reset_delay;
172c0265cf2Skettenis 	u_int8_t	retry_count;
173c0265cf2Skettenis 	u_int8_t	retry_delay;
174c0265cf2Skettenis 	u_int8_t	config2;
175c0265cf2Skettenis 	u_int8_t	tag_age_limit;
176c0265cf2Skettenis 	u_int8_t	flags1;
177c0265cf2Skettenis 	u_int16_t	selection_timeout;
178c0265cf2Skettenis 	u_int16_t	max_queue_depth;
179c0265cf2Skettenis 	u_int8_t	flags2;
180c0265cf2Skettenis 	u_int8_t	reserved_0[5];
181c0265cf2Skettenis 	u_int8_t	flags3;
182c0265cf2Skettenis 	u_int8_t	reserved_1[5];
183c0265cf2Skettenis 	struct qlw_nvram_target target[16];
184c0265cf2Skettenis 	u_int8_t	reserved_2[3];
185c0265cf2Skettenis 	u_int8_t	checksum;
186c0265cf2Skettenis } __packed;
187c0265cf2Skettenis 
188c0265cf2Skettenis struct qlw_nvram_bus {
189c0265cf2Skettenis 	u_int8_t	config1;
190c0265cf2Skettenis 	u_int8_t	reset_delay;
191c0265cf2Skettenis 	u_int8_t	retry_count;
192c0265cf2Skettenis 	u_int8_t	retry_delay;
193c0265cf2Skettenis 	u_int8_t	config2;
194c0265cf2Skettenis 	u_int8_t	reserved_0;
195c0265cf2Skettenis 	u_int16_t	selection_timeout;
196c0265cf2Skettenis 	u_int16_t	max_queue_depth;
197c0265cf2Skettenis 	u_int8_t	reserved_1[6];
198c0265cf2Skettenis 	struct qlw_nvram_target target[16];
199c0265cf2Skettenis } __packed;
200c0265cf2Skettenis 
201c0265cf2Skettenis struct qlw_nvram_1080 {
202c0265cf2Skettenis 	u_int8_t	id[4];
203c0265cf2Skettenis 	u_int8_t	nvram_version;
204c0265cf2Skettenis 	u_int8_t	flags1;
205c0265cf2Skettenis 	u_int16_t	flags2;
206c0265cf2Skettenis 	u_int8_t	reserved_0[8];
207c0265cf2Skettenis 	u_int8_t	isp_config;
208c0265cf2Skettenis 	u_int8_t	termination;
209c0265cf2Skettenis 	u_int16_t	isp_parameter;
210d28ac15bSkettenis 	u_int16_t	fw_features;
211c0265cf2Skettenis 	u_int16_t	reserved_1;
212c0265cf2Skettenis 	struct qlw_nvram_bus bus[2];
213c0265cf2Skettenis 	u_int8_t	reserved_2[2];
214c0265cf2Skettenis 	u_int16_t	subsystem_vendor_id;
215c0265cf2Skettenis 	u_int16_t	subsystem_device_id;
216c0265cf2Skettenis 	u_int8_t	reserved_3;
217c0265cf2Skettenis 	u_int8_t	checksum;
218c0265cf2Skettenis } __packed;
219c0265cf2Skettenis 
220c0265cf2Skettenis struct qlw_nvram {
221c0265cf2Skettenis 	u_int8_t	id[4];
222c0265cf2Skettenis 	u_int8_t	nvram_version;
223c0265cf2Skettenis 	u_int8_t	data[251];
224c0265cf2Skettenis };
225c0265cf2Skettenis 
226c0265cf2Skettenis #define QLW_TARGET_PPR		0x0020
227c0265cf2Skettenis #define QLW_TARGET_ASYNC	0x0040
228c0265cf2Skettenis #define QLW_TARGET_NARROW	0x0080
229c0265cf2Skettenis #define QLW_TARGET_RENEG	0x0100
230c0265cf2Skettenis #define QLW_TARGET_QFRZ		0x0200
231c0265cf2Skettenis #define QLW_TARGET_ARQ		0x0400
232c0265cf2Skettenis #define QLW_TARGET_TAGS		0x0800
233c0265cf2Skettenis #define QLW_TARGET_SYNC		0x1000
234c0265cf2Skettenis #define QLW_TARGET_WIDE		0x2000
235c0265cf2Skettenis #define QLW_TARGET_PARITY	0x4000
236c0265cf2Skettenis #define QLW_TARGET_DISC		0x8000
237c0265cf2Skettenis #define QLW_TARGET_SAFE		0xc500
238c0265cf2Skettenis #define QLW_TARGET_DEFAULT	0xfd00
239c0265cf2Skettenis 
240c0265cf2Skettenis #define QLW_IOCB_CMD_HEAD_OF_QUEUE	0x0002
241c0265cf2Skettenis #define QLW_IOCB_CMD_ORDERED_QUEUE	0x0004
242c0265cf2Skettenis #define QLW_IOCB_CMD_SIMPLE_QUEUE	0x0008
243c0265cf2Skettenis #define QLW_IOCB_CMD_NO_DATA		0x0000
244c0265cf2Skettenis #define QLW_IOCB_CMD_READ_DATA		0x0020
245c0265cf2Skettenis #define QLW_IOCB_CMD_WRITE_DATA		0x0040
246c0265cf2Skettenis #define QLW_IOCB_CMD_NO_FAST_POST	0x0080
247c0265cf2Skettenis 
248*de2fb981Skettenis struct qlw_iocb_hdr {
249*de2fb981Skettenis 	u_int8_t	entry_type;
250*de2fb981Skettenis 	u_int8_t	entry_count;
251*de2fb981Skettenis 	u_int8_t	seqno;
252*de2fb981Skettenis 	u_int8_t	flags;
253*de2fb981Skettenis } __packed;
254c0265cf2Skettenis 
255c0265cf2Skettenis #define QLW_IOCB_SEGS_PER_CMD		4
256c0265cf2Skettenis #define QLW_IOCB_SEGS_PER_CONT		7
257c0265cf2Skettenis 
258c0265cf2Skettenis struct qlw_iocb_seg {
259c0265cf2Skettenis 	u_int32_t	seg_addr;
260c0265cf2Skettenis 	u_int32_t	seg_len;
261c0265cf2Skettenis } __packed;
262c0265cf2Skettenis 
263c0265cf2Skettenis /* IOCB types */
264c0265cf2Skettenis #define QLW_IOCB_CMD_TYPE_0		0x01
265c0265cf2Skettenis #define QLW_IOCB_CONT_TYPE_0		0x02
266c0265cf2Skettenis #define QLW_IOCB_STATUS			0x03
267c0265cf2Skettenis #define QLW_IOCB_MARKER			0x04
268c0265cf2Skettenis 
269c0265cf2Skettenis struct qlw_iocb_req0 {
270*de2fb981Skettenis 	struct qlw_iocb_hdr hdr;	/* QLW_IOCB_REQ_TYPE0 */
271c0265cf2Skettenis 
272*de2fb981Skettenis 	u_int32_t	handle;
273*de2fb981Skettenis 	u_int16_t	device;
274*de2fb981Skettenis 	u_int16_t	ccblen;
275*de2fb981Skettenis 	u_int16_t	flags;
276*de2fb981Skettenis 	u_int16_t	reserved;
277*de2fb981Skettenis 	u_int16_t	timeout;
278*de2fb981Skettenis 	u_int16_t	seg_count;
279*de2fb981Skettenis 	u_int8_t	cdb[12];
280*de2fb981Skettenis 	struct qlw_iocb_seg segs[4];
281c0265cf2Skettenis } __packed;
282c0265cf2Skettenis 
283c0265cf2Skettenis struct qlw_iocb_cont0 {
284*de2fb981Skettenis 	struct qlw_iocb_hdr hdr;	/* QLW_IOCB_CONT_TYPE_0 */
285c0265cf2Skettenis 
286c0265cf2Skettenis 	u_int32_t	reserved;
287c0265cf2Skettenis 	struct qlw_iocb_seg segs[7];
288c0265cf2Skettenis } __packed;
289c0265cf2Skettenis 
290*de2fb981Skettenis struct qlw_iocb_status {
291*de2fb981Skettenis 	struct qlw_iocb_hdr hdr;
292c0265cf2Skettenis 
293c0265cf2Skettenis 	u_int32_t	handle;
294c0265cf2Skettenis 	u_int16_t	scsi_status;
295c0265cf2Skettenis 	u_int16_t	completion;
296c0265cf2Skettenis 	u_int16_t	state_flags;
297c0265cf2Skettenis 	u_int16_t	status_flags;
298c0265cf2Skettenis 	u_int16_t	rsp_len;
299c0265cf2Skettenis 	u_int16_t	sense_len;
300c0265cf2Skettenis 	u_int32_t	resid;
301c0265cf2Skettenis 	u_int8_t	fcp_rsp[8];
302c0265cf2Skettenis 	u_int8_t	sense_data[32];
303c0265cf2Skettenis } __packed;
304c0265cf2Skettenis 
305c0265cf2Skettenis /* completion */
306c0265cf2Skettenis #define QLW_IOCB_STATUS_COMPLETE	0x0000
307c0265cf2Skettenis #define QLW_IOCB_STATUS_INCOMPLETE	0x0001
308c0265cf2Skettenis #define QLW_IOCB_STATUS_DMA_ERROR	0x0002
309c0265cf2Skettenis #define QLW_IOCB_STATUS_RESET		0x0004
310c0265cf2Skettenis #define QLW_IOCB_STATUS_ABORTED		0x0005
311c0265cf2Skettenis #define QLW_IOCB_STATUS_TIMEOUT		0x0006
312c0265cf2Skettenis #define QLW_IOCB_STATUS_DATA_OVERRUN	0x0007
313c0265cf2Skettenis #define QLW_IOCB_STATUS_DATA_UNDERRUN	0x0015
31477bba8c0Skettenis #define QLW_IOCB_STATUS_QUEUE_FULL	0x001c
31577bba8c0Skettenis #define QLW_IOCB_STATUS_WIDE_FAILED	0x001f
31677bba8c0Skettenis #define QLW_IOCB_STATUS_SYNCXFER_FAILED	0x0020
317c0265cf2Skettenis 
318c0265cf2Skettenis #define QLW_STATE_GOT_BUS		0x0100
319c0265cf2Skettenis #define QLW_STATE_GOT_TARGET		0x0200
320c0265cf2Skettenis 
321c0265cf2Skettenis #define QLW_SCSI_STATUS_SENSE_VALID	0x0200
322c0265cf2Skettenis 
323c0265cf2Skettenis struct qlw_iocb_marker {
324*de2fb981Skettenis 	struct qlw_iocb_hdr hdr;	/* QLW_IOCB_MARKER */
325c0265cf2Skettenis 
326c0265cf2Skettenis 	u_int32_t	handle;
327*de2fb981Skettenis 	u_int16_t	device;
328*de2fb981Skettenis 	u_int16_t	modifier;
329*de2fb981Skettenis 	u_int8_t	reserved2[52];
330*de2fb981Skettenis 
331c0265cf2Skettenis } __packed;
332*de2fb981Skettenis 
333*de2fb981Skettenis #define QLW_IOCB_MARKER_SYNC_ALL	2
334