/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2009 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#ifndef _FCTL_H
#define _FCTL_H
#ifdef __cplusplus
extern "C" {
#endif
/*
* These are the legal values for the fp_state member of the fc_local_port_t
*
* The link state value is kept the least significant byte, and the link speed
* value is kept in the next most significant byte:
*
* +------------+------------+
* | link speed | link state |
* +------------+------------+
*/
/* Values for the link state (least significant byte as above) */
/* initialized. */
/* is given in fp_topology. */
/* is a private loop. */
/* Values for the link speed (next least significant byte as above) */
/* pi_port_state, used only when binding port */
/*
* Macros to discriminate between the link state byte and the link speed
* byte in fp_state (also good for improved code obfuscation and job security
* even during a good economy).
*/
/*
* Notify flags passed between ULPs and FCAs
*
* 3 bytes 1 byte
* +-----------------------+---------------+
* | Flag specific values | Notify flag |
* +-----------------------+---------------+
*/
/*
* pkt_tran_flags definitions
*/
/*
* pkt_tran_type definitions
*/
#define FC_PKT_NOP 0
/*
* The fc_packet_t represents an FC Exchange and is the primary unit of
* information exchange between FC driver modules.
*/
typedef struct fc_packet {
/* framework private */
/*
* The pkt_ulp_rscn_infop (aka pkt_ulp_rsvd1) field is used to carry
* the rscn info (of type fc_ulp_rscn_info_t) down to the transport so
* that the transport can determine (in some cases) whether or not the
* requested operation was aware of the latest state change
* notification.
*
* If not NULL, then the pkt_ulp_rscn_infop (aka pkt_ulp_rsvd1) may
* point to an fc_ulp_rscn_info_t struct that contains the rscn count
* information for this fc_packet_t.
*/
} fc_packet_t;
#if !defined(__lint)
#endif /* __lint */
typedef struct fca_hba_fru_details {
/*
*/
/* of reporting */
typedef struct fca_port_attrs {
typedef struct unsolicited_buffer {
void *ub_port_private;
void *ub_fca_private;
typedef struct fc_trace_dmsg {
typedef struct fc_trace_logq {
int il_flags;
/*
* Values for the pd_type field in the fc_remote_port_t struct below.
* (Also used in map_type and changelist determination)
*/
/* no change on the remote port */
/* port has come back after being */
/* marked as PORT_DEVICE_OLD */
/* the remote port may come back */
/* has occurred (hot swap?) */
/*
* Flags used for fc_portmap->map_type
*/
/* entry for this target */
/* later in the list */
/*
* Logging and Debugging support
*/
/*
* Common utility routines
*/
#if !defined(__lint)
#endif /* __lint */
#ifdef __cplusplus
}
#endif
#endif /* _FCTL_H */