Functions | |
| static int32_t | ocs_unsol_abort_cb (ocs_hal_io_t *hio, ocs_remote_node_t *rnode, uint32_t len, int32_t status, uint32_t ext, void *arg) |
| Callback function when aborting a port owned XRI exchanges. More... | |
| static void | ocs_port_owned_abort (ocs_t *ocs, ocs_hal_io_t *hio) |
| Abort either a RQ Pair auto XFER RDY XRI. More... | |
| int32_t | ocs_unsolicited_cb (void *arg, ocs_hal_sequence_t *seq) |
| Handle unsolicited FC frames. More... | |
| static int32_t | ocs_unsol_process (ocs_t *ocs, ocs_hal_sequence_t *seq) |
| Handle unsolicited FC frames. More... | |
| int32_t | ocs_process_node_pending (ocs_node_t *node) |
| Process pending frames queued to the given node. More... | |
| int32_t | ocs_domain_process_pending (ocs_domain_t *domain) |
| Process pending frames queued to the given domain. More... | |
| static int32_t | ocs_purge_pending (ocs_t *ocs, ocs_list_t *pend_list, ocs_lock_t *list_lock) |
| Purge given pending list. More... | |
| int32_t | ocs_node_purge_pending (ocs_node_t *node) |
| Purge node's pending (queued) frames. More... | |
| int32_t | ocs_domain_purge_pending (ocs_domain_t *domain) |
| Purge xport's pending (queued) frames. More... | |
| static uint8_t | ocs_node_frames_held (void *arg) |
| Check if node's pending frames are held. More... | |
| static uint8_t | ocs_domain_frames_held (void *arg) |
| Check if domain's pending frames are held. More... | |
| void | ocs_domain_hold_frames (ocs_domain_t *domain) |
| Globally (at xport level) hold unsolicited frames. More... | |
| void | ocs_domain_accept_frames (ocs_domain_t *domain) |
| Clear hold on unsolicited frames. More... | |
| static int32_t | ocs_domain_dispatch_frame (void *arg, ocs_hal_sequence_t *seq) |
| Dispatch unsolicited FC frame. More... | |
| static int32_t | ocs_node_dispatch_frame (void *arg, ocs_hal_sequence_t *seq) |
| Dispatch a frame. More... | |
| static void | ocs_dispatch_unsolicited_tmf (ocs_io_t *io, uint8_t task_management_flags, ocs_node_t *node, uint32_t lun) |
| Dispatch unsolicited FCP frames (RQ Pair). More... | |
| static int32_t | ocs_dispatch_fcp_cmd (ocs_node_t *node, ocs_hal_sequence_t *seq) |
| Dispatch unsolicited FCP_CMND frame. More... | |
| static int32_t | ocs_dispatch_tow_fcp_cmd (ocs_node_t *node, ocs_hal_sequence_t *seq) |
| Dispatch unsolicited FCP_CMND frame. More... | |
| static int32_t | ocs_dispatch_fcp_data (ocs_node_t *node, ocs_hal_sequence_t *seq) |
| Dispatch FCP data frames for TOW. More... | |
| static int32_t | ocs_fc_tmf_rejected_cb (ocs_io_t *io, ocs_scsi_io_status_e scsi_status, uint32_t flags, void *arg) |
| Handle the callback for the TMF FUNCTION_REJECTED response. More... | |
| static uint32_t | ocs_fc_decode_lun (uint8_t *lu) |
| Decode a LU Number according to SAM. More... | |
|
static |
Dispatch unsolicited FCP_CMND frame.
Dispatch unsolicited FCP_CMND frame. RQ Pair mode - always used for RQ Pair mode since first burst is not supported.
| node | Node that originated the frame. |
| seq | Header/payload sequence buffers. |
Definition at line 894 of file ocs_unsol.c.
|
static |
Dispatch FCP data frames for TOW.
Dispatch unsolicited FCP data frames containing sequence initiative transferred (SIT=1).
| node | Node that originated the frame. |
| seq | Header/payload sequence buffers. |
Definition at line 1082 of file ocs_unsol.c.
|
static |
Dispatch unsolicited FCP_CMND frame.
Dispatch unsolicited FCP_CMND frame that is assisted with TOW.
| node | Node that originated the frame. |
| seq | Header/payload sequence buffers. |
Definition at line 991 of file ocs_unsol.c.
|
static |
Dispatch unsolicited FCP frames (RQ Pair).
Dispatch unsolicited FCP frames (called from the device node state machine).
| io | Pointer to the IO context. |
| task_management_flags | Task management flags from the FCP_CMND frame. |
| node | Node that originated the frame. |
| lun | 32-bit LUN from FCP_CMND frame. |
Definition at line 770 of file ocs_unsol.c.
| void ocs_domain_accept_frames | ( | ocs_domain_t * | domain | ) |
Clear hold on unsolicited frames.
This function clears the hold on processing unsolicited FC frames queued to the domain pending list.
| domain | Pointer to domain object. |
Definition at line 546 of file ocs_unsol.c.
|
static |
Dispatch unsolicited FC frame.
This function processes an unsolicited FC frame queued at the domain level.
| arg | Pointer to ocs object. |
| seq | Header/payload sequence buffers. |
Definition at line 578 of file ocs_unsol.c.
|
static |
Check if domain's pending frames are held.
| arg | Domain for which the pending frame hold condition is checked. |
Definition at line 492 of file ocs_unsol.c.
| void ocs_domain_hold_frames | ( | ocs_domain_t * | domain | ) |
Globally (at xport level) hold unsolicited frames.
This function places a hold on processing unsolicited FC frames queued to the xport pending list.
| domain | Pointer to domain object. |
Definition at line 518 of file ocs_unsol.c.
| int32_t ocs_domain_process_pending | ( | ocs_domain_t * | domain | ) |
Process pending frames queued to the given domain.
Frames that are queued for the domain are dispatched and returned to the RQ.
| domain | Domain of the queued frames that are to be dispatched. |
Definition at line 336 of file ocs_unsol.c.
| int32_t ocs_domain_purge_pending | ( | ocs_domain_t * | domain | ) |
Purge xport's pending (queued) frames.
Frames that are queued for the xport are discarded and returned to the RQ.
| domain | Pointer to domain object. |
Definition at line 450 of file ocs_unsol.c.
|
static |
Decode a LU Number according to SAM.
Decode a LU Number according to SAM. Note: Only handles a single-level LU.
| lu | Pointer to the LU data. |
Definition at line 1188 of file ocs_unsol.c.
|
static |
Handle the callback for the TMF FUNCTION_REJECTED response.
Handle the callback of a send TMF FUNCTION_REJECTED response request.
| io | Pointer to the IO context. |
| scsi_status | Status of the response. |
| flags | Callback flags. |
| arg | Callback argument. |
Definition at line 1166 of file ocs_unsol.c.
|
static |
Dispatch a frame.
A frame is dispatched from the node to the handler.
| arg | Node that originated the frame. |
| seq | Header/payload sequence buffers. |
Definition at line 681 of file ocs_unsol.c.
|
static |
Check if node's pending frames are held.
| arg | Node for which the pending frame hold condition is checked. |
Definition at line 474 of file ocs_unsol.c.
| int32_t ocs_node_purge_pending | ( | ocs_node_t * | node | ) |
Purge node's pending (queued) frames.
Frames that are queued for the node are discarded and returned to the RQ.
| node | Node of the queued frames that are to be discarded. |
Definition at line 431 of file ocs_unsol.c.
|
static |
Abort either a RQ Pair auto XFER RDY XRI.
Definition at line 136 of file ocs_unsol.c.
| int32_t ocs_process_node_pending | ( | ocs_node_t * | node | ) |
Process pending frames queued to the given node.
Frames that are queued for the node are dispatched and returned to the RQ.
| node | Node of the queued frames that are to be dispatched. |
Definition at line 278 of file ocs_unsol.c.
|
static |
Purge given pending list.
Frames that are queued on the given pending list are discarded and returned to the RQ.
| ocs | Pointer to ocs object. |
| pend_list | Pending list to be purged. |
| list_lock | Lock that protects pending list. |
Definition at line 397 of file ocs_unsol.c.
|
static |
Callback function when aborting a port owned XRI exchanges.
Definition at line 119 of file ocs_unsol.c.
|
static |
Handle unsolicited FC frames.
This function is called either from ocs_unsolicited_cb() or ocs_unsol_rq_thread().
| ocs | Pointer to the ocs structure. |
| seq | Header/payload sequence buffers. |
Definition at line 203 of file ocs_unsol.c.
| int32_t ocs_unsolicited_cb | ( | void * | arg, |
| ocs_hal_sequence_t * | seq | ||
| ) |
Handle unsolicited FC frames.
This function is called from the HAL with unsolicited FC frames (FCP, ELS, BLS, etc.).
| arg | Application-specified callback data. |
| seq | Header/payload sequence buffers. |
Definition at line 164 of file ocs_unsol.c.