1f39a775715c86bb9165a3fc79bfc652138e44ff4Vikas Chaudhary/* 57xx_iscsi_hsi.h: QLogic NetXtreme II iSCSI HSI.
2cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan *
30b3bf38739185a6f18aad18863773acc24f6a2e4Eddie Wai * Copyright (c) 2006 - 2013 Broadcom Corporation
4f39a775715c86bb9165a3fc79bfc652138e44ff4Vikas Chaudhary * Copyright (c) 2014, QLogic Corporation
5cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan *
6cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan * This program is free software; you can redistribute it and/or modify
7cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan * it under the terms of the GNU General Public License as published by
8cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan * the Free Software Foundation.
9cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan *
10cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan * Written by: Anil Veerabhadrappa (anilgv@broadcom.com)
11f39a775715c86bb9165a3fc79bfc652138e44ff4Vikas Chaudhary * Previously Maintained by: Eddie Wai (eddie.wai@broadcom.com)
12f39a775715c86bb9165a3fc79bfc652138e44ff4Vikas Chaudhary * Maintained by: QLogic-Storage-Upstream@qlogic.com
13cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan */
14cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#ifndef __57XX_ISCSI_HSI_LINUX_LE__
15cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define __57XX_ISCSI_HSI_LINUX_LE__
16cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan
17cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan/*
18cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan * iSCSI Async CQE
19cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan */
20cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chanstruct bnx2i_async_msg {
21cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
22cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 op_code;
23cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved1;
24cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved0;
25cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
26cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved0;
27cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved1;
28cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 op_code;
29cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
30cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 reserved2;
31cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 exp_cmd_sn;
32cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 max_cmd_sn;
33cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 reserved3[2];
34cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
35cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved5;
36cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 err_code;
37cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved4;
38cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
39cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved4;
40cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 err_code;
41cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved5;
42cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
43cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 reserved6;
44cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 lun[2];
45cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
46cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 async_event;
47cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 async_vcode;
48cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 param1;
49cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
50cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 param1;
51cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 async_vcode;
52cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 async_event;
53cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
54cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
55cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 param2;
56cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 param3;
57cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
58cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 param3;
59cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 param2;
60cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
61cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 reserved7[3];
62cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 cq_req_sn;
63cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan};
64cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan
65cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan
66cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan/*
67cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan * iSCSI Buffer Descriptor (BD)
68cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan */
69cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chanstruct iscsi_bd {
70cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 buffer_addr_hi;
71cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 buffer_addr_lo;
72cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
73cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved0;
74cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 buffer_length;
75cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
76cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 buffer_length;
77cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved0;
78cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
79cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
80cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved3;
81cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 flags;
82cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_BD_RESERVED1 (0x3F<<0)
83cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_BD_RESERVED1_SHIFT 0
84cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_BD_LAST_IN_BD_CHAIN (0x1<<6)
85cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_BD_LAST_IN_BD_CHAIN_SHIFT 6
86cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_BD_FIRST_IN_BD_CHAIN (0x1<<7)
87cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_BD_FIRST_IN_BD_CHAIN_SHIFT 7
88cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_BD_RESERVED2 (0xFF<<8)
89cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_BD_RESERVED2_SHIFT 8
90cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
91cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 flags;
92cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_BD_RESERVED1 (0x3F<<0)
93cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_BD_RESERVED1_SHIFT 0
94cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_BD_LAST_IN_BD_CHAIN (0x1<<6)
95cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_BD_LAST_IN_BD_CHAIN_SHIFT 6
96cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_BD_FIRST_IN_BD_CHAIN (0x1<<7)
97cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_BD_FIRST_IN_BD_CHAIN_SHIFT 7
98cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_BD_RESERVED2 (0xFF<<8)
99cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_BD_RESERVED2_SHIFT 8
100cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved3;
101cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
102cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan};
103cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan
104cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan
105cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan/*
106cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan * iSCSI Cleanup SQ WQE
107cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan */
108cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chanstruct bnx2i_cleanup_request {
109cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
110cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 op_code;
111cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved1;
112cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved0;
113cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
114cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved0;
115cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved1;
116cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 op_code;
117cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
118cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 reserved2[3];
119cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
120cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved3;
121cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 itt;
122cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CLEANUP_REQUEST_INDEX (0x3FFF<<0)
123cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CLEANUP_REQUEST_INDEX_SHIFT 0
124cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CLEANUP_REQUEST_TYPE (0x3<<14)
125cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CLEANUP_REQUEST_TYPE_SHIFT 14
126cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
127cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 itt;
128cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CLEANUP_REQUEST_INDEX (0x3FFF<<0)
129cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CLEANUP_REQUEST_INDEX_SHIFT 0
130cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CLEANUP_REQUEST_TYPE (0x3<<14)
131cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CLEANUP_REQUEST_TYPE_SHIFT 14
132cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved3;
133cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
134cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 reserved4[10];
135cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
136cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 cq_index;
137cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved6;
138cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved5;
139cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
140cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved5;
141cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved6;
142cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 cq_index;
143cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
144cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan};
145cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan
146cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan
147cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan/*
148cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan * iSCSI Cleanup CQE
149cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan */
150cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chanstruct bnx2i_cleanup_response {
151cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
152cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 op_code;
153cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 status;
154cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved0;
155cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
156cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved0;
157cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 status;
158cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 op_code;
159cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
160cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 reserved1[3];
161cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 reserved2[2];
162cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
163cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved4;
164cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 err_code;
165cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved3;
166cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
167cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved3;
168cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 err_code;
169cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved4;
170cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
171cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 reserved5[7];
172cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
173cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved6;
174cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 itt;
175cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CLEANUP_RESPONSE_INDEX (0x3FFF<<0)
176cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CLEANUP_RESPONSE_INDEX_SHIFT 0
177cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CLEANUP_RESPONSE_TYPE (0x3<<14)
178cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CLEANUP_RESPONSE_TYPE_SHIFT 14
179cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
180cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 itt;
181cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CLEANUP_RESPONSE_INDEX (0x3FFF<<0)
182cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CLEANUP_RESPONSE_INDEX_SHIFT 0
183cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CLEANUP_RESPONSE_TYPE (0x3<<14)
184cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CLEANUP_RESPONSE_TYPE_SHIFT 14
185cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved6;
186cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
187cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 cq_req_sn;
188cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan};
189cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan
190cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan
191cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan/*
192cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan * SCSI read/write SQ WQE
193cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan */
194cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chanstruct bnx2i_cmd_request {
195cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
196cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 op_code;
197cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 op_attr;
198cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_REQUEST_TASK_ATTR (0x7<<0)
199cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_REQUEST_TASK_ATTR_SHIFT 0
200cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_REQUEST_RESERVED1 (0x3<<3)
201cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_REQUEST_RESERVED1_SHIFT 3
202cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_REQUEST_WRITE (0x1<<5)
203cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_REQUEST_WRITE_SHIFT 5
204cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_REQUEST_READ (0x1<<6)
205cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_REQUEST_READ_SHIFT 6
206cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_REQUEST_FINAL (0x1<<7)
207cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_REQUEST_FINAL_SHIFT 7
208cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved0;
209cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
210cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved0;
211cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 op_attr;
212cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_REQUEST_TASK_ATTR (0x7<<0)
213cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_REQUEST_TASK_ATTR_SHIFT 0
214cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_REQUEST_RESERVED1 (0x3<<3)
215cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_REQUEST_RESERVED1_SHIFT 3
216cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_REQUEST_WRITE (0x1<<5)
217cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_REQUEST_WRITE_SHIFT 5
218cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_REQUEST_READ (0x1<<6)
219cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_REQUEST_READ_SHIFT 6
220cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_REQUEST_FINAL (0x1<<7)
221cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_REQUEST_FINAL_SHIFT 7
222cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 op_code;
223cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
224cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
225cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 ud_buffer_offset;
226cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 sd_buffer_offset;
227cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
228cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 sd_buffer_offset;
229cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 ud_buffer_offset;
230cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
231cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 lun[2];
232cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
233cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved2;
234cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 itt;
235cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_REQUEST_INDEX (0x3FFF<<0)
236cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_REQUEST_INDEX_SHIFT 0
237cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_REQUEST_TYPE (0x3<<14)
238cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_REQUEST_TYPE_SHIFT 14
239cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
240cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 itt;
241cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_REQUEST_INDEX (0x3FFF<<0)
242cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_REQUEST_INDEX_SHIFT 0
243cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_REQUEST_TYPE (0x3<<14)
244cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_REQUEST_TYPE_SHIFT 14
245cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved2;
246cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
247cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 total_data_transfer_length;
248cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 cmd_sn;
249cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 reserved3;
250cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 cdb[4];
251cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 zero_fill;
252cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 bd_list_addr_lo;
253cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 bd_list_addr_hi;
254cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
255cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 cq_index;
256cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 sd_start_bd_index;
257cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 ud_start_bd_index;
258cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 num_bds;
259cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
260cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 num_bds;
261cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 ud_start_bd_index;
262cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 sd_start_bd_index;
263cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 cq_index;
264cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
265cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan};
266cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan
267cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan
268cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan/*
269cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan * task statistics for write response
270cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan */
271cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chanstruct bnx2i_write_resp_task_stat {
2722e499d3cc13365a87815266dda59904dcb8c8d6cBarak Witkowski#if defined(__BIG_ENDIAN)
2732e499d3cc13365a87815266dda59904dcb8c8d6cBarak Witkowski	u16 num_r2ts;
2742e499d3cc13365a87815266dda59904dcb8c8d6cBarak Witkowski	u16 num_data_outs;
2752e499d3cc13365a87815266dda59904dcb8c8d6cBarak Witkowski#elif defined(__LITTLE_ENDIAN)
2762e499d3cc13365a87815266dda59904dcb8c8d6cBarak Witkowski	u16 num_data_outs;
2772e499d3cc13365a87815266dda59904dcb8c8d6cBarak Witkowski	u16 num_r2ts;
2782e499d3cc13365a87815266dda59904dcb8c8d6cBarak Witkowski#endif
279cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan};
280cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan
281cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan/*
282cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan * task statistics for read response
283cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan */
284cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chanstruct bnx2i_read_resp_task_stat {
285cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
2862e499d3cc13365a87815266dda59904dcb8c8d6cBarak Witkowski	u16 reserved;
2872e499d3cc13365a87815266dda59904dcb8c8d6cBarak Witkowski	u16 num_data_ins;
288cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
2892e499d3cc13365a87815266dda59904dcb8c8d6cBarak Witkowski	u16 num_data_ins;
2902e499d3cc13365a87815266dda59904dcb8c8d6cBarak Witkowski	u16 reserved;
291cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
292cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan};
293cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan
294cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan/*
295cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan * task statistics for iSCSI cmd response
296cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan */
297cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chanunion bnx2i_cmd_resp_task_stat {
298cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	struct bnx2i_write_resp_task_stat write_stat;
299cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	struct bnx2i_read_resp_task_stat read_stat;
300cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan};
301cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan
302cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan/*
303cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan * SCSI Command CQE
304cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan */
305cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chanstruct bnx2i_cmd_response {
306cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
307cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 op_code;
308cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 response_flags;
309cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_RESPONSE_RESERVED0 (0x1<<0)
310cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_RESPONSE_RESERVED0_SHIFT 0
311cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_RESPONSE_RESIDUAL_UNDERFLOW (0x1<<1)
312cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_RESPONSE_RESIDUAL_UNDERFLOW_SHIFT 1
313cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_RESPONSE_RESIDUAL_OVERFLOW (0x1<<2)
314cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_RESPONSE_RESIDUAL_OVERFLOW_SHIFT 2
315cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_RESPONSE_BR_RESIDUAL_UNDERFLOW (0x1<<3)
316cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_RESPONSE_BR_RESIDUAL_UNDERFLOW_SHIFT 3
317cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_RESPONSE_BR_RESIDUAL_OVERFLOW (0x1<<4)
318cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_RESPONSE_BR_RESIDUAL_OVERFLOW_SHIFT 4
319cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_RESPONSE_RESERVED1 (0x7<<5)
320cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_RESPONSE_RESERVED1_SHIFT 5
321cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 response;
322cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 status;
323cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
324cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 status;
325cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 response;
326cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 response_flags;
327cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_RESPONSE_RESERVED0 (0x1<<0)
328cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_RESPONSE_RESERVED0_SHIFT 0
329cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_RESPONSE_RESIDUAL_UNDERFLOW (0x1<<1)
330cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_RESPONSE_RESIDUAL_UNDERFLOW_SHIFT 1
331cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_RESPONSE_RESIDUAL_OVERFLOW (0x1<<2)
332cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_RESPONSE_RESIDUAL_OVERFLOW_SHIFT 2
333cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_RESPONSE_BR_RESIDUAL_UNDERFLOW (0x1<<3)
334cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_RESPONSE_BR_RESIDUAL_UNDERFLOW_SHIFT 3
335cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_RESPONSE_BR_RESIDUAL_OVERFLOW (0x1<<4)
336cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_RESPONSE_BR_RESIDUAL_OVERFLOW_SHIFT 4
337cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_RESPONSE_RESERVED1 (0x7<<5)
338cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_RESPONSE_RESERVED1_SHIFT 5
339cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 op_code;
340cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
341cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 data_length;
342cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 exp_cmd_sn;
343cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 max_cmd_sn;
344cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 reserved2;
345cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 residual_count;
346cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
347cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved4;
348cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 err_code;
349cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved3;
350cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
351cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved3;
352cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 err_code;
353cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved4;
354cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
355cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 reserved5[5];
356cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	union bnx2i_cmd_resp_task_stat task_stat;
357cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 reserved6;
358cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
359cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved7;
360cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 itt;
361cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_RESPONSE_INDEX (0x3FFF<<0)
362cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_RESPONSE_INDEX_SHIFT 0
363cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_RESPONSE_TYPE (0x3<<14)
364cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_RESPONSE_TYPE_SHIFT 14
365cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
366cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 itt;
367cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_RESPONSE_INDEX (0x3FFF<<0)
368cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_RESPONSE_INDEX_SHIFT 0
369cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_RESPONSE_TYPE (0x3<<14)
370cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_CMD_RESPONSE_TYPE_SHIFT 14
371cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved7;
372cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
373cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 cq_req_sn;
374cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan};
375cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan
376cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan
377cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan
378cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan/*
379cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan * firmware middle-path request SQ WQE
380cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan */
381cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chanstruct bnx2i_fw_mp_request {
382cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
383cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 op_code;
384cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 op_attr;
385cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 hdr_opaque1;
386cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
387cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 hdr_opaque1;
388cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 op_attr;
389cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 op_code;
390cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
391cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 data_length;
392cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 hdr_opaque2[2];
393cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
394cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved0;
395cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 itt;
396cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_FW_MP_REQUEST_INDEX (0x3FFF<<0)
397cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_FW_MP_REQUEST_INDEX_SHIFT 0
398cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_FW_MP_REQUEST_TYPE (0x3<<14)
399cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_FW_MP_REQUEST_TYPE_SHIFT 14
400cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
401cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 itt;
402cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_FW_MP_REQUEST_INDEX (0x3FFF<<0)
403cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_FW_MP_REQUEST_INDEX_SHIFT 0
404cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_FW_MP_REQUEST_TYPE (0x3<<14)
405cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_FW_MP_REQUEST_TYPE_SHIFT 14
406cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved0;
407cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
408cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 hdr_opaque3[4];
409cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 resp_bd_list_addr_lo;
410cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 resp_bd_list_addr_hi;
411cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 resp_buffer;
412cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_FW_MP_REQUEST_RESP_BUFFER_LENGTH (0xFFFFFF<<0)
413cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_FW_MP_REQUEST_RESP_BUFFER_LENGTH_SHIFT 0
414cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_FW_MP_REQUEST_NUM_RESP_BDS (0xFF<<24)
415cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_FW_MP_REQUEST_NUM_RESP_BDS_SHIFT 24
416cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
417cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved4;
418cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved3;
419cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 flags;
420cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_FW_MP_REQUEST_RESERVED1 (0x1<<0)
421cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_FW_MP_REQUEST_RESERVED1_SHIFT 0
422cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_FW_MP_REQUEST_LOCAL_COMPLETION (0x1<<1)
423cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_FW_MP_REQUEST_LOCAL_COMPLETION_SHIFT 1
424cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_FW_MP_REQUEST_UPDATE_EXP_STAT_SN (0x1<<2)
425cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_FW_MP_REQUEST_UPDATE_EXP_STAT_SN_SHIFT 2
426cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_FW_MP_REQUEST_RESERVED2 (0x1F<<3)
427cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_FW_MP_REQUEST_RESERVED2_SHIFT 3
428cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
429cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 flags;
430cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_FW_MP_REQUEST_RESERVED1 (0x1<<0)
431cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_FW_MP_REQUEST_RESERVED1_SHIFT 0
432cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_FW_MP_REQUEST_LOCAL_COMPLETION (0x1<<1)
433cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_FW_MP_REQUEST_LOCAL_COMPLETION_SHIFT 1
434cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_FW_MP_REQUEST_UPDATE_EXP_STAT_SN (0x1<<2)
435cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_FW_MP_REQUEST_UPDATE_EXP_STAT_SN_SHIFT 2
436cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_FW_MP_REQUEST_RESERVED2 (0x1F<<3)
437cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_FW_MP_REQUEST_RESERVED2_SHIFT 3
438cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved3;
439cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved4;
440cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
441cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 bd_list_addr_lo;
442cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 bd_list_addr_hi;
443cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
444cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 cq_index;
445cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved6;
446cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved5;
447cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 num_bds;
448cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
449cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 num_bds;
450cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved5;
451cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved6;
452cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 cq_index;
453cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
454cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan};
455cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan
456cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan
457cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan/*
458cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan * firmware response - CQE: used only by firmware
459cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan */
460cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chanstruct bnx2i_fw_response {
461cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 hdr_dword1[2];
462cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 hdr_exp_cmd_sn;
463cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 hdr_max_cmd_sn;
464cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 hdr_ttt;
465cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 hdr_res_cnt;
466cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 cqe_flags;
467cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_FW_RESPONSE_RESERVED2 (0xFF<<0)
468cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_FW_RESPONSE_RESERVED2_SHIFT 0
469cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_FW_RESPONSE_ERR_CODE (0xFF<<8)
470cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_FW_RESPONSE_ERR_CODE_SHIFT 8
471cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_FW_RESPONSE_RESERVED3 (0xFFFF<<16)
472cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_FW_RESPONSE_RESERVED3_SHIFT 16
473cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 stat_sn;
474cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 hdr_dword2[2];
475cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 hdr_dword3[2];
476cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 task_stat;
477cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 reserved0;
478cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 hdr_itt;
479cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 cq_req_sn;
480cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan};
481cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan
482cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan
483cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan/*
484cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan * iSCSI KCQ CQE parameters
485cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan */
486cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chanunion iscsi_kcqe_params {
487cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 reserved0[4];
488cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan};
489cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan
490cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan/*
491cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan * iSCSI KCQ CQE
492cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan */
493cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chanstruct iscsi_kcqe {
494cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 iscsi_conn_id;
495cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 completion_status;
496cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 iscsi_conn_context_id;
497cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	union iscsi_kcqe_params params;
498cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
499cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 flags;
500cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_KCQE_RESERVED0 (0xF<<0)
501cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_KCQE_RESERVED0_SHIFT 0
502cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_KCQE_LAYER_CODE (0x7<<4)
503cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_KCQE_LAYER_CODE_SHIFT 4
504cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_KCQE_RESERVED1 (0x1<<7)
505cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_KCQE_RESERVED1_SHIFT 7
506cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 op_code;
507cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 qe_self_seq;
508cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
509cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 qe_self_seq;
510cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 op_code;
511cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 flags;
512cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_KCQE_RESERVED0 (0xF<<0)
513cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_KCQE_RESERVED0_SHIFT 0
514cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_KCQE_LAYER_CODE (0x7<<4)
515cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_KCQE_LAYER_CODE_SHIFT 4
516cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_KCQE_RESERVED1 (0x1<<7)
517cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_KCQE_RESERVED1_SHIFT 7
518cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
519cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan};
520cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan
521cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan
522cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan
523cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan/*
524cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan * iSCSI KWQE header
525cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan */
526cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chanstruct iscsi_kwqe_header {
527cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
528cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 flags;
529cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_KWQE_HEADER_RESERVED0 (0xF<<0)
530cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_KWQE_HEADER_RESERVED0_SHIFT 0
531cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_KWQE_HEADER_LAYER_CODE (0x7<<4)
532cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_KWQE_HEADER_LAYER_CODE_SHIFT 4
533cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_KWQE_HEADER_RESERVED1 (0x1<<7)
534cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_KWQE_HEADER_RESERVED1_SHIFT 7
535cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 op_code;
536cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
537cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 op_code;
538cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 flags;
539cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_KWQE_HEADER_RESERVED0 (0xF<<0)
540cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_KWQE_HEADER_RESERVED0_SHIFT 0
541cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_KWQE_HEADER_LAYER_CODE (0x7<<4)
542cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_KWQE_HEADER_LAYER_CODE_SHIFT 4
543cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_KWQE_HEADER_RESERVED1 (0x1<<7)
544cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_KWQE_HEADER_RESERVED1_SHIFT 7
545cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
546cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan};
547cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan
548cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan/*
549cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan * iSCSI firmware init request 1
550cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan */
551cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chanstruct iscsi_kwqe_init1 {
552cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
553cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	struct iscsi_kwqe_header hdr;
554cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved0;
555cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 num_cqs;
556cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
557cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 num_cqs;
558cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved0;
559cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	struct iscsi_kwqe_header hdr;
560cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
561cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 dummy_buffer_addr_lo;
562cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 dummy_buffer_addr_hi;
563cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
564cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 num_ccells_per_conn;
565cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 num_tasks_per_conn;
566cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
567cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 num_tasks_per_conn;
568cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 num_ccells_per_conn;
569cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
570cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
571cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 sq_wqes_per_page;
572cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 sq_num_wqes;
573cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
574cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 sq_num_wqes;
575cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 sq_wqes_per_page;
576cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
577cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
578cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 cq_log_wqes_per_page;
579cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 flags;
580cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_KWQE_INIT1_PAGE_SIZE (0xF<<0)
581cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_KWQE_INIT1_PAGE_SIZE_SHIFT 0
582cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_KWQE_INIT1_DELAYED_ACK_ENABLE (0x1<<4)
583cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_KWQE_INIT1_DELAYED_ACK_ENABLE_SHIFT 4
584cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_KWQE_INIT1_KEEP_ALIVE_ENABLE (0x1<<5)
585cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_KWQE_INIT1_KEEP_ALIVE_ENABLE_SHIFT 5
586b3bd2d65e6faf4f6fe6f87d6a5163859af391109Eddie Wai#define ISCSI_KWQE_INIT1_TIME_STAMPS_ENABLE (0x1<<6)
587b3bd2d65e6faf4f6fe6f87d6a5163859af391109Eddie Wai#define ISCSI_KWQE_INIT1_TIME_STAMPS_ENABLE_SHIFT 6
588b3bd2d65e6faf4f6fe6f87d6a5163859af391109Eddie Wai#define ISCSI_KWQE_INIT1_RESERVED1 (0x1<<7)
589b3bd2d65e6faf4f6fe6f87d6a5163859af391109Eddie Wai#define ISCSI_KWQE_INIT1_RESERVED1_SHIFT 7
590cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 cq_num_wqes;
591cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
592cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 cq_num_wqes;
593cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 flags;
594cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_KWQE_INIT1_PAGE_SIZE (0xF<<0)
595cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_KWQE_INIT1_PAGE_SIZE_SHIFT 0
596cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_KWQE_INIT1_DELAYED_ACK_ENABLE (0x1<<4)
597cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_KWQE_INIT1_DELAYED_ACK_ENABLE_SHIFT 4
598cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_KWQE_INIT1_KEEP_ALIVE_ENABLE (0x1<<5)
599cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_KWQE_INIT1_KEEP_ALIVE_ENABLE_SHIFT 5
600b3bd2d65e6faf4f6fe6f87d6a5163859af391109Eddie Wai#define ISCSI_KWQE_INIT1_TIME_STAMPS_ENABLE (0x1<<6)
601b3bd2d65e6faf4f6fe6f87d6a5163859af391109Eddie Wai#define ISCSI_KWQE_INIT1_TIME_STAMPS_ENABLE_SHIFT 6
602b3bd2d65e6faf4f6fe6f87d6a5163859af391109Eddie Wai#define ISCSI_KWQE_INIT1_RESERVED1 (0x1<<7)
603b3bd2d65e6faf4f6fe6f87d6a5163859af391109Eddie Wai#define ISCSI_KWQE_INIT1_RESERVED1_SHIFT 7
604cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 cq_log_wqes_per_page;
605cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
606cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
607cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 cq_num_pages;
608cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 sq_num_pages;
609cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
610cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 sq_num_pages;
611cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 cq_num_pages;
612cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
613cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
614cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 rq_buffer_size;
615cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 rq_num_wqes;
616cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
617cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 rq_num_wqes;
618cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 rq_buffer_size;
619cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
620cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan};
621cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan
622cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan/*
623cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan * iSCSI firmware init request 2
624cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan */
625cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chanstruct iscsi_kwqe_init2 {
626cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
627cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	struct iscsi_kwqe_header hdr;
628cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 max_cq_sqn;
629cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
630cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 max_cq_sqn;
631cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	struct iscsi_kwqe_header hdr;
632cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
633cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 error_bit_map[2];
634cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 reserved1[5];
635cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan};
636cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan
637cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan/*
638cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan * Initial iSCSI connection offload request 1
639cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan */
640cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chanstruct iscsi_kwqe_conn_offload1 {
641cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
642cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	struct iscsi_kwqe_header hdr;
643cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 iscsi_conn_id;
644cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
645cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 iscsi_conn_id;
646cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	struct iscsi_kwqe_header hdr;
647cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
648cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 sq_page_table_addr_lo;
649cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 sq_page_table_addr_hi;
650cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 cq_page_table_addr_lo;
651cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 cq_page_table_addr_hi;
652cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 reserved0[3];
653cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan};
654cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan
655cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan/*
656cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan * iSCSI Page Table Entry (PTE)
657cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan */
658cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chanstruct iscsi_pte {
659cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 hi;
660cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 lo;
661cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan};
662cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan
663cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan/*
664cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan * Initial iSCSI connection offload request 2
665cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan */
666cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chanstruct iscsi_kwqe_conn_offload2 {
667cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
668cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	struct iscsi_kwqe_header hdr;
669cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved0;
670cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
671cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved0;
672cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	struct iscsi_kwqe_header hdr;
673cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
674cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 rq_page_table_addr_lo;
675cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 rq_page_table_addr_hi;
676cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	struct iscsi_pte sq_first_pte;
677cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	struct iscsi_pte cq_first_pte;
678cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 num_additional_wqes;
679cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan};
680cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan
681cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan
682cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan/*
683cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan * Initial iSCSI connection offload request 3
684cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan */
685cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chanstruct iscsi_kwqe_conn_offload3 {
686cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
687cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	struct iscsi_kwqe_header hdr;
688cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved0;
689cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
690cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved0;
691cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	struct iscsi_kwqe_header hdr;
692cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
693cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 reserved1;
694cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	struct iscsi_pte qp_first_pte[3];
695cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan};
696cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan
697cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan
698cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan/*
699cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan * iSCSI connection update request
700cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan */
701cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chanstruct iscsi_kwqe_conn_update {
702cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
703cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	struct iscsi_kwqe_header hdr;
704cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved0;
705cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
706cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved0;
707cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	struct iscsi_kwqe_header hdr;
708cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
709cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
710cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 session_error_recovery_level;
711cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 max_outstanding_r2ts;
712cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved2;
713cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 conn_flags;
714cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_KWQE_CONN_UPDATE_HEADER_DIGEST (0x1<<0)
715cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_KWQE_CONN_UPDATE_HEADER_DIGEST_SHIFT 0
716cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_KWQE_CONN_UPDATE_DATA_DIGEST (0x1<<1)
717cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_KWQE_CONN_UPDATE_DATA_DIGEST_SHIFT 1
718cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_KWQE_CONN_UPDATE_INITIAL_R2T (0x1<<2)
719cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_KWQE_CONN_UPDATE_INITIAL_R2T_SHIFT 2
720cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_KWQE_CONN_UPDATE_IMMEDIATE_DATA (0x1<<3)
721cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_KWQE_CONN_UPDATE_IMMEDIATE_DATA_SHIFT 3
722619c5cb6885b936c44ae1422ef805b69c6291485Vlad Zolotarov#define ISCSI_KWQE_CONN_UPDATE_OOO_SUPPORT_MODE (0x3<<4)
723619c5cb6885b936c44ae1422ef805b69c6291485Vlad Zolotarov#define ISCSI_KWQE_CONN_UPDATE_OOO_SUPPORT_MODE_SHIFT 4
724619c5cb6885b936c44ae1422ef805b69c6291485Vlad Zolotarov#define ISCSI_KWQE_CONN_UPDATE_RESERVED1 (0x3<<6)
725619c5cb6885b936c44ae1422ef805b69c6291485Vlad Zolotarov#define ISCSI_KWQE_CONN_UPDATE_RESERVED1_SHIFT 6
726cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
727cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 conn_flags;
728cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_KWQE_CONN_UPDATE_HEADER_DIGEST (0x1<<0)
729cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_KWQE_CONN_UPDATE_HEADER_DIGEST_SHIFT 0
730cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_KWQE_CONN_UPDATE_DATA_DIGEST (0x1<<1)
731cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_KWQE_CONN_UPDATE_DATA_DIGEST_SHIFT 1
732cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_KWQE_CONN_UPDATE_INITIAL_R2T (0x1<<2)
733cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_KWQE_CONN_UPDATE_INITIAL_R2T_SHIFT 2
734cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_KWQE_CONN_UPDATE_IMMEDIATE_DATA (0x1<<3)
735cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_KWQE_CONN_UPDATE_IMMEDIATE_DATA_SHIFT 3
736619c5cb6885b936c44ae1422ef805b69c6291485Vlad Zolotarov#define ISCSI_KWQE_CONN_UPDATE_OOO_SUPPORT_MODE (0x3<<4)
737619c5cb6885b936c44ae1422ef805b69c6291485Vlad Zolotarov#define ISCSI_KWQE_CONN_UPDATE_OOO_SUPPORT_MODE_SHIFT 4
738619c5cb6885b936c44ae1422ef805b69c6291485Vlad Zolotarov#define ISCSI_KWQE_CONN_UPDATE_RESERVED1 (0x3<<6)
739619c5cb6885b936c44ae1422ef805b69c6291485Vlad Zolotarov#define ISCSI_KWQE_CONN_UPDATE_RESERVED1_SHIFT 6
740cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved2;
741cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 max_outstanding_r2ts;
742cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 session_error_recovery_level;
743cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
744cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 context_id;
745cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 max_send_pdu_length;
746cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 max_recv_pdu_length;
747cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 first_burst_length;
748cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 max_burst_length;
749cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 exp_stat_sn;
750cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan};
751cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan
752cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan/*
753cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan * iSCSI destroy connection request
754cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan */
755cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chanstruct iscsi_kwqe_conn_destroy {
756cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
757cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	struct iscsi_kwqe_header hdr;
758cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved0;
759cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
760cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved0;
761cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	struct iscsi_kwqe_header hdr;
762cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
763cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 context_id;
764cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 reserved1[6];
765cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan};
766cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan
767cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan/*
768cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan * iSCSI KWQ WQE
769cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan */
770cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chanunion iscsi_kwqe {
771cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	struct iscsi_kwqe_init1 init1;
772cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	struct iscsi_kwqe_init2 init2;
773cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	struct iscsi_kwqe_conn_offload1 conn_offload1;
774cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	struct iscsi_kwqe_conn_offload2 conn_offload2;
775cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	struct iscsi_kwqe_conn_update conn_update;
776cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	struct iscsi_kwqe_conn_destroy conn_destroy;
777cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan};
778cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan
779cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan/*
780cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan * iSCSI Login SQ WQE
781cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan */
782cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chanstruct bnx2i_login_request {
783cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
784cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 op_code;
785cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 op_attr;
786cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_REQUEST_NEXT_STAGE (0x3<<0)
787cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_REQUEST_NEXT_STAGE_SHIFT 0
788cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_REQUEST_CURRENT_STAGE (0x3<<2)
789cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_REQUEST_CURRENT_STAGE_SHIFT 2
790cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_REQUEST_RESERVED0 (0x3<<4)
791cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_REQUEST_RESERVED0_SHIFT 4
792cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_REQUEST_CONT (0x1<<6)
793cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_REQUEST_CONT_SHIFT 6
794cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_REQUEST_TRANSIT (0x1<<7)
795cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_REQUEST_TRANSIT_SHIFT 7
796cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 version_max;
797cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 version_min;
798cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
799cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 version_min;
800cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 version_max;
801cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 op_attr;
802cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_REQUEST_NEXT_STAGE (0x3<<0)
803cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_REQUEST_NEXT_STAGE_SHIFT 0
804cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_REQUEST_CURRENT_STAGE (0x3<<2)
805cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_REQUEST_CURRENT_STAGE_SHIFT 2
806cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_REQUEST_RESERVED0 (0x3<<4)
807cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_REQUEST_RESERVED0_SHIFT 4
808cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_REQUEST_CONT (0x1<<6)
809cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_REQUEST_CONT_SHIFT 6
810cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_REQUEST_TRANSIT (0x1<<7)
811cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_REQUEST_TRANSIT_SHIFT 7
812cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 op_code;
813cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
814cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 data_length;
815cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 isid_lo;
816cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
817cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 isid_hi;
818cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 tsih;
819cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
820cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 tsih;
821cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 isid_hi;
822cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
823cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
824cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved2;
825cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 itt;
826cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_REQUEST_INDEX (0x3FFF<<0)
827cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_REQUEST_INDEX_SHIFT 0
828cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_REQUEST_TYPE (0x3<<14)
829cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_REQUEST_TYPE_SHIFT 14
830cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
831cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 itt;
832cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_REQUEST_INDEX (0x3FFF<<0)
833cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_REQUEST_INDEX_SHIFT 0
834cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_REQUEST_TYPE (0x3<<14)
835cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_REQUEST_TYPE_SHIFT 14
836cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved2;
837cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
838cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
839cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 cid;
840cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved3;
841cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
842cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved3;
843cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 cid;
844cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
845cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 cmd_sn;
846cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 exp_stat_sn;
847cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 reserved4;
848cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 resp_bd_list_addr_lo;
849cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 resp_bd_list_addr_hi;
850cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 resp_buffer;
851cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_REQUEST_RESP_BUFFER_LENGTH (0xFFFFFF<<0)
852cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_REQUEST_RESP_BUFFER_LENGTH_SHIFT 0
853cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_REQUEST_NUM_RESP_BDS (0xFF<<24)
854cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_REQUEST_NUM_RESP_BDS_SHIFT 24
855cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
856cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved8;
857cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved7;
858cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 flags;
859cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_REQUEST_RESERVED5 (0x3<<0)
860cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_REQUEST_RESERVED5_SHIFT 0
861cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_REQUEST_UPDATE_EXP_STAT_SN (0x1<<2)
862cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_REQUEST_UPDATE_EXP_STAT_SN_SHIFT 2
863cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_REQUEST_RESERVED6 (0x1F<<3)
864cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_REQUEST_RESERVED6_SHIFT 3
865cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
866cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 flags;
867cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_REQUEST_RESERVED5 (0x3<<0)
868cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_REQUEST_RESERVED5_SHIFT 0
869cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_REQUEST_UPDATE_EXP_STAT_SN (0x1<<2)
870cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_REQUEST_UPDATE_EXP_STAT_SN_SHIFT 2
871cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_REQUEST_RESERVED6 (0x1F<<3)
872cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_REQUEST_RESERVED6_SHIFT 3
873cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved7;
874cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved8;
875cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
876cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 bd_list_addr_lo;
877cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 bd_list_addr_hi;
878cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
879cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 cq_index;
880cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved10;
881cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved9;
882cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 num_bds;
883cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
884cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 num_bds;
885cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved9;
886cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved10;
887cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 cq_index;
888cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
889cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan};
890cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan
891cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan
892cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan/*
893cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan * iSCSI Login CQE
894cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan */
895cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chanstruct bnx2i_login_response {
896cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
897cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 op_code;
898cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 response_flags;
899cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_RESPONSE_NEXT_STAGE (0x3<<0)
900cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_RESPONSE_NEXT_STAGE_SHIFT 0
901cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_RESPONSE_CURRENT_STAGE (0x3<<2)
902cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_RESPONSE_CURRENT_STAGE_SHIFT 2
903cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_RESPONSE_RESERVED0 (0x3<<4)
904cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_RESPONSE_RESERVED0_SHIFT 4
905cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_RESPONSE_CONT (0x1<<6)
906cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_RESPONSE_CONT_SHIFT 6
907cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_RESPONSE_TRANSIT (0x1<<7)
908cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_RESPONSE_TRANSIT_SHIFT 7
909cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 version_max;
910cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 version_active;
911cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
912cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 version_active;
913cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 version_max;
914cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 response_flags;
915cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_RESPONSE_NEXT_STAGE (0x3<<0)
916cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_RESPONSE_NEXT_STAGE_SHIFT 0
917cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_RESPONSE_CURRENT_STAGE (0x3<<2)
918cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_RESPONSE_CURRENT_STAGE_SHIFT 2
919cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_RESPONSE_RESERVED0 (0x3<<4)
920cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_RESPONSE_RESERVED0_SHIFT 4
921cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_RESPONSE_CONT (0x1<<6)
922cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_RESPONSE_CONT_SHIFT 6
923cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_RESPONSE_TRANSIT (0x1<<7)
924cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_RESPONSE_TRANSIT_SHIFT 7
925cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 op_code;
926cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
927cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 data_length;
928cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 exp_cmd_sn;
929cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 max_cmd_sn;
930cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 reserved1[2];
931cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
932cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved3;
933cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 err_code;
934cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved2;
935cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
936cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved2;
937cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 err_code;
938cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved3;
939cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
940cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 stat_sn;
941cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 isid_lo;
942cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
943cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 isid_hi;
944cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 tsih;
945cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
946cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 tsih;
947cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 isid_hi;
948cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
949cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
950cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 status_class;
951cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 status_detail;
952cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved4;
953cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
954cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved4;
955cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 status_detail;
956cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 status_class;
957cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
958cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 reserved5[3];
959cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
960cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved6;
961cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 itt;
962cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_RESPONSE_INDEX (0x3FFF<<0)
963cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_RESPONSE_INDEX_SHIFT 0
964cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_RESPONSE_TYPE (0x3<<14)
965cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_RESPONSE_TYPE_SHIFT 14
966cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
967cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 itt;
968cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_RESPONSE_INDEX (0x3FFF<<0)
969cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_RESPONSE_INDEX_SHIFT 0
970cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_RESPONSE_TYPE (0x3<<14)
971cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGIN_RESPONSE_TYPE_SHIFT 14
972cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved6;
973cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
974cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 cq_req_sn;
975cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan};
976cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan
977cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan
978cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan/*
979cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan * iSCSI Logout SQ WQE
980cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan */
981cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chanstruct bnx2i_logout_request {
982cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
983cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 op_code;
984cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 op_attr;
985cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGOUT_REQUEST_REASON (0x7F<<0)
986cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGOUT_REQUEST_REASON_SHIFT 0
987cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGOUT_REQUEST_ALWAYS_ONE (0x1<<7)
988cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGOUT_REQUEST_ALWAYS_ONE_SHIFT 7
989cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved0;
990cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
991cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved0;
992cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 op_attr;
993cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGOUT_REQUEST_REASON (0x7F<<0)
994cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGOUT_REQUEST_REASON_SHIFT 0
995cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGOUT_REQUEST_ALWAYS_ONE (0x1<<7)
996cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGOUT_REQUEST_ALWAYS_ONE_SHIFT 7
997cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 op_code;
998cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
999cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 data_length;
1000cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 reserved1[2];
1001cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
1002cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved2;
1003cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 itt;
1004cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGOUT_REQUEST_INDEX (0x3FFF<<0)
1005cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGOUT_REQUEST_INDEX_SHIFT 0
1006cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGOUT_REQUEST_TYPE (0x3<<14)
1007cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGOUT_REQUEST_TYPE_SHIFT 14
1008cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
1009cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 itt;
1010cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGOUT_REQUEST_INDEX (0x3FFF<<0)
1011cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGOUT_REQUEST_INDEX_SHIFT 0
1012cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGOUT_REQUEST_TYPE (0x3<<14)
1013cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGOUT_REQUEST_TYPE_SHIFT 14
1014cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved2;
1015cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
1016cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
1017cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 cid;
1018cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved3;
1019cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
1020cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved3;
1021cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 cid;
1022cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
1023cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 cmd_sn;
1024cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 reserved4[5];
1025cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 zero_fill;
1026cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 bd_list_addr_lo;
1027cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 bd_list_addr_hi;
1028cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
1029cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 cq_index;
1030cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved6;
1031cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved5;
1032cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 num_bds;
1033cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
1034cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 num_bds;
1035cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved5;
1036cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved6;
1037cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 cq_index;
1038cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
1039cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan};
1040cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan
1041cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan
1042cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan/*
1043cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan * iSCSI Logout CQE
1044cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan */
1045cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chanstruct bnx2i_logout_response {
1046cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
1047cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 op_code;
1048cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved1;
1049cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 response;
1050cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved0;
1051cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
1052cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved0;
1053cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 response;
1054cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved1;
1055cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 op_code;
1056cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
1057cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 reserved2;
1058cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 exp_cmd_sn;
1059cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 max_cmd_sn;
1060cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 reserved3[2];
1061cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
1062cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved5;
1063cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 err_code;
1064cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved4;
1065cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
1066cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved4;
1067cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 err_code;
1068cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved5;
1069cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
1070cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 reserved6[3];
1071cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
1072cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 time_to_wait;
1073cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 time_to_retain;
1074cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
1075cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 time_to_retain;
1076cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 time_to_wait;
1077cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
1078cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 reserved7[3];
1079cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
1080cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved8;
1081cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 itt;
1082cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGOUT_RESPONSE_INDEX (0x3FFF<<0)
1083cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGOUT_RESPONSE_INDEX_SHIFT 0
1084cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGOUT_RESPONSE_TYPE (0x3<<14)
1085cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGOUT_RESPONSE_TYPE_SHIFT 14
1086cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
1087cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 itt;
1088cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGOUT_RESPONSE_INDEX (0x3FFF<<0)
1089cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGOUT_RESPONSE_INDEX_SHIFT 0
1090cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGOUT_RESPONSE_TYPE (0x3<<14)
1091cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_LOGOUT_RESPONSE_TYPE_SHIFT 14
1092cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved8;
1093cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
1094cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 cq_req_sn;
1095cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan};
1096cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan
1097cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan
1098cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan/*
1099cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan * iSCSI Nop-In CQE
1100cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan */
1101cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chanstruct bnx2i_nop_in_msg {
1102cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
1103cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 op_code;
1104cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved1;
1105cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved0;
1106cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
1107cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved0;
1108cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved1;
1109cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 op_code;
1110cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
1111cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 data_length;
1112cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 exp_cmd_sn;
1113cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 max_cmd_sn;
1114cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 ttt;
1115cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 reserved2;
1116cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
1117cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved4;
1118cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 err_code;
1119cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved3;
1120cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
1121cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved3;
1122cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 err_code;
1123cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved4;
1124cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
1125cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 reserved5;
1126cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 lun[2];
1127cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 reserved6[4];
1128cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
1129cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved7;
1130cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 itt;
1131cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_NOP_IN_MSG_INDEX (0x3FFF<<0)
1132cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_NOP_IN_MSG_INDEX_SHIFT 0
1133cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_NOP_IN_MSG_TYPE (0x3<<14)
1134cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_NOP_IN_MSG_TYPE_SHIFT 14
1135cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
1136cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 itt;
1137cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_NOP_IN_MSG_INDEX (0x3FFF<<0)
1138cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_NOP_IN_MSG_INDEX_SHIFT 0
1139cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_NOP_IN_MSG_TYPE (0x3<<14)
1140cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_NOP_IN_MSG_TYPE_SHIFT 14
1141cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved7;
1142cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
1143cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 cq_req_sn;
1144cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan};
1145cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan
1146cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan
1147cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan/*
1148cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan * iSCSI NOP-OUT SQ WQE
1149cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan */
1150cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chanstruct bnx2i_nop_out_request {
1151cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
1152cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 op_code;
1153cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 op_attr;
1154cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_NOP_OUT_REQUEST_RESERVED1 (0x7F<<0)
1155cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_NOP_OUT_REQUEST_RESERVED1_SHIFT 0
1156cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_NOP_OUT_REQUEST_ALWAYS_ONE (0x1<<7)
1157cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_NOP_OUT_REQUEST_ALWAYS_ONE_SHIFT 7
1158cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved0;
1159cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
1160cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved0;
1161cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 op_attr;
1162cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_NOP_OUT_REQUEST_RESERVED1 (0x7F<<0)
1163cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_NOP_OUT_REQUEST_RESERVED1_SHIFT 0
1164cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_NOP_OUT_REQUEST_ALWAYS_ONE (0x1<<7)
1165cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_NOP_OUT_REQUEST_ALWAYS_ONE_SHIFT 7
1166cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 op_code;
1167cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
1168cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 data_length;
1169cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 lun[2];
1170cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
1171cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved2;
1172cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 itt;
1173cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_NOP_OUT_REQUEST_INDEX (0x3FFF<<0)
1174cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_NOP_OUT_REQUEST_INDEX_SHIFT 0
1175cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_NOP_OUT_REQUEST_TYPE (0x3<<14)
1176cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_NOP_OUT_REQUEST_TYPE_SHIFT 14
1177cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
1178cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 itt;
1179cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_NOP_OUT_REQUEST_INDEX (0x3FFF<<0)
1180cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_NOP_OUT_REQUEST_INDEX_SHIFT 0
1181cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_NOP_OUT_REQUEST_TYPE (0x3<<14)
1182cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_NOP_OUT_REQUEST_TYPE_SHIFT 14
1183cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved2;
1184cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
1185cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 ttt;
1186cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 cmd_sn;
1187cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 reserved3[2];
1188cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 resp_bd_list_addr_lo;
1189cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 resp_bd_list_addr_hi;
1190cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 resp_buffer;
1191cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_NOP_OUT_REQUEST_RESP_BUFFER_LENGTH (0xFFFFFF<<0)
1192cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_NOP_OUT_REQUEST_RESP_BUFFER_LENGTH_SHIFT 0
1193cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_NOP_OUT_REQUEST_NUM_RESP_BDS (0xFF<<24)
1194cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_NOP_OUT_REQUEST_NUM_RESP_BDS_SHIFT 24
1195cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
1196cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved7;
1197cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved6;
1198cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 flags;
1199cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_NOP_OUT_REQUEST_RESERVED4 (0x1<<0)
1200cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_NOP_OUT_REQUEST_RESERVED4_SHIFT 0
1201cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_NOP_OUT_REQUEST_LOCAL_COMPLETION (0x1<<1)
1202cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_NOP_OUT_REQUEST_LOCAL_COMPLETION_SHIFT 1
1203cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_NOP_OUT_REQUEST_ZERO_FILL (0x3F<<2)
1204cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_NOP_OUT_REQUEST_ZERO_FILL_SHIFT 2
1205cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
1206cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 flags;
1207cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_NOP_OUT_REQUEST_RESERVED4 (0x1<<0)
1208cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_NOP_OUT_REQUEST_RESERVED4_SHIFT 0
1209cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_NOP_OUT_REQUEST_LOCAL_COMPLETION (0x1<<1)
1210cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_NOP_OUT_REQUEST_LOCAL_COMPLETION_SHIFT 1
1211cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_NOP_OUT_REQUEST_ZERO_FILL (0x3F<<2)
1212cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_NOP_OUT_REQUEST_ZERO_FILL_SHIFT 2
1213cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved6;
1214cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved7;
1215cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
1216cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 bd_list_addr_lo;
1217cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 bd_list_addr_hi;
1218cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
1219cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 cq_index;
1220cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved9;
1221cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved8;
1222cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 num_bds;
1223cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
1224cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 num_bds;
1225cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved8;
1226cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved9;
1227cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 cq_index;
1228cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
1229cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan};
1230cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan
1231cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan/*
1232cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan * iSCSI Reject CQE
1233cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan */
1234cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chanstruct bnx2i_reject_msg {
1235cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
1236cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 op_code;
1237cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved1;
1238cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reason;
1239cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved0;
1240cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
1241cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved0;
1242cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reason;
1243cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved1;
1244cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 op_code;
1245cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
1246cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 data_length;
1247cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 exp_cmd_sn;
1248cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 max_cmd_sn;
1249cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 reserved2[2];
1250cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
1251cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved4;
1252cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 err_code;
1253cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved3;
1254cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
1255cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved3;
1256cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 err_code;
1257cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved4;
1258cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
1259cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 reserved5[8];
1260cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 cq_req_sn;
1261cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan};
1262cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan
1263cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan/*
1264cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan * bnx2i iSCSI TMF SQ WQE
1265cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan */
1266cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chanstruct bnx2i_tmf_request {
1267cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
1268cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 op_code;
1269cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 op_attr;
1270cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TMF_REQUEST_FUNCTION (0x7F<<0)
1271cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TMF_REQUEST_FUNCTION_SHIFT 0
1272cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TMF_REQUEST_ALWAYS_ONE (0x1<<7)
1273cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TMF_REQUEST_ALWAYS_ONE_SHIFT 7
1274cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved0;
1275cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
1276cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved0;
1277cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 op_attr;
1278cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TMF_REQUEST_FUNCTION (0x7F<<0)
1279cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TMF_REQUEST_FUNCTION_SHIFT 0
1280cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TMF_REQUEST_ALWAYS_ONE (0x1<<7)
1281cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TMF_REQUEST_ALWAYS_ONE_SHIFT 7
1282cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 op_code;
1283cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
1284cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 data_length;
1285cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 lun[2];
1286cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
1287cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved1;
1288cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 itt;
1289cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TMF_REQUEST_INDEX (0x3FFF<<0)
1290cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TMF_REQUEST_INDEX_SHIFT 0
1291cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TMF_REQUEST_TYPE (0x3<<14)
1292cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TMF_REQUEST_TYPE_SHIFT 14
1293cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
1294cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 itt;
1295cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TMF_REQUEST_INDEX (0x3FFF<<0)
1296cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TMF_REQUEST_INDEX_SHIFT 0
1297cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TMF_REQUEST_TYPE (0x3<<14)
1298cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TMF_REQUEST_TYPE_SHIFT 14
1299cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved1;
1300cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
1301cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 ref_itt;
1302cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 cmd_sn;
1303cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 reserved2;
1304cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 ref_cmd_sn;
1305cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 reserved3[3];
1306cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 zero_fill;
1307cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 bd_list_addr_lo;
1308cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 bd_list_addr_hi;
1309cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
1310cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 cq_index;
1311cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved5;
1312cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved4;
1313cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 num_bds;
1314cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
1315cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 num_bds;
1316cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved4;
1317cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved5;
1318cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 cq_index;
1319cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
1320cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan};
1321cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan
1322cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan/*
1323cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan * iSCSI Text SQ WQE
1324cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan */
1325cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chanstruct bnx2i_text_request {
1326cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
1327cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 op_code;
1328cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 op_attr;
1329cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TEXT_REQUEST_RESERVED1 (0x3F<<0)
1330cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TEXT_REQUEST_RESERVED1_SHIFT 0
1331cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TEXT_REQUEST_CONT (0x1<<6)
1332cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TEXT_REQUEST_CONT_SHIFT 6
1333cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TEXT_REQUEST_FINAL (0x1<<7)
1334cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TEXT_REQUEST_FINAL_SHIFT 7
1335cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved0;
1336cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
1337cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved0;
1338cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 op_attr;
1339cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TEXT_REQUEST_RESERVED1 (0x3F<<0)
1340cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TEXT_REQUEST_RESERVED1_SHIFT 0
1341cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TEXT_REQUEST_CONT (0x1<<6)
1342cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TEXT_REQUEST_CONT_SHIFT 6
1343cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TEXT_REQUEST_FINAL (0x1<<7)
1344cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TEXT_REQUEST_FINAL_SHIFT 7
1345cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 op_code;
1346cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
1347cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 data_length;
1348cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 lun[2];
1349cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
1350cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved3;
1351cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 itt;
1352cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TEXT_REQUEST_INDEX (0x3FFF<<0)
1353cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TEXT_REQUEST_INDEX_SHIFT 0
1354cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TEXT_REQUEST_TYPE (0x3<<14)
1355cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TEXT_REQUEST_TYPE_SHIFT 14
1356cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
1357cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 itt;
1358cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TEXT_REQUEST_INDEX (0x3FFF<<0)
1359cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TEXT_REQUEST_INDEX_SHIFT 0
1360cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TEXT_REQUEST_TYPE (0x3<<14)
1361cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TEXT_REQUEST_TYPE_SHIFT 14
1362cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved3;
1363cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
1364cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 ttt;
1365cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 cmd_sn;
1366cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 reserved4[2];
1367cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 resp_bd_list_addr_lo;
1368cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 resp_bd_list_addr_hi;
1369cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 resp_buffer;
1370cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TEXT_REQUEST_RESP_BUFFER_LENGTH (0xFFFFFF<<0)
1371cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TEXT_REQUEST_RESP_BUFFER_LENGTH_SHIFT 0
1372cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TEXT_REQUEST_NUM_RESP_BDS (0xFF<<24)
1373cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TEXT_REQUEST_NUM_RESP_BDS_SHIFT 24
1374cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 zero_fill;
1375cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 bd_list_addr_lo;
1376cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 bd_list_addr_hi;
1377cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
1378cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 cq_index;
1379cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved7;
1380cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved6;
1381cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 num_bds;
1382cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
1383cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 num_bds;
1384cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved6;
1385cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved7;
1386cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 cq_index;
1387cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
1388cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan};
1389cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan
1390cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan/*
1391cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan * iSCSI SQ WQE
1392cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan */
1393cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chanunion iscsi_request {
1394cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	struct bnx2i_cmd_request cmd;
1395cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	struct bnx2i_tmf_request tmf;
1396cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	struct bnx2i_nop_out_request nop_out;
1397cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	struct bnx2i_login_request login_req;
1398cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	struct bnx2i_text_request text;
1399cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	struct bnx2i_logout_request logout_req;
1400cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	struct bnx2i_cleanup_request cleanup;
1401cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan};
1402cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan
1403cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan
1404cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan/*
1405cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan * iSCSI TMF CQE
1406cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan */
1407cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chanstruct bnx2i_tmf_response {
1408cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
1409cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 op_code;
1410cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved1;
1411cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 response;
1412cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved0;
1413cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
1414cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved0;
1415cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 response;
1416cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved1;
1417cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 op_code;
1418cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
1419cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 reserved2;
1420cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 exp_cmd_sn;
1421cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 max_cmd_sn;
1422cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 reserved3[2];
1423cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
1424cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved5;
1425cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 err_code;
1426cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved4;
1427cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
1428cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved4;
1429cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 err_code;
1430cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved5;
1431cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
1432cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 reserved6[7];
1433cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
1434cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved7;
1435cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 itt;
1436cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TMF_RESPONSE_INDEX (0x3FFF<<0)
1437cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TMF_RESPONSE_INDEX_SHIFT 0
1438cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TMF_RESPONSE_TYPE (0x3<<14)
1439cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TMF_RESPONSE_TYPE_SHIFT 14
1440cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
1441cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 itt;
1442cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TMF_RESPONSE_INDEX (0x3FFF<<0)
1443cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TMF_RESPONSE_INDEX_SHIFT 0
1444cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TMF_RESPONSE_TYPE (0x3<<14)
1445cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TMF_RESPONSE_TYPE_SHIFT 14
1446cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved7;
1447cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
1448cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 cq_req_sn;
1449cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan};
1450cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan
1451cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan/*
1452cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan * iSCSI Text CQE
1453cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan */
1454cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chanstruct bnx2i_text_response {
1455cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
1456cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 op_code;
1457cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 response_flags;
1458cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TEXT_RESPONSE_RESERVED1 (0x3F<<0)
1459cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TEXT_RESPONSE_RESERVED1_SHIFT 0
1460cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TEXT_RESPONSE_CONT (0x1<<6)
1461cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TEXT_RESPONSE_CONT_SHIFT 6
1462cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TEXT_RESPONSE_FINAL (0x1<<7)
1463cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TEXT_RESPONSE_FINAL_SHIFT 7
1464cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved0;
1465cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
1466cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved0;
1467cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 response_flags;
1468cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TEXT_RESPONSE_RESERVED1 (0x3F<<0)
1469cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TEXT_RESPONSE_RESERVED1_SHIFT 0
1470cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TEXT_RESPONSE_CONT (0x1<<6)
1471cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TEXT_RESPONSE_CONT_SHIFT 6
1472cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TEXT_RESPONSE_FINAL (0x1<<7)
1473cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TEXT_RESPONSE_FINAL_SHIFT 7
1474cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 op_code;
1475cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
1476cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 data_length;
1477cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 exp_cmd_sn;
1478cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 max_cmd_sn;
1479cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 ttt;
1480cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 reserved2;
1481cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
1482cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved4;
1483cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 err_code;
1484cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved3;
1485cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
1486cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 reserved3;
1487cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u8 err_code;
1488cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved4;
1489cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
1490cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 reserved5;
1491cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 lun[2];
1492cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 reserved6[4];
1493cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#if defined(__BIG_ENDIAN)
1494cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved7;
1495cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 itt;
1496cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TEXT_RESPONSE_INDEX (0x3FFF<<0)
1497cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TEXT_RESPONSE_INDEX_SHIFT 0
1498cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TEXT_RESPONSE_TYPE (0x3<<14)
1499cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TEXT_RESPONSE_TYPE_SHIFT 14
1500cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#elif defined(__LITTLE_ENDIAN)
1501cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 itt;
1502cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TEXT_RESPONSE_INDEX (0x3FFF<<0)
1503cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TEXT_RESPONSE_INDEX_SHIFT 0
1504cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TEXT_RESPONSE_TYPE (0x3<<14)
1505cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#define ISCSI_TEXT_RESPONSE_TYPE_SHIFT 14
1506cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u16 reserved7;
1507cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif
1508cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	u32 cq_req_sn;
1509cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan};
1510cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan
1511cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan/*
1512cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan * iSCSI CQE
1513cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan */
1514cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chanunion iscsi_response {
1515cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	struct bnx2i_cmd_response cmd;
1516cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	struct bnx2i_tmf_response tmf;
1517cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	struct bnx2i_login_response login_resp;
1518cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	struct bnx2i_text_response text;
1519cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	struct bnx2i_logout_response logout_resp;
1520cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	struct bnx2i_cleanup_response cleanup;
1521cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	struct bnx2i_reject_msg reject;
1522cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	struct bnx2i_async_msg async;
1523cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan	struct bnx2i_nop_in_msg nop_in;
1524cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan};
1525cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan
1526cf4e6363859d30f24f8cd3e8930dbff399cc3550Michael Chan#endif /* __57XX_ISCSI_HSI_LINUX_LE__ */
1527