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 HBA_STATUS Sun_HBA_FreeLibrary(void);
148
149 #endif /* HBA_API_SUN_H */
150
151 #ifdef __cplusplus
152 }
153 #endif /* _HBA_API_SUN_H */