From c64f8cfcb7092fe4a3c72c5f47df5bf629cbdeef Mon Sep 17 00:00:00 2001 From: Sven Eckelmann Date: Mon, 20 Aug 2012 10:26:49 +0200 Subject: [PATCH] --- yaml --- r: 340532 b: refs/heads/master c: fe3f4cfe8ef8b4f0979a0dd61f60de832848664a h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/net/batman-adv/routing.c | 23 ++++++++--------------- 2 files changed, 9 insertions(+), 16 deletions(-) diff --git a/[refs] b/[refs] index 293ac20496de..6154866988cb 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: bd5b80d51a6c4a68f7d4b9b92c495329f47e53d4 +refs/heads/master: fe3f4cfe8ef8b4f0979a0dd61f60de832848664a diff --git a/trunk/net/batman-adv/routing.c b/trunk/net/batman-adv/routing.c index 8bdafc85ba4f..1ac072d7409e 100644 --- a/trunk/net/batman-adv/routing.c +++ b/trunk/net/batman-adv/routing.c @@ -549,25 +549,18 @@ batadv_find_ifalter_router(struct batadv_orig_node *primary_orig, if (tmp_neigh_node->if_incoming == recv_if) continue; - if (!atomic_inc_not_zero(&tmp_neigh_node->refcount)) + if (router && tmp_neigh_node->tq_avg <= router->tq_avg) continue; - /* if we don't have a router yet - * or this one is better, choose it. - */ - if ((!router) || - (tmp_neigh_node->tq_avg > router->tq_avg)) { - /* decrement refcount of - * previously selected router - */ - if (router) - batadv_neigh_node_free_ref(router); + if (!atomic_inc_not_zero(&tmp_neigh_node->refcount)) + continue; - router = tmp_neigh_node; - atomic_inc_not_zero(&router->refcount); - } + /* decrement refcount of previously selected router */ + if (router) + batadv_neigh_node_free_ref(router); - batadv_neigh_node_free_ref(tmp_neigh_node); + /* we found a better router (or at least one valid router) */ + router = tmp_neigh_node; } /* use the first candidate if nothing was found. */