Emulex Logo
OneCoreā„¢ Storage SDK Release 11.2
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
sli4_be3_iscsi.c File Reference
#include "ocs.h"
#include "ocs_hal.h"
#include "sli4.h"
#include "sli4_iscsi.h"
#include "ocs_iscsi_spec.h"

Go to the source code of this file.

Detailed Description

Implementation of iSCSI BE3 SLI-4 functions

Definition in file sli4_be3_iscsi.c.

Functions

static int32_t sli_be3_iscsi_cqe_i_sol (sli4_t *sli4, uint8_t *cqe, sli4_qentry_fields_t *fields)
 Parse an iSCSI work queue CQ entry. More...
 
static int32_t sli_be3_iscsi_cqe_t_sol (sli4_t *sli4, uint8_t *cqe, sli4_qentry_fields_t *fields)
 Parse a iSCSI work queue CQ entry. More...
 
static int32_t sli_be3_iscsi_cqe_t_sol_data_digest (sli4_t *sli4, uint8_t *cqe, sli4_qentry_fields_t *fields)
 Parse a iSCSI work queue CQ entry. More...
 
static int32_t sli_be3_iscsi_cqe_t_cnxinv (sli4_t *sli4, uint8_t *cqe, sli4_qentry_fields_t *fields)
 Parse a iSCSI work queue CQ entry. More...
 
static int32_t sli_be3_iscsi_cqe_t_cmdinv (sli4_t *sli4, uint8_t *cqe, sli4_qentry_fields_t *fields)
 Parse a iSCSI work queue CQ entry. More...
 
static int32_t sli_be3_iscsi_cqe_i_t_dpdu (sli4_t *sli4, uint8_t *cqe, sli4_qentry_fields_t *fields)
 Parse an iSCSI work queue CQ entry. More...
 
static int32_t sli_be3_iscsi_cqe_i_t_dmsg (sli4_t *sli4, uint8_t *cqe, sli4_qentry_fields_t *fields)
 Parse a iSCSI work queue CQ entry. More...
 
static int32_t sli_be3_wqe_ini_write (sli4_t *sli4, void *buf, size_t size, uint16_t lun, uint32_t exp_xfer_len, uint32_t cmdsn, uint16_t icd_index, ocs_hal_dif_info_t *dif_info, sli4_sge_t *sgl, uint32_t n_sge)
 Write an INITIATOR_WRITE_COMMAND WQE work queue entry. More...
 
static int32_t sli_be3_wqe_ini_tmf (sli4_t *sli4, void *buf, size_t size, uint16_t lun, uint32_t cmdsn, uint16_t icd_index, sli4_sge_t *sgl, uint32_t n_sge)
 Write an INITIATOR_TMF WQE work queue entry. More...
 
static int32_t sli_be3_wqe_ini_nop (sli4_t *sli4, void *buf, size_t size, uint8_t dm, uint32_t cmdsn, ocs_dma_t *bhs, ocs_dma_t *payload1, ocs_dma_t *payload2, uint32_t exp_xfer_len, uint16_t icd_index)
 Write an INITIATOR_NOP_OUT_COMMAND WQE work queue entry. More...
 
static int32_t sli_be3_wqe_ini_read (sli4_t *sli4, void *buf, size_t size, uint16_t lun, uint32_t exp_xfer_len, uint32_t cmdsn, uint16_t icd_index, ocs_hal_dif_info_t *dif_info, sli4_sge_t *sgl, uint32_t n_sge)
 Write an INITIATOR_READ WQE work queue entry. More...
 
static int32_t sli_be3_wqe_update_context (sli4_t *sli4, void *buf, size_t size, ocs_hal_target_login_options_t *lgn_options, uint32_t statsn)
 Write a CONTEXT_UPDATE_WQE work queue entry. More...
 
static int32_t sli_be3_wqe_tgt_sts (sli4_t *sli4, void *buf, size_t size, ocs_dma_t *bhs, uint16_t lun, uint32_t exp_xfer_len, uint32_t exp_data_sn, uint32_t itt, uint16_t icd_index, uint16_t ref_icd_index, ocs_hal_dif_info_t *dif_info, uint32_t r2t_offset, sli4_sge_t *sgl, uint32_t n_sge)
 Write an TGT_STS_WQE work queue entry. More...
 
