Emulex Logo
OneCoreā„¢ Storage SDK Release 11.2
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
ocs_scsi.h File Reference
#include "ocs_ddump.h"
#include "ocs_mgmt.h"

Go to the source code of this file.

Detailed Description

OCS SCSI API declarations

Definition in file ocs_scsi.h.

Data Structures

struct  ocs_scsi_cmd_resp_t
 SCSI command response. More...
 
struct  ocs_scsi_sgl_t
 generic scatter-gather list structure More...
 
struct  ocs_scsi_dif_info_t
 T10 DIF information passed to the transport. More...
 
struct  ocs_scsi_vaddr_len_t
 

Macros

#define OCS_SCSI_CMD_DIR_IN   (1U << 0)
 
#define OCS_SCSI_CMD_DIR_OUT   (1U << 1)
 
#define OCS_SCSI_CMD_SIMPLE   (1U << 2)
 
#define OCS_SCSI_CMD_HEAD_OF_QUEUE   (1U << 3)
 
#define OCS_SCSI_CMD_ORDERED   (1U << 4)
 
#define OCS_SCSI_CMD_UNTAGGED   (1U << 5)
 
#define OCS_SCSI_CMD_ACA   (1U << 6)
 
#define OCS_SCSI_FIRST_BURST_ERR   (1U << 7)
 
#define OCS_SCSI_FIRST_BURST_ABORTED   (1U << 8)
 
#define OCS_SCSI_LAST_DATAPHASE   (1U << 0)
 
#define OCS_SCSI_NO_AUTO_RESPONSE   (1U << 1)
 
#define OCS_SCSI_LOW_LATENCY   (1U << 2)
 
#define OCS_SCSI_MAX_CDB_LEN   128
 
#define OCS_SCSI_SNS_BUF_VALID(sense)   ((sense) && (0x70 == (((const uint8_t *)(sense))[0] & 0x70)))
 
#define OCS_SCSI_WQ_STEERING_SHIFT   (16)
 
#define OCS_SCSI_WQ_STEERING_MASK   (0xf << OCS_SCSI_WQ_STEERING_SHIFT)
 
#define OCS_SCSI_WQ_STEERING_CLASS   (0 << OCS_SCSI_WQ_STEERING_SHIFT)
 
#define OCS_SCSI_WQ_STEERING_REQUEST   (1 << OCS_SCSI_WQ_STEERING_SHIFT)
 
#define OCS_SCSI_WQ_STEERING_CPU   (2 << OCS_SCSI_WQ_STEERING_SHIFT)
 
#define OCS_SCSI_WQ_CLASS_SHIFT   (20)
 
#define OCS_SCSI_WQ_CLASS_MASK   (0xf << OCS_SCSI_WQ_CLASS_SHIFT)
 
#define OCS_SCSI_WQ_CLASS(x)   ((x & OCS_SCSI_WQ_CLASS_MASK) << OCS_SCSI_WQ_CLASS_SHIFT)
 
#define OCS_SCSI_WQ_CLASS_LOW_LATENCY   (1)
 
#define OCS_SCSI_IO_CMPL   (1U << 0) /* IO completed */
 
#define OCS_SCSI_IO_CMPL_RSP_SENT   (1U << 1) /* IO completed, response sent */
 
#define OCS_SCSI_IO_ABORTED   (1U << 2) /* IO was aborted */
 
#define DIF_SIZE   8
 
#define OCS_SCSI_DIF_OPER_PASS_THRU   OCS_SCSI_DIF_OPER_IN_CRC_OUT_CRC
 
#define OCS_SCSI_DIF_OPER_STRIP   OCS_SCSI_DIF_OPER_IN_CRC_OUT_NODIF
 
#define OCS_SCSI_DIF_OPER_INSERT   OCS_SCSI_DIF_OPER_IN_NODIF_OUT_CRC
 
#define OCS_SCSI_CALL_COMPLETE   0
 
#define OCS_SCSI_CALL_ASYNC   1
 

Typedefs

typedef int32_t(* ocs_scsi_io_cb_t )(ocs_io_t *io, ocs_scsi_io_status_e status, uint32_t flags, void *arg)
 
typedef int32_t(* ocs_scsi_rsp_io_cb_t )(ocs_io_t *io, ocs_scsi_io_status_e status, ocs_scsi_cmd_resp_t *rsp, uint32_t flags, void *arg)
 

Enumerations

enum  ocs_scsi_io_status_e {
  OCS_SCSI_STATUS_GOOD = 0, OCS_SCSI_STATUS_ABORTED, OCS_SCSI_STATUS_ERROR, OCS_SCSI_STATUS_DIF_GUARD_ERROR,
  OCS_SCSI_STATUS_DIF_REF_TAG_ERROR, OCS_SCSI_STATUS_DIF_APP_TAG_ERROR, OCS_SCSI_STATUS_DIF_UNKNOWN_ERROR, OCS_SCSI_STATUS_PROTOCOL_CRC_ERROR,
  OCS_SCSI_STATUS_NO_IO, OCS_SCSI_STATUS_ABORT_IN_PROGRESS, OCS_SCSI_STATUS_CHECK_RESPONSE, OCS_SCSI_STATUS_COMMAND_TIMEOUT,
  OCS_SCSI_STATUS_TIMEDOUT_AND_ABORTED, OCS_SCSI_STATUS_SHUTDOWN, OCS_SCSI_STATUS_NEXUS_LOST
}
 
enum  ocs_scsi_tmf_cmd_e {
  OCS_SCSI_TMF_ABORT_TASK = 1, OCS_SCSI_TMF_QUERY_TASK_SET, OCS_SCSI_TMF_ABORT_TASK_SET, OCS_SCSI_TMF_CLEAR_TASK_SET,
  OCS_SCSI_TMF_QUERY_ASYNCHRONOUS_EVENT, OCS_SCSI_TMF_LOGICAL_UNIT_RESET, OCS_SCSI_TMF_CLEAR_ACA, OCS_SCSI_TMF_TARGET_RESET
}
 
enum  ocs_scsi_tmf_resp_e {
  OCS_SCSI_TMF_FUNCTION_COMPLETE = 1, OCS_SCSI_TMF_FUNCTION_SUCCEEDED, OCS_SCSI_TMF_FUNCTION_IO_NOT_FOUND, OCS_SCSI_TMF_FUNCTION_REJECTED,
  OCS_SCSI_TMF_INCORRECT_LOGICAL_UNIT_NUMBER, OCS_SCSI_TMF_SERVICE_DELIVERY
}
 
enum  ocs_scsi_property_e {
  OCS_SCSI_MAX_SGE, OCS_SCSI_MAX_SGL, OCS_SCSI_WWNN, OCS_SCSI_WWPN,
  OCS_SCSI_SERIALNUMBER, OCS_SCSI_PARTNUMBER, OCS_SCSI_PORTNUM, OCS_SCSI_BIOS_VERSION_STRING,
  OCS_SCSI_MAX_IOS, OCS_SCSI_DIF_CAPABLE, OCS_SCSI_DIF_MULTI_SEPARATE, OCS_SCSI_MAX_FIRST_BURST,
  OCS_SCSI_ENABLE_TASK_SET_FULL
}
 property names for ocs_scsi_get_property() functions More...
 
enum  ocs_scsi_dif_oper_e {
  OCS_SCSI_DIF_OPER_DISABLED, OCS_SCSI_DIF_OPER_IN_NODIF_OUT_CRC, OCS_SCSI_DIF_OPER_IN_CRC_OUT_NODIF, OCS_SCSI_DIF_OPER_IN_NODIF_OUT_CHKSUM,
  OCS_SCSI_DIF_OPER_IN_CHKSUM_OUT_NODIF, OCS_SCSI_DIF_OPER_IN_CRC_OUT_CRC, OCS_SCSI_DIF_OPER_IN_CHKSUM_OUT_CHKSUM, OCS_SCSI_DIF_OPER_IN_CRC_OUT_CHKSUM,
  OCS_SCSI_DIF_OPER_IN_CHKSUM_OUT_CRC, OCS_SCSI_DIF_OPER_IN_RAW_OUT_RAW
}
 T10 DIF operations. More...
 
enum  ocs_scsi_dif_blk_size_e {
  OCS_SCSI_DIF_BK_SIZE_512, OCS_SCSI_DIF_BK_SIZE_1024, OCS_SCSI_DIF_BK_SIZE_2048, OCS_SCSI_DIF_BK_SIZE_4096,
  OCS_SCSI_DIF_BK_SIZE_520, OCS_SCSI_DIF_BK_SIZE_4104
}
 T10 DIF block sizes. More...
 
enum  ocs_scsi_io_role_e { OCS_SCSI_IO_ROLE_ORIGINATOR, OCS_SCSI_IO_ROLE_RESPONDER }
 
enum  ocs_scsi_del_initiator_reason_e { OCS_SCSI_INITIATOR_DELETED, OCS_SCSI_INITIATOR_MISSING }
 
enum  ocs_scsi_del_target_reason_e { OCS_SCSI_TARGET_DELETED, OCS_SCSI_TARGET_MISSING }
 
enum  ocs_scsi_ddump_type_e {
  OCS_SCSI_DDUMP_DEVICE, OCS_SCSI_DDUMP_DOMAIN, OCS_SCSI_DDUMP_SPORT, OCS_SCSI_DDUMP_NODE,
  OCS_SCSI_DDUMP_IO
}
 

Functions

