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