static int32_t sli_be3_wqe_tgt_datain (sli4_t *sli4, void *buf, size_t size, ocs_dma_t *bhs, uint16_t lun, uint8_t dm, uint8_t underrun, uint8_t overrun, uint32_t exp_xfer_len, uint16_t icd_index, uint16_t ref_icd_index, uint32_t data_sn, uint8_t piggy_back_status, ocs_hal_dif_info_t *dif_info, sli4_sge_t *sgl, uint32_t n_sge)
 Write a TGT_DATAIN_WQE work queue entry. More...
 
static int32_t sli_be3_wqe_tgt_sos (sli4_t *sli4, void *buf, size_t size, ocs_dma_t *bhs, ocs_dma_t *payload1, ocs_dma_t *payload2, uint16_t lun, uint8_t dm, uint32_t exp_xfer_len, uint16_t icd_index)
 Write a TGT_SOS_WQE work queue entry. More...
 
static int32_t sli_be3_wqe_unassisted (sli4_t *sli4, void *buf, size_t size, uint8_t set_dm, uint8_t incr_statsn, uint8_t is_login, ocs_dma_t *bhs, ocs_dma_t *payload1, ocs_dma_t *payload2, uint32_t exp_xfer_len, uint16_t icd_index)
 Write an DM_CMD_WQE work queue entry. More...
 
static int32_t sli_be3_queue_iscsi_wq_write (sli4_t *sli4, sli4_queue_t *q, uint8_t *entry, void *io)
 Write an WQE entry to the queue object. More...
 
static int32_t sli_be3_queue_iscsi_wqe_invalidate (sli4_t *sli4, sli4_queue_t *q, void *io, uint8_t is_for_tm)
 Writes a 1 to the invalidate bit of the WQE. More...
 
int32_t sli_be3_get_sli4_parameters (sli4_t *sli4)
 Note: GET_SLI4_PARAMETERS IOCTL is not supported on BE3, so we just return constant values. More...
 

Variables

const char * SLI_QNAME []
 
cqe_handler_t * ini_be3_cqe_handlers [ISCSI_CQE_CODE_MAX+1]
 
cqe_handler_t * tgt_be3_cqe_handlers [ISCSI_CQE_CODE_MAX+1]
 
sli_wqe_handlers_t sli_be3_iscsi_wqe_handlers
 

Function Details

int32_t sli_be3_get_sli4_parameters ( sli4_t *  sli4)

Note: GET_SLI4_PARAMETERS IOCTL is not supported on BE3, so we just return constant values.

Parameters
sli4SLI context.
Returns
Returns 0 on success, or a non-zero value otherwise.

Definition at line 1098 of file sli4_be3_iscsi.c.

static int32_t sli_be3_iscsi_cqe_i_sol ( sli4_t *  sli4,
uint8_t *  cqe,
sli4_qentry_fields_t *  fields 
)
static

Parse an iSCSI work queue CQ entry.

Parameters
sli4SLI context.
cqePointer to the CQ entry.
fieldsReturns the fields embedded in the CQ entry.
Returns
Returns 0 on success, or a non-zero value otherwise.

Definition at line 875 of file sli4_be3_iscsi.c.

static int32_t sli_be3_iscsi_cqe_i_t_dmsg ( sli4_t *  sli4,
uint8_t *  cqe,
sli4_qentry_fields_t *  fields 
)
static

Parse a iSCSI work queue CQ entry.

Parameters
sli4SLI context.
cqePointer to the CQ entry.
fieldsReturns the fields embedded in the CQ entry.
Returns
Returns 0 on success, or a non-zero value otherwise.

Definition at line 1074 of file sli4_be3_iscsi.c.

static int32_t sli_be3_iscsi_cqe_i_t_dpdu ( sli4_t *  sli4,
uint8_t *  cqe,
sli4_qentry_fields_t *  fields 
)
static