void ocs_scsi_io_alloc_enable (ocs_node_t *node)
 Enable IO allocation. More...
 
void ocs_scsi_io_alloc_disable (ocs_node_t *node)
 Disable IO allocation. More...
 
int32_t ocs_scsi_io_alloc_enabled (ocs_node_t *node)
 Get state of IO allocation. More...
 
ocs_io_t * ocs_scsi_io_alloc (ocs_node_t *node, ocs_scsi_io_role_e role)
 Allocate a SCSI IO context. More...
 
void ocs_scsi_io_free (ocs_io_t *io)
 Free a SCSI IO context. More...
 
ocs_io_t * ocs_io_get_instance (ocs_t *ocs, uint32_t index)
 Return IO context given the instance index. More...
 
void ocs_scsi_register_bounce (ocs_t *ocs, void(*fctn)(void(*fctn)(void *arg), void *arg, uint32_t s_id, uint32_t d_id, uint32_t ox_id))
 Register bounce callback for multi-threading. More...
 
int32_t ocs_scsi_tgt_driver_init (void)
 Driver-wide initialization for the target-server. More...
 
int32_t ocs_scsi_tgt_driver_exit (void)
 Driver-wide clean-up for the target-server. More...
 
uint32_t ocs_scsi_tgt_io_state (ocs_io_t *io)
 Set SCST IO state. More...
 
int32_t ocs_scsi_tgt_io_init (ocs_io_t *io)
 Initialize SCSI IO. More...
 
int32_t ocs_scsi_tgt_io_exit (ocs_io_t *io)
 Un-initialize SCSI IO. More...
 
int32_t ocs_scsi_tgt_new_device (ocs_t *ocs)
 Initializes any target fields on the ocs structure. More...
 
int32_t ocs_scsi_tgt_del_device (ocs_t *ocs)
 Tears down the target members of the ocs structure. More...
 
int32_t ocs_scsi_tgt_new_domain (ocs_domain_t *domain)
 Accept a new domain notification. More...
 
void ocs_scsi_tgt_del_domain (ocs_domain_t *domain)
 Accept a domain lost notification. More...
 
int32_t ocs_scsi_tgt_new_sport (ocs_sport_t *sport)
 Accept a new SLI Port notification. More...
 
void ocs_scsi_tgt_del_sport (ocs_sport_t *sport)
 Accept a SLI Port gone notification. More...
 
int32_t ocs_scsi_validate_initiator (ocs_node_t *node)
 Validate a new initiator. More...
 
int32_t ocs_scsi_new_initiator (ocs_node_t *node)
 Receive notification of a new SCSI initiator node. More...
 
int32_t ocs_scsi_del_initiator (ocs_node_t *node, ocs_scsi_del_initiator_reason_e reason)
 Delete a SCSI initiator node. More...
 
int32_t ocs_scsi_recv_cmd (ocs_io_t *io, uint32_t lun, uint8_t *cdb, uint32_t cdb_len, uint32_t flags)
 
int32_t ocs_scsi_recv_cmd_first_burst (ocs_io_t *io, uint32_t lun, uint8_t *cdb, uint32_t cdb_len, uint32_t flags, ocs_dma_t first_burst_buffers[], uint32_t first_burst_bytes)
 Receive an FCP SCSI command with the first burst data. More...
 
int32_t ocs_scsi_recv_tmf (ocs_io_t *tmfio, uint32_t lun, ocs_scsi_tmf_cmd_e cmd, ocs_io_t *abortio, uint32_t flags)
 Receive a TMF command IO. More...
 
ocs_sport_t * ocs_sport_get_instance (ocs_domain_t *domain, uint32_t index)
 Return a SLI port object, given an instance index. More...
 
ocs_domain_t * ocs_domain_get_instance (ocs_t *ocs, uint32_t index)
 Return a pointer to the domain, given the instance index. More...
 
int32_t ocs_scsi_send_rd_data (ocs_io_t *io, uint32_t flags, ocs_scsi_dif_info_t *dif_info, ocs_scsi_sgl_t *sgl, uint32_t sgl_count, uint64_t wire_len, ocs_scsi_io_cb_t cb, void *arg)
 
int32_t ocs_scsi_recv_wr_data (ocs_io_t *io, uint32_t flags, ocs_scsi_dif_info_t *dif_info, ocs_scsi_sgl_t *sgl, uint32_t sgl_count, uint64_t wire_len, ocs_scsi_io_cb_t cb, void *arg)
 
int32_t ocs_scsi_send_resp (ocs_io_t *io, uint32_t flags, ocs_scsi_cmd_resp_t *rsp, ocs_scsi_io_cb_t cb, void *arg)
 Send response data. More...
 
int32_t ocs_scsi_send_tmf_resp (ocs_io_t *io, ocs_scsi_tmf_resp_e rspcode, uint8_t addl_rsp_info[3], ocs_scsi_io_cb_t cb, void *arg)
 Send TMF response data. More...
 
