FreeBSD kernel pms device code
tdtypes.h
Go to the documentation of this file.
1/*******************************************************************************
2*Copyright (c) 2014 PMC-Sierra, Inc. All rights reserved.
3*
4*Redistribution and use in source and binary forms, with or without modification, are permitted provided
5*that the following conditions are met:
6*1. Redistributions of source code must retain the above copyright notice, this list of conditions and the
7*following disclaimer.
8*2. Redistributions in binary form must reproduce the above copyright notice,
9*this list of conditions and the following disclaimer in the documentation and/or other materials provided
10*with the distribution.
11*
12*THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED
13*WARRANTIES,INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
14*FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
15*FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
16*NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
17*BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
18*LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
19*SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
20*
21* $FreeBSD$
22*
23********************************************************************************/
24/*******************************************************************************/
30#ifndef __TDTYPES_H__
31#define __TDTYPES_H__
32
36
40
41#ifdef FDS_SM
44#endif
45
46#ifdef FDS_DM
48#endif
49
53
54
55/* function definitions */
56typedef void (*tdssSSPReqReceived_t) (
57 agsaRoot_t *,
60 bit32,
61 bit32,
62 bit32
63 );
64typedef void (*tdssSMPReqReceived_t) (
65 agsaRoot_t *,
69 bit32,
70 bit32
71 );
72
74 agsaIORequest_t *agIORequest,
75 bit32 agChunkOffset,
76 bit32 *agChunkUpper32,
77 bit32 *agChunkLower32,
78 bit32 *agChunkLen);
79/* for SSP only */
80typedef void (*tdssIOCompleted_t) (agsaRoot_t *,
82 bit32,
83 bit32,
85 bit32);
86/* for SMP only */
87typedef void (*tdssSMPCompleted_t) (
88 agsaRoot_t *,
90 bit32 ,
91 bit32 ,
93 );
94
95
102typedef struct tdsaJumpTable_s {
111 /* callback function for LL getSGL. Simple place holder for now */
114
115/* timer functions ; both I and T */
116typedef void (*tdsaTimerCBFunc_t)(tiRoot_t *tiRoot, void *timerData1, void *timerData2, void *timerData3);
117
122typedef struct tdsaTimerRequest_s {
123 /* the number of ticks */
132
133
138typedef struct tdssIORequestData_s {
139 /* jump table has to be the first */
140 tdsaJumpTable_t *pJumpTable; /* this is just a pointer */
142
143
144
151typedef struct tdsaRootOsData_s {
154 void *itdsaIni;
155 void *ttdsaTgt;
156 /* for sata */
157 void *tdstHost;
161
165typedef struct tdssPortFlags_s {
168
171
173
176
179
183
188typedef struct tdsaComMemFlags_s {
191
194
197
199
200
201/*
202 * SAT related structure
203 */
204typedef struct satInternalIo_s
205{
216
217
218
219/*
220 * SAT specific structure per SATA drive
221 */
222#define SAT_NONNCQ_MAX 1
223#define SAT_NCQ_MAX 32
224#define SAT_MAX_INT_IO 16
225
226typedef struct TDSASAddressID_s
227{
232
233
234struct tdsaExpander_s;
235
236
237typedef struct tdsaDiscovery_s
238{
241 // tdList_t freeExpanderList;
245 struct tdsaExpander_s *RootExp; /* Root expander of discovery */
247 bit32 type; /* discovery type: TDSA_DISCOVERY_OPTION_FULL_START
248 or TDSA_DISCOVERY_OPTION_INCREMENTAL_START*/
255 tdsaTimerRequest_t BCTimer; /* Broadcast Change timer for ResetTriggerred */
257 bit32 pendingSMP; /* the number of pending SMP for this discovery */
258 bit32 SeenBC; /* received Broadcast change */
259 bit32 forcedOK; /* report DiscOK when chance is missed */
260 tdsaTimerRequest_t SMPBusyTimer; /* SMP retry timer for saSMPStart busy */
261 bit32 SMPRetries; /* number of SMP retries when LL returns busy for saSMPStart*/
262 bit32 ResetTriggerred; /* Hard/Link reset triggerred by discovery */
263 tdsaTimerRequest_t DiscoverySMPTimer; /* discovery-related SMP application Timer */
265
266
267typedef struct
268{
269 tdList_t satIoLinkList; /* Normal I/O from TISA */
270 tdList_t satFreeIntIoLinkList; /* SAT internal I/O free list */
271 tdList_t satActiveIntIoLinkList; /* SAT internal I/O active list */
272 satInternalIo_t satIntIo[SAT_MAX_INT_IO]; /* Internal I/O resource */
273 agsaSATAIdentifyData_t satIdentifyData; /* Copy of SATA Id Dev data */
274 bit8 SN_id_limit[25]; /* temporary serial number id info */
275 bit32 satNCQ; /* Flag for NCQ support */
276 bit32 sat48BitSupport; /* Flag for 48-bit addressing */
277 bit32 satSMARTSelfTest; /* Flag for SMART self test */
278 bit32 satSMARTFeatureSet; /* Flag for SMART feature set */
279 bit32 satSMARTEnabled; /* Flag for SMART enabled */
280 bit32 satRemovableMedia; /* Flag for Removable Media */
281 bit32 satRemovableMediaEnabled; /* Flag for Removable Media Enabled */
282 bit32 satDMASupport; /* Flag for DMA Support */
283 bit32 satDMAEnabled; /* Flag for DMA Enabled */
284 bit32 satDMADIRSupport; /* Flag in PACKET command for DMA transfer */
285 bit32 satWWNSupport; /* Flag for DMA Enabled */
286 bit32 satPendingIO; /* Number of pending I/O */
287 bit32 satPendingNCQIO; /* Number of pending NCQ I/O */
288 bit32 satPendingNONNCQIO; /* Number of pending NON NCW I/O*/
289 bit32 satNCQMaxIO; /* Max NCQ I/O in SAT or drive */
290 bit32 satDriveState; /* State of SAT/drive */
291 bit32 satAbortAfterReset; /* Flag: abort after SATA reset */
292 bit32 satAbortCalled; /* Flag: abort called indication*/
293 bit32 satVerifyState; /* Flag: Read Vrf state for diag*/
294 bit32 satMaxUserAddrSectors; /* max user addressable setctors*/
295 bit32 satWriteCacheEnabled; /* Flag for write cache enabled */
296 bit32 satLookAheadEnabled; /* Flag for look ahead enabled */
297 bit32 satDeviceFaultState; /* State of DF */
298 bit32 satStopState; /* State of Start and Stop */
299 bit32 satFormatState; /* State of format */
300 bit32 satPMField; /* PM field, first 4 bits */
301 bit8 satSignature[8]; /* Signature */
302 bit32 satDeviceType; /* ATA device type */
303 bit32 satSectorDone; /* Number of Sector done by Cmnd*/
304 bit32 freeSATAFDMATagBitmap; /* SATA NCQ tag bit map */
305 bit32 IDDeviceValid; /* ID DeviceData valid bit */
306 bit8 satMaxLBA[8]; /* MAXLBA is from read capacity */
307 bit32 satBGPendingDiag; /* Pending Diagnostic in backgound */
308 bit32 NumOfFCA; /* number of SMP HARD RESET on this device */
309 bit32 NumOfIDRetries; /* number of SMP HARD RESET after ID retries */
310 tiIORequest_t *satTmTaskTag; /* TM Task Tag */
311 void *satSaDeviceData; /* Pointer back to sa dev data */
312 bit32 ID_Retries; /* identify device data retries */
313 bit32 IDPending; /* number of pending identify device data */
315
316
322typedef struct tdsaDeviceData_s {
323 /* in tdtypes.h */
326
327 tdList_t FreeLink; /* free dev list */
328 tdList_t MainLink; /* main(in use) dev list */
329 tdList_t IncDisLink; /* Used for incremental Discovery only */
330 bit32 id; /* for debugging only */
331 bit32 InQID; /* Inbound queue ID */
332 bit32 OutQID; /* Outbound queue ID */
334 /* used in tiINIIOStart() */
337
338 /* for SAS; remote device */
339 // agsaSASDeviceInfo_t agSASDeviceInfo;
340 /* device's sas address */
345 /* SATA specific data */
347
350 /* validity of device */
353 bit8 processed; /* used in TD discovery */
354#ifdef AGTIAPI_CTL
355 bit8 discovered;
356#endif
358 agsaContext_t agContext; /* used in saRegisterNewDevice()*/
361 struct tdsaDeviceData_s *ExpDevice; /* Expander device which this device is attached to */
362
363 bit8 phyID; /* PhyID this device is attached to SPC or expander */
364 agsaSASIdentify_t sasIdentify; /* used only in TD discovery */
368 bit8 SASSpecDeviceType; /* 0 - 3; SAS_NO_DEVICE - SAS_FANOUT_EXPANDER_DEVICE */
371 agsaContext_t agDeviceResetContext; /* used in saLocalPhyControl() */
373 bit32 TRflag; /* transport recovery flag; used only for tiINITransportRecovery */
374 bit32 ResetCnt; /* number of reset to the device */
375 tdsaTimerRequest_t SATAIDDeviceTimer; /* ID Device Data timer for SATA device */
377#ifdef FDS_DM
378 bit32 devMCN; /* MCN reported by DM */
379 bit32 finalMCN; /* final MCN using devMCN and local MCN */
380#endif
381#ifdef FDS_SM
382 smDeviceHandle_t smDeviceHandle; /* for SATM */
383 bit32 SMNumOfFCA;
384 bit32 SMNumOfID;
385 tdsaTimerRequest_t tdIDTimer; /* ID Device Data timer for SATA device */
386#endif
388
389/*
390 this field is used to add or remove SAS device from sharedcontext
391*/
392typedef struct tdsaSASSubID_s
393{
398
400
401
402struct tdsaDeviceData_s;
403//struct itdssDiscoveryData_s;
404
411typedef struct tdsaPortContext_s
412{
415
417
419 /* Discovery ready is given? */
421 /* Port has received link up */
423 /* statistics */
425 /* flag: indicates that discovery is trigggered by tiINIDiscoverTargets */
427
428 bit32 id; /* for debugging only */
436
444 /* used in tiINIDiscoverTarget() */
447 /* maybe needs timers for saPhyStart() */
448
449 bit8 nativeSATAMode; /* boolean flag: whether the port is in Native SATA mode */
450 bit8 remoteSignature[8]; /* the remote signature of the port is the port is in native SATA mode */
451 bit8 directAttatchedSAS; /* boolean flag: whether the port connected directly to SAS end device*/
452 /* SAS/SATA discovery information such as discoveringExpanderList */
456 bit32 RegisteredDevNums; /* registered number of devices */
457 bit32 eventPhyID; /* used for saHwEventAck() */
458 bit32 Transient; /* transient period between link up and link down/port recovery */
459 agsaContext_t agContext; /* used in tiCOMPortStop()*/
460 bit32 PortRecoverPhyID; /* used to remember PhyID in Port_Recover event; used in ossaDeviceRegistrationCB() */
461 bit32 DiscFailNSeenBC; /* used to remember broadcast change after discovery failure */
463#ifdef FDS_DM
464 dmPortContext_t dmPortContext;
465 bit32 DMDiscoveryState; /* DM discovery state returned by tddmDiscoverCB or tddmQueryDiscoveryCB */
466 bit32 UseDM; /* set only when the directly attached target is SMP target(expander) */
467 bit32 UpdateMCN; /* flag for inidicating update MCN */
468#endif
470
477typedef struct tdsaPortStartInfo_s {
479 tdsaPortContext_t *portContext; /* tdsaportcontext */
480 agsaSASIdentify_t SASID; /* SAS ID of the local */
484/*
485 expander data structure
486*/
487
488#define REPORT_LUN_LEN 16
489#define REPORT_LUN_OPCODE 0xa0
490typedef struct tdDeviceLUNInfo_s
491{
492 unsigned long tiDeviceHandle;
495
496typedef struct tdsaExpander_s
497{
504 bit16 routingIndex; /* maximum routing table index reported by expander */
505 bit16 currentIndex[TD_MAX_EXPANDER_PHYS]; /* routing table index in use */
506 tdsaDeviceData_t *tdDeviceToProcess; /* on some callbacks, this is a link to the device of interest */
519 bit32 id; /* for debugging */
524 bit32 discoverSMPAllowed; /* used only for configurable routers */
529
531
532/*
533 * SATA SAT specific function pointer for SATA completion for SAT commands.
534 */
535typedef void (*satCompleteCbPtr_t )(
536 agsaRoot_t *agRoot,
537 agsaIORequest_t *agIORequest,
538 bit32 agIOStatus,
539 agsaFisHeader_t *agFirstDword,
540 bit32 agIOInfoLen,
541 agsaFrameHandle_t agFrameHandle,
542 void *satIOContext
543 );
544
545/*
546 * SATA SAT specific function for I/O context
547 */
548typedef struct satIOContext_s
549{
557 void *tiScsiXchg; /* for writesame10() */
564 bit8 superIOFlag;/* Flag indicating type for tiScsiXchg */
565 bit8 reserved1; /* Padding for allignment */
566 bit8 reserved2; /* Padding for allignment */
567 bit32 currentLBA; /* current LBA for read and write */
568 bit32 ATACmd; /* ATA command */
569 bit32 OrgTL; /* original tranfer length(tl) */
570 bit32 LoopNum; /* denominator tl */
571 bit32 LoopNum2; /* denominator tl */
572 bit8 LBA[8]; /* for reassign blocks; current LBA */
573 bit32 ParmIndex; /* for reassign blocks;current idx in defective LBA LIST */
574 bit32 ParmLen; /* for reassign blocks; defective LBA list length */
575 bit32 NotifyOS; /* only for task management */
576 bit32 TMF; /* task management function */
579 bit32 pid; /* port id; used to protect double completion */
581
582
587typedef struct tdIORequestBody_s {
591 agsaIORequest_t agIORequest; /* for command and task and tm response and response */
592 tiIORequest_t *tiIOToBeAbortedRequest; /* IO to be aborted */
594#ifdef FDS_SM
595 smIORequestBody_t smIORequestBody; /*SATA IO request body*/
596 smIORequest_t smIORequest; /* for SATM */
597 void *osMemHandle; /* for ID data */
598 bit32 pid; /* port id for SATA completion */
599 bit32 superIOFlag; /* Super IO or not */
600 union {
601 smScsiInitiatorRequest_t smSCSIRequest;
602 smSuperScsiInitiatorRequest_t smSuperSCSIRequest;
603 } SM;
604#endif
605 union {
606 struct {
608 // agsaSASRequestBody_t agSASResponseBody;
609 /* SSP response */
610 // agsaSSPResponseInfoUnit_t agSSPRspIU;
612 struct {
625 union {
626 struct {
631 } InitiatorRegIO; /* regular IO */
632 struct {
636 } InitiatorTMIO; /* task management */
637
638 struct {
639 tiIORequest_t tiIORequest; /* for target */
640
641 union {
642 struct {
644 void * sglVirtualAddr;
646
647 struct {
649 void * sglVirtualAddr;
654
656
657 } TargetIO; /* target regular IO */
658
659
662
668typedef struct tdssSMPRequestBody_s {
669 tdIORequestBody_t IORequestBody; /* for combo, must be the first */
670 tdssSMPCompleted_t SMPCompletionFunc;/* must be the second */
671
672 tiDeviceHandle_t *tiDevHandle; /* not used for TD generated SMP */
678 tiIORequest_t *CurrentTaskTag; /* SMP is used for simulate target reset */
679 tdsaPortContext_t *tdPortContext; /* portcontext where SMP is sent from */
681 only for direct SMP */
682 bit32 retries; /* number of retries */
683 bit32 queueNumber; /* number of retries */
684 /* for indirect SMP req/rsp */
691
693
694#ifdef AGTIAPI_CTL
695typedef struct tdIORequest_s
696{
698 tdIORequestBody_t tdIORequestBody;
699 void *osMemHandle;
700
701 void *osMemHandle2;
702 bit32 physUpper32;
703 bit32 physLower32;
704 void *virtAddr;
705
706 tiIntrEventType_t eventType;
707 bit32 eventStatus;
708} tdIORequest_t;
709#endif
710
711#ifdef PASSTHROUGH
712/* this is allocated by OS layer but used in TD layer just like tdIORequestBody */
713typedef struct tdPassthroughCmndBody_s
714{
715 ostiPassthroughCmndEvent_t EventCB;
716 tiPassthroughRequest_t *tiPassthroughRequest;
717 tiDeviceHandle_t *tiDevHandle;
718 bit32 tiPassthroughCmndType; /* used in local abort */
719 union {
720 struct {
721#ifdef TO_DO
722 tiSMPFunction_t SMPFn;
723 tiSMPFunctionResult_t SMPFnResult; /* for SMP target only */
724 bit32 IT; /* 0: initiator 1: target */
725 tiSMPFrameHeader_t SMPHeader;
726#endif
727 tdssSMPRequestBody_t SMPBody;
728 } SMP;
729 struct {
730 tiDataDirection_t dataDirection;
731 } RMC;
732 } protocol;
733} tdPassthroughCmndBody_t;
734
735#endif
736
737#endif /* __TDTYPES_H__ */
#define SMP_DIRECT_PAYLOAD_LIMIT
Definition: dmdefs.h:75
unsigned short bit16
Definition: ostypes.h:98
unsigned int bit32
Definition: ostypes.h:99
#define agBOOLEAN
Definition: ostypes.h:146
unsigned char bit8
Definition: ostypes.h:97
The file defines the constants, data structure, and functions defined by LL API.
void * agsaFrameHandle_t
handle to access frame
Definition: sa.h:1719
The file defines the declaration of tSDK APIs.
The file defines the declaration of OS APIs.
bit32 sasAddressHi
Definition: tdtypes.h:229
bit8 phyIdentifier
Definition: tdtypes.h:230
bit32 sasAddressLo
Definition: tdtypes.h:228
data structure stores OS specific and LL specific context
Definition: sa.h:1658
data structure provides some information about a SATA device
Definition: sa.h:2561
describe a configuration for a PHY in the SAS/SATA hardware
Definition: sa.h:2204
describe SAS IDENTIFY address frame
Definition: sa_spec.h:448
data structure provides the identify data of the SATA device
Definition: sa_spec.h:530
data structure describes an STP or direct connect SATA command
Definition: sa.h:3129
data structure describes the first four bytes of the SMP frame.
Definition: sa_spec.h:921
Definition: dm.h:91
bit32 satRemovableMedia
Definition: tdtypes.h:280
bit32 satDMASupport
Definition: tdtypes.h:282
bit32 satMaxUserAddrSectors
Definition: tdtypes.h:294
bit32 satNCQMaxIO
Definition: tdtypes.h:289
bit32 satPendingNCQIO
Definition: tdtypes.h:287
bit32 satLookAheadEnabled
Definition: tdtypes.h:296
bit32 satSMARTFeatureSet
Definition: tdtypes.h:278
bit32 satPendingIO
Definition: tdtypes.h:286
bit32 satPMField
Definition: tdtypes.h:300
bit32 satDMADIRSupport
Definition: tdtypes.h:284
bit32 satVerifyState
Definition: tdtypes.h:293
bit32 NumOfFCA
Definition: tdtypes.h:308
bit32 satSMARTEnabled
Definition: tdtypes.h:279
bit32 ID_Retries
Definition: tdtypes.h:312
bit32 NumOfIDRetries
Definition: tdtypes.h:309
bit32 satFormatState
Definition: tdtypes.h:299
void * satSaDeviceData
Definition: tdtypes.h:311
bit32 satAbortAfterReset
Definition: tdtypes.h:291
bit32 satWWNSupport
Definition: tdtypes.h:285
bit32 satBGPendingDiag
Definition: tdtypes.h:307
bit32 satWriteCacheEnabled
Definition: tdtypes.h:295
bit32 satNCQ
Definition: tdtypes.h:275
bit32 satDMAEnabled
Definition: tdtypes.h:283
tdList_t satActiveIntIoLinkList
Definition: tdtypes.h:271
tiIORequest_t * satTmTaskTag
Definition: tdtypes.h:310
bit32 satDriveState
Definition: tdtypes.h:290
bit32 satPendingNONNCQIO
Definition: tdtypes.h:288
bit32 satSectorDone
Definition: tdtypes.h:303
tdList_t satIoLinkList
Definition: tdtypes.h:269
agsaSATAIdentifyData_t satIdentifyData
Definition: tdtypes.h:273
bit32 satAbortCalled
Definition: tdtypes.h:292
bit32 satDeviceType
Definition: tdtypes.h:302
bit32 satDeviceFaultState
Definition: tdtypes.h:297
bit32 freeSATAFDMATagBitmap
Definition: tdtypes.h:304
bit32 satStopState
Definition: tdtypes.h:298
bit32 satRemovableMediaEnabled
Definition: tdtypes.h:281
bit32 IDPending
Definition: tdtypes.h:313
bit32 satSMARTSelfTest
Definition: tdtypes.h:277
bit32 IDDeviceValid
Definition: tdtypes.h:305
tdList_t satFreeIntIoLinkList
Definition: tdtypes.h:270
bit32 sat48BitSupport
Definition: tdtypes.h:276
agsaFisRegHostToDevice_t * pFis
Definition: tdtypes.h:552
tiSenseData_t * pTiSenseData
Definition: tdtypes.h:555
bit32 NotifyOS
Definition: tdtypes.h:575
bit32 ATACmd
Definition: tdtypes.h:568
bit32 OrgTL
Definition: tdtypes.h:569
bit32 LoopNum2
Definition: tdtypes.h:571
satInternalIo_t * satIntIoContext
Definition: tdtypes.h:561
struct satIOContext_s * satOrgIOContext
Definition: tdtypes.h:578
bit32 ParmIndex
Definition: tdtypes.h:573
bit8 LBA[8]
Definition: tdtypes.h:572
satDeviceData_t * pSatDevData
Definition: tdtypes.h:551
bit32 LoopNum
Definition: tdtypes.h:570
tiDeviceHandle_t * ptiDeviceHandle
Definition: tdtypes.h:562
bit32 ParmLen
Definition: tdtypes.h:574
tdList_t satIoContextLink
Definition: tdtypes.h:550
bit8 reserved1
Definition: tdtypes.h:565
scsiRspSense_t * pSense
Definition: tdtypes.h:554
bit8 sataTag
Definition: tdtypes.h:563
bit8 superIOFlag
Definition: tdtypes.h:564
tiIniScsiCmnd_t * pScsiCmnd
Definition: tdtypes.h:553
void * tiScsiXchg
Definition: tdtypes.h:557
bit32 interruptContext
Definition: tdtypes.h:559
bit8 reserved2
Definition: tdtypes.h:566
void * tiRequestBody
Definition: tdtypes.h:556
bit32 currentLBA
Definition: tdtypes.h:567
struct satIOContext_s * satToBeAbortedIOContext
Definition: tdtypes.h:577
bit32 reqType
Definition: tdtypes.h:558
satCompleteCbPtr_t satCompleteCB
Definition: tdtypes.h:560
tiScsiInitiatorRequest_t satIntTiScsiXchg
Definition: tdtypes.h:209
tiMem_t satIntDmaMem
Definition: tdtypes.h:210
bit32 satIntFlag
Definition: tdtypes.h:212
tdList_t satIntIoLink
Definition: tdtypes.h:206
void * satIntRequestBody
Definition: tdtypes.h:208
tiIORequest_t * satOrgTiIORequest
Definition: tdtypes.h:213
tiIORequest_t satIntTiIORequest
Definition: tdtypes.h:207
tiMem_t satIntReqBodyMem
Definition: tdtypes.h:211
unsigned long tiDeviceHandle
Definition: tdtypes.h:492
data structure for SAS SSP IO reuqest body This structure contains IO related fields....
Definition: tdtypes.h:587
tiIORequest_t * tiIOToBeAbortedRequest
Definition: tdtypes.h:592
tiDeviceHandle_t * tiDevHandle
Definition: tdtypes.h:589
tdssIOCompleted_t IOCompletionFunc
Definition: tdtypes.h:588
satIOContext_t satIOContext
Definition: tdtypes.h:616
bit32 ioCompleted
Definition: tdtypes.h:620
void * sglVirtualAddr
Definition: tdtypes.h:630
struct tdIORequestBody_s::@15::@17 SAS
tiIORequest_t tiIORequest
Definition: tdtypes.h:639
struct tdIORequestBody_s::@15::@18 SATA
struct tdIORequestBody_s::@16::@21::@22::@24 MirrorIO
void * osMemHandle
Definition: tdtypes.h:633
tiIORequest_t * CurrentTaskTag
Definition: tdtypes.h:634
struct tdIORequestBody_s::@16::@20 InitiatorTMIO
tiIORequest_t * TaskTag
Definition: tdtypes.h:635
tdList_t EsglPageList
Definition: tdtypes.h:623
union tdIORequestBody_s::@15 transport
scsiRspSense_t sensePayload
Definition: tdtypes.h:614
union tdIORequestBody_s::@16 IOType
tiSgl_t tiSgl2
Definition: tdtypes.h:629
union tdIORequestBody_s::@16::@21::@22 TargetIOType
bit32 expDataLength
Definition: tdtypes.h:627
bit32 agRequestType
Definition: tdtypes.h:624
agsaSATAInitiatorRequest_t agSATARequestBody
Definition: tdtypes.h:613
tdList_t EsglMirrorPageList
Definition: tdtypes.h:652
agsaIORequest_t agIORequest
Definition: tdtypes.h:591
tiIORequest_t * tiIORequest
Definition: tdtypes.h:590
tiSgl_t tiSglMirror
Definition: tdtypes.h:650
agsaSASRequestBody_t agSASRequestBody
Definition: tdtypes.h:607
tiSgl_t tiSgl1
Definition: tdtypes.h:628
struct tdIORequestBody_s::@16::@21::@22::@23 RegIO
struct tdIORequestBody_s::@16::@21 TargetIO
struct tdIORequestBody_s::@16::@19 InitiatorRegIO
tiSenseData_t tiSenseData
Definition: tdtypes.h:615
void * sglMirrorVirtualAddr
Definition: tdtypes.h:651
agsaContext_t agContext
Definition: tdtypes.h:593
data structure for both SAS/SATA related flags Some fields are just place holders and not used yet
Definition: tdtypes.h:188
agBOOLEAN resetInProgress
Definition: tdtypes.h:193
agBOOLEAN sysIntsActive
Definition: tdtypes.h:190
agBOOLEAN resetFailed
Definition: tdtypes.h:196
data structure for SAS device list This structure maintains the device as a list and information abou...
Definition: tdtypes.h:322
tiDeviceHandle_t tiDeviceHandle
Definition: tdtypes.h:325
agsaRoot_t * agRoot
Definition: tdtypes.h:335
bit8 target_ssp_stp_smp
Definition: tdtypes.h:343
bit32 ResetCnt
Definition: tdtypes.h:374
agsaSASIdentify_t sasIdentify
Definition: tdtypes.h:364
tdList_t MainLink
Definition: tdtypes.h:328
agsaDevHandle_t * agDevHandle
Definition: tdtypes.h:336
tdList_t IncDisLink
Definition: tdtypes.h:329
bit8 initiator_ssp_stp_smp
Definition: tdtypes.h:342
tdsaTimerRequest_t SATAIDDeviceTimer
Definition: tdtypes.h:375
struct tdsaExpander_s * tdExpander
Definition: tdtypes.h:360
bit8 directlyAttached
Definition: tdtypes.h:367
struct tdsaPortContext_s * tdPortContext
Definition: tdtypes.h:349
agsaContext_t agDeviceResetContext
Definition: tdtypes.h:371
tdList_t FreeLink
Definition: tdtypes.h:327
TDSASAddressID_t SASAddressID
Definition: tdtypes.h:341
satDeviceData_t satDevData
Definition: tdtypes.h:346
bit32 OSAbortAll
Definition: tdtypes.h:376
bit8 SASSpecDeviceType
Definition: tdtypes.h:368
agsaDeviceInfo_t agDeviceInfo
Definition: tdtypes.h:357
bit8 connectionRate
Definition: tdtypes.h:365
tdsaJumpTable_t * pJumpTable
Definition: tdtypes.h:324
struct tdsaDeviceData_s * ExpDevice
Definition: tdtypes.h:361
agsaContext_t agContext
Definition: tdtypes.h:358
bit32 IOResponse
Definition: tdtypes.h:370
tiIORequest_t TransportRecoveryIO
Definition: tdtypes.h:372
bit32 pendingSMP
Definition: tdtypes.h:257
bit32 ResetTriggerred
Definition: tdtypes.h:262
bit32 deviceRetistrationRetries
Definition: tdtypes.h:251
bit32 NumOfUpExp
Definition: tdtypes.h:246
bit32 forcedOK
Definition: tdtypes.h:259
tdList_t discoveringExpanderList
Definition: tdtypes.h:239
bit32 configureRouteRetries
Definition: tdtypes.h:250
bit32 retries
Definition: tdtypes.h:249
bit32 status
Definition: tdtypes.h:242
struct tdsaExpander_s * RootExp
Definition: tdtypes.h:245
bit32 SMPRetries
Definition: tdtypes.h:261
tdsaTimerRequest_t SMPBusyTimer
Definition: tdtypes.h:260
bit32 SeenBC
Definition: tdtypes.h:258
tdsaTimerRequest_t BCTimer
Definition: tdtypes.h:255
tdList_t UpdiscoveringExpanderList
Definition: tdtypes.h:240
agsaSATAIdentifyData_t * pSataIdentifyData
Definition: tdtypes.h:244
tdsaTimerRequest_t deviceRegistrationTimer
Definition: tdtypes.h:254
smpRespDiscover_t SMPDiscoverResp
Definition: tdtypes.h:256
tdsaTimerRequest_t DiscoverySMPTimer
Definition: tdtypes.h:263
tdsaTimerRequest_t discoveryTimer
Definition: tdtypes.h:252
tdsaTimerRequest_t configureRouteTimer
Definition: tdtypes.h:253
TDSASAddressID_t sasAddressIDDiscoverError
Definition: tdtypes.h:243
bit32 configSASAddrTableIndex
Definition: tdtypes.h:528
bit16 numOfUpStreamPhys
Definition: tdtypes.h:511
bit8 hasUpStreamDevice
Definition: tdtypes.h:502
bit16 routingIndex
Definition: tdtypes.h:504
bit16 numOfDownStreamPhys
Definition: tdtypes.h:522
bit16 currentUpStreamPhyIndex
Definition: tdtypes.h:512
tdList_t linkNode
Definition: tdtypes.h:498
bit32 discoverSMPAllowed
Definition: tdtypes.h:524
tdsaDeviceData_t * tdDeviceToProcess
Definition: tdtypes.h:506
bit8 upStreamPhys[TD_MAX_EXPANDER_PHYS]
Definition: tdtypes.h:510
tdList_t upNode
Definition: tdtypes.h:499
bit32 upStreamSASAddressHi
Definition: tdtypes.h:513
bit32 configuring
Definition: tdtypes.h:517
bit8 routingAttribute[TD_MAX_EXPANDER_PHYS]
Definition: tdtypes.h:525
bit32 upStreamSASAddressLo
Definition: tdtypes.h:514
bit16 currentDownStreamPhyIndex
Definition: tdtypes.h:523
bit16 currentIndex[TD_MAX_EXPANDER_PHYS]
Definition: tdtypes.h:505
bit32 configReserved
Definition: tdtypes.h:518
bit32 configSASAddressLoTable[DEFAULT_MAX_DEV]
Definition: tdtypes.h:527
bit32 configSASAddressHiTable[DEFAULT_MAX_DEV]
Definition: tdtypes.h:526
struct tdsaExpander_s * tdReturnginExpander
Definition: tdtypes.h:520
bit32 configRouteTable
Definition: tdtypes.h:516
struct tdsaExpander_s * tdCurrentDownStreamExpander
Definition: tdtypes.h:509
bit8 downStreamPhys[TD_MAX_EXPANDER_PHYS]
Definition: tdtypes.h:521
tdsaDeviceData_t * tdDevice
Definition: tdtypes.h:500
bit32 configSASAddressLo
Definition: tdtypes.h:508
struct tdsaExpander_s * tdUpStreamExpander
Definition: tdtypes.h:501
bit32 underDiscovering
Definition: tdtypes.h:515
bit8 discoveringPhyId
Definition: tdtypes.h:503
bit32 configSASAddressHi
Definition: tdtypes.h:507
data structure for callback function jumptableESLG page
Definition: tdtypes.h:102
tdssIOCompleted_t pSSPIOCompleted
Definition: tdtypes.h:108
tdssGetSGLChunk_t pGetSGLChunk
Definition: tdtypes.h:112
tdssSMPCompleted_t pSMPCompleted
Definition: tdtypes.h:110
tdssSMPReqReceived_t pSMPReqReceived
Definition: tdtypes.h:106
tdssSSPReqReceived_t pSSPReqReceived
Definition: tdtypes.h:104
data structure for TD port context This structure maintains information about the port such as ID add...
Definition: tdtypes.h:412
bit32 discoveryOptions
Definition: tdtypes.h:418
tdsaDiscovery_t discovery
Definition: tdtypes.h:453
bit32 numAvailableTargets
Definition: tdtypes.h:424
bit32 sasRemoteAddressLo
Definition: tdtypes.h:433
bit32 DiscoveryRdyGiven
Definition: tdtypes.h:420
bit32 sasLocalAddressHi
Definition: tdtypes.h:438
bit32 eventPhyID
Definition: tdtypes.h:457
bit32 DiscoveryState
Definition: tdtypes.h:416
tdList_t FreeLink
Definition: tdtypes.h:429
bit32 sasRemoteAddressHi
Definition: tdtypes.h:432
bit32 SeenLinkUp
Definition: tdtypes.h:422
bit32 DiscFailNSeenBC
Definition: tdtypes.h:461
bit8 PhyIDList[TD_MAX_NUM_PHYS]
Definition: tdtypes.h:442
bit8 nativeSATAMode
Definition: tdtypes.h:449
bit32 PortRecoverPhyID
Definition: tdtypes.h:460
bit32 RegisteredDevNums
Definition: tdtypes.h:456
agsaSASIdentify_t sasIDframe
Definition: tdtypes.h:435
agsaContext_t agContext
Definition: tdtypes.h:459
agsaPortContext_t * agPortContext
Definition: tdtypes.h:446
bit32 sasLocalAddressLo
Definition: tdtypes.h:439
agsaRoot_t * agRoot
Definition: tdtypes.h:445
tiPortalContext_t * tiPortalContext
Definition: tdtypes.h:443
bit8 remoteSignature[8]
Definition: tdtypes.h:450
tdList_t MainLink
Definition: tdtypes.h:430
bit32 osInitiatedDiscovery
Definition: tdtypes.h:426
bit8 remoteName[68]
Definition: tdtypes.h:462
bit8 directAttatchedSAS
Definition: tdtypes.h:451
data structure for TD port information This structure contains information in order to start the port...
Definition: tdtypes.h:477
agsaSASIdentify_t SASID
Definition: tdtypes.h:480
tdsaPortContext_t * portContext
Definition: tdtypes.h:479
tdssPortFlags_t flags
Definition: tdtypes.h:481
tiPortalContext_t * tiPortalContext
Definition: tdtypes.h:478
agsaPhyConfig_t agPhyConfig
Definition: tdtypes.h:482
data structure OS root from the view of lower layer. TD Layer interrupt/non-interrupt context support...
Definition: tdtypes.h:151
void * tdstHost
Definition: tdtypes.h:157
void * ttdsaTgt
Definition: tdtypes.h:155
void * tdsaAllShared
Definition: tdtypes.h:153
agBOOLEAN IntContext
Definition: tdtypes.h:159
void * itdsaIni
Definition: tdtypes.h:154
tiRoot_t * tiRoot
Definition: tdtypes.h:152
void * tdstDevice
Definition: tdtypes.h:158
bit8 initiator_ssp_stp_smp
Definition: tdtypes.h:396
bit32 sasAddressLo
Definition: tdtypes.h:395
bit8 target_ssp_stp_smp
Definition: tdtypes.h:397
bit32 sasAddressHi
Definition: tdtypes.h:394
data structure for timer request Timer requests are enqueued and dequeued using tdList_t and have a c...
Definition: tdtypes.h:122
void * timerData3
Definition: tdtypes.h:127
tdsaTimerCBFunc_t timerCBFunc
Definition: tdtypes.h:128
tdList_t timerLink
Definition: tdtypes.h:129
bit32 timerRunning
Definition: tdtypes.h:130
void * timerData1
Definition: tdtypes.h:125
void * timerData2
Definition: tdtypes.h:126
data structure for IO request data used at target only in ttdtxchg_t structure just a place holder fo...
Definition: tdtypes.h:138
tdsaJumpTable_t * pJumpTable
Definition: tdtypes.h:140
data structure for port/phy related flags Some fields are just place holders and not used yet
Definition: tdtypes.h:165
agBOOLEAN pseudoPortStartDone
Definition: tdtypes.h:181
agBOOLEAN portReadyForDiscoverySent
Definition: tdtypes.h:172
agBOOLEAN portStarted
Definition: tdtypes.h:167
agBOOLEAN portStoppedByOSLayer
Definition: tdtypes.h:175
agBOOLEAN portInitialized
Definition: tdtypes.h:170
agBOOLEAN pseudoPortInitDone
Definition: tdtypes.h:180
agBOOLEAN failPortInit
Definition: tdtypes.h:178
data structure for SAS SMP reuqest body This structure contains IO related fields....
Definition: tdtypes.h:668
agsaSASRequestBody_t agSASRequestBody
Definition: tdtypes.h:674
void * IndirectSMPReqosMemHandle
Definition: tdtypes.h:685
agsaSATAInitiatorRequest_t agSATARequestBody
Definition: tdtypes.h:675
tdsaPortContext_t * tdPortContext
Definition: tdtypes.h:679
bit32 IndirectSMPRespLen
Definition: tdtypes.h:690
void * IndirectSMPResposMemHandle
Definition: tdtypes.h:688
agsaIORequest_t agIORequest
Definition: tdtypes.h:673
tiDeviceHandle_t * tiDevHandle
Definition: tdtypes.h:672
bit32 IndirectSMPReqLen
Definition: tdtypes.h:687
void * IndirectSMPResp
Definition: tdtypes.h:689
bit8 smpPayload[SMP_DIRECT_PAYLOAD_LIMIT]
Definition: tdtypes.h:680
tdsaDeviceData_t * tdDevice
Definition: tdtypes.h:677
tdssSMPCompleted_t SMPCompletionFunc
Definition: tdtypes.h:670
void * IndirectSMPReq
Definition: tdtypes.h:686
tdIORequestBody_t IORequestBody
Definition: tdtypes.h:669
tiIORequest_t * CurrentTaskTag
Definition: tdtypes.h:678
Definition: titypes.h:67
Definition: titypes.h:61
#define TD_MAX_EXPANDER_PHYS
Definition: tddefs.h:167
#define DEFAULT_MAX_DEV
Definition: tddefs.h:122
#define TD_MAX_NUM_PHYS
Definition: tddefs.h:108
bit32(* tdssGetSGLChunk_t)(agsaRoot_t *agRoot, agsaIORequest_t *agIORequest, bit32 agChunkOffset, bit32 *agChunkUpper32, bit32 *agChunkLower32, bit32 *agChunkLen)
Definition: tdtypes.h:73
void(* tdsaTimerCBFunc_t)(tiRoot_t *tiRoot, void *timerData1, void *timerData2, void *timerData3)
Definition: tdtypes.h:116
struct tdIORequestBody_s tdIORequestBody_t
data structure for SAS SSP IO reuqest body This structure contains IO related fields....
struct tdssPortFlags_s tdssPortFlags_t
data structure for port/phy related flags Some fields are just place holders and not used yet
void(* tdssSMPCompleted_t)(agsaRoot_t *, agsaIORequest_t *, bit32, bit32, agsaFrameHandle_t)
Definition: tdtypes.h:87
#define SAT_MAX_INT_IO
Definition: tdtypes.h:224
struct tdsaDeviceData_s tdsaDeviceData_t
data structure for SAS device list This structure maintains the device as a list and information abou...
struct tdsaSASSubID_s tdsaSASSubID_t
struct tdsaTimerRequest_s tdsaTimerRequest_t
data structure for timer request Timer requests are enqueued and dequeued using tdList_t and have a c...
struct tdsaComMemFlags_s tdsaComMemFlags_t
data structure for both SAS/SATA related flags Some fields are just place holders and not used yet
struct tdssIORequestData_s tdssIORequestData_t
data structure for IO request data used at target only in ttdtxchg_t structure just a place holder fo...
struct tdsaPortStartInfo_s tdsaPortStartInfo_t
data structure for TD port information This structure contains information in order to start the port...
struct satInternalIo_s satInternalIo_t
struct tdDeviceLUNInfo_s tdDeviceLUNInfoIOCTL_t
struct TDSASAddressID_s TDSASAddressID_t
struct tdsaRootOsData_s tdsaRootOsData_t
data structure OS root from the view of lower layer. TD Layer interrupt/non-interrupt context support...
void(* satCompleteCbPtr_t)(agsaRoot_t *agRoot, agsaIORequest_t *agIORequest, bit32 agIOStatus, agsaFisHeader_t *agFirstDword, bit32 agIOInfoLen, agsaFrameHandle_t agFrameHandle, void *satIOContext)
Definition: tdtypes.h:535
void(* tdssSMPReqReceived_t)(agsaRoot_t *, agsaDevHandle_t *, agsaSMPFrameHeader_t *, agsaFrameHandle_t, bit32, bit32)
Definition: tdtypes.h:64
void(* tdssSSPReqReceived_t)(agsaRoot_t *, agsaDevHandle_t *, agsaFrameHandle_t, bit32, bit32, bit32)
Definition: tdtypes.h:56
struct tdsaExpander_s tdsaExpander_t
void(* tdssIOCompleted_t)(agsaRoot_t *, agsaIORequest_t *, bit32, bit32, agsaFrameHandle_t, bit32)
Definition: tdtypes.h:80
struct tdssSMPRequestBody_s tdssSMPRequestBody_t
data structure for SAS SMP reuqest body This structure contains IO related fields....
struct tdsaDiscovery_s tdsaDiscovery_t
struct tdsaPortContext_s tdsaPortContext_t
data structure for TD port context This structure maintains information about the port such as ID add...
struct tdsaJumpTable_s tdsaJumpTable_t
data structure for callback function jumptableESLG page
struct satIOContext_s satIOContext_t
tiDataDirection_t
Definition: tidefs.h:530
tiIntrEventType_t
Definition: tidefs.h:456
union data structure specifies a request
Definition: sa.h:3104