Emulex Logo
OneCoreā„¢ Storage SDK Release 11.2
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
sli4_skh_iscsi.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2011-2015, Emulex
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are met:
7  *
8  * 1. Redistributions of source code must retain the above copyright notice,
9  * this list of conditions and the following disclaimer.
10  *
11  * 2. Redistributions in binary form must reproduce the above copyright notice,
12  * this list of conditions and the following disclaimer in the documentation
13  * and/or other materials provided with the distribution.
14  *
15  * 3. Neither the name of the copyright holder nor the names of its contributors
16  * may be used to endorse or promote products derived from this software
17  * without specific prior written permission.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29  * POSSIBILITY OF SUCH DAMAGE.
30  *
31  */
32 
33 /**
34  * @file
35  * Define iSCSI SLI-4 structures and function prototypes; Skyhawk ASIC
36  */
37 
38 #ifndef _SLI4_SKH_ISCSI_H
39 #define _SLI4_SKH_ISCSI_H
40 
41 /**
42  * @brief COMMON_GET_SLI4_PARAMETERS
43  *
44  */
45 typedef struct sli4_skh_req_common_get_sli4_parameters_s {
48 
49 
50 typedef struct sli4_skh_res_common_get_sli4_parameters_s {
52 #if BYTE_ORDER == LITTLE_ENDIAN
53  uint32_t protocol_type:8, /* offset 0x00 */
54  :24;
55  uint32_t ft:1, /* offset 0x04 */
56  :3,
57  sli_revision:4,
58  sli_family:4,
59  if_type:4,
60  sli_hint_1:8,
61  sli_hint_2:5,
62  :3;
63  uint32_t eq_page_cnt:4, /* offset 0x08 */
64  :4,
65  eqe_sizes:4,
66  :4,
67  eq_page_sizes:8,
68  eqe_count_method:4,
69  :4;
70  uint32_t eqe_count_mask:16, /* offset 0x0C */
71  :16;
72  uint32_t cq_page_cnt:4, /* offset 0x10 */
73  :4,
74  cqe_sizes:4,
75  :2,
76  cqv:2,
77  cq_page_sizes:8,
78  cqe_count_method:4,
79  :4;
80  uint32_t cqe_count_mask:16, /* offset 0x14 */
81  :16;
82  uint32_t mq_page_cnt:4, /* offset 0x18 */
83  :10,
84  mqv:2,
85  mq_page_sizes:8,
86  mqe_count_method:4,
87  :4;
88  uint32_t mqe_count_mask:16, /* offset 0x1C */
89  :16;
90  uint32_t wq_page_cnt:4, /* offset 0x20 */
91  :4,
92  wqe_sizes:4,
93  :2,
94  wqv:2,
95  wq_page_sizes:8,
96  wqe_count_method:4,
97  :4;
98  uint32_t wqe_count_mask:16, /* offset 0x24 */
99  :16;
100  uint32_t rq_page_cnt:4, /* offset 0x28 */
101  :4,
102  rqe_sizes:4,
103  :2,
104  rqv:2,
105  rq_page_sizes:8,
106  rqe_count_method:4,
107  :4;
108  uint32_t rqe_count_mask:16, /* offset 0x2C */
109  :12,
110  rq_db_window:4;
111  uint32_t sglc:1, /* offset 0x30 */
112  ppdu:1,
113  t10pi:1,
114  sglr:1,
115  :18,
116  timm:1,
117  tsmm:1,
118  :4,
119  loopback_scope:4;
120  uint32_t sge_supported_length; /* offset 0x34 */
121  uint32_t sgl_page_cnt:4, /* offset 0x38 */
122  :4,
123  sgl_page_sizes:8,
124  sgl_pp_align:8,
125  :8;
126  uint32_t min_rq_buffer_size:16, /* offset 0x3C */
127  :16;
128  uint32_t max_rq_buffer_size; /* offset 0x40 */
129  uint32_t max_phy_icd:16, /* offset 0x44 */
130  max_phy_conn:16;
131  uint32_t frg_num_field_offset:16, /* offset 0x48 */
132  frg_num_field_size:16;
133  uint32_t sgl_idx_field_offset:16, /* offset 0x4C */
134  sgl_idx_field_size:16;
135  uint32_t chain_sge_init_1; /* offset 0x50 */
136  uint32_t chain_sge_init_0; /* offset 0x54 */
137 #else
138 #error big endian version not defined
139 #endif
141 
142 /**
143  * @brief WQE used to for INITIATOR_WRITE_COMMAND WQE (data from ini->Tgt)
144  */
145 typedef struct sli4_skh_wqe_ini_write_s {
146 #if BYTE_ORDER == LITTLE_ENDIAN
147  uint32_t exp_xfer_len:25,
148  :2,
149  type:5;
150  uint32_t next_wqe:8,
151  wrb_index:8,
152  lun:16;
153  uint32_t icd_index:16,
154  :16;
155  uint32_t rsvd1;
156  uint32_t bhs_addr_high;
157  uint32_t bhs_addr_low;
158  uint32_t rsvd2;
159  uint32_t cmdsn;
160  uint32_t sge0_addr_high;
161  uint32_t sge0_addr_low;
162  uint32_t sge0_offset:24,
163  :7,
164  s0l:1;
165  uint32_t sge0_length:17,
166  :7,
167  dif_enable:1,
168  :2,
169  inv:1,
170  dsp:1,
171  :3;
172  uint32_t sge1_addr_high;
173  uint32_t sge1_addr_low;
174  uint32_t sge1_offset:24,
175  :7,
176  s1l:1;
177  uint32_t sge1_length:17,
178  :15;
179 #else
180 #error big endian version not defined
181 #endif
183 
184 
185 /**
186  * @brief WQE used to for INITIATOR_TMF WQE
187  */
188 typedef struct sli4_skh_wqe_ini_tmf_s {
189 #if BYTE_ORDER == LITTLE_ENDIAN
190  uint32_t :27,
191  type:5;
192  uint32_t next_wqe:8,
193  wrb_index:8,
194  lun:16;
195  uint32_t icd_index:16,
196  ref_icd_index:16;
197  uint32_t rsvd1;
198  uint32_t bhs_addr_high;
199  uint32_t bhs_addr_low;
200  uint32_t rsvd2;
201  uint32_t cmdsn;
202  uint32_t rsvd3[3];
203  uint32_t :27,
204  inv:1,
205  :4;
206  uint32_t rsvd4[4];
207 #else
208 #error big endian version not defined
209 #endif
211 
212 
213 /**
214  * @brief WQE used to for INITIATOR_NOP_OUT WQE (data from ini->Tgt)
215  */
216 typedef struct sli4_skh_wqe_ini_nop_s {
217 #if BYTE_ORDER == LITTLE_ENDIAN
218  uint32_t exp_xfer_len:25,
219  :2,
220  type:5;
221  uint32_t next_wqe:8,
222  wrb_index:8,
223  :16;
224  uint32_t icd_index:16,
225  :16;
226  uint32_t rsvd1;
227  uint32_t bhs_addr_high;
228  uint32_t bhs_addr_low;
229  uint32_t rsvd2;
230  uint32_t cmdsn;
231  uint32_t sge0_addr_high;
232  uint32_t sge0_addr_low;
233  uint32_t sge0_offset:24,
234  :7,
235  s0l:1;
236  uint32_t sge0_length:17,
237  :10,
238  inv:1,
239  dsp:1,
240  dm:1,
241  :2;
242  uint32_t sge1_addr_high;
243  uint32_t sge1_addr_low;
244  uint32_t sge1_offset:24,
245  :7,
246  s1l:1;
247  uint32_t sge1_length:17,
248  :15;
249 #else
250 #error big endian version not defined
251 #endif
253 
254 
255 /**
256  * @brief WQE used to for INITIATOR_READ WQE (data from ini->Tgt)
257  */
258 typedef struct sli4_skh_wqe_ini_read_s {
259 #if BYTE_ORDER == LITTLE_ENDIAN
260  uint32_t exp_xfer_len:25,
261  :2,
262  type:5;
263  uint32_t next_wqe:8,
264  wrb_index:8,
265  lun:16;
266  uint32_t icd_index:16,
267  :16;
268  uint32_t rsvd1;
269  uint32_t bhs_addr_high;
270  uint32_t bhs_addr_low;
271 
272  /* Avoid CQ per Connection in Initiator
273  */
274  uint32_t rsvd2;
275  uint32_t cmdsn;
276  uint32_t sge0_addr_high;
277  uint32_t sge0_addr_low;
278  uint32_t sge0_offset:24,
279  :7,
280  s0l:1;
281  uint32_t sge0_length:17,
282  :10,
283  inv:1,
284  :4;
285  uint32_t sge1_addr_high;
286  uint32_t sge1_addr_low;
287  uint32_t sge1_offset:24,
288  :7,
289  s1l:1;
290  uint32_t sge1_length:17,
291  :15;
292 #else
293 #error big endian version not defined
294 #endif
296 
297 
298 /**
299  * @@@ TODO: Skyhawk structure definition not yet ready.
300  * @brief WQE used to Update a connection context
301  */
302 typedef struct sli4_skh_wqe_context_update_s {
303 #if BYTE_ORDER == LITTLE_ENDIAN
304  uint32_t max_burst:24,
305  :3,
306  type:5;
307 
308  uint32_t next_wqe:8,
309  wrb_index:8,
310  :16;
311 
312  uint32_t max_send_dsl:24,
313  :8;
314 
315  uint32_t first_burst:24,
316  :8;
317 
318  uint32_t max_r2t:16,
319  :1,
320  header_digest_enable:1,
321  data_digest_enable:1,
322  error_recovery_level:2,
323  :6,
324  immediate_data:1,
325  initial_r2t:1,
326  :3;
327 
328  uint32_t statsn;
329 
330  uint32_t rsvd1[2];
331 
332  uint32_t max_recv_dsl:24,
333  :8;
334 
335  uint32_t rsvd2[2];
336 
337  uint32_t max_cxns:16,
338  :11,
339  invl:1,
340  :1,
341  dm:1,
342  data_seq_inorder:1,
343  data_pdu_inorder:1;
344 
345  uint32_t rsvd3[4];
346 #else
347 #error big endian version not defined
348 #endif
350 
351 /**
352  * @brief WQE used to for TGT_STS WQE (data from ini->Tgt)
353  */
354 typedef struct sli4_skh_wqe_tgt_sts_s {
355 #if BYTE_ORDER == LITTLE_ENDIAN
356  uint32_t exp_xfer_len:25,
357  :2,
358  type:5;
359 
360  uint32_t next_wqe:8,
361  wrb_index:8,
362  lun:16;
363 
364  uint32_t icd_index:16,
365  ref_icd_index:16;
366 
367  uint32_t exp_data_sn;
368  uint32_t bhs_addr_high;
369  uint32_t bhs_addr_low;
370 
371  // Use cq per connection.
372  uint32_t :16,
373  cq_id:16;
374 
375  uint32_t itt;
376  uint32_t rsvd1[2];
377 
378  uint32_t r2t_offset:24,
379  :8;
380 
381  uint32_t :24,
382  dif_enable:1,
383  :2,
384  inv:1,
385  :4;
386 
387  uint32_t rsvd2[3];
388 
389  uint32_t rsvd4;
390 
391 #else
392 #error big endian version not defined
393 #endif
395 
396 
397 /**
398  * @brief WQE used to for TGT_DATAIN WQE (data from Tgt->Ini)
399  */
400 typedef struct sli4_skh_wqe_tgt_datain_s {
401 #if BYTE_ORDER == LITTLE_ENDIAN
402 
403  uint32_t exp_xfer_len:25,
404  :2,
405  type:5;
406  uint32_t next_wqe:8,
407  wrb_index:8,
408  lun:16;
409  uint32_t icd_index:16,
410  ref_icd_index:16;
411  uint32_t data_sn;
412  uint32_t bhs_addr_high;
413  uint32_t bhs_addr_low;
414 
415  // Use cq per connection.
416  uint32_t :16,
417  cq_id:16;
418  uint32_t cmdsn;
419  uint32_t sge0_addr_high;
420  uint32_t sge0_addr_low;
421  uint32_t sge0_offset:24,
422  :7,
423  s0l:1;
424  uint32_t sge0_length:17,
425  :8,
426  underrun:1,
427  overrun:1,
428  inv:1,
429  dsp:1,
430  dm:1,
431  piggy_back_status:1,
432  :1;
433  uint32_t sge1_addr_high;
434  uint32_t sge1_addr_low;
435  uint32_t sge1_offset:24,
436  :7,
437  s1l:1;
438  uint32_t sge1_length:17,
439  :15;
440 
441 #else
442 #error big endian version not defined
443 #endif
445 
446 /**
447  * @brief WQE used to for DIF WQE
448  */
449 typedef struct sli4_skh_wqe_dif_s {
450 #if BYTE_ORDER == LITTLE_ENDIAN
451 
452  uint32_t exp_xfer_len:25,
453  :2,
454  type:5;
455 
456  uint32_t next_wqe:8,
457  wrb_index:8,
458  lun:16;
459 
460  uint32_t icd_index:16,
461  ref_icd_index:16;
462 
463  uint32_t data_sn;
464  uint32_t bhs_addr_high;
465  uint32_t bhs_addr_low;
466  uint32_t exp_ref_tag;
467  uint32_t cmdsn;
468  uint32_t sge0_addr_high;
469  uint32_t sge0_addr_low;
470 
471  uint32_t sge0_offset:24,
472  :4,
473  t10_crc_seed:1,
474  t10_atrt:1,
475  t10_at:1,
476  s0l:1;
477 
478  uint32_t sge0_length:17,
479  :6,
480  sdm:1,
481  dif_enable:1,
482  underrun:1,
483  overrun:1,
484  inv:1,
485  dsp:1,
486  dm:1,
487  piggy_back_status:1,
488  :1;
489 
490  uint32_t mkaddr_addr_high;
491  uint32_t mkaddr_addr_low;
492  uint32_t rep_ref_tag;
493 
494  uint32_t meta_tag:16,
495  dif_blk_size:3,
496  dif_auto_inc:1,
497  check_meta_tag:1,
498  check_ref_tag:1,
499  check_crc:1,
500  replace_ref_tag:1,
501  rx_dif_mode:4, //Use reserved for data-ins
502  tx_dif_mode:4;
503 #else
504 #error big endian version not defined
505 #endif
507 
508 
509 
510 /**
511  * @brief WQE used to for TGT_SOS WQE (Tgt Response)
512  */
513 typedef struct sli4_skh_wqe_tgt_sos_s {
514 #if BYTE_ORDER == LITTLE_ENDIAN
515  uint32_t exp_xfer_len:25,
516  :2,
517  type:5;
518  uint32_t next_wqe:8,
519  wrb_index:8,
520  lun:16;
521  uint32_t icd_index:16,
522  :16;
523  uint32_t rsvd;
524  uint32_t bhs_addr_high;
525  uint32_t bhs_addr_low;
526 
527  // Use cq per connection.
528  uint32_t :16,
529  cq_id:16;
530  uint32_t cmdsn;
531  uint32_t sge0_addr_high;
532  uint32_t sge0_addr_low;
533  uint32_t sge0_offset:24,
534  :7,
535  s0l:1;
536  uint32_t sge0_length:17,
537  :10,
538  inv:1,
539  dsp:1,
540  dm:1,
541  piggy_back_status:1,
542  :1;
543  uint32_t sge1_addr_high;
544  uint32_t sge1_addr_low;
545  uint32_t sge1_offset:24,
546  :7,
547  s1l:1;
548  uint32_t sge1_length:17,
549  :15;
550 #else
551 #error big endian version not define
552 #endif
554 
555 
556 /**
557  * @brief WQE used to transmit a PDU without any modificiation (TGT_DM_CMD)
558  */
559 typedef struct sli4_skh_wqe_unassisted_s {
560 #if BYTE_ORDER == LITTLE_ENDIAN
561 
562  uint32_t exp_xfer_len:25,
563  :2,
564  type:5;
565  uint32_t next_wqe:8,
566  wrb_index:8,
567  :16;
568  uint32_t icd_index:16,
569  :16;
570  uint32_t rsvd;
571  uint32_t bhs_addr_high;
572  uint32_t bhs_addr_low;
573 
574  // Use cq per connection.
575  uint32_t :16,
576  cq_id:16;
577  uint32_t login_pdu;
578  uint32_t sge0_addr_high;
579  uint32_t sge0_addr_low;
580  uint32_t sge0_offset:24,
581  :7,
582  s0l:1;
583  uint32_t sge0_length:17,
584  :10,
585  inv:1,
586  dsp:1,
587  dm:1,
588  piggy_back_status:1,
589  :1;
590  uint32_t sge1_addr_high;
591  uint32_t sge1_addr_low;
592  uint32_t sge1_offset:24,
593  :7,
594  s1l:1;
595  uint32_t sge1_length:17,
596  :15;
597 
598 #else
599 #error big endian version not defined
600 #endif
602 
603 
604 /**
605  * @brief Used to decode DMSG CQEs.
606  */
607 typedef struct sli4_skh_iscsi_i_t_dmsg_cqe_s {
608 #if BYTE_ORDER == LITTLE_ENDIAN
609  uint32_t ack_num;
610  uint32_t pdu_bytes_rcvd;
611  uint32_t code:6,
612  :10,
613  wqe_index:16;
614  uint32_t rsvd:16,
615  cid:13,
616  rsvd1:2,
617  valid:1;
618 #else
619 #error big endian version not defined
620 #endif
622 
623 /**
624  * @brief Used to decode DPDU CQEs.
625  */
626 typedef struct sli4_skh_iscsi_i_t_dpdu_cqe_s {
627 #if BYTE_ORDER == LITTLE_ENDIAN
630  uint32_t code:6,
631  num_consumed:9,
632  data_length:17;
633  uint32_t rq_index:16,
634  cid:13,
635  rsvd:1,
636  fin:1,
637  valid:1;
638 #else
639 #error big endian version not defined
640 #endif
642 
643 /**
644  * @brief Used to decode I_SOL CQEs.
645  */
646 typedef struct sli4_skh_iscsi_i_sol_cqe_s {
647 #if BYTE_ORDER == LITTLE_ENDIAN
648  uint32_t hw_sts:8,
649  status_or_response:8,
650  wqe_index:16;
651  uint32_t expcmdsn;
652  uint32_t code:6,
653  is_sts_or_rsp:1,
654  rsvd:1,
655  cmd_window:8,
656  cid:13,
657  underrun:1,
658  overrun:1,
659  sts:1;
660  uint32_t residual:31,
661  valid:1;
662 #else
663 #error big endian version not defined
664 #endif
666 
667 /**
668  * @brief Used to decode T_SOL CQEs.
669  */
670 typedef struct sli4_skh_iscsi_t_sol_cqe_s {
671 #if BYTE_ORDER == LITTLE_ENDIAN
672  uint32_t hw_sts:8,
673  :24;
674  uint32_t pdu_bytes_rcvd;
675  uint32_t code:6,
676  :26;
677  uint32_t wqe_index:16,
678  cid:13,
679  :2,
680  valid:1;
681 #else
682 #error big endian version not defined
683 #endif
685 
686 /**
687  * @brief Used to decode T_SOL_DATA_DIGEST CQEs.
688  */
689 typedef struct sli4_skh_iscsi_t_sol_data_digest_cqe_s {
690 #if BYTE_ORDER == LITTLE_ENDIAN
691  uint32_t datasn:12,
692  :4,
693  sgl_icd_index:16;
694  uint32_t exp_statsn;
695  uint32_t code:6,
696  buffer_offset:24,
697  fin:1,
698  :1;
699  uint32_t data_seg_len:17,
700  cid:13,
701  :1,
702  valid:1;
703 #else
704 #error big endian version not defined
705 #endif
707 
708 /**
709  * @brief Used to decode CNXINV CQEs.
710  */
711 typedef struct sli4_skh_iscsi_t_cnxinv_cqe_s {
712 #if BYTE_ORDER == LITTLE_ENDIAN
715  uint32_t code:6,
716  :10,
717  rq_index:16;
718  uint32_t partial_dsl:17,
719  cid:13,
720  :1,
721  valid:1;
722 #else
723 #error big endian version not defined
724 #endif
726 
727 /**
728  * @brief Used to decode CMNDINV CQEs.
729  */
730 typedef struct sli4_skh_iscsi_t_cmndinv_cqe_s {
731 #if BYTE_ORDER == LITTLE_ENDIAN
732  uint32_t rsvd0;
733  uint32_t rsvd1;
734  uint32_t code:6,
735  :26;
736  uint32_t sgl_icd_index:16,
737  cid:13,
738  :2,
739  valid:1;
740 #else
741 #error big endian version not defined
742 #endif
744 
745 /**
746  * @brief Used to decode T_SOL_DATA_DIGEST CQEs.
747  */
748 typedef struct sli4_skh_iscsi_tx_dif_error_cqe_s {
749 #if BYTE_ORDER == LITTLE_ENDIAN
750  uint32_t dif_error:8,
751  :24;
752  uint32_t resv;
753  uint32_t code:6,
754  :26;
755  uint32_t icd_index:16,
756  cid:13,
757  :2,
758  valid:1;
759 #else
760 #error big endian version not defined
761 #endif
763 
767 extern int32_t sli_skh_get_sli4_parameters(sli4_t *sli4);
768 
769 #endif /* !_SLI4_SKH_ISCSI_H */
770 
771 /* vim: set noexpandtab textwidth=120: */
#define ISCSI_CQE_CODE_MAX
Definition: sli4_iscsi.h:1119
Used to decode T_SOL_DATA_DIGEST CQEs.
int32_t cqe_handler_t(sli4_t *, uint8_t *cqe, sli4_qentry_fields_t *fields)
Definition: sli4_iscsi.h:1279
uint32_t uint32_t sge1_addr_high
WQE used to for INITIATOR_TMF WQE.
Used to decode T_SOL CQEs.
Used to decode DPDU CQEs.
cqe_handler_t * ini_skh_cqe_handlers[ISCSI_CQE_CODE_MAX+1]
Used to decode DMSG CQEs.
COMMON_GET_SLI4_PARAMETERS.
cqe_handler_t * tgt_skh_cqe_handlers[ISCSI_CQE_CODE_MAX+1]
WQE used to for INITIATOR_WRITE_COMMAND WQE (data from ini->Tgt)
uint32_t uint32_t sge1_addr_high
WQE used to for INITIATOR_READ WQE (data from ini->Tgt)
Used to decode CNXINV CQEs.
Definition: sli4.h:2201
WQE used to for DIF WQE.
sli_wqe_handlers_t sli_skh_iscsi_wqe_handlers
WQE used to for TGT_DATAIN WQE (data from Tgt->Ini)
Used to decode I_SOL CQEs.
uint32_t uint32_t rsvd
int32_t sli_skh_get_sli4_parameters(sli4_t *sli4)
Issue the GET_SLI4_PARAMETERS IOCTL and populate the results.
Used to decode T_SOL_DATA_DIGEST CQEs.
WQE used to for INITIATOR_NOP_OUT WQE (data from ini->Tgt)
Used to decode CMNDINV CQEs.
WQE used to for TGT_SOS WQE (Tgt Response)
WQE used to transmit a PDU without any modificiation (TGT_DM_CMD)
uint32_t uint32_t sge1_addr_high
uint32_t uint32_t pdu_bytes_rcvd
Generic Command Request header.
Definition: sli4.h:582
Generic Command Response header.
Definition: sli4.h:600
uint32_t uint32_t sge1_addr_high
uint32_t uint32_t sge1_addr_high
WQE used to for TGT_STS WQE (data from ini->Tgt)
uint32_t uint32_t rsvd1
uint32_t uint32_t rsvd1
WQE used to Update a connection context.