FreeBSD kernel pms device code
sassp.c File Reference

The file implements the functions for SSP request/response. More...

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

Go to the source code of this file.

Functions

 __FBSDID ("$FreeBSD$")
 
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. More...
 
GLOBAL bit32 saSSPAbort (agsaRoot_t *agRoot, agsaIORequest_t *agIORequest, bit32 queueNum, agsaDevHandle_t *agDevHandle, bit32 flag, void *abortParam, ossaGenericAbortCB_t agCB)
 Abort SSP request. More...
 

Detailed Description

The file implements the functions for SSP request/response.

Definition in file sassp.c.

Function Documentation

◆ __FBSDID()

__FBSDID ( "$FreeBSD$"  )

◆ saSSPAbort()

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

Abort SSP request.

Abort SSP request

Parameters
agRoothandles for this instance of SAS/SATA LLL
queueNum
agIORequest
agIOToBeAborted
Returns
If request is aborted successfully
  • AGSA_RC_SUCCESS request is aborted successfully
  • AGSA_RC_FAILURE request is not aborted successfully

Definition at line 1678 of file sassp.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_SSP_REQTYPE, agTRUE, agsaIORequestDesc_s::completionCB, agsaSSPAbortCmd_s::deviceId, agsaDeviceDesc_s::DeviceMapIndex, agsaLLRoot_s::freeIORequests, agsaLLRoot_s::freeReservedRequests, hpDBG_VERY_LOUD, agsaIORequestDesc_s::HTag, agsaSSPAbortCmd_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_SSP_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_DBG2, SA_RESERVED_REQUEST_COUNT, saLlistIOAdd, saLlistIOGetCount, saLlistIOGetHead, saLlistIORemove, agsaContext_s::sdkData, siCountActiveIORequestsOnDevice(), smIS_SPCV(), smTraceFuncEnter, smTraceFuncExit, agsaIORequestDesc_s::startTick, agsaSSPAbortCmd_s::tag, agsaIOMap_s::Tag, agsaLLRoot_s::timeTick, and agsaIORequestDesc_s::valid.

Referenced by itdssTaskCompleted(), tdsaAbortAll(), tiTGTIOAbort(), and ttdsaTMProcess().

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

◆ saSSPStart()

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.

Start SSP request

Parameters
agRoothandles for this instance of SAS/SATA LLL
queueNum
agIORequest
agDevHandle
agRequestType
agRequestBody
agTMRequestvalid for task management
agCB
Returns
If request is started successfully
  • AGSA_RC_SUCCESS request is started successfully
  • AGSA_RC_BUSY request is not started successfully

Definition at line 580 of file sassp.c.

