1 /* 2 * ***************************************************************************** 3 * 4 * Description 5 * hbaapi.h - header file for Sun extension for target mode adaptor 6 * support. 7 * 8 * License: 9 * The contents of this file are subject to the SNIA Public License 10 * Version 1.0 (the "License"); you may not use this file except in 11 * compliance with the License. You may obtain a copy of the License at 12 * 13 * http://www.snia.org/English/Resources/Code/OpenSource.html 14 * 15 * Software distributed under the License is distributed on an "AS IS" 16 * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See 17 * the License for the specific language governing rights and limitations 18 * under the License. 19 * 20 * ******************************************************************************* 21 */ 22 /* 23 * Copyright 2009 Sun Microsystems, Inc. All rights reserved. 24 * Use is subject to license terms. 25 */ 26 27 #ifdef __cplusplus 28 extern "C" { 29 #endif 30 31 32 #ifndef _HBA_API_SUN_H 33 #define _HBA_API_SUN_H 34 35 #include <hbaapi.h> 36 37 #define HBA_CREATE_WWN_RANDOM 1 38 #define HBA_CREATE_WWN_FACTORY 2 39 40 typedef struct HBA_NPIVPortList { 41 uint32_t numPorts; 42 char hbaPaths[1][1024]; 43 } HBA_NPIVPORTLIST, *PHBA_NPIVPORTLIST; 44 45 typedef struct HBA_PortNPIVAttributes { 46 HBA_INT32 npivflag; 47 HBA_WWN NodeWWN; 48 HBA_WWN PortWWN; 49 HBA_UINT32 MaxNumberOfNPIVPorts; 50 HBA_UINT32 NumberOfNPIVPorts; 51 } HBA_PORTNPIVATTRIBUTES, *PHBA_PORTNPIVATTRIBUTES; 52 53 typedef struct HBA_NPIVAttributes { 54 HBA_WWN NodeWWN; 55 HBA_WWN PortWWN; 56 } HBA_NPIVATTRIBUTES, *PHBA_NPIVATTRIBUTES; 57 58 typedef struct HBA_NPIVCreateEntry { 59 HBA_WWN VNodeWWN; 60 HBA_WWN VPortWWN; 61 uint32_t vindex; 62 } HBA_NPIVCREATEENTRY, *PHBA_NPIVCREATEENTRY; 63 64 /* Device Level Events */ 65 #define HBA_EVENT_DEVICE_UNKNOWN 0x600 66 #define HBA_EVENT_DEVICE_OFFLINE 0x601 67 #define HBA_EVENT_DEVICE_ONLINE 0x602 68 69 HBA_API HBA_UINT32 Sun_HBA_GetNumberOfTgtAdapters(); 70 71 HBA_API HBA_STATUS Sun_HBA_GetTgtAdapterName( 72 HBA_UINT32 adapterindex, 73 char *adaptername 74 ); 75 76 HBA_API HBA_HANDLE Sun_HBA_OpenTgtAdapter( 77 char* adaptername 78 ); 79 80 HBA_API HBA_STATUS Sun_HBA_OpenTgtAdapterByWWN( 81 HBA_HANDLE *handle, 82 HBA_WWN wwn 83 ); 84 85 HBA_API HBA_STATUS Sun_HBA_NPIVGetAdapterAttributes( 86 HBA_HANDLE handle, 87 HBA_ADAPTERATTRIBUTES 88 *hbaattributes 89 ); 90 HBA_API HBA_STATUS Sun_HBA_GetNPIVPortInfo( 91 HBA_HANDLE handle, 92 HBA_UINT32 portindex, 93 HBA_UINT32 vportindex, 94 HBA_NPIVATTRIBUTES *attributes 95 ); 96 HBA_API HBA_STATUS Sun_HBA_DeleteNPIVPort( 97 HBA_HANDLE handle, 98 HBA_UINT32 portindex, 99 HBA_WWN vportWWN 100 ); 101 HBA_API HBA_STATUS Sun_HBA_CreateNPIVPort( 102 HBA_HANDLE handle, 103 HBA_UINT32 portindex, 104 HBA_WWN vnodeWWN, 105 HBA_WWN vportWWN, 106 HBA_UINT32 *npivportindex 107 ); 108 HBA_API HBA_STATUS Sun_HBA_GetPortNPIVAttributes( 109 HBA_HANDLE handle, 110 HBA_UINT32 portindex, 111 HBA_PORTNPIVATTRIBUTES *portnpivattributes 112 ); 113 114 HBA_STATUS Sun_HBA_AdapterCreateWWN( 115 HBA_HANDLE handle, 116 HBA_UINT32 portindex, 117 HBA_WWN *nwwn, 118 HBA_WWN *pwwn, 119 HBA_WWN *OUI, 120 HBA_INT32 method 121 ); 122 123 HBA_STATUS Sun_HBA_AdapterReturnWWN( 124 HBA_HANDLE handle, 125 HBA_UINT32 portindex, 126 HBA_WWN *nwwn, 127 HBA_WWN *pwwn 128 ); 129 130 HBA_API HBA_STATUS Sun_HBA_RegisterForAdapterDeviceEvents( 131 void (*callback)( 132 void *data, 133 HBA_WWN PortWWN, 134 HBA_UINT32 eventType, 135 HBA_UINT32 fabricPortID 136 ), 137 void *userData, 138 HBA_HANDLE handle, 139 HBA_WWN PortWWN, 140 HBA_CALLBACKHANDLE *callbackHandle 141 ); 142 143 HBA_API HBA_STATUS Sun_HBA_ForceLip( 144 HBA_HANDLE handle, 145 int *rval); 146 147 #endif /* HBA_API_SUN_H */ 148 149 #ifdef __cplusplus 150 } 151 #endif /* _HBA_API_SUN_H */ 152