1*fcf3ce44SJohn Forte /* 2*fcf3ce44SJohn Forte * CDDL HEADER START 3*fcf3ce44SJohn Forte * 4*fcf3ce44SJohn Forte * The contents of this file are subject to the terms of the 5*fcf3ce44SJohn Forte * Common Development and Distribution License (the "License"). 6*fcf3ce44SJohn Forte * You may not use this file except in compliance with the License. 7*fcf3ce44SJohn Forte * 8*fcf3ce44SJohn Forte * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9*fcf3ce44SJohn Forte * or http://www.opensolaris.org/os/licensing. 10*fcf3ce44SJohn Forte * See the License for the specific language governing permissions 11*fcf3ce44SJohn Forte * and limitations under the License. 12*fcf3ce44SJohn Forte * 13*fcf3ce44SJohn Forte * When distributing Covered Code, include this CDDL HEADER in each 14*fcf3ce44SJohn Forte * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15*fcf3ce44SJohn Forte * If applicable, add the following below this CDDL HEADER, with the 16*fcf3ce44SJohn Forte * fields enclosed by brackets "[]" replaced with your own identifying 17*fcf3ce44SJohn Forte * information: Portions Copyright [yyyy] [name of copyright owner] 18*fcf3ce44SJohn Forte * 19*fcf3ce44SJohn Forte * CDDL HEADER END 20*fcf3ce44SJohn Forte */ 21*fcf3ce44SJohn Forte /* 22*fcf3ce44SJohn Forte * Copyright 2008 Sun Microsystems, Inc. All rights reserved. 23*fcf3ce44SJohn Forte * Use is subject to license terms. 24*fcf3ce44SJohn Forte */ 25*fcf3ce44SJohn Forte 26*fcf3ce44SJohn Forte #ifndef _SYS_FIBRE_CHANNEL_IMPL_FCAL_H 27*fcf3ce44SJohn Forte #define _SYS_FIBRE_CHANNEL_IMPL_FCAL_H 28*fcf3ce44SJohn Forte 29*fcf3ce44SJohn Forte 30*fcf3ce44SJohn Forte #include <sys/note.h> 31*fcf3ce44SJohn Forte 32*fcf3ce44SJohn Forte #ifdef __cplusplus 33*fcf3ce44SJohn Forte extern "C" { 34*fcf3ce44SJohn Forte #endif 35*fcf3ce44SJohn Forte 36*fcf3ce44SJohn Forte /* 37*fcf3ce44SJohn Forte * Loop Initilization Identifier values 38*fcf3ce44SJohn Forte */ 39*fcf3ce44SJohn Forte #define LID_LISM 0x1101 40*fcf3ce44SJohn Forte #define LID_LIFA 0x1102 41*fcf3ce44SJohn Forte #define LID_LIPA 0x1103 42*fcf3ce44SJohn Forte #define LID_LIHA 0x1104 43*fcf3ce44SJohn Forte #define LID_LISA 0x1105 44*fcf3ce44SJohn Forte #define LID_LIRP 0x1106 45*fcf3ce44SJohn Forte #define LID_LILP 0x1107 46*fcf3ce44SJohn Forte 47*fcf3ce44SJohn Forte /* 48*fcf3ce44SJohn Forte * lilp_magic definitions 49*fcf3ce44SJohn Forte */ 50*fcf3ce44SJohn Forte #define MAGIC_LISM 0x01 51*fcf3ce44SJohn Forte #define MAGIC_LIFA 0x02 52*fcf3ce44SJohn Forte #define MAGIC_LIPA 0x03 53*fcf3ce44SJohn Forte #define MAGIC_LIHA 0x04 54*fcf3ce44SJohn Forte #define MAGIC_LISA 0x05 55*fcf3ce44SJohn Forte #define MAGIC_LIRP 0x06 56*fcf3ce44SJohn Forte #define MAGIC_LILP 0x07 57*fcf3ce44SJohn Forte 58*fcf3ce44SJohn Forte /* 59*fcf3ce44SJohn Forte * PLDA timers (in seconds) 60*fcf3ce44SJohn Forte */ 61*fcf3ce44SJohn Forte #define PLDA_R_A_TOV 2 62*fcf3ce44SJohn Forte #define PLDA_RR_TOV 2 63*fcf3ce44SJohn Forte 64*fcf3ce44SJohn Forte /* 65*fcf3ce44SJohn Forte * Note that my_alpa field is of 16 bit size. The lowest significant 66*fcf3ce44SJohn Forte * byte contains the real ALPA. The highest significant bits are 67*fcf3ce44SJohn Forte * used to indicate if the LBIT was set during Loop Initialization. 68*fcf3ce44SJohn Forte * 69*fcf3ce44SJohn Forte * If the NL_Ports on the loop participate in the LIRP and LILP dance 70*fcf3ce44SJohn Forte * as part of Loop Initialization then the presence of an F_Port can 71*fcf3ce44SJohn Forte * be detected by checking for the presence of AL_PA '0x00' in the AL_PA 72*fcf3ce44SJohn Forte * list (That does not however guarantee if there is a violating NL_Port 73*fcf3ce44SJohn Forte * trying to grab AL_PA value of '0x00'). 74*fcf3ce44SJohn Forte * 75*fcf3ce44SJohn Forte * Some FCAs may be capable of notifying if the L_BIT was set in the 76*fcf3ce44SJohn Forte * AL_PA bit map. The host should then perform an IMPLICIT LOGO and 77*fcf3ce44SJohn Forte * execute a PLOGI before sending any other command. 78*fcf3ce44SJohn Forte */ 79*fcf3ce44SJohn Forte #define LILP_LBIT_SET 0x100 /* Login Required */ 80*fcf3ce44SJohn Forte 81*fcf3ce44SJohn Forte typedef struct fc_lilpmap { 82*fcf3ce44SJohn Forte uint16_t lilp_magic; 83*fcf3ce44SJohn Forte uint16_t lilp_myalpa; 84*fcf3ce44SJohn Forte uchar_t lilp_length; 85*fcf3ce44SJohn Forte uchar_t lilp_alpalist[127]; 86*fcf3ce44SJohn Forte } fc_lilpmap_t; 87*fcf3ce44SJohn Forte 88*fcf3ce44SJohn Forte #if !defined(__lint) 89*fcf3ce44SJohn Forte _NOTE(SCHEME_PROTECTS_DATA("unique per request", fc_lilpmap)) 90*fcf3ce44SJohn Forte #endif /* __lint */ 91*fcf3ce44SJohn Forte 92*fcf3ce44SJohn Forte #ifdef __cplusplus 93*fcf3ce44SJohn Forte } 94*fcf3ce44SJohn Forte #endif 95*fcf3ce44SJohn Forte 96*fcf3ce44SJohn Forte #endif /* _SYS_FIBRE_CHANNEL_IMPL_FCAL_H */ 97