1fcf3ce44SJohn Forte /* 2fcf3ce44SJohn Forte * CDDL HEADER START 3fcf3ce44SJohn Forte * 4fcf3ce44SJohn Forte * The contents of this file are subject to the terms of the 5fcf3ce44SJohn Forte * Common Development and Distribution License (the "License"). 6fcf3ce44SJohn Forte * You may not use this file except in compliance with the License. 7fcf3ce44SJohn Forte * 8fcf3ce44SJohn Forte * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9fcf3ce44SJohn Forte * or http://www.opensolaris.org/os/licensing. 10fcf3ce44SJohn Forte * See the License for the specific language governing permissions 11fcf3ce44SJohn Forte * and limitations under the License. 12fcf3ce44SJohn Forte * 13fcf3ce44SJohn Forte * When distributing Covered Code, include this CDDL HEADER in each 14fcf3ce44SJohn Forte * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15fcf3ce44SJohn Forte * If applicable, add the following below this CDDL HEADER, with the 16fcf3ce44SJohn Forte * fields enclosed by brackets "[]" replaced with your own identifying 17fcf3ce44SJohn Forte * information: Portions Copyright [yyyy] [name of copyright owner] 18fcf3ce44SJohn Forte * 19fcf3ce44SJohn Forte * CDDL HEADER END 20fcf3ce44SJohn Forte */ 21fcf3ce44SJohn Forte /* 22*ba3594baSGarrett D'Amore * Copyright 2014 Garrett D'Amore <garrett@damore.org> 23*ba3594baSGarrett D'Amore * 24fcf3ce44SJohn Forte * Copyright 2008 Sun Microsystems, Inc. All rights reserved. 25fcf3ce44SJohn Forte * Use is subject to license terms. 26fcf3ce44SJohn Forte */ 27fcf3ce44SJohn Forte 28fcf3ce44SJohn Forte #ifndef _FC_TYPES_H 29fcf3ce44SJohn Forte #define _FC_TYPES_H 30fcf3ce44SJohn Forte 31fcf3ce44SJohn Forte 32fcf3ce44SJohn Forte 33fcf3ce44SJohn Forte /* 34fcf3ce44SJohn Forte * Types for FC Transport subsystems. 35fcf3ce44SJohn Forte * 36fcf3ce44SJohn Forte * This file picks up specific as well as generic type 37fcf3ce44SJohn Forte * defines, and also serves as a wrapper for many common 38fcf3ce44SJohn Forte * includes. 39fcf3ce44SJohn Forte */ 40fcf3ce44SJohn Forte 41fcf3ce44SJohn Forte #include <sys/types.h> 42fcf3ce44SJohn Forte #include <sys/param.h> 43fcf3ce44SJohn Forte 44fcf3ce44SJohn Forte #ifdef __cplusplus 45fcf3ce44SJohn Forte extern "C" { 46fcf3ce44SJohn Forte #endif 47fcf3ce44SJohn Forte 48fcf3ce44SJohn Forte #if !defined(_BIT_FIELDS_LTOH) && !defined(_BIT_FIELDS_HTOL) 49fcf3ce44SJohn Forte #error One of _BIT_FIELDS_LTOH or _BIT_FIELDS_HTOL must be defined 50fcf3ce44SJohn Forte #endif /* _BIT_FIELDS_LTOH */ 51fcf3ce44SJohn Forte 52fcf3ce44SJohn Forte #ifdef _KERNEL 53fcf3ce44SJohn Forte #include <sys/systm.h> 54fcf3ce44SJohn Forte #include <sys/cmn_err.h> 55fcf3ce44SJohn Forte #include <sys/debug.h> 56fcf3ce44SJohn Forte #include <sys/devops.h> 57fcf3ce44SJohn Forte #include <sys/callb.h> 58fcf3ce44SJohn Forte #include <sys/disp.h> 59fcf3ce44SJohn Forte #include <sys/taskq.h> 60fcf3ce44SJohn Forte #endif /* _KERNEL */ 61fcf3ce44SJohn Forte 62fcf3ce44SJohn Forte #ifndef _SYS_SCSI_SCSI_TYPES_H 63fcf3ce44SJohn Forte 64fcf3ce44SJohn Forte 65fcf3ce44SJohn Forte typedef void *opaque_t; 66fcf3ce44SJohn Forte 67fcf3ce44SJohn Forte #endif /* _SYS_SCSI_SCSI_TYPES_H */ 68fcf3ce44SJohn Forte 69fcf3ce44SJohn Forte /* Sysevent defs */ 70fcf3ce44SJohn Forte #define EC_SUNFC "EC_sunfc" 71fcf3ce44SJohn Forte #define ESC_SUNFC_PORT_ATTACH "ESC_sunfc_port_attach" 72fcf3ce44SJohn Forte #define ESC_SUNFC_PORT_DETACH "ESC_sunfc_port_detach" 73fcf3ce44SJohn Forte #define ESC_SUNFC_PORT_ONLINE "ESC_sunfc_port_online" 74fcf3ce44SJohn Forte #define ESC_SUNFC_PORT_OFFLINE "ESC_sunfc_port_offline" 75fcf3ce44SJohn Forte #define ESC_SUNFC_PORT_RSCN "ESC_sunfc_port_rscn" 76fcf3ce44SJohn Forte #define ESC_SUNFC_TARGET_ADD "ESC_sunfc_target_add" 77fcf3ce44SJohn Forte #define ESC_SUNFC_TARGET_REMOVE "ESC_sunfc_target_remove" 78fcf3ce44SJohn Forte #define ESC_SUNFC_DEVICE_ONLINE "ESC_sunfc_device_online" 79fcf3ce44SJohn Forte #define ESC_SUNFC_DEVICE_OFFLINE "ESC_sunfc_device_offline" 80fcf3ce44SJohn Forte 81fcf3ce44SJohn Forte /* T11 FC-HBA state change tracking */ 82fcf3ce44SJohn Forte typedef uint64_t fc_hba_state_change_t; 83fcf3ce44SJohn Forte 84fcf3ce44SJohn Forte typedef struct port_id { 85fcf3ce44SJohn Forte #if defined(_BIT_FIELDS_LTOH) 86fcf3ce44SJohn Forte uint32_t port_id : 24, /* Port Identifier */ 87fcf3ce44SJohn Forte priv_lilp_posit : 8; /* LILP map position */ 88fcf3ce44SJohn Forte #else 89fcf3ce44SJohn Forte uint32_t priv_lilp_posit : 8, /* LILP map position */ 90fcf3ce44SJohn Forte port_id : 24; /* Port Identifier */ 91fcf3ce44SJohn Forte #endif /* _BIT_FIELDS_LTOH */ 92fcf3ce44SJohn Forte } fc_portid_t; 93fcf3ce44SJohn Forte 94fcf3ce44SJohn Forte typedef struct hard_addr { 95fcf3ce44SJohn Forte #if defined(_BIT_FIELDS_LTOH) 96fcf3ce44SJohn Forte uint32_t hard_addr : 24, /* hard address */ 97fcf3ce44SJohn Forte rsvd : 8; /* reserved */ 98fcf3ce44SJohn Forte #else 99fcf3ce44SJohn Forte uint32_t rsvd : 8, 100fcf3ce44SJohn Forte hard_addr : 24; /* hard address */ 101fcf3ce44SJohn Forte #endif /* _BIT_FIELDS_LTOH */ 102fcf3ce44SJohn Forte } fc_hardaddr_t; 103fcf3ce44SJohn Forte 104fcf3ce44SJohn Forte typedef struct port_type { 105fcf3ce44SJohn Forte #if defined(_BIT_FIELDS_LTOH) 106fcf3ce44SJohn Forte uint32_t rsvd : 24, 107fcf3ce44SJohn Forte port_type : 8; 108fcf3ce44SJohn Forte #else 109fcf3ce44SJohn Forte uint32_t port_type : 8, 110fcf3ce44SJohn Forte rsvd : 24; 111fcf3ce44SJohn Forte #endif /* _BIT_FIELDS_LTOH */ 112fcf3ce44SJohn Forte } fc_porttype_t; 113fcf3ce44SJohn Forte 114fcf3ce44SJohn Forte /* 115fcf3ce44SJohn Forte * FCA post reset behavior 116fcf3ce44SJohn Forte */ 117fcf3ce44SJohn Forte typedef enum fc_reset_action { 118fcf3ce44SJohn Forte FC_RESET_RETURN_NONE, /* Can't return any */ 119fcf3ce44SJohn Forte FC_RESET_RETURN_ALL, /* Return all commands reached here */ 120fcf3ce44SJohn Forte FC_RESET_RETURN_OUTSTANDING /* Return ones that haven't gone out */ 121fcf3ce44SJohn Forte } fc_reset_action_t; 122fcf3ce44SJohn Forte 123fcf3ce44SJohn Forte /* 124fcf3ce44SJohn Forte * FCA DMA behavior on Unaligned buffers 125fcf3ce44SJohn Forte */ 126fcf3ce44SJohn Forte typedef enum fc_dma_behavior { 127fcf3ce44SJohn Forte FC_ALLOW_STREAMING, /* Streaming mode for all xfers */ 128fcf3ce44SJohn Forte FC_NO_STREAMING /* Disable Streaming on unaligned */ 129fcf3ce44SJohn Forte /* buffer or byte counts */ 130fcf3ce44SJohn Forte } fc_dma_behavior_t; 131fcf3ce44SJohn Forte 132fcf3ce44SJohn Forte 133fcf3ce44SJohn Forte /* 134fcf3ce44SJohn Forte * FCA FCP command and response allocation in DVMA space 135fcf3ce44SJohn Forte */ 136fcf3ce44SJohn Forte typedef enum fc_fcp_dma { 137fcf3ce44SJohn Forte FC_DVMA_SPACE, /* allocation should be in DVMA mem */ 138fcf3ce44SJohn Forte FC_NO_DVMA_SPACE /* allocation shouldn't be DVMA mem */ 139fcf3ce44SJohn Forte } fc_fcp_dma_t; 140fcf3ce44SJohn Forte 141fcf3ce44SJohn Forte 142fcf3ce44SJohn Forte /* 143fcf3ce44SJohn Forte * struct to track rscn info both within the transport layer 144fcf3ce44SJohn Forte * and between the ULPs and transport. 145fcf3ce44SJohn Forte */ 146fcf3ce44SJohn Forte typedef struct fc_ulp_rscn_info { 147fcf3ce44SJohn Forte uint32_t ulp_rscn_count; 148fcf3ce44SJohn Forte } fc_ulp_rscn_info_t; 149fcf3ce44SJohn Forte 150fcf3ce44SJohn Forte /* 151fcf3ce44SJohn Forte * Define a value for ulp_rscn_count to indicate that the contents 152fcf3ce44SJohn Forte * of the fc_ulp_rscn_info_t struct are invalid. Note that some parts of the 153fcf3ce44SJohn Forte * code assume that this value is zero, i.e., they use kmem_zalloc(). 154fcf3ce44SJohn Forte */ 155fcf3ce44SJohn Forte #define FC_INVALID_RSCN_COUNT ((uint32_t)0) 156fcf3ce44SJohn Forte 157fcf3ce44SJohn Forte /* 158fcf3ce44SJohn Forte * FC Transport exported header files to all Consumers 159fcf3ce44SJohn Forte */ 160fcf3ce44SJohn Forte 161fcf3ce44SJohn Forte #ifdef _KERNEL 162fcf3ce44SJohn Forte #include <sys/fibre-channel/impl/fcph.h> 163fcf3ce44SJohn Forte #include <sys/fibre-channel/fc_appif.h> 164fcf3ce44SJohn Forte #include <sys/fibre-channel/impl/fc_linkapp.h> 165fcf3ce44SJohn Forte #include <sys/fibre-channel/impl/fcgs2.h> 166fcf3ce44SJohn Forte #include <sys/fibre-channel/impl/fc_fla.h> 167fcf3ce44SJohn Forte #include <sys/fibre-channel/impl/fcal.h> 168fcf3ce44SJohn Forte #include <sys/fibre-channel/impl/fctl.h> 169fcf3ce44SJohn Forte #include <sys/fibre-channel/impl/fc_error.h> 170fcf3ce44SJohn Forte #include <sys/fibre-channel/fcio.h> 171fcf3ce44SJohn Forte #include <sys/fibre-channel/ulp/fcp.h> 172fcf3ce44SJohn Forte #include <sys/fibre-channel/ulp/fcp_util.h> 173fcf3ce44SJohn Forte 174fcf3ce44SJohn Forte /* 175fcf3ce44SJohn Forte * For drivers which do not include these - must be last 176fcf3ce44SJohn Forte */ 177fcf3ce44SJohn Forte #include <sys/ddi.h> 178fcf3ce44SJohn Forte #include <sys/sunddi.h> 179fcf3ce44SJohn Forte #include <sys/stat.h> 180fcf3ce44SJohn Forte #include <sys/sunndi.h> 181fcf3ce44SJohn Forte #include <sys/devctl.h> 182fcf3ce44SJohn Forte #endif /* _KERNEL */ 183fcf3ce44SJohn Forte 184fcf3ce44SJohn Forte #ifdef __cplusplus 185fcf3ce44SJohn Forte } 186fcf3ce44SJohn Forte #endif 187fcf3ce44SJohn Forte 188fcf3ce44SJohn Forte #endif /* _FC_TYPES_H */ 189