61#ifdef INITIATOR_DRIVER
69#include <dev/pms/RefTisa/tisa/sassata/sas/tgt/ttdxchg.h>
109 dmRoot_t *dmRoot = &(tdsaAllShared->dmRoot);
117 TI_DBG3((
"tiINIDiscoverTargets: start\n"));
124 TI_DBG6((
"tiINIDiscoverTargets: portalContext %p\n", portalContext));
126 if (
TDLIST_EMPTY(&(tdsaAllShared->MainPortContextList)))
129 TI_DBG1((
"tiINIDiscoverTargets: No tdsaPortContext\n"));
138 PortContextList = tdsaAllShared->MainPortContextList.
flink;
139 if (PortContextList ==
agNULL)
141 TI_DBG1((
"tiINIDiscoverTargets: PortContextList is NULL\n"));
144 while (PortContextList != &(tdsaAllShared->MainPortContextList))
147 if (onePortContext ==
agNULL)
149 TI_DBG1((
"tiINIDiscoverTargets: onePortContext is NULL, PortContextList = %p\n", PortContextList));
154 TI_DBG6((
"tiINIDiscoverTargets: found; oneportContext ID %d\n", onePortContext->
id));
158 PortContextList = PortContextList->
flink;
163 TI_DBG1((
"tiINIDiscoverTargets: No corresponding tdsaPortContext\n"));
167 TI_DBG2((
"tiINIDiscoverTargets: pid %d\n", onePortContext->
id));
170 TI_DBG6((
"tiINIDiscoverTargets: calling Discovery\n"));
173 if (onePortContext->UseDM ==
agTRUE)
175 TI_DBG1((
"tiINIDiscoverTargets: calling dmDiscover, pid %d\n", onePortContext->
id));
177 dmPortContext = &(onePortContext->dmPortContext);
203 TDSA_DISCOVERY_OPTION_FULL_START
215 TI_DBG1((
"tiINIDiscoverTargets: Discovery has started or incorrect initialization; state %d pid 0x%x\n",
217 onePortContext->
id));
259 bit32 FoundDevices = 0;
260 bit32 DeviceIndex = 0;
262#ifdef TD_DEBUG_ENABLE
266 dmRoot_t *dmRoot = &(tdsaAllShared->dmRoot);
269 TI_DBG2((
"tiINIGetDeviceHandles: start\n"));
275 TI_DBG1((
"tiINIGetDeviceHandles: maxDevs is 0\n"));
276 TI_DBG1((
"tiINIGetDeviceHandles: first, returning 0\n"));
278 for (i = 0 ; i < maxDevs ; i++)
286 if (
TDLIST_EMPTY(&(tdsaAllShared->MainPortContextList)))
289 TI_DBG1((
"tiINIGetDeviceHandles: No available tdsaPortContext\n"));
290 TI_DBG1((
"tiINIGetDeviceHandles: second, returning 0\n"));
292 for (i = 0 ; i < maxDevs ; i++)
303 PortContextList = tdsaAllShared->MainPortContextList.
flink;
304 while (PortContextList != &(tdsaAllShared->MainPortContextList))
307 if(onePortContext ==
agNULL)
continue;
309 TI_DBG3((
"tiINIGetDeviceHandles: oneportContext pid %d\n", onePortContext->
id));
312 TI_DBG3((
"tiINIGetDeviceHandles: found; oneportContext pid %d\n", onePortContext->
id));
316 PortContextList = PortContextList->
flink;
321 TI_DBG1((
"tiINIGetDeviceHandles: First, No corresponding tdsaPortContext\n"));
322 TI_DBG1((
"tiINIGetDeviceHandles: third, returning 0\n"));
324 for (i = 0 ; i < maxDevs ; i++)
331 if (onePortContext ==
agNULL)
333 TI_DBG1((
"tiINIGetDeviceHandles: Second, No corressponding tdsaPortContext\n"));
334 TI_DBG1((
"tiINIGetDeviceHandles: fourth, returning 0\n"));
336 for (i = 0 ; i < maxDevs ; i++)
345 TI_DBG1((
"tiINIGetDeviceHandles: Third, tdsaPortContext is invalid, pid %d\n", onePortContext->
id));
346 TI_DBG1((
"tiINIGetDeviceHandles: fifth, returning 0\n"));
348 for (i = 0 ; i < maxDevs ; i++)
357 TI_DBG1((
"tiINIGetDeviceHandles: forth, discovery failed, pid %d\n", onePortContext->
id));
358 TI_DBG1((
"tiINIGetDeviceHandles: sixth, returning 0\n"));
360 for (i = 0 ; i < maxDevs ; i++)
369 TI_DBG1((
"tiINIGetDeviceHandles: discovery not completed\n"));
370 TI_DBG1((
"tiINIGetDeviceHandles: sixth, returning DISCOVERY_IN_PROGRESS, pid %d\n", onePortContext->
id));
375 TI_DBG2((
"tiINIGetDeviceHandles: pid %d\n", onePortContext->
id));
378 tdsaUpdateMCN(dmRoot, onePortContext);
382 for (i = 0 ; i < maxDevs ; i++)
390 DeviceListList = tdsaAllShared->MainDeviceList.
flink;
392 TD_ASSERT(DeviceListList,
"DeviceListList NULL");
393 if (DeviceListList ==
agNULL )
395 TI_DBG1((
"tiINIGetDeviceHandles: DeviceListList == agNULL\n"));
396 TI_DBG1((
"tiINIGetDeviceHandles: seventh, returning not found, pid %d\n", onePortContext->
id));
400 while ((DeviceIndex < maxDevs) &&
401 DeviceListList != &(tdsaAllShared->MainDeviceList))
404#ifdef TD_DEBUG_ENABLE
406 if (pSatDevData !=
agNULL)
412 TI_DBG3((
"tiINIGetDeviceHandles: pid %d did %d\n", onePortContext->
id, oneDeviceData->
id));
418 TI_DBG3((
"tiINIGetDeviceHandles: different port\n"));
419 DeviceListList = DeviceListList->
flink;
440 TI_DBG2((
"tiINIGetDeviceHandles: SSP DeviceIndex %d tiDeviceHandle %p\n", DeviceIndex, &(oneDeviceData->
tiDeviceHandle)));
448 TI_DBG2((
"tiINIGetDeviceHandles: SATA DeviceIndex %d tiDeviceHandle %p\n", DeviceIndex, &(oneDeviceData->
tiDeviceHandle)));
454 TI_DBG3((
"tiINIGetDeviceHandles: skip case !!!\n"));
458 TI_DBG3((
"tiINIGetDeviceHandles: oneDeviceData->tdPortContext %p onePortContext %p\n", oneDeviceData->
tdPortContext, onePortContext));
460 TI_DBG3((
"tiINIGetDeviceHandles: valid FoundDevices %d\n", FoundDevices));
467 TI_DBG3((
"tiINIGetDeviceHandles: oneDeviceData->tdPortContext %p onePortContext %p\n", oneDeviceData->
tdPortContext, onePortContext));
470 DeviceListList = DeviceListList->
flink;
474 if (DeviceIndex > maxDevs)
476 TI_DBG1((
"tiINIGetDeviceHandles: DeviceIndex(%d) >= maxDevs(%d)\n", DeviceIndex, maxDevs));
477 FoundDevices = maxDevs;
480 TI_DBG1((
"tiINIGetDeviceHandles: returning %d found devices, pid %d\n", FoundDevices, onePortContext->
id));
520 bit32 FoundDevices = 0;
521 bit32 DeviceIndex = 0;
523#ifdef TD_DEBUG_ENABLE
527 dmRoot_t *dmRoot = &(tdsaAllShared->dmRoot);
530 TI_DBG2((
"tiINIGetDeviceHandlesForWinIOCTL: start\n"));
536 TI_DBG1((
"tiINIGetDeviceHandlesForWinIOCTL: maxDevs is 0\n"));
537 TI_DBG1((
"tiINIGetDeviceHandlesForWinIOCTL: first, returning 0\n"));
539 for (i = 0 ; i < maxDevs ; i++)
547 if (
TDLIST_EMPTY(&(tdsaAllShared->MainPortContextList)))
550 TI_DBG1((
"tiINIGetDeviceHandlesForWinIOCTL: No available tdsaPortContext\n"));
551 TI_DBG1((
"tiINIGetDeviceHandlesForWinIOCTL: second, returning 0\n"));
553 for (i = 0 ; i < maxDevs ; i++)
564 PortContextList = tdsaAllShared->MainPortContextList.
flink;
565 while (PortContextList != &(tdsaAllShared->MainPortContextList))
568 if(onePortContext ==
agNULL)
continue;
570 TI_DBG3((
"tiINIGetDeviceHandlesForWinIOCTL: oneportContext pid %d\n", onePortContext->
id));
573 TI_DBG3((
"tiINIGetDeviceHandlesForWinIOCTL: found; oneportContext pid %d\n", onePortContext->
id));
577 PortContextList = PortContextList->
flink;
582 TI_DBG1((
"tiINIGetDeviceHandlesForWinIOCTL: First, No corresponding tdsaPortContext\n"));
583 TI_DBG1((
"tiINIGetDeviceHandlesForWinIOCTL: third, returning 0\n"));
585 for (i = 0 ; i < maxDevs ; i++)
592 if (onePortContext ==
agNULL)
594 TI_DBG1((
"tiINIGetDeviceHandlesForWinIOCTL: Second, No corressponding tdsaPortContext\n"));
595 TI_DBG1((
"tiINIGetDeviceHandlesForWinIOCTL: fourth, returning 0\n"));
597 for (i = 0 ; i < maxDevs ; i++)
606 TI_DBG1((
"tiINIGetDeviceHandlesForWinIOCTL: Third, tdsaPortContext is invalid, pid %d\n", onePortContext->
id));
607 TI_DBG1((
"tiINIGetDeviceHandlesForWinIOCTL: fifth, returning 0\n"));
609 for (i = 0 ; i < maxDevs ; i++)
618 TI_DBG1((
"tiINIGetDeviceHandlesForWinIOCTL: forth, discovery failed, pid %d\n", onePortContext->
id));
619 TI_DBG1((
"tiINIGetDeviceHandlesForWinIOCTL: sixth, returning 0\n"));
621 for (i = 0 ; i < maxDevs ; i++)
630 TI_DBG1((
"tiINIGetDeviceHandlesForWinIOCTL: discovery not completed\n"));
631 TI_DBG1((
"tiINIGetDeviceHandlesForWinIOCTL: sixth, returning DISCOVERY_IN_PROGRESS, pid %d\n", onePortContext->
id));
636 TI_DBG2((
"tiINIGetDeviceHandlesForWinIOCTL: pid %d\n", onePortContext->
id));
639 tdsaUpdateMCN(dmRoot, onePortContext);
643 for (i = 0 ; i < maxDevs ; i++)
651 DeviceListList = tdsaAllShared->MainDeviceList.
flink;
653 TD_ASSERT(DeviceListList,
"DeviceListList NULL");
654 if (DeviceListList ==
agNULL )
656 TI_DBG1((
"tiINIGetDeviceHandlesForWinIOCTL: DeviceListList == agNULL\n"));
657 TI_DBG1((
"tiINIGetDeviceHandlesForWinIOCTL: seventh, returning not found, pid %d\n", onePortContext->
id));
661 while ((DeviceIndex < maxDevs) &&
662 DeviceListList != &(tdsaAllShared->MainDeviceList))
665 if(oneDeviceData ==
agNULL)
667 TI_DBG3((
"tiINIGetDeviceHandles: OneDeviceData is NULL\n"));
670#ifdef TD_DEBUG_ENABLE
672 if (pSatDevData !=
agNULL)
674 TI_DBG3((
"tiINIGetDeviceHandlesForWinIOCTL: device %p satPendingIO %d satNCQMaxIO %d\n",pSatDevData, pSatDevData->
satPendingIO, pSatDevData->
satNCQMaxIO ));
678 TI_DBG3((
"tiINIGetDeviceHandlesForWinIOCTL: pid %d did %d\n", onePortContext->
id, oneDeviceData->
id));
684 TI_DBG3((
"tiINIGetDeviceHandlesForWinIOCTL: different port\n"));
685 DeviceListList = DeviceListList->
flink;
706 TI_DBG2((
"tiINIGetDeviceHandlesForWinIOCTL: SSP DeviceIndex %d tiDeviceHandle %p\n", DeviceIndex, &(oneDeviceData->
tiDeviceHandle)));
715 TI_DBG2((
"tiINIGetDeviceHandlesForWinIOCTL: SATA DeviceIndex %d tiDeviceHandle %p\n", DeviceIndex, &(oneDeviceData->
tiDeviceHandle)));
722 TI_DBG2((
"tiINIGetDeviceHandlesForWinIOCTL: SMP DeviceIndex %d tiDeviceHandle %p\n", DeviceIndex, &(oneDeviceData->
tiDeviceHandle)));
729 TI_DBG3((
"tiINIGetDeviceHandlesForWinIOCTL: skip case !!!\n"));
732 TI_DBG3((
"tiINIGetDeviceHandlesForWinIOCTL: registered %d right port %d \n", oneDeviceData->
registered, (oneDeviceData->
tdPortContext == onePortContext)));
733 TI_DBG3((
"tiINIGetDeviceHandlesForWinIOCTL: oneDeviceData->tdPortContext %p onePortContext %p\n", oneDeviceData->
tdPortContext, onePortContext));
735 TI_DBG3((
"tiINIGetDeviceHandlesForWinIOCTL: valid FoundDevices %d\n", FoundDevices));
736 TI_DBG3((
"tiINIGetDeviceHandlesForWinIOCTL: agDevHandle %p\n", oneDeviceData->
agDevHandle));
741 TI_DBG3((
"tiINIGetDeviceHandlesForWinIOCTL: registered %d right port %d \n", oneDeviceData->
registered, (oneDeviceData->
tdPortContext == onePortContext)));
742 TI_DBG3((
"tiINIGetDeviceHandlesForWinIOCTL: oneDeviceData->tdPortContext %p onePortContext %p\n", oneDeviceData->
tdPortContext, onePortContext));
745 DeviceListList = DeviceListList->
flink;
749 if (DeviceIndex > maxDevs)
751 TI_DBG1((
"tiINIGetDeviceHandlesForWinIOCTL: DeviceIndex(%d) >= maxDevs(%d)\n", DeviceIndex, maxDevs));
752 FoundDevices = maxDevs;
755 TI_DBG1((
"tiINIGetDeviceHandlesForWinIOCTL: returning %d found devices, pid %d\n", FoundDevices, onePortContext->
id));
788 bit8 SN_id_limit[25];
791 TI_DBG6((
"tiINIGetDeviceInfo: start \n"));
795 TI_DBG6((
"tiINIGetDeviceInfo: tiDeviceHandle NULL\n"));
801 TI_DBG6((
"tiINIGetDeviceInfo: ^^^^^^^^^ tiDeviceHandle->tdData NULL\n"));
808 agRoot = oneDeviceData->
agRoot;
809 TI_DBG6((
"tiINIGetDeviceInfo: ^^^^^^^^^ tiDeviceHandle->tdData NOT NULL\n"));
811 if (oneDeviceData ==
agNULL)
813 TI_DBG6((
"tiINIGetDeviceInfo: ^^^^^^^^^ oneDeviceData NULL\n"));
893 TI_DBG1((
"tiINIGetDeviceInfo: Error! oneDeviceData->agDevHandle is NULL"));
930 TI_DBG6((
"tiINILogin: start\n"));
960 TI_DBG6((
"tiINILogout: start\n"));
988 if (oneTargetDeviceData ==
agNULL)
990 TI_DBG1((
"tiINIGetExpander: oneTargetDeviceData is NULL\n"));
994 if (
TDLIST_EMPTY(&(tdsaAllShared->MainPortContextList)))
997 TI_DBG1((
"tiINIGetExpander: No available tdsaPortContext\n"));
998 TI_DBG1((
"tiINIGetExpander: second, returning 0\n"));
1006 PortContextList = tdsaAllShared->MainPortContextList.
flink;
1007 while (PortContextList != &(tdsaAllShared->MainPortContextList))
1010 TI_DBG3((
"tiINIGetExpander: oneportContext pid %d\n", onePortContext->
id));
1013 TI_DBG3((
"tiINIGetExpander: found; oneportContext pid %d\n", onePortContext->
id));
1017 PortContextList = PortContextList->
flink;
1021 TI_DBG1((
"tiINIGetExpander: First, No corresponding tdsaPortContext\n"));
1022 TI_DBG1((
"tiINIGetExpander: third, returning 0\n"));
1025 if (onePortContext ==
agNULL)
1027 TI_DBG1((
"tiINIGetExpander: Second, No corressponding tdsaPortContext\n"));
1028 TI_DBG1((
"tiINIGetExpander: fourth, returning 0\n"));
1033 TI_DBG1((
"tiINIGetExpander: Third, tdsaPortContext is invalid, pid %d\n", onePortContext->
id));
1034 TI_DBG1((
"tiINIGetExpander: fifth, returning 0\n"));
1037 DeviceListList = tdsaAllShared->MainDeviceList.
flink;
1038 while ( DeviceListList != &(tdsaAllShared->MainDeviceList) )
1043 TI_DBG3((
"tiINIGetExpander: different port\n"));
1044 DeviceListList = DeviceListList->
flink;
1048 if (oneDeviceData == oneTargetDeviceData)
1050 oneExpanderDeviceData = oneDeviceData->
ExpDevice;
1051 if (oneExpanderDeviceData ==
agNULL)
1053 TI_DBG1((
"tiINIGetExpander: oneExpanderDeviceData is NULL\n"));
1059 DeviceListList = DeviceListList->
flink;
1070 agsaRoot_t *agRoot = &tdsaAllShared->agRootInt;
1075 agIoctlPayload.
Length = 4096;
1092#if !(defined(__FreeBSD__))
1093 printk(
"Error getting Adapter WWN\n");
1095 printf(
"Error getting Adapter WWN\n");
1103 TI_DBG3((
"SAS AddressHi is 0x%x\n", *(
bit32 *)(tdsaAllShared->Ports[i].SASID.sasAddressHi)));
1104 TI_DBG3((
"SAS AddressLo is 0x%x\n", *(
bit32 *)(tdsaAllShared->Ports[i].SASID.sasAddressLo)));
1106 *sasAddressHi = tdsaAllShared->Ports[phyId].SASID.sasAddressHi;
1107 *sasAddressLo = tdsaAllShared->Ports[phyId].SASID.sasAddressLo;
1127 bit32 DeviceIndex = 0;
1131 TI_DBG2((
"tiINIGetExpDeviceHandleBySasAddress: start\n"));
1137 TI_DBG1((
"tiINIGetExpDeviceHandleBySasAddress: maxDevs is 0\n"));
1143 if (
TDLIST_EMPTY(&(tdsaAllShared->MainPortContextList)))
1146 TI_DBG1((
"tiINIGetExpDeviceHandleBySasAddress: No available tdsaPortContext\n"));
1147 TI_DBG1((
"tiINIGetExpDeviceHandleBySasAddress: second, returning 0\n"));
1155 PortContextList = tdsaAllShared->MainPortContextList.
flink;
1157 if(PortContextList ==
agNULL)
1159 TI_DBG6((
"tiINIGetExpDeviceHandleBySasAddress: PortContextList is NULL!!\n"));
1163 while (PortContextList != &(tdsaAllShared->MainPortContextList))
1167 if(onePortContext ==
agNULL)
1169 TI_DBG6((
"tiINIGetExpDeviceHandleBySasAddress: onePortContext is NULL!!\n"));
1173 TI_DBG3((
"tiINIGetExpDeviceHandleBySasAddress: oneportContext pid %d\n", onePortContext->
id));
1176 TI_DBG3((
"tiINIGetExpDeviceHandleBySasAddress: found; oneportContext pid %d\n", onePortContext->
id));
1181 if(PortContextList !=
agNULL)
1183 PortContextList = PortContextList->
flink;
1190 TI_DBG1((
"tiINIGetExpDeviceHandleBySasAddress: First, No corresponding tdsaPortContext\n"));
1191 TI_DBG1((
"tiINIGetExpDeviceHandleBySasAddress: third, returning 0\n"));
1196 if (onePortContext ==
agNULL)
1198 TI_DBG1((
"tiINIGetExpDeviceHandleBySasAddress: Second, No corressponding tdsaPortContext\n"));
1199 TI_DBG1((
"tiINIGetExpDeviceHandleBySasAddress: fourth, returning 0\n"));
1206 TI_DBG1((
"tiINIGetExpDeviceHandleBySasAddress: Third, tdsaPortContext is invalid, pid %d\n", onePortContext->
id));
1207 TI_DBG1((
"tiINIGetExpDeviceHandleBySasAddress: fifth, returning 0\n"));
1212 TI_DBG2((
"tiINIGetExpDeviceHandleBySasAddress: pid %d\n", onePortContext->
id));
1219 DeviceListList = tdsaAllShared->MainDeviceList.
flink;
1221 if(DeviceListList ==
agNULL)
1223 TI_DBG1((
"tiINIGetExpDeviceHandleBySasAddress: DeviceListList == agNULL\n"));
1224 TI_DBG1((
"tiINIGetExpDeviceHandleBySasAddress: seventh, returning not found, pid %d\n", onePortContext->
id));
1228 while ((DeviceIndex < maxDevs) &&
1229 DeviceListList != &(tdsaAllShared->MainDeviceList))
1233 if(oneDeviceData ==
agNULL)
1235 TI_DBG3((
"tiINIGetExpDeviceHandleBySasAddress: oneDeviceData is NULL!!\n"));
1243 TI_DBG3((
"tiINIGetExpDeviceHandleBySasAddress: different port\n"));
1245 if(DeviceListList !=
agNULL)
1247 DeviceListList = DeviceListList->
flink;
1269 TI_DBG3((
"tiINIGetExpDeviceHandleBySasAddress: agDevHandle %p\n", oneDeviceData->
agDevHandle));
1275 DeviceListList = DeviceListList->
flink;
1315 TI_DBG3((
"tdsaDiscover: start\n"));
1319 TI_DBG1((
"tdsaDiscover: aborting discovery\n"));
1320 tdsaSASDiscoverAbort(
tiRoot, onePortContext);
1326 case TDSA_DISCOVERY_OPTION_FULL_START:
1327 TI_DBG3((
"tdsaDiscover: full\n"));
1328 onePortContext->
discovery.
type = TDSA_DISCOVERY_OPTION_FULL_START;
1329 if ( type == TDSA_DISCOVERY_TYPE_SAS )
1331 ret = tdsaSASFullDiscover(
tiRoot, onePortContext);
1334 else if ( type == TDSA_DISCOVERY_TYPE_SATA )
1338 ret = tdsaSATAFullDiscover(
tiRoot, onePortContext);
1343 case TDSA_DISCOVERY_OPTION_INCREMENTAL_START:
1344 TI_DBG3((
"tdsaDiscover: incremental\n"));
1345 onePortContext->
discovery.
type = TDSA_DISCOVERY_OPTION_INCREMENTAL_START;
1346 if ( type == TDSA_DISCOVERY_TYPE_SAS )
1348 TI_DBG3((
"tdsaDiscover: incremental SAS\n"));
1349 ret = tdsaSASIncrementalDiscover(
tiRoot, onePortContext);
1352 else if ( type == TDSA_DISCOVERY_TYPE_SATA )
1356 TI_DBG3((
"tdsaDiscover: incremental SATA\n"));
1357 ret = tdsaSATAIncrementalDiscover(
tiRoot, onePortContext);
1362 case TDSA_DISCOVERY_OPTION_ABORT:
1363 TI_DBG1((
"tdsaDiscover: abort\n"));
1371 TI_DBG1((
"tdsaDiscover: fail, error 0x%x\n", ret));
1405 TI_DBG3((
"tdsaSASFullDiscover: start\n"));
1408 TI_DBG1((
"tdsaSASFullDiscover: aborting discovery\n"));
1409 tdsaSASDiscoverAbort(
tiRoot, onePortContext);
1422 DeviceListList = tdsaAllShared->MainDeviceList.
flink;
1423 while (DeviceListList != &(tdsaAllShared->MainDeviceList))
1426 TI_DBG3((
"tdsaSASFullDiscover: STARTED loop id %d\n", oneDeviceData->
id));
1433 TI_DBG3((
"tdsaSASFullDiscover: invalidate\n"));
1439 TI_DBG3((
"tdsaSASFullDiscover: not invalidate\n"));
1442 DeviceListList = DeviceListList->
flink;
1471 portMaxRate = onePortContext->
LinkRate;
1472 oneDeviceData = tdsaPortSASDeviceAdd(
1492 tdsaDeviceRegistrationTimer(
tiRoot, onePortContext, oneDeviceData);
1496 tdsaSASUpStreamDiscoverStart(
tiRoot, onePortContext, oneDeviceData);
1501 tdsaReportManInfoSend(
tiRoot, oneDeviceData);
1531tdsaSASUpStreamDiscoverStart(
1539 TI_DBG3((
"tdsaSASUpStreamDiscoverStart: start\n"));
1543 TI_DBG1((
"tdsaSASUpStreamDiscoverStart: aborting discovery\n"));
1544 tdsaSASDiscoverAbort(
tiRoot, onePortContext);
1561 oneExpander = tdssSASDiscoveringExpanderAlloc(
tiRoot, onePortContext, oneDeviceData);
1562 if ( oneExpander !=
agNULL)
1565 tdssSASDiscoveringExpanderAdd(
tiRoot, onePortContext, oneExpander);
1569 TI_DBG1((
"tdsaSASUpStreamDiscoverStart: failed to allocate expander or discovey aborted\n"));
1574 tdsaSASUpStreamDiscovering(
tiRoot, onePortContext, oneDeviceData);
1598tdsaSASUpStreamDiscovering(
1607 TI_DBG3((
"tdsaSASUpStreamDiscovering: start\n"));
1610 TI_DBG1((
"tdsaSASUpStreamDiscovering: aborting discovery\n"));
1611 tdsaSASDiscoverAbort(
tiRoot, onePortContext);
1624 TI_DBG3((
"tdsaSASUpStreamDiscovering: should be the end\n"));
1625 oneNextExpander =
agNULL;
1634 TI_DBG3((
"tdssSASDiscoveringExpander tdsaSASUpStreamDiscovering: dequeue head\n"));
1635 TI_DBG3((
"tdsaSASUpStreamDiscovering: expander id %d\n", oneNextExpander->
id));
1638 if (oneNextExpander !=
agNULL)
1644 TI_DBG3((
"tdsaSASUpStreamDiscovering: No more expander list\n"));
1645 tdsaSASDownStreamDiscoverStart(
tiRoot, onePortContext, oneDeviceData);
1669tdsaSASDownStreamDiscoverStart(
1677 TI_DBG3((
"tdsaSASDownStreamDiscoverStart: start\n"));
1681 TI_DBG1((
"tdsaSASDownStreamDiscoverStart: aborting discovery\n"));
1682 tdsaSASDiscoverAbort(
tiRoot, onePortContext);
1695 TI_DBG3((
"tdsaSASDownStreamDiscoverStart: pPort=%p pDevice=%p\n", onePortContext, oneDeviceData));
1707 TI_DBG3((
"tdsaSASDownStreamDiscoverStart: Root found pExpander=%p pUpStreamExpander=%p\n",
1708 oneExpander, UpStreamExpander));
1717 tdssSASDiscoveringExpanderAdd(
tiRoot, onePortContext, oneExpander);
1722 tdssSASDiscoveringExpanderAdd(
tiRoot, onePortContext, UpStreamExpander);
1730 TI_DBG3((
"tdsaSASDownStreamDiscoverStart: NO Root pExpander=%p\n", oneExpander));
1735 tdssSASDiscoveringExpanderAdd(
tiRoot, onePortContext, oneExpander);
1740 tdsaSASDownStreamDiscovering(
tiRoot, onePortContext, oneDeviceData);
1764tdsaSASDownStreamDiscovering(
1773 TI_DBG3((
"tdsaSASDownStreamDiscovering: start\n"));
1775 TI_DBG3((
"tdsaSASDownStreamDiscovering: pPort=%p pDevice=%p\n", onePortContext, oneDeviceData));
1779 TI_DBG1((
"tdsaSASDownStreamDiscovering: aborting discovery\n"));
1780 tdsaSASDiscoverAbort(
tiRoot, onePortContext);
1788 TI_DBG3((
"tdsaSASDownStreamDiscovering: should be the end\n"));
1797 TI_DBG3((
"tdssSASDiscoveringExpander tdsaSASDownStreamDiscovering: dequeue head\n"));
1798 TI_DBG3((
"tdsaSASDownStreamDiscovering: expander id %d\n", NextExpander->
id));
1803 if ( NextExpander !=
agNULL)
1805 TI_DBG3((
"tdsaSASDownStreamDiscovering: Found pNextExpander=%p\n, discoveryStatus=0x%x",
1813 TI_DBG3((
"tdsaSASDownStreamDiscovering: DownStream pNextExpander->pDevice=%p\n", NextExpander->
tdDevice));
1823 TI_DBG3((
"tdsaSASDownStreamDiscovering: pPort->discovery.status=DISCOVERY_CONFIG_ROUTING, nake it DOWN_STREAM\n"));
1827 TI_DBG3((
"tdsaSASDownStreamDiscovering: pNextExpander->discoveringPhyId=0x%x pNextExpander->pDevice->numOfPhys=0x%x. Send More Discover\n",
1835 TI_DBG3((
"tdsaSASDownStreamDiscovering: Last Phy, remove expander%p start DownStream=%p\n",
1836 NextExpander, NextExpander->
tdDevice));
1837 tdssSASDiscoveringExpanderRemove(
tiRoot, onePortContext, NextExpander);
1838 tdsaSASDownStreamDiscovering(
tiRoot, onePortContext, NextExpander->
tdDevice);
1843 TI_DBG3((
"tdsaSASDownStreamDiscovering: *** Unknown pPort->discovery.status=0x%x\n", onePortContext->
discovery.
status));
1849 TI_DBG3((
"tdsaSASDownStreamDiscovering: No more expander DONE\n"));
1885 TI_DBG3((
"tdssSASDiscoveringExpander tdsaCleanAllExp: start\n"));
1887 TI_DBG3((
"tdssSASDiscoveringExpander tdsaCleanAllExp: before all clean up\n"));
1888 tdsaDumpAllFreeExp(
tiRoot);
1891 TI_DBG3((
"tdssSASDiscoveringExpander tdsaCleanAllExp: clean discoveringExpanderList\n"));
1924 TI_DBG3((
"tdssSASDiscoveringExpander tdsaCleanAllExp: empty discoveringExpanderList\n"));
1930 TI_DBG3((
"tdssSASDiscoveringExpander tdsaCleanAllExp: after all clean up\n"));
1931 tdsaDumpAllFreeExp(
tiRoot);
1964 TI_DBG3((
"tdssSASDiscoveringExpander tdsaFreeAllExp: start\n"));
1966 TI_DBG3((
"tdssSASDiscoveringExpander tdsaFreeAllExp: before all clean up\n"));
1967 tdsaDumpAllFreeExp(
tiRoot);
1970 TI_DBG3((
"tdssSASDiscoveringExpander tdsaFreeAllExp: clean discoveringExpanderList\n"));
2003 TI_DBG3((
"tdssSASDiscoveringExpander tdsaFreeAllExp: empty discoveringExpanderList\n"));
2028tdsaResetValidDeviceData(
2040 TI_DBG3((
"tdsaResetValidDeviceData: start\n"));
2046 TI_DBG1((
"tdsaResetValidDeviceData: empty device list\n"));
2051 DeviceListList = tdsaAllShared->MainDeviceList.
flink;
2052 while (DeviceListList != &(tdsaAllShared->MainDeviceList))
2057 DeviceListList = DeviceListList->
flink;
2058 TI_DBG3((
"tdsaResetValidDeviceData: valid %d valid2 %d\n", oneDeviceData->
valid, oneDeviceData->
valid2));
2095 TI_DBG1((
"tdssReportChanges: start\n"));
2101 TI_DBG1((
"tdssReportChanges: empty device list\n"));
2108 DeviceListList = tdsaAllShared->MainDeviceList.
flink;
2109 while (DeviceListList != &(tdsaAllShared->MainDeviceList))
2116 TI_DBG3((
"tdssReportChanges: right portcontext\n"));
2119 TI_DBG3((
"tdssReportChanges: same\n"));
2126 TI_DBG3((
"tdssReportChanges: removed\n"));
2143 TI_DBG1((
"tdssReportChanges: calling saDeregisterDeviceHandle, did %d\n", oneDeviceData->
id));
2156 TI_DBG3((
"tdssReportChanges: added\n"));
2164 TI_DBG6((
"tdssReportChanges: else\n"));
2169 TI_DBG1((
"tdssReportChanges: different portcontext\n"));
2171 DeviceListList = DeviceListList->
flink;
2176 TI_DBG3((
"tdssReportChanges: added at the end\n"));
2178 if (tdsaAllShared->SASConnectTimeLimit)
2195 TI_DBG3((
"tdssReportChanges: removed at the end\n"));
2208 TI_DBG1((
"tdssReportChanges: missed chance to report. forced to report OK\n"));
2222 TI_DBG3((
"tdssReportChanges: the same\n"));
2263 TI_DBG2((
"tdssReportRemovals: start\n"));
2266 if (tdsaAllShared->eventSource[PhyID].EventValid ==
agTRUE &&
2271 TI_DBG2((
"tdssReportRemovals: calling saHwEventAck\n"));
2272 eventSource = &(tdsaAllShared->eventSource[PhyID].Source);
2283 TI_DBG1((
"tdssReportRemovals: failing in saHwEventAck; status %d\n", HwAckSatus));
2287 tdsaAllShared->eventSource[PhyID].EventValid =
agFALSE;
2291 DeviceListList = tdsaAllShared->MainDeviceList.
flink;
2292 while (DeviceListList != &(tdsaAllShared->MainDeviceList))
2307 DeviceListList = tdsaAllShared->MainDeviceList.
flink;
2311 DeviceListList = DeviceListList->
flink;
2333 TI_DBG1((
"tdssReportRemovals: 1st empty device list\n"));
2340 DeviceListList = tdsaAllShared->MainDeviceList.
flink;
2342 while (DeviceListList != &(tdsaAllShared->MainDeviceList))
2345 if (oneDeviceData ==
agNULL)
2347 TI_DBG1((
"tdssReportRemovals: oneDeviceData is NULL!!!\n"));
2350 TI_DBG2((
"tdssReportRemovals: 1st loop did %d\n", oneDeviceData->
id));
2353 TI_DBG2((
"tdssReportRemovals: valid %d\n", oneDeviceData->
valid));
2354 TI_DBG2((
"tdssReportRemovals: valid2 %d\n", oneDeviceData->
valid2));
2362 TI_DBG2((
"tdssReportRemovals: delete from MainLink\n"));
2373 DeviceListList = tdsaAllShared->MainDeviceList.
flink;
2387 DeviceListList = DeviceListList->
flink;
2396 TI_DBG1((
"tdssReportRemovals: 2nd empty device list\n"));
2403 DeviceListList = tdsaAllShared->MainDeviceList.
flink;
2404 while (DeviceListList != &(tdsaAllShared->MainDeviceList))
2407 if (oneDeviceData ==
agNULL)
2409 TI_DBG1((
"tdssReportRemovals: oneDeviceData is NULL!!!\n"));
2412 TI_DBG2((
"tdssReportRemovals: loop did %d\n", oneDeviceData->
id));
2415 TI_DBG2((
"tdssReportRemovals: valid %d\n", oneDeviceData->
valid));
2416 TI_DBG2((
"tdssReportRemovals: valid2 %d\n", oneDeviceData->
valid2));
2421 TI_DBG2((
"tdssReportRemovals: right portcontext pid %d\n", onePortContext->
id));
2424 TI_DBG2((
"tdssReportRemovals: removing\n"));
2441 TI_DBG2((
"tdssReportRemovals: calling tdsaAbortAll\n"));
2442 TI_DBG2((
"tdssReportRemovals: did %d\n", oneDeviceData->
id));
2450 TI_DBG1((
"tdssReportRemovals: calling saDeregisterDeviceHandle, did %d\n", oneDeviceData->
id));
2468 TI_DBG1((
"tdssReportRemovals: nulling-out tdPortContext; oneDeviceData did %d\n", oneDeviceData->
id));
2475 TI_DBG1((
"tdssReportRemovals: device did %d\n", oneDeviceData->
id));
2478 DeviceListList = tdsaAllShared->MainDeviceList.
flink;
2486 DeviceListList = DeviceListList->
flink;
2489 DeviceListList = DeviceListList->
flink;
2495 TI_DBG2((
"tdssReportRemovals: different portcontext; oneDeviceData->tdPortContext pid %d oneportcontext pid %d oneDeviceData did %d\n",
2500 TI_DBG1((
"tdssReportRemovals: different portcontext; oneDeviceData->tdPortContext pid NULL oneportcontext pid %d oneDeviceData did %d\n",
2501 onePortContext->
id, oneDeviceData->
id));
2503 DeviceListList = DeviceListList->
flink;
2509 TI_DBG2((
"tdssReportRemovals: removed at the end\n"));
2527tdssInternalRemovals(
2539 TI_DBG2((
"tdssInternalRemovals: start\n"));
2545 TI_DBG1((
"tdssInternalRemovals: empty device list\n"));
2552 DeviceListList = tdsaAllShared->MainDeviceList.
flink;
2553 while (DeviceListList != &(tdsaAllShared->MainDeviceList))
2556 TI_DBG3((
"tdssInternalRemovals: loop did %d\n", oneDeviceData->
id));
2559 TI_DBG3((
"tdssInternalRemovals: valid %d\n", oneDeviceData->
valid));
2560 TI_DBG3((
"tdssInternalRemovals: valid2 %d\n", oneDeviceData->
valid2));
2565 TI_DBG3((
"tdssInternalRemovals: right portcontext pid %d\n", onePortContext->
id));
2566 if (onePortContext->
discovery.
type == TDSA_DISCOVERY_OPTION_INCREMENTAL_START)
2568 TI_DBG3((
"tdssInternalRemovals: incremental discovery\n"));
2573 TI_DBG3((
"tdssInternalRemovals: full discovery\n"));
2576 DeviceListList = DeviceListList->
flink;
2582 TI_DBG3((
"tdssInternalRemovals: different portcontext; oneDeviceData->tdPortContext pid %d oneportcontext pid %d\n", oneDeviceData->
tdPortContext->
id, onePortContext->
id));
2586 TI_DBG3((
"tdssInternalRemovals: different portcontext; oneDeviceData->tdPortContext pid NULL oneportcontext pid %d\n", onePortContext->
id));
2588 DeviceListList = DeviceListList->
flink;
2598tdssDiscoveryErrorRemovals(
2610 TI_DBG1((
"tdssDiscoveryErrorRemovals: start\n"));
2616 TI_DBG1((
"tdssDiscoveryErrorRemovals: empty device list\n"));
2623 DeviceListList = tdsaAllShared->MainDeviceList.
flink;
2624 while (DeviceListList != &(tdsaAllShared->MainDeviceList))
2627 TI_DBG2((
"tdssDiscoveryErrorRemovals: loop did %d\n", oneDeviceData->
id));
2630 TI_DBG2((
"tdssDiscoveryErrorRemovals: valid %d\n", oneDeviceData->
valid));
2631 TI_DBG2((
"tdssDiscoveryErrorRemovals: valid2 %d\n", oneDeviceData->
valid2));
2633 TI_DBG2((
"tdssDiscoveryErrorRemovals: registered %d\n", oneDeviceData->
registered));
2636 TI_DBG2((
"tdssDiscoveryErrorRemovals: right portcontext pid %d\n", onePortContext->
id));
2648 TI_DBG2((
"tdssDiscoveryErrorRemovals: calling tdsaAbortAll\n"));
2649 TI_DBG2((
"tdssDiscoveryErrorRemovals: did %d\n", oneDeviceData->
id));
2657 TI_DBG2((
"tdssDiscoveryErrorRemovals: calling saDeregisterDeviceHandle\n"));
2658 TI_DBG2((
"tdssDiscoveryErrorRemovals: did %d\n", oneDeviceData->
id));
2665 DeviceListList = DeviceListList->
flink;
2671 TI_DBG2((
"tdssDiscoveryErrorRemovals: different portcontext; oneDeviceData->tdPortContext pid %d oneportcontext pid %d\n", oneDeviceData->
tdPortContext->
id, onePortContext->
id));
2675 TI_DBG2((
"tdssDiscoveryErrorRemovals: different portcontext; oneDeviceData->tdPortContext pid NULL oneportcontext pid %d\n", onePortContext->
id));
2677 DeviceListList = DeviceListList->
flink;
2704tdsaSASDiscoverAbort(
2710 TI_DBG2((
"tdsaSASDiscoverAbort: start\n"));
2711 TI_DBG2((
"tdsaSASDiscoverAbort: pPort=%p DONE\n", onePortContext));
2716 tdsaCleanAllExp(
tiRoot, onePortContext);
2719 tdssReportRemovals(onePortContext->
agRoot,
2731 tdIORequest_t *tdIORequest,
2747 tdIORequest_t *tdIORequest;
2750 tdIORequest = (tdIORequest_t *)agIORequest->
osData;
2751 tdIORequestBody = &tdIORequest->tdIORequestBody;
2756 TI_DBG6((
"tdsaCTLIOCompleted: stat x%x len %d id %d\n", agIOStatus,
2757 agIOInfoLen, oneDeviceData->
id));
2763 TI_DBG6((
"tdsaCTLIOCompleted: SASDevAddr 0x%x / 0x%x PhyId 0x%x WARN "
2768 tdhexdump(
"tdsaCTLIOCompleted: response", (
bit8 *)agParam, agIOInfoLen);
2779 tdIORequest_t *tdIORequest)
2794 unsigned char *virtAddr;
2796 static unsigned char cdb[6] =
2805 virtAddr = (
unsigned char*)tdIORequest->virtAddr;
2806 virtAddr[0] = DR_MODE_PG_CODE;
2807 virtAddr[1] = DR_MODE_PG_LENGTH;
2808 virtAddr[8] = tdsaAllShared->SASConnectTimeLimit >> 8;
2809 virtAddr[9] = tdsaAllShared->SASConnectTimeLimit & 0xff;
2812 TI_DBG4((
"tdsaCTLModeSelect: id %d\n", oneDeviceData->
id));
2814 agRoot = oneDeviceData->
agRoot;
2818 tdIORequestBody = &tdIORequest->tdIORequestBody;
2831 agSSPInitiatorRequest->
dataLength = DR_MODE_PG_SZ;
2839 agSgl.
lower = BIT32_TO_LEBIT32(tdIORequest->physLower32);
2840#if (BITS_PER_LONG > 32)
2841 agSgl.
upper = BIT32_TO_LEBIT32(tdIORequest->physUpper32);
2846 agSgl.
len = BIT32_TO_LEBIT32(DR_MODE_PG_SZ);
2850 tdIORequest->virtAddr);
2853 TI_DBG1((
"tdsaCTLModeSelect: can't get SGL\n"));
2862 &tdsaCTLIOCompleted);
2866 TI_DBG4((
"tdsaCTLModeSelect: saSSPStart OK\n"));
2875 TI_DBG4((
"tdsaCTLModeSelect: saSSPStart busy\n"));
2880 TI_DBG4((
"tdsaCTLModeSelect: saSSPStart Error\n"));
2892 tdIORequest_t *tdIORequest,
2905 for (; DeviceList && DeviceList != &(tdsaAllShared->MainDeviceList);
2906 DeviceList = DeviceList->
flink)
2909 TI_DBG6((
"tdsaCTLNextDevice: devHandle %p\n",
2913 if ((oneDeviceData->discovered ==
agFALSE) &&
2918 oneDeviceData->discovered =
agTRUE;
2921 TI_DBG1((
"tdsaCTLNextDevice: ModeSelect ret %d\n", rc));
2925 TI_DBG2((
"tdsaCTLNextDevice: no more devices found\n"));
2927 eventType = tdIORequest->eventType;
2928 eventStatus = tdIORequest->eventStatus;
2936 eventType, eventStatus,
agNULL);
2948 tdIORequest_t *tdIORequest;
2951 bit32 memAllocStatus;
2956 TI_DBG2((
"tdsaCTLSet: tiPortalContext pid %d etyp %x stat %x\n",
2957 onePortContext->
id, eventType, eventStatus));
2961 TI_DBG1((
"tdsaCTLSet: discovery not completed\n"));
2967 &physUpper32, &physLower32, 8,
2968 sizeof(*tdIORequest),
agTRUE);
2971 TI_DBG1((
"tdsaCTLSet: ostiAllocMemory failed\n"));
2974 osti_memset(tdIORequest, 0,
sizeof(*tdIORequest));
2976 tdIORequest->osMemHandle = osMemHandle;
2977 tdIORequest->eventType = eventType;
2978 tdIORequest->eventStatus = eventStatus;
2981 tdIORequestBody = &tdIORequest->tdIORequestBody;
2992 (
void **)&tdIORequest->virtAddr,
2993 &tdIORequest->physUpper32,
2994 &tdIORequest->physLower32,
2998 TI_DBG1((
"tdsaCTLSet: ostiAllocMemory noncached failed\n"));
3003 osti_memset(tdIORequest->virtAddr, 0, DR_MODE_PG_SZ);
3004 tdsaCTLNextDevice(
tiRoot, onePortContext, tdIORequest,
3005 tdsaAllShared->MainDeviceList.flink);
3036 TI_DBG3((
"tdsaSASDiscoverDone: start\n"));
3037 TI_DBG3((
"tdsaSASDiscoverDone: pPort=%p DONE\n", onePortContext));
3038 TI_DBG3((
"tdsaSASDiscoverDone: pid %d\n", onePortContext->
id));
3043#ifdef TD_INTERNAL_DEBUG
3044 TI_DBG3((
"tdsaSASDiscoverDone: BEFORE\n"));
3050 tdsaCleanAllExp(
tiRoot, onePortContext);
3052#ifdef TD_INTERNAL_DEBUG
3053 TI_DBG3((
"tdsaSASDiscoverDone: AFTER\n"));
3064 TI_DBG3((
"tdsaSASDiscoverDone: broadcast change; discover again\n"));
3065 tdssInternalRemovals(onePortContext->
agRoot,
3071 if (tdsaAllShared->ResetInDiscovery != 0 &&
3074 TI_DBG2((
"tdsaSASDiscoverDone: tdsaBCTimer\n"));
3075 tdsaBCTimer(
tiRoot, onePortContext);
3082 TDSA_DISCOVERY_TYPE_SAS,
3083 TDSA_DISCOVERY_OPTION_INCREMENTAL_START
3091 if (onePortContext->
discovery.
type == TDSA_DISCOVERY_OPTION_FULL_START)
3096 if (tdsaAllShared->SASConnectTimeLimit)
3112 TI_DBG1((
"tdsaSASDiscoverDone: discovery failed\n"));
3113 tdssDiscoveryErrorRemovals(onePortContext->
agRoot,
3131 tdssReportChanges(onePortContext->
agRoot,
3137 tdssReportRemovals(onePortContext->
agRoot,
3146 tdsaAckBC(
tiRoot, onePortContext);
3155 TI_DBG3((
"tdsaSASDiscoverDone: calling SATA discovery\n"));
3161 if (onePortContext->
discovery.
type == TDSA_DISCOVERY_OPTION_FULL_START)
3163 TI_DBG3((
"tdsaSASDiscoverDone: calling FULL SATA discovery\n"));
3168 TDSA_DISCOVERY_OPTION_FULL_START
3173 TI_DBG3((
"tdsaSASDiscoverDone: calling INCREMENTAL SATA discovery\n"));
3178 TDSA_DISCOVERY_OPTION_INCREMENTAL_START
3185 TI_DBG1((
"tdsaSASDiscoverDone: Error; clean up\n"));
3186 tdssDiscoveryErrorRemovals(onePortContext->
agRoot,
3207tdsaReportManInfoSend(
3214 agRoot = oneDeviceData->
agRoot;
3216 TI_DBG2((
"tdsaReportManInfoSend: start\n"));
3235tdsaReportManInfoRespRcvd(
3246 TI_DBG2((
"tdsaReportManInfoRespRcvd: start\n"));
3251 discovery = &(onePortContext->
discovery);
3255 TI_DBG2((
"tdsaReportManInfoRespRcvd: SMP accepted\n"));
3262 TI_DBG2((
"tdsaReportManInfoRespRcvd: discovery retries %d\n", discovery->
retries));
3267 TI_DBG1((
"tdsaReportManInfoRespRcvd: retries are over\n"));
3273 TI_DBG1((
"tdsaReportManInfoRespRcvd: keep retrying\n"));
3275 tdsaDiscoveryTimer(
tiRoot, onePortContext, oneDeviceData);
3299tdsaReportGeneralSend(
3306 agRoot = oneDeviceData->
agRoot;
3308 TI_DBG3((
"tdsaReportGeneralSend: start\n"));
3344tdsaReportGeneralRespRcvd(
3366 TI_DBG3((
"tdsaReportGeneralRespRcvd: start\n"));
3369 ptdSMPReportGeneralResp = &tdSMPReportGeneralResp;
3392 discovery = &(onePortContext->
discovery);
3396 TI_DBG1((
"tdsaReportGeneralRespRcvd: aborting discovery\n"));
3397 tdsaSASDiscoverAbort(
tiRoot, onePortContext);
3406 for ( i = 0; i < oneDeviceData->
numOfPhys; i++ )
3414 TI_DBG3((
"tdsaReportGeneralRespRcvd: oneExpander=%p numberofPhys=0x%x RoutingIndex=0x%x\n",
3416 TI_DBG3((
"tdsaReportGeneralRespRcvd: configRouteTable=%d configuring=%d\n",
3423 TI_DBG1((
"tdsaReportGeneralRespRcvd: retries are over\n"));
3430 TI_DBG1((
"tdsaReportGeneralRespRcvd: keep retrying\n"));
3432 tdsaDiscoveryTimer(
tiRoot, onePortContext, oneDeviceData);
3438 tdsaDiscoverSend(
tiRoot, oneDeviceData);
3443 TI_DBG1((
"tdsaReportGeneralRespRcvd: SMP failed; fn result 0x%x; stopping discovery\n", frameHeader->
smpFunctionResult));
3475 TI_DBG3((
"tdsaDiscoverSend: start\n"));
3476 TI_DBG3((
"tdsaDiscoverSend: device %p did %d\n", oneDeviceData, oneDeviceData->
id));
3477 agRoot = oneDeviceData->
agRoot;
3495 (
bit8 *)&smpDiscoverReq,
3524tdsaDiscoverRespRcvd(
3541 TI_DBG3((
"tdsaDiscoverRespRcvd: start\n"));
3548 discovery = &(onePortContext->
discovery);
3555 TI_DBG1((
"tdsaDiscoverRespRcvd: aborting discovery\n"));
3556 tdsaSASDiscoverAbort(
tiRoot, onePortContext);
3584 tdsaSASUpStreamDiscoverExpanderPhy(
tiRoot, onePortContext, oneExpander, ptdSMPDiscoverResp);
3588 tdsaSASDownStreamDiscoverExpanderPhy(
tiRoot, onePortContext, oneExpander, ptdSMPDiscoverResp);
3596 TI_DBG2((
"tdsaDiscoverRespRcvd: still configuring routing; setting timer\n"));
3597 TI_DBG2((
"tdsaDiscoverRespRcvd: onePortContext %p oneDeviceData %p ptdSMPDiscoverResp %p\n", onePortContext, oneDeviceData, ptdSMPDiscoverResp));
3600 tdsaConfigureRouteTimer(
tiRoot, onePortContext, oneExpander, ptdSMPDiscoverResp);
3609 TI_DBG3((
"tdsaDiscoverRespRcvd: smpFunctionResult is PHY_VACANT, phyid %d\n",
3613 tdsaSASUpStreamDiscoverExpanderPhySkip(
tiRoot, onePortContext, oneExpander);
3617 tdsaSASDownStreamDiscoverExpanderPhySkip(
tiRoot, onePortContext, oneExpander);
3625 TI_DBG1((
"tdsaDiscoverRespRcvd: still configuring routing; setting timer\n"));
3626 TI_DBG1((
"tdsaDiscoverRespRcvd: onePortContext %p oneDeviceData %p ptdSMPDiscoverResp %p\n", onePortContext, oneDeviceData, ptdSMPDiscoverResp));
3629 tdsaConfigureRouteTimer(
tiRoot, onePortContext, oneExpander, ptdSMPDiscoverResp);
3634 TI_DBG1((
"tdsaDiscoverRespRcvd: Discovery Error SMP function return result error=%x\n",
3660tdsaSASUpStreamDiscoverExpanderPhy(
3671 bit8 connectionRate;
3672 bit32 attachedSasHi, attachedSasLo;
3675 TI_DBG3((
"tdsaSASUpStreamDiscoverExpanderPhy: start\n"));
3678 TI_DBG1((
"tdsaSASUpStreamDiscoverExpanderPhy: aborting discovery\n"));
3679 tdsaSASDiscoverAbort(
tiRoot, onePortContext);
3683 oneDeviceData = oneExpander->
tdDevice;
3684 TI_DBG3((
"tdsaSASUpStreamDiscoverExpanderPhy: Phy #%d of SAS %08x-%08x\n",
3688 TI_DBG3((
" Attached device: %s\n",
3695 TI_DBG3((
" SAS address : %08x-%08x\n",
3713 TI_DBG1((
"tdsaSASUpStreamDiscoverExpanderPhy: !!! Incorrect SMP response !!!\n"));
3728 TI_DBG3((
"tdsaSASUpStreamDiscoverExpanderPhy: SA_SAS_DEV_TYPE_FANOUT_EXPANDER\n"));
3731 TI_DBG1((
"tdsaSASUpStreamDiscoverExpanderPhy: **** Topology Error subtractive routing on fanout expander device\n"));
3747 TI_DBG3((
"tdsaSASUpStreamDiscoverExpanderPhy: SA_SAS_DEV_TYPE_EDGE_EXPANDER\n"));
3771 TI_DBG3((
"tdsaSASUpStreamDiscoverExpanderPhy: SA_SAS_ROUTING_SUBTRACTIVE\n"));
3785 TI_DBG1((
"tdsaSASUpStreamDiscoverExpanderPhy: **** Topology Error subtractive routing error - inconsistent SAS address\n"));
3807 AttachedDevice = tdsaPortSASDeviceFind(
tiRoot, onePortContext, attachedSasLo, attachedSasHi);
3809 if ( AttachedDevice !=
agNULL)
3811 TI_DBG3((
"tdsaSASUpStreamDiscoverExpanderPhy: Seen This Device Before\n"));
3816 AttachedExpander = AttachedDevice->
tdExpander;
3830 TI_DBG1((
"tdsaSASUpStreamDiscoverExpanderPhy: **** Topology Error loop detection\n"));
3844 TI_DBG3((
"tdsaSASUpStreamDiscoverExpanderPhy, *** Attached Device is not Edge. Confused!!\n"));
3851 TI_DBG3((
"tdsaSASUpStreamDiscoverExpanderPhy: New device\n"));
3856 TI_DBG3((
"siSASUpStreamDiscoverExpanderPhy: link rate 0x%x\n", onePortContext->
LinkRate));
3858 TI_DBG3((
"siSASUpStreamDiscoverExpanderPhy: connectionRate 0x%x\n", connectionRate));
3863 if (onePortContext->
discovery.
type == TDSA_DISCOVERY_OPTION_FULL_START)
3865 AttachedDevice = tdsaPortSASDeviceAdd(
3881 AttachedDevice = tdsaFindRegNValid(
3887 if (AttachedDevice ==
agNULL)
3889 AttachedDevice = tdsaPortSASDeviceAdd(
3907 if (onePortContext->
discovery.
type == TDSA_DISCOVERY_OPTION_FULL_START)
3909 AttachedDevice = tdsaPortSASDeviceAdd(
3925 AttachedDevice = tdsaFindRegNValid(
3931 if (AttachedDevice ==
agNULL)
3933 AttachedDevice = tdsaPortSASDeviceAdd(
3949 if ( AttachedDevice !=
agNULL)
3958 TI_DBG3((
"tdsaSASUpStreamDiscoverExpanderPhy: Found SSP/SMP SAS %08x-%08x\n",
3959 attachedSasHi, attachedSasLo));
3963 TI_DBG3((
"tdsaSASUpStreamDiscoverExpanderPhy: Found a SAS STP device.\n"));
3970 AttachedExpander = tdssSASDiscoveringExpanderAlloc(
3976 TI_DBG3((
"tdsaSASUpStreamDiscoverExpanderPhy: Found expander=%p\n", AttachedExpander));
3978 if ( AttachedExpander !=
agNULL)
3981 tdssSASDiscoveringExpanderAdd(
tiRoot, onePortContext, AttachedExpander);
3988 TI_DBG1((
"tdsaSASUpStreamDiscoverExpanderPhy, Failed to allocate expander data structure\n"));
3995 TI_DBG3((
"tdsaSASUpStreamDiscoverExpanderPhy: Found end device\n"));
4003 TI_DBG1((
"tdsaSASUpStreamDiscoverExpanderPhy, Failed to add a device\n"));
4019 TI_DBG3((
"tdsaSASUpStreamDiscoverExpanderPhy: DISCOVERY_UP_STREAM find more ...\n"));
4021 tdsaDiscoverSend(
tiRoot, oneDeviceData);
4025 TI_DBG3((
"tdsaSASUpStreamDiscoverExpanderPhy: DISCOVERY_UP_STREAM last phy continue upstream..\n"));
4028 tdssSASDiscoveringExpanderRemove(
tiRoot, onePortContext, oneExpander);
4030 tdsaSASUpStreamDiscovering(
tiRoot, onePortContext, oneDeviceData);
4035 TI_DBG3((
"tdsaSASUpStreamDiscoverExpanderPhy: onePortContext->discovery.status not in DISCOVERY_UP_STREAM; status %d\n", onePortContext->
discovery.
status));
4052 TI_DBG3((
"tdsaFindUpStreamConfigurableExp: start\n"));
4057 if (UpsreamExpander)
4059 TI_DBG3((
"tdsaFindUpStreamConfigurableExp: NO upsream expander\n"));
4063 while (UpsreamExpander)
4092tdsaSASUpStreamDiscoverExpanderPhySkip(
4099 TI_DBG3((
"tdsaSASUpStreamDiscoverExpanderPhySkip: start\n"));
4100 oneDeviceData = oneExpander->
tdDevice;
4110 TI_DBG3((
"tdsaSASUpStreamDiscoverExpanderPhySkip: More Phys to discover\n"));
4112 tdsaDiscoverSend(
tiRoot, oneDeviceData);
4116 TI_DBG3((
"tdsaSASUpStreamDiscoverExpanderPhySkip: No More Phys\n"));
4119 tdssSASDiscoveringExpanderRemove(
tiRoot, onePortContext, oneExpander);
4121 tdsaSASUpStreamDiscovering(
tiRoot, onePortContext, oneDeviceData);
4126 TI_DBG3((
"tdsaSASUpStreamDiscoverExpanderPhySkip: onePortContext->discovery.status not in DISCOVERY_UP_STREAM; status %d\n", onePortContext->
discovery.
status));
4130 TI_DBG3((
"tdsaSASUpStreamDiscoverExpanderPhySkip: end return phyID#%d\n", oneExpander->
discoveringPhyId - 1));
4145 TI_DBG3((
"tdsaFindDownStreamConfigurableExp: start\n"));
4150 if (DownsreamExpander)
4152 TI_DBG3((
"tdsaFindDownStreamConfigurableExp: NO downsream expander\n"));
4156 while (DownsreamExpander)
4169dumpRoutingAttributes(
4177 TI_DBG3((
"dumpRoutingAttributes: start\n"));
4178 TI_DBG3((
"dumpRoutingAttributes: phyID %d\n", phyID));
4182 for(i=0;i <= ((
bit32)phyID + 1); i++)
4219 TI_DBG3((
"tdssSASDiscoveringExpander tdsaDumpAllExp: start\n"));
4220 TI_DBG3((
"tdssSASDiscoveringExpander tdsaDumpAllExp: onePortcontext %p oneExpander %p\n", onePortContext, oneExpander));
4227 TI_DBG3((
"tdssSASDiscoveringExpander tdsaDumpAllExp: empty discoveringExpanderList\n"));
4240 TI_DBG3((
"tdssSASDiscoveringExpander tdsaDumpAllExp: expander id %d\n", tempExpander->
id));
4243 if (UpsreamExpander)
4250 TI_DBG3((
"tdssSASDiscoveringExpander tdsaDumpAllExp: No Upstream expander\n"));
4252 if (DownsreamExpander)
4259 TI_DBG3((
"tdssSASDiscoveringExpander tdsaDumpAllExp: No Downstream expander\n"));
4262 ExpanderList = ExpanderList->
flink;
4338tdsaDuplicateConfigSASAddr(
4341 bit32 configSASAddressHi,
4342 bit32 configSASAddressLo
4347 TI_DBG3((
"tdsaDuplicateConfigSASAddr: start\n"));
4349 if (oneExpander ==
agNULL)
4351 TI_DBG3((
"tdsaDuplicateConfigSASAddr: NULL expander\n"));
4359 TI_DBG3((
"tdsaDuplicateConfigSASAddr: unnecessary\n"));
4365 TI_DBG3((
"tdsaDuplicateConfigSASAddr: configsasAddressHi 0x%08x\n", configSASAddressHi));
4366 TI_DBG3((
"tdsaDuplicateConfigSASAddr: configsasAddressLo 0x%08x\n", configSASAddressLo));
4374 TI_DBG3((
"tdsaDuplicateConfigSASAddr: FOUND!!!\n"));
4382 TI_DBG3((
"tdsaDuplicateConfigSASAddr: adding configSAS Addr!!!\n"));
4410tdsaFindConfigurableExp(
4420 TI_DBG3((
"tdsaFindConfigurableExp: start\n"));
4422 if (oneExpander ==
agNULL)
4424 TI_DBG3((
"tdsaFindConfigurableExp: NULL expander\n"));
4435 TI_DBG3((
"tdsaFindConfigurableExp: empty UpdiscoveringExpanderList\n"));
4443 while (tempExpander)
4449 TI_DBG3((
"tdsaFindConfigurableExp: found configurable expander\n"));
4478tdsaSASDownStreamDiscoverExpanderPhy(
4490 bit8 connectionRate;
4491 bit32 attachedSasHi, attachedSasLo;
4495 bit32 configSASAddressHi;
4496 bit32 configSASAddressLo;
4498 TI_DBG3((
"tdsaSASDownStreamDiscoverExpanderPhy: start\n"));
4502 TD_ASSERT(
tiRoot,
"(tdsaSASDownStreamDiscoverExpanderPhy) agRoot NULL");
4503 TD_ASSERT(onePortContext,
"(tdsaSASDownStreamDiscoverExpanderPhy) pPort NULL");
4504 TD_ASSERT(oneExpander,
"(tdsaSASDownStreamDiscoverExpanderPhy) pExpander NULL");
4505 TD_ASSERT(pDiscoverResp,
"(tdsaSASDownStreamDiscoverExpanderPhy) pDiscoverResp NULL");
4507 TI_DBG3((
"tdsaSASDownStreamDiscoverExpanderPhy: onePortContxt=%p oneExpander=%p oneDeviceData=%p\n", onePortContext, oneExpander, oneExpander->
tdDevice));
4511 TI_DBG1((
"tdsaSASDownStreamDiscoverExpanderPhy: aborting discovery\n"));
4512 tdsaSASDiscoverAbort(
tiRoot, onePortContext);
4515#ifdef TD_INTERNAL_DEBUG
4516 tdsaDumpAllExp(
tiRoot, onePortContext, oneExpander);
4517 tdsaFindUpStreamConfigurableExp(
tiRoot, oneExpander);
4518 tdsaFindDownStreamConfigurableExp(
tiRoot, oneExpander);
4521 oneDeviceData = oneExpander->
tdDevice;
4522 TD_ASSERT(oneDeviceData,
"(tdsaSASDownStreamDiscoverExpanderPhy) pDevice NULL");
4525 TI_DBG3((
"tdsaSASDownStreamDiscoverExpanderPhy: Phy #%d of SAS %08x-%08x\n",
4529 TI_DBG3((
" Attached device: %s\n",
4536 TI_DBG1((
"tdsaSASDownStreamDiscoverExpanderPhy: !!! Incorrect SMP response !!!\n"));
4543#ifdef TD_INTERNAL_DEBUG
4551 TI_DBG3((
" SAS address : %08x-%08x\n",
4603 TI_DBG1((
"tdsaSASDownStreamDiscoverExpanderPhy: **** Topology Error direct routing can't connect to expander\n"));
4621 AttachedDevice = tdsaPortSASDeviceFind(
tiRoot, onePortContext, attachedSasLo, attachedSasHi);
4623 if ( AttachedDevice ==
agNULL)
4632 TI_DBG1((
"tdsaSASDownStreamDiscoverExpanderPhy: **** Topology Error subtractive routing error - inconsistent SAS address\n"));
4650 TI_DBG3((
"tdsaSASDownStreamDiscoverExpanderPhy: connectionRate 0x%x\n", connectionRate));
4654 if (onePortContext->
discovery.
type == TDSA_DISCOVERY_OPTION_FULL_START)
4656 AttachedDevice = tdsaPortSASDeviceAdd(
4672 AttachedDevice = tdsaFindRegNValid(
4678 if (AttachedDevice ==
agNULL)
4680 AttachedDevice = tdsaPortSASDeviceAdd(
4697 if (onePortContext->
discovery.
type == TDSA_DISCOVERY_OPTION_FULL_START)
4699 AttachedDevice = tdsaPortSASDeviceAdd(
4715 AttachedDevice = tdsaFindRegNValid(
4721 if (AttachedDevice ==
agNULL)
4723 AttachedDevice = tdsaPortSASDeviceAdd(
4738 TI_DBG3((
"tdsaSASDownStreamDiscoverExpanderPhy: newDevice pDevice=%p\n", AttachedDevice));
4740 if ( AttachedDevice !=
agNULL)
4747 TI_DBG3((
"tdsaSASDownStreamDiscoverExpanderPhy: Report a new SAS device !!\n"));
4756 TI_DBG3((
"tdsaSASDownStreamDiscoverExpanderPhy: Found an STP or SATA device.\n"));
4760 TI_DBG3((
"tdsaSASDownStreamDiscoverExpanderPhy: Found Other type of device.\n"));
4774 TI_DBG1((
"tdsaSASDownStreamDiscoverExpanderPhy: **** Topology Error two table routing phys are connected\n"));
4786 AttachedExpander = tdssSASDiscoveringExpanderAlloc(
tiRoot, onePortContext, AttachedDevice);
4788 TI_DBG3((
"tdsaSASDownStreamDiscoverExpanderPhy: Found a EDGE exp device.%p\n", AttachedExpander));
4790 if ( AttachedExpander !=
agNULL)
4806 tdssSASDiscoveringExpanderAdd(
tiRoot, onePortContext, AttachedExpander);
4811 TI_DBG1((
"tdsaSASDownStreamDiscoverExpanderPhy, Failed to allocate expander data structure\n"));
4820 TI_DBG3((
"tdsaSASDownStreamDiscoverExpanderPhy: 1st before\n"));
4821 tdsaDumpAllUpExp(
tiRoot, onePortContext, oneExpander);
4823 ConfigurableExpander = tdsaFindConfigurableExp(
tiRoot, onePortContext, oneExpander);
4826 if (ConfigurableExpander)
4834 TI_DBG3((
"tdsaSASDownStreamDiscoverExpanderPhy: 1st before loc 1\n"));
4840 TI_DBG3((
"tdsaSASDownStreamDiscoverExpanderPhy: 1st before loc 2\n"));
4845 dupConfigSASAddr = tdsaDuplicateConfigSASAddr(
tiRoot,
4846 ConfigurableExpander,
4852 if ( ConfigurableExpander && dupConfigSASAddr ==
agFALSE)
4854 TI_DBG3((
"tdsaSASDownStreamDiscoverExpanderPhy: 1st q123\n"));
4857 tdsaFindCurrentDownStreamPhyIndex(
tiRoot, ConfigurableExpander);
4859 tdsaSASRoutingEntryAdd(
tiRoot,
4860 ConfigurableExpander,
4871 TI_DBG1((
"tdsaSASDownStreamDiscoverExpanderPhy, Failed to add a device\n"));
4887 TI_DBG1((
"tdsaSASDownStreamDiscoverExpanderPhy: **** Topology Error loop, or end device connects to two expanders\n"));
4904 TI_DBG1((
"tdsaSASDownStreamDiscoverExpanderPhy: **** Topology Error two subtractive phys\n"));
4922 TI_DBG1((
"tdsaSASDownStreamDiscoverExpanderPhy: **** Topology Error fan out expander to routing table phy\n"));
4935 AttachedExpander = AttachedDevice->
tdExpander;
4936 TI_DBG3((
"tdsaSASDownStreamDiscoverExpanderPhy: Found edge expander=%p\n", AttachedExpander));
4948 TI_DBG1((
"tdsaSASDownStreamDiscoverExpanderPhy: **** Topology Error two table routing phys connected (1)\n"));
4959 TI_DBG3((
"tdsaSASDownStreamDiscoverExpanderPhy: Add edge expander=%p\n", AttachedExpander));
4968 tdssSASDiscoveringExpanderAdd(
tiRoot, onePortContext, AttachedExpander);
4975 TI_DBG1((
"tdsaSASDownStreamDiscoverExpanderPhy: **** Topology Error two table routing phys connected (2)\n"));
4991 TI_DBG3((
"tdsaSASDownStreamDiscoverExpanderPhy: 2nd before\n"));
4992 tdsaDumpAllUpExp(
tiRoot, onePortContext, oneExpander);
4995 ConfigurableExpander = tdsaFindConfigurableExp(
tiRoot, onePortContext, oneExpander);
4998 if (ConfigurableExpander)
5006 TI_DBG3((
"tdsaSASDownStreamDiscoverExpanderPhy: 2nd before loc 1\n"));
5012 TI_DBG3((
"tdsaSASDownStreamDiscoverExpanderPhy: 2nd before loc 2\n"));
5017 dupConfigSASAddr = tdsaDuplicateConfigSASAddr(
tiRoot,
5018 ConfigurableExpander,
5023 if ( ConfigurableExpander && dupConfigSASAddr ==
agFALSE)
5025 TI_DBG3((
"tdsaSASDownStreamDiscoverExpanderPhy: 2nd q123 \n"));
5028 tdsaFindCurrentDownStreamPhyIndex(
tiRoot, ConfigurableExpander);
5030 tdsaSASRoutingEntryAdd(
tiRoot,
5031 ConfigurableExpander,
5039 if (onePortContext->
discovery.
type == TDSA_DISCOVERY_OPTION_INCREMENTAL_START)
5045 TI_DBG3((
"tdsaSASDownStreamDiscoverExpanderPhy: incremental SATA_STP\n"));
5047 tdsaPortSASDeviceAdd(
5062 TI_DBG3((
"tdsaSASDownStreamDiscoverExpanderPhy: incremental SAS\n"));
5064 tdsaPortSASDeviceAdd(
5086 TI_DBG3((
"tdsaSASDownStreamDiscoverExpanderPhy: Found Self\n"));
5087 TI_DBG3((
"tdsaSASDownStreamDiscoverExpanderPhy: 3rd before\n"));
5088 tdsaDumpAllUpExp(
tiRoot, onePortContext, oneExpander);
5091 ConfigurableExpander = tdsaFindConfigurableExp(
tiRoot, onePortContext, oneExpander);
5092 dupConfigSASAddr = tdsaDuplicateConfigSASAddr(
tiRoot,
5093 ConfigurableExpander,
5098 if ( ConfigurableExpander && dupConfigSASAddr ==
agFALSE)
5100 TI_DBG3((
"tdsaSASDownStreamDiscoverExpanderPhy: 3rd q123 Setup routing table\n"));
5103 tdsaFindCurrentDownStreamPhyIndex(
tiRoot, ConfigurableExpander);
5105 tdsaSASRoutingEntryAdd(
tiRoot,
5106 ConfigurableExpander,
5129 TI_DBG3((
"tdsaSASDownStreamDiscoverExpanderPhy: More Phys to discover\n"));
5131 tdsaDiscoverSend(
tiRoot, oneDeviceData);
5136 TI_DBG3((
"tdsaSASDownStreamDiscoverExpanderPhy: No More Phys\n"));
5139 tdssSASDiscoveringExpanderRemove(
tiRoot, onePortContext, oneExpander);
5141 tdsaSASDownStreamDiscovering(
tiRoot, onePortContext, oneDeviceData);
5146 TI_DBG3((
"tdsaSASDownStreamDiscoverExpanderPhy: onePortContext->discovery.status not in DISCOVERY_DOWN_STREAM; status %d\n", onePortContext->
discovery.
status));
5171tdsaSASDownStreamDiscoverExpanderPhySkip(
5178 TI_DBG3((
"tdsaSASDownStreamDiscoverExpanderPhySkip: start\n"));
5179 oneDeviceData = oneExpander->
tdDevice;
5193 TI_DBG3((
"tdsaSASDownStreamDiscoverExpanderPhySkip: More Phys to discover\n"));
5195 tdsaDiscoverSend(
tiRoot, oneDeviceData);
5200 TI_DBG3((
"tdsaSASDownStreamDiscoverExpanderPhySkip: No More Phys\n"));
5203 tdssSASDiscoveringExpanderRemove(
tiRoot, onePortContext, oneExpander);
5205 tdsaSASDownStreamDiscovering(
tiRoot, onePortContext, oneDeviceData);
5210 TI_DBG3((
"tdsaSASDownStreamDiscoverExpanderPhySkip: onePortContext->discovery.status not in DISCOVERY_DOWN_STREAM; status %d\n", onePortContext->
discovery.
status));
5212 TI_DBG3((
"tdsaSASDownStreamDiscoverExpanderPhySkip: end return phyID#%d\n", oneExpander->
discoveringPhyId - 1));
5237tdsaSASRoutingEntryAdd(
5241 bit32 configSASAddressHi,
5242 bit32 configSASAddressLo
5251 TI_DBG3((
"tdsaSASRoutingEntryAdd: start\n"));
5254 TI_DBG3((
"tdsaSASRoutingEntryAdd: phyid %d\n", phyId));
5267 TI_DBG3((
"tdsaSASRoutingEntryAdd: unnecessary\n"));
5272 TI_DBG3((
"tdsaSASRoutingEntryAdd: not table routing, routing is %d\n", oneExpander->
routingAttribute[phyId]));
5285 TI_DBG3((
"tdsaSASRoutingEntryAdd: adding sasAddressHi 0x%08x\n", configSASAddressHi));
5286 TI_DBG3((
"tdsaSASRoutingEntryAdd: adding sasAddressLo 0x%08x\n", configSASAddressLo));
5287 TI_DBG3((
"tdsaSASRoutingEntryAdd: phyid %d currentIndex[phyid] %d\n", phyId, oneExpander->
currentIndex[phyId]));
5304 for ( i = 0; i < 16; i ++ )
5314 TI_DBG1((
"tdsaSASRoutingEntryAdd: Discovery Error routing index overflow for currentIndex=%d, routingIndex=%d\n", oneExpander->
currentIndex[phyId], oneExpander->
routingIndex));
5343tdsaConfigRoutingInfoRespRcvd(
5362 TI_DBG3((
"tdsaConfigRoutingInfoRespRcvd: start\n"));
5370 TI_DBG1((
"tdsaConfigRoutingInfoRespRcvd: aborting discovery\n"));
5371 tdsaSASDiscoverAbort(
tiRoot, onePortContext);
5380 if (DownStreamExpander !=
agNULL)
5384 TI_DBG3((
"tdsaConfigRoutingInfoRespRcvd: DownStreamExpander->numOfUpStreamPhys %d\n", DownStreamExpander->
numOfUpStreamPhys));
5393 if ( DownStreamExpander !=
agNULL)
5397 TI_DBG3((
"tdsaConfigRoutingInfoRespRcvd: first if\n"));
5402 tdsaSASRoutingEntryAdd(
tiRoot,
5412 TI_DBG3((
"tdsaConfigRoutingInfoRespRcvd: else\n"));
5415 ConfigurableExpander = tdsaFindConfigurableExp(
tiRoot, onePortContext, oneExpander);
5416 if (UpStreamExpander !=
agNULL)
5420 dupConfigSASAddr = tdsaDuplicateConfigSASAddr(
tiRoot,
5421 ConfigurableExpander,
5426 if ( ConfigurableExpander !=
agNULL && dupConfigSASAddr ==
agFALSE)
5428 TI_DBG3((
"tdsaConfigRoutingInfoRespRcvd: else if\n"));
5435 tdsaFindCurrentDownStreamPhyIndex(
tiRoot, ConfigurableExpander);
5441 tdsaSASRoutingEntryAdd(
tiRoot,
5442 ConfigurableExpander,
5452 TI_DBG3((
"tdsaConfigRoutingInfoRespRcvd: $$$$$$ my change $$$$$ \n"));
5456 if (ReturningExpander !=
agNULL)
5461 ReturningExpanderDeviceData = ReturningExpander->
tdDevice;
5469 TI_DBG3((
"tdsaConfigRoutingInfoRespRcvd: More Phys to discover\n"));
5474 tdsaDiscoverSend(
tiRoot, ReturningExpanderDeviceData);
5481 TI_DBG3((
"tdsaConfigRoutingInfoRespRcvd: No More Phys\n"));
5485 tdssSASDiscoveringExpanderRemove(
tiRoot, onePortContext, ReturningExpander);
5487 tdsaSASDownStreamDiscovering(
tiRoot, onePortContext, ReturningExpanderDeviceData);
5494 TI_DBG3((
"tdsaConfigRoutingInfoRespRcvd: ReturningExpander is NULL\n"));
5500 TI_DBG3((
"tdsaConfigRoutingInfoRespRcvd: UpStreamExpander is NULL\n"));
5507 TI_DBG1((
"tdsaConfigRoutingInfoRespRcvd: Discovery Error SMP function return result error=%x\n", frameHeader->
smpFunctionResult));
5530tdsaReportPhySataSend(
5541 TI_DBG3((
"tdsaReportPhySataSend: start\n"));
5543 agRoot = oneDeviceData->
agRoot;
5547 if (onePortContext ==
agNULL)
5549 TI_DBG1((
"tdsaReportPhySataSend: Error!!! portcontext is NULL\n"));
5552 if (oneExpander ==
agNULL)
5554 TI_DBG1((
"tdsaReportPhySataSend: Error!!! expander is NULL\n"));
5557 TI_DBG3((
"tdsaReportPhySataSend: device %p did %d\n", oneDeviceData, oneDeviceData->
id));
5558 TI_DBG3((
"tdsaReportPhySataSend: phyid %d\n", phyId));
5572 (
bit8 *)&smpReportPhySataReq,
5601tdsaReportPhySataRcvd(
5620 TI_DBG3((
"tdsaReportPhySataRcvd: start\n"));
5628 pSMPReportPhySataResp = &SMPreportPhySataResp;
5654 TI_DBG1((
"tdsaReportPhySataRcvd: aborting discovery\n"));
5655 tdsaSASDiscoverAbort(
tiRoot, onePortContext);
5658 if (SataDevice ==
agNULL)
5660 TI_DBG1((
"tdsaReportPhySataRcvd: SataDevice is NULL, wrong\n"));
5661 tdsaSASDiscoverAbort(
tiRoot, onePortContext);
5672 TI_DBG3((
"tdsaReportPhySataRcvd: saves the signature\n"));
5683 TI_DBG3((
"tdsaReportPhySataRcvd: SATA Signature = %02x %02x %02x %02x %02x\n",
5693 SataDevice = tdsaFindRightDevice(
tiRoot, onePortContext, SataDevice);
5694 tdsaDiscoveringStpSATADevice(
tiRoot, onePortContext, SataDevice);
5698 TI_DBG3((
"tdsaReportPhySataRcvd: getting next stp bride\n"));
5699 SataDevice = tdsaFindRightDevice(
tiRoot, onePortContext, SataDevice);
5700 tdsaDiscoveringStpSATADevice(
tiRoot, onePortContext, SataDevice);
5705 TI_DBG3((
"tdsaReportPhySataRcvd: siReportPhySataRcvd SMP function return result %x\n",
5729tdsaSASExpanderUpStreamPhyAdd(
5738 TI_DBG3((
"tdsaSASExpanderUpStreamPhyAdd: start, phyid %d\n", phyId));
5741 TI_DBG3((
"tdsaSASExpanderUpStreamPhyAdd: phyid %d numOfUpStreamPhys %d\n", phyId, oneExpander->
numOfUpStreamPhys));
5757 TI_DBG3((
"tdsaSASExpanderUpStreamPhyAdd: AFTER phyid %d numOfUpStreamPhys %d\n", phyId, oneExpander->
numOfUpStreamPhys));
5762 TI_DBG3((
"tdsaSASExpanderUpStreamPhyAdd: index %d upstream[index] %d\n", i, oneExpander->
upStreamPhys[i]));
5787tdsaSASExpanderDownStreamPhyAdd(
5796 TI_DBG3((
"tdsaSASExpanderDownStreamPhyAdd: start, phyid %d\n", phyId));
5815 TI_DBG3((
"tdsaSASExpanderDownStreamPhyAdd: AFTER phyid %d numOfDownStreamPhys %d\n", phyId, oneExpander->
numOfDownStreamPhys));
5820 TI_DBG3((
"tdsaSASExpanderDownStreamPhyAdd: index %d downstream[index] %d\n", i, oneExpander->
downStreamPhys[i]));
5844tdsaFindCurrentDownStreamPhyIndex(
5854 TI_DBG3((
"tdsaFindCurrentDownStreamPhyIndex: start\n"));
5856 if (oneExpander ==
agNULL)
5858 TI_DBG3((
"tdsaFindCurrentDownStreamPhyIndex: wrong!!! oneExpander is NULL\n"));
5864 if (DownStreamExpander ==
agNULL)
5866 TI_DBG3((
"tdsaFindCurrentDownStreamPhyIndex: wrong!!! DownStreamExpander is NULL\n"));
5878 TI_DBG3((
"tdsaFindCurrentDownStreamPhyIndex: phyId %d\n", phyId));
5888 TI_DBG3((
"tdsaFindCurrentDownStreamPhyIndex: index %d\n",
index));
5911tdsaPortSASDeviceFind(
5923 TI_DBG3((
"tdsaPortSASDeviceFind: start\n"));
5931 DeviceListList = tdsaAllShared->MainDeviceList.
flink;
5932 if (onePortContext->
discovery.
type == TDSA_DISCOVERY_OPTION_FULL_START)
5934 TI_DBG3((
"tdsaPortSASDeviceFind: Full discovery\n"));
5935 while (DeviceListList != &(tdsaAllShared->MainDeviceList))
5944 TI_DBG3((
"tdsaPortSASDeviceFind: Found pid %d did %d\n", onePortContext->
id, oneDeviceData->
id));
5947 RetDeviceData = oneDeviceData;
5950 DeviceListList = DeviceListList->
flink;
5956 TI_DBG3((
"tdsaPortSASDeviceFind: Incremental discovery\n"));
5957 while (DeviceListList != &(tdsaAllShared->MainDeviceList))
5966 TI_DBG3((
"tdsaPortSASDeviceFind: Found pid %d did %d\n", onePortContext->
id, oneDeviceData->
id));
5970 RetDeviceData = oneDeviceData;
5973 DeviceListList = DeviceListList->
flink;
5979 return RetDeviceData;
6005tdsaPortSASDeviceAdd(
6010 bit8 connectionRate,
6011 bit32 itNexusTimeout,
6012 bit32 firstBurstSize,
6019 bit8 dev_s_rate = 0;
6025 TI_DBG3((
"tdsaPortSASDeviceAdd: start\n"));
6026 TI_DBG3((
"tdsaPortSASDeviceAdd: connectionRate %d\n", connectionRate));
6034 if (
agFALSE == tdssNewSASorNot(
6044 oneDeviceData = tdssNewAddSASToSharedcontext(
6052 if (oneDeviceData ==
agNULL)
6054 TI_DBG1((
"tdsaPortSASDeviceAdd: no more device!!! oneDeviceData is null\n"));
6058 if ( oneDeviceData !=
agNULL )
6078 oneAttachedExpDeviceData = oneDeviceData->
ExpDevice;
6079 if (oneAttachedExpDeviceData !=
agNULL)
6082 TI_DBG3((
"tdsaPortSASDeviceAdd: 1st connectionRate 0x%x DEVINFO_GET_LINKRATE(&oneAttachedExpDeviceData->agDeviceInfo) 0x%x\n",
6087 TI_DBG3((
"tdsaPortSASDeviceAdd: 1st oneAttachedExpDeviceData is NULL\n"));
6091 sasorsata = (
bit8)deviceType;
6093 dev_s_rate = (
bit8)(dev_s_rate | (sasorsata << 4));
6094 dev_s_rate = (
bit8)(dev_s_rate | connectionRate);
6110 return oneDeviceData;
6118 oneDeviceData = tdssNewAddSASToSharedcontext(
6126 if (oneDeviceData ==
agNULL)
6128 TI_DBG1((
"tdsaPortSASDeviceAdd: no more device!!! oneDeviceData is null\n"));
6132 if ( oneDeviceData !=
agNULL )
6153 oneAttachedExpDeviceData = oneDeviceData->
ExpDevice;
6154 if (oneAttachedExpDeviceData !=
agNULL)
6157 TI_DBG3((
"tdsaPortSASDeviceAdd: 2nd connectionRate 0x%x DEVINFO_GET_LINKRATE(&oneAttachedExpDeviceData->agDeviceInfo) 0x%x\n",
6162 TI_DBG3((
"tdsaPortSASDeviceAdd: 2nd oneAttachedExpDeviceData is NULL\n"));
6166 sasorsata = (
bit8)deviceType;
6167 dev_s_rate = (
bit8)(dev_s_rate | (sasorsata << 4));
6168 dev_s_rate = (
bit8)(dev_s_rate | connectionRate);
6183 TI_DBG3((
"tdsaPortSASDeviceAdd: did %d\n", oneDeviceData->
id));
6193 TI_DBG1((
"tdsaPortSASDeviceAdd: initiator. no add and registration\n"));
6202 TI_DBG2((
"tdsaPortSASDeviceAdd: did %d\n", oneDeviceData->
id));
6215 return oneDeviceData;
6236tdsaDiscoveryResetProcessed(
6246 TI_DBG6((
"tdsaDiscoveryResetProcessed: start\n"));
6249 DeviceListList = tdsaAllShared->MainDeviceList.
flink;
6250 while (DeviceListList != &(tdsaAllShared->MainDeviceList))
6253 TI_DBG6((
"tdsaDiscoveryResetProcessed: loop did %d\n", oneDeviceData->
id));
6256 TI_DBG6((
"tdsaDiscoveryResetProcessed: resetting procssed flag\n"));
6259 DeviceListList = DeviceListList->
flink;
6282tdsaSATADiscoverDone(
6290 TI_DBG3((
"tdsaSATADiscoverDone: start\n"));
6291 tdsaDiscoveryResetProcessed(
tiRoot, onePortContext);
6295 TI_DBG3((
"tdsaSATADiscoverDone: broadcast change; discover again\n"));
6296 tdssInternalRemovals(onePortContext->
agRoot,
6302 if (tdsaAllShared->ResetInDiscovery != 0 &&
6305 TI_DBG1((
"tdsaSATADiscoverDone: tdsaBCTimer\n"));
6306 tdsaBCTimer(
tiRoot, onePortContext);
6313 TDSA_DISCOVERY_TYPE_SAS,
6314 TDSA_DISCOVERY_OPTION_INCREMENTAL_START
6322 if (onePortContext->
discovery.
type == TDSA_DISCOVERY_OPTION_FULL_START)
6330 if (tdsaAllShared->SASConnectTimeLimit)
6346 TI_DBG1((
"tdsaSATADiscoverDone: Error; clean up\n"));
6347 tdssDiscoveryErrorRemovals(onePortContext->
agRoot,
6365 tdssReportChanges(onePortContext->
agRoot,
6371 tdssReportRemovals(onePortContext->
agRoot,
6380 tdsaAckBC(
tiRoot, onePortContext);
6395 TI_DBG3((
"tdsaAckBC: start\n"));
6399 if (onePortContext->BCPhyID[i] ==
agTRUE)
6405 eventSource[i].
param = i;
6414 TI_DBG3((
"tdsaAckBC: calling saHwEventAck\n"));
6418 TI_DBG1((
"tdsaAckBC: failing in saHwEventAck; status %d\n", HwAckSatus));
6422 onePortContext->BCPhyID[i] =
agFALSE;
6447tdsaSATAFullDiscover(
6463 TI_DBG3((
"tdsaSATAFullDiscover: start\n"));
6466 TI_DBG1((
"tdsaSATAFullDiscover: aborting discovery\n"));
6467 tdsaSASDiscoverAbort(
tiRoot, onePortContext);
6470 phyRate = onePortContext->
LinkRate;
6471 DeviceListList = tdsaAllShared->MainDeviceList.
flink;
6480 deviceType = tdssSATADeviceTypeDecode(onePortContext->
remoteSignature);
6484 TI_DBG3((
"tdsaSATAFullDiscover: Found a PM device\n"));
6485 oneDeviceData = tdsaPortSATADeviceAdd(
6500 TI_DBG3((
"tdsaSATAFullDiscover: Found a DIRECT SATA device\n"));
6504 switch ( deviceType )
6510 TI_DBG3((
"tdsaSATAFullDiscover: Process a PM device\n"));
6525 TI_DBG3((
"tdsaSATAFullDiscover: Process an ATA device. Sending Identify Device cmd\n"));
6537 TI_DBG3((
"siSATAFullDiscover: Process OTHER SATA device. Just report the device\n"));
6545 TI_DBG3((
"tdsaSATAFullDiscover: Discovering attached STP devices starts....\n"));
6546 oneDeviceData = tdsaFindRightDevice(
tiRoot, onePortContext, tdsaDeviceData);
6547 tdsaDiscoveringStpSATADevice(
tiRoot, onePortContext, oneDeviceData);
6577tdsaPortSATADeviceAdd(
6584 bit8 connectionRate,
6591 bit8 dev_s_rate = 0;
6598 TI_DBG3((
"tdsaPortSATADeviceAdd: start\n"));
6606 oneDeviceData = tdssNewAddSATAToSharedcontext(
6618 if (oneDeviceData ==
agNULL)
6620 TI_DBG1((
"tdsaPortSATADeviceAdd: no more device!!! oneDeviceData is null\n"));
6624 flag = (
bit8)((phyID << 4) | TLR);
6631 oneAttachedExpDeviceData = oneDeviceData->
ExpDevice;
6632 if (oneAttachedExpDeviceData !=
agNULL)
6635 TI_DBG3((
"tdsaPortSATADeviceAdd: 1st connectionRate 0x%x DEVINFO_GET_LINKRATE(&oneAttachedExpDeviceData->agDeviceInfo) 0x%x\n",
6640 TI_DBG3((
"tdsaPortSATADeviceAdd: 1st oneAttachedExpDeviceData is NULL\n"));
6645 dev_s_rate = (
bit8)(dev_s_rate | (sasorsata << 4));
6646 dev_s_rate = (
bit8)(dev_s_rate | connectionRate);
6655 TI_DBG1((
"tdsaPortSATADeviceAdd: did %d\n", oneDeviceData->
id));
6658 TI_DBG2((
"tdsaPortSATADeviceAdd: did %d\n", oneDeviceData->
id));
6669 return oneDeviceData;
6700 TI_DBG3((
"tdsaFindHeadDevice: start\n"));
6704 while (DeviceListList != &(tdsaDeviceData->
MainLink))
6708 DeviceListList = DeviceListList->
flink;
6713 while (DeviceListList != &(tdsaDeviceData->
MainLink))
6723 TI_DBG3((
"tdsaFindRightDevice: pid %d did %d\n", onePortContext->
id, oneDeviceData->
id));
6728 DeviceListList = DeviceListList->
flink;
6733 return oneDeviceData;
6762tdsaDiscoveringStpSATADevice(
6775 TI_DBG3((
"tdsaDiscoveringStpSATADevice: start\n"));
6777 DeviceListList = tdsaAllShared->MainDeviceList.
flink;
6782 TI_DBG3((
"tdsaDiscoveringStpSATADevice: Found STP-SATA Device=%p\n", oneDeviceData));
6785 ((onePortContext->
discovery.
type == TDSA_DISCOVERY_OPTION_FULL_START &&
6787 (onePortContext->
discovery.
type == TDSA_DISCOVERY_OPTION_INCREMENTAL_START &&
6794 TI_DBG3((
"tdsaDiscoveringStpSATADevice: sending report phy sata\n"));
6799 TI_DBG3((
"tdsaDiscoveringStpSATADevice: sending identify device data\n"));
6810 TI_DBG1((
"tdsaDiscoveringStpSATADevice: fail or busy %d\n",
status));
6817 TI_DBG2((
"tdsaDiscoveringStpSATADevice: moving to the next\n"));
6818 oneDeviceData = tdsaFindRightDevice(
tiRoot, onePortContext, tdsaDeviceData);
6819 tdsaDiscoveringStpSATADevice(
tiRoot, onePortContext, oneDeviceData);
6825 TI_DBG3((
"tdsaDiscoveringStpSATADevice: No More Device; SATA discovery finished\n"));
6851tdsaSASIncrementalDiscover(
6860 TI_DBG3((
"tdsaSASIncrementalDiscover: start\n"));
6864 TI_DBG1((
"tdsaSASIncrementalDiscover: aborting discovery\n"));
6865 tdsaSASDiscoverAbort(
tiRoot, onePortContext);
6896 portMaxRate = onePortContext->
LinkRate;
6897 oneDeviceData = tdsaPortSASDeviceAdd(
6917 tdsaDeviceRegistrationTimer(
tiRoot, onePortContext, oneDeviceData);
6921 tdsaSASUpStreamDiscoverStart(
tiRoot, onePortContext, oneDeviceData);
6952tdsaSATAIncrementalDiscover(
6968 TI_DBG3((
"tdsaSATAIncrementalDiscover: start\n"));
6972 TI_DBG1((
"tdsaSATAIncrementalDiscover: aborting discovery\n"));
6973 tdsaSASDiscoverAbort(
tiRoot, onePortContext);
6977 DeviceListList = tdsaAllShared->MainDeviceList.
flink;
6987 deviceType = tdssSATADeviceTypeDecode(onePortContext->
remoteSignature);
6991 TI_DBG3((
"tdsaSATAIncrementalDiscover: Found a PM device\n"));
6992 oneDeviceData = tdsaPortSATADeviceAdd(
7006 TI_DBG3((
"tdsaSATAIncrementalDiscover: Found a DIRECT SATA device\n"));
7010 switch ( deviceType )
7016 TI_DBG3((
"tdsaSATAIncrementalDiscover: Process a PM device\n"));
7031 TI_DBG3((
"tdsaSATAIncrementalDiscover: Process an ATA device. Sending Identify Device cmd\n"));
7045 TI_DBG3((
"siSATAIncrementalDiscover: Process OTHER SATA device. Just report the device\n"));
7054 TI_DBG3((
"tdsaSATAIncrementalDiscover: Discovering attached STP devices starts....\n"));
7055 oneDeviceData = tdsaFindRightDevice(
tiRoot, onePortContext, tdsaDeviceData);
7057 tdsaDiscoveringStpSATADevice(
tiRoot, onePortContext, oneDeviceData);
7096 bit32 agRequestType,
7104 bit32 memAllocStatus;
7105 bit32 expectedRspLen = 0;
7121 void *IndirectSMPReqosMemHandle;
7122 bit32 IndirectSMPReqPhysUpper32;
7123 bit32 IndirectSMPReqPhysLower32;
7124 bit32 IndirectSMPReqmemAllocStatus;
7125 bit8 *IndirectSMPReq;
7127 void *IndirectSMPResposMemHandle;
7128 bit32 IndirectSMPRespPhysUpper32;
7129 bit32 IndirectSMPRespPhysLower32;
7130 bit32 IndirectSMPRespmemAllocStatus;
7131 bit8 *IndirectSMPResp;
7134 TI_DBG3((
"tdSMPStart: start\n"));
7135 TI_DBG3((
"tdSMPStart: oneDeviceData %p\n", oneDeviceData));
7143 if (onePortContext !=
agNULL)
7145 TI_DBG3((
"tdSMPStart: pid %d\n", onePortContext->
id));
7151 TI_DBG1((
"tdSMPStart: Wrong!!! onePortContext is NULL\n"));
7160 (
void **)&tdSMPRequestBody,
7170 TI_DBG1((
"tdSMPStart: ostiAllocMemory failed...\n"));
7174 if (tdSMPRequestBody ==
agNULL)
7176 TI_DBG1((
"tdSMPStart: ostiAllocMemory returned NULL tdSMPRequestBody\n"));
7180 tdSMPRequestBody->osMemHandle = osMemHandle;
7183 tdSMPRequestBody->tdDevice = oneDeviceData;
7195 tdSMPRequestBody->CurrentTaskTag = CurrentTaskTag;
7198 tdSMPRequestBody->retries = 0;
7200#ifdef TD_INTERNAL_DEBUG
7201 TI_DBG4((
"tdSMPStart: SMPRequestbody %p\n", tdSMPRequestBody));
7202 TI_DBG4((
"tdSMPStart: callback fn %p\n", tdSMPRequestBody->SMPCompletionFunc));
7205 agIORequest = &(tdSMPRequestBody->agIORequest);
7206 agIORequest->
osData = (
void *) tdSMPRequestBody;
7210 agSASRequestBody = &(tdSMPRequestBody->agSASRequestBody);
7211 agSMPFrame = &(agSASRequestBody->
smpFrame);
7213 TI_DBG3((
"tdSMPStart: agIORequest %p\n", agIORequest));
7214 TI_DBG3((
"tdSMPStart: SMPRequestbody %p\n", tdSMPRequestBody));
7219 switch (functionCode)
7231 expectedRspLen = 32 - 4;
7253 TI_DBG1((
"tdSMPStart: error!!! undefined or unused smp function code 0x%x\n", functionCode));
7262 TI_DBG3((
"tdSMPStart: DIRECT smp payload\n"));
7272 osti_memcpy(tdSMPRequestBody->smpPayload, &tdSMPFrameHeader, 4);
7274 osti_memcpy(&(tdSMPRequestBody->smpPayload[4]), pSmpBody, smpBodySize);
7277 agSMPFrame->
outFrameBuf = tdSMPRequestBody->smpPayload;
7283#if defined (INITIATOR_DRIVER) && defined (TARGET_DRIVER)
7295 TI_DBG3((
"tdSMPStart: INDIRECT smp payload\n"));
7304 &IndirectSMPReqosMemHandle,
7305 (
void **)&IndirectSMPReq,
7306 &IndirectSMPReqPhysUpper32,
7307 &IndirectSMPReqPhysLower32,
7313 if (IndirectSMPReqmemAllocStatus !=
tiSuccess)
7315 TI_DBG1((
"tdSMPStart: ostiAllocMemory failed for indirect SMP request...\n"));
7319 if (IndirectSMPReq ==
agNULL)
7321 TI_DBG1((
"tdSMPStart: ostiAllocMemory returned NULL IndirectSMPReq\n"));
7328 &IndirectSMPResposMemHandle,
7329 (
void **)&IndirectSMPResp,
7330 &IndirectSMPRespPhysUpper32,
7331 &IndirectSMPRespPhysLower32,
7337 if (IndirectSMPRespmemAllocStatus !=
tiSuccess)
7339 TI_DBG1((
"tdSMPStart: ostiAllocMemory failed for indirect SMP reponse...\n"));
7343 if (IndirectSMPResp ==
agNULL)
7345 TI_DBG1((
"tdSMPStart: ostiAllocMemory returned NULL IndirectSMPResp\n"));
7350 tdSMPRequestBody->IndirectSMPReqosMemHandle = IndirectSMPReqosMemHandle;
7351 tdSMPRequestBody->IndirectSMPResposMemHandle = IndirectSMPResposMemHandle;
7354 tdSMPRequestBody->IndirectSMPReq = IndirectSMPReq;
7355 tdSMPRequestBody->IndirectSMPResp = IndirectSMPResp;
7356 tdSMPRequestBody->IndirectSMPReqLen = smpBodySize + 4;
7357 tdSMPRequestBody->IndirectSMPRespLen = expectedRspLen;
7360 TI_DBG3((
"tdSMPStart: INDIRECT smp payload\n"));
7373 osti_memcpy(IndirectSMPReq, &tdSMPFrameHeader, 4);
7374 osti_memcpy(IndirectSMPReq+4, pSmpBody, smpBodySize);
7392 TI_DBG3((
"tdSMPStart: DIRECT smp payload\n"));
7393 agSMPFrame->
flag = 0;
7403 osti_memcpy(tdSMPRequestBody->smpPayload, &tdSMPFrameHeader, 4);
7405 osti_memcpy(&(tdSMPRequestBody->smpPayload[4]), pSmpBody, smpBodySize);
7408 agSMPFrame->
outFrameBuf = tdSMPRequestBody->smpPayload;
7414#if defined (INITIATOR_DRIVER) && defined (TARGET_DRIVER)
7426 if (agDevHandle ==
agNULL)
7428 TI_DBG1((
"tdSMPStart: !!! agDevHandle is NULL !!! \n"));
7432 tdSMPRequestBody->queueNumber = queueNumber;
7450 tdsaDiscoverySMPTimer(
tiRoot, onePortContext, functionCode, tdSMPRequestBody);
7461 tdsaSMPBusyTimer(
tiRoot, onePortContext, oneDeviceData, tdSMPRequestBody);
7518tdsaFindLocalLinkRate(
7524 bit32 phyProperties;
7528 TI_DBG3((
"tdsaFindLocalLinkRate: start\n"));
7529 if (phyProperties & 0x4)
7533 if (phyProperties & 0x2)
7537 if (phyProperties & 0x1)
7541 TI_DBG3((
"tdsaFindLocalLinkRate: ans 0x%x\n", ans));
7572 itdsaIni_t *Initiator = (itdsaIni_t *)tdsaAllShared->
itdsaIni;
7575 TI_DBG1((
"tdsaConfigureRouteTimer: start\n"));
7576 TI_DBG1((
"tdsaConfigureRouteTimer: pid %d\n", onePortContext->
id));
7578 discovery = &(onePortContext->
discovery);
7580 TI_DBG1((
"tdsaConfigureRouteTimer: onePortContext %p oneExpander %p ptdSMPDiscoverResp %p\n", onePortContext, oneExpander, ptdSMPDiscoverResp));
7582 TI_DBG1((
"tdsaConfigureRouteTimer: discovery %p \n", discovery));
7586 TI_DBG1((
"tdsaConfigureRouteTimer: discovery->status %d\n", discovery->
status));
7596 TI_DBG1((
"tdsaConfigureRouteTimer: UsecsPerTick %d\n", Initiator->OperatingOption.UsecsPerTick));
7603 tdsaConfigureRouteTimerCB,
7604 (
void *)onePortContext,
7605 (
void *)oneExpander,
7606 (
void *)ptdSMPDiscoverResp
7611 &Initiator->timerlist,
7636tdsaConfigureRouteTimerCB(
7645 itdsaIni_t *Initiator = (itdsaIni_t *)tdsaAllShared->
itdsaIni;
7651 TI_DBG1((
"tdsaConfigureRouteTimerCB: start\n"));
7657 discovery = &(onePortContext->
discovery);
7659 TI_DBG1((
"tdsaConfigureRouteTimerCB: onePortContext %p oneExpander %p ptdSMPDiscoverResp %p\n", onePortContext, oneExpander, ptdSMPDiscoverResp));
7661 TI_DBG1((
"tdsaConfigureRouteTimerCB: discovery %p\n", discovery));
7665 TI_DBG1((
"tdsaConfigureRouteTimerCB: discovery.status %d\n", discovery->
status));
7670 TI_DBG1((
"tdsaConfigureRouteTimerCB: retries are over\n"));
7687 TI_DBG1((
"tdsaConfigureRouteTimerCB: proceed by calling tdsaSASDownStreamDiscoverExpanderPhy\n"));
7691 tdsaSASDownStreamDiscoverExpanderPhy(
tiRoot, onePortContext, oneExpander, ptdSMPDiscoverResp);
7695 TI_DBG1((
"tdsaConfigureRouteTimerCB: setting timer again\n"));
7701 tdsaConfigureRouteTimerCB,
7702 (
void *)onePortContext,
7703 (
void *)oneExpander,
7704 (
void *)ptdSMPDiscoverResp
7709 &Initiator->timerlist,
7742 itdsaIni_t *Initiator = (itdsaIni_t *)tdsaAllShared->
itdsaIni;
7745 TI_DBG1((
"tdsaDiscoveryTimer: start\n"));
7746 TI_DBG1((
"tdsaDiscoveryTimer: pid %d\n", onePortContext->
id));
7748 discovery = &(onePortContext->
discovery);
7758 TI_DBG1((
"tdsaDiscoveryTimer: UsecsPerTick %d\n", Initiator->OperatingOption.UsecsPerTick));
7759 TI_DBG1((
"tdsaDiscoveryTimer: Timervalue %d\n", DISCOVERY_TIMER_VALUE/Initiator->OperatingOption.UsecsPerTick));
7764 DISCOVERY_TIMER_VALUE/Initiator->OperatingOption.UsecsPerTick,
7765 tdsaDiscoveryTimerCB,
7773 &Initiator->timerlist,
7798tdsaDiscoveryTimerCB(
7808 TI_DBG1((
"tdsaDiscoveryTimerCB: start\n"));
7812 TI_DBG1((
"tdsaDiscoveryTimerCB: resumes discovery\n"));
7813 tdsaReportGeneralSend(
tiRoot, oneDeviceData);
7843 itdsaIni_t *Initiator = (itdsaIni_t *)tdsaAllShared->
itdsaIni;
7846 TI_DBG1((
"tdsaDeviceRegistrationTimer: start\n"));
7847 TI_DBG1((
"tdsaDeviceRegistrationTimer: pid %d\n", onePortContext->
id));
7849 discovery = &(onePortContext->
discovery);
7859 TI_DBG1((
"tdsaDeviceRegistrationTimer: UsecsPerTick %d\n", Initiator->OperatingOption.UsecsPerTick));
7866 tdsaDeviceRegistrationTimerCB,
7874 &Initiator->timerlist,
7898tdsaDeviceRegistrationTimerCB(
7909 TI_DBG1((
"tdsaDeviceRegistrationTimerCB: start\n"));
7913 discovery = &(onePortContext->
discovery);
7920 TI_DBG1((
"tdsaDeviceRegistrationTimerCB: retries are over\n"));
7934 TI_DBG1((
"tdsaDeviceRegistrationTimerCB: keep retrying\n"));
7936 tdsaDeviceRegistrationTimer(
tiRoot, onePortContext, oneDeviceData);
7943 tdsaSASUpStreamDiscoverStart(
tiRoot, onePortContext, oneDeviceData);
7973 itdsaIni_t *Initiator = (itdsaIni_t *)tdsaAllShared->
itdsaIni;
7976 TI_DBG1((
"tdsaSMPBusyTimer: start\n"));
7977 TI_DBG1((
"tdsaSMPBusyTimer: pid %d\n", onePortContext->
id));
7979 discovery = &(onePortContext->
discovery);
8001 &Initiator->timerlist,
8044 TI_DBG1((
"tdsaSMPBusyTimerCB: start\n"));
8049 agRoot = oneDeviceData->
agRoot;
8053 discovery = &(onePortContext->
discovery);
8062 tdsaAllShared->SMPQNum,
8098 TI_DBG1((
"tdsaSMPBusyTimerCB: retries are over\n"));
8112 tdsaSMPBusyTimer(
tiRoot, onePortContext, oneDeviceData, tdSMPRequestBody);
8144 itdsaIni_t *Initiator = (itdsaIni_t *)tdsaAllShared->
itdsaIni;
8148 TI_DBG1((
"tdsaBCTimer: start\n"));
8150 discovery = &(onePortContext->
discovery);
8174 &Initiator->timerlist,
8211 TI_DBG1((
"tdsaBCTimerCB: start\n"));
8214 discovery = &(onePortContext->
discovery);
8223 TDSA_DISCOVERY_TYPE_SAS,
8224 TDSA_DISCOVERY_OPTION_INCREMENTAL_START
8264 itdsaIni_t *Initiator = (itdsaIni_t *)tdsaAllShared->
itdsaIni;
8267 TI_DBG3((
"tdsaDiscoverySMPTimer: start\n"));
8268 TI_DBG3((
"tdsaDiscoverySMPTimer: pid %d SMPFn 0x%x\n", onePortContext->
id, functionCode));
8271 discovery = &(onePortContext->
discovery);
8284 tdsaDiscoverySMPTimerCB,
8292 &Initiator->timerlist,
8317tdsaDiscoverySMPTimerCB(
8338 bit32 memAllocStatus;
8342 TI_DBG1((
"tdsaDiscoverySMPTimerCB: start\n"));
8352 discovery = &(onePortContext->
discovery);
8353 oneDeviceData = tdSMPRequestBody->
tdDevice;
8354 agToBeAbortIORequest = &(tdSMPRequestBody->
agIORequest);
8355 agRoot = oneDeviceData->
agRoot;
8358 SMPFunction = tdSMPRequestBody->
smpPayload[1];
8365 TI_DBG1((
"tdsaDiscoverySMPTimerCB: SMP function 0x%x\n", SMPFunction));
8374 switch (SMPFunction)
8379 TI_DBG1((
"tdsaDiscoverySMPTimerCB: failing discovery, SMP function 0x%x\n", SMPFunction));
8383 TI_DBG1((
"tdsaDiscoverySMPTimerCB: failing discovery, SMP function SMP_REPORT_PHY_SATA\n"));
8388 TI_DBG1((
"tdsaDiscoverySMPTimerCB: Error!!!! not allowed case\n"));
8398 (
void **)&tdAbortIORequestBody,
8408 TI_DBG1((
"tdsaDiscoverySMPTimerCB: ostiAllocMemory failed...\n"));
8412 if (tdAbortIORequestBody ==
agNULL)
8415 TI_DBG1((
"tdsaDiscoverySMPTimerCB: ostiAllocMemory returned NULL tdAbortIORequestBody\n"));
8420 tdAbortIORequestBody->IOType.InitiatorTMIO.osMemHandle = osMemHandle;
8427 agAbortIORequest = &(tdAbortIORequestBody->agIORequest);
8428 agAbortIORequest->
osData = (
void *) tdAbortIORequestBody;
8437 agToBeAbortIORequest,
8471 itdsaIni_t *Initiator = (itdsaIni_t *)tdsaAllShared->
itdsaIni;
8473 TI_DBG1((
"tdsaSATAIDDeviceTimer: start\n"));
8487 tdsaSATAIDDeviceTimerCB,
8495 &Initiator->timerlist,
8520tdsaSATAIDDeviceTimerCB(
8529 TI_DBG1((
"tdsaSATAIDDeviceTimerCB: start\n"));
#define DM_DISCOVERY_OPTION_FULL_START
osGLOBAL bit32 dmDiscover(dmRoot_t *dmRoot, dmPortContext_t *dmPortContext, bit32 option)
#define DEVICE_IS_SATA_DEVICE(DeviceData)
#define DISCOVERY_UP_STREAM
#define SMP_REPORT_PHY_SATA
#define SAS_CONNECTION_RATE_6_0G
#define SATA_ID_DEVICE_DATA_TIMER_VALUE
#define DEVICE_REGISTRATION_TIMER_VALUE
#define SAS_EDGE_EXPANDER_DEVICE
#define DEVINFO_PUT_FLAG(devInfo, tlr)
#define DEVINFO_GET_SAS_ADDRESSLO(devInfo)
#define DEVICE_IS_STP_TARGET(DeviceData)
#define REPORT_GENERAL_IS_CONFIGURING(pResp)
#define DISCOVERY_CONFIG_ROUTING
#define SMP_PHY_TEST_FUNCTION
#define DISCRSP_IS_SATA_DEVICE(pResp)
struct smpRespReportPhySata_s smpRespReportPhySata_t
#define MIN(a, b)
MIN macro.
#define DISCRSP_GET_ATTACHED_SAS_ADDRESSLO(pResp)
#define SAS_CONNECTION_RATE_1_5G
#define DISCRSP_IS_SMP_INITIATOR(pResp)
#define DEVINFO_GET_SAS_ADDRESSHI(devInfo)
#define DEVICE_IS_SSP_INITIATOR(DeviceData)
#define SATA_ATAPI_DEVICE
#define DISCOVERY_REPORT_PHY_SATA
#define SMP_REPORT_MANUFACTURE_INFORMATION
#define DISCRSP_GET_ATTACHED_DEVTYPE(pResp)
#define REPORT_GENERAL_GET_ROUTEINDEXES(pResp)
#define SAS_ROUTING_DIRECT
#define DEVINFO_PUT_SAS_ADDRESSLO(devInfo, src32)
#define DEVINFO_PUT_SMPTO(devInfo, smpto)
#define DISCRSP_IS_STP_INITIATOR(pResp)
#define DEVINFO_PUT_FBS(devInfo, fbs)
#define DEVICE_IS_SMP_TARGET(DeviceData)
#define DEVINFO_PUT_ITNEXUSTO(devInfo, itnexusto)
#define CONFIGURE_ROUTE_TIMER_VALUE
#define DISCRSP_GET_ROUTINGATTRIB(pResp)
#define DISCRSP_IS_SMP_TARGET(pResp)
#define DISCRSP_GET_ATTACHED_SAS_ADDRESSHI(pResp)
#define DISCRSP_IS_SSP_TARGET(pResp)
#define SAS_FANOUT_EXPANDER_DEVICE
#define DISCOVERY_DOWN_STREAM
#define SMP_BUSY_TIMER_VALUE
struct smpRespDiscover_s smpRespDiscover_t
#define DISCOVERY_SAS_DONE
#define DEFAULT_SMP_TIMEOUT
#define DISCRSP_IS_SSP_INITIATOR(pResp)
struct smpRespReportManufactureInfo_s smpRespReportManufactureInfo_t
#define SMP_CONFIGURE_ROUTING_INFORMATION
#define DEVINFO_GET_LINKRATE(devInfo)
#define DEVINFO_PUT_DEV_S_RATE(devInfo, dev_s_rate)
#define SAS_ROUTING_SUBTRACTIVE
#define DEVINFO_PUT_SAS_ADDRESSHI(devInfo, src32)
#define SAS_ROUTING_TABLE
#define SMP_FUNCTION_ACCEPTED
#define SMP_REPORT_GENERAL
#define DISCOVERY_RETRIES
#define REPORT_GENERAL_IS_CONFIGURABLE(pResp)
#define SAS_CONNECTION_RATE_3_0G
struct smpRespReportGeneral_s smpRespReportGeneral_t
#define SMP_REPORT_PHY_ERROR_LOG
struct smpRespReportRouteTable_s smpRespReportRouteTable_t
#define DEVICE_IS_SSP_TARGET(DeviceData)
#define SMP_REPORT_ROUTING_INFORMATION
#define SMP_DIRECT_PAYLOAD_LIMIT
#define DISCRSP_IS_STP_TARGET(pResp)
#define REG_DEV_TO_HOST_FIS
#define DISCRSP_GET_LINKRATE(pResp)
osGLOBAL void itdssIOAbortedHandler(agsaRoot_t *agRoot, agsaIORequest_t *agIORequest, bit32 agIOStatus, bit32 agIOInfoLen, void *agParam, bit32 agOtherInfo)
osGLOBAL void itdssSMPCompleted(agsaRoot_t *agRoot, agsaIORequest_t *agIORequest, bit32 agIOStatus, bit32 agIOInfoLen, agsaFrameHandle_t agFrameHandle)
#define ITD_DSTATE_NOT_STARTED
#define ITD_DSTATE_COMPLETED
#define ITD_DSTATE_STARTED
osGLOBAL bit32 tiINIGetDeviceHandlesForWinIOCTL(tiRoot_t *tiRoot, tiPortalContext_t *tiPortalContext, tiDeviceHandle_t *tiDev[], bit32 maxDevs)
osGLOBAL tiDeviceHandle_t * tiINIGetExpDeviceHandleBySasAddress(tiRoot_t *tiRoot, tiPortalContext_t *tiPortalContext, bit32 sas_addr_hi, bit32 sas_addr_lo, bit32 maxDevs)
osGLOBAL bit32 tiINILogout(tiRoot_t *tiRoot, tiDeviceHandle_t *tiDeviceHandle)
osGLOBAL bit32 tiINILogin(tiRoot_t *tiRoot, tiDeviceHandle_t *tiDeviceHandle)
osGLOBAL bit32 tiINIGetExpander(tiRoot_t *tiRoot, tiPortalContext_t *tiPortalContext, tiDeviceHandle_t *tiDev, tiDeviceHandle_t **tiExp)
osGLOBAL bit32 tiINIDiscoverTargets(tiRoot_t *tiRoot, tiPortalContext_t *portalContext, bit32 option)
osGLOBAL bit32 tiINIGetDeviceInfo(tiRoot_t *tiRoot, tiDeviceHandle_t *tiDeviceHandle, tiDeviceInfo_t *tiDeviceInfo)
osGLOBAL bit32 tiINIGetDeviceHandles(tiRoot_t *tiRoot, tiPortalContext_t *tiPortalContext, tiDeviceHandle_t *tiDev[], bit32 maxDevs)
osGLOBAL void tiIniGetDirectSataSasAddr(tiRoot_t *tiRoot, bit32 phyId, bit8 **sasAddressHi, bit8 **sasAddressLo)
osGLOBAL FORCEINLINE bit32 itdssIOPrepareSGL(tiRoot_t *tiRoot, tdIORequestBody_t *tdIORequestBody, tiSgl_t *tiSgl1, void *sglVirtualAddr)
osGLOBAL U32 ostiFreeMemory(tiRoot_t *ptiRoot, void *osMemHandle, U32 allocLength)
osGLOBAL U32 ostiAllocMemory(tiRoot_t *ptiRoot, void **osMemHandle, void **agVirtAddr, U32 *agPhysUpper32, U32 *agPhysLower32, U32 alignment, U32 allocLength, agBOOLEAN isCacheable)
void ostiInitiatorEvent(tiRoot_t *ptiRoot, tiPortalContext_t *ptiPortalContext, tiDeviceHandle_t *ptiDevHandle, tiIntrEventType_t eventType, U32 eventStatus, void *parm)
#define osti_memset(s, c, n)
#define osti_memcpy(des, src, n)
The file defines the constants, data structure, and functions defined by LL API.
void * agsaFrameHandle_t
handle to access frame
#define AGSA_SSP_INIT_WRITE
#define AG_SA_DISCOVERY_TYPE_SATA
#define AGSA_SMP_INIT_REQ
#define AG_SA_DISCOVERY_TYPE_SAS
#define AGSA_PHY_NOTIFY_ENABLE_SPINUP
#define OSSA_HW_EVENT_BROADCAST_CHANGE
#define SA_IDFRM_IS_STP_TARGET(identFrame)
#define SA_IDFRM_IS_SSP_TARGET(identFrame)
#define SA_IDFRM_IS_SMP_TARGET(identFrame)
#define SA_IDFRM_IS_SATA_DEVICE(identFrame)
#define SA_IDFRM_IS_SMP_INITIATOR(identFrame)
#define SA_IDFRM_GET_SAS_ADDRESSLO(identFrame)
#define SA_IDFRM_GET_DEVICETTYPE(identFrame)
#define SA_IDFRM_IS_SSP_INITIATOR(identFrame)
#define SA_IDFRM_GET_SAS_ADDRESSHI(identFrame)
The file defines the declaration of tSDK APIs.
GLOBAL bit32 saSMPAbort(agsaRoot_t *agRoot, agsaIORequest_t *agIORequest, bit32 queueNum, agsaDevHandle_t *agDevHandle, bit32 flag, void *abortParam, ossaGenericAbortCB_t agCB)
Abort SMP request.
GLOBAL void saFrameReadBlock(agsaRoot_t *agRoot, agsaFrameHandle_t agFrame, bit32 frameOffset, void *frameBuffer, bit32 frameBufLen)
Read a block from a frame.
GLOBAL bit32 saLocalPhyControl(agsaRoot_t *agRoot, agsaContext_t *agContext, bit32 queueNum, bit32 phyId, bit32 phyOperation, ossaLocalPhyControlCB_t agCB)
Initiate a Local PHY control command.
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 saGetDeviceInfo(agsaRoot_t *agRoot, agsaContext_t *agContext, bit32 option, bit32 queueNum, agsaDevHandle_t *agDevHandle)
Get Device Information.
GLOBAL bit32 saHwEventAck(agsaRoot_t *agRoot, agsaContext_t *agContext, bit32 queueNum, agsaEventSource_t *eventSource, bit32 param0, bit32 param1)
Initiate a HW Event Ack command.
GLOBAL bit32 saDeregisterDeviceHandle(agsaRoot_t *agRoot, agsaContext_t *agContext, agsaDevHandle_t *agDevHandle, bit32 queueNum)
Function for target to remove stale initiator device handle.
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.
GLOBAL bit32 saRegisterNewDevice(agsaRoot_t *agRoot, agsaContext_t *agContext, bit32 queueNum, agsaDeviceInfo_t *agDeviceInfo, agsaPortContext_t *agPortContext, bit16 hostAssignedDeviceId)
Register New Device from a specific local port.
GLOBAL bit32 saDiscover(agsaRoot_t *agRoot, agsaPortContext_t *agPortContext, bit32 type, bit32 option)
Start/Abort SAS/SATA discovery.
The file defines the declaration of OS APIs.
GLOBAL void ossaSMPCompleted(agsaRoot_t *agRoot, agsaIORequest_t *agIORequest, bit32 agIOStatus, bit32 agIOInfoLen, agsaFrameHandle_t agFrameHandle)
ossaSMPCompleted
data structure stores OS specific and LL specific context
agsaSATAIdentifyData_t satIdentifyData
bit8 attachedSasAddressHi[4]
bit8 attached_SataPS_Ssp_Stp_Smp_Sata_Target
bit8 attachedPhyIdentifier
bit8 attachedSasAddressLo[4]
bit8 attached_Ssp_Stp_Smp_Sata_Initiator
data structure for SAS SSP IO reuqest body This structure contains IO related fields....
tiDeviceHandle_t * tiDevHandle
tdssIOCompleted_t IOCompletionFunc
struct tdIORequestBody_s::@15::@17 SAS
union tdIORequestBody_s::@15 transport
union tdIORequestBody_s::@16 IOType
agsaIORequest_t agIORequest
tiIORequest_t * tiIORequest
agsaSASRequestBody_t agSASRequestBody
struct tdIORequestBody_s::@16::@19 InitiatorRegIO
data structure for SAS/SATA context at TD layer
struct itdsaIni_s * itdsaIni
data structure for SAS device list This structure maintains the device as a list and information abou...
tiDeviceHandle_t tiDeviceHandle
agsaSASIdentify_t sasIdentify
agsaDevHandle_t * agDevHandle
tdsaTimerRequest_t SATAIDDeviceTimer
struct tdsaExpander_s * tdExpander
struct tdsaPortContext_s * tdPortContext
TDSASAddressID_t SASAddressID
satDeviceData_t satDevData
agsaDeviceInfo_t agDeviceInfo
struct tdsaDeviceData_s * ExpDevice
bit32 deviceRetistrationRetries
tdList_t discoveringExpanderList
bit32 configureRouteRetries
struct tdsaExpander_s * RootExp
tdsaTimerRequest_t SMPBusyTimer
tdsaTimerRequest_t BCTimer
tdList_t UpdiscoveringExpanderList
tdsaTimerRequest_t deviceRegistrationTimer
smpRespDiscover_t SMPDiscoverResp
tdsaTimerRequest_t DiscoverySMPTimer
tdsaTimerRequest_t discoveryTimer
tdsaTimerRequest_t configureRouteTimer
TDSASAddressID_t sasAddressIDDiscoverError
bit32 configSASAddrTableIndex
bit16 numOfDownStreamPhys
bit16 currentUpStreamPhyIndex
tdsaDeviceData_t * tdDeviceToProcess
bit8 upStreamPhys[TD_MAX_EXPANDER_PHYS]
bit32 upStreamSASAddressHi
bit8 routingAttribute[TD_MAX_EXPANDER_PHYS]
bit32 upStreamSASAddressLo
bit16 currentDownStreamPhyIndex
bit16 currentIndex[TD_MAX_EXPANDER_PHYS]
bit32 configSASAddressLoTable[DEFAULT_MAX_DEV]
bit32 configSASAddressHiTable[DEFAULT_MAX_DEV]
struct tdsaExpander_s * tdReturnginExpander
struct tdsaExpander_s * tdCurrentDownStreamExpander
bit8 downStreamPhys[TD_MAX_EXPANDER_PHYS]
tdsaDeviceData_t * tdDevice
struct tdsaExpander_s * tdUpStreamExpander
data structure for TD port context This structure maintains information about the port such as ID add...
tdsaDiscovery_t discovery
bit8 PhyIDList[TD_MAX_NUM_PHYS]
agsaSASIdentify_t sasIDframe
agsaPortContext_t * agPortContext
tiPortalContext_t * tiPortalContext
data structure for TD port information This structure contains information in order to start the port...
agsaPhyConfig_t agPhyConfig
data structure OS root from the view of lower layer. TD Layer interrupt/non-interrupt context support...
the root data structure for TD layer
tdsaContext_t tdsaAllShared
bit8 initiator_ssp_stp_smp
data structure for SAS SMP reuqest body This structure contains IO related fields....
agsaSASRequestBody_t agSASRequestBody
void * IndirectSMPReqosMemHandle
void * IndirectSMPResposMemHandle
agsaIORequest_t agIORequest
bit8 smpPayload[SMP_DIRECT_PAYLOAD_LIMIT]
tdsaDeviceData_t * tdDevice
tiDetailedDeviceInfo_t info
bit8 FunctionSpecificArea[8]
#define TD_MAX_NUM_NOTIFY_SPINUP
#define SATA_MAX_PM_PORTS
osGLOBAL void tdsaPortContextReInit(tiRoot_t *tiRoot, tdsaPortContext_t *onePortContext)
osGLOBAL void tdsaDeviceDataReInit(tiRoot_t *tiRoot, tdsaDeviceData_t *oneDeviceData)
osGLOBAL bit32 tdsaNVMDGetIoctl(tiRoot_t *tiRoot, tiIOCTLPayload_t *agIOCTLPayload, void *agParam1, void *agParam2, void *agParam3)
#define IOCTL_MN_NVMD_GET_CONFIG
#define IOCTL_MJ_NVMD_GET
#define TDLIST_OBJECT_BASE(baseType, fieldName, fieldPtr)
#define TDLIST_ENQUEUE_AT_TAIL(toAddHdr, listHdr)
#define TDLIST_EMPTY(listHdr)
#define TDLIST_DEQUEUE_THIS(hdr)
#define TDLIST_DEQUEUE_FROM_HEAD(atHeadHdr, listHdr)
#define TDLIST_ENQUEUE_AT_HEAD(toAddHdr, listHdr)
#define TDLIST_INIT_HDR(hdr)
void tdsaSingleThreadedEnter(tiRoot_t *ptiRoot, bit32 queueId)
void tdhexdump(const char *ptitle, bit8 *pbuf, int len)
void tdsaSingleThreadedLeave(tiRoot_t *ptiRoot, bit32 queueId)
osGLOBAL bit32 tdsaAbortAll(tiRoot_t *tiRoot, agsaRoot_t *agRoot, tdsaDeviceData_t *oneDeviceData)
FORCEINLINE bit32 tdsaRotateQnumber(tiRoot_t *tiRoot, tdsaDeviceData_t *oneDeviceData)
osGLOBAL void tdssSubAddSATAToSharedcontext(tiRoot_t *tiRoot, tdsaDeviceData_t *oneDeviceData)
osGLOBAL void tdsaAddTimer(tiRoot_t *tiRoot, tdList_t *timerListHdr, tdsaTimerRequest_t *timerRequest)
osGLOBAL void tdsaKillTimer(tiRoot_t *tiRoot, tdsaTimerRequest_t *timerRequest)
osGLOBAL void tdsaSetTimerRequest(tiRoot_t *tiRoot, tdsaTimerRequest_t *timerRequest, bit32 timeout, tdsaTimerCBFunc_t CBFunc, void *timerData1, void *timerData2, void *timerData3)
osGLOBAL FORCEINLINE bit32 tiCOMDelayedInterruptHandler(tiRoot_t *tiRoot, bit32 channelNum, bit32 count, bit32 context)
#define DISCOVERY_IN_PROGRESS
@ tiIntrEventTypeDeviceChange
@ tiIntrEventTypeDiscovery
union data structure specifies a request
agsaSSPInitiatorRequest_t sspInitiatorReq