int32_t ocs_scsi_tgt_abort_io (ocs_io_t *io, bool send_abts, ocs_scsi_io_cb_t cb, void *arg)
 Abort a target IO. More...
 
void ocs_scsi_io_complete (ocs_io_t *io)
 Notify the base driver that the IO is complete. More...
 
uint32_t ocs_scsi_get_property (ocs_t *ocs, ocs_scsi_property_e prop)
 Return SCSI API integer valued property. More...
 
void * ocs_scsi_get_property_ptr (ocs_t *ocs, ocs_scsi_property_e prop)
 Return a property pointer. More...
 
void ocs_scsi_del_initiator_complete (ocs_node_t *node)
 Notify that delete initiator is complete. More...
 
void ocs_scsi_update_first_burst_transferred (ocs_io_t *io, uint32_t transferred)
 Update transferred count. More...
 
int32_t ocs_scsi_ini_driver_init (int32_t initiator)
 Initialize initiator client. More...
 
int32_t ocs_scsi_ini_driver_exit (int32_t initiator)
 initiator client exit More...
 
int32_t ocs_scsi_ini_io_init (ocs_io_t *io)
 Initialize SCSI IO. More...
 
int32_t ocs_scsi_ini_io_exit (ocs_io_t *io)
 Uninitialize SCSI IO. More...
 
int32_t ocs_scsi_ini_new_device (ocs_t *ocs)
 Initializes any initiator fields on the ocs structure. More...
 
int32_t ocs_scsi_host_ml_registered (ocs_t *ocs)
 
int32_t ocs_scsi_ini_del_device (ocs_t *ocs)
 Tears down target members of ocs structure. More...
 
int32_t ocs_scsi_ini_new_domain (ocs_domain_t *domain)
 accept new domain notification More...
 
int32_t ocs_scsi_host_update_supported_speed (ocs_t *ocs)
 
void ocs_scsi_ini_del_domain (ocs_domain_t *domain)
 accept domain lost notification More...
 
int32_t ocs_scsi_ini_new_sport (ocs_sport_t *sport)
 
void ocs_scsi_ini_del_sport (ocs_sport_t *sport)
 
int32_t ocs_scsi_new_target (ocs_node_t *node)
 receive notification of a new SCSI target node More...
 
void ocs_get_os_host_name (ocs_t *ocs, void *os_ver_name_str, size_t size)
 
void ocs_get_os_version_and_name (ocs_t *ocs, void *os_ver_name_str, size_t size)
 
void ocs_scsi_get_host_name (ocs_t *ocs, void *host_name, size_t size)
 
int32_t ocs_scsi_del_target (ocs_node_t *node, ocs_scsi_del_target_reason_e reason)
 Delete a SCSI target node. More...
 
int32_t ocs_scsi_send_rd_io (ocs_node_t *node, ocs_io_t *io, uint32_t lun, void *cdb, uint32_t cdb_len, ocs_scsi_dif_info_t *dif_info, ocs_scsi_sgl_t *sgl, uint32_t sgl_count, uint32_t wire_len, ocs_scsi_rsp_io_cb_t cb, void *arg)
 Initiate initiator read IO. More...
 
int32_t ocs_scsi_send_wr_io (ocs_node_t *node, ocs_io_t *io, uint32_t lun, void *cdb, uint32_t cdb_len, ocs_scsi_dif_info_t *dif_info, ocs_scsi_sgl_t *sgl, uint32_t sgl_count, uint32_t wire_len, ocs_scsi_rsp_io_cb_t cb, void *arg)
 Initiate initiator write IO. More...
 
int32_t ocs_scsi_send_wr_io_first_burst (ocs_node_t *node, ocs_io_t *io, uint32_t lun, void *cdb, uint32_t cdb_len, ocs_scsi_dif_info_t *dif_info, ocs_scsi_sgl_t *sgl, uint32_t sgl_count, uint32_t wire_len, uint32_t first_burst, ocs_scsi_rsp_io_cb_t cb, void *arg)
 Initiate initiator write IO. More...
 
int32_t ocs_scsi_send_tmf (ocs_node_t *node, ocs_io_t *io, ocs_io_t *io_to_abort, uint32_t lun, ocs_scsi_tmf_cmd_e tmf, ocs_scsi_sgl_t *sgl, uint32_t sgl_count, uint32_t len, ocs_scsi_rsp_io_cb_t cb, void *arg)
 Initiate initiator task management operation. More...
 
int32_t ocs_scsi_send_nodata_io (ocs_node_t *node, ocs_io_t *io, uint32_t lun, void *cdb, uint32_t cdb_len, ocs_scsi_rsp_io_cb_t cb, void *arg)
 Initiate initiator SCSI command with no data. More...
 
