35#define FC_NAME_STRLEN 23
43#define FC_PORT_ID_STRLEN 9
87#define FC_LINK_RETRY_DELAY ( 2 * TICKS_PER_SEC )
110 return (
link->rc == 0 );
173#define FC_R_CTL_ROUTING_MASK 0xf0
188#define FC_R_CTL_INFO_MASK 0x07
214#define FC_RX_ID_UNKNOWN 0xffff
240#define FC_RESPONDERS __table ( struct fc_responder, "fc_responders" )
243#define __fc_responder __table_entry ( FC_RESPONDERS, 01 )
323 const struct fc_name *link_node_wwn,
324 const struct fc_name *link_port_wwn,
328 const struct fc_name *node_wwn,
329 const struct fc_name *port_wwn,
u32 link
Link to next descriptor.
struct arbelprm_rc_send_wqe rc
uint32_t type
Operating system type.
struct fc_port_id fc_ptp_high_port_id
Point-to-point high port ID.
struct fc_port_id fc_f_port_id
F_Port contoller port ID.
struct fc_port_id fc_ptp_low_port_id
Point-to-point low port ID.
struct fc_port_id fc_empty_port_id
Unassigned port ID.
struct fc_port_id fc_gs_port_id
Generic services port ID.
fc_r_ctl_routing
Fibre Channel Routing Control Routing.
@ FC_R_CTL_BLS
Basic Link Services.
@ FC_R_CTL_DATA
Device Data.
@ FC_R_CTL_ELS
Extended Link Services.
@ FC_R_CTL_EH
Extended Headers.
@ FC_R_CTL_FC4_LINK
FC-4 Link Data.
@ FC_R_CTL_VIDEO
Video Data.
@ FC_R_CTL_LINK_CTRL
Link Control.
@ FC_R_CTL_EXT_ROUTE
Extended Routing.
int fc_aton(const char *wwn_text, struct fc_name *wwn)
Parse Fibre Channel WWN.
struct sockaddr * fc_fill_sockaddr(struct sockaddr_fc *sa_fc, struct fc_port_id *id)
Fill Fibre Channel socket address.
static void fc_peer_put(struct fc_peer *peer)
Drop reference to Fibre Channel peer.
struct fc_peer * fc_peer_get_wwn(const struct fc_name *port_wwn)
Get Fibre Channel peer by node name.
struct fc_peer * fc_peer_get_port_id(struct fc_port *port, const struct fc_port_id *peer_port_id)
Get Fibre Channel peer by port ID.
static struct fc_ulp * fc_ulp_get(struct fc_ulp *ulp)
Get reference to Fibre Channel upper-layer protocol.
void fc_ulp_detach(struct fc_ulp_user *user)
Detach Fibre Channel upper-layer protocol user.
void fc_ulp_attach(struct fc_ulp *ulp, struct fc_ulp_user *user)
Attach Fibre Channel upper-layer protocol user.
fc_type
Fibre Channel Data Structure Type.
@ FC_TYPE_BLS
Basic Link Service.
@ FC_TYPE_FCP
Fibre Channel Protocol.
@ FC_TYPE_CT
Common Transport.
@ FC_TYPE_ELS
Extended Link Service.
static void fc_ulp_user_put(struct fc_ulp_user *user)
Drop reference to Fibre Channel upper-layer protocol user.
fc_r_ctl_info
Fibre Channel Routing Control Information.
@ FC_R_CTL_UNCAT
Uncategorized.
@ FC_R_CTL_UNSOL_DATA
Unsolicited Data.
@ FC_R_CTL_UNSOL_CTRL
Unsolicited Control.
@ FC_R_CTL_DATA_DESC
Data Descriptor.
@ FC_R_CTL_UNSOL_CMD
Unsolicited Command.
@ FC_R_CTL_SOL_DATA
Solicited Data.
@ FC_R_CTL_CMD_STAT
Command Status.
@ FC_R_CTL_SOL_CTRL
Solicited Control.
const char * fc_ntoa(const struct fc_name *wwn)
Format Fibre Channel WWN.
fc_port_flags
Fibre Channel port flags.
@ FC_PORT_HAS_FABRIC
Port is attached to a fabric.
@ FC_PORT_HAS_NS
Port is logged in to a name server.
void fc_peer_logout(struct fc_peer *peer, int rc)
Log out Fibre Channel peer.
int fc_port_login(struct fc_port *port, struct fc_port_id *port_id, const struct fc_name *link_node_wwn, const struct fc_name *link_port_wwn, int has_fabric)
Log in Fibre Channel port.
static void fc_ulp_user_init(struct fc_ulp_user *user, void(*examine)(struct fc_ulp_user *user), struct refcnt *refcnt)
Initialise Fibre Channel upper-layer protocol user.
int fc_xchg_originate(struct interface *parent, struct fc_port *port, struct fc_port_id *peer_port_id, unsigned int type)
Originate a new Fibre Channel exchange.
static void fc_ulp_put(struct fc_ulp *ulp)
Drop reference to Fibre Channel upper-layer protocol.
static void fc_port_put(struct fc_port *port)
Drop reference to Fibre Channel port.
fc_ulp_flags
Fibre Channel upper-layer protocol flags.
@ FC_ULP_ORIGINATED_LOGIN_OK
A login originated by us has succeeded.
static struct fc_peer * fc_peer_get(struct fc_peer *peer)
Get reference to Fibre Channel peer.
struct list_head fc_peers
struct fc_ulp * fc_ulp_get_wwn_type(const struct fc_name *port_wwn, unsigned int type)
Get Fibre Channel upper-layer protocol by port name and type.
struct fc_port * fc_port_find(const char *name)
Find Fibre Channel port by name.
const char * fc_id_ntoa(const struct fc_port_id *id)
Format Fibre Channel port ID.
static int fc_link_ok(struct fc_link_state *link)
Check Fibre Channel link state.
static struct fc_port * fc_port_get(struct fc_port *port)
Get reference to Fibre Channel port.
int fc_port_open(struct interface *transport, const struct fc_name *node_wwn, const struct fc_name *port_wwn, const char *name)
Create Fibre Channel port.
fc_f_ctl_es
Fibre Channel Frame Control - Exchange and Sequence.
@ FC_F_CTL_ES_FIRST
First Sequence of Exchange.
@ FC_F_CTL_ES_END
Last Data Frame of Sequence.
@ FC_F_CTL_ES_RECIPIENT
Sequence Recipient.
@ FC_F_CTL_ES_TRANSFER
Transfer Sequence Initiative.
@ FC_F_CTL_ES_LAST
Last Sequence of Exchange.
@ FC_F_CTL_ES_RESPONDER
Responder of Exchange.
void fc_ulp_logout(struct fc_ulp *ulp, int rc)
Log out Fibre Channel upper-layer protocol.
int fc_peer_login(struct fc_peer *peer, struct fc_port *port, struct fc_port_id *port_id)
Log in Fibre Channel peer.
struct fc_ulp * fc_ulp_get_port_id_type(struct fc_port *port, const struct fc_port_id *peer_port_id, unsigned int type)
Get Fibre Channel upper-layer protocol by port ID and type.
struct list_head fc_ports
fc_f_ctl_misc
Fibre Channel Frame Control - Miscellaneous.
@ FC_F_CTL_MISC_REL_OFF
Relative Offset Present.
void fc_port_logout(struct fc_port *port, int rc)
Log out Fibre Channel port.
int fc_ulp_login(struct fc_ulp *ulp, const void *param, size_t param_len, int originated)
Log in Fibre Channel upper-layer protocol.
int fc_id_aton(const char *id_text, struct fc_port_id *id)
Parse Fibre Channel port ID.
static struct fc_ulp_user * fc_ulp_user_get(struct fc_ulp_user *user)
Get reference to Fibre Channel upper-layer protocol user.
#define FILE_LICENCE(_licence)
Declare a particular licence as applying to a file.
#define FILE_SECBOOT(_status)
Declare a file's UEFI Secure Boot permission status.
struct hv_monitor_parameter param[4][32]
Parameters.
struct mschapv2_challenge peer
Peer challenge.
#define ref_get(refcnt)
Get additional reference to object.
#define ref_put(refcnt)
Drop reference to object.
uint16_t sa_family_t
A socket address family.
A Fibre Channel link state nonitor.
void(* examine)(struct fc_link_state *link)
Examine link state.
struct retry_timer timer
Retry timer.
struct fc_link_state link
Link state monitor.
unsigned int usage
Active usage count.
struct refcnt refcnt
Reference count.
struct list_head ulps
List of upper-layer protocols.
struct fc_port * port
Fibre Channel port, if known.
struct list_head list
List of all peers.
struct interface plogi
PLOGI interface.
struct fc_name port_wwn
Port name.
struct fc_port_id port_id
Peer port ID, if known.
A Fibre Channel port identifier.
char name[8]
Name of this port.
struct list_head xchgs
List of active exchanges.
struct refcnt refcnt
Reference count.
struct fc_name link_port_wwn
Link port name.
struct fc_name link_node_wwn
Link node name.
struct interface ns_plogi
Name server PLOGI interface.
struct fc_name node_wwn
Node name.
struct interface flogi
FLOGI interface.
struct fc_name port_wwn
Port name.
struct list_head list
List of all ports.
struct fc_link_state link
Link state monitor.
struct fc_port_id port_id
Local port ID.
struct fc_port_id ptp_link_port_id
Link port ID (for point-to-point links only)
struct interface transport
Transport interface.
A Fibre Channel responder.
int(* respond)(struct interface *xchg, struct fc_port *port, struct fc_port_id *port_id, struct fc_port_id *peer_port_id)
Respond to exchange.
A Fibre Channel upper-layer protocol user.
void(* examine)(struct fc_ulp_user *user)
Examine link state.
struct refcnt * refcnt
Containing object reference count, or NULL.
struct list_head list
List of users.
struct fc_ulp * ulp
Fibre Channel upper layer protocol.
A Fibre Channel upper-layer protocol.
size_t param_len
Service parameter length.
struct fc_peer * peer
Fibre Channel peer.
struct list_head users
Active users of this upper-layer protocol.
struct interface prli
PRLI interface.
struct fc_link_state link
Link state monitor.
struct list_head list
List of upper-layer protocols.
struct refcnt refcnt
Reference count.
void * param
Service parameters, if any.
A doubly-linked list entry (or list head)
Fibre Channel socket address.
sa_family_t sfc_family
Socket address family (part of struct sockaddr)
struct fc_port_id sfc_port_id
Port ID.
char pad[sizeof(struct sockaddr) - sizeof(sa_family_t) - sizeof(struct fc_port_id)]
Padding.
Generalized socket address structure.