ZFCP HBA API Library  1
hbaapi.h
Go to the documentation of this file.
1 /*
2  * Copyright IBM Corp. 2003, 2004, 2010
3  * All rights reserved. This program and the accompanying materials
4  * are made available under the terms of the Common Public License v1.0
5  * which accompanies this distribution, and is available at
6  * http://www.ibm.com/developerworks/library/os-cpl.html
7  *
8  * Authors: Andreas Herrmann
9  * Stefan Voelkel
10  *
11  * File: hbaapi.h
12  *
13  * Description:
14  * HBA API header file (according to FC-HBA Rev 11)
15  *
16  */
17 
18 #ifndef _HBAAPI_H_
19 #define _HBAAPI_H_
20 
21 #ifdef __cplusplus
22 extern "C" {
23 #endif
24 
25 #include <stdint.h>
26 #include <time.h>
27 
28 /*
29  * basic attribute types
30  */
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;
38 
39 typedef struct HBA_wwn {
40  HBA_UINT8 wwn[8];
41 } HBA_WWN;
42 
43 /*
44  * status return values
45  */
46 typedef HBA_UINT32 HBA_STATUS;
47 
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
82 
83 /*
84  * HBA attributes
85  */
86 typedef struct HBA_AdapterAttributes {
87  char Manufacturer[64];
88  char SerialNumber[64];
89  char Model[256];
90  char ModelDescription[256];
91  HBA_WWN NodeWWN;
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;
99  char DriverName[256];
100 } HBA_ADAPTERATTRIBUTES;
101 
102 /*
103  * FC port attributes
104  */
105 typedef HBA_UINT32 HBA_PORTTYPE;
106 
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
116 
117 typedef HBA_UINT32 HBA_PORTSTATE;
118 
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
127 
128 typedef HBA_UINT32 HBA_PORTSPEED;
129 
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)
138 
139 /* "Class of Service - Format" as described in FC-GS-4 */
140 typedef HBA_UINT32 HBA_COS;
141 
142 /* "FC-TYPEs - Format" as described in FC-GS-4 */
143 typedef struct HBA_fc4types {
144  HBA_UINT8 bits[32];
145 } HBA_FC4TYPES;
146 
147 typedef struct HBA_PortAttributes {
148  HBA_WWN NodeWWN;
149  HBA_WWN PortWWN;
150  HBA_UINT32 PortFcId;
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;
161  HBA_WWN FabricName;
162  HBA_UINT32 NumberofDiscoveredPorts;
163 } HBA_PORTATTRIBUTES;
164 
165 /*
166  * end port statistics
167  */
168 /* for FC-1, FC-2, FC-3 */
169 typedef struct HBA_PortStatistics {
170  HBA_INT64 SecondsSinceLastReset;
171  HBA_INT64 TxFrames;
172  HBA_INT64 TxWords;
173  HBA_INT64 RxFrames;
174  HBA_INT64 RxWords;
175  HBA_INT64 LIPCount;
176  HBA_INT64 NOSCount;
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;
186 
187 /* for FC-4 */
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;
194 } HBA_FC4STATISTICS;
195 
196 /*
197  * FCP port attributes (FCP-2)
198  */
199 typedef enum HBA_fcpbindingtype {
200  TO_D_ID,
201  TO_WWN,
202  TO_OTHER
203 } HBA_FCPBINDINGTYPE;
204 
205 typedef HBA_UINT32 HBA_BIND_CAPABILITY;
206 
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
215 
216 typedef HBA_UINT32 HBA_BIND_TYPE;
217 
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
223 
224 typedef struct HBA_LUID {
225  char buffer[256];
226 } HBA_LUID;
227 
228 typedef struct HBA_ScsiId {
229  char OSDeviceName[256];
230  HBA_UINT32 ScsiBusNumber;
231  HBA_UINT32 ScsiTargetNumber;
232  HBA_UINT32 ScsiOSLun;
233 } HBA_SCSIID;
234 
235 typedef struct HBA_FcpId {
236  HBA_UINT32 FcId;
237  HBA_WWN NodeWWN;
238  HBA_WWN PortWWN;
239  HBA_UINT64 FcpLun;
240 } HBA_FCPID;
241 
242 typedef struct HBA_FcpScsiEntry {
243  HBA_SCSIID ScsiId;
244  HBA_FCPID FcpId;
245 } HBA_FCPSCSIENTRY;
246 
247 typedef struct HBA_FcpScsiEntryV2 {
248  HBA_SCSIID ScsiId;
249  HBA_FCPID FcpId;
250  HBA_LUID LUID;
251 } HBA_FCPSCSIENTRYV2;
252 
253 typedef struct HBA_FCPTargetMapping {
254  HBA_UINT32 NumberOfEntries;
255  HBA_FCPSCSIENTRY entry[1]; /* variable length array */
256 } HBA_FCPTARGETMAPPING;
257 
258 typedef struct HBA_FCPTargetMappingV2 {
259  HBA_UINT32 NumberOfEntries;
260  HBA_FCPSCSIENTRYV2 entry[1]; /* variable length array */
261 } HBA_FCPTARGETMAPPINGV2;
262 
263 typedef struct HBA_FCPBindingEntry {
264  HBA_FCPBINDINGTYPE type;
265  HBA_SCSIID ScsiId;
266  HBA_FCPID FcpId;
267  HBA_UINT32 FcId;
268 } HBA_FCPBINDINGENTRY;
269 
270 typedef struct HBA_FCPBinding {
271  HBA_UINT32 NumberOfEntries;
272  HBA_FCPBINDINGENTRY entry[1]; /* variable length array */
273 } HBA_FCPBINDING;
274 
275 typedef struct HBA_FCPBindingEntry2 {
276  HBA_BIND_TYPE type;
277  HBA_SCSIID ScsiId;
278  HBA_FCPID FcpId;
279  HBA_LUID LUID;
280  HBA_STATUS Status;
281 } HBA_FCPBINDINGENTRY2;
282 
283 typedef struct HBA_FCPBinding2 {
284  HBA_UINT32 NumberOfEntries;
285  HBA_FCPBINDINGENTRY2 entry[1]; /* variable length array */
286 } HBA_FCPBINDING2;
287 
288 /*
289  * FC-3 management attributes
290  */
291 typedef enum HBA_wwntype {
292  NODE_WWN,
293  PORT_WWN
294 } HBA_WWNTYPE;
295 
296 typedef struct HBA_MgmtInfo {
297  HBA_WWN wwn;
298  HBA_UINT32 unittype;
299  HBA_UINT32 PortId;
300  HBA_UINT32 NumberOfAttachedNodes;
301  HBA_UINT16 IPVersion;
302  HBA_UINT16 UDPPort;
303  HBA_UINT8 IPAddress[16];
304  HBA_UINT16 reserved;
305  HBA_UINT16 TopologyDiscoveryFlags;
306 } HBA_MGMTINFO;
307 
308 /*
309  * polled event notification
310  */
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
317 
318 typedef struct HBA_LinkEventInfo {
319  HBA_UINT32 PortFcId; /* end port where event occurred */
320  HBA_UINT32 Reserved[3];
321 } HBA_LINK_EVENTINFO;
322 
323 typedef struct HBA_RSCN_EventInfo {
324  HBA_UINT32 PortFcId; /* end port where event occurred */
325  HBA_UINT32 NPortPage;
326  HBA_UINT32 Reserved[2];
327 } HBA_RSCN_EVENTINFO;
328 
329 typedef struct HBA_Pty_EventInfo {
330  HBA_UINT32 PtyData[4]; /* proprietary data */
331 } HBA_PTY_EVENTINFO;
332 
333 typedef struct HBA_EventInfo {
334  HBA_UINT32 EventCode;
335  union {
336  HBA_LINK_EVENTINFO Link_EventInfo;
337  HBA_RSCN_EVENTINFO RSCN_EventInfo;
338  HBA_PTY_EVENTINFO Pty_EventInfo;
339  } Event;
340 } HBA_EVENTINFO;
341 
342 /*
343  * asynchronous event notification
344  */
345 typedef void *HBA_CALLBACKHANDLE;
346 
347 /* adapter add event type */
348 #define HBA_EVENT_ADAPTER_ADD 0x101
349 
350 /* adapter event types */
351 #define HBA_EVENT_ADAPTER_UNKNOWN 0x100
352 #define HBA_EVENT_ADAPTER_REMOVE 0x102
353 #define HBA_EVENT_ADAPTER_CHANGE 0x103
354 
355 /* port event types */
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
361 
362 /* port statistics event types */
363 #define HBA_EVENT_PORT_STAT_THRESHOLD 0x301
364 #define HBA_EVENT_PORT_STAT_GROWTH 0x302
365 
366 /* target event types */
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
371 
372 /* link event types */
373 #define HBA_EVENT_LINK_UNKNOWN 0x500
374 #define HBA_EVENT_LINK_INCIDENT 0x501
375 
376 /*
377  * library attributes
378  */
379 typedef struct HBA_LibraryAttributes {
380  HBA_BOOLEAN final;
381  char LibPath[256];
382  char VName[256];
383  char VVersion[256];
384  struct tm build_date;
385 } HBA_LIBRARYATTRIBUTES;
386 
387 /*
388  * function declarations for HBA API
389  */
390 
391 /* library control */
392 HBA_UINT32 HBA_GetVersion(void);
393 HBA_STATUS HBA_LoadLibrary(void);
394 HBA_STATUS HBA_FreeLibrary(void);
395 HBA_UINT32 HBA_GetWrapperLibraryAttributes(HBA_LIBRARYATTRIBUTES *);
396 HBA_UINT32 HBA_GetVendorLibraryAttributes(HBA_UINT32, HBA_LIBRARYATTRIBUTES *);
397 HBA_UINT32 HBA_GetNumberOfAdapters(void);
398 void HBA_RefreshInformation(HBA_HANDLE);
400 void HBA_ResetStatistics(HBA_HANDLE, HBA_UINT32);
401 
402 /* adapter and port information */
403 HBA_STATUS HBA_GetAdapterName(HBA_UINT32, char *);
404 HBA_HANDLE HBA_OpenAdapter(char *);
405 HBA_STATUS HBA_OpenAdapterByWWN(HBA_HANDLE *, HBA_WWN);
406 void HBA_CloseAdapter(HBA_HANDLE);
407 HBA_STATUS HBA_GetAdapterAttributes(HBA_HANDLE, HBA_ADAPTERATTRIBUTES *);
409  (HBA_HANDLE, HBA_UINT32, HBA_PORTATTRIBUTES *);
411  (HBA_HANDLE, HBA_UINT32, HBA_UINT32, HBA_PORTATTRIBUTES *);
413  (HBA_HANDLE, HBA_WWN, HBA_PORTATTRIBUTES *);
414 HBA_STATUS HBA_GetPortStatistics(HBA_HANDLE, HBA_UINT32, HBA_PORTSTATISTICS *);
415 HBA_STATUS HBA_GetFC4Statistics
416  (HBA_HANDLE, HBA_WWN, HBA_UINT8, HBA_FC4STATISTICS *);
417 
418 /* FCP information */
419 HBA_STATUS HBA_GetBindingCapability(HBA_HANDLE, HBA_WWN, HBA_BIND_CAPABILITY *);
420 HBA_STATUS HBA_GetBindingSupport(HBA_HANDLE, HBA_WWN, HBA_BIND_CAPABILITY *);
421 HBA_STATUS HBA_SetBindingSupport(HBA_HANDLE, HBA_WWN, HBA_BIND_CAPABILITY);
422 HBA_STATUS HBA_GetFcpTargetMapping(HBA_HANDLE, HBA_FCPTARGETMAPPING *);
423 HBA_STATUS HBA_GetFcpTargetMappingV2
424  (HBA_HANDLE, HBA_WWN, HBA_FCPTARGETMAPPINGV2 *);
425 HBA_STATUS HBA_GetFcpPersistentBinding(HBA_HANDLE, HBA_FCPBINDING *);
426 HBA_STATUS HBA_GetPersistentBindingV2(HBA_HANDLE, HBA_WWN, HBA_FCPBINDING2 *);
428  (HBA_HANDLE, HBA_WWN, HBA_FCPBINDING2 *);
430  (HBA_HANDLE, HBA_WWN, HBA_FCPBINDING2 *);
431 HBA_STATUS HBA_RemoveAllPersistentBindings(HBA_HANDLE, HBA_WWN);
432 HBA_STATUS HBA_GetFCPStatistics
433  (HBA_HANDLE, const HBA_SCSIID *, HBA_FC4STATISTICS *);
434 
435 /* SCSI information */
436 HBA_STATUS HBA_SendScsiInquiry
437  (HBA_HANDLE, HBA_WWN, HBA_UINT64, HBA_UINT8, HBA_UINT32, void *,
438  HBA_UINT32, void *, HBA_UINT32);
439 HBA_STATUS HBA_ScsiInquiryV2
440  (HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT64, HBA_UINT8, HBA_UINT8, void *,
441  HBA_UINT32 *, HBA_UINT8 *, void *, HBA_UINT32 *);
442 HBA_STATUS HBA_SendReportLUNs
443  (HBA_HANDLE, HBA_WWN, void *, HBA_UINT32, void *, HBA_UINT32);
444 HBA_STATUS HBA_ScsiReportLUNsV2
445  (HBA_HANDLE, HBA_WWN, HBA_WWN, void *, HBA_UINT32 *, HBA_UINT8 *,
446  void *, HBA_UINT32 *);
447 HBA_STATUS HBA_SendReadCapacity
448  (HBA_HANDLE, HBA_WWN, HBA_UINT64, void *, HBA_UINT32, void *,
449  HBA_UINT32);
450 HBA_STATUS HBA_ScsiReadCapacityV2
451  (HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT64, void *, HBA_UINT32 *,
452  HBA_UINT8 *, void *, HBA_UINT32 *);
453 
454 /* fabric management */
455 HBA_STATUS HBA_SendCTPassThru
456  (HBA_HANDLE, void *, HBA_UINT32, void *, HBA_UINT32);
457 HBA_STATUS HBA_SendCTPassThruV2
458  (HBA_HANDLE, HBA_WWN, void *, HBA_UINT32, void *, HBA_UINT32 *);
459 HBA_STATUS HBA_SetRNIDMgmtInfo(HBA_HANDLE, HBA_MGMTINFO *);
460 HBA_STATUS HBA_GetRNIDMgmtInfo(HBA_HANDLE, HBA_MGMTINFO *);
461 HBA_STATUS HBA_SendRNID(HBA_HANDLE, HBA_WWN, HBA_WWNTYPE, void *, HBA_UINT32 *);
462 HBA_STATUS HBA_SendRNIDV2
463  (HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT32, HBA_UINT32, void *,
464  HBA_UINT32 *);
465 HBA_STATUS HBA_SendRPL
466  (HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT32, HBA_UINT32, void *,
467  HBA_UINT32 *);
468 HBA_STATUS HBA_SendRPS
469  (HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT32, HBA_WWN, HBA_UINT32, void *,
470  HBA_UINT32 *);
471 HBA_STATUS HBA_SendSRL
472  (HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT32, void *, HBA_UINT32 *);
473 HBA_STATUS HBA_SendLIRR
474  (HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT8, HBA_UINT8, void *,
475  HBA_UINT32 *);
476 HBA_STATUS HBA_SendRLS(HBA_HANDLE, HBA_WWN, HBA_WWN, void *, HBA_UINT32 *);
477 
478 /* event handling */
479 HBA_STATUS HBA_GetEventBuffer(HBA_HANDLE, HBA_EVENTINFO *, 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);
494 HBA_STATUS HBA_RegisterForLinkEvents
495  (void (*)(void *, HBA_WWN, HBA_UINT32, void *, HBA_UINT32), void *,
496  void *, HBA_UINT32, HBA_HANDLE, HBA_CALLBACKHANDLE *);
497 HBA_STATUS HBA_RemoveCallback(HBA_CALLBACKHANDLE);
498 
499 #ifdef __cplusplus
500 }
501 #endif
502 
503 #endif /* _HBAAPI_H_ */
HBA_STATUS HBA_SendRLS(HBA_HANDLE, HBA_WWN, HBA_WWN, void *, HBA_UINT32 *)
Definition: vlib.c:1798
HBA_STATUS HBA_GetAdapterPortAttributes(HBA_HANDLE, HBA_UINT32, HBA_PORTATTRIBUTES *)
Return attributes for an adapter port.
Definition: vlib.c:676
HBA_STATUS HBA_GetFcpTargetMappingV2(HBA_HANDLE, HBA_WWN, HBA_FCPTARGETMAPPINGV2 *)
Retrieve mappings between OS SCSI targets/units and FCP targets/units.
Definition: vlib.c:1029
HBA_STATUS HBA_SendRNID(HBA_HANDLE, HBA_WWN, HBA_WWNTYPE, void *, HBA_UINT32 *)
Send a RNID ELS to a port.
Definition: vlib.c:1678
HBA_UINT32 HBA_GetNumberOfAdapters(void)
Return number of adapters.
Definition: vlib.c:398
HBA_STATUS HBA_SendRNIDV2(HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT32, HBA_UINT32, void *, HBA_UINT32 *)
Send a RNID ELS to a port.
Definition: vlib.c:1741
HBA_STATUS HBA_SendScsiInquiry(HBA_HANDLE, HBA_WWN, HBA_UINT64, HBA_UINT8, HBA_UINT32, void *, HBA_UINT32, void *, HBA_UINT32)
Send a SCSI INQUIRY command to a FCP LUN.
Definition: vlib.c:1231
HBA_STATUS HBA_SetPersistentBindingV2(HBA_HANDLE, HBA_WWN, HBA_FCPBINDING2 *)
Definition: vlib.c:1100
HBA_STATUS HBA_LoadLibrary(void)
Perform initialization of library.
Definition: vlib.c:133
void HBA_ResetStatistics(HBA_HANDLE, HBA_UINT32)
According to FC-HBA this function is obsolete.
Definition: vlib.c:477
HBA_STATUS HBA_ScsiInquiryV2(HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT64, HBA_UINT8, HBA_UINT8, void *, HBA_UINT32 *, HBA_UINT8 *, void *, HBA_UINT32 *)
Send a SCSI INQUIRY command to a FCP LUN.
Definition: vlib.c:1271
HBA_STATUS HBA_GetFCPStatistics(HBA_HANDLE, const HBA_SCSIID *, HBA_FC4STATISTICS *)
Definition: vlib.c:1130
HBA_STATUS HBA_SendCTPassThruV2(HBA_HANDLE, HBA_WWN, void *, HBA_UINT32, void *, HBA_UINT32 *)
Send a CT pass thru - a CT frame constructed in userspace directly to the HBA / SAN.
Definition: vlib.c:1608
void HBA_RefreshInformation(HBA_HANDLE)
Refresh information of an adapter.
Definition: vlib.c:420
HBA_STATUS HBA_RegisterForLinkEvents(void(*)(void *, HBA_WWN, HBA_UINT32, void *, HBA_UINT32), void *, void *, HBA_UINT32, HBA_HANDLE, HBA_CALLBACKHANDLE *)
Definition: vlib_callbacks.c:113
HBA_STATUS HBA_RegisterForAdapterPortStatEvents(void(*)(void *, HBA_WWN, HBA_UINT32), void *, HBA_HANDLE, HBA_WWN, HBA_PORTSTATISTICS, HBA_UINT32, HBA_CALLBACKHANDLE *)
Definition: vlib_callbacks.c:83
HBA_STATUS HBA_GetBindingCapability(HBA_HANDLE, HBA_WWN, HBA_BIND_CAPABILITY *)
Definition: vlib.c:870
HBA_STATUS HBA_SendLIRR(HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT8, HBA_UINT8, void *, HBA_UINT32 *)
Definition: vlib.c:1787
HBA_HANDLE HBA_OpenAdapter(char *)
Open an adapter.
Definition: vlib.c:546
HBA_STATUS HBA_RegisterForTargetEvents(void(*)(void *, HBA_WWN, HBA_WWN, HBA_UINT32), void *, HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_CALLBACKHANDLE *, HBA_UINT32)
Definition: vlib_callbacks.c:98
HBA_UINT32 HBA_GetVersion(void)
Return the version of the HBA API specification with which this library is compliant.
Definition: vlib.c:60
HBA_STATUS HBA_GetFC4Statistics(HBA_HANDLE, HBA_WWN, HBA_UINT8, HBA_FC4STATISTICS *)
Definition: vlib.c:853
HBA_STATUS HBA_GetFcpPersistentBinding(HBA_HANDLE, HBA_FCPBINDING *)
Definition: vlib.c:1080
HBA_STATUS HBA_GetPersistentBindingV2(HBA_HANDLE, HBA_WWN, HBA_FCPBINDING2 *)
Definition: vlib.c:1090
HBA_STATUS HBA_SendSRL(HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT32, void *, HBA_UINT32 *)
Definition: vlib.c:1776
void HBA_RefreshAdapterConfiguration(void)
According to a discussion with Bob Nixon (editor of FC-HBA) this function has no effect in an HBA spe...
Definition: vlib.c:446
void HBA_CloseAdapter(HBA_HANDLE)
Close an open adapter.
Definition: vlib.c:592
HBA_STATUS HBA_SetRNIDMgmtInfo(HBA_HANDLE, HBA_MGMTINFO *)
Definition: vlib.c:1620
HBA_STATUS HBA_FreeLibrary(void)
Free system resources that library has used.
Definition: vlib.c:170
HBA_STATUS HBA_ScsiReadCapacityV2(HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT64, void *, HBA_UINT32 *, HBA_UINT8 *, void *, HBA_UINT32 *)
Send a SCSI READ CAPACITY command to a FCP LUN.
Definition: vlib.c:1528
HBA_STATUS HBA_SetBindingSupport(HBA_HANDLE, HBA_WWN, HBA_BIND_CAPABILITY)
Definition: vlib.c:890
HBA_STATUS HBA_GetDiscoveredPortAttributes(HBA_HANDLE, HBA_UINT32, HBA_UINT32, HBA_PORTATTRIBUTES *)
Return attributes of an discovered port.
Definition: vlib.c:742
HBA_STATUS HBA_ScsiReportLUNsV2(HBA_HANDLE, HBA_WWN, HBA_WWN, void *, HBA_UINT32 *, HBA_UINT8 *, void *, HBA_UINT32 *)
Send a SCSI REPORT LUNS command to a target.
Definition: vlib.c:1394
HBA_STATUS HBA_GetAdapterName(HBA_UINT32, char *)
Return name that identifies an adapter.
Definition: vlib.c:501
HBA_STATUS HBA_GetBindingSupport(HBA_HANDLE, HBA_WWN, HBA_BIND_CAPABILITY *)
Definition: vlib.c:880
HBA_STATUS HBA_GetPortAttributesByWWN(HBA_HANDLE, HBA_WWN, HBA_PORTATTRIBUTES *)
Definition: vlib.c:793
HBA_STATUS HBA_SendRPL(HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT32, HBA_UINT32, void *, HBA_UINT32 *)
Definition: vlib.c:1753
HBA_STATUS HBA_GetRNIDMgmtInfo(HBA_HANDLE, HBA_MGMTINFO *)
Definition: vlib.c:1629
HBA_STATUS HBA_RemoveCallback(HBA_CALLBACKHANDLE)
Definition: vlib_callbacks.c:35
HBA_STATUS HBA_RegisterForAdapterPortEvents(void(*)(void *, HBA_WWN, HBA_UINT32, HBA_UINT32), void *, HBA_HANDLE, HBA_WWN, HBA_CALLBACKHANDLE *)
Definition: vlib_callbacks.c:69
HBA_STATUS HBA_SendRPS(HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT32, HBA_WWN, HBA_UINT32, void *, HBA_UINT32 *)
Definition: vlib.c:1764
HBA_STATUS HBA_RegisterForAdapterAddEvents(void(*)(void *, HBA_WWN, HBA_UINT32), void *, HBA_CALLBACKHANDLE *)
Definition: vlib_callbacks.c:45
HBA_STATUS HBA_GetFcpTargetMapping(HBA_HANDLE, HBA_FCPTARGETMAPPING *)
Retrieve mappings between OS SCSI targets/units and FCP targets/units.
Definition: vlib.c:914
HBA_STATUS HBA_GetPortStatistics(HBA_HANDLE, HBA_UINT32, HBA_PORTSTATISTICS *)
Return statistics of an adapter port.
Definition: vlib.c:816
HBA_STATUS HBA_RemoveAllPersistentBindings(HBA_HANDLE, HBA_WWN)
Definition: vlib.c:1120
HBA_STATUS HBA_RemovePersistentBinding(HBA_HANDLE, HBA_WWN, HBA_FCPBINDING2 *)
Definition: vlib.c:1110
HBA_STATUS HBA_RegisterForAdapterEvents(void(*)(void *, HBA_WWN, HBA_UINT32), void *, HBA_HANDLE, HBA_CALLBACKHANDLE *)
Definition: vlib_callbacks.c:57
HBA_STATUS HBA_GetAdapterAttributes(HBA_HANDLE, HBA_ADAPTERATTRIBUTES *)
Return attributes for an adapter.
Definition: vlib.c:627
HBA_STATUS HBA_GetEventBuffer(HBA_HANDLE, HBA_EVENTINFO *, HBA_UINT32 *)
Return events for an adapter from the event queue.
Definition: vlib.c:1818
HBA_STATUS HBA_OpenAdapterByWWN(HBA_HANDLE *, HBA_WWN)
Definition: vlib.c:577
HBA_STATUS HBA_SendCTPassThru(HBA_HANDLE, void *, HBA_UINT32, void *, HBA_UINT32)
Send a CT pass thru - a CT frame constructed in userspace directly to the HBA / SAN.
Definition: vlib.c:1563
HBA_STATUS HBA_SendReadCapacity(HBA_HANDLE, HBA_WWN, HBA_UINT64, void *, HBA_UINT32, void *, HBA_UINT32)
Send a SCSI READ CAPACITY command to a FCP LUN.
Definition: vlib.c:1492
HBA_STATUS HBA_SendReportLUNs(HBA_HANDLE, HBA_WWN, void *, HBA_UINT32, void *, HBA_UINT32)
Send a SCSI REPORT LUNS command to a target.
Definition: vlib.c:1361