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