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