Functions | |
| static void | ocs_io_transition (ocs_io_t *els, ocs_sm_function_t state, void *data) |
| ELS state machine transition wrapper. More... | |
| void | ocs_els_post_event (ocs_io_t *els, ocs_sm_event_t evt, void *data) |
| ELS state machine post event wrapper. More... | |
| ocs_io_t * | ocs_els_io_alloc (ocs_node_t *node, uint32_t reqlen, ocs_els_role_e role) |
| Allocate an IO structure for an ELS IO context. More... | |
| ocs_io_t * | ocs_els_io_alloc_size (ocs_node_t *node, uint32_t reqlen, uint32_t rsplen, ocs_els_role_e role) |
| Allocate an IO structure for an ELS IO context. More... | |
| void | ocs_els_io_free (ocs_io_t *els) |
| Free IO structure for an ELS IO context. More... | |
| static void | _ocs_els_io_free (void *arg) |
| Free IO structure for an ELS IO context. More... | |
| static void | ocs_els_make_active (ocs_io_t *els) |
| Make ELS IO active. More... | |
| static int32_t | ocs_els_send (ocs_io_t *els, uint32_t reqlen, uint32_t timeout_sec, ocs_hal_srrs_cb_t cb) |
| Send the ELS command. More... | |
| static int32_t | ocs_els_send_rsp (ocs_io_t *els, uint32_t rsplen) |
| Send the ELS response. More... | |
| static int32_t | ocs_els_req_cb (ocs_hal_io_t *hio, ocs_remote_node_t *rnode, uint32_t length, int32_t status, uint32_t ext_status, void *arg) |
| Handle ELS IO request completions. More... | |
| static int32_t | ocs_els_acc_cb (ocs_hal_io_t *hio, ocs_remote_node_t *rnode, uint32_t length, int32_t status, uint32_t ext_status, void *arg) |
| Handle ELS IO accept/response completions. More... | |
| ocs_io_t * | ocs_send_plogi (ocs_node_t *node, uint32_t timeout_sec, uint32_t retries, void(*cb)(ocs_node_t *node, ocs_node_cb_t *cbdata, void *arg), void *cbarg) |
| Format and send a PLOGI ELS command. More... | |
| ocs_io_t * | ocs_send_flogi (ocs_node_t *node, uint32_t timeout_sec, uint32_t retries, els_cb_t cb, void *cbarg) |
| Format and send a FLOGI ELS command. More... | |
| ocs_io_t * | ocs_send_fdisc (ocs_node_t *node, uint32_t timeout_sec, uint32_t retries, els_cb_t cb, void *cbarg) |
| Format and send a FDISC ELS command. More... | |
| ocs_io_t * | ocs_send_prli (ocs_node_t *node, uint32_t timeout_sec, uint32_t retries, els_cb_t cb, void *cbarg) |
| Send a PRLI ELS command. More... | |
| ocs_io_t * | ocs_send_prlo (ocs_node_t *node, uint32_t timeout_sec, uint32_t retries, els_cb_t cb, void *cbarg) |
| Send a PRLO ELS command. More... | |
| ocs_io_t * | ocs_send_logo (ocs_node_t *node, uint32_t timeout_sec, uint32_t retries, els_cb_t cb, void *cbarg) |
| Send a LOGO ELS command. More... | |
| ocs_io_t * | ocs_send_adisc (ocs_node_t *node, uint32_t timeout_sec, uint32_t retries, els_cb_t cb, void *cbarg) |
| Send an ADISC ELS command. More... | |
| ocs_io_t * | ocs_send_pdisc (ocs_node_t *node, uint32_t timeout_sec, uint32_t retries, els_cb_t cb, void *cbarg) |
| Send a PDISC ELS command. More... | |
| ocs_io_t * | ocs_send_scr (ocs_node_t *node, uint32_t timeout_sec, uint32_t retries, els_cb_t cb, void *cbarg) |
| Send an SCR ELS command. More... | |
| ocs_io_t * | ocs_send_rrq (ocs_node_t *node, uint32_t timeout_sec, uint32_t retries, els_cb_t cb, void *cbarg) |
| Send an RRQ ELS command. More... | |
| ocs_io_t * | ocs_send_rscn (ocs_node_t *node, uint32_t timeout_sec, uint32_t retries, void *port_ids, uint32_t port_ids_count, els_cb_t cb, void *cbarg) |
| Send an RSCN ELS command. More... | |
| ocs_io_t * | ocs_send_plogi_acc (ocs_io_t *io, uint32_t ox_id, els_cb_t cb, void *cbarg) |
| Send a PLOGI accept response. More... | |
| ocs_io_t * | ocs_send_flogi_p2p_acc (ocs_io_t *io, uint32_t ox_id, uint32_t s_id, els_cb_t cb, void *cbarg) |
| Send an FLOGI accept response for point-to-point negotiation. More... | |
| ocs_io_t * | ocs_send_prli_acc (ocs_io_t *io, uint32_t ox_id, uint8_t fc_type, els_cb_t cb, void *cbarg) |
| Send a PRLI accept response. More... | |
| ocs_io_t * | ocs_send_prlo_acc (ocs_io_t *io, uint32_t ox_id, uint8_t fc_type, els_cb_t cb, void *cbarg) |
| Send a PRLO accept response. More... | |
| ocs_io_t * | ocs_send_ls_acc (ocs_io_t *io, uint32_t ox_id, els_cb_t cb, void *cbarg) |
| Send a generic LS_ACC response without a payload. More... | |
| ocs_io_t * | ocs_send_logo_acc (ocs_io_t *io, uint32_t ox_id, els_cb_t cb, void *cbarg) |
| Send a LOGO accept response. More... | |
| ocs_io_t * | ocs_send_adisc_acc (ocs_io_t *io, uint32_t ox_id, els_cb_t cb, void *cbarg) |
| Send an ADISC accept response. More... | |
| ocs_io_t * | ocs_ns_send_rftid (ocs_node_t *node, uint32_t timeout_sec, uint32_t retries, els_cb_t cb, void *cbarg) |
| Send a RFTID CT request. More... | |
| ocs_io_t * | ocs_ns_send_rffid (ocs_node_t *node, uint8_t fc_type, uint32_t timeout_sec, uint32_t retries, els_cb_t cb, void *cbarg) |
| Send a RFFID CT request. More... | |
| ocs_io_t * | ocs_ns_send_gidpt (ocs_node_t *node, uint32_t timeout_sec, uint32_t retries, els_cb_t cb, void *cbarg) |
| Send a GIDPT CT request. More... | |
| ocs_io_t * | ocs_ns_send_ganxt (ocs_node_t *node, uint32_t timeout_sec, uint32_t retries, els_cb_t cb, void *cbarg, uint32_t port_id) |
| Send a GA_NEXT CT request. More... | |
| ocs_io_t * | ocs_fdmi_send_rhba (ocs_node_t *node, uint32_t timeout_sec, uint32_t retries, els_cb_t cb, void *cbarg) |
| Send a RHBA CT request. More... | |
| ocs_io_t * | ocs_fdmi_send_dereg_cmd (ocs_node_t *node, uint16_t dereg_code, uint32_t timeout_sec, uint32_t retries, els_cb_t cb, void *cbarg) |
| Send a FDMI dereg CT request. More... | |
| ocs_io_t * | ocs_fdmi_send_reg_port (ocs_node_t *node, int req_code, uint32_t timeout_sec, uint32_t retries, els_cb_t cb, void *cbarg) |
| Send a RPRT/RPA CT request. More... | |
| ocs_io_t * | ocs_fdmi_send_get_cmd (ocs_node_t *node, uint32_t timeout_sec, uint32_t retries, els_cb_t cb, void *cbarg, ocs_fdmi_get_cmd_req_info_t *req_info) |
| Send a GHRL CT request. More... | |
| ocs_io_t * | ocs_bls_send_acc_hdr (ocs_io_t *io, fc_header_t *hdr) |
| Send a BA_ACC given the request's FC header. More... | |
| static ocs_io_t * | ocs_bls_send_acc (ocs_io_t *io, uint32_t s_id, uint16_t ox_id, uint16_t rx_id) |
| Send a BLS BA_ACC response. More... | |
| static ocs_io_t * | ocs_bls_send_rjt (ocs_io_t *io, uint32_t s_id, uint16_t ox_id, uint16_t rx_id) |
| Send a BLS BA_RJT response. More... | |
|
static |
|
static |
Send a BLS BA_ACC response.
Construct a BLS BA_ACC response, and send to the node.
| io | Pointer to a SCSI IO object. |
| s_id | S_ID to use for the response. If UINT32_MAX, then use our SLI port (sport) S_ID. |
| ox_id | Originator exchange ID. |
| rx_id | Responder exchange ID. |
| ocs_io_t* ocs_bls_send_acc_hdr | ( | ocs_io_t * | io, |
| fc_header_t * | hdr | ||
| ) |
|
static |
Send a BLS BA_RJT response.
Construct a BLS BA_RJT response, and send to the node.
| io | Pointer to a SCSI IO object. |
| s_id | S_ID to use for the response. If UINT32_MAX, then use our SLI port (sport) S_ID. |
| ox_id | Originator exchange ID. |
| rx_id | Responder exchange ID. |
|
static |
Handle ELS IO accept/response completions.
This callback is used for several ELS send operations.
| hio | Pointer to the HAL IO context that completed. |
| rnode | Pointer to the remote node. |
| length | Length of the returned payload data. |
| status | Status of the completion. |
| ext_status | Extended status of the completion. |
| arg | Application-specific argument (generally a pointer to the ELS IO context). |
| ocs_io_t* ocs_els_io_alloc | ( | ocs_node_t * | node, |
| uint32_t | reqlen, | ||
| ocs_els_role_e | role | ||
| ) |
Allocate an IO structure for an ELS IO context.
Allocate an IO for an ELS context. Uses OCS_ELS_RSP_LEN as response size.
| node | node to associate ELS IO with |
| reqlen | Length of ELS request |
| role | Role of ELS (originator/responder) |
| ocs_io_t* ocs_els_io_alloc_size | ( | ocs_node_t * | node, |
| uint32_t | reqlen, | ||
| uint32_t | rsplen, | ||
| ocs_els_role_e | role | ||
| ) |
Allocate an IO structure for an ELS IO context.
Allocate an IO for an ELS context, allowing the caller to specify the size of the response.
| node | node to associate ELS IO with |
| reqlen | Length of ELS request |
| rsplen | Length of ELS response |
| role | Role of ELS (originator/responder) |
| void ocs_els_io_free | ( | ocs_io_t * | els | ) |
|
static |
| void ocs_els_post_event | ( | ocs_io_t * | els, |
| ocs_sm_event_t | evt, | ||
| void * | data | ||
| ) |
ELS state machine post event wrapper.
Post an event wrapper for the ELS state machine. This function grabs the node lock prior to posting the event.
| els | Pointer to the IO context. |
| evt | Event to process. |
| data | Data to pass in with the transition. |
|
static |
Handle ELS IO request completions.
This callback is used for several ELS send operations.
| hio | Pointer to the HAL IO context that completed. |
| rnode | Pointer to the remote node. |
| length | Length of the returned payload data. |
| status | Status of the completion. |
| ext_status | Extended status of the completion. |
| arg | Application-specific argument (generally a pointer to the ELS IO context). |
For ELS WQE completions, we seem to acquire the sport and node locks in a different order when compared to other code paths. So, acquire the sport lock here to avoid the deadlock.
FW returns the number of bytes received on the link in the WCQE, not the amount placed in the buffer. So, use this info to check if there was an overrun.
|
static |
Send the ELS command.
The command, given by the els IO context, is sent to the node that the IO was configured with, using ocs_hal_srrs_send(). Upon completion, the cb callback is invoked, with the application-specific argument set to the els IO context.
| els | Pointer to the IO context. |
| reqlen | Byte count in the payload to send. |
| timeout_sec | Command timeout, in seconds (0 -> 2*R_A_TOV). |
| cb | Completion callback. |
|
static |
Send the ELS response.
The ELS response, given by the els IO context, is sent to the node that the IO was configured with, using ocs_hal_srrs_send().
| els | Pointer to the IO context. |
| rsplen | Byte count in the payload to send. |
| ocs_io_t* ocs_fdmi_send_dereg_cmd | ( | ocs_node_t * | node, |
| uint16_t | dereg_code, | ||
| uint32_t | timeout_sec, | ||
| uint32_t | retries, | ||
| els_cb_t | cb, | ||
| void * | cbarg | ||
| ) |
Send a FDMI dereg CT request.
Construct an DHBA/DPRT CT request, and send to the node.
| node | Node to which the dereg request is sent. |
| timeout_sec | Time, in seconds, to wait before timing out the ELS. |
| retries | Number of times to retry errors before reporting a failure. |
| cb | Callback function. |
| cbarg | Callback function argument. |
| ocs_io_t* ocs_fdmi_send_get_cmd | ( | ocs_node_t * | node, |
| uint32_t | timeout_sec, | ||
| uint32_t | retries, | ||
| els_cb_t | cb, | ||
| void * | cbarg, | ||
| ocs_fdmi_get_cmd_req_info_t * | req_info | ||
| ) |
Send a GHRL CT request.
Construct a GHRL CT request, and send to the node.
| node | Node to which the GHRL request is sent. |
| timeout_sec | Time, in seconds, to wait before timing out the ELS. |
| retries | Number of times to retry errors before reporting a failure. |
| cb | Callback function. |
| cbarg | Callback function argument. |
| ocs_io_t* ocs_fdmi_send_reg_port | ( | ocs_node_t * | node, |
| int | req_code, | ||
| uint32_t | timeout_sec, | ||
| uint32_t | retries, | ||
| els_cb_t | cb, | ||
| void * | cbarg | ||
| ) |
Send a RPRT/RPA CT request.
Construct an RPRT/RPA CT request, and send to the node.
| node | Node to which the RPRT/RPA request is sent. command code(RPRT/RPA) |
| timeout_sec | Time, in seconds, to wait before timing out the ELS. |
| retries | Number of times to retry errors before reporting a failure. |
| cb | Callback function. |
| cbarg | Callback function argument. |
| ocs_io_t* ocs_fdmi_send_rhba | ( | ocs_node_t * | node, |
| uint32_t | timeout_sec, | ||
| uint32_t | retries, | ||
| els_cb_t | cb, | ||
| void * | cbarg | ||
| ) |
Send a RHBA CT request.
Construct an RHBA CT request, and send to the node.
| node | Node to which the RHBA request is sent. |
| timeout_sec | Time, in seconds, to wait before timing out the ELS. |
| retries | Number of times to retry errors before reporting a failure. |
| cb | Callback function. |
| cbarg | Callback function argument. |
|
static |
ELS state machine transition wrapper.
This function is the transition wrapper for the ELS state machine. It grabs the node lock prior to making the transition to protect against multiple threads accessing a particular ELS. For example, one thread transitioning from __els_init to __ocs_els_wait_resp and another thread (tasklet) handling the completion of that ELS request.
| els | Pointer to the IO context. |
| state | State to transition to. |
| data | Data to pass in with the transition. |
| ocs_io_t* ocs_ns_send_ganxt | ( | ocs_node_t * | node, |
| uint32_t | timeout_sec, | ||
| uint32_t | retries, | ||
| els_cb_t | cb, | ||
| void * | cbarg, | ||
| uint32_t | port_id | ||
| ) |
Send a GA_NEXT CT request.
Construct a GA_NEXT CT request, and send to the node.
| node | Node to which the GIDFT request is sent. |
| timeout_sec | Time, in seconds, to wait before timing out the ELS. |
| retries | Number of times to retry errors before reporting a failure. |
| cb | Callback function. |
| cbarg | Callback function argument. |
| ocs_io_t* ocs_ns_send_gidpt | ( | ocs_node_t * | node, |
| uint32_t | timeout_sec, | ||
| uint32_t | retries, | ||
| els_cb_t | cb, | ||
| void * | cbarg | ||
| ) |
Send a GIDPT CT request.
Construct a GIDPT CT request, and send to the node.
| node | Node to which the GIDPT request is sent. |
| timeout_sec | Time, in seconds, to wait before timing out the ELS. |
| retries | Number of times to retry errors before reporting a failure. |
| cb | Callback function. |
| cbarg | Callback function argument. |
| ocs_io_t* ocs_ns_send_rffid | ( | ocs_node_t * | node, |
| uint8_t | fc_type, | ||
| uint32_t | timeout_sec, | ||
| uint32_t | retries, | ||
| els_cb_t | cb, | ||
| void * | cbarg | ||
| ) |
Send a RFFID CT request.
Construct an RFFID CT request, and send to the node.
| node | Node to which the RFFID request is sent. |
| timeout_sec | Time, in seconds, to wait before timing out the ELS. |
| retries | Number of times to retry errors before reporting a failure. |
| cb | Callback function |
| cbarg | Callback function argument. |
| ocs_io_t* ocs_ns_send_rftid | ( | ocs_node_t * | node, |
| uint32_t | timeout_sec, | ||
| uint32_t | retries, | ||
| els_cb_t | cb, | ||
| void * | cbarg | ||
| ) |
Send a RFTID CT request.
Construct an RFTID CT request, and send to the node.
| node | Node to which the RFTID request is sent. |
| timeout_sec | Time, in seconds, to wait before timing out the ELS. |
| retries | Number of times to retry errors before reporting a failure. |
| cb | Callback function. |
| cbarg | Callback function argument. |
| ocs_io_t* ocs_send_adisc | ( | ocs_node_t * | node, |
| uint32_t | timeout_sec, | ||
| uint32_t | retries, | ||
| els_cb_t | cb, | ||
| void * | cbarg | ||
| ) |
Send an ADISC ELS command.
Construct an ADISC ELS command, and send to the node.
| node | Node to which the ADISC is sent. |
| timeout_sec | Command timeout, in seconds. |
| retries | Number of times to retry errors before reporting a failure. |
| cb | Callback function. |
| cbarg | Callback function argument. |
| ocs_io_t* ocs_send_adisc_acc | ( | ocs_io_t * | io, |
| uint32_t | ox_id, | ||
| els_cb_t | cb, | ||
| void * | cbarg | ||
| ) |
Send an ADISC accept response.
Construct an ADISC LS__ACC, and send to the node, using the originator exchange id ox_id.
| io | Pointer to a SCSI IO object. |
| ox_id | Originator exchange ID. |
| cb | Callback function. |
| cbarg | Callback function argument. |
| ocs_io_t* ocs_send_fdisc | ( | ocs_node_t * | node, |
| uint32_t | timeout_sec, | ||
| uint32_t | retries, | ||
| els_cb_t | cb, | ||
| void * | cbarg | ||
| ) |
Format and send a FDISC ELS command.
Construct an FDISC payload, and send to the node.
| node | Node to which the FDISC is sent. |
| timeout_sec | Command timeout, in seconds. |
| retries | Number of times to retry errors before reporting a failure. |
| cb | Callback function. |
| cbarg | Callback function argument. |
| ocs_io_t* ocs_send_flogi | ( | ocs_node_t * | node, |
| uint32_t | timeout_sec, | ||
| uint32_t | retries, | ||
| els_cb_t | cb, | ||
| void * | cbarg | ||
| ) |
Format and send a FLOGI ELS command.
Construct an FLOGI payload, and send to the node.
| node | Node to which the FLOGI is sent. |
| timeout_sec | Command timeout, in seconds. |
| retries | Number of times to retry errors before reporting a failure. |
| cb | Callback function. |
| cbarg | Callback function argument. |
| ocs_io_t* ocs_send_flogi_p2p_acc | ( | ocs_io_t * | io, |
| uint32_t | ox_id, | ||
| uint32_t | s_id, | ||
| els_cb_t | cb, | ||
| void * | cbarg | ||
| ) |
Send an FLOGI accept response for point-to-point negotiation.
Construct an FLOGI accept response, and send to the node using the originator exchange id ox_id. The s_id is used for the response frame source FC ID.
| io | Pointer to a SCSI IO object. |
| ox_id | Originator exchange ID for the response. |
| s_id | Source FC ID to be used in the response frame. |
| cb | Callback function. |
| cbarg | Callback function argument. |
| ocs_io_t* ocs_send_logo | ( | ocs_node_t * | node, |
| uint32_t | timeout_sec, | ||
| uint32_t | retries, | ||
| els_cb_t | cb, | ||
| void * | cbarg | ||
| ) |
Send a LOGO ELS command.
Format a LOGO, and send to the node.
| node | Node to which the LOGO is sent. |
| timeout_sec | Command timeout, in seconds. |
| retries | Number of times to retry errors before reporting a failure. |
| cb | Callback function. |
| cbarg | Callback function argument. |
| ocs_io_t* ocs_send_logo_acc | ( | ocs_io_t * | io, |
| uint32_t | ox_id, | ||
| els_cb_t | cb, | ||
| void * | cbarg | ||
| ) |
Send a LOGO accept response.
Construct a LOGO LS_ACC response, and send to the node, using the originator exchange ID ox_id.
| io | Pointer to a SCSI IO object. |
| ox_id | Originator exchange ID. |
| cb | Callback function. |
| cbarg | Callback function argument. |
| ocs_io_t* ocs_send_ls_acc | ( | ocs_io_t * | io, |
| uint32_t | ox_id, | ||
| els_cb_t | cb, | ||
| void * | cbarg | ||
| ) |
Send a generic LS_ACC response without a payload.
A generic LS_ACC response is sent to the node using the originator exchange ID ox_id.
| io | Pointer to a SCSI IO object. |
| ox_id | Originator exchange id. |
| cb | Callback function. |
| cbarg | Callback function argument. |
| ocs_io_t* ocs_send_pdisc | ( | ocs_node_t * | node, |
| uint32_t | timeout_sec, | ||
| uint32_t | retries, | ||
| els_cb_t | cb, | ||
| void * | cbarg | ||
| ) |
Send a PDISC ELS command.
Construct a PDISC ELS command, and send to the node.
| node | Node to which the PDISC is sent. |
| timeout_sec | Command timeout, in seconds. |
| retries | Number of times to retry errors before reporting a failure. |
| cb | Callback function. |
| cbarg | Callback function argument. |
| ocs_io_t* ocs_send_plogi | ( | ocs_node_t * | node, |
| uint32_t | timeout_sec, | ||
| uint32_t | retries, | ||
| void(*)(ocs_node_t *node, ocs_node_cb_t *cbdata, void *arg) | cb, | ||
| void * | cbarg | ||
| ) |
Format and send a PLOGI ELS command.
Construct a PLOGI payload using the domain SLI port service parameters, and send to the node.
| node | Node to which the PLOGI is sent. |
| timeout_sec | Command timeout, in seconds. |
| retries | Number of times to retry errors before reporting a failure. |
| cb | Callback function. |
| cbarg | Callback function argument. |
| ocs_io_t* ocs_send_plogi_acc | ( | ocs_io_t * | io, |
| uint32_t | ox_id, | ||
| els_cb_t | cb, | ||
| void * | cbarg | ||
| ) |
Send a PLOGI accept response.
Construct a PLOGI LS_ACC, and send to the node, using the originator exchange ID ox_id.
| io | Pointer to a SCSI IO object. |
| ox_id | Originator exchange ID being responsed to. |
| cb | Callback function. |
| cbarg | Callback function argument. |
| ocs_io_t* ocs_send_prli | ( | ocs_node_t * | node, |
| uint32_t | timeout_sec, | ||
| uint32_t | retries, | ||
| els_cb_t | cb, | ||
| void * | cbarg | ||
| ) |
Send a PRLI ELS command.
Construct a PRLI ELS command, and send to the node.
| node | Node to which the PRLI is sent. |
| timeout_sec | Command timeout, in seconds. |
| retries | Number of times to retry errors before reporting a failure. |
| cb | Callback function. |
| cbarg | Callback function argument. |
| ocs_io_t* ocs_send_prli_acc | ( | ocs_io_t * | io, |
| uint32_t | ox_id, | ||
| uint8_t | fc_type, | ||
| els_cb_t | cb, | ||
| void * | cbarg | ||
| ) |
Send a PRLI accept response.
Construct a PRLI LS_ACC response, and send to the node, using the originator ox_id exchange ID.
| io | Pointer to a SCSI IO object. |
| ox_id | Originator exchange ID. |
| fc_type | FC4 type: FCP or NVME. |
| cb | Callback function. |
| cbarg | Callback function argument. |
| ocs_io_t* ocs_send_prlo | ( | ocs_node_t * | node, |
| uint32_t | timeout_sec, | ||
| uint32_t | retries, | ||
| els_cb_t | cb, | ||
| void * | cbarg | ||
| ) |
Send a PRLO ELS command.
Construct a PRLO ELS command, and send to the node.
| node | Node to which the PRLO is sent. |
| timeout_sec | Command timeout, in seconds. |
| retries | Number of times to retry errors before reporting a failure. |
| cb | Callback function. |
| cbarg | Callback function argument. |
| ocs_io_t* ocs_send_prlo_acc | ( | ocs_io_t * | io, |
| uint32_t | ox_id, | ||
| uint8_t | fc_type, | ||
| els_cb_t | cb, | ||
| void * | cbarg | ||
| ) |
Send a PRLO accept response.
Construct a PRLO LS_ACC response, and send to the node, using the originator exchange ID ox_id.
| io | Pointer to a SCSI IO object. |
| ox_id | Originator exchange ID. |
| cb | Callback function. |
| cbarg | Callback function argument. |
| ocs_io_t* ocs_send_rrq | ( | ocs_node_t * | node, |
| uint32_t | timeout_sec, | ||
| uint32_t | retries, | ||
| els_cb_t | cb, | ||
| void * | cbarg | ||
| ) |
Send an RRQ ELS command.
Format an RRQ, and send to the node.
| node | Node to which the RRQ is sent. |
| timeout_sec | Command timeout, in seconds. |
| retries | Number of times to retry errors before reporting a failure. |
| cb | Callback function |
| cbarg | Callback function arg |
| ocs_io_t* ocs_send_rscn | ( | ocs_node_t * | node, |
| uint32_t | timeout_sec, | ||
| uint32_t | retries, | ||
| void * | port_ids, | ||
| uint32_t | port_ids_count, | ||
| els_cb_t | cb, | ||
| void * | cbarg | ||
| ) |
Send an RSCN ELS command.
Format an RSCN, and send to the node.
| node | Node to which the RRQ is sent. |
| timeout_sec | Command timeout, in seconds. |
| retries | Number of times to retry errors before reporting a failure. |
| port_ids | Pointer to port IDs |
| port_ids_count | Count of port IDs |
| cb | Callback function |
| cbarg | Callback function arg |
| ocs_io_t* ocs_send_scr | ( | ocs_node_t * | node, |
| uint32_t | timeout_sec, | ||
| uint32_t | retries, | ||
| els_cb_t | cb, | ||
| void * | cbarg | ||
| ) |
Send an SCR ELS command.
Format an SCR, and send to the node.
| node | Node to which the SCR is sent. |
| timeout_sec | Command timeout, in seconds. |
| retries | Number of times to retry errors before reporting a failure. |
| cb | Callback function |
| cbarg | Callback function arg |