34#ifdef SA_ENABLE_TRACE_FUNCTIONS
38#define siTraceFileID 'O'
46LOCAL void siDumpSSPStartIu(
86 if (!saRoot->freeFastIdx)
88 SA_DBG1((
"saSuperSSPReqAlloc: no memory ERROR\n"));
94 saRoot->freeFastIdx--;
95 idx = saRoot->freeFastIdx;
98 fr = saRoot->freeFastReq[idx];
111 saFastRequest_t *fr = (saFastRequest_t*)freq;
113 SA_DBG2((
"siFastSSPReqFree: enter\n"));
115 if (saRoot->freeFastIdx >=
sizeof(saRoot->freeFastReq) /
116 sizeof(saRoot->freeFastReq[0]))
118 SA_DBG1((
"siFastSSPReqFree: too many handles %d / %d ERROR\n",
119 saRoot->freeFastIdx, (
int)(
sizeof(saRoot->freeFastReq) /
120 sizeof(saRoot->freeFastReq[0]))));
127 saRoot->freeFastIdx++;
131 SA_DBG6((
"siFastSSPReqFree: leave\n"));
151 SA_DBG4((
"Entering function siFastSSPResAlloc:\n"));
160 SA_DBG1((
"siFastSSPResAlloc: No request from free list\n" ));
186 SA_DBG1((
"siFastSSPResAlloc: error when get free IOMB\n"));
193 SA_DBG3((
"siFastSSPResAlloc: no more IOMB\n"));
214 saRoot->
IOMap[(*pRequest)->HTag].
Tag = (*pRequest)->HTag;
231 fr = (saFastRequest_t*)ioHandle;
241 for (i = 0; i < fr->inqMax - 1; i++)
242 saSetIBQPI(agRoot, fr->inqList[i], fr->beforePI[fr->inqList[i]]);
270 siFastSSPReqFree(agRoot, fr);
276GLOBAL void *saFastSSPPrepare(
278 agsaFastCommand_t *fc,
308 SA_DBG4((
"Entering function saFastSSPPrepare:\n"));
310 fr = (saFastRequest_t*)ioh;
314 fr = siFastSSPReqAlloc(agRoot);
323 fr->beforePI[i] = (
bit32)-1;
333 ret = siFastSSPResAlloc(agRoot, fc->queueNum, fc->agRequestType,
334 pDevice, &pRequest, &pMessage);
343 inq = INQ(fc->queueNum);
344 outq = OUQ(fc->queueNum);
359 switch (fc->agRequestType)
397 SA_DBG5((
"saFastSSPPrepare: agSgl %08x:%08x (%x/%x)\n",
442 16 + fc->additionalCdbLen));
460 SA_DBG5((
"saSuperSSPSend: Ext mode, agSgl %08x:%08x (%x/%x)\n",
478 SA_DBG1((
"saSuperSSPSend: Unsupported Request IOMB\n"));
486 OSSA_WRITE_LE_32(agRoot, pMessage, offsetTag, pRequest->
HTag);
487 OSSA_WRITE_LE_32(agRoot, pMessage, offsetDeviceId, pDevice->
DeviceMapIndex);
488 OSSA_WRITE_LE_32(agRoot, pMessage, offsetDataLen, fc->dataLength);
489 OSSA_WRITE_LE_32(agRoot, pMessage, offsetDir, Dir);
491 if (fr->beforePI[inq] == -1)
494 fr->beforePI[inq] = saGetIBQPI(agRoot, inq);
495 fr->inqList[fr->inqMax++] = inq;
512 SA_DBG1((
"saFastSSPPrepare: error when post SSP IOMB\n"));
540 fr = (saFastRequest_t*)ioHandle;
546 SA_DBG4((
"Entering function saFastSSPSend:\n"));
548 for (i = 0; i < fr->inqMax; i++)
550 inq = INQ(fr->inqList[i]);
556 siFastSSPReqFree(agRoot, fr);
602 bit32 encryptFlags = 0;
605 bit8 inq = 0, outq = 0;
630 pPort = pDevice->
pPort;
646 SA_DBG1((
"saSSPStart, No request from free list\n" ));
663 SA_DBG3((
"saSSPStart, request %p\n", pRequest ));
667 switch ( agRequestType )
678#ifdef SAFLAG_USE_DIF_ENC_IOMB
679 (pIRequest->
flag & AGSA_SAS_USE_DIF_ENC_OPSTART) ||
702#ifdef SAFLAG_USE_DIF_ENC_IOMB
703 (pIRequest->
flag & AGSA_SAS_USE_DIF_ENC_OPSTART) ||
723 SA_DBG3((
"saSSPStart: agRequestType 0x%X INDIRECT\n", agRequestType));
736 SA_DBG3((
"saSSPStart: agRequestType 0x%X (was default)\n", agRequestType));
741 SA_DBG1((
"saSSPStart: agRequestType UNKNOWN 0x%X\n", agRequestType));
753 pRequest->
pPort = pPort;
758 agIORequest->
sdkData = pRequest;
764#ifdef SA_LL_IBQ_PROTECT
774 retVal = mpiMsgFreeGetOQ(circularOQ, size, &pMessage);
786#ifdef SA_LL_IBQ_PROTECT
796 SA_DBG1((
"saSSPStart, error when get free IOMB\n"));
805#ifdef SA_LL_IBQ_PROTECT
815 SA_DBG1((
"saSSPStart, no more IOMB\n"));
820 SA_DBG3((
"saSSPStart:agRequestType %X\n" ,agRequestType));
822 switch ( agRequestType )
875#ifdef SA_TESTBASE_EXTRA
877 DirDW4 |= ((UINT32)pIRequest->bstIndex) << 16;
937 OSSA_WRITE_LE_32(agRoot, pPayload,
940 OSSA_WRITE_LE_32(agRoot, pPayload,
949 SA_DBG1((
"saSSPStart: EPL DPL hi region must be equal AGSA_RC_FAILURE\n" ));
955 OSSA_WRITE_LE_32(agRoot, pPayload,
961 OSSA_WRITE_LE_32(agRoot, pPayload,
964 OSSA_WRITE_LE_32(agRoot, pPayload,
967 OSSA_WRITE_LE_32(agRoot, pPayload,
973 OSSA_WRITE_LE_32(agRoot, pPayload,
976 OSSA_WRITE_LE_32(agRoot, pPayload,
979 OSSA_WRITE_LE_32(agRoot, pPayload,
985 OSSA_WRITE_LE_32(agRoot, pPayload,
988 OSSA_WRITE_LE_32(agRoot, pPayload,
991 OSSA_WRITE_LE_32(agRoot, pPayload,
998 bit32 UDTR1_UDTR0_UDT1_UDT0 = 0;
999 bit32 UDT5_UDT4_UDT3_UDT2 = 0;
1000 bit32 UDTR5_UDTR4_UDTR3_UDTR2 = 0;
1002 SA_DBG3((
"saSSPStart,DIF enableRefBlockCount ref %d enableRefBlockCount %d enableCrc %d enableCrcInversion %d\n",
1008 SA_DBG3((
"saSSPStart,DIF initialIOSeed %X lbSize %X difAction %X\n",
1013 SA_DBG3((
"saSSPStart,DIF udtArray %2X %2X %2X %2X %2X %2X\n",
1021 SA_DBG3((
"saSSPStart,DIF udrtArray %2X %2X %2X %2X %2X %2X\n",
1029 SA_DBG3((
"saSSPStart,DIF tagUpdateMask %X tagVerifyMask %X DIFPerLAAddrLo %X DIFPerLAAddrHi %X\n",
1038 SA_DBG3((
"saSSPStart, DW 15 DIF_flags 0x%08X\n", pIRequest->
dif.
flags ));
1040 OSSA_WRITE_LE_32(agRoot, pPayload,
1068 OSSA_WRITE_LE_32(agRoot, pPayload,
1070 UDTR1_UDTR0_UDT1_UDT0);
1073 OSSA_WRITE_LE_32(agRoot, pPayload,
1075 UDT5_UDT4_UDT3_UDT2);
1078 OSSA_WRITE_LE_32(agRoot, pPayload,
1080 UDTR5_UDTR4_UDTR3_UDTR2);
1087 OSSA_WRITE_LE_32(agRoot, pPayload,
1096 OSSA_WRITE_LE_32(agRoot, pPayload,
1102 OSSA_WRITE_LE_32(agRoot, pPayload,
1112 SA_DBG3((
"saSSPStart,ENC dekTable 0x%08X dekIndex 0x%08X\n",
1116 SA_DBG3((
"saSSPStart,ENC kekIndex 0x%08X sectorSizeIndex 0x%08X cipherMode 0x%08X\n",
1121 SA_DBG3((
"saSSPStart,ENC keyTag_W0 0x%08X keyTag_W1 0x%08X\n",
1124 SA_DBG3((
"saSSPStart,ENC tweakVal_W0 0x%08X tweakVal_W1 0x%08X\n",
1127 SA_DBG3((
"saSSPStart,ENC tweakVal_W2 0x%08X tweakVal_W3 0x%08X\n",
1151 OSSA_WRITE_LE_32(agRoot, pPayload,
1161 OSSA_WRITE_LE_32(agRoot, pPayload,
1166 OSSA_WRITE_LE_32(agRoot, pPayload,
1170 OSSA_WRITE_LE_32(agRoot, pPayload,
1175 OSSA_WRITE_LE_32(agRoot, pPayload,
1179 OSSA_WRITE_LE_32(agRoot, pPayload,
1183 OSSA_WRITE_LE_32(agRoot, pPayload,
1187 OSSA_WRITE_LE_32(agRoot, pPayload,
1195 pSgl = &(pIRequest->
agSgl);
1197 SA_DBG3((
"saSSPStart:opCode %X agSgl %08x:%08x (%x/%x)\n",opCode,
1213 pEncryptPayload->
Len0 = pSgl->
len;
1237 pEncryptPayload->
Len0 = 0;
1238 pEncryptPayload->
E0 = 0;
1258 SA_DBG1((
"saSSPStart, error when post SSP IOMB\n"));
1281 DirDW4 = sspiul << 16;
1316 pSgl = &(pIRequest->
agSgl);
1318 SA_DBG3((
"saSSPStart: Ext mode, agSgl %08x:%08x (%x/%x)\n",
1342 SA_DBG1((
"saSSPStart, error when post SSP Ext IOMB\n"));
1381 if (pTMRequestToAbort)
1387 SA_DBG1((
"saSSPStart, HTAG 0x%x TM function 0x%x Tag-to-be-aborted 0x%x deviceId 0x%x\n",
1395 SA_DBG1((
"saSSPStart, error when post TM IOMB\n"));
1426 bit32 UDTR1_UDTR0_UDT1_UDT0 = 0;
1427 bit32 UDT5_UDT4_UDT3_UDT2 = 0;
1428 bit32 UDTR5_UDTR4_UDTR3_UDTR2 = 0;
1429 SA_DBG3((
"saSSPStart,tgt DIF enableRefBlockCount ref %d enableRefBlockCount %d enableCrc %d enableCrcInversion %d\n",
1435 SA_DBG3((
"saSSPStart,tgt DIF initialIOSeed %X lbSize %X difAction %X\n",
1440 SA_DBG3((
"saSSPStart,tgt DIF udtArray %2X %2X %2X %2X %2X %2X\n",
1448 SA_DBG3((
"saSSPStart,tgt DIF udrtArray %2X %2X %2X %2X %2X %2X\n",
1456 SA_DBG3((
"saSSPStart,tgt DIF tagUpdateMask %X tagVerifyMask %X DIFPerLAAddrLo %X DIFPerLAAddrHi %X\n",
1465 SA_DBG3((
"saSSPStart,tgt DW 15 DIF_flags 0x%08X\n", pTRequest->
dif.
flags ));
1467 OSSA_WRITE_LE_32(agRoot, pPayload,
1494 OSSA_WRITE_LE_32(agRoot, pPayload,
1496 UDTR1_UDTR0_UDT1_UDT0);
1499 OSSA_WRITE_LE_32(agRoot, pPayload,
1501 UDT5_UDT4_UDT3_UDT2);
1504 OSSA_WRITE_LE_32(agRoot, pPayload,
1506 UDTR5_UDTR4_UDTR3_UDTR2);
1511 OSSA_WRITE_LE_32(agRoot, pPayload,
1521 OSSA_WRITE_LE_32(agRoot, pPayload,
1527 OSSA_WRITE_LE_32(agRoot, pPayload,
1551 pSgl = &(pTRequest->
agSgl);
1553 SA_DBG5((
"saSSPStart: agSgl %08x:%08x (%x/%x)\n",
1580 SA_DBG1((
"saSSPStart, error when post TGT IOMB\n"));
1626 SA_DBG1((
"saSSPStart, error when post TGT RSP IOMB\n"));
1634 SA_DBG1((
"saSSPStart, Unsupported Request IOMB\n"));
1642#ifdef SA_LL_IBQ_PROTECT
1648 saRoot->LLCounters.IOCounter.numSSPStarted++;
1701 bit32 flag_copy = flag;
1708 SA_DBG2((
"saSSPAbort: agIORequest %p agDevHandle %p abortParam %p flag 0x%x\n", agIORequest,agDevHandle,abortParam,flag));
1715#ifdef SA_PRINTOUT_IN_WINDBG
1717 DbgPrint(
"saSSPAbort flag %d\n", flag );
1729 SA_DBG1((
"saSSPAbort: ABORT_ALL no pRequest\n"));
1737 if (
agNULL == pRequestABT)
1740 SA_DBG1((
"saSSPAbort: ABORT_ALL no pRequestABT\n"));
1745 pDeviceABT = pRequestABT->
pDevice;
1747 if (
agNULL == pDeviceABT)
1750 SA_DBG1((
"saSSPAbort: ABORT_ALL no pRequestABT->deviceID\n"));
1758 pPort = pDevice->
pPort;
1763 SA_DBG1((
"saSSPAbort: ABORT_ALL no deviceID\n"));
1778 if (agDevHandle ==
agNULL)
1781 SA_DBG1((
"saSSPAbort: agDevHandle == agNULL!!!\n"));
1788 SA_DBG1((
"saSSPAbort: ABORT_ALL agNULL == pDevice\n"));
1791 pPort = pDevice->
pPort;
1798 SA_DBG1((
"saSSPAbort: ABORT_ALL type not supported 0x%X\n",flag));
1804 if (
agNULL == pRequest )
1810 SA_DBG2((
"saSSPAbort: using saRoot->freeReservedRequests\n"));
1816 SA_DBG1((
"saSSPAbort: No request from free list Not using saRoot->freeReservedRequests\n"));
1824 if( using_reserved )
1843 pRequest->
pPort = pPort;
1849 agIORequest->
sdkData = pRequest;
1856#ifdef SA_LL_IBQ_PROTECT
1868#ifdef SA_LL_IBQ_PROTECT
1877 SA_DBG1((
"saSSPAbort: saving pRequest (%p) for later use\n", pRequest));
1887 SA_DBG1((
"saSSPAbort: error when get free IOMB\n"));
1896#ifdef SA_LL_IBQ_PROTECT
1905 SA_DBG1((
"saSSPAbort: saving pRequest (%p) for later use\n", pRequest));
1915 SA_DBG1((
"saSSPAbort: no more IOMB\n"));
1926 if (
agNULL == pDeviceABT )
1928 SA_DBG1((
"saSSPSAbort: no device\n" ));
1952 SA_DBG1((
"saSSPAbort: HTag 0x%x HTagABT 0x%x deviceId 0x%x flag 0x%x\n", payload->
tag, payload->
HTagAbort, payload->
deviceId,flag));
1959#ifdef SA_LL_IBQ_PROTECT
1966 saRoot->LLCounters.IOCounter.numSSPAborted++;
1976#if defined(SALLSDK_DEBUG)
1987LOCAL void siDumpSSPStartIu(
1989 bit32 agRequestType,
1993 switch ( agRequestType )
2000 SA_DBG5((
"siDumpSSPStartIu: dev=%p - %s - len=%x - attr=%x - CDB:%02x %02x %02x %02x %02x %02x %02x %02x %02x %02x\n",
2024 SA_DBG3((
"siDumpSSPStartIu: dev=%p - %s - len=%x - attr=%x - CDB:%02x %02x %02x %02x %02x %02x %02x %02x %02x %02x\n",
2048 SA_DBG3((
"siDumpSSPStartIu: dev=%p - %s - len=%x - attr=%x - CDB:%02x %02x %02x %02x %02x %02x %02x %02x %02x %02x\n",
2074 SA_DBG3((
"siDumpSSPStartIu: dev=%p - %s - len=%x - cdblen=%d CDB:U %08x L %08x\n",
2091 SA_DBG5((
"siDumpSSPStartIu: dev=%p - %s - Task Function=%x - Tag to managed=%x",
2093 "AGSA_SSP_TASK_MGNT_REQ",
2103 SA_DBG5((
"siDumpSSPStartIu: dev=%p - %s - dmaSize=%x dmaOffset=%x\n",
2105 "AGSA_SSP_TGT_READ_DATA",
2114 SA_DBG5((
"siDumpSSPStartIu: dev=%p - %s - dmaSize=%x dmaOffset=%x\n",
2116 "AGSA_SSP_TGT_READ_GOOD_RESP",
2124 SA_DBG5((
"siDumpSSPStartIu: dev=%p - %s - dmaSize=%x dmaOffset=%x\n",
2126 "AGSA_SSP_TGT_WRITE_GOOD_RESP",
2136 SA_DBG5((
"siDumpSSPStartIu: dev=%p - %s - dmaSize=%x dmaOffset=%x\n",
2138 "AGSA_SSP_TGT_WRITE_DATA",
2147 SA_DBG5((
"siDumpSSPStartIu: dev=%p - %s - len=%x PAddr=%08x:%08x Tag=%x\n",
2149 "AGSA_SSP_TGT_CMD_OR_TASK_RSP",
2153 pTResponse->
agTag ));
2159 SA_DBG1((
"siDumpSSPStartIu: dev=%p - %s %X\n",
2161 "Unknown SSP cmd type",
#define MIN(a, b)
MIN macro.
GLOBAL FORCEINLINE bit32 mpiMsgProduce(mpiICQueue_t *circularQ, void *messagePtr, mpiMsgCategory_t category, bit16 opCode, bit8 responseQueue, bit8 hiPriority)
GLOBAL FORCEINLINE bit32 mpiMsgFreeGet(mpiICQueue_t *circularQ, bit16 messageSize, void **messagePtr)
Retrieves a free message buffer from an inbound queue.
#define smTraceFuncEnter(L, I)
#define smTraceFuncExit(L, S, I)
#define AGSA_SSP_INIT_WRITE_M
#define DIF_FLAG_BITS_UDTVMASK
#define AGSA_SSP_INIT_WRITE_EXT_M
#define SA_RESERVED_REQUEST_COUNT
#define DIF_FLAG_BITS_ACTION
#define AGSA_SSP_INIT_WRITE_EXT
#define AGSA_SAS_ENABLE_SKIP_MASK
#define AGSA_SSP_TASK_MGNT_REQ_M
#define AGSA_DIF_VERIFY_REPLACE
#define AGSA_SSP_INIT_READ_EXT_M
#define AGSA_SSP_TGT_CMD_OR_TASK_RSP
#define AGSA_SAS_ENABLE_ENCRYPTION
#define OSSA_OFFSET_OF(STRUCT_TYPE, FEILD)
#define AGSA_SSP_INIT_READ_EXT
#define AGSA_SSP_INIT_READ_INDIRECT
#define AGSA_SSP_TASK_MGNT
#define DIF_FLAG_BITS_BLOCKSIZE_SHIFT
#define AGSA_SSP_INDIRECT_BIT
void(* ossaGenericAbortCB_t)(agsaRoot_t *agRoot, agsaIORequest_t *agIORequest, bit32 flag, bit32 status)
Callback definition for abort SMP SSP SATA callback.
#define AGSA_SSP_TGT_BITS_AGR
#define AGSA_SSP_INIT_WRITE_INDIRECT
#define AGSA_SKIP_MASK_BIT
#define DIF_FLAG_BITS_CRC_INV
#define AGSA_SSP_INIT_WRITE
#define AGSA_SSP_INIT_READ_M
void(* ossaSSPCompletedCB_t)(agsaRoot_t *agRoot, agsaIORequest_t *agIORequest, bit32 agIOStatus, bit32 agIOInfoLen, void *agParam, bit16 sspTag, bit32 agOtherInfo)
Callback definition for.
#define DIF_FLAG_BITS_BLOCKSIZE_MASK
#define AGSA_SAS_SKIP_MASK_OFFSET
#define AGSA_MAX_INBOUND_Q
#define AGSA_SSP_TGT_BITS_ODS
#define AGSA_ENCRYPT_KEY_TAG_BIT
#define agsaEncryptCipherModeXTS
#define DIF_FLAG_BITS_CRC_SEED
#define AGSA_SSP_INIT_READ
#define SSP_OPTION_AUTO_GOOD_RESPONSE
#define AGSA_SSP_TGT_BITS_DEE_DIF
#define AGSA_SSP_TGT_WRITE_DATA
#define DIF_FLAG_BITS_CRC_VER
#define DIF_FLAG_BITS_UDTR_REF_BLKCOUNT
#define DIF_FLAG_BITS_UDTV_SHIFT
#define AGSA_SSP_TGT_READ_DATA
#define AGSA_SAS_ENABLE_DIF
#define AGSA_SSP_TGT_WRITE_GOOD_RESP
#define AGSA_ENCRYPT_XTS_Mode
#define DIF_FLAG_BITS_CUST_APP_TAG
#define DIF_FLAG_BITS_UDTUPMASK
#define DIF_FLAG_BITS_UDTUPSHIFT
#define AGSA_SSP_INIT_NONDATA
#define AGSA_SSP_INIT_READ_INDIRECT_M
#define AGSA_DIF_REPLACE_UDT_REPLACE_CRC
#define AGSA_SSP_TGT_READ_GOOD_RESP
#define AGSA_SSP_TASK_MGNT_REQ
#define AGSA_MAX_SSPPAYLOAD_VIA_SFO
#define AGSA_SSP_INIT_WRITE_INDIRECT_M
struct agsaSSPCmdInfoUnit_s agsaSSPCmdInfoUnit_t
data structure describes an SSP Command INFORMATION UNIT
#define LL_IOREQ_LOCKEQ_LOCK
#define ABORT_TSDK_QUARANTINE
#define LL_IOREQ_IBQ0_LOCK
#define ABORT_QUARANTINE_SPCV
This file defines global types.
#define saLlistGetNext(pList, pLink)
saLlistGetNext macro
#define saLlistIOAdd(pList, pLink)
#define saLlistIORemove(pList, pLink)
#define saLlistIOGetHead(pList)
#define saLlistIOGetCount(pList)
#define saLlistIOInitialize(pList)
#define DBG_DUMP_SSPSTART_CMDIU(agDevHandle, agRequestType, agRequestBody)
#define OPC_INB_SSP_ABORT
#define OPC_INB_SSPTGTIOSTART
#define OPC_INB_SSPTGTRSPSTART
#define OPC_INB_SSPINIEXTIOSTART
#define OPC_INB_SSPINIIOSTART
#define OPC_INB_SSPINITMSTART
#define OPC_INB_SSP_DIF_ENC_OPSTART
GLOBAL FORCEINLINE void ossaSingleThreadedEnter(agsaRoot_t *agRoot, bit32 syncLockId)
ossaSingleThreadedEnter
GLOBAL FORCEINLINE void ossaSingleThreadedLeave(agsaRoot_t *agRoot, bit32 syncLockId)
ossaSingleThreadedLeave
#define OSSA_INP_ENTER(root)
#define OSSA_INP_LEAVE(root)
GLOBAL void siCountActiveIORequestsOnDevice(agsaRoot_t *agRoot, bit32 device)
siCountActiveIORequestsOnDevice count all active IO's
GLOBAL FORCEINLINE void * si_memcpy(void *dst, void *src, bit32 count)
memcopy
GLOBAL bit32 smIS_SPC(agsaRoot_t *agRoot)
GLOBAL FORCEINLINE void * si_memset(void *s, int c, bit32 n)
memset
GLOBAL bit32 smIS_SPCV(agsaRoot_t *agRoot)
GLOBAL void siDumpActiveIORequests(agsaRoot_t *agRoot, bit32 count)
siDumpActiveIORequests
GLOBAL bit32 saSSPAbort(agsaRoot_t *agRoot, agsaIORequest_t *agIORequest, bit32 queueNum, agsaDevHandle_t *agDevHandle, bit32 flag, void *abortParam, ossaGenericAbortCB_t agCB)
Abort SSP request.
GLOBAL bit32 saSSPStart(agsaRoot_t *agRoot, agsaIORequest_t *agIORequest, bit32 queueNum, agsaDevHandle_t *agDevHandle, bit32 agRequestType, agsaSASRequestBody_t *agRequestBody, agsaIORequest_t *agTMRequest, ossaSSPCompletedCB_t agCB)
Start SSP request.
data structure stores OS specific and LL specific context
bit8 efb_tp_taskAttribute
data structure describes a SAS SSP command request Ext to be sent to the target device
agsaSSPCmdInfoUnitExt_t sspCmdIUExt
Circular Queue descriptor.
union data structure specifies a request
agsaSSPTargetResponse_t sspTargetResponse
agsaSSPInitiatorRequest_t sspInitiatorReq
agsaSSPInitiatorRequestExt_t sspInitiatorReqExt
agsaSSPInitiatorRequestIndirect_t sspInitiatorReqIndirect
agsaSSPTargetRequest_t sspTargetReq
agsaSSPScsiTaskMgntReq_t sspTaskMgntReq