batman-adv: adapt the neighbor purging routine to use the new API functions
authorAntonio Quartulli <antonio@open-mesh.com>
Mon, 2 Sep 2013 10:15:07 +0000 (12:15 +0200)
committerAntonio Quartulli <antonio@meshcoding.com>
Wed, 23 Oct 2013 13:33:12 +0000 (15:33 +0200)
Signed-off-by: Antonio Quartulli <antonio@open-mesh.com>
Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
net/batman-adv/originator.c

index 8d1b16eb12d13974ad6cba87c360c0aef5a450a3..9cee053f6a5c85693948b348b90cd2c14a170548 100644 (file)
@@ -378,16 +378,16 @@ free_orig_node:
 static bool
 batadv_purge_orig_neighbors(struct batadv_priv *bat_priv,
                            struct batadv_orig_node *orig_node,
-                           struct batadv_neigh_node **best_neigh_node)
+                           struct batadv_neigh_node **best_neigh)
 {
+       struct batadv_algo_ops *bao = bat_priv->bat_algo_ops;
        struct hlist_node *node_tmp;
        struct batadv_neigh_node *neigh_node;
        bool neigh_purged = false;
        unsigned long last_seen;
        struct batadv_hard_iface *if_incoming;
-       uint8_t best_metric = 0;
 
-       *best_neigh_node = NULL;
+       *best_neigh = NULL;
 
        spin_lock_bh(&orig_node->neigh_list_lock);
 
@@ -420,11 +420,12 @@ batadv_purge_orig_neighbors(struct batadv_priv *bat_priv,
                        batadv_bonding_candidate_del(orig_node, neigh_node);
                        batadv_neigh_node_free_ref(neigh_node);
                } else {
-                       if ((!*best_neigh_node) ||
-                           (neigh_node->bat_iv.tq_avg > best_metric)) {
-                               *best_neigh_node = neigh_node;
-                               best_metric = neigh_node->bat_iv.tq_avg;
-                       }
+                       /* store the best_neighbour if this is the first
+                        * iteration or if a better neighbor has been found
+                        */
+                       if (!*best_neigh ||
+                           bao->bat_neigh_cmp(neigh_node, *best_neigh) > 0)
+                               *best_neigh = neigh_node;
                }
        }