1 /* SPDX-License-Identifier: GPL-2.0 */
3 * Copyright (C) 2021 Broadcom. All Rights Reserved. The term
4 * “Broadcom” refers to Broadcom Inc. and/or its subsidiaries.
8 * Declarations for the interface exported by efc_fabric
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"
18 __efc_fabric_init(struct efc_sm_ctx *ctx,
19 enum efc_sm_event evt, void *arg);
21 __efc_fabric_flogi_wait_rsp(struct efc_sm_ctx *ctx,
22 enum efc_sm_event evt, void *arg);
24 __efc_fabric_domain_attach_wait(struct efc_sm_ctx *ctx,
25 enum efc_sm_event evt, void *arg);
27 __efc_fabric_wait_domain_attach(struct efc_sm_ctx *ctx,
28 enum efc_sm_event evt, void *arg);
31 __efc_vport_fabric_init(struct efc_sm_ctx *ctx,
32 enum efc_sm_event evt, void *arg);
34 __efc_fabric_fdisc_wait_rsp(struct efc_sm_ctx *ctx,
35 enum efc_sm_event evt, void *arg);
37 __efc_fabric_wait_nport_attach(struct efc_sm_ctx *ctx,
38 enum efc_sm_event evt, void *arg);
41 __efc_ns_init(struct efc_sm_ctx *ctx, enum efc_sm_event evt, void *arg);
43 __efc_ns_plogi_wait_rsp(struct efc_sm_ctx *ctx,
44 enum efc_sm_event evt, void *arg);
46 __efc_ns_rftid_wait_rsp(struct efc_sm_ctx *ctx,
47 enum efc_sm_event evt, void *arg);
49 __efc_ns_rffid_wait_rsp(struct efc_sm_ctx *ctx,
50 enum efc_sm_event evt, void *arg);
52 __efc_ns_wait_node_attach(struct efc_sm_ctx *ctx,
53 enum efc_sm_event evt, void *arg);
55 __efc_fabric_wait_attach_evt_shutdown(struct efc_sm_ctx *ctx,
56 enum efc_sm_event evt, void *arg);
58 __efc_ns_logo_wait_rsp(struct efc_sm_ctx *ctx,
59 enum efc_sm_event, void *arg);
61 __efc_ns_gidpt_wait_rsp(struct efc_sm_ctx *ctx,
62 enum efc_sm_event evt, void *arg);
64 __efc_ns_idle(struct efc_sm_ctx *ctx, enum efc_sm_event evt, void *arg);
66 __efc_ns_gidpt_delay(struct efc_sm_ctx *ctx,
67 enum efc_sm_event evt, void *arg);
69 __efc_fabctl_init(struct efc_sm_ctx *ctx,
70 enum efc_sm_event evt, void *arg);
72 __efc_fabctl_wait_node_attach(struct efc_sm_ctx *ctx,
73 enum efc_sm_event evt, void *arg);
75 __efc_fabctl_wait_scr_rsp(struct efc_sm_ctx *ctx,
76 enum efc_sm_event evt, void *arg);
78 __efc_fabctl_ready(struct efc_sm_ctx *ctx,
79 enum efc_sm_event evt, void *arg);
81 __efc_fabctl_wait_ls_acc_cmpl(struct efc_sm_ctx *ctx,
82 enum efc_sm_event evt, void *arg);
84 __efc_fabric_idle(struct efc_sm_ctx *ctx,
85 enum efc_sm_event evt, void *arg);
88 __efc_p2p_rnode_init(struct efc_sm_ctx *ctx,
89 enum efc_sm_event evt, void *arg);
91 __efc_p2p_domain_attach_wait(struct efc_sm_ctx *ctx,
92 enum efc_sm_event evt, void *arg);
94 __efc_p2p_wait_flogi_acc_cmpl(struct efc_sm_ctx *ctx,
95 enum efc_sm_event evt, void *arg);
97 __efc_p2p_wait_plogi_rsp(struct efc_sm_ctx *ctx,
98 enum efc_sm_event evt, void *arg);
100 __efc_p2p_wait_plogi_rsp_recvd_prli(struct efc_sm_ctx *ctx,
101 enum efc_sm_event evt, void *arg);
103 __efc_p2p_wait_domain_attach(struct efc_sm_ctx *ctx,
104 enum efc_sm_event evt, void *arg);
106 __efc_p2p_wait_node_attach(struct efc_sm_ctx *ctx,
107 enum efc_sm_event evt, void *arg);
110 efc_p2p_setup(struct efc_nport *nport);
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);
116 #endif /* __EFCT_FABRIC_H__ */