162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Copyright (C) 2021 Broadcom. All Rights Reserved. The term
462306a36Sopenharmony_ci * “Broadcom” refers to Broadcom Inc. and/or its subsidiaries.
562306a36Sopenharmony_ci */
662306a36Sopenharmony_ci
762306a36Sopenharmony_ci/*
862306a36Sopenharmony_ci * Declarations for the interface exported by efc_fabric
962306a36Sopenharmony_ci */
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ci#ifndef __EFCT_FABRIC_H__
1262306a36Sopenharmony_ci#define __EFCT_FABRIC_H__
1362306a36Sopenharmony_ci#include "scsi/fc/fc_els.h"
1462306a36Sopenharmony_ci#include "scsi/fc/fc_fs.h"
1562306a36Sopenharmony_ci#include "scsi/fc/fc_ns.h"
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_civoid
1862306a36Sopenharmony_ci__efc_fabric_init(struct efc_sm_ctx *ctx,
1962306a36Sopenharmony_ci		  enum efc_sm_event evt, void *arg);
2062306a36Sopenharmony_civoid
2162306a36Sopenharmony_ci__efc_fabric_flogi_wait_rsp(struct efc_sm_ctx *ctx,
2262306a36Sopenharmony_ci			    enum efc_sm_event evt, void *arg);
2362306a36Sopenharmony_civoid
2462306a36Sopenharmony_ci__efc_fabric_domain_attach_wait(struct efc_sm_ctx *ctx,
2562306a36Sopenharmony_ci				enum efc_sm_event evt, void *arg);
2662306a36Sopenharmony_civoid
2762306a36Sopenharmony_ci__efc_fabric_wait_domain_attach(struct efc_sm_ctx *ctx,
2862306a36Sopenharmony_ci				enum efc_sm_event evt, void *arg);
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_civoid
3162306a36Sopenharmony_ci__efc_vport_fabric_init(struct efc_sm_ctx *ctx,
3262306a36Sopenharmony_ci			enum efc_sm_event evt, void *arg);
3362306a36Sopenharmony_civoid
3462306a36Sopenharmony_ci__efc_fabric_fdisc_wait_rsp(struct efc_sm_ctx *ctx,
3562306a36Sopenharmony_ci			    enum efc_sm_event evt, void *arg);
3662306a36Sopenharmony_civoid
3762306a36Sopenharmony_ci__efc_fabric_wait_nport_attach(struct efc_sm_ctx *ctx,
3862306a36Sopenharmony_ci			       enum efc_sm_event evt, void *arg);
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_civoid
4162306a36Sopenharmony_ci__efc_ns_init(struct efc_sm_ctx *ctx, enum efc_sm_event evt, void *arg);
4262306a36Sopenharmony_civoid
4362306a36Sopenharmony_ci__efc_ns_plogi_wait_rsp(struct efc_sm_ctx *ctx,
4462306a36Sopenharmony_ci			enum efc_sm_event evt, void *arg);
4562306a36Sopenharmony_civoid
4662306a36Sopenharmony_ci__efc_ns_rftid_wait_rsp(struct efc_sm_ctx *ctx,
4762306a36Sopenharmony_ci			enum efc_sm_event evt, void *arg);
4862306a36Sopenharmony_civoid
4962306a36Sopenharmony_ci__efc_ns_rffid_wait_rsp(struct efc_sm_ctx *ctx,
5062306a36Sopenharmony_ci			enum efc_sm_event evt, void *arg);
5162306a36Sopenharmony_civoid
5262306a36Sopenharmony_ci__efc_ns_wait_node_attach(struct efc_sm_ctx *ctx,
5362306a36Sopenharmony_ci			  enum efc_sm_event evt, void *arg);
5462306a36Sopenharmony_civoid
5562306a36Sopenharmony_ci__efc_fabric_wait_attach_evt_shutdown(struct efc_sm_ctx *ctx,
5662306a36Sopenharmony_ci				      enum efc_sm_event evt, void *arg);
5762306a36Sopenharmony_civoid
5862306a36Sopenharmony_ci__efc_ns_logo_wait_rsp(struct efc_sm_ctx *ctx,
5962306a36Sopenharmony_ci		       enum efc_sm_event, void *arg);
6062306a36Sopenharmony_civoid
6162306a36Sopenharmony_ci__efc_ns_gidpt_wait_rsp(struct efc_sm_ctx *ctx,
6262306a36Sopenharmony_ci			enum efc_sm_event evt, void *arg);
6362306a36Sopenharmony_civoid
6462306a36Sopenharmony_ci__efc_ns_idle(struct efc_sm_ctx *ctx, enum efc_sm_event evt, void *arg);
6562306a36Sopenharmony_civoid
6662306a36Sopenharmony_ci__efc_ns_gidpt_delay(struct efc_sm_ctx *ctx,
6762306a36Sopenharmony_ci		     enum efc_sm_event evt, void *arg);
6862306a36Sopenharmony_civoid
6962306a36Sopenharmony_ci__efc_fabctl_init(struct efc_sm_ctx *ctx,
7062306a36Sopenharmony_ci		  enum efc_sm_event evt, void *arg);
7162306a36Sopenharmony_civoid
7262306a36Sopenharmony_ci__efc_fabctl_wait_node_attach(struct efc_sm_ctx *ctx,
7362306a36Sopenharmony_ci			      enum efc_sm_event evt, void *arg);
7462306a36Sopenharmony_civoid
7562306a36Sopenharmony_ci__efc_fabctl_wait_scr_rsp(struct efc_sm_ctx *ctx,
7662306a36Sopenharmony_ci			  enum efc_sm_event evt, void *arg);
7762306a36Sopenharmony_civoid
7862306a36Sopenharmony_ci__efc_fabctl_ready(struct efc_sm_ctx *ctx,
7962306a36Sopenharmony_ci		   enum efc_sm_event evt, void *arg);
8062306a36Sopenharmony_civoid
8162306a36Sopenharmony_ci__efc_fabctl_wait_ls_acc_cmpl(struct efc_sm_ctx *ctx,
8262306a36Sopenharmony_ci			      enum efc_sm_event evt, void *arg);
8362306a36Sopenharmony_civoid
8462306a36Sopenharmony_ci__efc_fabric_idle(struct efc_sm_ctx *ctx,
8562306a36Sopenharmony_ci		  enum efc_sm_event evt, void *arg);
8662306a36Sopenharmony_ci
8762306a36Sopenharmony_civoid
8862306a36Sopenharmony_ci__efc_p2p_rnode_init(struct efc_sm_ctx *ctx,
8962306a36Sopenharmony_ci		     enum efc_sm_event evt, void *arg);
9062306a36Sopenharmony_civoid
9162306a36Sopenharmony_ci__efc_p2p_domain_attach_wait(struct efc_sm_ctx *ctx,
9262306a36Sopenharmony_ci			     enum efc_sm_event evt, void *arg);
9362306a36Sopenharmony_civoid
9462306a36Sopenharmony_ci__efc_p2p_wait_flogi_acc_cmpl(struct efc_sm_ctx *ctx,
9562306a36Sopenharmony_ci			      enum efc_sm_event evt, void *arg);
9662306a36Sopenharmony_civoid
9762306a36Sopenharmony_ci__efc_p2p_wait_plogi_rsp(struct efc_sm_ctx *ctx,
9862306a36Sopenharmony_ci			 enum efc_sm_event evt, void *arg);
9962306a36Sopenharmony_civoid
10062306a36Sopenharmony_ci__efc_p2p_wait_plogi_rsp_recvd_prli(struct efc_sm_ctx *ctx,
10162306a36Sopenharmony_ci				    enum efc_sm_event evt, void *arg);
10262306a36Sopenharmony_civoid
10362306a36Sopenharmony_ci__efc_p2p_wait_domain_attach(struct efc_sm_ctx *ctx,
10462306a36Sopenharmony_ci			     enum efc_sm_event evt, void *arg);
10562306a36Sopenharmony_civoid
10662306a36Sopenharmony_ci__efc_p2p_wait_node_attach(struct efc_sm_ctx *ctx,
10762306a36Sopenharmony_ci			   enum efc_sm_event evt, void *arg);
10862306a36Sopenharmony_ci
10962306a36Sopenharmony_ciint
11062306a36Sopenharmony_ciefc_p2p_setup(struct efc_nport *nport);
11162306a36Sopenharmony_civoid
11262306a36Sopenharmony_ciefc_fabric_set_topology(struct efc_node *node,
11362306a36Sopenharmony_ci			enum efc_nport_topology topology);
11462306a36Sopenharmony_civoid efc_fabric_notify_topology(struct efc_node *node);
11562306a36Sopenharmony_ci
11662306a36Sopenharmony_ci#endif /* __EFCT_FABRIC_H__ */
117