xref: /openbmc/linux/drivers/scsi/elx/libefc/efc_fabric.h (revision 762f99f4f3cb41a775b5157dd761217beba65873)
1*ffc3d500SJames Smart /* SPDX-License-Identifier: GPL-2.0 */
2*ffc3d500SJames Smart /*
3*ffc3d500SJames Smart  * Copyright (C) 2021 Broadcom. All Rights Reserved. The term
4*ffc3d500SJames Smart  * “Broadcom” refers to Broadcom Inc. and/or its subsidiaries.
5*ffc3d500SJames Smart  */
6*ffc3d500SJames Smart 
7*ffc3d500SJames Smart /*
8*ffc3d500SJames Smart  * Declarations for the interface exported by efc_fabric
9*ffc3d500SJames Smart  */
10*ffc3d500SJames Smart 
11*ffc3d500SJames Smart #ifndef __EFCT_FABRIC_H__
12*ffc3d500SJames Smart #define __EFCT_FABRIC_H__
13*ffc3d500SJames Smart #include "scsi/fc/fc_els.h"
14*ffc3d500SJames Smart #include "scsi/fc/fc_fs.h"
15*ffc3d500SJames Smart #include "scsi/fc/fc_ns.h"
16*ffc3d500SJames Smart 
17*ffc3d500SJames Smart void
18*ffc3d500SJames Smart __efc_fabric_init(struct efc_sm_ctx *ctx,
19*ffc3d500SJames Smart 		  enum efc_sm_event evt, void *arg);
20*ffc3d500SJames Smart void
21*ffc3d500SJames Smart __efc_fabric_flogi_wait_rsp(struct efc_sm_ctx *ctx,
22*ffc3d500SJames Smart 			    enum efc_sm_event evt, void *arg);
23*ffc3d500SJames Smart void
24*ffc3d500SJames Smart __efc_fabric_domain_attach_wait(struct efc_sm_ctx *ctx,
25*ffc3d500SJames Smart 				enum efc_sm_event evt, void *arg);
26*ffc3d500SJames Smart void
27*ffc3d500SJames Smart __efc_fabric_wait_domain_attach(struct efc_sm_ctx *ctx,
28*ffc3d500SJames Smart 				enum efc_sm_event evt, void *arg);
29*ffc3d500SJames Smart 
30*ffc3d500SJames Smart void
31*ffc3d500SJames Smart __efc_vport_fabric_init(struct efc_sm_ctx *ctx,
32*ffc3d500SJames Smart 			enum efc_sm_event evt, void *arg);
33*ffc3d500SJames Smart void
34*ffc3d500SJames Smart __efc_fabric_fdisc_wait_rsp(struct efc_sm_ctx *ctx,
35*ffc3d500SJames Smart 			    enum efc_sm_event evt, void *arg);
36*ffc3d500SJames Smart void
37*ffc3d500SJames Smart __efc_fabric_wait_nport_attach(struct efc_sm_ctx *ctx,
38*ffc3d500SJames Smart 			       enum efc_sm_event evt, void *arg);
39*ffc3d500SJames Smart 
40*ffc3d500SJames Smart void
41*ffc3d500SJames Smart __efc_ns_init(struct efc_sm_ctx *ctx, enum efc_sm_event evt, void *arg);
42*ffc3d500SJames Smart void
43*ffc3d500SJames Smart __efc_ns_plogi_wait_rsp(struct efc_sm_ctx *ctx,
44*ffc3d500SJames Smart 			enum efc_sm_event evt, void *arg);
45*ffc3d500SJames Smart void
46*ffc3d500SJames Smart __efc_ns_rftid_wait_rsp(struct efc_sm_ctx *ctx,
47*ffc3d500SJames Smart 			enum efc_sm_event evt, void *arg);
48*ffc3d500SJames Smart void
49*ffc3d500SJames Smart __efc_ns_rffid_wait_rsp(struct efc_sm_ctx *ctx,
50*ffc3d500SJames Smart 			enum efc_sm_event evt, void *arg);
51*ffc3d500SJames Smart void
52*ffc3d500SJames Smart __efc_ns_wait_node_attach(struct efc_sm_ctx *ctx,
53*ffc3d500SJames Smart 			  enum efc_sm_event evt, void *arg);
54*ffc3d500SJames Smart void
55*ffc3d500SJames Smart __efc_fabric_wait_attach_evt_shutdown(struct efc_sm_ctx *ctx,
56*ffc3d500SJames Smart 				      enum efc_sm_event evt, void *arg);
57*ffc3d500SJames Smart void
58*ffc3d500SJames Smart __efc_ns_logo_wait_rsp(struct efc_sm_ctx *ctx,
59*ffc3d500SJames Smart 		       enum efc_sm_event, void *arg);
60*ffc3d500SJames Smart void
61*ffc3d500SJames Smart __efc_ns_gidpt_wait_rsp(struct efc_sm_ctx *ctx,
62*ffc3d500SJames Smart 			enum efc_sm_event evt, void *arg);
63*ffc3d500SJames Smart void
64*ffc3d500SJames Smart __efc_ns_idle(struct efc_sm_ctx *ctx, enum efc_sm_event evt, void *arg);
65*ffc3d500SJames Smart void
66*ffc3d500SJames Smart __efc_ns_gidpt_delay(struct efc_sm_ctx *ctx,
67*ffc3d500SJames Smart 		     enum efc_sm_event evt, void *arg);
68*ffc3d500SJames Smart void
69*ffc3d500SJames Smart __efc_fabctl_init(struct efc_sm_ctx *ctx,
70*ffc3d500SJames Smart 		  enum efc_sm_event evt, void *arg);
71*ffc3d500SJames Smart void
72*ffc3d500SJames Smart __efc_fabctl_wait_node_attach(struct efc_sm_ctx *ctx,
73*ffc3d500SJames Smart 			      enum efc_sm_event evt, void *arg);
74*ffc3d500SJames Smart void
75*ffc3d500SJames Smart __efc_fabctl_wait_scr_rsp(struct efc_sm_ctx *ctx,
76*ffc3d500SJames Smart 			  enum efc_sm_event evt, void *arg);
77*ffc3d500SJames Smart void
78*ffc3d500SJames Smart __efc_fabctl_ready(struct efc_sm_ctx *ctx,
79*ffc3d500SJames Smart 		   enum efc_sm_event evt, void *arg);
80*ffc3d500SJames Smart void
81*ffc3d500SJames Smart __efc_fabctl_wait_ls_acc_cmpl(struct efc_sm_ctx *ctx,
82*ffc3d500SJames Smart 			      enum efc_sm_event evt, void *arg);
83*ffc3d500SJames Smart void
84*ffc3d500SJames Smart __efc_fabric_idle(struct efc_sm_ctx *ctx,
85*ffc3d500SJames Smart 		  enum efc_sm_event evt, void *arg);
86*ffc3d500SJames Smart 
87*ffc3d500SJames Smart void
88*ffc3d500SJames Smart __efc_p2p_rnode_init(struct efc_sm_ctx *ctx,
89*ffc3d500SJames Smart 		     enum efc_sm_event evt, void *arg);
90*ffc3d500SJames Smart void
91*ffc3d500SJames Smart __efc_p2p_domain_attach_wait(struct efc_sm_ctx *ctx,
92*ffc3d500SJames Smart 			     enum efc_sm_event evt, void *arg);
93*ffc3d500SJames Smart void
94*ffc3d500SJames Smart __efc_p2p_wait_flogi_acc_cmpl(struct efc_sm_ctx *ctx,
95*ffc3d500SJames Smart 			      enum efc_sm_event evt, void *arg);
96*ffc3d500SJames Smart void
97*ffc3d500SJames Smart __efc_p2p_wait_plogi_rsp(struct efc_sm_ctx *ctx,
98*ffc3d500SJames Smart 			 enum efc_sm_event evt, void *arg);
99*ffc3d500SJames Smart void
100*ffc3d500SJames Smart __efc_p2p_wait_plogi_rsp_recvd_prli(struct efc_sm_ctx *ctx,
101*ffc3d500SJames Smart 				    enum efc_sm_event evt, void *arg);
102*ffc3d500SJames Smart void
103*ffc3d500SJames Smart __efc_p2p_wait_domain_attach(struct efc_sm_ctx *ctx,
104*ffc3d500SJames Smart 			     enum efc_sm_event evt, void *arg);
105*ffc3d500SJames Smart void
106*ffc3d500SJames Smart __efc_p2p_wait_node_attach(struct efc_sm_ctx *ctx,
107*ffc3d500SJames Smart 			   enum efc_sm_event evt, void *arg);
108*ffc3d500SJames Smart 
109*ffc3d500SJames Smart int
110*ffc3d500SJames Smart efc_p2p_setup(struct efc_nport *nport);
111*ffc3d500SJames Smart void
112*ffc3d500SJames Smart efc_fabric_set_topology(struct efc_node *node,
113*ffc3d500SJames Smart 			enum efc_nport_topology topology);
114*ffc3d500SJames Smart void efc_fabric_notify_topology(struct efc_node *node);
115*ffc3d500SJames Smart 
116*ffc3d500SJames Smart #endif /* __EFCT_FABRIC_H__ */
117