References agsaSSPCmdInfoUnitExt_s::additionalCdbLen, agsaSSPIniIOStartCmd_s::AddrHi0, agsaSSPIniEncryptIOStartCmd_s::AddrHi0, agsaSSPTgtIOStartCmd_s::AddrHi0, agsaSSPIniIOStartCmd_s::AddrLow0, agsaSSPIniEncryptIOStartCmd_s::AddrLow0, agsaSSPTgtIOStartCmd_s::AddrLow0, agFALSE, agNULL, AGSA_AUTO_MASK, AGSA_DIF_BIT, AGSA_DIF_INSERT, AGSA_DIF_REPLACE_UDT_REPLACE_CRC, AGSA_DIF_VERIFY_REPLACE, AGSA_DIR_MASK, AGSA_ENCRYPT_BIT, AGSA_ENCRYPT_KEY_TAG_BIT, AGSA_ENCRYPT_XTS_Mode, AGSA_MAX_INBOUND_Q, AGSA_MAX_SSPPAYLOAD_VIA_SFO, AGSA_MSG, AGSA_MSG_BIT, AGSA_RC_BUSY, AGSA_RC_FAILURE, AGSA_RC_SUCCESS, AGSA_SAS_ENABLE_DIF, AGSA_SAS_ENABLE_ENCRYPTION, AGSA_SAS_ENABLE_SKIP_MASK, AGSA_SAS_SKIP_MASK_OFFSET, AGSA_SKIP_MASK_BIT, AGSA_SSP_EXT_BIT, AGSA_SSP_INDIRECT_BIT, AGSA_SSP_INIT_NONDATA, AGSA_SSP_INIT_READ, AGSA_SSP_INIT_READ_EXT, AGSA_SSP_INIT_READ_EXT_M, AGSA_SSP_INIT_READ_INDIRECT, AGSA_SSP_INIT_READ_INDIRECT_M, AGSA_SSP_INIT_READ_M, AGSA_SSP_INIT_WRITE, AGSA_SSP_INIT_WRITE_EXT, AGSA_SSP_INIT_WRITE_EXT_M, AGSA_SSP_INIT_WRITE_INDIRECT, AGSA_SSP_INIT_WRITE_INDIRECT_M, AGSA_SSP_INIT_WRITE_M, AGSA_SSP_REQTYPE, AGSA_SSP_TASK_MGNT, AGSA_SSP_TASK_MGNT_REQ, AGSA_SSP_TASK_MGNT_REQ_M, AGSA_SSP_TGT_BITS_AGR, AGSA_SSP_TGT_BITS_DEE_DIF, AGSA_SSP_TGT_BITS_ODS, AGSA_SSP_TGT_CMD_OR_TASK_RSP, AGSA_SSP_TGT_READ_DATA, AGSA_SSP_TGT_READ_GOOD_RESP, AGSA_SSP_TGT_WRITE_DATA, AGSA_SSP_TGT_WRITE_GOOD_RESP, agsaEncryptCipherModeXTS, agsaSSPInitiatorRequest_s::agSgl, agsaSSPInitiatorRequestExt_s::agSgl, agsaSSPTargetRequest_s::agSgl, agsaSSPTargetRequest_s::agTag, agsaSSPTargetResponse_s::agTag, agTRUE, agsaEncrypt_s::cipherMode, agsaIORequestDesc_s::completionCB, agsaSSPIniExtIOStartCmd_s::dataLen, agsaSSPInitiatorRequest_s::dataLength, agsaSSPInitiatorRequestExt_s::dataLength, agsaSSPTargetRequest_s::dataLength, DBG_DUMP_SSPSTART_CMDIU, agsaEncryptDek_s::dekIndex, agsaEncrypt_s::dekInfo, agsaEncryptDek_s::dekTable, agsaSSPIniTMStartCmd_s::deviceId, agsaDeviceDesc_s::DeviceMapIndex, agsaSSPInitiatorRequest_s::dif, agsaSSPTargetRequest_s::dif, DIF_FLAG_BITS_ACTION, DIF_FLAG_BITS_BLOCKSIZE_MASK, DIF_FLAG_BITS_BLOCKSIZE_SHIFT, DIF_FLAG_BITS_CRC_INV, DIF_FLAG_BITS_CRC_SEED, DIF_FLAG_BITS_CRC_VER, DIF_FLAG_BITS_CUST_APP_TAG, DIF_FLAG_BITS_UDTR_REF_BLKCOUNT, DIF_FLAG_BITS_UDTUPMASK, DIF_FLAG_BITS_UDTUPSHIFT, DIF_FLAG_BITS_UDTV_SHIFT, DIF_FLAG_BITS_UDTVMASK, agsaDif_s::DIFPerLAAddrHi, agsaDif_s::DIFPerLAAddrLo, agsaDif_s::DIFPerLARegion0SecCount, agsaSSPIniIOStartCmd_s::dirMTlr, agsaSSPIniIOStartCmd_s::E0, agsaSSPIniEncryptIOStartCmd_s::E0, agsaSSPTgtIOStartCmd_s::E0, agsaDif_s::enableDIFPerLA, agsaEncrypt_s::enableEncryptionPerLA, agsaSSPInitiatorRequest_s::encrypt, agsaEncrypt_s::EncryptionPerLAAddrHi, agsaEncrypt_s::EncryptionPerLAAddrLo, agsaEncrypt_s::EncryptionPerLRegion0SecCount, agsaSgl_s::extReserved, agsaSSPInitiatorRequest_s::flag, agsaSSPInitiatorRequestExt_s::flag, agsaDif_s::flags, agsaSSPTargetResponse_s::frameBuf, agsaLLRoot_s::freeIORequests, hpDBG_VERY_LOUD, agsaIORequestDesc_s::HTag, agsaLLRoot_s::inboundQueue, agsaDif_s::initialIOSeed, agsaLLRoot_s::interruptVecIndexBitMap, agsaLLRoot_s::IOMap, IOMB_SIZE128, IOMB_SIZE64, IOMB_SIZE96, agsaIOMap_s::IORequest, agsaEncrypt_s::kekIndex, agsaEncrypt_s::keyTag_W0, agsaEncrypt_s::keyTag_W1, agsaEncrypt_s::keyTagCheck, agsaSgl_s::len, agsaSSPIniIOStartCmd_s::Len0, agsaSSPIniEncryptIOStartCmd_s::Len0, agsaSSPTgtIOStartCmd_s::Len0, agsaIORequestDesc_s::linkNode, LL_IOREQ_IBQ0_LOCK, LL_IOREQ_LOCKEQ_LOCK, agsaSSPScsiTaskMgntReq_s::lun, agsaSSPIniTMStartCmd_s::lun, agsaSwConfig_s::maxActiveIOs, MPI_CATEGORY_SAS_SATA, MPI_IB_NUM_MASK, MPI_OB_NUM_MASK, MPI_OB_SHIFT, mpiMsgFreeGet(), mpiMsgProduce(), agsaSSPTargetRequest_s::offset, OPC_INB_SSP_DIF_ENC_OPSTART, OPC_INB_SSPINIEXTIOSTART, OPC_INB_SSPINIIOSTART, OPC_INB_SSPINITMSTART, OPC_INB_SSPTGTIOSTART, OPC_INB_SSPTGTRSPSTART, OPC_OUB_SSP_COMP, OSSA_INP_ENTER, OSSA_INP_LEAVE, OSSA_IO_SUCCESS, OSSA_OFFSET_OF, ossaSingleThreadedEnter(), ossaSingleThreadedLeave(), agsaLLRoot_s::outboundQueue, agsaIORequestDesc_s::pDevice, agsaDeviceDesc_s::pendingIORequests, agsaIORequestDesc_s::pIORequestContext, agsaDeviceDesc_s::pPort, agsaIORequestDesc_s::pPort, mpiICQueue_s::priority, agsaSSPIniTMStartCmd_s::relatedTag, agsaIORequestDesc_s::requestType, agsaSSPTgtRspStartCmd_s::reserved, RESP_OPTION_BITS, RESP_OPTION_ODS, agsaSSPTargetResponse_s::respBufLength, agsaSSPTargetResponse_s::respBufLower, agsaSSPTargetResponse_s::respBufUpper, agsaSSPTargetResponse_s::respOption, SA_ASSERT, SA_DBG1, SA_DBG2, SA_DBG3, SA_DBG5, saLlistIOAdd, saLlistIOGetHead, saLlistIORemove, agsaContext_s::sdkData, agsaEncrypt_s::sectorSizeIndex, agsaSgl_s::sgLower, agsaSgl_s::sgUpper, SHIFT10, SHIFT12, SHIFT16, SHIFT2, SHIFT24, SHIFT3, SHIFT4, SHIFT5, SHIFT7, SHIFT8, si_memcpy(), si_memset(), siDumpActiveIORequests(), smIS_SPC(), smTraceFuncEnter, smTraceFuncExit, SSP_OPTION_AUTO_GOOD_RESPONSE, SSP_OPTION_BITS, SSP_OPTION_DIF, SSP_OPTION_ODS, agsaSSPInitiatorRequest_s::sspCmdIU, agsaSSPInitiatorRequestExt_s::sspCmdIUExt, agsaSSPIniIOStartCmd_s::SSPInfoUnit, agsaSASRequestBody_u::sspInitiatorReq, agsaSSPInitiatorRequestIndirect_s::sspInitiatorReqAddrLower32, agsaSSPInitiatorRequestIndirect_s::sspInitiatorReqAddrUpper32, agsaSASRequestBody_u::sspInitiatorReqExt, agsaSASRequestBody_u::sspInitiatorReqIndirect, agsaSSPInitiatorRequestIndirect_s::sspInitiatorReqLen, agsaSSPIniExtIOStartCmd_s::SSPIu, agsaSSPIniExtIOStartCmd_s::SSPIuLendirMTlr, agsaSSPTargetRequest_s::sspOption, agsaSASRequestBody_u::sspTargetReq, agsaSASRequestBody_u::sspTargetResponse, agsaSASRequestBody_u::sspTaskMgntReq, agsaIORequestDesc_s::startTick, status, agsaLLRoot_s::swConfig, agsaSSPIniTMStartCmd_s::tag, agsaIOMap_s::Tag, agsaSSPScsiTaskMgntReq_s::tagOfTaskToBeManaged, agsaSSPScsiTaskMgntReq_s::taskMgntFunction, agsaLLRoot_s::timeTick, TLR_MASK, agsaSSPIniTMStartCmd_s::TMfunction, agsaSSPScsiTaskMgntReq_s::tmOption, agsaEncrypt_s::tweakVal_W0, agsaEncrypt_s::tweakVal_W1, agsaEncrypt_s::tweakVal_W2, agsaEncrypt_s::tweakVal_W3, agsaDif_s::udrtArray, agsaDif_s::udtArray, and agsaIORequestDesc_s::valid.

Referenced by itdssXferOpenRetryTimeoutHandler(), ossaSSPEvent(), tiINIIOStart(), tiINISuperIOStart(), tiNumOfLunIOCTLreq(), tiTGTIOStart(), ttdsaIOCompleted(), and ttdsaSendResp().

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