This source file includes following definitions.
- TestCommandResponse
- TestAdapterCommand
- LastTestCommand
- ReinitHostNormCommandQueue
- ReinitHostHighCommandQueue
- ReinitHostHighRespQueue
- ReinitHostNormRespQueue
- ReinitAdapNormCommandQueue
- ReinitAdapHighCommandQueue
- ReinitAdapHighRespQueue
- ReinitAdapNormRespQueue
- InterfaceShutdown
- DmaCommandFib
- StartProfile
- TermProfile
- SpeedTest
- TakeABreakPt
- RequestPerfData
- SetInterruptDefTimer
- SetInterruptDefCount
- GetInterruptDefStatus
- LastCommCommand
- NuFileSystem
- UFS
- HostFileSystem
- LastFileSystemCommand
- ContainerCommand
- ContainerCommand64
- ClusterCommand
- ScsiPortCommand
- AifRequest
- CheckRevision
- FsaHostShutdown
- RequestAdapterInfo
- IsAdapterPaused
- SendHostTime
- LastMiscCommand
- AAC_FibCommands
- CT_NONE
- CT_VOLUME
- CT_MIRROR
- CT_STRIPE
- CT_RAID5
- CT_SSRW
- CT_SSRO
- CT_MORPH
- CT_PASSTHRU
- CT_RAID4
- CT_RAID10
- CT_RAID00
- CT_VOLUME_OF_MIRRORS
- CT_PSEUDO_RAID3
- CT_RAID50
- AAC_FSAVolType
- FT_REG
- FT_DIR
- FT_BLK
- FT_CHR
- FT_LNK
- FT_SOCK
- FT_FIFO
- FT_FILESYS
- FT_DRIVE
- FT_SLICE
- FT_PARTITION
- FT_VOLUME
- FT_STRIPE
- FT_MIRROR
- FT_RAID5
- FT_DATABASE
- AAC_FType
- RevApplication
- RevDkiCli
- RevNetService
- RevApi
- RevFileSysDriver
- RevMiniportDriver
- RevAdapterSW
- RevMonitor
- RevRemoteApi
- RevComponent
- CPU_NTSIM
- CPU_I960
- CPU_ARM
- CPU_SPARC
- CPU_POWERPC
- CPU_ALPHA
- CPU_P7
- CPU_I960_RX
- CPU__last
- AAC_CpuType
- CPUI960_JX
- CPUI960_CX
- CPUI960_HX
- CPUI960_RX
- CPUARM_SA110
- CPUARM_xxx
- CPUMPC_824x
- CPUPPC_xxx
- CPUI960_302
- CPUSUBTYPE__last
- AAC_CpuSubType
- PLAT_NTSIM
- PLAT_V3ADU
- PLAT_CYCLONE
- PLAT_CYCLONE_HD
- PLAT_BATBOARD
- PLAT_BATBOARD_HD
- PLAT_YOLO
- PLAT_COBRA
- PLAT_ANAHEIM
- PLAT_JALAPENO
- PLAT_QUEENS
- PLAT_JALAPENO_DELL
- PLAT_POBLANO
- PLAT_POBLANO_OPAL
- PLAT_POBLANO_SL0
- PLAT_POBLANO_SL1
- PLAT_POBLANO_SL2
- PLAT_POBLANO_XXX
- PLAT_JALAPENO_P2
- PLAT_HABANERO
- PLAT__last
- AAC_Platform
- OEM_FLAVOR_ADAPTEC
- OEM_FLAVOR_DELL
- OEM_FLAVOR_HP
- OEM_FLAVOR_IBM
- OEM_FLAVOR_CPQ
- OEM_FLAVOR_BRAND_X
- OEM_FLAVOR_BRAND_Y
- OEM_FLAVOR_BRAND_Z
- OEM_FLAVOR__last
- AAC_OemFlavor
- PLATFORM_BAT_REQ_PRESENT
- PLATFORM_BAT_REQ_NOTPRESENT
- PLATFORM_BAT_OPT_PRESENT
- PLATFORM_BAT_OPT_NOTPRESENT
- PLATFORM_BAT_NOT_SUPPORTED
- AAC_BatteryPlatform
- NVSTATUS_DISABLED
- NVSTATUS_ENABLED
- NVSTATUS_ERROR
- NVSTATUS_BATTERY
- NVSTATUS_UNKNOWN
- AAC_NVSTATUS
- NVBATTSTATUS_NONE
- NVBATTSTATUS_LOW
- NVBATTSTATUS_OK
- NVBATTSTATUS_RECONDITIONING
- AAC_NVBATTSTATUS
- NVBATT_TRANSITION_NONE
- NVBATT_TRANSITION_LOW
- NVBATT_TRANSITION_OK
- AAC_NVBATT_TRANSITION
- AifJobStsSuccess
- AifJobStsFinished
- AifJobStsAborted
- AifJobStsFailed
- AifJobStsLastReportMarker
- AifJobStsSuspended
- AifJobStsRunning
- AAC_AifJobStatus
- AifJobScsiMin
- AifJobScsiZero
- AifJobScsiVerify
- AifJobScsiExercise
- AifJobScsiVerifyRepair
- AifJobScsiMax
- AifJobCtrMin
- AifJobCtrZero
- AifJobCtrCopy
- AifJobCtrCreateMirror
- AifJobCtrMergeMirror
- AifJobCtrScrubMirror
- AifJobCtrRebuildRaid5
- AifJobCtrScrubRaid5
- AifJobCtrMorph
- AifJobCtrPartCopy
- AifJobCtrRebuildMirror
- AifJobCtrCrazyCache
- AifJobCtrMax
- AifJobFsMin
- AifJobFsCreate
- AifJobFsVerify
- AifJobFsExtend
- AifJobFsMax
- AifJobApiFormatNTFS
- AifJobApiFormatFAT
- AifJobApiUpdateSnapshot
- AifJobApiFormatFAT32
- AifJobApiMax
- AifJobCtlContinuousCtrVerify
- AifJobCtlMax
- AAC_AifJobType
- AifEnGeneric
- AifEnTaskComplete
- AifEnConfigChange
- AifEnContainerChange
- AifEnDeviceFailure
- AifEnMirrorFailover
- AifEnContainerEvent
- AifEnFileSystemChange
- AifEnConfigPause
- AifEnConfigResume
- AifEnFailoverChange
- AifEnRAID5RebuildDone
- AifEnEnclosureManagement
- AifEnBatteryEvent
- AifEnAddContainer
- AifEnDeleteContainer
- AifEnSMARTEvent
- AifEnBatteryNeedsRecond
- AifEnClusterEvent
- AifEnDiskSetEvent
- AifDriverNotifyStart
- AifDenMorphComplete
- AifDenVolumeExtendComplete
- AAC_AifEventNotifyType
- CLUSTER_NULL_EVENT
- CLUSTER_PARTNER_NAME_EVENT
- CLUSTER_PARTNER_NULL_NAME_EVENT
- AAC_ClusterAifEvent
- AifCmdEventNotify
- AifCmdJobProgress
- AifCmdAPIReport
- AifCmdDriverNotify
- AifReqJobList
- AifReqJobsForCtr
- AifReqJobsForScsi
- AifReqJobReport
- AifReqTerminateJob
- AifReqSuspendJob
- AifReqResumeJob
- AifReqSendAPIReport
- AifReqAPIJobStart
- AifReqAPIJobUpdate
- AifReqAPIJobFinish
- AAC_AifCommand
- Null
- GetAttributes
- SetAttributes
- Lookup
- ReadLink
- Read
- Write
- Create
- MakeDirectory
- SymbolicLink
- MakeNode
- Removex
- RemoveDirectory
- Rename
- Link
- ReadDirectory
- ReadDirectoryPlus
- FileSystemStatus
- FileSystemInfo
- PathConfigure
- Commit
- Mount
- UnMount
- Newfs
- FsCheck
- FsSync
- SimReadWrite
- SetFileSystemStatus
- BlockRead
- BlockWrite
- NvramIoctl
- FsSyncWait
- ClearArchiveBit
- SetAcl
- GetAcl
- AssignAcl
- FaultInsertion
- CrazyCache
- AAC_FSACommand
- ST_OK
- ST_PERM
- ST_NOENT
- ST_IO
- ST_NXIO
- ST_E2BIG
- ST_ACCES
- ST_EXIST
- ST_XDEV
- ST_NODEV
- ST_NOTDIR
- ST_ISDIR
- ST_INVAL
- ST_FBIG
- ST_NOSPC
- ST_ROFS
- ST_MLINK
- ST_WOULDBLOCK
- ST_NAMETOOLONG
- ST_NOTEMPTY
- ST_DQUOT
- ST_STALE
- ST_REMOTE
- ST_BADHANDLE
- ST_NOT_SYNC
- ST_BAD_COOKIE
- ST_NOTSUPP
- ST_TOOSMALL
- ST_SERVERFAULT
- ST_BADTYPE
- ST_JUKEBOX
- ST_NOTMOUNTED
- ST_MAINTMODE
- ST_STALEACL
- AAC_FSAStatus
- VM_Null
- VM_NameServe
- VM_ContainerConfig
- VM_Ioctl
- VM_FilesystemIoctl
- VM_CloseAll
- VM_CtBlockRead
- VM_CtBlockWrite
- VM_SliceBlockRead
- VM_SliceBlockWrite
- VM_DriveBlockRead
- VM_DriveBlockWrite
- VM_EnclosureMgt
- VM_Unused
- VM_CtBlockVerify
- VM_CtPerf
- VM_CtBlockRead64
- VM_CtBlockWrite64
- VM_CtBlockVerify64
- VM_CtHostRead64
- VM_CtHostWrite64
- AAC_VMCommand
- CSTABLE
- CUNSTABLE
- AAC_CacheLevel
- CMFILE_SYNC_NVRAM
- CMDATA_SYNC_NVRAM
- CMFILE_SYNC
- CMDATA_SYNC
- CMUNSTABLE
- AAC_CommitLevel
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 #define AAC_MAX_CONTAINERS 64
46 #define AAC_BLOCK_SIZE 512
47
48
49
50
51
52
53
54
55
56
57
58
59 #define AAC_HOST_NORM_CMD_ENTRIES 8
60
61 #define AAC_HOST_HIGH_CMD_ENTRIES 4
62
63 #define AAC_ADAP_NORM_CMD_ENTRIES 512
64
65 #define AAC_ADAP_HIGH_CMD_ENTRIES 4
66
67 #define AAC_HOST_NORM_RESP_ENTRIES 512
68
69 #define AAC_HOST_HIGH_RESP_ENTRIES 4
70
71 #define AAC_ADAP_NORM_RESP_ENTRIES 8
72
73 #define AAC_ADAP_HIGH_RESP_ENTRIES 4
74
75
76 #define AAC_TOTALQ_LENGTH (AAC_HOST_HIGH_CMD_ENTRIES + \
77 AAC_HOST_NORM_CMD_ENTRIES + \
78 AAC_ADAP_HIGH_CMD_ENTRIES + \
79 AAC_ADAP_NORM_CMD_ENTRIES + \
80 AAC_HOST_HIGH_RESP_ENTRIES + \
81 AAC_HOST_NORM_RESP_ENTRIES + \
82 AAC_ADAP_HIGH_RESP_ENTRIES + \
83 AAC_ADAP_NORM_RESP_ENTRIES)
84 #define AAC_QUEUE_COUNT 8
85 #define AAC_QUEUE_ALIGN 16
86
87 struct aac_queue_entry {
88 u_int32_t aq_fib_size;
89 u_int32_t aq_fib_addr;
90 } __attribute__ ((__packed__));
91
92 #define AAC_PRODUCER_INDEX 0
93 #define AAC_CONSUMER_INDEX 1
94
95
96
97
98
99 struct aac_queue_table {
100
101 u_int32_t qt_qindex[AAC_QUEUE_COUNT][2];
102
103
104 struct aac_queue_entry qt_HostNormCmdQueue [AAC_HOST_NORM_CMD_ENTRIES];
105 struct aac_queue_entry qt_HostHighCmdQueue [AAC_HOST_HIGH_CMD_ENTRIES];
106 struct aac_queue_entry qt_AdapNormCmdQueue [AAC_ADAP_NORM_CMD_ENTRIES];
107 struct aac_queue_entry qt_AdapHighCmdQueue [AAC_ADAP_HIGH_CMD_ENTRIES];
108 struct aac_queue_entry qt_HostNormRespQueue[AAC_HOST_NORM_RESP_ENTRIES];
109 struct aac_queue_entry qt_HostHighRespQueue[AAC_HOST_HIGH_RESP_ENTRIES];
110 struct aac_queue_entry qt_AdapNormRespQueue[AAC_ADAP_NORM_RESP_ENTRIES];
111 struct aac_queue_entry qt_AdapHighRespQueue[AAC_ADAP_HIGH_RESP_ENTRIES];
112 } __attribute__ ((__packed__));
113
114
115
116
117
118
119
120 #define AAC_HOST_NORM_CMD_QUEUE 0
121 #define AAC_HOST_HIGH_CMD_QUEUE 1
122 #define AAC_ADAP_NORM_CMD_QUEUE 2
123 #define AAC_ADAP_HIGH_CMD_QUEUE 3
124 #define AAC_HOST_NORM_RESP_QUEUE 4
125 #define AAC_HOST_HIGH_RESP_QUEUE 5
126 #define AAC_ADAP_NORM_RESP_QUEUE 6
127 #define AAC_ADAP_HIGH_RESP_QUEUE 7
128
129
130
131
132
133 struct aac_fib_list_entry {
134 u_int32_t Flink;
135 u_int32_t Blink;
136 } __attribute__ ((__packed__));
137
138
139
140
141
142 struct aac_fib_header {
143 u_int32_t XferState;
144 u_int16_t Command;
145 u_int8_t StructType;
146 u_int8_t Flags;
147 u_int16_t Size;
148 u_int16_t SenderSize;
149 u_int32_t SenderFibAddress;
150 u_int32_t ReceiverFibAddress;
151 u_int32_t SenderData;
152 union {
153 struct {
154 u_int32_t ReceiverTimeStart;
155 u_int32_t ReceiverTimeDone;
156 } _s;
157 struct aac_fib_list_entry FibLinks;
158 } _u;
159 } __attribute__ ((__packed__));
160
161 #define AAC_FIB_DATASIZE (512 - sizeof(struct aac_fib_header))
162
163 struct aac_fib {
164 struct aac_fib_header Header;
165 u_int8_t data[AAC_FIB_DATASIZE];
166 } __attribute__ ((__packed__));
167
168
169
170
171 typedef enum {
172 TestCommandResponse = 1,
173 TestAdapterCommand = 2,
174
175
176 LastTestCommand = 100,
177 ReinitHostNormCommandQueue = 101,
178 ReinitHostHighCommandQueue = 102,
179 ReinitHostHighRespQueue = 103,
180 ReinitHostNormRespQueue = 104,
181 ReinitAdapNormCommandQueue = 105,
182 ReinitAdapHighCommandQueue = 107,
183 ReinitAdapHighRespQueue = 108,
184 ReinitAdapNormRespQueue = 109,
185 InterfaceShutdown = 110,
186 DmaCommandFib = 120,
187 StartProfile = 121,
188 TermProfile = 122,
189 SpeedTest = 123,
190 TakeABreakPt = 124,
191 RequestPerfData = 125,
192 SetInterruptDefTimer= 126,
193 SetInterruptDefCount= 127,
194 GetInterruptDefStatus= 128,
195 LastCommCommand = 129,
196
197
198 NuFileSystem = 300,
199 UFS = 301,
200 HostFileSystem = 302,
201 LastFileSystemCommand = 303,
202
203
204 ContainerCommand = 500,
205 ContainerCommand64 = 501,
206
207
208 ClusterCommand = 550,
209
210
211 ScsiPortCommand = 600,
212
213
214 AifRequest = 700,
215 CheckRevision = 701,
216 FsaHostShutdown = 702,
217 RequestAdapterInfo = 703,
218 IsAdapterPaused = 704,
219 SendHostTime = 705,
220 LastMiscCommand = 706
221 } AAC_FibCommands;
222
223
224
225
226 #define AAC_FIBTYPE_TFIB 1
227 #define AAC_FIBTYPE_TQE 2
228 #define AAC_FIBTYPE_TCTPERF 3
229
230
231
232
233 #define AAC_FIBSTATE_HOSTOWNED (1<<0)
234 #define AAC_FIBSTATE_ADAPTEROWNED (1<<1)
235 #define AAC_FIBSTATE_INITIALISED (1<<2)
236 #define AAC_FIBSTATE_EMPTY (1<<3)
237 #define AAC_FIBSTATE_FROMPOOL (1<<4)
238 #define AAC_FIBSTATE_FROMHOST (1<<5)
239 #define AAC_FIBSTATE_FROMADAP (1<<6)
240 #define AAC_FIBSTATE_REXPECTED (1<<7)
241 #define AAC_FIBSTATE_RNOTEXPECTED (1<<8)
242 #define AAC_FIBSTATE_DONEADAP (1<<9)
243 #define AAC_FIBSTATE_DONEHOST (1<<10)
244 #define AAC_FIBSTATE_HIGH (1<<11)
245 #define AAC_FIBSTATE_NORM (1<<12)
246 #define AAC_FIBSTATE_ASYNC (1<<13)
247 #define AAC_FIBSTATE_ASYNCIO (1<<13)
248 #define AAC_FIBSTATE_PAGEFILEIO (1<<14)
249 #define AAC_FIBSTATE_SHUTDOWN (1<<15)
250 #define AAC_FIBSTATE_LAZYWRITE (1<<16)
251 #define AAC_FIBSTATE_ADAPMICROFIB (1<<17)
252 #define AAC_FIBSTATE_BIOSFIB (1<<18)
253 #define AAC_FIBSTATE_FAST_RESPONSE (1<<19)
254 #define AAC_FIBSTATE_APIFIB (1<<20)
255
256
257
258
259 #define AAC_ERROR_NORMAL 0x00
260 #define AAC_ERROR_PENDING 0x01
261 #define AAC_ERROR_FATAL 0x02
262 #define AAC_ERROR_INVALID_QUEUE 0x03
263 #define AAC_ERROR_NOENTRIES 0x04
264 #define AAC_ERROR_SENDFAILED 0x05
265 #define AAC_ERROR_INVALID_QUEUE_PRIORITY 0x06
266 #define AAC_ERROR_FIB_ALLOCATION_FAILED 0x07
267 #define AAC_ERROR_FIB_DEALLOCATION_FAILED 0x08
268
269
270
271
272
273 struct aac_adapter_init {
274 u_int32_t InitStructRevision;
275 #define AAC_INIT_STRUCT_REVISION 3
276 u_int32_t MiniPortRevision;
277 #define AAC_INIT_STRUCT_MINIPORT_REVISION 1
278 u_int32_t FilesystemRevision;
279 u_int32_t CommHeaderAddress;
280 u_int32_t FastIoCommAreaAddress;
281 u_int32_t AdapterFibsPhysicalAddress;
282 u_int32_t AdapterFibsVirtualAddress;
283 u_int32_t AdapterFibsSize;
284 u_int32_t AdapterFibAlign;
285 u_int32_t PrintfBufferAddress;
286 u_int32_t PrintfBufferSize;
287 #define AAC_PAGE_SIZE 4096
288 u_int32_t HostPhysMemPages;
289 u_int32_t HostElapsedSeconds;
290 } __attribute__ ((__packed__));
291
292
293
294
295
296
297
298 typedef enum {
299 CT_NONE = 0,
300 CT_VOLUME,
301 CT_MIRROR,
302 CT_STRIPE,
303 CT_RAID5,
304 CT_SSRW,
305 CT_SSRO,
306 CT_MORPH,
307 CT_PASSTHRU,
308 CT_RAID4,
309 CT_RAID10,
310 CT_RAID00,
311 CT_VOLUME_OF_MIRRORS,
312 CT_PSEUDO_RAID3,
313 CT_RAID50,
314 } AAC_FSAVolType;
315
316
317
318
319 typedef enum {
320 FT_REG = 1,
321 FT_DIR,
322 FT_BLK,
323 FT_CHR,
324 FT_LNK,
325 FT_SOCK,
326 FT_FIFO,
327 FT_FILESYS,
328 FT_DRIVE,
329 FT_SLICE,
330 FT_PARTITION,
331
332 FT_VOLUME,
333 FT_STRIPE,
334 FT_MIRROR,
335 FT_RAID5,
336 FT_DATABASE
337 } AAC_FType;
338
339
340
341
342 struct aac_sg_entry {
343 u_int32_t SgAddress;
344 u_int32_t SgByteCount;
345 } __attribute__ ((__packed__));
346
347 struct aac_sg_entry64 {
348 u_int64_t SgAddress;
349 u_int32_t SgByteCount;
350 } __attribute__ ((__packed__));
351
352 struct aac_sg_table {
353 u_int32_t SgCount;
354 struct aac_sg_entry SgEntry[0];
355 } __attribute__ ((__packed__));
356
357
358
359
360 struct aac_sg_table64 {
361 u_int32_t SgCount;
362 struct aac_sg_entry64 SgEntry64[0];
363 } __attribute__ ((__packed__));
364
365
366
367
368 struct aac_container_creation {
369 u_int8_t ViaBuildNumber;
370 u_int8_t MicroSecond;
371 u_int8_t Via;
372 u_int8_t YearsSince1900;
373 u_int32_t Month:4;
374 u_int32_t Day:6;
375 u_int32_t Hour:6;
376 u_int32_t Minute:6;
377 u_int32_t Second:6;
378 u_int64_t ViaAdapterSerialNumber;
379 } __attribute__ ((__packed__));
380
381
382
383
384
385 typedef enum {
386 RevApplication = 1,
387 RevDkiCli,
388 RevNetService,
389 RevApi,
390 RevFileSysDriver,
391 RevMiniportDriver,
392 RevAdapterSW,
393 RevMonitor,
394 RevRemoteApi
395 } RevComponent;
396
397 struct FsaRevision {
398 union {
399 struct {
400 u_int8_t dash;
401 u_int8_t type;
402 u_int8_t minor;
403 u_int8_t major;
404 } comp;
405 u_int32_t ul;
406 } external;
407 u_int32_t buildNumber;
408 } __attribute__ ((__packed__));
409
410
411
412
413
414 typedef enum {
415 CPU_NTSIM = 1,
416 CPU_I960,
417 CPU_ARM,
418 CPU_SPARC,
419 CPU_POWERPC,
420 CPU_ALPHA,
421 CPU_P7,
422 CPU_I960_RX,
423 CPU__last
424 } AAC_CpuType;
425
426 typedef enum {
427 CPUI960_JX = 1,
428 CPUI960_CX,
429 CPUI960_HX,
430 CPUI960_RX,
431 CPUARM_SA110,
432 CPUARM_xxx,
433 CPUMPC_824x,
434 CPUPPC_xxx,
435 CPUI960_302,
436 CPUSUBTYPE__last
437 } AAC_CpuSubType;
438
439 typedef enum {
440 PLAT_NTSIM = 1,
441 PLAT_V3ADU,
442 PLAT_CYCLONE,
443 PLAT_CYCLONE_HD,
444 PLAT_BATBOARD,
445 PLAT_BATBOARD_HD,
446 PLAT_YOLO,
447 PLAT_COBRA,
448 PLAT_ANAHEIM,
449 PLAT_JALAPENO,
450 PLAT_QUEENS,
451 PLAT_JALAPENO_DELL,
452 PLAT_POBLANO,
453 PLAT_POBLANO_OPAL,
454 PLAT_POBLANO_SL0,
455 PLAT_POBLANO_SL1,
456 PLAT_POBLANO_SL2,
457 PLAT_POBLANO_XXX,
458 PLAT_JALAPENO_P2,
459 PLAT_HABANERO,
460 PLAT__last
461 } AAC_Platform;
462
463 typedef enum {
464 OEM_FLAVOR_ADAPTEC = 1,
465 OEM_FLAVOR_DELL,
466 OEM_FLAVOR_HP,
467 OEM_FLAVOR_IBM,
468 OEM_FLAVOR_CPQ,
469 OEM_FLAVOR_BRAND_X,
470 OEM_FLAVOR_BRAND_Y,
471 OEM_FLAVOR_BRAND_Z,
472 OEM_FLAVOR__last
473 } AAC_OemFlavor;
474
475
476
477
478 typedef enum
479 {
480 PLATFORM_BAT_REQ_PRESENT = 1,
481 PLATFORM_BAT_REQ_NOTPRESENT,
482 PLATFORM_BAT_OPT_PRESENT,
483 PLATFORM_BAT_OPT_NOTPRESENT,
484 PLATFORM_BAT_NOT_SUPPORTED
485 } AAC_BatteryPlatform;
486
487
488
489
490
491
492 #define AAC_SUPPORTED_SNAPSHOT 0x01
493 #define AAC_SUPPORTED_CLUSTERS 0x02
494 #define AAC_SUPPORTED_WRITE_CACHE 0x04
495 #define AAC_SUPPORTED_64BIT_DATA 0x08
496 #define AAC_SUPPORTED_HOST_TIME_FIB 0x10
497 #define AAC_SUPPORTED_RAID50 0x20
498 #define AAC_SUPPORTED_4GB_WINDOW 0x40
499 #define AAC_SUPPORTED_SCSI_UPGRADEABLE 0x80
500 #define AAC_SUPPORTED_SOFT_ERR_REPORT 0x100
501 #define AAC_SUPPORTED_NOT_RECONDITION 0x200
502 #define AAC_SUPPORTED_SGMAP_HOST64 0x400
503 #define AAC_SUPPORTED_ALARM 0x800
504 #define AAC_SUPPORTED_NONDASD 0x1000
505
506
507
508
509 struct aac_adapter_info {
510 AAC_Platform PlatformBase;
511 AAC_CpuType CpuArchitecture;
512 AAC_CpuSubType CpuVariant;
513 u_int32_t ClockSpeed;
514 u_int32_t ExecutionMem;
515
516 u_int32_t BufferMem;
517 u_int32_t TotalMem;
518 struct FsaRevision KernelRevision;
519
520 struct FsaRevision MonitorRevision;
521
522 struct FsaRevision HardwareRevision;
523 struct FsaRevision BIOSRevision;
524 u_int32_t ClusteringEnabled;
525 u_int32_t ClusterChannelMask;
526 u_int64_t SerialNumber;
527 AAC_BatteryPlatform batteryPlatform;
528 u_int32_t SupportedOptions;
529
530 AAC_OemFlavor OemVariant;
531 } __attribute__ ((__packed__));
532
533
534
535
536
537
538
539
540 #define AAC_MONKER_INITSTRUCT 0x05
541 #define AAC_MONKER_SYNCFIB 0x0c
542 #define AAC_MONKER_GETKERNVER 0x11
543 #define AAC_MONKER_GETINFO 0x19
544
545
546
547
548
549
550
551
552
553
554
555
556
557 #define AAC_SELF_TEST_FAILED 0x00000004
558 #define AAC_UP_AND_RUNNING 0x00000080
559 #define AAC_KERNEL_PANIC 0x00000100
560
561
562
563
564
565
566 #define AAC_NFILESYS 24
567
568
569
570
571 typedef enum {
572 NVSTATUS_DISABLED = 0,
573 NVSTATUS_ENABLED,
574 NVSTATUS_ERROR,
575 NVSTATUS_BATTERY,
576
577 NVSTATUS_UNKNOWN
578 } AAC_NVSTATUS;
579
580
581
582
583
584 typedef enum {
585 NVBATTSTATUS_NONE = 0,
586 NVBATTSTATUS_LOW,
587 NVBATTSTATUS_OK,
588
589 NVBATTSTATUS_RECONDITIONING
590
591 } AAC_NVBATTSTATUS;
592
593
594
595
596 typedef enum {
597 NVBATT_TRANSITION_NONE = 0,
598
599 NVBATT_TRANSITION_LOW,
600 NVBATT_TRANSITION_OK
601
602
603 } AAC_NVBATT_TRANSITION;
604
605
606
607
608 struct aac_nvramdevinfo {
609 u_int32_t NV_Enabled;
610 u_int32_t NV_Error;
611 u_int32_t NV_NDirty;
612 u_int32_t NV_NActive;
613
614 } __attribute__ ((__packed__));
615
616 struct aac_nvraminfo {
617 AAC_NVSTATUS NV_Status;
618 AAC_NVBATTSTATUS NV_BattStatus;
619 u_int32_t NV_Size;
620
621 u_int32_t NV_BufSize;
622
623 u_int32_t NV_NBufs;
624 u_int32_t NV_NDirty;
625 u_int32_t NV_NClean;
626 u_int32_t NV_NActive;
627
628 u_int32_t NV_NBrokered;
629 struct aac_nvramdevinfo NV_DevInfo[AAC_NFILESYS];
630
631 u_int32_t NV_BattNeedsReconditioning;
632 u_int32_t NV_TotalSize;
633
634 } __attribute__ ((__packed__));
635
636
637
638
639
640
641
642
643
644
645 typedef enum {
646 AifJobStsSuccess = 1,
647 AifJobStsFinished,
648 AifJobStsAborted,
649 AifJobStsFailed,
650 AifJobStsLastReportMarker = 100,
651 AifJobStsSuspended,
652 AifJobStsRunning
653 } AAC_AifJobStatus;
654
655 typedef enum {
656 AifJobScsiMin = 1,
657 AifJobScsiZero,
658 AifJobScsiVerify,
659
660 AifJobScsiExercise,
661 AifJobScsiVerifyRepair,
662
663 AifJobScsiMax = 99,
664 AifJobCtrMin,
665 AifJobCtrZero,
666 AifJobCtrCopy,
667 AifJobCtrCreateMirror,
668 AifJobCtrMergeMirror,
669 AifJobCtrScrubMirror,
670 AifJobCtrRebuildRaid5,
671 AifJobCtrScrubRaid5,
672 AifJobCtrMorph,
673 AifJobCtrPartCopy,
674 AifJobCtrRebuildMirror,
675 AifJobCtrCrazyCache,
676 AifJobCtrMax = 199,
677 AifJobFsMin,
678 AifJobFsCreate,
679 AifJobFsVerify,
680 AifJobFsExtend,
681 AifJobFsMax = 299,
682 AifJobApiFormatNTFS,
683 AifJobApiFormatFAT,
684 AifJobApiUpdateSnapshot,
685
686 AifJobApiFormatFAT32,
687 AifJobApiMax = 399,
688 AifJobCtlContinuousCtrVerify,
689 AifJobCtlMax = 499
690 } AAC_AifJobType;
691
692 struct aac_AifContainers {
693 u_int32_t src;
694 u_int32_t dst;
695 } __attribute__ ((__packed__));
696
697 union aac_AifJobClient {
698 struct aac_AifContainers container;
699
700
701 int32_t scsi_dh;
702
703 };
704
705 struct aac_AifJobDesc {
706 u_int32_t jobID;
707
708 AAC_AifJobType type;
709
710 union aac_AifJobClient client;
711 } __attribute__ ((__packed__));
712
713 struct aac_AifJobProgressReport {
714 struct aac_AifJobDesc jd;
715 AAC_AifJobStatus status;
716 u_int32_t finalTick;
717 u_int32_t currentTick;
718 u_int32_t jobSpecificData1;
719 u_int32_t jobSpecificData2;
720 } __attribute__ ((__packed__));
721
722
723
724
725 typedef enum {
726
727 AifEnGeneric = 1,
728 AifEnTaskComplete,
729 AifEnConfigChange,
730 AifEnContainerChange,
731
732 AifEnDeviceFailure,
733 AifEnMirrorFailover,
734 AifEnContainerEvent,
735 AifEnFileSystemChange,
736 AifEnConfigPause,
737 AifEnConfigResume,
738 AifEnFailoverChange,
739 AifEnRAID5RebuildDone,
740 AifEnEnclosureManagement,
741 AifEnBatteryEvent,
742 AifEnAddContainer,
743 AifEnDeleteContainer,
744 AifEnSMARTEvent,
745 AifEnBatteryNeedsRecond,
746 AifEnClusterEvent,
747 AifEnDiskSetEvent,
748 AifDriverNotifyStart=199,
749
750 AifDenMorphComplete,
751 AifDenVolumeExtendComplete
752 } AAC_AifEventNotifyType;
753
754 struct aac_AifEnsGeneric {
755 char text[132];
756 } __attribute__ ((__packed__));
757
758 struct aac_AifEnsDeviceFailure {
759 u_int32_t deviceHandle;
760 } __attribute__ ((__packed__));
761
762 struct aac_AifEnsMirrorFailover {
763 u_int32_t container;
764 u_int32_t failedSlice;
765 u_int32_t creatingSlice;
766 } __attribute__ ((__packed__));
767
768 struct aac_AifEnsContainerChange {
769 u_int32_t container[2];
770
771 } __attribute__ ((__packed__));
772
773 struct aac_AifEnsContainerEvent {
774 u_int32_t container;
775 u_int32_t eventType;
776 } __attribute__ ((__packed__));
777
778 struct aac_AifEnsEnclosureEvent {
779 u_int32_t empID;
780 u_int32_t unitID;
781
782 u_int32_t eventType;
783 } __attribute__ ((__packed__));
784
785 struct aac_AifEnsBatteryEvent {
786 AAC_NVBATT_TRANSITION transition_type;
787 AAC_NVBATTSTATUS current_state;
788 AAC_NVBATTSTATUS prior_state;
789 } __attribute__ ((__packed__));
790
791 struct aac_AifEnsDiskSetEvent {
792 u_int32_t eventType;
793 u_int64_t DsNum;
794 u_int64_t CreatorId;
795 } __attribute__ ((__packed__));
796
797 typedef enum {
798 CLUSTER_NULL_EVENT = 0,
799 CLUSTER_PARTNER_NAME_EVENT,
800
801
802 CLUSTER_PARTNER_NULL_NAME_EVENT
803
804
805 } AAC_ClusterAifEvent;
806
807 struct aac_AifEnsClusterEvent {
808 AAC_ClusterAifEvent eventType;
809 } __attribute__ ((__packed__));
810
811 struct aac_AifEventNotify {
812 AAC_AifEventNotifyType type;
813 union {
814 struct aac_AifEnsGeneric EG;
815 struct aac_AifEnsDeviceFailure EDF;
816 struct aac_AifEnsMirrorFailover EMF;
817 struct aac_AifEnsContainerChange ECC;
818 struct aac_AifEnsContainerEvent ECE;
819 struct aac_AifEnsEnclosureEvent EEE;
820 struct aac_AifEnsBatteryEvent EBE;
821 struct aac_AifEnsDiskSetEvent EDS;
822
823 struct aac_AifEnsClusterEvent ECLE;
824 } data;
825 } __attribute__ ((__packed__));
826
827
828
829
830
831
832 #define AAC_AIF_REPORT_MAX_SIZE 64
833
834 typedef enum {
835 AifCmdEventNotify = 1,
836 AifCmdJobProgress,
837 AifCmdAPIReport,
838 AifCmdDriverNotify,
839 AifReqJobList = 100,
840 AifReqJobsForCtr,
841 AifReqJobsForScsi,
842 AifReqJobReport,
843 AifReqTerminateJob,
844 AifReqSuspendJob,
845 AifReqResumeJob,
846 AifReqSendAPIReport,
847 AifReqAPIJobStart,
848 AifReqAPIJobUpdate,
849 AifReqAPIJobFinish
850 } AAC_AifCommand;
851
852 struct aac_aif_command {
853 AAC_AifCommand command;
854
855 u_int32_t seqNumber;
856
857 union {
858 struct aac_AifEventNotify EN;
859 struct aac_AifJobProgressReport PR[1];
860 u_int8_t AR[AAC_AIF_REPORT_MAX_SIZE];
861 u_int8_t data[AAC_FIB_DATASIZE - 8];
862 } data;
863 } __attribute__ ((__packed__));
864
865
866
867
868
869
870
871
872
873
874
875
876 typedef enum {
877 Null = 0,
878 GetAttributes,
879 SetAttributes,
880 Lookup,
881 ReadLink,
882 Read,
883 Write,
884 Create,
885 MakeDirectory,
886 SymbolicLink,
887 MakeNode,
888 Removex,
889 RemoveDirectory,
890 Rename,
891 Link,
892 ReadDirectory,
893 ReadDirectoryPlus,
894 FileSystemStatus,
895 FileSystemInfo,
896 PathConfigure,
897 Commit,
898 Mount,
899 UnMount,
900 Newfs,
901 FsCheck,
902 FsSync,
903 SimReadWrite,
904 SetFileSystemStatus,
905 BlockRead,
906 BlockWrite,
907 NvramIoctl,
908 FsSyncWait,
909 ClearArchiveBit,
910 SetAcl,
911 GetAcl,
912 AssignAcl,
913 FaultInsertion,
914 CrazyCache
915 } AAC_FSACommand;
916
917
918
919
920 typedef enum {
921 ST_OK = 0,
922 ST_PERM = 1,
923 ST_NOENT = 2,
924 ST_IO = 5,
925 ST_NXIO = 6,
926 ST_E2BIG = 7,
927 ST_ACCES = 13,
928 ST_EXIST = 17,
929 ST_XDEV = 18,
930 ST_NODEV = 19,
931 ST_NOTDIR = 20,
932 ST_ISDIR = 21,
933 ST_INVAL = 22,
934 ST_FBIG = 27,
935 ST_NOSPC = 28,
936 ST_ROFS = 30,
937 ST_MLINK = 31,
938 ST_WOULDBLOCK = 35,
939 ST_NAMETOOLONG = 63,
940 ST_NOTEMPTY = 66,
941 ST_DQUOT = 69,
942 ST_STALE = 70,
943 ST_REMOTE = 71,
944 ST_BADHANDLE = 10001,
945 ST_NOT_SYNC = 10002,
946 ST_BAD_COOKIE = 10003,
947 ST_NOTSUPP = 10004,
948 ST_TOOSMALL = 10005,
949 ST_SERVERFAULT = 10006,
950 ST_BADTYPE = 10007,
951 ST_JUKEBOX = 10008,
952 ST_NOTMOUNTED = 10009,
953 ST_MAINTMODE = 10010,
954 ST_STALEACL = 10011
955 } AAC_FSAStatus;
956
957
958
959
960 typedef enum _VM_COMMANDS {
961 VM_Null = 0,
962 VM_NameServe,
963 VM_ContainerConfig,
964 VM_Ioctl,
965 VM_FilesystemIoctl,
966 VM_CloseAll,
967 VM_CtBlockRead,
968 VM_CtBlockWrite,
969 VM_SliceBlockRead,
970 VM_SliceBlockWrite,
971 VM_DriveBlockRead,
972 VM_DriveBlockWrite,
973 VM_EnclosureMgt,
974 VM_Unused,
975 VM_CtBlockVerify,
976 VM_CtPerf,
977 VM_CtBlockRead64,
978 VM_CtBlockWrite64,
979 VM_CtBlockVerify64,
980 VM_CtHostRead64,
981 VM_CtHostWrite64,
982 } AAC_VMCommand;
983
984
985
986
987 struct aac_mntobj {
988 u_int32_t ObjectId;
989 char FileSystemName[16];
990 struct aac_container_creation CreateInfo;
991 u_int32_t Capacity;
992 u_int32_t VolType;
993 u_int32_t ObjType;
994 u_int32_t ContentState;
995 #define FSCS_READONLY 0x0002
996
997 union {
998 u_int32_t pad[8];
999 } ObjExtension;
1000 u_int32_t AlterEgoId;
1001 } __attribute__ ((__packed__));
1002
1003 struct aac_mntinfo {
1004 u_int32_t Command;
1005 u_int32_t MntType;
1006 u_int32_t MntCount;
1007 } __attribute__ ((__packed__));
1008
1009 struct aac_mntinforesp {
1010 u_int32_t Status;
1011 u_int32_t MntType;
1012 u_int32_t MntRespCount;
1013 struct aac_mntobj MntTable[1];
1014 } __attribute__ ((__packed__));
1015
1016
1017
1018
1019 struct aac_closecommand {
1020 u_int32_t Command;
1021 u_int32_t ContainerId;
1022 } __attribute__ ((__packed__));
1023
1024
1025
1026
1027 #define CT_GET_SCSI_METHOD 64
1028 struct aac_ctcfg {
1029 u_int32_t Command;
1030 u_int32_t cmd;
1031 u_int32_t param;
1032 } __attribute__ ((__packed__));
1033
1034 struct aac_ctcfg_resp {
1035 u_int32_t Status;
1036 u_int32_t resp;
1037 u_int32_t param;
1038 } __attribute__ ((__packed__));
1039
1040
1041
1042
1043 #define AAC_SCSI_MAX_PORTS 10
1044 #define AAC_BUS_NO_EXIST 0
1045 #define AAC_BUS_VALID 1
1046 #define AAC_BUS_FAULTED 2
1047 #define AAC_BUS_DISABLED 3
1048 #define GetBusInfo 0x9
1049
1050 struct aac_getbusinf {
1051 u_int32_t ProbeComplete;
1052 u_int32_t BusCount;
1053 u_int32_t TargetsPerBus;
1054 u_int8_t InitiatorBusId[AAC_SCSI_MAX_PORTS];
1055 u_int8_t BusValid[AAC_SCSI_MAX_PORTS];
1056 } __attribute__ ((__packed__));
1057
1058 struct aac_vmioctl {
1059 u_int32_t Command;
1060 u_int32_t ObjType;
1061 u_int32_t MethId;
1062 u_int32_t ObjId;
1063 u_int32_t IoctlCmd;
1064 u_int32_t IoctlBuf[1];
1065 } __attribute__ ((__packed__));
1066
1067 struct aac_vmi_businf_resp {
1068 u_int32_t Status;
1069 u_int32_t ObjType;
1070 u_int32_t MethId;
1071 u_int32_t ObjId;
1072 u_int32_t IoctlCmd;
1073 struct aac_getbusinf BusInf;
1074 } __attribute__ ((__packed__));
1075
1076 #define AAC_BTL_TO_HANDLE(b, t, l) \
1077 (((b & 0x3f) << 7) | ((l & 0x7) << 4) | (t & 0xf))
1078 #define GetDeviceProbeInfo 0x5
1079
1080 struct aac_vmi_devinfo_resp {
1081 u_int32_t Status;
1082 u_int32_t ObjType;
1083 u_int32_t MethId;
1084 u_int32_t ObjId;
1085 u_int32_t IoctlCmd;
1086 u_int8_t VendorId[8];
1087 u_int8_t ProductId[16];
1088 u_int8_t ProductRev[4];
1089 u_int32_t Inquiry7;
1090 u_int32_t align1;
1091 u_int32_t Inquiry0;
1092 u_int32_t align2;
1093 u_int32_t Inquiry1;
1094 u_int32_t align3;
1095 u_int32_t reserved[2];
1096 u_int8_t VendorSpecific[20];
1097 u_int32_t Smart:1;
1098 u_int32_t AAC_Managed:1;
1099 u_int32_t align4;
1100 u_int32_t reserved2:6;
1101 u_int32_t Bus;
1102 u_int32_t Target;
1103 u_int32_t Lun;
1104 u_int32_t ultraEnable:1,
1105 disconnectEnable:1,
1106 fast20EnabledW:1,
1107 scamDevice:1,
1108 scamTolerant:1,
1109 setForSync:1,
1110 setForWide:1,
1111 syncDevice:1,
1112 wideDevice:1,
1113 reserved1:7,
1114 ScsiRate:8,
1115 ScsiOffset:8;
1116 };
1117
1118 #define ResetBus 0x16
1119 struct aac_resetbus {
1120 u_int32_t BusNumber;
1121 };
1122
1123
1124
1125
1126 typedef enum {
1127 CSTABLE = 1,
1128 CUNSTABLE
1129 } AAC_CacheLevel;
1130
1131
1132
1133
1134 typedef enum {
1135 CMFILE_SYNC_NVRAM = 1,
1136 CMDATA_SYNC_NVRAM,
1137 CMFILE_SYNC,
1138 CMDATA_SYNC,
1139 CMUNSTABLE
1140 } AAC_CommitLevel;
1141
1142
1143
1144
1145
1146
1147 struct aac_blockread {
1148 u_int32_t Command;
1149 u_int32_t ContainerId;
1150 u_int32_t BlockNumber;
1151 u_int32_t ByteCount;
1152 struct aac_sg_table SgMap;
1153 } __attribute__ ((__packed__));
1154
1155 struct aac_blockread64 {
1156 u_int32_t Command;
1157 u_int16_t ContainerId;
1158 u_int16_t SectorCount;
1159 u_int32_t BlockNumber;
1160 u_int16_t Pad;
1161 u_int16_t Flags;
1162 struct aac_sg_table64 SgMap64;
1163 } __attribute__ ((__packed__));
1164
1165 struct aac_blockread_response {
1166 u_int32_t Status;
1167 u_int32_t ByteCount;
1168 } __attribute__ ((__packed__));
1169
1170 struct aac_blockwrite {
1171 u_int32_t Command;
1172 u_int32_t ContainerId;
1173 u_int32_t BlockNumber;
1174 u_int32_t ByteCount;
1175 u_int32_t Stable;
1176 struct aac_sg_table SgMap;
1177 } __attribute__ ((__packed__));
1178
1179 struct aac_blockwrite64 {
1180 u_int32_t Command;
1181 u_int16_t ContainerId;
1182 u_int16_t SectorCount;
1183 u_int32_t BlockNumber;
1184 u_int16_t Pad;
1185 u_int16_t Flags;
1186 struct aac_sg_table64 SgMap64;
1187 } __attribute__ ((__packed__));
1188
1189 struct aac_blockwrite_response {
1190 u_int32_t Status;
1191 u_int32_t ByteCount;
1192 u_int32_t Committed;
1193 } __attribute__ ((__packed__));
1194
1195
1196
1197
1198 struct aac_close_command {
1199 u_int32_t Command;
1200 u_int32_t ContainerId;
1201 };
1202
1203
1204
1205
1206 struct aac_srb32 {
1207 u_int32_t function;
1208 u_int32_t bus;
1209 u_int32_t target;
1210 u_int32_t lun;
1211 u_int32_t timeout;
1212 u_int32_t flags;
1213 u_int32_t data_len;
1214 u_int32_t retry_limit;
1215 u_int32_t cdb_len;
1216 u_int8_t cdb[16];
1217 struct aac_sg_table sg_map32;
1218 };
1219
1220 enum {
1221 AAC_SRB_FUNC_EXECUTE_SCSI = 0x00,
1222 AAC_SRB_FUNC_CLAIM_DEVICE,
1223 AAC_SRB_FUNC_IO_CONTROL,
1224 AAC_SRB_FUNC_RECEIVE_EVENT,
1225 AAC_SRB_FUNC_RELEASE_QUEUE,
1226 AAC_SRB_FUNC_ATTACH_DEVICE,
1227 AAC_SRB_FUNC_RELEASE_DEVICE,
1228 AAC_SRB_FUNC_SHUTDOWN,
1229 AAC_SRB_FUNC_FLUSH,
1230 AAC_SRB_FUNC_ABORT_COMMAND = 0x10,
1231 AAC_SRB_FUNC_RELEASE_RECOVERY,
1232 AAC_SRB_FUNC_RESET_BUS,
1233 AAC_SRB_FUNC_RESET_DEVICE,
1234 AAC_SRB_FUNC_TERMINATE_IO,
1235 AAC_SRB_FUNC_FLUSH_QUEUE,
1236 AAC_SRB_FUNC_REMOVE_DEVICE,
1237 AAC_SRB_FUNC_DOMAIN_VALIDATION
1238 };
1239
1240 #define AAC_SRB_FLAGS_NO_DATA_XFER 0x0000
1241 #define AAC_SRB_FLAGS_DISABLE_DISCONNECT 0x0004
1242 #define AAC_SRB_FLAGS_DISABLE_SYNC_TRANSFER 0x0008
1243 #define AAC_SRB_FLAGS_BYPASS_FROZEN_QUEUE 0x0010
1244 #define AAC_SRB_FLAGS_DISABLE_AUTOSENSE 0x0020
1245 #define AAC_SRB_FLAGS_DATA_IN 0x0040
1246 #define AAC_SRB_FLAGS_DATA_OUT 0x0080
1247 #define AAC_SRB_FLAGS_UNSPECIFIED_DIRECTION \
1248 (AAC_SRB_FLAGS_DATA_IN | AAC_SRB_FLAGS_DATA_OUT)
1249
1250 #define AAC_HOST_SENSE_DATA_MAX 30
1251
1252 struct aac_srb_response {
1253 u_int32_t fib_status;
1254 u_int32_t srb_status;
1255 u_int32_t scsi_status;
1256 u_int32_t data_len;
1257 u_int32_t sense_len;
1258 u_int8_t sense[AAC_HOST_SENSE_DATA_MAX];
1259 };
1260
1261 enum {
1262 AAC_SRB_STS_PENDING = 0x00,
1263 AAC_SRB_STS_SUCCESS,
1264 AAC_SRB_STS_ABORTED,
1265 AAC_SRB_STS_ABORT_FAILED,
1266 AAC_SRB_STS_ERROR,
1267 AAC_SRB_STS_BUSY,
1268 AAC_SRB_STS_INVALID_REQUEST,
1269 AAC_SRB_STS_INVALID_PATH_ID,
1270 AAC_SRB_STS_NO_DEVICE,
1271 AAC_SRB_STS_TIMEOUT,
1272 AAC_SRB_STS_SELECTION_TIMEOUT,
1273 AAC_SRB_STS_COMMAND_TIMEOUT,
1274 AAC_SRB_STS_MESSAGE_REJECTED = 0x0D,
1275 AAC_SRB_STS_BUS_RESET,
1276 AAC_SRB_STS_PARITY_ERROR,
1277 AAC_SRB_STS_REQUEST_SENSE_FAILED,
1278 AAC_SRB_STS_NO_HBA,
1279 AAC_SRB_STS_DATA_OVERRUN,
1280 AAC_SRB_STS_UNEXPECTED_BUS_FREE,
1281 AAC_SRB_STS_PHASE_SEQUENCE_FAILURE,
1282 AAC_SRB_STS_BAD_SRB_BLOCK_LENGTH,
1283 AAC_SRB_STS_REQUEST_FLUSHED,
1284 AAC_SRB_STS_INVALID_LUN = 0x20,
1285 AAC_SRB_STS_INVALID_TARGET_ID,
1286 AAC_SRB_STS_BAD_FUNCTION,
1287 AAC_SRB_STS_ERROR_RECOVERY
1288 };
1289
1290
1291
1292
1293
1294 #define AAC_FA_DOORBELL0_CLEAR 0x00
1295 #define AAC_FA_DOORBELL1_CLEAR 0x02
1296 #define AAC_FA_DOORBELL0 0x04
1297 #define AAC_FA_DOORBELL1 0x06
1298 #define AAC_FA_MASK0_CLEAR 0x08
1299 #define AAC_FA_MASK1_CLEAR 0x0a
1300 #define AAC_FA_MASK0 0x0c
1301 #define AAC_FA_MASK1 0x0e
1302 #define AAC_FA_MAILBOX 0x10
1303 #define AAC_FA_FWSTATUS 0x2c
1304 #define AAC_FA_INTSRC 0x900
1305
1306 #define AAC_FA_HACK(sc) (void)AAC_GETREG4(sc, AAC_FA_INTSRC)
1307
1308
1309
1310
1311
1312
1313 #define AAC_REGSIZE 0x100
1314
1315 #define AAC_SA_DOORBELL0_CLEAR 0x98
1316 #define AAC_SA_DOORBELL0_SET 0x9c
1317 #define AAC_SA_DOORBELL0 0x9c
1318 #define AAC_SA_MASK0_CLEAR 0xa0
1319 #define AAC_SA_MASK0_SET 0xa4
1320
1321 #define AAC_SA_DOORBELL1_CLEAR 0x9a
1322 #define AAC_SA_DOORBELL1_SET 0x9e
1323 #define AAC_SA_DOORBELL1 0x9e
1324 #define AAC_SA_MASK1_CLEAR 0xa2
1325 #define AAC_SA_MASK1_SET 0xa6
1326
1327 #define AAC_SA_MAILBOX 0xa8
1328 #define AAC_SA_FWSTATUS 0xc4
1329
1330
1331
1332
1333
1334
1335 #define AAC_RX_IDBR 0x20
1336 #define AAC_RX_IISR 0x24
1337 #define AAC_RX_IIMR 0x28
1338 #define AAC_RX_ODBR 0x2c
1339 #define AAC_RX_OISR 0x30
1340 #define AAC_RX_OIMR 0x34
1341
1342 #define AAC_RX_MAILBOX 0x50
1343 #define AAC_RX_FWSTATUS 0x6c
1344
1345
1346
1347
1348
1349
1350 #define AAC_RKT_IDBR 0x20
1351 #define AAC_RKT_IISR 0x24
1352 #define AAC_RKT_IIMR 0x28
1353 #define AAC_RKT_ODBR 0x2c
1354 #define AAC_RKT_OISR 0x30
1355 #define AAC_RKT_OIMR 0x34
1356
1357 #define AAC_RKT_MAILBOX 0x1000
1358 #define AAC_RKT_FWSTATUS 0x101c
1359
1360
1361
1362
1363
1364
1365
1366
1367 #define AAC_DB_SYNC_COMMAND (1<<0)
1368 #define AAC_DB_COMMAND_READY (1<<1)
1369 #define AAC_DB_RESPONSE_READY (1<<2)
1370 #define AAC_DB_COMMAND_NOT_FULL (1<<3)
1371 #define AAC_DB_RESPONSE_NOT_FULL (1<<4)
1372
1373
1374
1375
1376
1377
1378
1379
1380 #define AAC_DB_PRINTF (1<<5)
1381 #define AAC_PRINTF_DONE (1<<5)
1382
1383
1384
1385
1386
1387 #define AAC_DB_INTERRUPTS (AAC_DB_COMMAND_READY | \
1388 AAC_DB_RESPONSE_READY | \
1389 AAC_DB_PRINTF)