fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte/*
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * CDDL HEADER START
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte *
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * The contents of this file are subject to the terms of the
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * Common Development and Distribution License (the "License").
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * You may not use this file except in compliance with the License.
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte *
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * or http://www.opensolaris.org/os/licensing.
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * See the License for the specific language governing permissions
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * and limitations under the License.
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte *
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * When distributing Covered Code, include this CDDL HEADER in each
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * If applicable, add the following below this CDDL HEADER, with the
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * fields enclosed by brackets "[]" replaced with your own identifying
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * information: Portions Copyright [yyyy] [name of copyright owner]
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte *
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * CDDL HEADER END
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte */
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte/*
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * Use is subject to license terms.
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte */
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#ifndef _FC_FCAIF_H
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#define _FC_FCAIF_H
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#include <sys/note.h>
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#ifdef __cplusplus
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forteextern "C" {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#endif
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte/*
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * Version for FCA vectors
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte */
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#define FCTL_FCA_MODREV_1 1
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#define FCTL_FCA_MODREV_2 2
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#define FCTL_FCA_MODREV_3 3
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#define FCTL_FCA_MODREV_4 4
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#define FCTL_FCA_MODREV_5 5
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte/*
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * State change codes
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte */
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#define FC_SC_OFFLINE 0
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#define FC_SC_ONLINE 1
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte/*
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * pm_cmd_flag definitions
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte */
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#define FC_FCA_PM_NOP 0x00
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#define FC_FCA_PM_READ 0x01
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#define FC_FCA_PM_WRITE 0x02
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#define FC_FCA_PM_RW (FC_FCA_PM_READ | FC_FCA_PM_WRITE)
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte/*
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * Command codes for fca_reset()
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte */
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#define FC_FCA_LINK_RESET 0x01
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#define FC_FCA_CORE 0x02
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#define FC_FCA_RESET_CORE 0x03
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#define FC_FCA_RESET 0x04
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte/*
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * fca_port_manage() command codes
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte */
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#define FC_PORT_BYPASS 0x01
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#define FC_PORT_UNBYPASS 0x02
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#define FC_PORT_DIAG 0x03
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#define FC_PORT_ERR_STATS 0x04
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#define FC_PORT_GET_FW_REV 0x05
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#define FC_PORT_GET_FCODE_REV 0x06
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#define FC_PORT_GET_DUMP_SIZE 0x07
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#define FC_PORT_FORCE_DUMP 0x08
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#define FC_PORT_GET_DUMP 0x09
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#define FC_PORT_LOOPBACK 0x0A
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#define FC_PORT_LINK_STATE 0x0B
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#define FC_PORT_INITIALIZE 0x0C
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#define FC_PORT_DOWNLOAD_FW 0x0D
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#define FC_PORT_RLS 0x0E
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#define FC_PORT_DOWNLOAD_FCODE 0x0F
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#define FC_PORT_GET_NODE_ID 0x10
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#define FC_PORT_SET_NODE_ID 0x11
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#define FC_PORT_GET_P2P_INFO 0x12
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte/*
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * FCA capability strings
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte */
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#define FC_NODE_WWN "FCA node WWN"
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#define FC_LOGIN_PARAMS "FCA login parameters"
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#define FC_CAP_UNSOL_BUF "number of unsolicited bufs"
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#define FC_CAP_PAYLOAD_SIZE "exchange payload max"
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#define FC_CAP_POST_RESET_BEHAVIOR "port reset behavior"
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#define FC_CAP_NOSTREAM_ON_UNALIGN_BUF "no dma streaming on unaligned buf"
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#define FC_CAP_FCP_DMA "FCP cmd response in DVMA space"
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Fortetypedef struct fc_fca_bind {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte int port_num;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte opaque_t port_handle;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte void (*port_statec_cb) (opaque_t port_handle, uint32_t state);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte void (*port_unsol_cb) (opaque_t port_handle,
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte fc_unsol_buf_t *buf, uint32_t type);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte la_wwn_t port_nwwn; /* virtual port pwwn */
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte la_wwn_t port_pwwn; /* virtual port nwwn */
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte int port_npiv; /* virtual port flag */
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte} fc_fca_bind_info_t;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Fortetypedef struct fc_fca_rnid {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte int status;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte fc_rnid_t params;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte}fc_fca_rnid_t;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Fortetypedef struct fc_fca_port_info {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte uchar_t pi_topology; /* Unused */
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte uint32_t pi_error;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte uint32_t pi_port_state;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte fc_portid_t pi_s_id; /* Unused */
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte fc_hardaddr_t pi_hard_addr; /* Hard address */
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte la_els_logi_t pi_login_params;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte fc_fca_rnid_t pi_rnid_params;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte fca_port_attrs_t pi_attrs;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte} fc_fca_port_info_t;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Fortetypedef struct fc_fca_pm {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte uint32_t pm_cmd_code; /* port manage command */
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte uint32_t pm_cmd_flags; /* READ/WRITE */
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte size_t pm_cmd_len; /* cmd buffer length */
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte caddr_t pm_cmd_buf; /* cmd buffer */
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte size_t pm_data_len; /* data buffer length */
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte caddr_t pm_data_buf; /* data buffer */
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte size_t pm_stat_len; /* status buffer length */
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte caddr_t pm_stat_buf; /* status buffer */
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte} fc_fca_pm_t;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Fortetypedef struct fc_fca_p2p_info {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte uint32_t fca_d_id; /* HBA port D_ID */
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte uint32_t d_id; /* Remote port D_ID */
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte la_wwn_t pwwn; /* Remote port PWWN */
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte la_wwn_t nwwn; /* Remote port NWWN */
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte} fc_fca_p2p_info_t;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Fortetypedef struct fca_tran {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte int fca_version;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte int fca_numports;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte int fca_pkt_size;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte uint32_t fca_cmd_max;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte ddi_dma_lim_t *fca_dma_lim;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte ddi_iblock_cookie_t *fca_iblock;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte ddi_dma_attr_t *fca_dma_attr;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte ddi_dma_attr_t *fca_dma_fcp_cmd_attr;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte ddi_dma_attr_t *fca_dma_fcp_rsp_attr;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte ddi_dma_attr_t *fca_dma_fcp_data_attr;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte ddi_dma_attr_t *fca_dma_fcip_cmd_attr;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte ddi_dma_attr_t *fca_dma_fcip_rsp_attr;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte ddi_dma_attr_t *fca_dma_fcsm_cmd_attr;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte ddi_dma_attr_t *fca_dma_fcsm_rsp_attr;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte ddi_device_acc_attr_t *fca_acc_attr;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte int fca_num_npivports;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte /* number of virtual ports supported, 0 means unsupported */
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte la_wwn_t fca_perm_pwwn;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte /* permanent port wwn for the port */
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte opaque_t (*fca_bind_port) (dev_info_t *dip,
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte fc_fca_port_info_t *port_info, fc_fca_bind_info_t *bind_info);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte void (*fca_unbind_port) (opaque_t fca_handle);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte int (*fca_init_pkt) (opaque_t fca_handle, fc_packet_t *pkt, int sleep);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte int (*fca_un_init_pkt) (opaque_t fca_handle, fc_packet_t *pkt);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte int (*fca_els_send) (opaque_t fca_handle, fc_packet_t *pkt);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte int (*fca_get_cap) (opaque_t fca_handle, char *cap, void *ptr);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte int (*fca_set_cap) (opaque_t fca_handle, char *cap, void *ptr);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte int (*fca_getmap) (opaque_t fca_handle, fc_lilpmap_t *map);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte int (*fca_transport) (opaque_t fca_handle, fc_packet_t *pkt);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte int (*fca_ub_alloc) (opaque_t fca_handle, uint64_t *tokens,
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte uint32_t ub_size, uint32_t *ub_count, uint32_t type);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte int (*fca_ub_free) (opaque_t fca_handle, uint32_t count,
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte uint64_t tokens[]);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte int (*fca_ub_release) (opaque_t fca_handle, uint32_t count,
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte uint64_t tokens[]);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte int (*fca_abort) (opaque_t fca_handle, fc_packet_t *pkt, int flags);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte int (*fca_reset) (opaque_t fca_handle, uint32_t cmd);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte int (*fca_port_manage) (opaque_t fca_port, fc_fca_pm_t *arg);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte opaque_t (*fca_get_device) (opaque_t fca_port, fc_portid_t d_id);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte int (*fca_notify) (opaque_t fca_handle, uint32_t cmd);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte} fc_fca_tran_t;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Fortevoid fc_fca_init(struct dev_ops *fca_devops_p);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forteint fc_fca_attach(dev_info_t *, fc_fca_tran_t *);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forteint fc_fca_detach(dev_info_t *fca_dip);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forteint fc_fca_update_errors(fc_packet_t *pkt);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forteint fc_fca_error(int fc_errno, char **errmsg);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forteint fc_fca_pkt_error(fc_packet_t *pkt, char **state, char **reason,
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte char **action, char **expln);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#if !defined(__lint)
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte_NOTE(SCHEME_PROTECTS_DATA("unique per fca_bind", fc_fca_port_info))
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte_NOTE(SCHEME_PROTECTS_DATA("unique per fca_bind", fc_fca_bind))
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte_NOTE(SCHEME_PROTECTS_DATA("stable data", fca_tran))
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#endif /* __lint */
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#ifdef __cplusplus
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte}
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#endif
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#endif /* _FC_FCAIF_H */