diff --git a/tos/lib/net/rpl/RPLOF0P.nc b/tos/lib/net/rpl/RPLOF0P.nc index b95b96b1a5..94dad68fc9 100644 --- a/tos/lib/net/rpl/RPLOF0P.nc +++ b/tos/lib/net/rpl/RPLOF0P.nc @@ -134,15 +134,12 @@ implementation{ parentNode = call ParentTable.get(min); - while ((!parentNode->valid) && - (min < MAX_PARENT) && - (parentNode->rank != INFINITE_RANK)) { - min++; + while ((min < MAX_PARENT) && + ((!parentNode->valid) || (parentNode->rank == INFINITE_RANK))) { + min++; // skipping invalid entries and nodes with infinite rank parentNode = call ParentTable.get(min); } - minDesired = parentNode->etx_hop + (parentNode->rank * divideRank); - if (min == MAX_PARENT) { call RPLOF.resetRank(); call RPLRoute.inconsistency(); @@ -151,6 +148,8 @@ implementation{ return FALSE; } + minDesired = parentNode->etx_hop + (parentNode->rank * divideRank); + // printf("RPLOF: Start Compare %d %d: %d %d %d \n", // htons(prevParent), htons(parentNode->parentIP.s6_addr16[7]), // minDesired, parentNode->etx_hop, parentNode->rank);