OCS Linux SCSI API base driver implementation.
Definition in file ocs_scsi.c.
|
| static int32_t | ocs_target_send_bls_resp (ocs_io_t *io, ocs_scsi_io_cb_t cb, void *arg) |
| | Complete abort request. More...
|
| |
| static int32_t | ocs_scsi_abort_io_cb (struct ocs_hal_io_s *hio, ocs_remote_node_t *rnode, uint32_t len, int32_t status, uint32_t ext_status, void *arg) |
| | Callback for an aborted IO. More...
|
| |
| static void | ocs_scsi_io_free_ovfl (ocs_io_t *io) |
| | Free overflow SGL. More...
|
| |
| static uint32_t | ocs_scsi_count_sgls (ocs_hal_dif_info_t *hal_dif, ocs_scsi_sgl_t *sgl, uint32_t sgl_count) |
| | Return count of SGE's required for request. More...
|
| |
| static int | ocs_scsi_dif_guard_is_crc (uint8_t direction, ocs_hal_dif_info_t *dif_info) |
| | Determine if an IO is using CRC for DIF guard format. More...
|
| |
| static ocs_scsi_io_status_e | ocs_scsi_dif_check_unknown (ocs_io_t *io, uint32_t length, uint32_t check_length, int is_crc) |
| | Check a block and DIF data, computing the appropriate SCSI status. More...
|
| |
| static uint32_t | ocs_scsi_dif_check_guard (ocs_hal_dif_info_t *dif_info, ocs_scsi_vaddr_len_t addrlen[], uint32_t addrlen_count, ocs_dif_t *dif, int is_crc) |
| | Check the block guard of block data. More...
|
| |
| static uint32_t | ocs_scsi_dif_check_app_tag (ocs_t *ocs, ocs_hal_dif_info_t *dif_info, uint16_t exp_app_tag, ocs_dif_t *dif) |
| | Check the app tag of dif data. More...
|
| |
| static uint32_t | ocs_scsi_dif_check_ref_tag (ocs_t *ocs, ocs_hal_dif_info_t *dif_info, uint32_t exp_ref_tag, ocs_dif_t *dif) |
| | Check the ref tag of dif data. More...
|
| |
| static int32_t | ocs_scsi_convert_dif_info (ocs_t *ocs, ocs_scsi_dif_info_t *scsi_dif_info, ocs_hal_dif_info_t *hal_dif_info) |
| | Convert SCSI API T10 DIF information into the FC HAL format. More...
|
| |
| static int32_t | ocs_scsi_io_dispatch_hal_io (ocs_io_t *io, ocs_hal_io_t *hio) |
| | Dispatch IO. More...
|
| |
| static int32_t | ocs_scsi_io_dispatch_no_hal_io (ocs_io_t *io) |
| | Dispatch IO. More...
|
| |
| static void | _ocs_scsi_io_free (void *arg) |
| | Free a SCSI IO context (internal). More...
|
| |
| static uint32_t | ocs_fc_getbe32 (void *p) |
| | Returns a big-endian 32-bit value given a pointer. More...
|
| |
| 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...
|
| |
| static int32_t | ocs_scsi_send_io (ocs_hal_io_type_e type, ocs_node_t *node, ocs_io_t *io, uint32_t lun, ocs_scsi_tmf_cmd_e tmf, uint8_t *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) |
| | Send an FCP IO. More...
|
| |
| static void | ocs_target_io_cb (ocs_hal_io_t *hio, ocs_remote_node_t *rnode, uint32_t length, int32_t status, uint32_t ext_status, void *app) |
| | Target response completion callback. More...
|
| |
| static int32_t | ocs_scsi_build_sgls (ocs_hal_t *hal, ocs_hal_io_t *hio, ocs_hal_dif_info_t *hal_dif, ocs_scsi_sgl_t *sgl, uint32_t sgl_count, ocs_hal_io_type_e type) |
| |
| static void | ocs_log_sgl (ocs_io_t *io) |
| | This function logs the SGLs for an IO. More...
|
| |
| static int32_t | ocs_scsi_check_pending_async_cb (ocs_hal_t *hal, int32_t status, uint8_t *mqe, void *arg) |
| | Check pending error asynchronous callback function. More...
|
| |
| void | ocs_scsi_check_pending (ocs_t *ocs) |
| | Check for pending IOs to dispatch. More...
|
| |
| int32_t | ocs_scsi_io_dispatch (ocs_io_t *io, void *cb) |
| | Attempt to dispatch a non-abort IO. More...
|
| |
| int32_t | ocs_scsi_io_dispatch_abort (ocs_io_t *io, void *cb) |
| | Attempt to dispatch an Abort IO. More...
|
| |
| static int32_t | ocs_scsi_xfer_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 xwire_len, ocs_hal_io_type_e type, int enable_ar, ocs_scsi_io_cb_t cb, void *arg) |
| | Send read/write data. 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 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 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...
|
| |
| static int32_t | ocs_target_abort_cb (ocs_hal_io_t *hio, ocs_remote_node_t *rnode, uint32_t length, int32_t status, uint32_t ext_status, void *app) |
| | Process target abort callback. 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...
|
| |
| static int32_t | ocs_target_bls_resp_cb (ocs_hal_io_t *hio, ocs_remote_node_t *rnode, uint32_t length, int32_t status, uint32_t ext_status, void *app) |
| | Process target BLS response callback. More...
|
| |
| void | ocs_scsi_io_complete (ocs_io_t *io) |
| | Notify the base driver that the IO is complete. More...
|
| |
| static void | ocs_initiator_io_cb (ocs_hal_io_t *hio, ocs_remote_node_t *rnode, uint32_t length, int32_t status, uint32_t ext_status, void *app) |
| | Handle initiator IO completion. 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_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...
|
| |
| 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...
|
| |
| 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_del_target_complete (ocs_node_t *node) |
| | Notify that delete target is complete. More...
|
| |
| void | ocs_scsi_update_first_burst_transferred (ocs_io_t *io, uint32_t transferred) |
| | Update transferred count. 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...
|
| |