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
17void
18__efc_fabric_init(struct efc_sm_ctx *ctx,
19		  enum efc_sm_event evt, void *arg);
20void
21__efc_fabric_flogi_wait_rsp(struct efc_sm_ctx *ctx,
22			    enum efc_sm_event evt, void *arg);
23void
24__efc_fabric_domain_attach_wait(struct efc_sm_ctx *ctx,
25				enum efc_sm_event evt, void *arg);
26void
27__efc_fabric_wait_domain_attach(struct efc_sm_ctx *ctx,
28				enum efc_sm_event evt, void *arg);
29
30void
31__efc_vport_fabric_init(struct efc_sm_ctx *ctx,
32			enum efc_sm_event evt, void *arg);
33void
34__efc_fabric_fdisc_wait_rsp(struct efc_sm_ctx *ctx,
35			    enum efc_sm_event evt, void *arg);
36void
37__efc_fabric_wait_nport_attach(struct efc_sm_ctx *ctx,
38			       enum efc_sm_event evt, void *arg);
39
40void
41__efc_ns_init(struct efc_sm_ctx *ctx, enum efc_sm_event evt, void *arg);
42void
43__efc_ns_plogi_wait_rsp(struct efc_sm_ctx *ctx,
44			enum efc_sm_event evt, void *arg);
45void
46__efc_ns_rftid_wait_rsp(struct efc_sm_ctx *ctx,
47			enum efc_sm_event evt, void *arg);
48void
49__efc_ns_rffid_wait_rsp(struct efc_sm_ctx *ctx,
50			enum efc_sm_event evt, void *arg);
51void
52__efc_ns_wait_node_attach(struct efc_sm_ctx *ctx,
53			  enum efc_sm_event evt, void *arg);
54void
55__efc_fabric_wait_attach_evt_shutdown(struct efc_sm_ctx *ctx,
56				      enum efc_sm_event evt, void *arg);
57void
58__efc_ns_logo_wait_rsp(struct efc_sm_ctx *ctx,
59		       enum efc_sm_event, void *arg);
60void
61__efc_ns_gidpt_wait_rsp(struct efc_sm_ctx *ctx,
62			enum efc_sm_event evt, void *arg);
63void
64__efc_ns_idle(struct efc_sm_ctx *ctx, enum efc_sm_event evt, void *arg);
65void
66__efc_ns_gidpt_delay(struct efc_sm_ctx *ctx,
67		     enum efc_sm_event evt, void *arg);
68void
69__efc_fabctl_init(struct efc_sm_ctx *ctx,
70		  enum efc_sm_event evt, void *arg);
71void
72__efc_fabctl_wait_node_attach(struct efc_sm_ctx *ctx,
73			      enum efc_sm_event evt, void *arg);
74void
75__efc_fabctl_wait_scr_rsp(struct efc_sm_ctx *ctx,
76			  enum efc_sm_event evt, void *arg);
77void
78__efc_fabctl_ready(struct efc_sm_ctx *ctx,
79		   enum efc_sm_event evt, void *arg);
80void
81__efc_fabctl_wait_ls_acc_cmpl(struct efc_sm_ctx *ctx,
82			      enum efc_sm_event evt, void *arg);
83void
84__efc_fabric_idle(struct efc_sm_ctx *ctx,
85		  enum efc_sm_event evt, void *arg);
86
87void
88__efc_p2p_rnode_init(struct efc_sm_ctx *ctx,
89		     enum efc_sm_event evt, void *arg);
90void
91__efc_p2p_domain_attach_wait(struct efc_sm_ctx *ctx,
92			     enum efc_sm_event evt, void *arg);
93void
94__efc_p2p_wait_flogi_acc_cmpl(struct efc_sm_ctx *ctx,
95			      enum efc_sm_event evt, void *arg);
96void
97__efc_p2p_wait_plogi_rsp(struct efc_sm_ctx *ctx,
98			 enum efc_sm_event evt, void *arg);
99void
100__efc_p2p_wait_plogi_rsp_recvd_prli(struct efc_sm_ctx *ctx,
101				    enum efc_sm_event evt, void *arg);
102void
103__efc_p2p_wait_domain_attach(struct efc_sm_ctx *ctx,
104			     enum efc_sm_event evt, void *arg);
105void
106__efc_p2p_wait_node_attach(struct efc_sm_ctx *ctx,
107			   enum efc_sm_event evt, void *arg);
108
109int
110efc_p2p_setup(struct efc_nport *nport);
111void
112efc_fabric_set_topology(struct efc_node *node,
113			enum efc_nport_topology topology);
114void efc_fabric_notify_topology(struct efc_node *node);
115
116#endif /* __EFCT_FABRIC_H__ */
117