Parse an iSCSI work queue CQ entry.

Parameters
sli4SLI context.
cqePointer to the CQ entry.
fieldsReturns the fields embedded in the CQ entry.
Returns
Returns 0 on success, or a non-zero value otherwise.

Definition at line 1046 of file sli4_be3_iscsi.c.

static int32_t sli_be3_iscsi_cqe_t_cmdinv ( sli4_t *  sli4,
uint8_t *  cqe,
sli4_qentry_fields_t *  fields 
)
static

Parse a iSCSI work queue CQ entry.

Parameters
sli4SLI context.
cqePointer to the CQ entry.
fieldsReturns the fields embedded in the CQ entry.
Returns
Returns 0 on success, or a non-zero value otherwise.

Definition at line 1017 of file sli4_be3_iscsi.c.

static int32_t sli_be3_iscsi_cqe_t_cnxinv ( sli4_t *  sli4,
uint8_t *  cqe,
sli4_qentry_fields_t *  fields 
)
static

Parse a iSCSI work queue CQ entry.

Parameters
sli4SLI context.
cqePointer to the CQ entry.
fieldsReturns the fields embedded in the CQ entry.
Returns
Returns 0 on success, or a non-zero value otherwise.

Definition at line 979 of file sli4_be3_iscsi.c.

static int32_t sli_be3_iscsi_cqe_t_sol ( sli4_t *  sli4,
uint8_t *  cqe,
sli4_qentry_fields_t *  fields 
)
static

Parse a iSCSI work queue CQ entry.

Parameters
sli4SLI context.
cqePointer to the CQ entry.
fieldsReturns the fields embedded in the CQ entry.
Returns
Returns 0 on success, or a non-zero value otherwise.

Definition at line 916 of file sli4_be3_iscsi.c.

static int32_t sli_be3_iscsi_cqe_t_sol_data_digest ( sli4_t *  sli4,
uint8_t *  cqe,
sli4_qentry_fields_t *  fields 
)
static

Parse a iSCSI work queue CQ entry.

Parameters
sli4SLI context.
cqePointer to the CQ entry.
fieldsReturns the fields embedded in the CQ entry.
Returns
Returns 0 on success, or a non-zero value otherwise.

Definition at line 946 of file sli4_be3_iscsi.c.

static int32_t sli_be3_wqe_update_context ( sli4_t *  sli4,
void *  buf,
size_t  size,
ocs_hal_target_login_options_t *  lgn_options,
uint32_t  statsn 
)
static

Write a CONTEXT_UPDATE_WQE work queue entry.

Parameters
sli4SLI context.
bufDestination buffer for the WQE.
sizeBuffer size in bytes.
lgn_optionsTarget login options for the connection.
statsnStatus SN for the connection.
Returns
Returns 0 on success, or a non-zero value otherwise.

Definition at line 400 of file sli4_be3_iscsi.c.

Variable Details

cqe_handler_t* ini_be3_cqe_handlers[ISCSI_CQE_CODE_MAX+1]

Definition at line 72 of file sli4_be3_iscsi.c.