void ocs_scsi_del_target_complete (ocs_node_t *node)
 Notify that delete target is complete. More...
 
int32_t ocs_scsi_get_block_vaddr (ocs_io_t *io, uint64_t blocknumber, ocs_scsi_vaddr_len_t addrlen[], uint32_t max_addrlen, void **dif_vaddr)
 Return address of data and DIF data given a block in the target. More...
 
void ocs_scsi_ini_ddump (ocs_textbuf_t *textbuf, ocs_scsi_ddump_type_e type, void *obj)
 
void ocs_scsi_tgt_ddump (ocs_textbuf_t *textbuf, ocs_scsi_ddump_type_e type, void *obj)
 
void ocs_scsi_tgt_cancel_io (ocs_t *ocs)
 
void ocs_scsi_tgt_sess_del_wait (ocs_sport_t *sport)
 
void ocs_scsi_tgt_vport_node_shutdown (ocs_sport_t *sport)
 
void ocs_scsi_tgt_count_sessions (ocs_t *ocs, uint64_t wwpn)
 
int32_t ocs_scsi_tgt_port_online (ocs_t *ocs)
 

Macro Details

#define DIF_SIZE   8

Definition at line 179 of file ocs_scsi.h.

#define OCS_SCSI_CALL_ASYNC   1

Definition at line 250 of file ocs_scsi.h.

#define OCS_SCSI_CALL_COMPLETE   0

Definition at line 249 of file ocs_scsi.h.

#define OCS_SCSI_CMD_ACA   (1U << 6)

Definition at line 53 of file ocs_scsi.h.

#define OCS_SCSI_CMD_DIR_IN   (1U << 0)

Definition at line 47 of file ocs_scsi.h.

#define OCS_SCSI_CMD_DIR_OUT   (1U << 1)

Definition at line 48 of file ocs_scsi.h.

#define OCS_SCSI_CMD_HEAD_OF_QUEUE   (1U << 3)

Definition at line 50 of file ocs_scsi.h.

#define OCS_SCSI_CMD_ORDERED   (1U << 4)

Definition at line 51 of file ocs_scsi.h.

#define OCS_SCSI_CMD_SIMPLE   (1U << 2)

Definition at line 49 of file ocs_scsi.h.

#define OCS_SCSI_CMD_UNTAGGED   (1U << 5)

Definition at line 52 of file ocs_scsi.h.

#define OCS_SCSI_DIF_OPER_INSERT   OCS_SCSI_DIF_OPER_IN_NODIF_OUT_CRC

Definition at line 200 of file ocs_scsi.h.

#define OCS_SCSI_DIF_OPER_PASS_THRU   OCS_SCSI_DIF_OPER_IN_CRC_OUT_CRC

Definition at line 198 of file ocs_scsi.h.

#define OCS_SCSI_DIF_OPER_STRIP   OCS_SCSI_DIF_OPER_IN_CRC_OUT_NODIF

Definition at line 199 of file ocs_scsi.h.

#define OCS_SCSI_FIRST_BURST_ABORTED   (1U << 8)

Definition at line 55 of file ocs_scsi.h.

#define OCS_SCSI_FIRST_BURST_ERR   (1U << 7)

Definition at line 54 of file ocs_scsi.h.

#define OCS_SCSI_IO_ABORTED   (1U << 2) /* IO was aborted */

Definition at line 135 of file ocs_scsi.h.

#define OCS_SCSI_IO_CMPL   (1U << 0) /* IO completed */

Definition at line 133 of file ocs_scsi.h.

#define OCS_SCSI_IO_CMPL_RSP_SENT   (1U << 1) /* IO completed, response sent */

Definition at line 134 of file ocs_scsi.h.

#define OCS_SCSI_LAST_DATAPHASE   (1U << 0)

Definition at line 58 of file ocs_scsi.h.

#define OCS_SCSI_LOW_LATENCY   (1U << 2)

Definition at line 60 of file ocs_scsi.h.

#define OCS_SCSI_MAX_CDB_LEN   128

Definition at line 62 of file ocs_scsi.h.

#define OCS_SCSI_NO_AUTO_RESPONSE   (1U << 1)

Definition at line 59 of file ocs_scsi.h.

#define OCS_SCSI_SNS_BUF_VALID (   sense)    ((sense) && (0x70 == (((const uint8_t *)(sense))[0] & 0x70)))

Definition at line 63 of file ocs_scsi.h.

#define OCS_SCSI_WQ_CLASS (   x)    ((x & OCS_SCSI_WQ_CLASS_MASK) << OCS_SCSI_WQ_CLASS_SHIFT)

Definition at line 73 of file ocs_scsi.h.

#define OCS_SCSI_WQ_CLASS_LOW_LATENCY   (1)

Definition at line 75 of file ocs_scsi.h.

