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 _SUN_FC_H 27*fcf3ce44SJohn Forte #define _SUN_FC_H 28*fcf3ce44SJohn Forte 29*fcf3ce44SJohn Forte 30*fcf3ce44SJohn Forte 31*fcf3ce44SJohn Forte #include <hbaapi.h> 32*fcf3ce44SJohn Forte #include <vendorhbaapi.h> 33*fcf3ce44SJohn Forte 34*fcf3ce44SJohn Forte #define HR_SECOND 1000000000 35*fcf3ce44SJohn Forte 36*fcf3ce44SJohn Forte #ifdef __cplusplus 37*fcf3ce44SJohn Forte extern "C" { 38*fcf3ce44SJohn Forte #endif 39*fcf3ce44SJohn Forte 40*fcf3ce44SJohn Forte 41*fcf3ce44SJohn Forte // Public External routines 42*fcf3ce44SJohn Forte extern HBA_STATUS HBA_RegisterLibrary(PHBA_ENTRYPOINTS); 43*fcf3ce44SJohn Forte extern HBA_UINT32 Sun_fcGetVersion(); 44*fcf3ce44SJohn Forte extern HBA_STATUS Sun_fcLoadLibrary(); 45*fcf3ce44SJohn Forte extern HBA_STATUS Sun_fcFreeLibrary(); 46*fcf3ce44SJohn Forte extern HBA_UINT32 Sun_fcGetNumberOfAdapters(); 47*fcf3ce44SJohn Forte extern HBA_STATUS Sun_fcGetAdapterName(HBA_UINT32, char *); 48*fcf3ce44SJohn Forte extern HBA_HANDLE Sun_fcOpenAdapter(char *); 49*fcf3ce44SJohn Forte extern void Sun_fcCloseAdapter(HBA_HANDLE); 50*fcf3ce44SJohn Forte extern HBA_STATUS Sun_fcGetAdapterAttributes(HBA_HANDLE, 51*fcf3ce44SJohn Forte PHBA_ADAPTERATTRIBUTES); 52*fcf3ce44SJohn Forte extern HBA_STATUS Sun_fcGetAdapterPortAttributes(HBA_HANDLE, HBA_UINT32, 53*fcf3ce44SJohn Forte PHBA_PORTATTRIBUTES); 54*fcf3ce44SJohn Forte extern HBA_STATUS Sun_fcGetPortStatistics(HBA_HANDLE, HBA_UINT32, 55*fcf3ce44SJohn Forte PHBA_PORTSTATISTICS); 56*fcf3ce44SJohn Forte extern HBA_STATUS Sun_fcGetDiscoveredPortAttributes(HBA_HANDLE, HBA_UINT32, 57*fcf3ce44SJohn Forte HBA_UINT32, PHBA_PORTATTRIBUTES); 58*fcf3ce44SJohn Forte extern HBA_STATUS Sun_fcGetPortAttributesByWWN(HBA_HANDLE, HBA_WWN, 59*fcf3ce44SJohn Forte PHBA_PORTATTRIBUTES); 60*fcf3ce44SJohn Forte extern HBA_STATUS Sun_fcSendCTPassThru(HBA_HANDLE, void *, HBA_UINT32, void *, 61*fcf3ce44SJohn Forte HBA_UINT32); 62*fcf3ce44SJohn Forte extern void Sun_fcRefreshInformation(HBA_HANDLE); 63*fcf3ce44SJohn Forte extern void Sun_fcResetStatistics(HBA_HANDLE handle, HBA_UINT32 port); 64*fcf3ce44SJohn Forte extern HBA_STATUS Sun_fcGetFcpTargetMapping(HBA_HANDLE, PHBA_FCPTARGETMAPPING); 65*fcf3ce44SJohn Forte extern HBA_STATUS Sun_fcGetFcpPersistentBinding(HBA_HANDLE, PHBA_FCPBINDING); 66*fcf3ce44SJohn Forte extern HBA_STATUS Sun_fcGetEventBuffer(HBA_HANDLE, PHBA_EVENTINFO, 67*fcf3ce44SJohn Forte HBA_UINT32 *); 68*fcf3ce44SJohn Forte extern HBA_STATUS Sun_fcSetRNIDMgmtInfo(HBA_HANDLE, HBA_MGMTINFO); 69*fcf3ce44SJohn Forte extern HBA_STATUS Sun_fcGetRNIDMgmtInfo(HBA_HANDLE, PHBA_MGMTINFO); 70*fcf3ce44SJohn Forte extern HBA_STATUS Sun_fcSendRNID(HBA_HANDLE, HBA_WWN, HBA_WWNTYPE, 71*fcf3ce44SJohn Forte void *, HBA_UINT32 *); 72*fcf3ce44SJohn Forte extern HBA_STATUS Sun_fcSendScsiInquiry(HBA_HANDLE, HBA_WWN, HBA_UINT64, 73*fcf3ce44SJohn Forte HBA_UINT8, HBA_UINT32, void *, HBA_UINT32, void *, HBA_UINT32); 74*fcf3ce44SJohn Forte extern HBA_STATUS Sun_fcSendReportLUNs(HBA_HANDLE, HBA_WWN, void *, HBA_UINT32, 75*fcf3ce44SJohn Forte void *, HBA_UINT32); 76*fcf3ce44SJohn Forte extern HBA_STATUS Sun_fcSendReadCapacity(HBA_HANDLE, HBA_WWN, HBA_UINT64, 77*fcf3ce44SJohn Forte void *, HBA_UINT32, void *, HBA_UINT32); 78*fcf3ce44SJohn Forte 79*fcf3ce44SJohn Forte // V2 external routines 80*fcf3ce44SJohn Forte extern HBA_STATUS Sun_fcOpenAdapterByWWN(HBA_HANDLE *, HBA_WWN); 81*fcf3ce44SJohn Forte extern HBA_STATUS Sun_fcGetFcpTargetMappingV2(HBA_HANDLE, HBA_WWN, 82*fcf3ce44SJohn Forte HBA_FCPTARGETMAPPINGV2 *); 83*fcf3ce44SJohn Forte extern HBA_STATUS Sun_fcSendCTPassThruV2(HBA_HANDLE, HBA_WWN, void *, 84*fcf3ce44SJohn Forte HBA_UINT32, void *, HBA_UINT32 *); 85*fcf3ce44SJohn Forte extern void Sun_fcRefreshAdapterConfiguration(void); 86*fcf3ce44SJohn Forte extern HBA_STATUS Sun_fcGetBindingCapability(HBA_HANDLE, HBA_WWN, 87*fcf3ce44SJohn Forte HBA_BIND_CAPABILITY *); 88*fcf3ce44SJohn Forte extern HBA_STATUS Sun_fcGetBindingSupport(HBA_HANDLE, HBA_WWN, 89*fcf3ce44SJohn Forte HBA_BIND_CAPABILITY *); 90*fcf3ce44SJohn Forte extern HBA_STATUS Sun_fcSetBindingSupport(HBA_HANDLE, HBA_WWN, 91*fcf3ce44SJohn Forte HBA_BIND_CAPABILITY); 92*fcf3ce44SJohn Forte extern HBA_STATUS Sun_fcSetPersistentBindingV2(HBA_HANDLE, HBA_WWN, 93*fcf3ce44SJohn Forte const HBA_FCPBINDING2 *); 94*fcf3ce44SJohn Forte extern HBA_STATUS Sun_fcGetPersistentBindingV2(HBA_HANDLE, HBA_WWN, 95*fcf3ce44SJohn Forte HBA_FCPBINDING2 *); 96*fcf3ce44SJohn Forte extern HBA_STATUS Sun_fcRemovePersistentBinding(HBA_HANDLE, HBA_WWN, 97*fcf3ce44SJohn Forte const HBA_FCPBINDING2 *); 98*fcf3ce44SJohn Forte extern HBA_STATUS Sun_fcRemoveAllPersistentBindings(HBA_HANDLE, HBA_WWN); 99*fcf3ce44SJohn Forte extern HBA_STATUS Sun_fcSendRNIDV2(HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT32, 100*fcf3ce44SJohn Forte HBA_UINT32, void *, HBA_UINT32*); 101*fcf3ce44SJohn Forte extern HBA_STATUS Sun_fcScsiInquiryV2(HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT64, 102*fcf3ce44SJohn Forte HBA_UINT8, HBA_UINT8, void *, HBA_UINT32 *, HBA_UINT8 *, void *, 103*fcf3ce44SJohn Forte HBA_UINT32 *); 104*fcf3ce44SJohn Forte extern HBA_STATUS Sun_fcScsiReportLUNsV2(HBA_HANDLE, HBA_WWN, HBA_WWN, void *, 105*fcf3ce44SJohn Forte HBA_UINT32 *, HBA_UINT8 *, void *, HBA_UINT32 *); 106*fcf3ce44SJohn Forte extern HBA_STATUS Sun_fcScsiReadCapacityV2(HBA_HANDLE, HBA_WWN, HBA_WWN, 107*fcf3ce44SJohn Forte HBA_UINT64, void *, HBA_UINT32 *, HBA_UINT8 *, void *, HBA_UINT32 *); 108*fcf3ce44SJohn Forte extern HBA_UINT32 Sun_fcGetVendorLibraryAttributes(HBA_LIBRARYATTRIBUTES *); 109*fcf3ce44SJohn Forte extern HBA_STATUS Sun_fcRemoveCallback(HBA_CALLBACKHANDLE); 110*fcf3ce44SJohn Forte extern HBA_STATUS Sun_fcRegisterForAdapterAddEvents(void (*)(void *, HBA_WWN, 111*fcf3ce44SJohn Forte HBA_UINT32), void *, HBA_CALLBACKHANDLE *); 112*fcf3ce44SJohn Forte extern HBA_STATUS Sun_fcRegisterForAdapterEvents(void (*)(void *, HBA_WWN, 113*fcf3ce44SJohn Forte HBA_UINT32), void *, HBA_HANDLE, HBA_CALLBACKHANDLE *); 114*fcf3ce44SJohn Forte extern HBA_STATUS Sun_fcRegisterForAdapterPortEvents(void (*)(void *, HBA_WWN, 115*fcf3ce44SJohn Forte HBA_UINT32, HBA_UINT32), void *, HBA_HANDLE, HBA_WWN, HBA_CALLBACKHANDLE *); 116*fcf3ce44SJohn Forte extern HBA_STATUS Sun_fcRegisterForAdapterPortStatEvents(void (*)(void *, 117*fcf3ce44SJohn Forte HBA_WWN, HBA_UINT32), void *, HBA_HANDLE, HBA_WWN, 118*fcf3ce44SJohn Forte HBA_PORTSTATISTICS, HBA_UINT32, HBA_CALLBACKHANDLE *); 119*fcf3ce44SJohn Forte extern HBA_STATUS Sun_fcRegisterForTargetEvents(void (*)(void *, HBA_WWN, 120*fcf3ce44SJohn Forte HBA_WWN, HBA_UINT32), void *, HBA_HANDLE, HBA_WWN, HBA_WWN, 121*fcf3ce44SJohn Forte HBA_CALLBACKHANDLE *, HBA_UINT32); 122*fcf3ce44SJohn Forte extern HBA_STATUS Sun_fcRegisterForLinkEvents(void (*)(void *, HBA_WWN, 123*fcf3ce44SJohn Forte HBA_UINT32, void *, HBA_UINT32), void *, void *, HBA_UINT32, HBA_HANDLE, 124*fcf3ce44SJohn Forte HBA_CALLBACKHANDLE *); 125*fcf3ce44SJohn Forte extern HBA_STATUS Sun_fcSendRLS(HBA_HANDLE, HBA_WWN, HBA_WWN, 126*fcf3ce44SJohn Forte void *, HBA_UINT32 *); 127*fcf3ce44SJohn Forte extern HBA_STATUS Sun_fcSendRPL(HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT32, 128*fcf3ce44SJohn Forte HBA_UINT32, void *, HBA_UINT32 *); 129*fcf3ce44SJohn Forte extern HBA_STATUS Sun_fcSendRPS(HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT32, 130*fcf3ce44SJohn Forte HBA_WWN, HBA_UINT32, void *, HBA_UINT32 *); 131*fcf3ce44SJohn Forte extern HBA_STATUS Sun_fcSendSRL(HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT32, 132*fcf3ce44SJohn Forte void *, HBA_UINT32 *); 133*fcf3ce44SJohn Forte extern HBA_STATUS Sun_fcSendLIRR(HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT8, 134*fcf3ce44SJohn Forte HBA_UINT8, void *, HBA_UINT32 *); 135*fcf3ce44SJohn Forte extern HBA_STATUS Sun_fcGetFC4Statistics(HBA_HANDLE, HBA_WWN, HBA_UINT8, 136*fcf3ce44SJohn Forte HBA_FC4STATISTICS *); 137*fcf3ce44SJohn Forte extern HBA_STATUS Sun_fcGetFCPStatistics(HBA_HANDLE, const HBA_SCSIID *, 138*fcf3ce44SJohn Forte HBA_FC4STATISTICS *); 139*fcf3ce44SJohn Forte 140*fcf3ce44SJohn Forte #ifdef __cplusplus 141*fcf3ce44SJohn Forte } 142*fcf3ce44SJohn Forte #endif 143*fcf3ce44SJohn Forte 144*fcf3ce44SJohn Forte #include <sys/types.h> 145*fcf3ce44SJohn Forte #include <netinet/in.h> 146*fcf3ce44SJohn Forte #include <inttypes.h> 147*fcf3ce44SJohn Forte #ifdef _BIG_ENDIAN 148*fcf3ce44SJohn Forte #define htonll(x) (x) 149*fcf3ce44SJohn Forte #define ntohll(x) (x) 150*fcf3ce44SJohn Forte #else 151*fcf3ce44SJohn Forte #define htonll(x) ((((uint64_t)htonl(x)) << 32) + htonl(x >> 32)) 152*fcf3ce44SJohn Forte #define ntohll(x) ((((uint64_t)ntohl(x)) << 32) + ntohl(x >> 32)) 153*fcf3ce44SJohn Forte #endif 154*fcf3ce44SJohn Forte 155*fcf3ce44SJohn Forte 156*fcf3ce44SJohn Forte 157*fcf3ce44SJohn Forte #include <string.h> 158*fcf3ce44SJohn Forte inline u_longlong_t 159*fcf3ce44SJohn Forte wwnConversion(uchar_t *wwn) { 160*fcf3ce44SJohn Forte u_longlong_t tmp; 161*fcf3ce44SJohn Forte memcpy(&tmp, wwn, sizeof (u_longlong_t)); 162*fcf3ce44SJohn Forte return (ntohll(tmp)); 163*fcf3ce44SJohn Forte } 164*fcf3ce44SJohn Forte 165*fcf3ce44SJohn Forte #ifndef SCMD_REPORT_LUNS 166*fcf3ce44SJohn Forte #define SCMD_REPORT_LUNS 0xA0 167*fcf3ce44SJohn Forte #endif 168*fcf3ce44SJohn Forte 169*fcf3ce44SJohn Forte 170*fcf3ce44SJohn Forte 171*fcf3ce44SJohn Forte #endif /* _SUN_FC_H */ 172