sli_wqe_handlers_t sli_be3_iscsi_wqe_handlers
Initial value:
= {
.wqe_update_context = sli_be3_wqe_update_context,
.wqe_ini_read = sli_be3_wqe_ini_read,
.wqe_ini_write = sli_be3_wqe_ini_write,
.wqe_ini_nop = sli_be3_wqe_ini_nop,
.wqe_ini_tmf = sli_be3_wqe_ini_tmf,
.wqe_tgt_datain = sli_be3_wqe_tgt_datain,
.wqe_tgt_sts = sli_be3_wqe_tgt_sts,
.wqe_tgt_sos = sli_be3_wqe_tgt_sos,
.wqe_unassisted = sli_be3_wqe_unassisted,
.queue_iscsi_wq_write = sli_be3_queue_iscsi_wq_write,
.queue_iscsi_wqe_invalidate = sli_be3_queue_iscsi_wqe_invalidate
}
static int32_t sli_be3_wqe_update_context(sli4_t *sli4, void *buf, size_t size, ocs_hal_target_login_options_t *lgn_options, uint32_t statsn)
Write a CONTEXT_UPDATE_WQE work queue entry.
static int32_t sli_be3_wqe_unassisted(sli4_t *sli4, void *buf, size_t size, uint8_t set_dm, uint8_t incr_statsn, uint8_t is_login, ocs_dma_t *bhs, ocs_dma_t *payload1, ocs_dma_t *payload2, uint32_t exp_xfer_len, uint16_t icd_index)
Write an DM_CMD_WQE work queue entry.
static int32_t sli_be3_wqe_ini_tmf(sli4_t *sli4, void *buf, size_t size, uint16_t lun, uint32_t cmdsn, uint16_t icd_index, sli4_sge_t *sgl, uint32_t n_sge)
Write an INITIATOR_TMF WQE work queue entry.
static int32_t sli_be3_wqe_ini_nop(sli4_t *sli4, void *buf, size_t size, uint8_t dm, uint32_t cmdsn, ocs_dma_t *bhs, ocs_dma_t *payload1, ocs_dma_t *payload2, uint32_t exp_xfer_len, uint16_t icd_index)
Write an INITIATOR_NOP_OUT_COMMAND WQE work queue entry.
static int32_t sli_be3_wqe_ini_write(sli4_t *sli4, void *buf, size_t size, uint16_t lun, uint32_t exp_xfer_len, uint32_t cmdsn, uint16_t icd_index, ocs_hal_dif_info_t *dif_info, sli4_sge_t *sgl, uint32_t n_sge)
Write an INITIATOR_WRITE_COMMAND WQE work queue entry.
static int32_t sli_be3_wqe_tgt_sts(sli4_t *sli4, void *buf, size_t size, ocs_dma_t *bhs, uint16_t lun, uint32_t exp_xfer_len, uint32_t exp_data_sn, uint32_t itt, uint16_t icd_index, uint16_t ref_icd_index, ocs_hal_dif_info_t *dif_info, uint32_t r2t_offset, sli4_sge_t *sgl, uint32_t n_sge)
Write an TGT_STS_WQE work queue entry.
static int32_t sli_be3_wqe_ini_read(sli4_t *sli4, void *buf, size_t size, uint16_t lun, uint32_t exp_xfer_len, uint32_t cmdsn, uint16_t icd_index, ocs_hal_dif_info_t *dif_info, sli4_sge_t *sgl, uint32_t n_sge)
Write an INITIATOR_READ WQE work queue entry.
static int32_t sli_be3_queue_iscsi_wqe_invalidate(sli4_t *sli4, sli4_queue_t *q, void *io, uint8_t is_for_tm)
Writes a 1 to the invalidate bit of the WQE.
static int32_t sli_be3_queue_iscsi_wq_write(sli4_t *sli4, sli4_queue_t *q, uint8_t *entry, void *io)
Write an WQE entry to the queue object.
static int32_t sli_be3_wqe_tgt_datain(sli4_t *sli4, void *buf, size_t size, ocs_dma_t *bhs, uint16_t lun, uint8_t dm, uint8_t underrun, uint8_t overrun, uint32_t exp_xfer_len, uint16_t icd_index, uint16_t ref_icd_index, uint32_t data_sn, uint8_t piggy_back_status, ocs_hal_dif_info_t *dif_info, sli4_sge_t *sgl, uint32_t n_sge)
Write a TGT_DATAIN_WQE work queue entry.
static int32_t sli_be3_wqe_tgt_sos(sli4_t *sli4, void *buf, size_t size, ocs_dma_t *bhs, ocs_dma_t *payload1, ocs_dma_t *payload2, uint16_t lun, uint8_t dm, uint32_t exp_xfer_len, uint16_t icd_index)
Write a TGT_SOS_WQE work queue entry.

Definition at line 1110 of file sli4_be3_iscsi.c.

const char* SLI_QNAME[]

Definition at line 75 of file sli4.c.

cqe_handler_t* tgt_be3_cqe_handlers[ISCSI_CQE_CODE_MAX+1]

Definition at line 113 of file sli4_be3_iscsi.c.