#define OCS_SCSI_WQ_CLASS_MASK   (0xf << OCS_SCSI_WQ_CLASS_SHIFT)

Definition at line 72 of file ocs_scsi.h.

#define OCS_SCSI_WQ_CLASS_SHIFT   (20)

Definition at line 71 of file ocs_scsi.h.

#define OCS_SCSI_WQ_STEERING_CLASS   (0 << OCS_SCSI_WQ_STEERING_SHIFT)

Definition at line 67 of file ocs_scsi.h.

#define OCS_SCSI_WQ_STEERING_CPU   (2 << OCS_SCSI_WQ_STEERING_SHIFT)

Definition at line 69 of file ocs_scsi.h.

#define OCS_SCSI_WQ_STEERING_MASK   (0xf << OCS_SCSI_WQ_STEERING_SHIFT)

Definition at line 66 of file ocs_scsi.h.

#define OCS_SCSI_WQ_STEERING_REQUEST   (1 << OCS_SCSI_WQ_STEERING_SHIFT)

Definition at line 68 of file ocs_scsi.h.

#define OCS_SCSI_WQ_STEERING_SHIFT   (16)

Definition at line 65 of file ocs_scsi.h.

Type Details

typedef int32_t(* ocs_scsi_io_cb_t)(ocs_io_t *io, ocs_scsi_io_status_e status, uint32_t flags, void *arg)

Definition at line 125 of file ocs_scsi.h.

typedef int32_t(* ocs_scsi_rsp_io_cb_t)(ocs_io_t *io, ocs_scsi_io_status_e status, ocs_scsi_cmd_resp_t *rsp, uint32_t flags, void *arg)

Definition at line 129 of file ocs_scsi.h.

Enumeration Details

Enumerator
OCS_SCSI_DDUMP_DEVICE 
OCS_SCSI_DDUMP_DOMAIN 
OCS_SCSI_DDUMP_SPORT 
OCS_SCSI_DDUMP_NODE 
OCS_SCSI_DDUMP_IO 

Definition at line 366 of file ocs_scsi.h.

Enumerator
OCS_SCSI_INITIATOR_DELETED 
OCS_SCSI_INITIATOR_MISSING 

Definition at line 284 of file ocs_scsi.h.

Enumerator
OCS_SCSI_TARGET_DELETED 
OCS_SCSI_TARGET_MISSING 

Definition at line 343 of file ocs_scsi.h.

T10 DIF block sizes.

Enumerator
OCS_SCSI_DIF_BK_SIZE_512 
OCS_SCSI_DIF_BK_SIZE_1024 
OCS_SCSI_DIF_BK_SIZE_2048 
OCS_SCSI_DIF_BK_SIZE_4096 
OCS_SCSI_DIF_BK_SIZE_520 
OCS_SCSI_DIF_BK_SIZE_4104 

Definition at line 205 of file ocs_scsi.h.

T10 DIF operations.

WARNING: do not reorder or insert to this list without making appropriate changes in ocs_dif.c

Enumerator
OCS_SCSI_DIF_OPER_DISABLED 
OCS_SCSI_DIF_OPER_IN_NODIF_OUT_CRC 
OCS_SCSI_DIF_OPER_IN_CRC_OUT_NODIF 
OCS_SCSI_DIF_OPER_IN_NODIF_OUT_CHKSUM 
OCS_SCSI_DIF_OPER_IN_CHKSUM_OUT_NODIF 
OCS_SCSI_DIF_OPER_IN_CRC_OUT_CRC 
OCS_SCSI_DIF_OPER_IN_CHKSUM_OUT_CHKSUM 
OCS_SCSI_DIF_OPER_IN_CRC_OUT_CHKSUM 
OCS_SCSI_DIF_OPER_IN_CHKSUM_OUT_CRC 
OCS_SCSI_DIF_OPER_IN_RAW_OUT_RAW 

Definition at line 186 of file ocs_scsi.h.

Enumerator
OCS_SCSI_IO_ROLE_ORIGINATOR 
OCS_SCSI_IO_ROLE_RESPONDER 

Definition at line 254 of file ocs_scsi.h.

Enumerator
OCS_SCSI_STATUS_GOOD 
OCS_SCSI_STATUS_ABORTED 
OCS_SCSI_STATUS_ERROR 
OCS_SCSI_STATUS_DIF_GUARD_ERROR 
OCS_SCSI_STATUS_DIF_REF_TAG_ERROR 
OCS_SCSI_STATUS_DIF_APP_TAG_ERROR 
OCS_SCSI_STATUS_DIF_UNKNOWN_ERROR 
OCS_SCSI_STATUS_PROTOCOL_CRC_ERROR 
OCS_SCSI_STATUS_NO_IO 
OCS_SCSI_STATUS_ABORT_IN_PROGRESS 
OCS_SCSI_STATUS_CHECK_RESPONSE 
OCS_SCSI_STATUS_COMMAND_TIMEOUT 
OCS_SCSI_STATUS_TIMEDOUT_AND_ABORTED 
OCS_SCSI_STATUS_SHUTDOWN 
OCS_SCSI_STATUS_NEXUS_LOST 

