31 typedef uint8_t HBA_UINT8;
32 typedef uint16_t HBA_UINT16;
33 typedef uint32_t HBA_UINT32;
34 typedef uint64_t HBA_UINT64;
35 typedef int64_t HBA_INT64;
36 typedef HBA_UINT8 HBA_BOOLEAN;
37 typedef HBA_UINT32 HBA_HANDLE;
39 typedef struct HBA_wwn {
46 typedef HBA_UINT32 HBA_STATUS;
48 #define HBA_STATUS_OK 0
49 #define HBA_STATUS_ERROR 1
50 #define HBA_STATUS_ERROR_NOT_SUPPORTED 2
51 #define HBA_STATUS_ERROR_INVALID_HANDLE 3
52 #define HBA_STATUS_ERROR_ARG 4
53 #define HBA_STATUS_ERROR_ILLEGAL_WWN 5
54 #define HBA_STATUS_ERROR_ILLEGAL_INDEX 6
55 #define HBA_STATUS_ERROR_MORE_DATA 7
56 #define HBA_STATUS_ERROR_STALE_DATA 8
57 #define HBA_STATUS_SCSI_CHECK_CONDITION 9
58 #define HBA_STATUS_ERROR_BUSY 10
59 #define HBA_STATUS_ERROR_TRY_AGAIN 11
60 #define HBA_STATUS_ERROR_UNAVAILABLE 12
61 #define HBA_STATUS_ERROR_ELS_REJECT 13
62 #define HBA_STATUS_ERROR_INVALID_LUN 14
63 #define HBA_STATUS_ERROR_INCOMPATIBLE 15
64 #define HBA_STATUS_ERROR_AMBIGUOUS_WWN 16
65 #define HBA_STATUS_ERROR_LOCAL_BUS 17
66 #define HBA_STATUS_ERROR_LOCAL_TARGET 18
67 #define HBA_STATUS_ERROR_LOCAL_LUN 19
68 #define HBA_STATUS_ERROR_LOCAL_SCSIID_BOUND 20
69 #define HBA_STATUS_ERROR_TARGET_FCID 21
70 #define HBA_STATUS_ERROR_TARGET_NODE_WWN 22
71 #define HBA_STATUS_ERROR_TARGET_PORT_WWN 23
72 #define HBA_STATUS_ERROR_TARGET_LUN 24
73 #define HBA_STATUS_ERROR_TARGET_LUID 25
74 #define HBA_STATUS_ERROR_NO_SUCH_BINDING 26
75 #define HBA_STATUS_ERROR_NOT_A_TARGET 27
76 #define HBA_STATUS_ERROR_UNSUPPORTED_FC4 28
77 #define HBA_STATUS_ERROR_INCAPABLE 29
78 #define HBA_STATUS_ERROR_TARGET_BUSY 30
79 #define HBA_STATUS_ERROR_NOT_LOADED 31
80 #define HBA_STATUS_ERROR_ALREADY_LOADED 32
81 #define HBA_STATUS_ERROR_ILLEGAL_FCID 33
86 typedef struct HBA_AdapterAttributes {
87 char Manufacturer[64];
88 char SerialNumber[64];
90 char ModelDescription[256];
92 char NodeSymbolicName[256];
93 char HardwareVersion[256];
94 char DriverVersion[256];
95 char OptionROMVersion[256];
96 char FirmwareVersion[256];
97 HBA_UINT32 VendorSpecificID;
98 HBA_UINT32 NumberOfPorts;
100 } HBA_ADAPTERATTRIBUTES;
105 typedef HBA_UINT32 HBA_PORTTYPE;
107 #define HBA_PORTTYPE_UNKNOWN 1
108 #define HBA_PORTTYPE_OTHER 2
109 #define HBA_PORTTYPE_NOTPRESENT 3
110 #define HBA_PORTTYPE_NPORT 5
111 #define HBA_PORTTYPE_NLPORT 6
112 #define HBA_PORTTYPE_FLPORT 7
113 #define HBA_PORTTYPE_FPORT 8
114 #define HBA_PORTTYPE_LPORT 20
115 #define HBA_PORTTYPE_PTP 21
117 typedef HBA_UINT32 HBA_PORTSTATE;
119 #define HBA_PORTSTATE_UNKNOWN 1
120 #define HBA_PORTSTATE_ONLINE 2
121 #define HBA_PORTSTATE_OFFLINE 3
122 #define HBA_PORTSTATE_BYPASSED 4
123 #define HBA_PORTSTATE_DIAGNOSTICS 5
124 #define HBA_PORTSTATE_LINKDOWN 6
125 #define HBA_PORTSTATE_ERROR 7
126 #define HBA_PORTSTATE_LOOPBACK 8
128 typedef HBA_UINT32 HBA_PORTSPEED;
130 #define HBA_PORTSPEED_UNKNOWN 0
131 #define HBA_PORTSPEED_1GBIT 1
132 #define HBA_PORTSPEED_2GBIT 2
133 #define HBA_PORTSPEED_10GBIT 4
134 #define HBA_PORTSPEED_4GBIT 8
135 #define HBA_PORTSPEED_8GBIT 16
136 #define HBA_PORTSPEED_16GBIT 32
137 #define HBA_PORTSPEED_NOT_NEGOTIATED (1<<15)
140 typedef HBA_UINT32 HBA_COS;
143 typedef struct HBA_fc4types {
147 typedef struct HBA_PortAttributes {
151 HBA_PORTTYPE PortType;
152 HBA_PORTSTATE PortState;
153 HBA_COS PortSupportedClassofService;
154 HBA_FC4TYPES PortSupportedFc4Types;
155 HBA_FC4TYPES PortActiveFc4Types;
156 char PortSymbolicName[256];
157 char OSDeviceName[256];
158 HBA_PORTSPEED PortSupportedSpeed;
159 HBA_PORTSPEED PortSpeed;
160 HBA_UINT32 PortMaxFrameSize;
162 HBA_UINT32 NumberofDiscoveredPorts;
163 } HBA_PORTATTRIBUTES;
169 typedef struct HBA_PortStatistics {
170 HBA_INT64 SecondsSinceLastReset;
177 HBA_INT64 ErrorFrames;
178 HBA_INT64 DumpedFrames;
179 HBA_INT64 LinkFailureCount;
180 HBA_INT64 LossOfSyncCount;
181 HBA_INT64 LossOfSignalCount;
182 HBA_INT64 PrimitiveSeqProtocolErrCount;
183 HBA_INT64 InvalidTxWordCount;
184 HBA_INT64 InvalidCRCCount;
185 } HBA_PORTSTATISTICS;
188 typedef struct HBA_FC4Statistics {
189 HBA_INT64 InputRequests;
190 HBA_INT64 OutputRequests;
191 HBA_INT64 ControlRequests;
192 HBA_INT64 InputMegabytes;
193 HBA_INT64 OutputMegabytes;
199 typedef enum HBA_fcpbindingtype {
203 } HBA_FCPBINDINGTYPE;
205 typedef HBA_UINT32 HBA_BIND_CAPABILITY;
207 #define HBA_CAN_BIND_TO_D_ID 0x0001
208 #define HBA_CAN_BIND_TO_WWPN 0x0002
209 #define HBA_CAN_BIND_TO_WWNN 0x0004
210 #define HBA_CAN_BIND_TO_LUID 0x0008
211 #define HBA_CAN_BIND_ANY_LUNS 0x0400
212 #define HBA_CAN_BIND_TARGETS 0x0800
213 #define HBA_CAN_BIND_AUTOMAP 0x1000
214 #define HBA_CAN_BIND_CONFIGURED 0x2000
216 typedef HBA_UINT32 HBA_BIND_TYPE;
218 #define HBA_BIND_TO_D_ID 0x0001
219 #define HBA_BIND_TO_WWPN 0x0002
220 #define HBA_BIND_TO_WWNN 0x0004
221 #define HBA_BIND_TO_LUID 0x0008
222 #define HBA_BIND_TARGETS 0x8000
224 typedef struct HBA_LUID {
228 typedef struct HBA_ScsiId {
229 char OSDeviceName[256];
230 HBA_UINT32 ScsiBusNumber;
231 HBA_UINT32 ScsiTargetNumber;
232 HBA_UINT32 ScsiOSLun;
235 typedef struct HBA_FcpId {
242 typedef struct HBA_FcpScsiEntry {
247 typedef struct HBA_FcpScsiEntryV2 {
251 } HBA_FCPSCSIENTRYV2;
253 typedef struct HBA_FCPTargetMapping {
254 HBA_UINT32 NumberOfEntries;
255 HBA_FCPSCSIENTRY entry[1];
256 } HBA_FCPTARGETMAPPING;
258 typedef struct HBA_FCPTargetMappingV2 {
259 HBA_UINT32 NumberOfEntries;
260 HBA_FCPSCSIENTRYV2 entry[1];
261 } HBA_FCPTARGETMAPPINGV2;
263 typedef struct HBA_FCPBindingEntry {
264 HBA_FCPBINDINGTYPE type;
268 } HBA_FCPBINDINGENTRY;
270 typedef struct HBA_FCPBinding {
271 HBA_UINT32 NumberOfEntries;
272 HBA_FCPBINDINGENTRY entry[1];
275 typedef struct HBA_FCPBindingEntry2 {
281 } HBA_FCPBINDINGENTRY2;
283 typedef struct HBA_FCPBinding2 {
284 HBA_UINT32 NumberOfEntries;
285 HBA_FCPBINDINGENTRY2 entry[1];
291 typedef enum HBA_wwntype {
296 typedef struct HBA_MgmtInfo {
300 HBA_UINT32 NumberOfAttachedNodes;
301 HBA_UINT16 IPVersion;
303 HBA_UINT8 IPAddress[16];
305 HBA_UINT16 TopologyDiscoveryFlags;
311 #define HBA_EVENT_LIP_OCCURRED 1
312 #define HBA_EVENT_LINK_UP 2
313 #define HBA_EVENT_LINK_DOWN 3
314 #define HBA_EVENT_LIP_RESET_OCCURRED 4
315 #define HBA_EVENT_RSCN 5
316 #define HBA_EVENT_PROPRIETARY 0xffff
318 typedef struct HBA_LinkEventInfo {
320 HBA_UINT32 Reserved[3];
321 } HBA_LINK_EVENTINFO;
323 typedef struct HBA_RSCN_EventInfo {
325 HBA_UINT32 NPortPage;
326 HBA_UINT32 Reserved[2];
327 } HBA_RSCN_EVENTINFO;
329 typedef struct HBA_Pty_EventInfo {
330 HBA_UINT32 PtyData[4];
333 typedef struct HBA_EventInfo {
334 HBA_UINT32 EventCode;
336 HBA_LINK_EVENTINFO Link_EventInfo;
337 HBA_RSCN_EVENTINFO RSCN_EventInfo;
338 HBA_PTY_EVENTINFO Pty_EventInfo;
345 typedef void *HBA_CALLBACKHANDLE;
348 #define HBA_EVENT_ADAPTER_ADD 0x101
351 #define HBA_EVENT_ADAPTER_UNKNOWN 0x100
352 #define HBA_EVENT_ADAPTER_REMOVE 0x102
353 #define HBA_EVENT_ADAPTER_CHANGE 0x103
356 #define HBA_EVENT_PORT_UNKNOWN 0x200
357 #define HBA_EVENT_PORT_OFFLINE 0x201
358 #define HBA_EVENT_PORT_ONLINE 0x202
359 #define HBA_EVENT_PORT_NEW_TARGETS 0x203
360 #define HBA_EVENT_PORT_FABRIC 0x204
363 #define HBA_EVENT_PORT_STAT_THRESHOLD 0x301
364 #define HBA_EVENT_PORT_STAT_GROWTH 0x302
367 #define HBA_EVENT_TARGET_UNKNOWN 0x400
368 #define HBA_EVENT_TARGET_OFFLINE 0x401
369 #define HBA_EVENT_TARGET_ONLINE 0x402
370 #define HBA_EVENT_TARGET_REMOVED 0x403
373 #define HBA_EVENT_LINK_UNKNOWN 0x500
374 #define HBA_EVENT_LINK_INCIDENT 0x501
379 typedef struct HBA_LibraryAttributes {
384 struct tm build_date;
385 } HBA_LIBRARYATTRIBUTES;
395 HBA_UINT32 HBA_GetWrapperLibraryAttributes(HBA_LIBRARYATTRIBUTES *);
396 HBA_UINT32 HBA_GetVendorLibraryAttributes(HBA_UINT32, HBA_LIBRARYATTRIBUTES *);
409 (HBA_HANDLE, HBA_UINT32, HBA_PORTATTRIBUTES *);
411 (HBA_HANDLE, HBA_UINT32, HBA_UINT32, HBA_PORTATTRIBUTES *);
413 (HBA_HANDLE, HBA_WWN, HBA_PORTATTRIBUTES *);
416 (HBA_HANDLE, HBA_WWN, HBA_UINT8, HBA_FC4STATISTICS *);
424 (HBA_HANDLE, HBA_WWN, HBA_FCPTARGETMAPPINGV2 *);
428 (HBA_HANDLE, HBA_WWN, HBA_FCPBINDING2 *);
430 (HBA_HANDLE, HBA_WWN, HBA_FCPBINDING2 *);
433 (HBA_HANDLE,
const HBA_SCSIID *, HBA_FC4STATISTICS *);
437 (HBA_HANDLE, HBA_WWN, HBA_UINT64, HBA_UINT8, HBA_UINT32,
void *,
438 HBA_UINT32,
void *, HBA_UINT32);
440 (HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT64, HBA_UINT8, HBA_UINT8,
void *,
441 HBA_UINT32 *, HBA_UINT8 *,
void *, HBA_UINT32 *);
443 (HBA_HANDLE, HBA_WWN,
void *, HBA_UINT32,
void *, HBA_UINT32);
445 (HBA_HANDLE, HBA_WWN, HBA_WWN,
void *, HBA_UINT32 *, HBA_UINT8 *,
446 void *, HBA_UINT32 *);
448 (HBA_HANDLE, HBA_WWN, HBA_UINT64,
void *, HBA_UINT32,
void *,
451 (HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT64,
void *, HBA_UINT32 *,
452 HBA_UINT8 *,
void *, HBA_UINT32 *);
456 (HBA_HANDLE,
void *, HBA_UINT32,
void *, HBA_UINT32);
458 (HBA_HANDLE, HBA_WWN,
void *, HBA_UINT32,
void *, HBA_UINT32 *);
461 HBA_STATUS
HBA_SendRNID(HBA_HANDLE, HBA_WWN, HBA_WWNTYPE,
void *, HBA_UINT32 *);
463 (HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT32, HBA_UINT32,
void *,
466 (HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT32, HBA_UINT32,
void *,
469 (HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT32, HBA_WWN, HBA_UINT32,
void *,
472 (HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT32,
void *, HBA_UINT32 *);
474 (HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT8, HBA_UINT8,
void *,
476 HBA_STATUS
HBA_SendRLS(HBA_HANDLE, HBA_WWN, HBA_WWN,
void *, HBA_UINT32 *);
481 (
void (*)(
void *, HBA_WWN, HBA_UINT32),
void *, HBA_CALLBACKHANDLE *);
483 (
void (*)(
void *, HBA_WWN, HBA_UINT32),
void *, HBA_HANDLE,
484 HBA_CALLBACKHANDLE *);
486 (
void (*)(
void *, HBA_WWN, HBA_UINT32, HBA_UINT32),
void *, HBA_HANDLE,
487 HBA_WWN, HBA_CALLBACKHANDLE *);
489 (
void (*)(
void *, HBA_WWN, HBA_UINT32),
void *, HBA_HANDLE, HBA_WWN,
490 HBA_PORTSTATISTICS, HBA_UINT32, HBA_CALLBACKHANDLE *);
492 (
void (*)(
void *, HBA_WWN, HBA_WWN, HBA_UINT32),
void *, HBA_HANDLE,
493 HBA_WWN, HBA_WWN, HBA_CALLBACKHANDLE *, HBA_UINT32);
495 (
void (*)(
void *, HBA_WWN, HBA_UINT32,
void *, HBA_UINT32),
void *,
496 void *, HBA_UINT32, HBA_HANDLE, HBA_CALLBACKHANDLE *);