45bit32 gDMDebugLevel = 1;
56 bit32 memoryReqCount = 0;
62 char *pLastUsedChar =
agNULL;
63 char globalStr[] =
"Global";
64 char iniParmsStr[] =
"InitiatorParms";
65 char SwParmsStr[] =
"SWParms";
67 DM_DBG3((
"dmGetRequirements: start\n"));
107 buffLen =
sizeof(tmpBuffer);
128 max_expander =
osti_strtoul (buffer, &pLastUsedChar, 0);
132 max_expander =
osti_strtoul (buffer, &pLastUsedChar, 10);
135 DM_DBG3((
"dmGetRequirements: max_expander %d\n", max_expander));
166 memoryRequirement->
count = memoryReqCount;
208 DM_DBG3((
"dmGetRequirements: memoryReqCount %d\n", memoryRequirement->
count));
228 bit8 *dmIndirectSMPRequest;
236 char *pLastUsedChar =
agNULL;
237 char globalStr[] =
"Global";
238 char iniParmsStr[] =
"InitiatorParms";
239 char SwParmsStr[] =
"SWParms";
241 DM_DBG3((
"dmInitialize: start\n"));
247 DM_ASSERT((DM_ROOT_MEM_INDEX < memoryAllocated->count),
"");
248 DM_ASSERT((DM_PORT_MEM_INDEX < memoryAllocated->count),
"");
249 DM_ASSERT((DM_DEVICE_MEM_INDEX < memoryAllocated->count),
"");
250 DM_ASSERT((DM_EXPANDER_MEM_INDEX < memoryAllocated->count),
"");
251 DM_ASSERT((DM_SMP_MEM_INDEX < memoryAllocated->count),
"");
252 DM_ASSERT((DM_INDIRECT_SMP_MEM_INDEX < memoryAllocated->count),
"");
255 for ( i = 0; i < memoryAllocated->
count; i ++ )
265 DM_DBG1((
"dmInitialize: Memory[%d] singleElementLength = 0x%0x numElements = 0x%x NOT allocated!!!\n",
276 dmRoot->
dmData = (
void *) dmIntRoot;
305 dmAllShared->
agRoot = agRoot;
323 buffLen =
sizeof(tmpBuffer);
344 max_expander =
osti_strtoul (buffer, &pLastUsedChar, 0);
348 max_expander =
osti_strtoul (buffer, &pLastUsedChar, 10);
443 gDMDebugLevel = swConfig->DMDebugLevel;
457 bit32 prev_PhysAddrLower;
460 DM_DBG3((
"dmSMPInit: start \n"));
472 dmSMPCommand[i].
id = i;
473 dm_memset( &(dmSMPCommand[i].smpPayload), 0,
sizeof(dmSMPCommand[i].smpPayload));
503 DM_DBG3((
"dmDeviceDataInit: start \n"));
513 dmDeviceData[i].
id = i;
521 dmDeviceData[i].
phyID = 0xFF;
542 dmDeviceData[i].
MCN = 0;
559 DM_DBG3((
"dmDeviceDataReInit: start \n"));
567 oneDeviceData->
phyID = 0xFF;
588 oneDeviceData->
MCN = 0;
608 DM_DBG3((
"dmExpanderDeviceDataInit: start \n"));
613 for(i=0;i<max_exp;i++)
631 DM_DBG3((
"dmExpanderDeviceDataInit: exp id %d\n", i));
635 dm_memset( &(dmExpData[i].currentIndex), 0,
sizeof(dmExpData[i].currentIndex));
636 dm_memset( &(dmExpData[i].upStreamPhys), 0,
sizeof(dmExpData[i].upStreamPhys));
637 dm_memset( &(dmExpData[i].downStreamPhys), 0,
sizeof(dmExpData[i].downStreamPhys));
638 dm_memset( &(dmExpData[i].routingAttribute), 0,
sizeof(dmExpData[i].routingAttribute));
640 dm_memset( &(dmExpData[i].configSASAddressHiTable), 0,
sizeof(dmExpData[i].configSASAddressHiTable));
641 dm_memset( &(dmExpData[i].configSASAddressLoTable), 0,
sizeof(dmExpData[i].configSASAddressLoTable));
642 dmExpData[i].
SAS2 = 0;
659 DM_DBG3((
"dmExpanderDeviceDataReInit: start \n"));
681 oneExpander->
SAS2 = 0;
701 DM_DBG3((
"dmPortContextInit: start \n"));
710 DMLIST_INIT_HDR(&(dmPortContext[i].discovery.discoveringExpanderList));
711 DMLIST_INIT_HDR(&(dmPortContext[i].discovery.UpdiscoveringExpanderList));
730#ifdef INITIATOR_DRIVER
738 dmPortContext[i].
id = i;
740 dmPortContext[i].agPortContext =
agNULL;
743 dmPortContext[i].
Count = 0;
750 dmPortContext[i].PhyIDList[j] =
agFALSE;
761#ifdef DM_INTERNAL_DEBUG
764 DM_DBG6((
"dmPortContextInit: index %d &tdsaPortContext[] %p\n", i, &(dmPortContext[i])));
780 DM_DBG3((
"dmPortContextReInit: start \n"));
782 discovery = &(onePortContext->
discovery);
900 onePortContext->
Count = 0;
918#ifdef DM_DEBUG_ENABLE
921 DM_DBG6((
"dmInitTimers: start \n"));
922 DM_DBG6((
"dmInitTimers: ******* tdsaRoot %p \n", dmIntRoot));
923 DM_DBG6((
"dmInitTimers: ******* tdsaPortContext %p \n",dmPortContext));
#define DM_DISCOVERY_OPTION_FULL_START
osGLOBAL bit32 dmInitialize(dmRoot_t *dmRoot, agsaRoot_t *agRoot, dmMemoryRequirement_t *memoryAllocated, dmSwConfig_t *swConfig, bit32 usecsPerTick)
osGLOBAL void dmGetRequirements(dmRoot_t *dmRoot, dmSwConfig_t *swConfig, dmMemoryRequirement_t *memoryRequirement, bit32 *usecsPerTick, bit32 *maxNumLocks)
#define DM_EXPANDER_MEM_INDEX
#define DM_USECS_PER_TICK
#define DM_DEVICE_MEM_INDEX
#define DM_INDIRECT_SMP_MEM_INDEX
#define DM_DSTATE_NOT_STARTED
#define DM_ROOT_MEM_INDEX
#define DM_MAX_PORT_CONTEXT
#define DM_MAX_INDIRECT_SMP
#define DM_DEFAULT_DEVICE
#define DM_PORT_MEM_INDEX
#define DM_MAX_EXPANDER_DEV
#define DEFAULT_KEY_BUFFER_SIZE
#define DISCOVERY_RETRIES
#define SMP_INDIRECT_PAYLOAD
#define DMLIST_INIT_HDR(hdr)
#define DMLIST_INIT_ELEMENT(hdr)
#define DMLIST_ENQUEUE_AT_TAIL(toAddHdr, listHdr)
osGLOBAL void dmKillTimer(dmRoot_t *dmRoot, dmTimerRequest_t *timerRequest)
osGLOBAL void dmInitTimerRequest(dmRoot_t *dmRoot, dmTimerRequest_t *timerRequest)
osGLOBAL void dmPortContextReInit(dmRoot_t *dmRoot, dmIntPortContext_t *onePortContext)
osGLOBAL void dmDeviceDataReInit(dmRoot_t *dmRoot, dmDeviceData_t *oneDeviceData)
osGLOBAL void * dm_memset(void *s, int c, bit32 n)
osGLOBAL void dmSMPInit(dmRoot_t *dmRoot)
osGLOBAL void dmInitTimers(dmRoot_t *dmRoot)
osGLOBAL void dmCleanAllExp(dmRoot_t *dmRoot, dmIntPortContext_t *onePortContext)
osGLOBAL void dmPortContextInit(dmRoot_t *dmRoot)
osGLOBAL void dmExpanderDeviceDataInit(dmRoot_t *dmRoot, bit32 max_exp)
osGLOBAL void dmExpanderDeviceDataReInit(dmRoot_t *dmRoot, dmExpander_t *oneExpander)
osGLOBAL void dmDeviceDataInit(dmRoot_t *dmRoot)
struct dmIntPortContext_s dmIntPortContext_t
struct dmDeviceData_s dmDeviceData_t
struct dmSMPRequestBody_s dmSMPRequestBody_t
struct dmExpander_s dmExpander_t
struct dmIntRoot_s dmIntRoot_t
#define osti_strncmp(s1, s2, n)
#define osti_strtoul(nptr, endptr, base)
The file defines the constants, data structure, and functions defined by LL API.
The file defines the declaration of tSDK APIs.
The file defines the declaration of OS APIs.
data structure stores OS specific and LL specific context
agsaContext_t agDeviceResetContext
dmDeviceInfo_t dmDeviceInfo
struct dmExpander_s * dmExpander
struct dmDeviceData_s * ExpDevice
bit8 initiator_ssp_stp_smp
DMSASAddressID_t SASAddressID
struct dmIntPortContext_s * dmPortContext
dmTimerRequest_t discoveryTimer
bit32 configureRouteRetries
dmTimerRequest_t DiscoverySMPTimer
dmTimerRequest_t configureRouteTimer
dmTimerRequest_t deviceRegistrationTimer
bit32 deviceRetistrationRetries
dmTimerRequest_t SMPBusyTimer
bit32 configSASAddressLoTable[DM_MAX_DEV]
struct dmExpander_s * dmUpStreamExpander
struct dmExpander_s * dmCurrentDownStreamExpander
bit16 numOfDownStreamPhys
bit32 configSASAddressHiTable[DM_MAX_DEV]
bit8 routingAttribute[DM_MAX_EXPANDER_PHYS]
bit32 UndoDueToTTTSupported
dmDeviceData_t * dmDevice
agsaDevHandle_t * agDevHandle
bit8 downStreamPhys[DM_MAX_EXPANDER_PHYS]
bit8 currentDownStreamPhyIndex
bit32 configSASAddrTableIndex
bit16 currentUpStreamPhyIndex
bit16 currentIndex[DM_MAX_EXPANDER_PHYS]
struct dmExpander_s * dmReturnginExpander
bit8 upStreamPhys[DM_MAX_EXPANDER_PHYS]
struct dmRootOsData_s dmRootOsData
dmExpander_t * ExpanderMem
dmList_t freeExpanderList
dmList_t FreePortContextList
dmList_t MainPortContextList
dmDeviceData_t * DeviceMem
dmList_t mainExpanderList
dmSMPRequestBody_t * SMPMem
dmIntPortContext_t * PortContextMem
bit32 DiscoveryAbortInProgress
dmPortContext_t * dmPortContext
dmIntContext_t dmAllShared
bit32 singleElementLength
dmMem_t dmMemory[DM_NUM_MEM_CHUNKS]
dmDeviceData_t * dmDevice
void * IndirectSMPResponse
dmIntPortContext_t * dmPortContext
osGLOBAL void tddmSingleThreadedLeave(dmRoot_t *dmRoot, bit32 syncLockId)
osGLOBAL bit32 tddmGetTransportParam(dmRoot_t *dmRoot, char *key, char *subkey1, char *subkey2, char *subkey3, char *subkey4, char *subkey5, char *valueName, char *buffer, bit32 bufferLen, bit32 *lenReceived)
osGLOBAL void tddmSingleThreadedEnter(dmRoot_t *dmRoot, bit32 syncLockId)