Definition at line 105 of file ocs_scsi.h.

property names for ocs_scsi_get_property() functions

Enumerator
OCS_SCSI_MAX_SGE 
OCS_SCSI_MAX_SGL 
OCS_SCSI_WWNN 
OCS_SCSI_WWPN 
OCS_SCSI_SERIALNUMBER 
OCS_SCSI_PARTNUMBER 
OCS_SCSI_PORTNUM 
OCS_SCSI_BIOS_VERSION_STRING 
OCS_SCSI_MAX_IOS 
OCS_SCSI_DIF_CAPABLE 
OCS_SCSI_DIF_MULTI_SEPARATE 
OCS_SCSI_MAX_FIRST_BURST 
OCS_SCSI_ENABLE_TASK_SET_FULL 

Definition at line 163 of file ocs_scsi.h.

Enumerator
OCS_SCSI_TMF_ABORT_TASK 
OCS_SCSI_TMF_QUERY_TASK_SET 
OCS_SCSI_TMF_ABORT_TASK_SET 
OCS_SCSI_TMF_CLEAR_TASK_SET 
OCS_SCSI_TMF_QUERY_ASYNCHRONOUS_EVENT 
OCS_SCSI_TMF_LOGICAL_UNIT_RESET 
OCS_SCSI_TMF_CLEAR_ACA 
OCS_SCSI_TMF_TARGET_RESET 

Definition at line 138 of file ocs_scsi.h.

Enumerator
OCS_SCSI_TMF_FUNCTION_COMPLETE 
OCS_SCSI_TMF_FUNCTION_SUCCEEDED 
OCS_SCSI_TMF_FUNCTION_IO_NOT_FOUND 
OCS_SCSI_TMF_FUNCTION_REJECTED 
OCS_SCSI_TMF_INCORRECT_LOGICAL_UNIT_NUMBER 
OCS_SCSI_TMF_SERVICE_DELIVERY 

Definition at line 150 of file ocs_scsi.h.

Function Details

ocs_domain_t* ocs_domain_get_instance ( ocs_t *  ocs,
uint32_t  index 
)

Return a pointer to the domain, given the instance index.

Description

A pointer to the domain context, given by the index, is returned.

Parameters
ocsPointer to the driver instance context.
indexInstance index.
Returns
Returns a pointer to the domain; or NULL.

Definition at line 414 of file ocs_domain.c.

void ocs_get_os_host_name ( ocs_t *  ocs,
void *  os_ver_name_str,
size_t  size 
)
void ocs_get_os_version_and_name ( ocs_t *  ocs,
void *  os_ver_name_str,
size_t  size 
)
int32_t ocs_scsi_get_block_vaddr ( ocs_io_t *  io,
uint64_t  blocknumber,
ocs_scsi_vaddr_len_t  addrlen[],
uint32_t  max_addrlen,
void **  dif_vaddr 
)

Return address of data and DIF data given a block in the target.

Description
The virtual addresses of the data block and DIF block are returned for a given lba in the target.
Parameters
ioPointer to the IO context.
blocknumberThe SCSI logical block address.
addrlenArray of address length pairs.
max_addrlenMaximum number of addrlen pairs to return.
dif_vaddrPointer to location to store virtual address of DIF block.
Returns
Returns number of addrlen pairs returned, or a negative value for error.

Definition at line 1269 of file ocs_ramd.c.

void ocs_scsi_get_host_name ( ocs_t *  ocs,
void *  host_name,
size_t  size 
)
int32_t ocs_scsi_host_ml_registered ( ocs_t *  ocs)
int32_t ocs_scsi_host_update_supported_speed ( ocs_t *  ocs)

Definition at line 175 of file ocs_ini_stub.c.

void ocs_scsi_ini_ddump ( ocs_textbuf_t *  textbuf,
ocs_scsi_ddump_type_e  type,
void *  obj 
)

Definition at line 266 of file ocs_ini_stub.c.

void ocs_scsi_ini_del_sport ( ocs_sport_t *  sport)

Definition at line 209 of file ocs_ini_stub.c.

int32_t ocs_scsi_ini_driver_exit ( int32_t  initiator)

initiator client exit

Description
Called by OS driver-wide cleanup/exit code to cleanup initiator client.
Parameters
initiatorTRUE for initiator mode
Returns
returns 0 for success, a negative error code value for failure.

Definition at line 103 of file ocs_ini_stub.c.

int32_t ocs_scsi_ini_driver_init ( int32_t  initiator)

