38 #ifndef _SLI4_SKH_ISCSI_H
39 #define _SLI4_SKH_ISCSI_H
45 typedef struct sli4_skh_req_common_get_sli4_parameters_s {
50 typedef struct sli4_skh_res_common_get_sli4_parameters_s {
52 #if BYTE_ORDER == LITTLE_ENDIAN
53 uint32_t protocol_type:8,
63 uint32_t eq_page_cnt:4,
70 uint32_t eqe_count_mask:16,
72 uint32_t cq_page_cnt:4,
80 uint32_t cqe_count_mask:16,
82 uint32_t mq_page_cnt:4,
88 uint32_t mqe_count_mask:16,
90 uint32_t wq_page_cnt:4,
98 uint32_t wqe_count_mask:16,
100 uint32_t rq_page_cnt:4,
108 uint32_t rqe_count_mask:16,
121 uint32_t sgl_page_cnt:4,
126 uint32_t min_rq_buffer_size:16,
128 uint32_t max_rq_buffer_size;
129 uint32_t max_phy_icd:16,
131 uint32_t frg_num_field_offset:16,
132 frg_num_field_size:16;
133 uint32_t sgl_idx_field_offset:16,
134 sgl_idx_field_size:16;
138 #error big endian version not defined
145 typedef struct sli4_skh_wqe_ini_write_s {
146 #if BYTE_ORDER == LITTLE_ENDIAN
147 uint32_t exp_xfer_len:25,
153 uint32_t icd_index:16,
162 uint32_t sge0_offset:24,
165 uint32_t sge0_length:17,
174 uint32_t sge1_offset:24,
177 uint32_t sge1_length:17,
180 #error big endian version not defined
188 typedef struct sli4_skh_wqe_ini_tmf_s {
189 #if BYTE_ORDER == LITTLE_ENDIAN
195 uint32_t icd_index:16,
208 #error big endian version not defined
216 typedef struct sli4_skh_wqe_ini_nop_s {
217 #if BYTE_ORDER == LITTLE_ENDIAN
218 uint32_t exp_xfer_len:25,
224 uint32_t icd_index:16,
233 uint32_t sge0_offset:24,
236 uint32_t sge0_length:17,
244 uint32_t sge1_offset:24,
247 uint32_t sge1_length:17,
250 #error big endian version not defined
258 typedef struct sli4_skh_wqe_ini_read_s {
259 #if BYTE_ORDER == LITTLE_ENDIAN
260 uint32_t exp_xfer_len:25,
266 uint32_t icd_index:16,
278 uint32_t sge0_offset:24,
281 uint32_t sge0_length:17,
287 uint32_t sge1_offset:24,
290 uint32_t sge1_length:17,
293 #error big endian version not defined
302 typedef struct sli4_skh_wqe_context_update_s {
303 #if BYTE_ORDER == LITTLE_ENDIAN
304 uint32_t max_burst:24,
312 uint32_t max_send_dsl:24,
315 uint32_t first_burst:24,
320 header_digest_enable:1,
321 data_digest_enable:1,
322 error_recovery_level:2,
332 uint32_t max_recv_dsl:24,
337 uint32_t max_cxns:16,
347 #error big endian version not defined
354 typedef struct sli4_skh_wqe_tgt_sts_s {
355 #if BYTE_ORDER == LITTLE_ENDIAN
356 uint32_t exp_xfer_len:25,
364 uint32_t icd_index:16,
378 uint32_t r2t_offset:24,
392 #error big endian version not defined
400 typedef struct sli4_skh_wqe_tgt_datain_s {
401 #if BYTE_ORDER == LITTLE_ENDIAN
403 uint32_t exp_xfer_len:25,
409 uint32_t icd_index:16,
421 uint32_t sge0_offset:24,
424 uint32_t sge0_length:17,
433 uint32_t sge1_addr_high;
435 uint32_t sge1_offset:24,
438 uint32_t sge1_length:17,
442 #error big endian version not defined
449 typedef struct sli4_skh_wqe_dif_s {
450 #if BYTE_ORDER == LITTLE_ENDIAN
452 uint32_t exp_xfer_len:25,
460 uint32_t icd_index:16,
471 uint32_t sge0_offset:24,
478 uint32_t sge0_length:17,
490 uint32_t mkaddr_addr_high;
494 uint32_t meta_tag:16,
504 #error big endian version not defined
513 typedef struct sli4_skh_wqe_tgt_sos_s {
514 #if BYTE_ORDER == LITTLE_ENDIAN
515 uint32_t exp_xfer_len:25,
521 uint32_t icd_index:16,
533 uint32_t sge0_offset:24,
536 uint32_t sge0_length:17,
545 uint32_t sge1_offset:24,
548 uint32_t sge1_length:17,
551 #error big endian version not define
559 typedef struct sli4_skh_wqe_unassisted_s {
560 #if BYTE_ORDER == LITTLE_ENDIAN
562 uint32_t exp_xfer_len:25,
568 uint32_t icd_index:16,
580 uint32_t sge0_offset:24,
583 uint32_t sge0_length:17,
592 uint32_t sge1_offset:24,
595 uint32_t sge1_length:17,
599 #error big endian version not defined
607 typedef struct sli4_skh_iscsi_i_t_dmsg_cqe_s {
608 #if BYTE_ORDER == LITTLE_ENDIAN
619 #error big endian version not defined
626 typedef struct sli4_skh_iscsi_i_t_dpdu_cqe_s {
627 #if BYTE_ORDER == LITTLE_ENDIAN
633 uint32_t rq_index:16,
639 #error big endian version not defined
646 typedef struct sli4_skh_iscsi_i_sol_cqe_s {
647 #if BYTE_ORDER == LITTLE_ENDIAN
649 status_or_response:8,
660 uint32_t residual:31,
663 #error big endian version not defined
670 typedef struct sli4_skh_iscsi_t_sol_cqe_s {
671 #if BYTE_ORDER == LITTLE_ENDIAN
677 uint32_t wqe_index:16,
682 #error big endian version not defined
689 typedef struct sli4_skh_iscsi_t_sol_data_digest_cqe_s {
690 #if BYTE_ORDER == LITTLE_ENDIAN
699 uint32_t data_seg_len:17,
704 #error big endian version not defined
711 typedef struct sli4_skh_iscsi_t_cnxinv_cqe_s {
712 #if BYTE_ORDER == LITTLE_ENDIAN
718 uint32_t partial_dsl:17,
723 #error big endian version not defined
730 typedef struct sli4_skh_iscsi_t_cmndinv_cqe_s {
731 #if BYTE_ORDER == LITTLE_ENDIAN
736 uint32_t sgl_icd_index:16,
741 #error big endian version not defined
748 typedef struct sli4_skh_iscsi_tx_dif_error_cqe_s {
749 #if BYTE_ORDER == LITTLE_ENDIAN
750 uint32_t dif_error:8,
755 uint32_t icd_index:16,
760 #error big endian version not defined
#define ISCSI_CQE_CODE_MAX
Used to decode T_SOL_DATA_DIGEST CQEs.
uint32_t chain_sge_init_0
int32_t cqe_handler_t(sli4_t *, uint8_t *cqe, sli4_qentry_fields_t *fields)
uint32_t uint32_t sge1_addr_high
WQE used to for INITIATOR_TMF WQE.
uint32_t sge_supported_length
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.
uint32_t def_buf_addr_high
uint32_t def_buf_addr_low
sli_wqe_handlers_t sli_skh_iscsi_wqe_handlers
uint32_t chain_sge_init_1
uint32_t def_buf_addr_high
WQE used to for TGT_DATAIN WQE (data from Tgt->Ini)
Used to decode I_SOL CQEs.
int32_t sli_skh_get_sli4_parameters(sli4_t *sli4)
Issue the GET_SLI4_PARAMETERS IOCTL and populate the results.
uint32_t def_buf_addr_low
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.
Generic Command Response header.
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)
WQE used to Update a connection context.