iPXE
|
Fibre Channel Extended Link Services. More...
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <assert.h>
#include <byteswap.h>
#include <ipxe/interface.h>
#include <ipxe/xfer.h>
#include <ipxe/iobuf.h>
#include <ipxe/process.h>
#include <ipxe/fc.h>
#include <ipxe/fcels.h>
Go to the source code of this file.
Data Structures | |
struct | fc_echo_request_frame |
ECHO request data. More... | |
Macros | |
#define | FCELS_FMT "FCELS %s %s %s %s" |
Fibre Channel ELS transaction debug message format. More... | |
#define | FCELS_ARGS(els) |
Fibre Channel ELS transaction debug message arguments. More... | |
#define | FC_ECHO_MAGIC 0x69505845 |
ECHO magic marker. More... | |
Functions | |
FILE_LICENCE (GPL2_OR_LATER_OR_UBDL) | |
static void | fc_els_free (struct refcnt *refcnt) |
Free Fibre Channel ELS transaction. More... | |
static void | fc_els_close (struct fc_els *els, int rc) |
Close Fibre Channel ELS transaction. More... | |
static struct fc_els_handler * | fc_els_detect (struct fc_els *els, const void *data, size_t len) |
Detect Fibre Channel ELS frame handler. More... | |
int | fc_els_tx (struct fc_els *els, const void *data, size_t len) |
Transmit Fibre Channel ELS frame. More... | |
static int | fc_els_rx (struct fc_els *els, struct io_buffer *iobuf, struct xfer_metadata *meta) |
Receive Fibre Channel ELS frame. More... | |
static void | fc_els_step (struct fc_els *els) |
Fibre Channel ELS process. More... | |
static struct fc_els * | fc_els_create (struct fc_port *port, struct fc_port_id *port_id, struct fc_port_id *peer_port_id) |
Create ELS transaction. More... | |
int | fc_els_request (struct interface *job, struct fc_port *port, struct fc_port_id *peer_port_id, struct fc_els_handler *handler) |
Create ELS request. More... | |
static int | fc_els_respond (struct interface *xchg, struct fc_port *port, struct fc_port_id *port_id, struct fc_port_id *peer_port_id) |
Create ELS response. More... | |
static int | fc_els_unknown_tx (struct fc_els *els __unused) |
Transmit unknown ELS request. More... | |
static int | fc_els_unknown_tx_response (struct fc_els *els) |
Transmit unknown ELS response. More... | |
static int | fc_els_unknown_rx (struct fc_els *els, void *data, size_t len) |
Receive unknown ELS. More... | |
static int | fc_els_unknown_detect (struct fc_els *els __unused, const void *data __unused, size_t len __unused) |
Detect unknown ELS. More... | |
static int | fc_els_flogi_tx (struct fc_els *els) |
Transmit FLOGI. More... | |
static int | fc_els_flogi_rx (struct fc_els *els, void *data, size_t len) |
Receive FLOGI. More... | |
static int | fc_els_flogi_detect (struct fc_els *els __unused, const void *data, size_t len __unused) |
Detect FLOGI. More... | |
int | fc_els_flogi (struct interface *parent, struct fc_port *port) |
Create FLOGI request. More... | |
static int | fc_els_plogi_tx (struct fc_els *els) |
Transmit PLOGI. More... | |
static int | fc_els_plogi_rx (struct fc_els *els, void *data, size_t len) |
Receive PLOGI. More... | |
static int | fc_els_plogi_detect (struct fc_els *els __unused, const void *data, size_t len __unused) |
Detect PLOGI. More... | |
int | fc_els_plogi (struct interface *parent, struct fc_port *port, struct fc_port_id *peer_port_id) |
Create PLOGI request. More... | |
static int | fc_els_logo_tx (struct fc_els *els) |
Transmit LOGO request. More... | |
static int | fc_els_logo_tx_response (struct fc_els *els) |
Transmit LOGO response. More... | |
static void | fc_els_logo_logout (struct fc_els *els, struct fc_port_id *peer_port_id) |
Log out individual peer or whole port as applicable. More... | |
static int | fc_els_logo_rx_request (struct fc_els *els, void *data, size_t len) |
Receive LOGO request. More... | |
static int | fc_els_logo_rx_response (struct fc_els *els, void *data __unused, size_t len __unused) |
Receive LOGO response. More... | |
static int | fc_els_logo_rx (struct fc_els *els, void *data, size_t len) |
Receive LOGO. More... | |
static int | fc_els_logo_detect (struct fc_els *els __unused, const void *data, size_t len __unused) |
Detect LOGO. More... | |
int | fc_els_logo (struct interface *parent, struct fc_port *port, struct fc_port_id *peer_port_id) |
Create LOGO request. More... | |
static struct fc_els_prli_descriptor * | fc_els_prli_descriptor (unsigned int type) |
Find PRLI descriptor. More... | |
int | fc_els_prli_tx (struct fc_els *els, struct fc_els_prli_descriptor *descriptor, void *param) |
Transmit PRLI. More... | |
int | fc_els_prli_rx (struct fc_els *els, struct fc_els_prli_descriptor *descriptor, void *data, size_t len) |
Receive PRLI. More... | |
int | fc_els_prli_detect (struct fc_els *els __unused, struct fc_els_prli_descriptor *descriptor, const void *data, size_t len) |
Detect PRLI. More... | |
int | fc_els_prli (struct interface *parent, struct fc_port *port, struct fc_port_id *peer_port_id, unsigned int type) |
Create PRLI request. More... | |
static int | fc_els_rtv_tx_response (struct fc_els *els) |
Transmit RTV response. More... | |
static int | fc_els_rtv_rx (struct fc_els *els, void *data __unused, size_t len __unused) |
Receive RTV. More... | |
static int | fc_els_rtv_detect (struct fc_els *els __unused, const void *data, size_t len __unused) |
Detect RTV. More... | |
static int | fc_els_echo_tx (struct fc_els *els) |
Transmit ECHO. More... | |
static int | fc_els_echo_rx_request (struct fc_els *els, void *data, size_t len) |
Receive ECHO request. More... | |
static int | fc_els_echo_rx_response (struct fc_els *els, void *data, size_t len) |
Receive ECHO response. More... | |
static int | fc_els_echo_rx (struct fc_els *els, void *data, size_t len) |
Receive ECHO. More... | |
static int | fc_els_echo_detect (struct fc_els *els __unused, const void *data, size_t len __unused) |
Detect ECHO. More... | |
Variables | |
struct fc_els_handler fc_els_unknown_handler | __fc_els_handler |
Unknown ELS handler. More... | |
static struct interface_operation | fc_els_xchg_op [] |
Fibre Channel ELS exchange interface operations. More... | |
static struct interface_descriptor | fc_els_xchg_desc |
Fibre Channel ELS exchange interface descriptor. More... | |
static struct interface_operation | fc_els_job_op [] |
Fibre Channel ELS job control interface operations. More... | |
static struct interface_descriptor | fc_els_job_desc |
Fibre Channel ELS job control interface descriptor. More... | |
static struct process_descriptor | fc_els_process_desc |
Fibre Channel ELS process descriptor. More... | |
struct fc_responder fc_els_responder | __fc_responder |
Fibre Channel ELS responder. More... | |
Fibre Channel Extended Link Services.
Definition in file fcels.c.
#define FCELS_FMT "FCELS %s %s %s %s" |
#define FCELS_ARGS | ( | els | ) |
Fibre Channel ELS transaction debug message arguments.
FILE_LICENCE | ( | GPL2_OR_LATER_OR_UBDL | ) |
|
static |
Free Fibre Channel ELS transaction.
refcnt | Reference count |
Definition at line 62 of file fcels.c.
References assert(), container_of, fc_port_put(), free, fc_els::port, fc_els::process, and process_running().
Referenced by fc_els_create().
|
static |
Close Fibre Channel ELS transaction.
els | Fibre Channel ELS transaction |
rc | Reason for close |
Definition at line 76 of file fcels.c.
References DBGC, FCELS_ARGS, FCELS_FMT, intf_shutdown(), fc_els::job, fc_els::process, process_del(), rc, strerror(), and fc_els::xchg.
Referenced by fc_els_rx(), and fc_els_step().
|
static |
Detect Fibre Channel ELS frame handler.
els | Fibre Channel ELS transaction |
command | ELS command code |
handler | ELS handler, or NULL |
Definition at line 98 of file fcels.c.
References data, fc_els_handler::detect, FC_ELS_HANDLERS, for_each_table_entry, frame, len, NULL, and rc.
Referenced by fc_els_rx().
Transmit Fibre Channel ELS frame.
els | Fibre Channel ELS transaction |
data | Data to transmit |
len | Length of data |
rc | Return status code |
Definition at line 126 of file fcels.c.
References data, DBGC, DBGC2, DBGC2_HDA, dest, fc_els_is_request(), fc_fill_sockaddr(), FCELS_ARGS, FCELS_FMT, len, memset(), meta(), fc_els::peer_port_id, rc, strerror(), fc_els::xchg, xfer_deliver_raw_meta(), XFER_FL_OUT, XFER_FL_OVER, and XFER_FL_RESPONSE.
Referenced by fc_els_echo_rx_request(), fc_els_echo_tx(), fc_els_flogi_tx(), fc_els_logo_tx(), fc_els_logo_tx_response(), fc_els_plogi_tx(), fc_els_prli_tx(), fc_els_rtv_tx_response(), and fc_els_unknown_tx_response().
|
static |
Receive Fibre Channel ELS frame.
els | Fibre Channel ELS transaction |
iobuf | I/O buffer |
meta | Data transfer metadata |
rc | Return status code |
Definition at line 159 of file fcels.c.
References io_buffer::data, DBGC, DBGC2, DBGC2_HDA, DBGC_HDA, dest, done, EACCES, EINVAL, fc_els_close(), fc_els_detect(), fc_els_is_request(), FC_ELS_LS_ACC, FCELS_ARGS, FCELS_FMT, frame, free_iob(), fc_els::handler, iob_len(), len, memcpy(), meta(), fc_els::peer_port_id, fc_els::port_id, rc, fc_els_handler::rx, src, and strerror().
|
static |
Fibre Channel ELS process.
els | Fibre Channel ELS transaction |
Definition at line 254 of file fcels.c.
References assert(), DBGC, fc_els_close(), fc_els_is_request(), FC_TYPE_ELS, fc_xchg_originate(), FCELS_ARGS, FCELS_FMT, fc_els::handler, fc_els::peer_port_id, fc_els::port, rc, strerror(), fc_els_handler::tx, and fc_els::xchg.
|
static |
Create ELS transaction.
port | Fibre Channel port |
port_id | Local port ID |
peer_port_id | Peer port ID |
els | Fibre Channel ELS transaction, or NULL |
Definition at line 293 of file fcels.c.
References fc_els_free(), fc_els_job_desc, fc_els_process_desc, fc_els_xchg_desc, fc_port_get(), intf_init(), fc_els::job, memcpy(), NULL, fc_els::peer_port_id, port, fc_els::port, fc_els::port_id, fc_els::process, process_init_stopped(), ref_init, fc_els::refcnt, fc_els::xchg, and zalloc().
Referenced by fc_els_request(), and fc_els_respond().
int fc_els_request | ( | struct interface * | job, |
struct fc_port * | port, | ||
struct fc_port_id * | peer_port_id, | ||
struct fc_els_handler * | handler | ||
) |
Create ELS request.
job | Parent job-control interface |
port | Fibre Channel port |
peer_port_id | Peer port ID |
handler | ELS handler |
rc | Return status code |
Definition at line 323 of file fcels.c.
References ENOMEM, fc_els_create(), FC_ELS_REQUEST, fc_els::flags, fc_els::handler, intf_plug_plug(), fc_els::job, fc_els::peer_port_id, port, fc_els::process, process_add(), ref_put, and fc_els::refcnt.
Referenced by fc_els_flogi(), fc_els_logo(), fc_els_plogi(), fc_els_prli(), and fcels().
|
static |
Create ELS response.
xchg | Exchange interface |
port | Fibre Channel port |
port_id | Local port ID |
peer_port_id | Peer port ID |
rc | Return status code |
Definition at line 351 of file fcels.c.
References ENOMEM, fc_els_create(), intf_plug_plug(), fc_els::peer_port_id, port, fc_els::port_id, ref_put, fc_els::refcnt, and fc_els::xchg.
|
static |
|
static |
Transmit unknown ELS response.
els | Fibre Channel ELS transaction |
rc | Return status code |
Definition at line 396 of file fcels.c.
References fc_ls_rjt_frame::command, FC_ELS_LS_RJT, FC_ELS_RJT_UNSUPPORTED, fc_els_tx(), memset(), and fc_ls_rjt_frame::reason.
Referenced by fc_els_unknown_rx().
Receive unknown ELS.
els | Fibre Channel ELS transaction |
data | ELS frame |
len | Length of ELS frame |
rc | Return status code |
Definition at line 416 of file fcels.c.
References data, DBGC, DBGC_HDA, fc_els_is_request(), fc_els_unknown_tx_response(), FCELS_ARGS, FCELS_FMT, len, and rc.
|
static |
Transmit FLOGI.
els | Fibre Channel ELS transaction |
rc | Return status code |
Definition at line 466 of file fcels.c.
References fc_login_frame::class3, fc_login_frame::command, fc_login_frame::common, fc_login_common::credit, FC_ELS_FLOGI, fc_els_tx(), fc_els_tx_command(), FC_LOGIN_CLASS_SEQUENTIAL, FC_LOGIN_CLASS_VALID, FC_LOGIN_CONTINUOUS_OFFSET, FC_LOGIN_DEFAULT_B2B, FC_LOGIN_DEFAULT_MTU, FC_LOGIN_VERSION, fc_login_common::flags, fc_login_class::flags, htons, memcpy(), memset(), fc_login_common::mtu, fc_login_frame::node_wwn, fc_port::node_wwn, fc_els::port, fc_login_frame::port_wwn, fc_port::port_wwn, and fc_login_common::version.
Referenced by fc_els_flogi_rx().
Receive FLOGI.
els | Fibre Channel ELS transaction |
data | ELS frame |
len | Length of ELS frame |
rc | Return status code |
Definition at line 495 of file fcels.c.
References fc_login_frame::common, data, DBGC, DBGC_HDA, EINVAL, fc_els_flogi_tx(), fc_els_is_request(), fc_id_ntoa(), FC_LOGIN_F_PORT, fc_ntoa(), fc_port_login(), FCELS_ARGS, FCELS_FMT, fc_login_common::flags, htons, len, memcpy(), fc_login_frame::node_wwn, fc_els::peer_port_id, fc_els::port, fc_els::port_id, fc_login_frame::port_wwn, fc_port::ptp_link_port_id, rc, and strerror().
|
static |
Detect FLOGI.
els | Fibre Channel ELS transaction |
data | ELS frame |
len | Length of ELS frame |
rc | Return status code |
Definition at line 555 of file fcels.c.
References fc_login_frame::command, data, EINVAL, and FC_ELS_FLOGI.
Create FLOGI request.
parent | Parent interface |
port | Fibre Channel port |
rc | Return status code |
Definition at line 581 of file fcels.c.
References fc_els_request(), fc_f_port_id, and port.
Referenced by fc_port_examine().
|
static |
Transmit PLOGI.
els | Fibre Channel ELS transaction |
rc | Return status code |
Definition at line 600 of file fcels.c.
References fc_login_frame::class3, fc_login_frame::command, fc_login_frame::common, fc_login_common::credit, fc_login_common::e_d_tov, FC_ELS_PLOGI, fc_els_tx(), fc_els_tx_command(), FC_LOGIN_CLASS_SEQUENTIAL, FC_LOGIN_CLASS_VALID, FC_LOGIN_CONTINUOUS_OFFSET, FC_LOGIN_DEFAULT_B2B, FC_LOGIN_DEFAULT_E_D_TOV, FC_LOGIN_DEFAULT_MAX_SEQ, FC_LOGIN_DEFAULT_MTU, FC_LOGIN_DEFAULT_REL_OFFS, FC_LOGIN_VERSION, fc_login_common::flags, fc_login_class::flags, htonl, htons, fc_login_class::max_seq, fc_login_class::max_seq_per_xchg, memcpy(), memset(), fc_login_common::mtu, fc_login_class::mtu, fc_login_frame::node_wwn, fc_port::node_wwn, fc_login_common::plogi, fc_els::port, fc_login_frame::port_wwn, fc_port::port_wwn, fc_login_common::u, and fc_login_common::version.
Referenced by fc_els_plogi_rx().
Receive PLOGI.
els | Fibre Channel ELS transaction |
data | ELS frame |
len | Length of ELS frame |
rc | Return status code |
Definition at line 635 of file fcels.c.
References data, DBGC, DBGC_HDA, EINVAL, ENOMEM, fc_els_is_request(), fc_els_plogi_tx(), fc_id_ntoa(), fc_link_ok(), fc_ntoa(), fc_peer_get_wwn(), fc_peer_login(), fc_peer_put(), FCELS_ARGS, FCELS_FMT, len, fc_port::link, peer, fc_els::peer_port_id, fc_peer::plogi, fc_els::port, rc, and strerror().
|
static |
Detect PLOGI.
els | Fibre Channel ELS transaction |
data | ELS frame |
len | Length of ELS frame |
rc | Return status code |
Definition at line 706 of file fcels.c.
References fc_login_frame::command, data, EINVAL, and FC_ELS_PLOGI.
int fc_els_plogi | ( | struct interface * | parent, |
struct fc_port * | port, | ||
struct fc_port_id * | peer_port_id | ||
) |
Create PLOGI request.
parent | Parent interface |
port | Fibre Channel port |
peer_port_id | Peer port ID |
rc | Return status code |
Definition at line 733 of file fcels.c.
References fc_els_request(), and port.
Referenced by fc_peer_plogi(), and fc_port_login().
|
static |
Transmit LOGO request.
els | Fibre Channel ELS transaction |
rc | Return status code |
Definition at line 753 of file fcels.c.
References fc_logout_request_frame::command, FC_ELS_LOGO, fc_els_tx(), memcpy(), memset(), fc_els::port, fc_logout_request_frame::port_id, fc_port::port_id, fc_logout_request_frame::port_wwn, and fc_port::port_wwn.
|
static |
Transmit LOGO response.
els | Fibre Channel ELS transaction |
rc | Return status code |
Definition at line 773 of file fcels.c.
References fc_logout_response_frame::command, FC_ELS_LS_ACC, fc_els_tx(), and memset().
Referenced by fc_els_logo_rx_request().
|
static |
Log out individual peer or whole port as applicable.
els | Fibre Channel ELS transaction |
port_id | Peer port ID |
Definition at line 790 of file fcels.c.
References fc_f_port_id, fc_peer_get_port_id(), fc_peer_logout(), fc_peer_put(), fc_port_logout(), memcmp(), peer, fc_els::port, and fc_port::port_id.
Referenced by fc_els_logo_rx_request(), and fc_els_logo_rx_response().
Receive LOGO request.
els | Fibre Channel ELS transaction |
data | ELS frame |
len | Length of ELS frame |
rc | Return status code |
Definition at line 816 of file fcels.c.
References data, DBGC, DBGC_HDA, EINVAL, fc_els_logo_logout(), fc_els_logo_tx_response(), fc_id_ntoa(), fc_ntoa(), FCELS_ARGS, FCELS_FMT, len, fc_logout_request_frame::port_id, fc_logout_request_frame::port_wwn, and rc.
Referenced by fc_els_logo_rx().
|
static |
Receive LOGO response.
els | Fibre Channel ELS transaction |
data | ELS frame |
len | Length of ELS frame |
rc | Return status code |
Definition at line 850 of file fcels.c.
References fc_els_logo_logout(), and fc_els::peer_port_id.
Referenced by fc_els_logo_rx().
Receive LOGO.
els | Fibre Channel ELS transaction |
data | ELS frame |
len | Length of ELS frame |
rc | Return status code |
Definition at line 867 of file fcels.c.
References data, fc_els_is_request(), fc_els_logo_rx_request(), fc_els_logo_rx_response(), and len.
|
static |
Detect LOGO.
els | Fibre Channel ELS transaction |
data | ELS frame |
len | Length of ELS frame |
rc | Return status code |
Definition at line 884 of file fcels.c.
References fc_logout_request_frame::command, data, EINVAL, and FC_ELS_LOGO.
int fc_els_logo | ( | struct interface * | parent, |
struct fc_port * | port, | ||
struct fc_port_id * | peer_port_id | ||
) |
Create LOGO request.
parent | Parent interface |
port | Fibre Channel port |
peer_port_id | Peer port ID |
rc | Return status code |
Definition at line 911 of file fcels.c.
References fc_els_request(), and port.
|
static |
Find PRLI descriptor.
type | Upper-layer protocol type |
descriptor | PRLI descriptor, or NULL |
Definition at line 932 of file fcels.c.
References FC_ELS_PRLI_DESCRIPTORS, for_each_table_entry, NULL, type, and fc_els_prli_descriptor::type.
Referenced by fc_els_prli().
int fc_els_prli_tx | ( | struct fc_els * | els, |
struct fc_els_prli_descriptor * | descriptor, | ||
void * | param | ||
) |
Transmit PRLI.
els | Fibre Channel ELS transaction |
descriptor | ELS PRLI descriptor |
param | Service parameters |
rc | Return status code |
Definition at line 950 of file fcels.c.
References __attribute__, ENOMEM, fc_els_is_request(), FC_ELS_PRLI, fc_els_tx(), fc_els_tx_command(), fc_link_ok(), FC_PRLI_ESTABLISH, FC_PRLI_RESPONSE_SUCCESS, fc_ulp_get_port_id_type(), fc_ulp_put(), frame, htons, fc_ulp::link, memcpy(), memset(), param, fc_els_prli_descriptor::param_len, fc_els::peer_port_id, fc_els::port, fc_ulp::prli, rc, and fc_els_prli_descriptor::type.
Referenced by fcp_prli_tx().
int fc_els_prli_rx | ( | struct fc_els * | els, |
struct fc_els_prli_descriptor * | descriptor, | ||
void * | data, | ||
size_t | len | ||
) |
Receive PRLI.
els | Fibre Channel ELS transaction |
descriptor | ELS PRLI descriptor |
frame | ELS frame |
len | Length of ELS frame |
rc | Return status code |
Definition at line 1006 of file fcels.c.
References __attribute__, data, DBGC, DBGC_HDA, EACCES, EINVAL, ENOMEM, fc_els_is_request(), fc_link_ok(), FC_PRLI_ESTABLISH, fc_ulp_get_port_id_type(), fc_ulp_login(), fc_ulp_logout(), fc_ulp_put(), FCELS_ARGS, FCELS_FMT, frame, fc_els::handler, htons, len, fc_peer::link, fc_ulp::param, fc_els_prli_descriptor::param_len, fc_ulp::peer, fc_els::peer_port_id, fc_els::port, fc_ulp::prli, rc, strerror(), fc_els_handler::tx, and fc_els_prli_descriptor::type.
Referenced by fcp_prli_rx().
int fc_els_prli_detect | ( | struct fc_els *els | __unused, |
struct fc_els_prli_descriptor * | descriptor, | ||
const void * | data, | ||
size_t | len | ||
) |
Detect PRLI.
els | Fibre Channel ELS transaction |
descriptor | ELS PRLI descriptor |
data | ELS frame |
len | Length of ELS frame |
rc | Return status code |
Definition at line 1092 of file fcels.c.
References __attribute__, data, EINVAL, FC_ELS_PRLI, frame, len, fc_ulp::param, fc_els_prli_descriptor::param_len, and fc_els_prli_descriptor::type.
Referenced by fcp_prli_detect().
int fc_els_prli | ( | struct interface * | parent, |
struct fc_port * | port, | ||
struct fc_port_id * | peer_port_id, | ||
unsigned int | type | ||
) |
Create PRLI request.
parent | Parent interface |
port | Fibre Channel port |
peer_port_id | Peer port ID |
type | Upper-layer protocol type |
rc | Return status code |
Definition at line 1124 of file fcels.c.
References ENOTSUP, fc_els_prli_descriptor(), fc_els_request(), fc_els_prli_descriptor::handler, port, and type.
Referenced by fc_ulp_examine().
|
static |
Transmit RTV response.
els | Fibre Channel ELS transaction |
rc | Return status code |
Definition at line 1150 of file fcels.c.
References fc_rtv_response_frame::command, fc_rtv_response_frame::e_d_tov, FC_ELS_LS_ACC, fc_els_tx(), FC_LOGIN_DEFAULT_E_D_TOV, htonl, and memset().
Referenced by fc_els_rtv_rx().
Receive RTV.
els | Fibre Channel ELS transaction |
data | ELS frame |
len | Length of ELS frame |
rc | Return status code |
Definition at line 1170 of file fcels.c.
References DBGC, fc_els_is_request(), fc_els_rtv_tx_response(), FCELS_ARGS, FCELS_FMT, and rc.
|
static |
Detect RTV.
els | Fibre Channel ELS transaction |
data | ELS frame |
len | Length of ELS frame |
rc | Return status code |
Definition at line 1193 of file fcels.c.
References fc_rtv_request_frame::command, data, EINVAL, and FC_ELS_RTV.
|
static |
Transmit ECHO.
els | Fibre Channel ELS transaction |
rc | Return status code |
Definition at line 1236 of file fcels.c.
References echo(), FC_ECHO_MAGIC, FC_ELS_ECHO, fc_els_tx(), htonl, and memset().
Receive ECHO request.
els | Fibre Channel ELS transaction |
data | ELS frame |
len | Length of ELS frame |
rc | Return status code |
Definition at line 1256 of file fcels.c.
References data, DBGC, echo(), fc_echo_request_frame::echo, FC_ELS_LS_ACC, fc_els_tx(), FCELS_ARGS, FCELS_FMT, len, and rc.
Referenced by fc_els_echo_rx().
Receive ECHO response.
els | Fibre Channel ELS transaction |
data | ELS frame |
len | Length of ELS frame |
rc | Return status code |
Definition at line 1283 of file fcels.c.
References data, DBGC, DBGC_HDA, echo(), EIO, FC_ECHO_MAGIC, FCELS_ARGS, FCELS_FMT, htonl, and len.
Referenced by fc_els_echo_rx().
Receive ECHO.
els | Fibre Channel ELS transaction |
data | ELS frame |
len | Length of ELS frame |
rc | Return status code |
Definition at line 1309 of file fcels.c.
References data, fc_els_echo_rx_request(), fc_els_echo_rx_response(), fc_els_is_request(), and len.
|
static |
struct fc_els_handler fc_els_echo_handler __fc_els_handler |
Unknown ELS handler.
ECHO ELS handler.
RTV ELS handler.
LOGO ELS handler.
PLOGI ELS handler.
FLOGI ELS handler.
|
static |
Fibre Channel ELS exchange interface operations.
|
static |
Fibre Channel ELS exchange interface descriptor.
Definition at line 237 of file fcels.c.
Referenced by fc_els_create().
|
static |
Fibre Channel ELS job control interface operations.
|
static |
Fibre Channel ELS job control interface descriptor.
Definition at line 246 of file fcels.c.
Referenced by fc_els_create().
|
static |
Fibre Channel ELS process descriptor.
Definition at line 282 of file fcels.c.
Referenced by fc_els_create().
struct fc_responder fc_els_responder __fc_responder |
Fibre Channel ELS responder.