67 bit32 expectedRspLen = 0;
72 DM_DBG5((
"dmSMPStart: start\n"));
82 DM_DBG1((
"dmSMPStart: invalid port or aborted discovery!!!\n"));
89 DM_DBG1((
"dmSMPStart: Wrong!!! oneExpander is NULL!!!\n"));
93 if (onePortContext !=
agNULL)
95 DM_DBG5((
"dmSMPStart: pid %d\n", onePortContext->
id));
101 DM_DBG1((
"dmSMPStart: Wrong, onePortContext is NULL!!!\n"));
109 DM_DBG1((
"dmSMPStart: no free SMP!!!\n"));
122 if (dmSMPRequestBody ==
agNULL)
124 DM_DBG1((
"dmSMPStart: dmSMPRequestBody is NULL, wrong!!!\n"));
127 DM_DBG5((
"dmSMPStart: SMP id %d\n", dmSMPRequestBody->
id));
129 dmSMPRequestBody->
dmRoot = dmRoot;
130 dmSMPRequestBody->
dmDevice = oneDeviceData;
141 agIORequest->
osData = (
void *) dmSMPRequestBody;
145 agSMPFrame = &(agSASRequestBody->
smpFrame);
148 if (oneExpander->
SAS2 == 0)
150 DM_DBG5((
"dmSMPStart: SAS 1.1\n"));
151 switch (functionCode)
163 expectedRspLen = 32 - 4;
185 DM_DBG1((
"dmSMPStart: SAS 1.1 error, undefined or unused smp function code 0x%x !!!\n", functionCode));
196 DM_DBG2((
"dmSMPStart: SAS 2\n"));
197 switch (functionCode)
220 expectedRspLen = 32 - 4;
265 DM_DBG1((
"dmSMPStart: SAS 2 error!!! undefined or unused smp function code 0x%x!!!\n", functionCode));
275 DM_DBG5((
"dmSMPStart: DIRECT smp payload\n"));
287#if defined (INITIATOR_DRIVER) && defined (TARGET_DRIVER)
296 DM_DBG5((
"dmSMPStart: INDIRECT smp payload, TBD\n"));
310 DM_DBG1((
"dmSMPStart: no free SMP!!!\n"));
325 DM_DBG5((
"dmSMPStart: SMP id %d\n", dmSMPResponseBody->
id));
328 if (dmSMPResponseBody ==
agNULL)
330 DM_DBG1((
"dmSMPStart: dmSMPResponseBody is NULL, wrong!!!\n"));
335 DM_DBG5((
"dmSMPStart: INDIRECT smp payload\n"));
363 DM_DBG5((
"dmSMPStart: DIRECT smp payload\n"));
364 agSMPFrame->
flag = 0;
376#if defined (INITIATOR_DRIVER) && defined (TARGET_DRIVER)
387 if (agDevHandle ==
agNULL)
389 DM_DBG1((
"dmSMPStart: !!! agDevHandle is NULL !!! \n"));
421 dmSMPBusyTimer(dmRoot, onePortContext, oneDeviceData, dmSMPRequestBody);
426 DM_DBG1((
"dmSMPStart: return DM_RC_BUSY!!! \n"));
442 DM_DBG1((
"dmSMPStart: return DM_RC_FAILURE!!! \n"));
479 DM_DBG5((
"dmsaSMPCompleted: start\n"));
481 if (pSMPRequestBody ==
agNULL)
483 DM_DBG1((
"dmsaSMPCompleted: pSMPRequestBody is NULL!!! \n"));
489 DM_DBG1((
"dmsaSMPCompleted: pSMPRequestBody->SMPCompletionFunc is NULL!!!\n"));
493#ifdef DM_INTERNAL_DEBUG
494 DM_DBG3((
"dmsaSMPCompleted: agIOrequest %p\n", agIORequest->
osData));
497 DM_DBG3((
"dmsaSMPCompleted: SMPRequestbody %p\n", pSMPRequestBody));
498 DM_DBG3((
"dmsaSMPCompleted: calling callback fn\n"));
534 DM_DBG3((
"dmPhyControlSend: start\n"));
549 (
bit8 *)&smpPhyControlReq,
566 DM_DBG3((
"dmReportGeneralSend: start\n"));
567 DM_DBG3((
"dmReportGeneralSend: oneDeviceData %p did %d\n", oneDeviceData, oneDeviceData->
id));
572 DM_DBG1((
"dmReportGeneralSend: agRoot is NULL!!!\n"));
609 DM_DBG3((
"dmReportGeneralRespRcvd: start\n"));
616 pdmSMPReportGeneralResp = &dmSMPReportGeneralResp;
628 discovery = &(onePortContext->
discovery);
632 DM_DBG1((
"dmReportGeneralRespRcvd: invalid port or aborted discovery!!!\n"));
644 DM_DBG2((
"dmReportGeneralRespRcvd: SAS 2 is %d\n", oneExpander->
SAS2));
645 DM_DBG3((
"dmReportGeneralRespRcvd: oneDeviceData %p did %d\n", oneDeviceData, oneDeviceData->
id));
646 DM_DBG3((
"dmReportGeneralRespRcvd: oneExpander %p did %d\n", oneExpander, oneExpander->
id));
656 DM_DBG3((
"dmReportGeneralRespRcvd: oneExpander=%p numberofPhys=0x%x RoutingIndex=0x%x\n",
658 DM_DBG3((
"dmReportGeneralRespRcvd: configRouteTable=%d configuring=%d\n",
664 if (discovery->
retries >= dmAllShared->MaxRetryDiscovery)
666 DM_DBG1((
"dmReportGeneralRespRcvd: retries are over!!!\n"));
674 DM_DBG3((
"dmReportGeneralRespRcvd: keep retrying\n"));
675 DM_DBG1((
"dmReportGeneralRespRcvd: Prep222389 RETRY at %d Maximum Retry is %d\n", discovery->
retries, dmAllShared->MaxRetryDiscovery));
689 DM_DBG1((
"dmReportGeneralRespRcvd: SMP failed; fn result 0x%x; stopping discovery !!!\n", frameHeader->
smpFunctionResult));
719 DM_DBG2((
"dmReportGeneral2RespRcvd: start\n"));
726 pdmSMPReportGeneral2Resp = &dmSMPReportGeneral2Resp;
738 discovery = &(onePortContext->
discovery);
741 DM_DBG1((
"dmReportGeneral2RespRcvd: invalid port or aborted discovery!!!\n"));
757 DM_DBG2((
"dmReportGeneral2RespRcvd: SAS 2 is %d\n", oneExpander->
SAS2));
758 DM_DBG3((
"dmReportGeneral2RespRcvd: oneDeviceData %p did %d\n", oneDeviceData, oneDeviceData->
id));
759 DM_DBG3((
"dmReportGeneral2RespRcvd: oneExpander %p did %d\n", oneExpander, oneExpander->
id));
762 DM_DBG2((
"dmReportGeneral2RespRcvd: oneExpander=%p numberofPhys=0x%x RoutingIndex=0x%x\n",
764 DM_DBG2((
"dmReportGeneral2RespRcvd: configRouteTable=%d configuring=%d\n",
766 if (ConfiguresOthers)
768 DM_DBG2((
"dmReportGeneral2RespRcvd: ConfiguresOthers is true\n"));
774 if (discovery->
retries >= dmAllShared->MaxRetryDiscovery)
776 DM_DBG1((
"dmReportGeneral2RespRcvd: retries are over!!!\n"));
785 DM_DBG2((
"dmReportGeneral2RespRcvd: keep retrying\n"));
786 DM_DBG1((
"dmReportGeneral2RespRcvd: Prep222389 RETRY at %d Maximum Retry is %d\n", discovery->
retries, dmAllShared->MaxRetryDiscovery));
800 DM_DBG2((
"dmReportGeneral2RespRcvd: SMP failed, stopping discovery\n"));
820 DM_DBG3((
"dmDiscoverSend: start\n"));
821 DM_DBG3((
"dmDiscoverSend: oneDeviceData %p did %d\n", oneDeviceData, oneDeviceData->
id));
823 DM_DBG3((
"dmDiscoverSend: oneExpander %p did %d\n", oneExpander, oneExpander->
id));
838 (
bit8 *)&smpDiscoverReq,
864 DM_DBG3((
"dmDiscoverRespRcvd: start\n"));
870 discovery = &(onePortContext->
discovery);
874 DM_DBG3((
"dmDiscoverRespRcvd: oneDeviceData %p did %d\n", oneDeviceData, oneDeviceData->
id));
875 DM_DBG3((
"dmDiscoverRespRcvd: oneExpander %p did %d\n", oneExpander, oneExpander->
id));
879 DM_DBG1((
"dmDiscoverRespRcvd: invalid port or aborted discovery!!!\n"));
908 DM_DBG3((
"dmDiscoverRespRcvd: still configuring routing; setting timer\n"));
909 DM_DBG3((
"dmDiscoverRespRcvd: onePortContext %p oneDeviceData %p pdmSMPDiscoverResp %p\n", onePortContext, oneDeviceData, pdmSMPDiscoverResp));
936 DM_DBG3((
"dmDiscoverRespRcvd: still configuring routing; setting timer\n"));
937 DM_DBG3((
"dmDiscoverRespRcvd: onePortContext %p oneDeviceData %p pdmSMPDiscoverResp %p\n", onePortContext, oneDeviceData, pdmSMPDiscoverResp));
945 DM_DBG1((
"dmDiscoverRespRcvd: Discovery Error SMP function return result error=0x%x !!!\n",
974 DM_DBG2((
"dmDiscover2RespRcvd: start\n"));
980 discovery = &(onePortContext->
discovery);
984 DM_DBG3((
"dmDiscoverRespRcvd: oneDeviceData %p did %d\n", oneDeviceData, oneDeviceData->
id));
985 DM_DBG3((
"dmDiscoverRespRcvd: oneExpander %p did %d\n", oneExpander, oneExpander->
id));
989 DM_DBG1((
"dmDiscover2RespRcvd: invalid port or aborted discovery!!!\n"));
1028 DM_DBG2((
"dmDiscover2RespRcvd: still configuring routing; setting timer\n"));
1029 DM_DBG2((
"dmDiscover2RespRcvd: onePortContext %p oneDeviceData %p pdmSMPDiscover2Resp %p\n", onePortContext, oneDeviceData, pdmSMPDiscover2Resp));
1055 DM_DBG2((
"dmDiscover2RespRcvd: still configuring routing; setting timer\n"));
1056 DM_DBG2((
"dmDiscover2RespRcvd: onePortContext %p oneDeviceData %p pdmSMPDiscover2Resp %p\n", onePortContext, oneDeviceData, pdmSMPDiscover2Resp));
1067 DM_DBG1((
"dmDiscover2RespRcvd: Discovery Error SMP function return result error=0x%x\n",
1076tdsaDiscoverList2Send(
1085 DM_DBG1((
"tdsaDiscoverList2Send: start\n"));
1086 DM_DBG1((
"tdsaDiscoverList2Send: device %p did %d\n", oneDeviceData, oneDeviceData->
id));
1087 agRoot = oneDeviceData->
agRoot;
1088 oneExpander = oneDeviceData->dmExpander;
1097 smpDiscoverListReq.
byte10 = 0x2;
1098 smpDiscoverListReq.
byte11 = 0x1;
1106 (
bit8 *)&smpDiscoverListReq,
1115tdsaDiscoverList2RespRcvd(
1156 DM_DBG3((
"dmReportPhySataSend: start\n"));
1157 DM_DBG3((
"dmReportPhySataSend: oneDeviceData %p did %d\n", oneDeviceData, oneDeviceData->
id));
1163 if (oneExpander ==
agNULL)
1165 DM_DBG1((
"dmReportPhySataSend: Error!!! expander is NULL\n"));
1168 DM_DBG3((
"dmReportPhySataSend: device %p did %d\n", oneDeviceData, oneDeviceData->
id));
1169 DM_DBG3((
"dmReportPhySataSend: phyid %d\n", phyId));
1180 (
bit8 *)&smpReportPhySataReq,
1225 bit8 sataDeviceType;
1229 bit8 bit8fisarray[20];
1231 DM_DBG3((
"dmReportPhySataRcvd: start\n"));
1239 if (oneExpander !=
agNULL)
1244 if (SataDevice !=
agNULL)
1251 DM_DBG3((
"dmReportPhySataRcvd: SataDevice is NULL\n"));
1254 pSMPReportPhySataResp = &SMPreportPhySataResp;
1267 tdSMPRequestBody->IndirectSMPReqosMemHandle,
1268 tdSMPRequestBody->IndirectSMPReqLen
1272 tdSMPRequestBody->IndirectSMPResposMemHandle,
1273 tdSMPRequestBody->IndirectSMPRespLen
1281 DM_DBG1((
"dmReportPhySataRcvd: invalid port or aborted discovery!!!\n"));
1285 if (SataDevice ==
agNULL)
1287 DM_DBG1((
"dmReportPhySataRcvd: SataDevice is NULL, wrong\n"));
1294 DM_DBG1((
"dmReportPhySataRcvd: smpFunctionResult == PHY_VACANT, wrong\n"));
1304 DM_DBG3((
"dmReportPhySataRcvd: saves the signature\n"));
1315 DM_DBG3((
"dmReportPhySataRcvd: SATA Signature = %02x %02x %02x %02x %02x\n",
1333 bit8fis = (
bit8*)fis;
1336 a = DMA_LEBIT32_TO_BIT32(*(
bit32*)bit8fis);
1337 DM_DBG3((
"dmReportPhySataRcvd: a 0x%8x\n", a));
1338 bit8fisarray[4*i] = (a & 0xFF000000) >> 24;
1339 bit8fisarray[4*i+1] = (a & 0x00FF0000) >> 16;
1340 bit8fisarray[4*i+2] = (a & 0x0000FF00) >> 8;
1341 bit8fisarray[4*i+3] = (a & 0x000000FF);
1342 bit8fis = bit8fis + 4;
1346 DM_DBG3((
"dmReportPhySataRcvd: DataDomain ATAPI saves the signature\n"));
1357 DM_DBG3((
"dmReportPhySataRcvd: SATA Signature = %02x %02x %02x %02x %02x\n",
1373 DM_DBG3((
"dmReportPhySataRcvd: getting next stp bride\n"));
1388 DM_DBG3((
"dmReportPhySataRcvd: siReportPhySataRcvd SMP function return result %x\n",
1433 bit8 sataDeviceType = 0;
1437 bit8 bit8fisarray[20];
1439 DM_DBG3((
"dmReportPhySata2Rcvd: start\n"));
1447 if (oneExpander !=
agNULL)
1452 if (SataDevice !=
agNULL)
1459 DM_DBG3((
"dmReportPhySataRcvd: SataDevice is NULL\n"));
1462 pSMPReportPhySataResp = &SMPreportPhySataResp;
1475 tdSMPRequestBody->IndirectSMPReqosMemHandle,
1476 tdSMPRequestBody->IndirectSMPReqLen
1480 tdSMPRequestBody->IndirectSMPResposMemHandle,
1481 tdSMPRequestBody->IndirectSMPRespLen
1489 DM_DBG1((
"dmReportPhySata2Rcvd: invalid port or aborted discovery!!!\n"));
1493 if (SataDevice ==
agNULL)
1495 DM_DBG1((
"dmReportPhySata2Rcvd: SataDevice is NULL, wrong\n"));
1502 DM_DBG1((
"dmReportPhySata2Rcvd: smpFunctionResult == PHY_VACANT, wrong\n"));
1512 DM_DBG3((
"dmReportPhySata2Rcvd: saves the signature\n"));
1522 DM_DBG3((
"dmReportPhySata2Rcvd: SATA Signature = %02x %02x %02x %02x %02x\n",
1539 bit8fis = (
bit8*)fis;
1542 a = DMA_LEBIT32_TO_BIT32(*(
bit32*)bit8fis);
1543 DM_DBG3((
"dmReportPhySata2Rcvd: a 0x%8x\n", a));
1544 bit8fisarray[4*i] = (a & 0xFF000000) >> 24;
1545 bit8fisarray[4*i+1] = (a & 0x00FF0000) >> 16;
1546 bit8fisarray[4*i+2] = (a & 0x0000FF00) >> 8;
1547 bit8fisarray[4*i+3] = (a & 0x000000FF);
1548 bit8fis = bit8fis + 4;
1552 DM_DBG3((
"dmReportPhySata2Rcvd: DataDomain ATAPI saves the signature\n"));
1562 DM_DBG3((
"dmReportPhySata2Rcvd: SATA Signature = %02x %02x %02x %02x %02x\n",
1578 DM_DBG3((
"dmReportPhySata2Rcvd: getting next stp bride\n"));
1594 DM_DBG3((
"dmReportPhySata2Rcvd: siReportPhySataRcvd SMP function return result %x\n",
1609 bit32 configSASAddressHi,
1610 bit32 configSASAddressLo
1621 DM_DBG3((
"dmRoutingEntryAdd: start\n"));
1624 DM_DBG3((
"dmRoutingEntryAdd: phyid %d\n", phyId));
1630 DM_DBG3((
"dmRoutingEntryAdd: unnecessary\n"));
1647 DM_DBG3((
"dmRoutingEntryAdd: adding sasAddressHi 0x%08x\n", configSASAddressHi));
1648 DM_DBG3((
"dmRoutingEntryAdd: adding sasAddressLo 0x%08x\n", configSASAddressLo));
1649 DM_DBG3((
"dmRoutingEntryAdd: phyid %d currentIndex[phyid] %d\n", phyId, oneExpander->
currentIndex[phyId]));
1666 for ( i = 0; i < 16; i ++ )
1676 DM_DBG3((
"dmRoutingEntryAdd: Discovery Error routing index overflow for currentIndex=%d, routingIndex=%d\n", oneExpander->
currentIndex[phyId], oneExpander->
routingIndex));
1705 DM_DBG3((
"dmConfigRoutingInfoRespRcvd: start\n"));
1713 DM_DBG1((
"dmConfigRoutingInfoRespRcvd: invalid port or aborted discovery!!!\n"));
1722 if (DownStreamExpander !=
agNULL)
1726 DM_DBG3((
"dmConfigRoutingInfoRespRcvd: DownStreamExpander->numOfUpStreamPhys %d\n", DownStreamExpander->
numOfUpStreamPhys));
1735 if ( (DownStreamExpander !=
agNULL) &&
1739 DM_DBG3((
"dmConfigRoutingInfoRespRcvd: first if\n"));
1754 DM_DBG3((
"dmConfigRoutingInfoRespRcvd: else\n"));
1758 if (UpStreamExpander !=
agNULL)
1765 DM_DBG3((
"dmConfigRoutingInfoRespRcvd: UpStreamExpander is NULL\n"));
1768 ConfigurableExpander,
1773 if ( ConfigurableExpander !=
agNULL && dupConfigSASAddr ==
agFALSE)
1775 DM_DBG3((
"dmConfigRoutingInfoRespRcvd: else if\n"));
1780 if ( UpStreamExpander !=
agNULL)
1787 if ( DownStreamExpander !=
agNULL)
1795 ConfigurableExpander,
1805 DM_DBG3((
"dmConfigRoutingInfoRespRcvd: $$$$$$ my change $$$$$ \n"));
1807 if ( DownStreamExpander !=
agNULL)
1812 if (ReturningExpander !=
agNULL)
1816 ReturningExpanderDeviceData = ReturningExpander->
dmDevice;
1822 if (ReturningExpander !=
agNULL && ReturningExpanderDeviceData !=
agNULL)
1827 DM_DBG3((
"dmConfigRoutingInfoRespRcvd: More Phys to discover\n"));
1834 if (ReturningExpander !=
agNULL)
1842 DM_DBG3((
"dmConfigRoutingInfoRespRcvd: No More Phys\n"));
1858 DM_DBG1((
"dmConfigRoutingInfoRespRcvd: Discovery Error SMP function return result error=0x%x !!!\n", frameHeader->
smpFunctionResult));
1884 DM_DBG2((
"dmConfigRoutingInfo2RespRcvd: start\n"));
1892 DM_DBG1((
"dmConfigRoutingInfo2RespRcvd: invalid port or aborted discovery!!!\n"));
1898 DM_DBG1((
"dmConfigRoutingInfo2RespRcvd: smpFunctionResult is PHY_VACANT\n"));
1906 if (DownStreamExpander !=
agNULL)
1910 DM_DBG2((
"dmConfigRoutingInfo2RespRcvd: DownStreamExpander->numOfUpStreamPhys %d\n", DownStreamExpander->
numOfUpStreamPhys));
1919 if ( (DownStreamExpander !=
agNULL) &&
1923 DM_DBG2((
"dmConfigRoutingInfo2RespRcvd: first if\n"));
1938 DM_DBG2((
"dmConfigRoutingInfo2RespRcvd: else\n"));
1942 if (UpStreamExpander !=
agNULL)
1949 DM_DBG2((
"dmConfigRoutingInfo2RespRcvd: UpStreamExpander is NULL\n"));
1952 ConfigurableExpander,
1957 if ( ConfigurableExpander !=
agNULL && dupConfigSASAddr ==
agFALSE)
1959 DM_DBG2((
"dmConfigRoutingInfo2RespRcvd: else if\n"));
1964 if ( UpStreamExpander !=
agNULL)
1971 if ( DownStreamExpander !=
agNULL)
1979 ConfigurableExpander,
1989 DM_DBG2((
"dmConfigRoutingInfo2RespRcvd: $$$$$$ my change $$$$$ \n"));
1991 if ( DownStreamExpander !=
agNULL)
1996 if (ReturningExpander !=
agNULL)
2000 ReturningExpanderDeviceData = ReturningExpander->
dmDevice;
2006 if (ReturningExpander !=
agNULL && ReturningExpanderDeviceData !=
agNULL)
2011 DM_DBG2((
"dmConfigRoutingInfo2RespRcvd: More Phys to discover\n"));
2018 if (ReturningExpander !=
agNULL)
2026 DM_DBG2((
"dmConfigRoutingInfo2RespRcvd: No More Phys\n"));
2042 DM_DBG1((
"dmConfigRoutingInfo2RespRcvd: Discovery Error SMP function return result error=0x%x!!!\n", frameHeader->
smpFunctionResult));
2062 DM_DBG3((
"dmPhyControlRespRcvd: start\n"));
2068 DM_DBG3((
"dmPhyControlRespRcvd: SMP success\n"));
2089 DM_DBG2((
"dmPhyControl2RespRcvd: start\n"));
2095 DM_DBG2((
"dmPhyControl2RespRcvd: SMP success\n"));
2114 DM_DBG1((
"dmPhyControlFailureRespRcvd: start\n"));
2134 bit8 SMPRequestFunction;
2135 bit8 devType_S_Rate;
2136 DM_DBG1((
"dmSetDeviceInfoCB: start\n"));
2138 DM_DBG4((
"dmSetDeviceInfoCB: option 0x%x\n", option));
2139 DM_DBG4((
"dmSetDeviceInfoCB: param 0x%x\n", param));
2143 DM_DBG1((
"dmSetDeviceInfoCB: option 0x%x\n", option));
2144 DM_DBG1((
"dmSetDeviceInfoCB: param 0x%x\n", param));
2147 DM_DBG1((
"dmSetDeviceInfoCB: IO failure\n"));
2150 dmRoot = dmSMPRequestBody->
dmRoot;
2151 oneDeviceData = dmSMPRequestBody->
dmDevice;
2153 SMPRequestFunction = dmSMPRequestBody->
smpPayload[1];
2175 if (agDevHandle ==
agNULL)
2177 DM_DBG1((
"dmSetDeviceInfoCB: agDevHandle is NULL\n"));
2184 DM_DBG1((
"dmSetDeviceInfoCB: set connection rate option\n"));
2187 dmRoot = dmSMPRequestBody->
dmRoot;
2189 oneDeviceData = dmSMPRequestBody->
dmDevice;
2192 devType_S_Rate = (devType_S_Rate & 0xF0) | (param >> 28);
2194 SMPRequestFunction = dmSMPRequestBody->
smpPayload[1];
2195 DM_DBG1((
"dmSetDeviceInfoCB: SMPRequestFunction 0x%x\n", SMPRequestFunction));
2231 dmSMPBusyTimer(dmRoot, onePortContext, oneDeviceData, dmSMPRequestBody);
2298 bit8 SMPRequestFunction;
2307 bit8 smpRequestHeader[4];
2313 DM_DBG3((
"dmSMPCompleted: start\n"));
2317 dmRoot = dmSMPRequestBody->
dmRoot;
2321 oneDeviceData = dmSMPRequestBody->
dmDevice;
2323 agSMPFrame = &(agSASRequestBody->
smpFrame);
2331 DM_DBG3((
"dmSMPCompleted: port has been destroyed\n"));
2343 if (dmSMPResponseBody ==
agNULL)
2345 DM_DBG1((
"dmSMPCompleted: Wrong, dmSMPResponseBody is NULL!!!\n"));
2361 SMPRequestFunction = dmSMPRequestBody->
smpPayload[1];
2365 SMPRequestFunction = dmRequestSMPFrameHeader->
smpFunction;
2381 if (onePortContext !=
agNULL)
2383 DM_DBG5((
"dmSMPCompleted: pid %d\n", onePortContext->
id));
2387 DM_DBG1((
"dmSMPCompleted: Wrong, onePortContext is NULL!!!\n"));
2396 if (dmSMPResponseBody ==
agNULL)
2398 DM_DBG1((
"dmSMPCompleted: Wrong, dmSMPResponseBody is NULL!!!\n"));
2409 if (oldonePortContext !=
agNULL)
2411 DM_DBG5((
"dmSMPCompleted: old pid %d\n", oldonePortContext->
id));
2415 DM_DBG1((
"dmSMPCompleted: Wrong, oldonePortContext is NULL!!!\n"));
2424 if (dmSMPResponseBody ==
agNULL)
2426 DM_DBG1((
"dmSMPCompleted: Wrong, dmSMPResponseBody is NULL!!!\n"));
2443 if (onePortContext != oldonePortContext)
2445 DM_DBG1((
"dmSMPCompleted: portcontext has changed!!!\n"));
2493 if (dmSMPResponseBody ==
agNULL)
2495 DM_DBG1((
"dmSMPCompleted: Wrong, dmSMPResponseBody is NULL!!!\n"));
2558 if (dmSMPResponseBody ==
agNULL)
2560 DM_DBG1((
"dmSMPCompleted: Wrong, dmSMPResponseBody is NULL!!!\n"));
2570 DM_DBG1((
"dmSMPCompleted: aborting discovery\n"));
2633 if (oneExpander->
SAS2 == 0)
2635 DM_DBG3((
"dmSMPCompleted: SAS 1.1\n"));
2652 DM_DBG3((
"dmSMPCompleted: report general\n"));
2667 if (dmSMPResponseBody ==
agNULL)
2669 DM_DBG1((
"dmSMPCompleted: Wrong, dmSMPResponseBody is NULL!!!\n"));
2684 dmResponseSMPFrameHeader,
2689 DM_DBG3((
"dmSMPCompleted: discover\n"));
2693 DM_DBG3((
"dmSMPCompleted: mismatch len agIOInfoLen 0x%x 0x%x\n", agIOInfoLen, (
unsigned int)
sizeof(
smpRespDiscover_t) + 4));
2703 if (dmSMPResponseBody ==
agNULL)
2705 DM_DBG1((
"dmSMPCompleted: Wrong, dmSMPResponseBody is NULL!!!\n"));
2719 dmResponseSMPFrameHeader,
2724 DM_DBG3((
"dmSMPCompleted: report phy sata\n"));
2738 if (dmSMPResponseBody ==
agNULL)
2740 DM_DBG1((
"dmSMPCompleted: Wrong, dmSMPResponseBody is NULL!!!\n"));
2754 dmResponseSMPFrameHeader,
2759 DM_DBG3((
"dmSMPCompleted: configure routing information\n"));
2760 if (agIOInfoLen != 4 &&
2763 DM_DBG3((
"dmSMPCompleted: mismatch len agIOInfoLen 0x%x 0x%x\n", agIOInfoLen, 4));
2773 if (dmSMPResponseBody ==
agNULL)
2775 DM_DBG1((
"dmSMPCompleted: Wrong, dmSMPResponseBody is NULL!!!\n"));
2789 dmResponseSMPFrameHeader,
2795 DM_DBG3((
"dmSMPCompleted: phy control\n"));
2796 if (agIOInfoLen != 4 &&
2799 DM_DBG3((
"dmSMPCompleted: mismatch len agIOInfoLen 0x%x 0x%x\n", agIOInfoLen, 4));
2810 if (dmSMPResponseBody ==
agNULL)
2812 DM_DBG1((
"dmSMPCompleted: Wrong, dmSMPResponseBody is NULL!!!\n"));
2826 dmResponseSMPFrameHeader,
2837 DM_DBG1((
"dmSMPCompleted: wrong SMP function 0x%x !!!\n", dmResponseSMPFrameHeader->
smpFunction));
2838 DM_DBG1((
"dmSMPCompleted: smpFrameType 0x%x !!!\n", dmResponseSMPFrameHeader->
smpFrameType));
2840 DM_DBG1((
"dmSMPCompleted: smpReserved 0x%x !!!\n", dmResponseSMPFrameHeader->
smpReserved));
2841 dmhexdump(
"dmSMPCompleted: SMP payload !!!", (
bit8 *)agFrameHandle, agIOInfoLen);
2848 DM_DBG1((
"dmSMPCompleted: OSSA_IO_ABORTED or OSSA_IO_INVALID_LENGTH, status 0x%x\n", agIOStatus));
2852 DM_DBG3((
"dmSMPCompleted: OSSA_IO_ERROR_INTERNAL_SMP_RESOURCE\n"));
2888 dmSMPBusyTimer(dmRoot, onePortContext, oneDeviceData, dmSMPRequestBody);
2897 dmResponseSMPFrameHeader,
2922 dmResponseSMPFrameHeader,
2941 DM_DBG1((
"dmSMPCompleted: setting back to operational\n"));
2946 DM_DBG1((
"dmSMPCompleted: OSSA_IO_OPEN_CNX_ERROR_CONNECTION_RATE_NOT_SUPPORTED\n"));
2947 DM_DBG1((
"dmSMPCompleted: SMPRequestFunction 0x%x\n", SMPRequestFunction));
2977 ConnRate = ConnRate - 1;
2979 agContext = &(dmSMPRequestBody->
agContext);
2980 agContext->
osData = agIORequest;
2988 DM_DBG1((
"dmSMPCompleted: failed, but retries %d agIOStatus 0x%x %d agIOInfoLen %d !!!\n",
2989 dmSMPRequestBody->
retries, agIOStatus, agIOStatus, agIOInfoLen));
3026 dmSMPBusyTimer(dmRoot, onePortContext, oneDeviceData, dmSMPRequestBody);
3036 dmResponseSMPFrameHeader,
3061 dmResponseSMPFrameHeader,
3074 DM_DBG1((
"dmSMPCompleted: failed. no more retry. agIOStatus 0x%x %d !!!\n", agIOStatus, agIOStatus));
3077 DM_DBG1((
"dmSMPCompleted: failed, agIOStatus is OSSA_IO_DS_NON_OPERATIONAL!!!\n"));
3081 DM_DBG1((
"dmSMPCompleted: failed, agIOStatus is OSSA_IO_DS_IN_RECOVERY!!!\n"));
3091 DM_DBG1((
"dmSMPCompleted: discover done with error\n"));
3096 DM_DBG3((
"dmSMPCompleted: SMP_PHY_CONTROL\n"));
3100 DM_DBG3((
"dmSMPCompleted: discover done with error\n"));
3105 DM_DBG3((
"dmSMPCompleted: unknown phy operation 0x%x\n", smpPhyControlReq->
phyOperation));
3119 DM_DBG2((
"dmSMPCompleted: SAS 2\n"));
3136 DM_DBG2((
"dmSMPCompleted: report general\n"));
3152 if (dmSMPResponseBody ==
agNULL)
3154 DM_DBG1((
"dmSMPCompleted: Wrong, dmSMPResponseBody is NULL!!!\n"));
3170 dmResponseSMPFrameHeader,
3175 DM_DBG2((
"dmSMPCompleted: discover\n"));
3180 DM_DBG1((
"dmSMPCompleted: discover mismatch len agIOInfoLen 0x%x 0x%x\n", agIOInfoLen, (
int)
sizeof(
smpRespDiscover2_t) + 4));
3191 if (dmSMPResponseBody ==
agNULL)
3193 DM_DBG1((
"dmSMPCompleted: Wrong, dmSMPResponseBody is NULL!!!\n"));
3208 dmResponseSMPFrameHeader,
3213 DM_DBG2((
"dmSMPCompleted: report phy sata\n"));
3229 if (dmSMPResponseBody ==
agNULL)
3231 DM_DBG1((
"dmSMPCompleted: Wrong, dmSMPResponseBody is NULL!!!\n"));
3246 dmResponseSMPFrameHeader,
3251 DM_DBG2((
"dmSMPCompleted: configure routing information\n"));
3252 if (agIOInfoLen != 4 &&
3256 DM_DBG1((
"dmSMPCompleted: configure routing information mismatch len agIOInfoLen 0x%x 0x%x\n", agIOInfoLen, 4));
3267 if (dmSMPResponseBody ==
agNULL)
3269 DM_DBG1((
"dmSMPCompleted: Wrong, dmSMPResponseBody is NULL!!!\n"));
3284 dmResponseSMPFrameHeader,
3290 DM_DBG2((
"dmSMPCompleted: phy control\n"));
3291 if (agIOInfoLen != 4 &&
3295 DM_DBG1((
"dmSMPCompleted: phy control mismatch len agIOInfoLen 0x%x 0x%x\n", agIOInfoLen, 4));
3306 if (dmSMPResponseBody ==
agNULL)
3308 DM_DBG1((
"dmSMPCompleted: Wrong, dmSMPResponseBody is NULL!!!\n"));
3323 dmResponseSMPFrameHeader,
3331 DM_DBG1((
"dmSMPCompleted: SMP_DISCOVER_LIST\n"));
3332 DM_DBG1((
"dmSMPCompleted: agIOInfoLen 0x%x \n", agIOInfoLen));
3333 tdhexdump(
"dmSMPCompleted", (
bit8*)agFrameHandle, agIOInfoLen);
3344 if (dmSMPResponseBody ==
agNULL)
3346 DM_DBG1((
"dmSMPCompleted: Wrong, dmSMPResponseBody is NULL!!!\n"));
3364 DM_DBG1((
"dmSMPCompleted: wrong SMP function 0x%x\n", dmResponseSMPFrameHeader->
smpFunction));
3367 DM_DBG1((
"dmSMPCompleted: smpReserved 0x%x\n", dmResponseSMPFrameHeader->
smpReserved));
3368 dmhexdump(
"dmSMPCompleted: SMP payload", (
bit8 *)agFrameHandle, agIOInfoLen);
3375 DM_DBG1((
"dmSMPCompleted: OSSA_IO_ABORTED or OSSA_IO_INVALID_LENGTH, status 0x%x\n", agIOStatus));
3379 DM_DBG1((
"dmSMPCompleted: OSSA_IO_ERROR_INTERNAL_SMP_RESOURCE\n"));
3416 dmSMPBusyTimer(dmRoot, onePortContext, oneDeviceData, dmSMPRequestBody);
3425 dmResponseSMPFrameHeader,
3450 dmResponseSMPFrameHeader,
3461 DM_DBG1((
"dmSMPCompleted: OSSA_IO_OPEN_CNX_ERROR_ZONE_VIOLATION\n"));
3484 DM_DBG1((
"dmSMPCompleted: setting back to operational\n"));
3489 DM_DBG1((
"dmSMPCompleted: OSSA_IO_OPEN_CNX_ERROR_CONNECTION_RATE_NOT_SUPPORTED\n"));
3490 DM_DBG1((
"dmSMPCompleted: SMPRequestFunction 0x%x\n", SMPRequestFunction));
3520 ConnRate = ConnRate - 1;
3522 agContext = &(dmSMPRequestBody->
agContext);
3523 agContext->
osData = agIORequest;
3531 DM_DBG1((
"dmSMPCompleted: failed! but retries %d agIOStatus 0x%x %d agIOInfoLen %d\n",
3532 dmSMPRequestBody->
retries, agIOStatus, agIOStatus, agIOInfoLen));
3570 dmSMPBusyTimer(dmRoot, onePortContext, oneDeviceData, dmSMPRequestBody);
3580 dmResponseSMPFrameHeader,
3605 dmResponseSMPFrameHeader,
3618 DM_DBG1((
"dmSMPCompleted: failed! no more retry! agIOStatus 0x%x %d\n", agIOStatus, agIOStatus));
3621 DM_DBG1((
"dmSMPCompleted: failed! agIOStatus is OSSA_IO_DS_NON_OPERATIONAL\n"));
3625 DM_DBG1((
"dmSMPCompleted: failed! agIOStatus is OSSA_IO_DS_IN_RECOVERY\n"));
3635 DM_DBG1((
"dmSMPCompleted: discover done with error\n"));
3640 DM_DBG1((
"dmSMPCompleted: SMP_PHY_CONTROL\n"));
3644 DM_DBG1((
"dmSMPCompleted: discover done with error\n"));
3649 DM_DBG1((
"dmSMPCompleted: unknown phy operation 0x%x\n", smpPhyControl2Req->
phyOperation));
3669 if (dmSMPResponseBody ==
agNULL)
3671 DM_DBG1((
"dmSMPCompleted: Wrong, dmSMPResponseBody is NULL!!!\n"));
3694 DM_DBG5((
"dmSMPAbortCB: start\n"));
3696 if (dmSMPRequestBody ==
agNULL)
3698 DM_DBG1((
"dmSMPAbortCB: pSMPRequestBody is NULL!!! \n"));
3702 dmRoot = dmSMPRequestBody->
dmRoot;
3716 DM_DBG1((
"dmSMPAbortCB: abort per port; not used!!!\n"));
3721 DM_DBG1((
"dmSMPAbortCB: abort all; not used!!!\n"));
3726 DM_DBG1((
"ossaSMPAbortCB: abort one\n"));
3729 DM_DBG1((
"dmSMPAbortCB: abort one, status 0x%x\n",
status));
3734 DM_DBG1((
"dmSMPAbortCB: not allowed case, flag 0x%x!!!\n", flag));
#define SAS2_REPORT_GENERAL_IS_CONFIGURING(pResp)
#define SMP_WRITE_GPIO_REGISTER
#define DISCOVERY_UP_STREAM
#define SMP_REPORT_PHY_SATA
#define SMP_MAXIMUM_PAYLOAD
#define SMP_PHY_CONTROL_CLEAR_AFFILIATION
#define SAS2_REPORT_GENERAL_IS_CONFIGURABLE(pResp)
#define SAS2_DISCRSP_IS_MUXING_SUPPORTED(pResp)
#define REPORT_GENERAL_IS_CONFIGURING(pResp)
#define DISCOVERY_CONFIG_ROUTING
#define SMP_PHY_TEST_FUNCTION
#define SAS2_REPORT_GENERAL_IS_CONFIGURES_OTHERS(pResp)
#define DM_DSTATE_COMPLETED
struct smpRespReportPhySata_s smpRespReportPhySata_t
#define REPORT_GENERAL_IS_LONG_RESPONSE(pResp)
struct smpRespReportManufactureInfo2_s smpRespReportManufactureInfo2_t
#define SAS_CONNECTION_RATE_1_5G
#define SATA_ATAPI_DEVICE
#define SMP_REPORT_MANUFACTURE_INFORMATION
#define REPORT_GENERAL_GET_ROUTEINDEXES(pResp)
#define SAS2_REPORT_GENERAL_IS_TABLE_TO_TABLE_SUPPORTED(pResp)
struct smpRespReportPhySata2_s smpRespReportPhySata2_t
#define SAS2_DISCRSP_GET_LOGICAL_LINKRATE(pResp)
#define DISCOVERY_DOWN_STREAM
struct smpRespDiscover_s smpRespDiscover_t
#define DISCOVERY_SAS_DONE
#define SMP_DISCOVER_LIST
struct smpRespReportManufactureInfo_s smpRespReportManufactureInfo_t
#define SAS2_REPORT_GENERAL_GET_ROUTEINDEXES(pResp)
struct smpRespReportRouteTable2_s smpRespReportRouteTable2_t
#define SMP_CONFIGURE_ROUTING_INFORMATION
#define DEVINFO_GET_LINKRATE(devInfo)
struct smpRespDiscover2_s smpRespDiscover2_t
#define SAS_CONNECTION_RATE_12_0G
#define SMP_READ_GPIO_REGISTER
#define SAS_ROUTING_TABLE
#define SAS2_DISCRSP_GET_LINKRATE(pResp)
#define SMP_FUNCTION_ACCEPTED
#define SMP_REPORT_GENERAL
#define REPORT_GENERAL_IS_CONFIGURABLE(pResp)
struct smpRespReportGeneral_s smpRespReportGeneral_t
#define SMP_REPORT_PHY_ERROR_LOG
struct smpRespReportRouteTable_s smpRespReportRouteTable_t
#define ATAPI_DEVICE_FLAG
#define SMP_REPORT_ROUTING_INFORMATION
struct smpRespReportGeneral2_s smpRespReportGeneral2_t
#define SMP_DIRECT_PAYLOAD_LIMIT
#define REG_DEV_TO_HOST_FIS
#define DMLIST_DEQUEUE_FROM_HEAD(atHeadHdr, listHdr)
#define DMLIST_EMPTY(listHdr)
#define DMLIST_OBJECT_BASE(baseType, fieldName, fieldPtr)
#define DMLIST_ENQUEUE_AT_TAIL(toAddHdr, listHdr)
osGLOBAL void dmDiscoverDone(dmRoot_t *dmRoot, dmIntPortContext_t *onePortContext, bit32 flag)
osGLOBAL void dmReportGeneral2RespRcvd(dmRoot_t *dmRoot, agsaRoot_t *agRoot, agsaIORequest_t *agIORequest, dmDeviceData_t *oneDeviceData, dmSMPFrameHeader_t *frameHeader, agsaFrameHandle_t frameHandle)
osGLOBAL void * dm_memcpy(void *dst, void *src, bit32 count)
osGLOBAL void dmKillTimer(dmRoot_t *dmRoot, dmTimerRequest_t *timerRequest)
osGLOBAL void dmReportPhySataRcvd(dmRoot_t *dmRoot, agsaRoot_t *agRoot, agsaIORequest_t *agIORequest, dmDeviceData_t *oneDeviceData, dmSMPFrameHeader_t *frameHeader, agsaFrameHandle_t frameHandle)
osGLOBAL void dmPhyControlFailureRespRcvd(dmRoot_t *dmRoot, agsaRoot_t *agRoot, dmDeviceData_t *oneDeviceData, dmSMPFrameHeader_t *frameHeader, agsaFrameHandle_t frameHandle)
osGLOBAL void dmUpStreamDiscover2ExpanderPhySkip(dmRoot_t *dmRoot, dmIntPortContext_t *onePortContext, dmExpander_t *oneExpander)
osGLOBAL void dmReportPhySataSend(dmRoot_t *dmRoot, dmDeviceData_t *oneDeviceData, bit8 phyId)
osGLOBAL void dmDownStreamDiscovering(dmRoot_t *dmRoot, dmIntPortContext_t *onePortContext, dmDeviceData_t *oneDeviceData)
osGLOBAL void dmSMPAbortCB(agsaRoot_t *agRoot, agsaIORequest_t *agIORequest, bit32 flag, bit32 status)
osGLOBAL void dmHandleZoneViolation(dmRoot_t *dmRoot, agsaRoot_t *agRoot, agsaIORequest_t *agIORequest, dmDeviceData_t *oneDeviceData, dmSMPFrameHeader_t *frameHeader, agsaFrameHandle_t frameHandle)
osGLOBAL void dmDiscover2RespRcvd(dmRoot_t *dmRoot, agsaRoot_t *agRoot, agsaIORequest_t *agIORequest, dmDeviceData_t *oneDeviceData, dmSMPFrameHeader_t *frameHeader, agsaFrameHandle_t frameHandle)
osGLOBAL bit32 dmDiscoverCheck(dmRoot_t *dmRoot, dmIntPortContext_t *onePortContext)
osGLOBAL void dmSMPCompleted(agsaRoot_t *agRoot, agsaIORequest_t *agIORequest, bit32 agIOStatus, bit32 agIOInfoLen, agsaFrameHandle_t agFrameHandle)
osGLOBAL void dmPhyControlRespRcvd(dmRoot_t *dmRoot, agsaRoot_t *agRoot, agsaIORequest_t *agIORequest, dmDeviceData_t *oneDeviceData, dmSMPFrameHeader_t *frameHeader, agsaFrameHandle_t frameHandle)
osGLOBAL void dmConfigureRouteTimer(dmRoot_t *dmRoot, dmIntPortContext_t *onePortContext, dmExpander_t *oneExpander, smpRespDiscover_t *pdmSMPDiscoverResp, smpRespDiscover2_t *pdmSMPDiscover2Resp)
osGLOBAL void dmUpStreamDiscover2ExpanderPhy(dmRoot_t *dmRoot, dmIntPortContext_t *onePortContext, dmExpander_t *oneExpander, smpRespDiscover2_t *pDiscoverResp)
osGLOBAL void dmUpStreamDiscoverExpanderPhy(dmRoot_t *dmRoot, dmIntPortContext_t *onePortContext, dmExpander_t *oneExpander, smpRespDiscover_t *pDiscoverResp)
osGLOBAL void dmDownStreamDiscover2ExpanderPhySkip(dmRoot_t *dmRoot, dmIntPortContext_t *onePortContext, dmExpander_t *oneExpander)
osGLOBAL void dmConfigRoutingInfoRespRcvd(dmRoot_t *dmRoot, agsaRoot_t *agRoot, agsaIORequest_t *agIORequest, dmDeviceData_t *oneDeviceData, dmSMPFrameHeader_t *frameHeader, agsaFrameHandle_t frameHandle)
osGLOBAL void dmhexdump(const char *ptitle, bit8 *pbuf, int len)
osGLOBAL void dmDiscoverSend(dmRoot_t *dmRoot, dmDeviceData_t *oneDeviceData)
osGLOBAL void dmDownStreamDiscover2ExpanderPhy(dmRoot_t *dmRoot, dmIntPortContext_t *onePortContext, dmExpander_t *oneExpander, smpRespDiscover2_t *pDiscoverResp)
osGLOBAL void dmDiscoveryConfiguringTimer(dmRoot_t *dmRoot, dmIntPortContext_t *onePortContext, dmDeviceData_t *oneDeviceData)
osGLOBAL void dmSMPBusyTimer(dmRoot_t *dmRoot, dmIntPortContext_t *onePortContext, dmDeviceData_t *oneDeviceData, dmSMPRequestBody_t *dmSMPRequestBody)
osGLOBAL void dmDiscoverySMPTimer(dmRoot_t *dmRoot, dmIntPortContext_t *onePortContext, bit32 functionCode, dmSMPRequestBody_t *dmSMPRequestBody)
osGLOBAL void dmReportPhySata2Rcvd(dmRoot_t *dmRoot, agsaRoot_t *agRoot, agsaIORequest_t *agIORequest, dmDeviceData_t *oneDeviceData, dmSMPFrameHeader_t *frameHeader, agsaFrameHandle_t frameHandle)
osGLOBAL bit32 dmSMPStart(dmRoot_t *dmRoot, agsaRoot_t *agRoot, dmDeviceData_t *oneDeviceData, bit32 functionCode, bit8 *pSmpBody, bit32 smpBodySize, bit32 agRequestType)
osGLOBAL void dmReportGeneralRespRcvd(dmRoot_t *dmRoot, agsaRoot_t *agRoot, agsaIORequest_t *agIORequest, dmDeviceData_t *oneDeviceData, dmSMPFrameHeader_t *frameHeader, agsaFrameHandle_t frameHandle)
osGLOBAL void * dm_memset(void *s, int c, bit32 n)
GLOBAL void dmSetDeviceInfoCB(agsaRoot_t *agRoot, agsaContext_t *agContext, agsaDevHandle_t *agDevHandle, bit32 status, bit32 option, bit32 param)
osGLOBAL bit32 dmDuplicateConfigSASAddr(dmRoot_t *dmRoot, dmExpander_t *oneExpander, bit32 configSASAddressHi, bit32 configSASAddressLo)
osGLOBAL void dmDiscoverRespRcvd(dmRoot_t *dmRoot, agsaRoot_t *agRoot, agsaIORequest_t *agIORequest, dmDeviceData_t *oneDeviceData, dmSMPFrameHeader_t *frameHeader, agsaFrameHandle_t frameHandle)
osGLOBAL void dmCleanAllExp(dmRoot_t *dmRoot, dmIntPortContext_t *onePortContext)
osGLOBAL void dmInternalRemovals(dmRoot_t *dmRoot, dmIntPortContext_t *onePortContext)
osGLOBAL void dmDownStreamDiscoverExpanderPhySkip(dmRoot_t *dmRoot, dmIntPortContext_t *onePortContext, dmExpander_t *oneExpander)
osGLOBAL bit32 dmRoutingEntryAdd(dmRoot_t *dmRoot, dmExpander_t *oneExpander, bit32 phyId, bit32 configSASAddressHi, bit32 configSASAddressLo)
osGLOBAL void dmPhyControl2RespRcvd(dmRoot_t *dmRoot, agsaRoot_t *agRoot, agsaIORequest_t *agIORequest, dmDeviceData_t *oneDeviceData, dmSMPFrameHeader_t *frameHeader, agsaFrameHandle_t frameHandle)
osGLOBAL void dmReportGeneralSend(dmRoot_t *dmRoot, dmDeviceData_t *oneDeviceData)
osGLOBAL void dmDiscoveringExpanderRemove(dmRoot_t *dmRoot, dmIntPortContext_t *onePortContext, dmExpander_t *oneExpander)
osGLOBAL void dmConfigRoutingInfo2RespRcvd(dmRoot_t *dmRoot, agsaRoot_t *agRoot, agsaIORequest_t *agIORequest, dmDeviceData_t *oneDeviceData, dmSMPFrameHeader_t *frameHeader, agsaFrameHandle_t frameHandle)
osGLOBAL void dmDiscoverAbort(dmRoot_t *dmRoot, dmIntPortContext_t *onePortContext)
osGLOBAL bit16 dmFindCurrentDownStreamPhyIndex(dmRoot_t *dmRoot, dmExpander_t *oneExpander)
osGLOBAL void dmUpStreamDiscoverExpanderPhySkip(dmRoot_t *dmRoot, dmIntPortContext_t *onePortContext, dmExpander_t *oneExpander)
osGLOBAL void dmsaSMPCompleted(agsaRoot_t *agRoot, agsaIORequest_t *agIORequest, bit32 agIOStatus, bit32 agIOInfoLen, agsaFrameHandle_t agFrameHandle)
osGLOBAL void dmDownStreamDiscoverExpanderPhy(dmRoot_t *dmRoot, dmIntPortContext_t *onePortContext, dmExpander_t *oneExpander, smpRespDiscover_t *pDiscoverResp)
osGLOBAL bit32 dmPhyControlSend(dmRoot_t *dmRoot, dmDeviceData_t *oneDeviceData, bit8 phyOp, bit8 phyID)
osGLOBAL dmExpander_t * dmFindConfigurableExp(dmRoot_t *dmRoot, dmIntPortContext_t *onePortContext, dmExpander_t *oneExpander)
osGLOBAL U32 ostiFreeMemory(tiRoot_t *ptiRoot, void *osMemHandle, U32 allocLength)
#define osti_memset(s, c, n)
The file defines the constants, data structure, and functions defined by LL API.
void * agsaFrameHandle_t
handle to access frame
#define SA_DS_OPERATIONAL
#define AGSA_SMP_INIT_REQ
#define OSSA_IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS_OPEN_COLLIDE
#define OSSA_IO_DS_IN_RECOVERY
#define OSSA_IO_DS_NON_OPERATIONAL
#define OSSA_IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS_OPEN_TMO
#define OSSA_IO_ERROR_INTERNAL_SMP_RESOURCE
#define OSSA_IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS_PATHWAY_BLOCKED
#define OSSA_IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS
#define OSSA_IO_INVALID_LENGTH
#define OSSA_IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS_OPEN_RETRY_BACKOFF_THRESHOLD_REACHED
#define OSSA_IO_OPEN_CNX_ERROR_ZONE_VIOLATION
#define OSSA_IO_OPEN_CNX_ERROR_CONNECTION_RATE_NOT_SUPPORTED
#define OSSA_IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS_NO_DEST
The file defines the declaration of tSDK APIs.
GLOBAL void saFrameReadBlock(agsaRoot_t *agRoot, agsaFrameHandle_t agFrame, bit32 frameOffset, void *frameBuffer, bit32 frameBufLen)
Read a block from a frame.
GLOBAL bit32 saSetDeviceInfo(agsaRoot_t *agRoot, agsaContext_t *agContext, bit32 queueNum, agsaDevHandle_t *agDevHandle, bit32 option, bit32 param, ossaSetDeviceInfoCB_t agCB)
Set Device Information.
GLOBAL bit32 saSMPStart(agsaRoot_t *agRoot, agsaIORequest_t *agIORequest, bit32 queueNum, agsaDevHandle_t *agDevHandle, bit32 agRequestType, agsaSASRequestBody_t *agRequestBody, ossaSMPCompletedCB_t agCB)
Start SMP request.
GLOBAL bit32 saSetDeviceState(agsaRoot_t *agRoot, agsaContext_t *agContext, bit32 queueNum, agsaDevHandle_t *agDevHandle, bit32 newDeviceState)
Set Device State.
The file defines the declaration of OS APIs.
data structure stores OS specific and LL specific context
dmDeviceInfo_t dmDeviceInfo
struct dmExpander_s * dmExpander
struct dmDeviceData_s * ExpDevice
agsaDeviceInfo_t agDeviceInfo
DMSASAddressID_t SASAddressID
struct dmIntPortContext_s * dmPortContext
dmTimerRequest_t DiscoverySMPTimer
smpRespDiscover_t SMPDiscoverResp
smpRespDiscover2_t SMPDiscover2Resp
dmDeviceData_t * dmDeviceToProcess
struct dmExpander_s * dmUpStreamExpander
struct dmExpander_s * dmCurrentDownStreamExpander
bit16 numOfDownStreamPhys
bit8 routingAttribute[DM_MAX_EXPANDER_PHYS]
dmDeviceData_t * dmDevice
agsaDevHandle_t * agDevHandle
bit8 downStreamPhys[DM_MAX_EXPANDER_PHYS]
bit8 currentDownStreamPhyIndex
bit16 currentUpStreamPhyIndex
bit16 currentIndex[DM_MAX_EXPANDER_PHYS]
struct dmExpander_s * dmReturnginExpander
bit8 upStreamPhys[DM_MAX_EXPANDER_PHYS]
bit32 DiscoveryAbortInProgress
dmPortContext_t * dmPortContext
dmIntContext_t dmAllShared
dmDeviceData_t * dmDevice
dmSMPCompleted_t SMPCompletionFunc
void * IndirectSMPResponse
dmIntPortContext_t * dmPortContext
agsaSASRequestBody_t agSASRequestBody
agsaIORequest_t agIORequest
bit8 smpPayload[SMP_DIRECT_PAYLOAD_LIMIT]
bit8 NegotiatedLogicalLinkRate
bit8 ReasonNegotiatedPhysicalLinkRate
bit8 NegotiatedSSCHWMuxingSupported
data structure for SAS SSP IO reuqest body This structure contains IO related fields....
data structure for SAS device list This structure maintains the device as a list and information abou...
osGLOBAL void tddmReportDevice(dmRoot_t *dmRoot, dmPortContext_t *dmPortContext, dmDeviceInfo_t *dmDeviceInfo, dmDeviceInfo_t *dmExpDeviceInfo, bit32 flag)
osGLOBAL bit8 tddmSATADeviceTypeDecode(bit8 *pSignature)
osGLOBAL void tddmSingleThreadedLeave(dmRoot_t *dmRoot, bit32 syncLockId)
osGLOBAL void tddmDiscoverCB(dmRoot_t *dmRoot, dmPortContext_t *dmPortContext, bit32 eventStatus)
osGLOBAL void tddmSingleThreadedEnter(dmRoot_t *dmRoot, bit32 syncLockId)
void tdhexdump(const char *ptitle, bit8 *pbuf, int len)
union data structure specifies a request