Print this page
NEX-8705 Drivers for ATTO Celerity FC-162E Gen 5 and Celerity FC-162P Gen 6 16GB FC cards support
Reviewed by: Dan Fields <dan.fields@nexenta.com>
Reviewed by: Rick McNeal <rick.mcneal@nexenta.com>
| Split |
Close |
| Expand all |
| Collapse all |
--- old/usr/src/uts/common/sys/fibre-channel/fca/emlxs/emlxs_hbaapi.h
+++ new/usr/src/uts/common/sys/fibre-channel/fca/emlxs/emlxs_hbaapi.h
1 1 /*
2 2 * *****************************************************************************
3 3 *
4 4 * Description
5 5 * hbaapi.h - general header file for client
6 6 * and library developers
7 7 *
8 8 * License:
9 9 * The contents of this file are subject to the SNIA Public License
10 10 * Version 1.0 (the "License"); you may not use this file except in
11 11 * compliance with the License. You may obtain a copy of the License at
12 12 *
13 13 * /http://www.snia.org/English/Resources/Code/OpenSource.html
14 14 *
15 15 * Software distributed under the License is distributed on an "AS IS"
16 16 * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
17 17 * the License for the specific language governing rights and limitations
18 18 * under the License.
19 19 *
20 20 * The Original Code is SNIA HBA API general header file
21 21 *
22 22 * The Initial Developer of the Original Code is:
23 23 * Benjamin F. Kuo, Troika Networks, Inc. (benk@troikanetworks.com)
24 24 *
25 25 * Contributor(s):
26 26 * Tuan Lam, QLogic Corp. (t_lam@qlc.com)
27 27 * Dan Willie, Emulex Corp. (Dan.Willie@emulex.com)
28 28 * Dixon Hutchinson, Legato Systems, Inc. (dhutchin@legato.com)
29 29 * David Dillard, VERITAS Software Corp. (david.dillard@veritas.com)
30 30 *
31 31 *******************************************************************************
32 32 *
33 33 * Changes:
34 34 * 03/09/2000 Initial Draft
35 35 * (for other changes... see the CVS logs)
36 36 *******************************************************************************
37 37 */
38 38
39 39 #ifndef _EMLXS_HBAAPI_H
40 40 #define _EMLXS_HBAAPI_H
41 41
42 42 #ifdef __cplusplus
43 43 extern "C" {
44 44 #endif
45 45
46 46 /* Library version string */
47 47 #define HBA_LIBVERSION 2
48 48
49 49 /* DLL imports for WIN32 operation */
50 50 #ifdef WIN32
51 51 #ifdef HBAAPI_EXPORTS
52 52 #define HBA_API __declspec(dllexport)
53 53 #else
54 54 #define HBA_API __declspec(dllimport)
55 55 #endif
56 56 #else
57 57 #define HBA_API
58 58 #endif
59 59
60 60 /* OS specific definitions */
61 61
62 62 #ifdef WIN32
63 63 typedef unsigned char HBA_UINT8; // Unsigned 8 bits
64 64 typedef char HBA_INT8; // Signed 8 bits
65 65 typedef unsigned short HBA_UINT16; // Unsigned 16 bits
66 66 typedef short HBA_INT16; // Signed 16 bits
67 67 typedef unsigned int HBA_UINT32; // Unsigned 32 bits
68 68 typedef int HBA_INT32; // Signed 32 bits
69 69 typedef void* HBA_PVOID; // Pointer to void
70 70 typedef HBA_UINT32 HBA_VOID32; // Opaque 32 bits
71 71
72 72
73 73 /* Don't confuse, _WIN32 with WIN32... OK, how do you accompish that */
74 74 #ifdef _WIN32
75 75 typedef _int64 HBA_INT64;
76 76 typedef unsigned _int64 HBA_UINT64;
77 77 #else
78 78 typedef struct {
79 79 TN_UINT32 lo_val;
80 80 TN_UINT32 hi_val;
81 81 } HBA_INT64;
82 82
83 83 typedef struct {
84 84 TN_UINT32 lo_val;
85 85 TN_UINT32 hi_val;
86 86 } HBA_UINT64;
87 87 #endif /* #ifdef _WIN32 */
88 88
89 89
90 90 #else
91 91 #ifndef _KERNEL
92 92 #include <time.h> /* Needed for struct tm */
93 93 #endif /* ifndef _KERNEL */
94 94
95 95 /* Note this section needs to be cleaned up for various Unix platforms */
96 96 typedef unsigned char HBA_UINT8; /* Unsigned 8 bits */
97 97 typedef char HBA_INT8; /* Signed 8 bits */
98 98 typedef unsigned short HBA_UINT16; /* Unsigned 16 bits */
99 99 typedef short HBA_INT16; /* Signed 16 bits */
100 100 typedef unsigned int HBA_UINT32; /* Unsigned 32 bits */
101 101 typedef int HBA_INT32; /* Signed 32 bits */
102 102 typedef void* HBA_PVOID; /* Pointer to void */
103 103 typedef HBA_UINT32 HBA_VOID32; /* Opaque 32 bits */
104 104 typedef long long HBA_INT64;
105 105 typedef long long HBA_UINT64;
106 106
107 107 #endif /* #ifdef WIN32 */
108 108
109 109
110 110 /* 4.2.1 Handle to Device */
111 111 typedef HBA_UINT32 HBA_HANDLE;
112 112
113 113 #define HBA_HANDLE_INVALID 0
114 114
115 115 /* 4.2.2 Status Return Values */
116 116 typedef HBA_UINT32 HBA_STATUS;
117 117
118 118 #define HBA_STATUS_OK 0
119 119 #define HBA_STATUS_ERROR 1 /* Error */
120 120 #define HBA_STATUS_ERROR_NOT_SUPPORTED 2 /* Function not supported.*/
121 121 #define HBA_STATUS_ERROR_INVALID_HANDLE 3 /* invalid handle */
122 122 #define HBA_STATUS_ERROR_ARG 4 /* Bad argument */
123 123 #define HBA_STATUS_ERROR_ILLEGAL_WWN 5 /* WWN not recognized */
124 124 #define HBA_STATUS_ERROR_ILLEGAL_INDEX 6 /* Index not recognized */
125 125 #define HBA_STATUS_ERROR_MORE_DATA 7 /* Larger buffer required */
126 126 #define HBA_STATUS_ERROR_STALE_DATA 8 /* Information has changed since
127 127 * last call to
128 128 * HBA_Refreshinformation */
129 129 #define HBA_STATUS_SCSI_CHECK_CONDITION 9 /* Obvious */
130 130 #define HBA_STATUS_ERROR_BUSY 10 /* Adapter busy or reserved,
131 131 * retry may be effective */
132 132 #define HBA_STATUS_ERROR_TRY_AGAIN 11 /* Request timedout,
133 133 * retry may be effective */
134 134 #define HBA_STATUS_ERROR_UNAVAILABLE 12 /* Referenced HBA has been removed
135 135 * or deactivated */
136 136 #define HBA_STATUS_ERROR_ELS_REJECT 13 /* The requested ELS was rejected by
137 137 * the local adapter */
138 138 #define HBA_STATUS_ERROR_INVALID_LUN 14 /* The specified LUN is not provided
139 139 * the specified adapter */
140 140 #define HBA_STATUS_ERROR_INCOMPATIBLE 15 /* An incompatibility has been
141 141 * detected among the library and driver modules
142 142 * invoked which will cause one or more functions
143 143 * in the highest version that all support to
144 144 * operate incorrectly. The differing function
145 145 * sets of software modules implementing different
146 146 * versions of the HBA API specification does not
147 147 * in itself constitute an incompatibility. Known
148 148 * interoperability bugs among supposedly
149 149 * compatible versions should be reported as
150 150 * incompatibilities, but not all such
151 151 * interoperability bugs may be known. This value
152 152 * may be returned by any function that calls a
153 153 * Vendor Specific Library and returns an
154 154 * HBA_STATUS, and by HBA_LoadLibrary and
155 155 * HBA_GetAdapterName. */
156 156
157 157 #define HBA_STATUS_ERROR_AMBIGUOUS_WWN 16 /* Multiple adapters have a matching
158 158 * WWN. This could occur if the
159 159 * NodeWWN of multiple adapters is
160 160 * identical */
161 161 #define HBA_STATUS_ERROR_LOCAL_BUS 17 /* A persistent binding request
162 162 * included a bad local SCSI bus
163 163 * number */
164 164 #define HBA_STATUS_ERROR_LOCAL_TARGET 18 /* A persistent binding request
165 165 * included a bad local SCSI target
166 166 * number */
167 167 #define HBA_STATUS_ERROR_LOCAL_LUN 19 /* A persistent binding request
168 168 * included a bad local SCSI logical
169 169 * unit number */
170 170 #define HBA_STATUS_ERROR_LOCAL_SCSIID_BOUND 20
171 171 /* A persistent binding set request
172 172 * included a local SCSI ID that was
173 173 * already bound */
174 174 #define HBA_STATUS_ERROR_TARGET_FCID 21 /* A persistent binding request
175 175 * included a bad or unlocatable FCP
176 176 * Target FCID */
177 177 #define HBA_STATUS_ERROR_TARGET_NODE_WWN 22 /* A persistent binding request
178 178 * included a bad FCP Target Node
179 179 * WWN */
180 180 #define HBA_STATUS_ERROR_TARGET_PORT_WWN 23 /* A persistent binding request
181 181 * included a bad FCP Target Port
182 182 * WWN */
183 183 #define HBA_STATUS_ERROR_TARGET_LUN 24 /* A persistent binding request
184 184 * included an FCP Logical Unit Number
185 185 * not defined by the identified
186 186 * Target*/
187 187 #define HBA_STATUS_ERROR_TARGET_LUID 25 /* A persistent binding request
188 188 * included an undefined or otherwise
189 189 * inaccessible Logical Unit Unique
190 190 * Identifier */
191 191 #define HBA_STATUS_ERROR_NO_SUCH_BINDING 26 /* A persistent binding remove request
192 192 * included a binding which did not
193 193 * match a binding established by the
194 194 * specified port */
195 195 #define HBA_STATUS_ERROR_NOT_A_TARGET 27 /* A SCSI command was requested to an
196 196 * Nx_Port that was not a SCSI
197 197 * Target Port */
198 198 #define HBA_STATUS_ERROR_UNSUPPORTED_FC4 28 /* A request was made concerning an
199 199 * unsupported FC-4 protocol */
200 200
201 201
202 202 #define HBA_STATUS_ERROR_INCAPABLE 29 /* A request was made to enable
203 203 * unimplemented capabilities for a
204 204 * port */
205 205
206 206 /* 4.2.3 Port Operational Modes Values */
207 207 typedef HBA_UINT32 HBA_PORTTYPE;
208 208
209 209 #define HBA_PORTTYPE_UNKNOWN 1 /* Unknown */
210 210 #define HBA_PORTTYPE_OTHER 2 /* Other */
211 211 #define HBA_PORTTYPE_NOTPRESENT 3 /* Not present */
212 212 #define HBA_PORTTYPE_NPORT 5 /* Fabric */
213 213 #define HBA_PORTTYPE_NLPORT 6 /* Public Loop */
214 214 #define HBA_PORTTYPE_FLPORT 7
215 215 #define HBA_PORTTYPE_FPORT 8 /* Fabric Port */
216 216 #define HBA_PORTTYPE_EPORT 9 /* Fabric expansion port */
217 217 #define HBA_PORTTYPE_GPORT 10 /* Generic Fabric Port */
218 218 #define HBA_PORTTYPE_LPORT 20 /* Private Loop */
219 219 #define HBA_PORTTYPE_PTP 21 /* Point to Point */
220 220
221 221
222 222 typedef HBA_UINT32 HBA_PORTSTATE;
223 223 #define HBA_PORTSTATE_UNKNOWN 1 /* Unknown */
224 224 #define HBA_PORTSTATE_ONLINE 2 /* Operational */
225 225 #define HBA_PORTSTATE_OFFLINE 3 /* User Offline */
226 226 #define HBA_PORTSTATE_BYPASSED 4 /* Bypassed */
227 227 #define HBA_PORTSTATE_DIAGNOSTICS 5 /* In diagnostics mode */
228 228 #define HBA_PORTSTATE_LINKDOWN 6 /* Link Down */
229 229 #define HBA_PORTSTATE_ERROR 7 /* Port Error */
230 230 #define HBA_PORTSTATE_LOOPBACK 8 /* Loopback */
231 231
|
↓ open down ↓ |
231 lines elided |
↑ open up ↑ |
232 232
233 233 typedef HBA_UINT32 HBA_PORTSPEED;
234 234 #define HBA_PORTSPEED_UNKNOWN 0 /* Unknown - transceiver incable
235 235 * of reporting */
236 236 #define HBA_PORTSPEED_1GBIT 1 /* 1 GBit/sec */
237 237 #define HBA_PORTSPEED_2GBIT 2 /* 2 GBit/sec */
238 238 #define HBA_PORTSPEED_10GBIT 4 /* 10 GBit/sec */
239 239 #define HBA_PORTSPEED_4GBIT 8 /* 4 GBit/sec */
240 240 #define HBA_PORTSPEED_8GBIT 16 /* 8 GBit/sec */
241 241 #define HBA_PORTSPEED_16GBIT 32 /* 16 GBit/sec */
242 +#define HBA_PORTSPEED_32GBIT 64 /* 32 GBit/sec */
242 243 #define HBA_PORTSPEED_NOT_NEGOTIATED (1<<15) /* Speed not established */
243 244
244 245
245 246
246 247 /* 4.2.4 Class of Service Values - See GS-2 Spec.*/
247 248
248 249 typedef HBA_UINT32 HBA_COS;
249 250
250 251
251 252 /* 4.2.5 Fc4Types Values */
252 253
253 254 typedef struct HBA_fc4types {
254 255 HBA_UINT8 bits[32]; /* 32 bytes of FC-4 per GS-2 */
255 256 } HBA_FC4TYPES, *PHBA_FC4TYPES;
256 257
257 258 /* 4.2.6 Basic Types */
258 259
259 260 typedef struct HBA_wwn {
260 261 HBA_UINT8 wwn[8];
261 262 } HBA_WWN, *PHBA_WWN;
262 263
263 264 typedef struct HBA_ipaddress {
264 265 int ipversion; /* see enumerations in RNID */
265 266 union
266 267 {
267 268 unsigned char ipv4address[4];
268 269 unsigned char ipv6address[16];
269 270 } ipaddress;
270 271 } HBA_IPADDRESS, *PHBA_IPADDRESS;
271 272
272 273 typedef HBA_INT8 HBA_BOOLEAN;
273 274
274 275 /* 4.2.7 Adapter Attributes */
275 276 typedef struct hba_AdapterAttributes {
276 277 char Manufacturer[64]; /*Emulex */
277 278 char SerialNumber[64]; /* A12345 */
278 279 char Model[256]; /* QLA2200 */
279 280 char ModelDescription[256]; /* Agilent TachLite */
280 281 HBA_WWN NodeWWN;
281 282 char NodeSymbolicName[256]; /* From GS-3 */
282 283 char HardwareVersion[256]; /* Vendor use */
283 284 char DriverVersion[256]; /* Vendor use */
284 285 char OptionROMVersion[256]; /* Vendor use - i.e. hardware boot ROM*/
285 286 char FirmwareVersion[256]; /* Vendor use */
286 287 HBA_UINT32 VendorSpecificID; /* Vendor specific */
287 288 HBA_UINT32 NumberOfPorts;
288 289 char DriverName[256]; /* Binary path and/or name of driver
289 290 *file */
290 291 } HBA_ADAPTERATTRIBUTES, *PHBA_ADAPTERATTRIBUTES;
291 292
292 293 /* 4.2.8 Port Attributes */
293 294 typedef struct HBA_PortAttributes {
294 295 HBA_WWN NodeWWN;
295 296 HBA_WWN PortWWN;
296 297 HBA_UINT32 PortFcId;
297 298 HBA_PORTTYPE PortType; /*PTP, Fabric, etc. */
298 299 HBA_PORTSTATE PortState;
299 300 HBA_COS PortSupportedClassofService;
300 301 HBA_FC4TYPES PortSupportedFc4Types;
301 302 HBA_FC4TYPES PortActiveFc4Types;
302 303 char PortSymbolicName[256];
303 304 char OSDeviceName[256]; /* \device\ScsiPort3 */
304 305 HBA_PORTSPEED PortSupportedSpeed;
305 306 HBA_PORTSPEED PortSpeed;
306 307 HBA_UINT32 PortMaxFrameSize;
307 308 HBA_WWN FabricName;
308 309 HBA_UINT32 NumberofDiscoveredPorts;
309 310 } HBA_PORTATTRIBUTES, *PHBA_PORTATTRIBUTES;
310 311
311 312
312 313
313 314 /* 4.2.9 Port Statistics */
314 315
315 316 typedef struct HBA_PortStatistics {
316 317 HBA_INT64 SecondsSinceLastReset;
317 318 HBA_INT64 TxFrames;
318 319 HBA_INT64 TxWords;
319 320 HBA_INT64 RxFrames;
320 321 HBA_INT64 RxWords;
321 322 HBA_INT64 LIPCount;
322 323 HBA_INT64 NOSCount;
323 324 HBA_INT64 ErrorFrames;
324 325 HBA_INT64 DumpedFrames;
325 326 HBA_INT64 LinkFailureCount;
326 327 HBA_INT64 LossOfSyncCount;
327 328 HBA_INT64 LossOfSignalCount;
328 329 HBA_INT64 PrimitiveSeqProtocolErrCount;
329 330 HBA_INT64 InvalidTxWordCount;
330 331 HBA_INT64 InvalidCRCCount;
331 332 } HBA_PORTSTATISTICS, *PHBA_PORTSTATISTICS;
332 333
333 334
334 335
335 336 /* 4.2.10 FCP Attributes */
336 337
337 338 typedef enum HBA_fcpbindingtype { TO_D_ID, TO_WWN, TO_OTHER } HBA_FCPBINDINGTYPE;
338 339
339 340 typedef struct HBA_ScsiId {
340 341 char OSDeviceName[256]; /* \device\ScsiPort3 */
341 342 HBA_UINT32 ScsiBusNumber; /* Bus on the HBA */
342 343 HBA_UINT32 ScsiTargetNumber; /* SCSI Target ID to OS */
343 344 HBA_UINT32 ScsiOSLun;
344 345 } HBA_SCSIID, *PHBA_SCSIID;
345 346
346 347 typedef struct HBA_FcpId {
347 348 HBA_UINT32 FcId;
348 349 HBA_WWN NodeWWN;
349 350 HBA_WWN PortWWN;
350 351 HBA_UINT64 FcpLun;
351 352 } HBA_FCPID, *PHBA_FCPID;
352 353
353 354 typedef struct HBA_LUID {
354 355 char buffer[256]; /* Unique Device Identifier */
355 356 } HBA_LUID, *PHBA_LUID;
356 357
357 358 typedef struct HBA_FcpScsiEntry {
358 359 HBA_SCSIID ScsiId;
359 360 HBA_FCPID FcpId;
360 361 } HBA_FCPSCSIENTRY, *PHBA_FCPSCSIENTRY;
361 362
362 363 typedef struct HBA_FcpScsiEntryV2 {
363 364 HBA_SCSIID ScsiId;
364 365 HBA_FCPID FcpId;
365 366 HBA_LUID LUID;
366 367 } HBA_FCPSCSIENTRYV2, *PHBA_FCPSCSIENTRYV2;
367 368
368 369 typedef struct HBA_FCPTargetMapping {
369 370 HBA_UINT32 NumberOfEntries;
370 371 HBA_FCPSCSIENTRY entry[1]; /* Variable length array
371 372 * containing mappings */
372 373 } HBA_FCPTARGETMAPPING, *PHBA_FCPTARGETMAPPING;
373 374
374 375 typedef struct HBA_FCPTargetMappingV2 {
375 376 HBA_UINT32 NumberOfEntries;
376 377 HBA_FCPSCSIENTRYV2 entry[1]; /* Variable length array
377 378 * containing mappings */
378 379 } HBA_FCPTARGETMAPPINGV2, *PHBA_FCPTARGETMAPPINGV2;
379 380
380 381 typedef struct HBA_FCPBindingEntry {
381 382 HBA_FCPBINDINGTYPE type;
382 383 HBA_SCSIID ScsiId;
383 384 HBA_FCPID FcpId; /* WWN valid only if type is
384 385 * to WWN, FcpLun always valid */
385 386 HBA_UINT32 FcId;
386 387 } HBA_FCPBINDINGENTRY, *PHBA_FCPBINDINGENTRY;
387 388
388 389 typedef struct HBA_FCPBinding {
389 390 HBA_UINT32 NumberOfEntries;
390 391 HBA_FCPBINDINGENTRY entry[1]; /* Variable length array */
391 392 } HBA_FCPBINDING, *PHBA_FCPBINDING;
392 393
393 394 /* 4.2.11 FC-3 Management Atrributes */
394 395
395 396 typedef enum HBA_wwntype { NODE_WWN, PORT_WWN } HBA_WWNTYPE;
396 397
397 398 typedef struct HBA_MgmtInfo {
398 399 HBA_WWN wwn;
399 400 HBA_UINT32 unittype;
400 401 HBA_UINT32 PortId;
401 402 HBA_UINT32 NumberOfAttachedNodes;
402 403 HBA_UINT16 IPVersion;
403 404 HBA_UINT16 UDPPort;
404 405 HBA_UINT8 IPAddress[16];
405 406 HBA_UINT16 reserved;
406 407 HBA_UINT16 TopologyDiscoveryFlags;
407 408 } HBA_MGMTINFO, *PHBA_MGMTINFO;
408 409
409 410 /* Event Codes */
410 411 #define HBA_EVENT_LIP_OCCURRED 1
411 412 #define HBA_EVENT_LINK_UP 2
412 413 #define HBA_EVENT_LINK_DOWN 3
413 414 #define HBA_EVENT_LIP_RESET_OCCURRED 4
414 415 #define HBA_EVENT_RSCN 5
415 416 #define HBA_EVENT_PROPRIETARY 0xFFFF
416 417
417 418 typedef struct HBA_Link_EventInfo {
418 419 HBA_UINT32 PortFcId; /* Port where event occurred */
419 420 HBA_UINT32 Reserved[3];
420 421 } HBA_LINK_EVENTINFO, *PHBA_LINK_EVENTINFO;
421 422
422 423 typedef struct HBA_RSCN_EventInfo {
423 424 HBA_UINT32 PortFcId; /* Port where event occurred */
424 425 HBA_UINT32 NPortPage; /* Reference FC-FS for RSCN ELS
425 426 * "Affected N-Port Pages"*/
426 427 HBA_UINT32 Reserved[2];
427 428 } HBA_RSCN_EVENTINFO, *PHBA_RSCN_EVENTINFO;
428 429
429 430 typedef struct HBA_Pty_EventInfo {
430 431 HBA_UINT32 PtyData[4]; /* Proprietary data */
431 432 } HBA_PTY_EVENTINFO, *PHBA_PTY_EVENTINFO;
432 433
433 434 typedef struct HBA_EventInfo {
434 435 HBA_UINT32 EventCode;
435 436 union {
436 437 HBA_LINK_EVENTINFO Link_EventInfo;
437 438 HBA_RSCN_EVENTINFO RSCN_EventInfo;
438 439 HBA_PTY_EVENTINFO Pty_EventInfo;
439 440 } Event;
440 441 } HBA_EVENTINFO, *PHBA_EVENTINFO;
441 442
442 443 #ifndef _KERNEL
443 444 typedef struct HBA_LibraryAttributes {
444 445 HBA_BOOLEAN final;
445 446 char LibPath[256];
446 447 char VName[256];
447 448 char VVersion[256];
448 449 struct tm build_date;
449 450 } HBA_LIBRARYATTRIBUTES, *PHBA_LIBRARYATTRIBUTES;
450 451 #endif /* ifndef _KERNEL */
451 452
452 453 /* Persistant Binding... */
453 454 typedef HBA_UINT32 HBA_BIND_TYPE;
454 455 #define HBA_BIND_TO_D_ID 0x0001
455 456 #define HBA_BIND_TO_WWPN 0x0002
456 457 #define HBA_BIND_TO_WWNN 0x0004
457 458 #define HBA_BIND_TO_LUID 0x0008
458 459 #define HBA_BIND_TARGETS 0x0800
459 460
460 461 /* A bit mask of Rev 2.0 persistent binding capabilities */
461 462 typedef HBA_UINT32 HBA_BIND_CAPABILITY;
462 463 /* The following are bit flags indicating persistent binding capabilities */
463 464 #define HBA_CAN_BIND_TO_D_ID 0x0001
464 465 #define HBA_CAN_BIND_TO_WWPN 0x0002
465 466 #define HBA_CAN_BIND_TO_WWNN 0x0004
466 467 #define HBA_CAN_BIND_TO_LUID 0x0008
467 468 #define HBA_CAN_BIND_ANY_LUNS 0x0400
468 469 #define HBA_CAN_BIND_TARGETS 0x0800
469 470 #define HBA_CAN_BIND_AUTOMAP 0x1000
470 471 #define HBA_CAN_BIND_CONFIGURED 0x2000
471 472
472 473 #define HBA_BIND_STATUS_DISABLED 0x00
473 474 #define HBA_BIND_STATUS_ENABLED 0x01
474 475
475 476 typedef HBA_UINT32 HBA_BIND_STATUS;
476 477
477 478 #define HBA_BIND_EFFECTIVE_AT_REBOOT 0x00
478 479 #define HBA_BIND_EFFECTIVE_IMMEDIATE 0x01
479 480
480 481 typedef HBA_UINT32 HBA_BIND_EFFECTIVE;
481 482
482 483 typedef struct HBA_FCPBindingEntry2 {
483 484 HBA_BIND_TYPE type;
484 485 HBA_SCSIID ScsiId;
485 486 HBA_FCPID FcpId;
486 487 HBA_LUID LUID;
487 488 HBA_STATUS status;
488 489 } HBA_FCPBINDINGENTRY2, *PHBA_FCPBINDINGENTRY2;
489 490
490 491 typedef struct HBA_FcpBinding2 {
491 492 HBA_UINT32 NumberOfEntries;
492 493 HBA_FCPBINDINGENTRY2
493 494 entry[1]; /* Variable length array */
494 495 } HBA_FCPBINDING2, *PHBA_FCPBINDING2;
495 496
496 497 /* FC-4 Instrumentation */
497 498 typedef struct HBA_FC4Statistics {
498 499 HBA_INT64 InputRequests;
499 500 HBA_INT64 OutputRequests;
500 501 HBA_INT64 ControlRequests;
501 502 HBA_INT64 InputMegabytes;
502 503 HBA_INT64 OutputMegabytes;
503 504 } HBA_FC4STATISTICS, *PHBA_FC4STATISTICS;
504 505
505 506
506 507 typedef void * HBA_CALLBACKHANDLE;
507 508 /* Adapter Level Events */
508 509 #define HBA_EVENT_ADAPTER_UNKNOWN 0x100
509 510 #define HBA_EVENT_ADAPTER_ADD 0x101
510 511 #define HBA_EVENT_ADAPTER_REMOVE 0x102
511 512 #define HBA_EVENT_ADAPTER_CHANGE 0x103
512 513
513 514 /* Port Level Events */
514 515 #define HBA_EVENT_PORT_UNKNOWN 0x200
515 516 #define HBA_EVENT_PORT_OFFLINE 0x201
516 517 #define HBA_EVENT_PORT_ONLINE 0x202
517 518 #define HBA_EVENT_PORT_NEW_TARGETS 0x203
518 519 #define HBA_EVENT_PORT_FABRIC 0x204
519 520
520 521 /* Port Statistics Events */
521 522 #define HBA_EVENT_PORT_STAT_THRESHOLD 0x301
522 523 #define HBA_EVENT_PORT_STAT_GROWTH 0x302
523 524
524 525 /* Target Level Events */
525 526 #define HBA_EVENT_TARGET_UNKNOWN 0x400
526 527 #define HBA_EVENT_TARGET_OFFLINE 0x401
527 528 #define HBA_EVENT_TARGET_ONLINE 0x402
528 529 #define HBA_EVENT_TARGET_REMOVED 0x403
529 530
530 531 /* Fabric Link Events */
531 532 #define HBA_EVENT_LINK_UNKNOWN 0x500
532 533 #define HBA_EVENT_LINK_INCIDENT 0x501
533 534
534 535 HBA_API HBA_UINT32 HBA_GetVersion();
535 536
536 537 /*
537 538 * Make sure HBA_LoadLibrary returns before any other threads
538 539 * make calls to the library
539 540 */
540 541 HBA_API HBA_STATUS HBA_LoadLibrary();
541 542
542 543 HBA_API HBA_STATUS HBA_FreeLibrary();
543 544
544 545 HBA_API HBA_UINT32 HBA_GetNumberOfAdapters();
545 546
546 547 HBA_API HBA_STATUS HBA_GetAdapterName(
547 548 HBA_UINT32 adapterindex,
548 549 char *adaptername
549 550 );
550 551
551 552 HBA_API HBA_HANDLE HBA_OpenAdapter(
552 553 char* adaptername
553 554 );
554 555
555 556 HBA_API HBA_STATUS HBA_OpenAdapterByWWN(
556 557 HBA_HANDLE *handle,
557 558 HBA_WWN wwn
558 559 );
559 560
560 561 HBA_API void HBA_CloseAdapter(
561 562 HBA_HANDLE handle
562 563 );
563 564
564 565 HBA_API HBA_STATUS HBA_GetAdapterAttributes(
565 566 HBA_HANDLE handle,
566 567 HBA_ADAPTERATTRIBUTES
567 568 *hbaattributes
568 569 );
569 570
570 571 HBA_API HBA_STATUS HBA_GetAdapterPortAttributes(
571 572 HBA_HANDLE handle,
572 573 HBA_UINT32 portindex,
573 574 HBA_PORTATTRIBUTES *portattributes
574 575 );
575 576
576 577 HBA_API HBA_STATUS HBA_GetPortStatistics(
577 578 HBA_HANDLE handle,
578 579 HBA_UINT32 portindex,
579 580 HBA_PORTSTATISTICS *portstatistics
580 581 );
581 582
582 583 HBA_API HBA_STATUS HBA_GetDiscoveredPortAttributes(
583 584 HBA_HANDLE handle,
584 585 HBA_UINT32 portindex,
585 586 HBA_UINT32 discoveredportindex,
586 587 HBA_PORTATTRIBUTES *portattributes
587 588 );
588 589
589 590 HBA_API HBA_STATUS HBA_GetPortAttributesByWWN(
590 591 HBA_HANDLE handle,
591 592 HBA_WWN PortWWN,
592 593 HBA_PORTATTRIBUTES *portattributes
593 594 );
594 595
595 596 HBA_API HBA_STATUS HBA_SendCTPassThruV2(
596 597 HBA_HANDLE handle,
597 598 HBA_WWN hbaPortWWN,
598 599 void *pReqBuffer,
599 600 HBA_UINT32 ReqBufferSize,
600 601 void *pRspBuffer,
601 602 HBA_UINT32 *pRspBufferSize
602 603 );
603 604
604 605 /* Depricated, but supported */
605 606 HBA_API HBA_STATUS HBA_SendCTPassThru(
606 607 HBA_HANDLE handle,
607 608 void *pReqBuffer,
608 609 HBA_UINT32 ReqBufferSize,
609 610 void *pRspBuffer,
610 611 HBA_UINT32 RspBufferSize
611 612 );
612 613
613 614 HBA_API void HBA_RefreshAdapterConfiguration();
614 615
615 616 HBA_API HBA_STATUS HBA_GetEventBuffer(
616 617 HBA_HANDLE handle,
617 618 HBA_EVENTINFO *EventBuffer,
618 619 HBA_UINT32 *EventBufferCount
619 620 );
620 621
621 622 HBA_API HBA_STATUS HBA_SetRNIDMgmtInfo(
622 623 HBA_HANDLE handle,
623 624 HBA_MGMTINFO Info
624 625 );
625 626
626 627 HBA_API HBA_STATUS HBA_GetRNIDMgmtInfo(
627 628 HBA_HANDLE handle,
628 629 HBA_MGMTINFO *pInfo
629 630 );
630 631
631 632 HBA_API HBA_STATUS HBA_SendRNIDV2(
632 633 HBA_HANDLE handle,
633 634 HBA_WWN hbaPortWWN,
634 635 HBA_WWN destWWN,
635 636 HBA_UINT32 destFCID,
636 637 HBA_UINT32 NodeIdDataFormat,
637 638 void *pRspBuffer,
638 639 HBA_UINT32 *pRspBufferSize
639 640 );
640 641
641 642 /* Depricated, but supported */
642 643 HBA_API HBA_STATUS HBA_SendRNID(
643 644 HBA_HANDLE handle,
644 645 HBA_WWN wwn,
645 646 HBA_WWNTYPE wwntype,
646 647 void *pRspBuffer,
647 648 HBA_UINT32 *pRspBufferSize
648 649 );
649 650
650 651 HBA_API HBA_STATUS HBA_SendRLS (
651 652 HBA_HANDLE handle,
652 653 HBA_WWN hbaPortWWN,
653 654 HBA_WWN destWWN,
654 655 void *pRspBuffer,
655 656 HBA_UINT32 *pRspBufferSize
656 657 );
657 658
658 659 HBA_API HBA_STATUS HBA_SendRPL (
659 660 HBA_HANDLE handle,
660 661 HBA_WWN hbaPortWWN,
661 662 HBA_WWN agent_wwn,
662 663 HBA_UINT32 agent_domain,
663 664 HBA_UINT32 portindex,
664 665 void *pRspBuffer,
665 666 HBA_UINT32 *pRspBufferSize
666 667 );
667 668
668 669 HBA_API HBA_STATUS HBA_SendRPS (
669 670 HBA_HANDLE handle,
670 671 HBA_WWN hbaPortWWN,
671 672 HBA_WWN agent_wwn,
672 673 HBA_UINT32 agent_domain,
673 674 HBA_WWN object_wwn,
674 675 HBA_UINT32 object_port_number,
675 676 void *pRspBuffer,
676 677 HBA_UINT32 *pRspBufferSize
677 678 );
678 679
679 680 HBA_API HBA_STATUS HBA_SendSRL (
680 681 HBA_HANDLE handle,
681 682 HBA_WWN hbaPortWWN,
682 683 HBA_WWN wwn,
683 684 HBA_UINT32 domain,
684 685 void *pRspBuffer,
685 686 HBA_UINT32 *pRspBufferSize
686 687 );
687 688
688 689 HBA_API HBA_STATUS HBA_SendLIRR (
689 690 HBA_HANDLE handle,
690 691 HBA_WWN sourceWWN,
691 692 HBA_WWN destWWN,
692 693 HBA_UINT8 function,
693 694 HBA_UINT8 type,
694 695 void *pRspBuffer,
695 696 HBA_UINT32 *pRspBufferSize
696 697 );
697 698
698 699
699 700 HBA_API HBA_STATUS HBA_GetFC4Statistics (
700 701 HBA_HANDLE handle,
701 702 HBA_WWN portWWN,
702 703 HBA_UINT8 FC4type,
703 704 HBA_FC4STATISTICS *pstatistics
704 705 );
705 706
706 707 HBA_API HBA_STATUS HBA_GetFCPStatistics (
707 708 HBA_HANDLE handle,
708 709 const HBA_SCSIID *lunit,
709 710 HBA_FC4STATISTICS *pstatistics);
710 711
711 712 HBA_API void HBA_RefreshInformation(
712 713 HBA_HANDLE handle
713 714 );
714 715
715 716 HBA_API void HBA_ResetStatistics(
716 717 HBA_HANDLE handle,
717 718 HBA_UINT32 portindex
718 719 );
719 720
720 721 HBA_API HBA_STATUS HBA_GetFcpTargetMapping(
721 722 HBA_HANDLE handle,
722 723 HBA_FCPTARGETMAPPING
723 724 *pmapping
724 725 );
725 726
726 727 HBA_API HBA_STATUS HBA_GetFcpTargetMappingV2(
727 728 HBA_HANDLE handle,
728 729 HBA_WWN hbaPortWWN,
729 730 HBA_FCPTARGETMAPPINGV2
730 731 *pmapping
731 732 );
732 733
733 734 HBA_API HBA_STATUS HBA_GetBindingCapability(
734 735 HBA_HANDLE handle,
735 736 HBA_WWN hbaPortWWN,
736 737 HBA_BIND_CAPABILITY *pcapability
737 738 );
738 739
739 740 HBA_API HBA_STATUS HBA_GetBindingSupport(
740 741 HBA_HANDLE handle,
741 742 HBA_WWN hbaPortWWN,
742 743 HBA_BIND_CAPABILITY *pcapability
743 744 );
744 745
745 746 HBA_API HBA_STATUS HBA_SetBindingSupport(
746 747 HBA_HANDLE handle,
747 748 HBA_WWN hbaPortWWN,
748 749 HBA_BIND_CAPABILITY capability
749 750 );
750 751
751 752 HBA_API HBA_STATUS HBA_SetPersistentBindingV2(
752 753 HBA_HANDLE handle,
753 754 HBA_WWN hbaPortWWN,
754 755 const HBA_FCPBINDING2
755 756 *pbinding
756 757 );
757 758
758 759 HBA_API HBA_STATUS HBA_GetPersistentBindingV2(
759 760 HBA_HANDLE handle,
760 761 HBA_WWN hbaPortWWN,
761 762 HBA_FCPBINDING2 *binding
762 763 );
763 764
764 765 HBA_API HBA_STATUS HBA_RemovePersistentBinding(
765 766 HBA_HANDLE handle,
766 767 HBA_WWN hbaPortWWN,
767 768 const HBA_FCPBINDING2
768 769 *pbinding
769 770 );
770 771
771 772 /* Depricated, but supported */
772 773 HBA_API HBA_STATUS HBA_GetFcpPersistentBinding(
773 774 HBA_HANDLE handle,
774 775 HBA_FCPBINDING *binding
775 776 );
776 777
777 778 HBA_API HBA_STATUS HBA_RemoveAllPersistentBindings(
778 779 HBA_HANDLE handle,
779 780 HBA_WWN hbaPortWWN
780 781 );
781 782
782 783 HBA_STATUS HBA_ScsiInquiryV2 (
783 784 HBA_HANDLE handle,
784 785 HBA_WWN hbaPortWWN,
785 786 HBA_WWN discoveredPortWWN,
786 787 HBA_UINT64 fcLUN,
787 788 HBA_UINT8 CDB_Byte1,
788 789 HBA_UINT8 CDB_BYte2,
789 790 void *pRspBuffer,
790 791 HBA_UINT32 *pRspBufferSize,
791 792 HBA_UINT8 *pScsiStatus,
792 793 void *pSenseBuffer,
793 794 HBA_UINT32 *pSenseBufferSize
794 795 );
795 796
796 797 /* Depricated, but supported */
797 798 HBA_API HBA_STATUS HBA_SendScsiInquiry (
798 799 HBA_HANDLE handle,
799 800 HBA_WWN PortWWN,
800 801 HBA_UINT64 fcLUN,
801 802 HBA_UINT8 EVPD,
802 803 HBA_UINT32 PageCode,
803 804 void *pRspBuffer,
804 805 HBA_UINT32 RspBufferSize,
805 806 void *pSenseBuffer,
806 807 HBA_UINT32 SenseBufferSize
807 808 );
808 809
809 810 HBA_API HBA_STATUS HBA_ScsiReportLUNsV2(
810 811 HBA_HANDLE handle,
811 812 HBA_WWN hbaPortWWN,
812 813 HBA_WWN discoveredPortWWN,
813 814 void *pRespBuffer,
814 815 HBA_UINT32 *pRespBufferSize,
815 816 HBA_UINT8 *pScsiStatus,
816 817 void *pSenseBuffer,
817 818 HBA_UINT32 *pSenseBufferSize
818 819 );
819 820
820 821 /* Depricated, but supported */
821 822 HBA_API HBA_STATUS HBA_SendReportLUNs (
822 823 HBA_HANDLE handle,
823 824 HBA_WWN portWWN,
824 825 void *pRspBuffer,
825 826 HBA_UINT32 RspBufferSize,
826 827 void *pSenseBuffer,
827 828 HBA_UINT32 SenseBufferSize
828 829 );
829 830
830 831 HBA_API HBA_STATUS HBA_ScsiReadCapacityV2(
831 832 HBA_HANDLE handle,
832 833 HBA_WWN hbaPortWWN,
833 834 HBA_WWN discoveredPortWWN,
834 835 HBA_UINT64 fcLUN,
835 836 void *pRspBuffer,
836 837 HBA_UINT32 *pRspBufferSize,
837 838 HBA_UINT8 *pScsiStatus,
838 839 void *pSenseBuffer,
839 840 HBA_UINT32 *SenseBufferSize
840 841 );
841 842
842 843 /* Depricated, but supported */
843 844 HBA_API HBA_STATUS HBA_SendReadCapacity (
844 845 HBA_HANDLE handle,
845 846 HBA_WWN portWWN,
846 847 HBA_UINT64 fcLUN,
847 848 void *pRspBuffer,
848 849 HBA_UINT32 RspBufferSize,
849 850 void *pSenseBuffer,
850 851 HBA_UINT32 SenseBufferSize
851 852 );
852 853
853 854 #ifndef _KERNEL
854 855 HBA_API HBA_UINT32 HBA_GetVendorLibraryAttributes (
855 856 HBA_UINT32 adapter_index,
856 857 HBA_LIBRARYATTRIBUTES
857 858 *attributes
858 859 );
859 860 #endif /* ifndef _KERNEL */
860 861
861 862 HBA_API HBA_STATUS HBA_RemoveCallback(
862 863 HBA_CALLBACKHANDLE callbackHandle
863 864 );
864 865
865 866 HBA_API HBA_STATUS HBA_RegisterForAdapterAddEvents(
866 867 void (*callback) (
867 868 void *data,
868 869 HBA_WWN PortWWN,
869 870 HBA_UINT32 eventType
870 871 ),
871 872 void *userData,
872 873 HBA_CALLBACKHANDLE *callbackHandle
873 874 );
874 875
875 876 HBA_API HBA_STATUS HBA_RegisterForAdapterEvents(
876 877 void (*callback)(
877 878 void *data,
878 879 HBA_WWN PortWWN,
879 880 HBA_UINT32 eventType
880 881 ),
881 882 void *userData,
882 883 HBA_HANDLE handle,
883 884 HBA_CALLBACKHANDLE *callbackHandle
884 885 );
885 886
886 887 HBA_API HBA_STATUS HBA_RegisterForAdapterPortEvents(
887 888 void (*callback)(
888 889 void *data,
889 890 HBA_WWN PortWWN,
890 891 HBA_UINT32 eventType,
891 892 HBA_UINT32 fabricPortID
892 893 ),
893 894 void *userData,
894 895 HBA_HANDLE handle,
895 896 HBA_WWN PortWWN,
896 897 HBA_CALLBACKHANDLE *callbackHandle
897 898 );
898 899
899 900 HBA_API HBA_STATUS HBA_RegisterForAdapterPortStatEvents(
900 901 void (*callback)(
901 902 void *data,
902 903 HBA_WWN PortWWN,
903 904 HBA_UINT32 eventType
904 905 ),
905 906 void *userData,
906 907 HBA_HANDLE handle,
907 908 HBA_WWN PortWWN,
908 909 HBA_PORTSTATISTICS stats,
909 910 HBA_UINT32 statType,
910 911 HBA_CALLBACKHANDLE *callbackHandle
911 912 );
912 913
913 914
914 915 HBA_API HBA_STATUS HBA_RegisterForTargetEvents(
915 916 void (*callback)(
916 917 void *data,
917 918 HBA_WWN hbaPortWWN,
918 919 HBA_WWN discoveredPortWWN,
919 920 HBA_UINT32 eventType
920 921 ),
921 922 void *userData,
922 923 HBA_HANDLE handle,
923 924 HBA_WWN hbaPortWWN,
924 925 HBA_WWN discoveredPortWWN,
925 926 HBA_CALLBACKHANDLE *callbackHandle,
926 927 HBA_UINT32 allTargets
927 928 );
928 929
929 930 HBA_API HBA_STATUS HBA_RegisterForLinkEvents(
930 931 void (*callback)
931 932 (
932 933 void *data,
933 934 HBA_WWN adapterWWN,
934 935 HBA_UINT32 eventType,
935 936 void *pRLIRBuffer,
936 937 HBA_UINT32 RLIRBufferSize
937 938 ),
938 939 void *userData,
939 940 void *pRLIRBuffer,
940 941 HBA_UINT32 RLIRBufferSize,
941 942 HBA_HANDLE handle,
942 943 HBA_CALLBACKHANDLE *callbackHandle
943 944 );
944 945
945 946 /* Wrapper library specific entry points */
946 947
947 948 #ifndef _KERNEL
948 949 HBA_API HBA_UINT32 HBA_GetWrapperLibraryAttributes (
949 950 HBA_LIBRARYATTRIBUTES
950 951 *attributes
951 952 );
952 953 #endif /* ifndef _KERNEL */
953 954
954 955 #ifdef __cplusplus
955 956 }
956 957 #endif
957 958
958 959 #endif /* _EMLXS_HBAAPI_H */
|
↓ open down ↓ |
707 lines elided |
↑ open up ↑ |
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX