FreeBSD kernel pms device code
sasata.c File Reference

The file implements the functions to SATA IO. More...

#include <sys/cdefs.h>
#include <dev/pms/config.h>
#include <dev/pms/RefTisa/sallsdk/spc/saglobal.h>
Include dependency graph for sasata.c:

Go to the source code of this file.

Functions

 __FBSDID ("$FreeBSD$")
 
GLOBAL bit32 saSATAStart (agsaRoot_t *agRoot, agsaIORequest_t *agIORequest, bit32 queueNum, agsaDevHandle_t *agDevHandle, bit32 agRequestType, agsaSATAInitiatorRequest_t *agSATAReq, bit8 agTag, ossaSATACompletedCB_t agCB)
 Start SATA command. More...
 
GLOBAL bit32 saSATAAbort (agsaRoot_t *agRoot, agsaIORequest_t *agIORequest, bit32 queueNum, agsaDevHandle_t *agDevHandle, bit32 flag, void *abortParam, ossaGenericAbortCB_t agCB)
 Abort SATA command. More...
 
GLOBAL void siEventSATAResponseWtDataRcvd (agsaRoot_t *agRoot, agsaIORequestDesc_t *pRequest, bit32 *agFirstDword, bit32 *pResp, bit32 lengthResp)
 Routine to handle for received SATA with data payload event. More...
 
GLOBAL void siSATASignatureCpy (bit8 *pDstSignature, bit8 *pSrcSignature)
 copy a SATA signature to another More...
 

Detailed Description

The file implements the functions to SATA IO.

Definition in file sasata.c.

Function Documentation

◆ __FBSDID()

__FBSDID ( "$FreeBSD$"  )

◆ saSATAAbort()

GLOBAL bit32 saSATAAbort ( agsaRoot_t agRoot,
agsaIORequest_t agIORequest,
bit32  queueNum,
agsaDevHandle_t agDevHandle,
bit32  flag,
void *  abortParam,
ossaGenericAbortCB_t  agCB 
)

Abort SATA command.

Abort SATA command

Parameters
agRoothandles for this instance of SAS/SATA hardware
queueNuminbound/outbound queue number
agIORequestthe IO Request descriptor
agIOtoBeAborted
Returns
If command is aborted successfully
  • AGSA_RC_SUCCESS command is aborted successfully
  • AGSA_RC_FAILURE command is not aborted successfully

Definition at line 592 of file sasata.c.

References ABORT_ALL, ABORT_MASK, ABORT_QUARANTINE_SPCV, ABORT_SCOPE, ABORT_SINGLE, ABORT_TSDK_QUARANTINE, agFALSE, agNULL, AGSA_MAX_INBOUND_Q, AGSA_RC_BUSY, AGSA_RC_FAILURE, AGSA_RC_SUCCESS, AGSA_SATA_REQTYPE, agTRUE, agsaIORequestDesc_s::completionCB, agsaSATAAbortCmd_s::deviceId, agsaDeviceDesc_s::DeviceMapIndex, agsaLLRoot_s::freeIORequests, hpDBG_VERY_LOUD, agsaIORequestDesc_s::HTag, agsaSATAAbortCmd_s::HTagAbort, agsaLLRoot_s::inboundQueue, agsaLLRoot_s::IOMap, IOMB_SIZE64, agsaIOMap_s::IORequest, agsaIORequestDesc_s::linkNode, LL_IOREQ_IBQ0_LOCK, LL_IOREQ_LOCKEQ_LOCK, MPI_CATEGORY_SAS_SATA, MPI_IB_NUM_MASK, MPI_OB_NUM_MASK, MPI_OB_SHIFT, mpiMsgFreeGet(), mpiMsgProduce(), NULL, OPC_INB_SATA_ABORT, OSSA_OFFSET_OF, ossaSingleThreadedEnter(), ossaSingleThreadedLeave(), agsaIORequestDesc_s::pDevice, agsaDeviceDesc_s::pendingIORequests, agsaIORequestDesc_s::pIORequestContext, agsaDeviceDesc_s::pPort, agsaIORequestDesc_s::pPort, mpiICQueue_s::priority, agsaIORequestDesc_s::requestType, SA_ASSERT, SA_DBG1, SA_DBG3, saLlistIOAdd, saLlistIOGetHead, saLlistIORemove, agsaContext_s::sdkData, siCountActiveIORequestsOnDevice(), smIS_SPCV(), smTraceFuncEnter, smTraceFuncExit, agsaIORequestDesc_s::startTick, agsaSATAAbortCmd_s::tag, agsaIOMap_s::Tag, agsaLLRoot_s::timeTick, and agsaIORequestDesc_s::valid.

Referenced by smIOAbort(), smIOAbortAll(), smsatAbort(), smsatReadLogExtCB(), and tdsaAbortAll().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ saSATAStart()

GLOBAL bit32 saSATAStart ( agsaRoot_t agRoot,
agsaIORequest_t agIORequest,
bit32  queueNum,
agsaDevHandle_t agDevHandle,
bit32  agRequestType,
agsaSATAInitiatorRequest_t agSATAReq,
bit8  agTag,
ossaSATACompletedCB_t  agCB 
)

Start SATA command.

Start SATA command

Parameters
agRoothandles for this instance of SAS/SATA hardware
queueNum
agIORequest
agDevHandle
agRequestType
agSATAReq
agTag
agCB
Returns
If command is started successfully
  • AGSA_RC_SUCCESS command is started successfully
  • AGSA_RC_FAILURE command is not started successfully

Definition at line 59 of file sasata.c.

References agFALSE, agNULL, AGSA_DIF_BIT, AGSA_DIR_MASK, AGSA_ENCRYPT_BIT, AGSA_ENCRYPT_KEY_TAG_BIT, AGSA_ENCRYPT_XTS_Mode, AGSA_MAX_INBOUND_Q, AGSA_MSG, AGSA_MSG_BIT, AGSA_RC_BUSY, AGSA_RC_FAILURE, AGSA_RC_SUCCESS, AGSA_SATA_ATAP_MASK, AGSA_SATA_ATAP_PKT_DEVRESET, AGSA_SATA_ATAP_SRST_ASSERT, AGSA_SATA_ATAP_SRST_DEASSERT, AGSA_SATA_ENABLE_DIF, AGSA_SATA_ENABLE_ENCRYPTION, AGSA_SATA_PROTOCOL_D2H_PKT, AGSA_SATA_PROTOCOL_DEV_RESET, AGSA_SATA_PROTOCOL_DEV_RESET_M, AGSA_SATA_PROTOCOL_DMA_READ, AGSA_SATA_PROTOCOL_DMA_READ_M, AGSA_SATA_PROTOCOL_DMA_WRITE, AGSA_SATA_PROTOCOL_DMA_WRITE_M, AGSA_SATA_PROTOCOL_FPDMA_READ, AGSA_SATA_PROTOCOL_FPDMA_READ_M, AGSA_SATA_PROTOCOL_FPDMA_WRITE, AGSA_SATA_PROTOCOL_FPDMA_WRITE_M, AGSA_SATA_PROTOCOL_H2D_PKT, AGSA_SATA_PROTOCOL_NON_DATA, AGSA_SATA_PROTOCOL_NON_DATA_M, AGSA_SATA_PROTOCOL_NON_PKT, AGSA_SATA_PROTOCOL_PIO_READ, AGSA_SATA_PROTOCOL_PIO_READ_M, AGSA_SATA_PROTOCOL_PIO_WRITE, AGSA_SATA_PROTOCOL_PIO_WRITE_M, AGSA_SATA_PROTOCOL_SRST_ASSERT, AGSA_SATA_PROTOCOL_SRST_DEASSERT, agsaEncryptCipherModeXTS, agsaSATAInitiatorRequest_s::agSgl, agTRUE, agsaEncrypt_s::cipherMode, agsaIORequestDesc_s::completionCB, agsaSATAInitiatorRequest_s::dataLength, agsaEncryptDek_s::dekIndex, agsaEncrypt_s::dekInfo, agsaEncryptDek_s::dekTable, agsaDeviceDesc_s::DeviceMapIndex, agsaEncrypt_s::enableEncryptionPerLA, agsaSATAInitiatorRequest_s::encrypt, agsaEncrypt_s::EncryptionPerLAAddrHi, agsaEncrypt_s::EncryptionPerLAAddrLo, agsaEncrypt_s::EncryptionPerLRegion0SecCount, agsaSgl_s::extReserved, agsaSATAInitiatorRequest_s::fis, agsaSATAHostFis_u::fisRegHostToDev, agsaLLRoot_s::freeIORequests, hpDBG_VERY_LOUD, agsaIORequestDesc_s::HTag, agsaLLRoot_s::inboundQueue, agsaLLRoot_s::IOMap, IOMB_SIZE128, IOMB_SIZE64, agsaIOMap_s::IORequest, agsaEncrypt_s::kekIndex, agsaEncrypt_s::keyTag_W0, agsaEncrypt_s::keyTag_W1, agsaEncrypt_s::keyTagCheck, agsaSgl_s::len, agsaIORequestDesc_s::linkNode, LL_IOREQ_IBQ0_LOCK, LL_IOREQ_LOCKEQ_LOCK, MPI_CATEGORY_SAS_SATA, MPI_IB_NUM_MASK, MPI_OB_NUM_MASK, MPI_OB_SHIFT, mpiMsgFreeGet(), mpiMsgProduce(), OPC_INB_SATA_DIF_ENC_OPSTART, OPC_INB_SATA_HOST_OPSTART, agsaSATAInitiatorRequest_s::option, OSSA_INP_ENTER, OSSA_INP_LEAVE, OSSA_OFFSET_OF, ossaSingleThreadedEnter(), ossaSingleThreadedLeave(), agsaIORequestDesc_s::pDevice, agsaDeviceDesc_s::pendingIORequests, agsaIORequestDesc_s::pIORequestContext, agsaDeviceDesc_s::pPort, agsaIORequestDesc_s::pPort, mpiICQueue_s::priority, agsaIORequestDesc_s::requestType, SA_ASSERT, SA_DBG1, SA_DBG3, SA_DBG4, saLlistIOAdd, saLlistIOGetHead, saLlistIORemove, SATA_FIS_MASK, agsaSATAInitiatorRequest_s::scsiCDB, agsaContext_s::sdkData, agsaEncrypt_s::sectorSizeIndex, agsaSgl_s::sgLower, agsaSgl_s::sgUpper, SHIFT16, SHIFT2, SHIFT24, SHIFT4, SHIFT5, SHIFT8, si_memcpy(), si_memset(), smTraceFuncEnter, smTraceFuncExit, agsaIORequestDesc_s::startTick, agsaIOMap_s::Tag, agsaLLRoot_s::timeTick, agsaEncrypt_s::tweakVal_W0, agsaEncrypt_s::tweakVal_W1, agsaEncrypt_s::tweakVal_W2, agsaEncrypt_s::tweakVal_W3, and agsaIORequestDesc_s::valid.