Initialize initiator client.

Description
Called by OS initialization code to initialize initiator client. This is called prior to any PCI device enumeration.
Parameters
initiatorTRUE for initiator mode
Returns
Returns 0 on success, or a negative error code value on failure.

Definition at line 51 of file ocs_ini_stub.c.

int32_t ocs_scsi_ini_io_exit ( ocs_io_t *  io)

Uninitialize SCSI IO.

Description
Uninitialize initiator client private data in a SCSI io object.
Parameters
ioPointer to SCSI IO object.
Returns
Returns 0 on success, a negative error code value on failure.

Definition at line 85 of file ocs_ini_stub.c.

int32_t ocs_scsi_ini_io_init ( ocs_io_t *  io)

Initialize SCSI IO.

Description
Initialize SCSI IO, this function is called once per IO during IO pool allocation so that the initiator client may initialize any of its own private data.
Parameters
ioPointer to SCSI IO object.
Returns
Returns 0 on success, a negative error code value on failure.

Definition at line 69 of file ocs_ini_stub.c.

int32_t ocs_scsi_ini_new_sport ( ocs_sport_t *  sport)

Definition at line 203 of file ocs_ini_stub.c.

int32_t ocs_scsi_recv_cmd ( ocs_io_t *  io,
uint32_t  lun,
uint8_t *  cdb,
uint32_t  cdb_len,
uint32_t  flags 
)

Definition at line 270 of file ocs_ramd_thread.c.

int32_t ocs_scsi_recv_wr_data ( ocs_io_t *  io,
uint32_t  flags,
ocs_scsi_dif_info_t *  dif_info,
ocs_scsi_sgl_t *  sgl,
uint32_t  sgl_count,
uint64_t  wire_len,
ocs_scsi_io_cb_t  cb,
void *  arg 
)

Definition at line 1639 of file ocs_scsi.c.

void ocs_scsi_register_bounce ( ocs_t *  ocs,
void(*)(void(*fctn)(void *arg), void *arg, uint32_t s_id, uint32_t d_id, uint32_t ox_id)  fctn 
)

Register bounce callback for multi-threading.

Description
Register the back end bounce function.
Parameters
ocsPointer to device object.
fctnFunction pointer of bounce function.
Returns
None.

Definition at line 3023 of file ocs_scsi.c.

int32_t ocs_scsi_send_rd_data ( ocs_io_t *  io,
uint32_t  flags,
ocs_scsi_dif_info_t *  dif_info,
ocs_scsi_sgl_t *  sgl,
uint32_t  sgl_count,
uint64_t  wire_len,
ocs_scsi_io_cb_t  cb,
void *  arg 
)

Definition at line 1629 of file ocs_scsi.c.

void ocs_scsi_tgt_cancel_io ( ocs_t *  ocs)
void ocs_scsi_tgt_count_sessions ( ocs_t *  ocs,
uint64_t  wwpn 
)
void ocs_scsi_tgt_ddump ( ocs_textbuf_t *  textbuf,
ocs_scsi_ddump_type_e  type,
void *  obj 
)

Definition at line 6580 of file ocs_ramd.c.

int32_t ocs_scsi_tgt_io_exit ( ocs_io_t *  io)

Un-initialize SCSI IO.

Description
Un-initialize target server private data in a SCSI io object.
Parameters
ioPointer to SCSI IO object.
Returns
Returns 0 on success, or a negative error code value on failure.

Definition at line 450 of file ocs_ramd.c.

int32_t ocs_scsi_tgt_io_init ( ocs_io_t *  io)

Initialize SCSI IO.

Description
Initialize SCSI IO, this function is called once per IO during IO pool allocation so that the target server may initialize any of its own private data.
Parameters
ioPointer to SCSI IO object.
Returns
returns 0 for success, a negative error code value for failure.

Definition at line 433 of file ocs_ramd.c.

uint32_t ocs_scsi_tgt_io_state ( ocs_io_t *  io)

Set SCST IO state.

Parameters
iopointer to SCSI IO object
stateto be set
Returns
TGT iostate

Definition at line 415 of file ocs_ramd.c.

int32_t ocs_scsi_tgt_port_online ( ocs_t *  ocs)
void ocs_scsi_tgt_sess_del_wait ( ocs_sport_t *  sport)
void ocs_scsi_tgt_vport_node_shutdown ( ocs_sport_t *  sport)
void ocs_scsi_update_first_burst_transferred ( ocs_io_t *  io,
uint32_t  transferred 
)

Update transferred count.

Description
Updates io->transferred, as required when using first burst, when the amount of first burst data processed differs from the amount of first burst data received.
Parameters
ioPointer to the io object.
transferredNumber of bytes transferred out of first burst buffers.
Returns
None.

Definition at line 3006 of file ocs_scsi.c.