Always try to find the best dag

This commit is contained in:
Laurent Deru 2017-12-11 17:19:26 +01:00
parent eeeacadfc8
commit 74efdf688e
1 changed files with 11 additions and 16 deletions

View File

@ -762,22 +762,17 @@ rpl_select_dag(rpl_instance_t *instance, rpl_parent_t *p)
old_rank = instance->current_dag->rank; old_rank = instance->current_dag->rank;
last_parent = instance->current_dag->preferred_parent; last_parent = instance->current_dag->preferred_parent;
best_dag = instance->current_dag; if(instance->current_dag->rank != ROOT_RANK(instance)) {
if(best_dag->rank != ROOT_RANK(instance)) { rpl_select_parent(p->dag);
if(rpl_select_parent(p->dag) != NULL) { }
if(p->dag != best_dag) {
best_dag = instance->of->best_dag(best_dag, p->dag); best_dag = NULL;
} for(dag = &instance->dag_table[0], end = dag + RPL_MAX_DAG_PER_INSTANCE; dag < end; ++dag) {
} else if(p->dag == best_dag) { if(dag->used && dag->preferred_parent != NULL && dag->preferred_parent->rank != RPL_INFINITE_RANK) {
best_dag = NULL; if(best_dag == NULL) {
for(dag = &instance->dag_table[0], end = dag + RPL_MAX_DAG_PER_INSTANCE; dag < end; ++dag) { best_dag = dag;
if(dag->used && dag->preferred_parent != NULL && dag->preferred_parent->rank != RPL_INFINITE_RANK) { } else {
if(best_dag == NULL) { best_dag = instance->of->best_dag(best_dag, dag);
best_dag = dag;
} else {
best_dag = instance->of->best_dag(best_dag, dag);
}
}
} }
} }
} }