Referenced by smsataLLIOStart().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ siEventSATAResponseWtDataRcvd()

GLOBAL void siEventSATAResponseWtDataRcvd ( agsaRoot_t agRoot,
agsaIORequestDesc_t pRequest,
bit32 agFirstDword,
bit32 pResp,
bit32  lengthResp 
)

Routine to handle for received SATA with data payload event.

The handle for received SATA with data payload event

Parameters
agRoothandles for this instance of SAS/SATA hardware
pRequestthe IO request descriptor
agFirstDwordpointer to the first Dword
pResppointer to the rest of SATA response
lengthResptotal length of SATA Response frame
Returns
-void-

Definition at line 859 of file sasata.c.

References agFALSE, agTRUE, agsaIORequestDesc_s::completionCB, agsaLLRoot_s::freeIORequests, hpDBG_VERY_LOUD, agsaIORequestDesc_s::linkNode, LL_IOREQ_LOCKEQ_LOCK, OSSA_IO_SUCCESS, ossaSingleThreadedEnter(), ossaSingleThreadedLeave(), agsaIORequestDesc_s::pDevice, agsaDeviceDesc_s::pendingIORequests, agsaIORequestDesc_s::pIORequestContext, saLlistIOAdd, saLlistIORemove, agsaContext_s::sdkData, smTraceFuncEnter, smTraceFuncExit, and agsaIORequestDesc_s::valid.

Referenced by mpiSATACompletion().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ siSATASignatureCpy()

GLOBAL void siSATASignatureCpy ( bit8 pDstSignature,
bit8 pSrcSignature 
)

copy a SATA signature to another

copy a SATA signature to another

Parameters
pDstSignaturepointer to the destination signature
pSrcSignaturepointer to the source signature
Returns
If they match
  • agTRUE match
  • agFALSE doesn't match

Definition at line 920 of file sasata.c.