xref: /linux/drivers/scsi/elx/libefc/efc_device.h (revision 762f99f4f3cb41a775b5157dd761217beba65873)
1*202bfdffSJames Smart /* SPDX-License-Identifier: GPL-2.0 */
2*202bfdffSJames Smart /*
3*202bfdffSJames Smart  * Copyright (C) 2021 Broadcom. All Rights Reserved. The term
4*202bfdffSJames Smart  * “Broadcom” refers to Broadcom Inc. and/or its subsidiaries.
5*202bfdffSJames Smart  */
6*202bfdffSJames Smart 
7*202bfdffSJames Smart /*
8*202bfdffSJames Smart  * Node state machine functions for remote device node sm
9*202bfdffSJames Smart  */
10*202bfdffSJames Smart 
11*202bfdffSJames Smart #ifndef __EFCT_DEVICE_H__
12*202bfdffSJames Smart #define __EFCT_DEVICE_H__
13*202bfdffSJames Smart void
14*202bfdffSJames Smart efc_node_init_device(struct efc_node *node, bool send_plogi);
15*202bfdffSJames Smart void
16*202bfdffSJames Smart efc_process_prli_payload(struct efc_node *node,
17*202bfdffSJames Smart 			 void *prli);
18*202bfdffSJames Smart void
19*202bfdffSJames Smart efc_d_send_prli_rsp(struct efc_node *node, uint16_t ox_id);
20*202bfdffSJames Smart void
21*202bfdffSJames Smart efc_send_ls_acc_after_attach(struct efc_node *node,
22*202bfdffSJames Smart 			     struct fc_frame_header *hdr,
23*202bfdffSJames Smart 			     enum efc_node_send_ls_acc ls);
24*202bfdffSJames Smart void
25*202bfdffSJames Smart __efc_d_wait_loop(struct efc_sm_ctx *ctx,
26*202bfdffSJames Smart 		  enum efc_sm_event evt, void *arg);
27*202bfdffSJames Smart void
28*202bfdffSJames Smart __efc_d_wait_plogi_acc_cmpl(struct efc_sm_ctx *ctx,
29*202bfdffSJames Smart 			    enum efc_sm_event evt, void *arg);
30*202bfdffSJames Smart void
31*202bfdffSJames Smart __efc_d_init(struct efc_sm_ctx *ctx, enum efc_sm_event evt, void *arg);
32*202bfdffSJames Smart void
33*202bfdffSJames Smart __efc_d_wait_plogi_rsp(struct efc_sm_ctx *ctx,
34*202bfdffSJames Smart 		       enum efc_sm_event evt, void *arg);
35*202bfdffSJames Smart void
36*202bfdffSJames Smart __efc_d_wait_plogi_rsp_recvd_prli(struct efc_sm_ctx *ctx,
37*202bfdffSJames Smart 				  enum efc_sm_event evt, void *arg);
38*202bfdffSJames Smart void
39*202bfdffSJames Smart __efc_d_wait_domain_attach(struct efc_sm_ctx *ctx,
40*202bfdffSJames Smart 			   enum efc_sm_event evt, void *arg);
41*202bfdffSJames Smart void
42*202bfdffSJames Smart __efc_d_wait_topology_notify(struct efc_sm_ctx *ctx,
43*202bfdffSJames Smart 			     enum efc_sm_event evt, void *arg);
44*202bfdffSJames Smart void
45*202bfdffSJames Smart __efc_d_wait_node_attach(struct efc_sm_ctx *ctx,
46*202bfdffSJames Smart 			 enum efc_sm_event evt, void *arg);
47*202bfdffSJames Smart void
48*202bfdffSJames Smart __efc_d_wait_attach_evt_shutdown(struct efc_sm_ctx *ctx,
49*202bfdffSJames Smart 				 enum efc_sm_event evt, void *arg);
50*202bfdffSJames Smart void
51*202bfdffSJames Smart __efc_d_initiate_shutdown(struct efc_sm_ctx *ctx,
52*202bfdffSJames Smart 			  enum efc_sm_event evt, void *arg);
53*202bfdffSJames Smart void
54*202bfdffSJames Smart __efc_d_port_logged_in(struct efc_sm_ctx *ctx,
55*202bfdffSJames Smart 		       enum efc_sm_event evt, void *arg);
56*202bfdffSJames Smart void
57*202bfdffSJames Smart __efc_d_wait_logo_acc_cmpl(struct efc_sm_ctx *ctx,
58*202bfdffSJames Smart 			   enum efc_sm_event evt, void *arg);
59*202bfdffSJames Smart void
60*202bfdffSJames Smart __efc_d_device_ready(struct efc_sm_ctx *ctx,
61*202bfdffSJames Smart 		     enum efc_sm_event evt, void *arg);
62*202bfdffSJames Smart void
63*202bfdffSJames Smart __efc_d_device_gone(struct efc_sm_ctx *ctx,
64*202bfdffSJames Smart 		    enum efc_sm_event evt, void *arg);
65*202bfdffSJames Smart void
66*202bfdffSJames Smart __efc_d_wait_adisc_rsp(struct efc_sm_ctx *ctx,
67*202bfdffSJames Smart 		       enum efc_sm_event evt, void *arg);
68*202bfdffSJames Smart void
69*202bfdffSJames Smart __efc_d_wait_logo_rsp(struct efc_sm_ctx *ctx,
70*202bfdffSJames Smart 		      enum efc_sm_event evt, void *arg);
71*202bfdffSJames Smart 
72*202bfdffSJames Smart #endif /* __EFCT_DEVICE_H__ */
73