batman-adv: Prefix hash struct and typedef with batadv_
[deliverable/linux.git] / net / batman-adv / vis.c
index 20eef04645bdb9ca656c7271fd7b191773469512..c1fafa3b172f53f39c4fdc79b3722f46f0f65b84 100644 (file)
 #include "hash.h"
 #include "originator.h"
 
-#define MAX_VIS_PACKET_SIZE 1000
+#define BATADV_MAX_VIS_PACKET_SIZE 1000
 
-static void start_vis_timer(struct bat_priv *bat_priv);
+static void batadv_start_vis_timer(struct bat_priv *bat_priv);
 
 /* free the info */
-static void free_info(struct kref *ref)
+static void batadv_free_info(struct kref *ref)
 {
        struct vis_info *info = container_of(ref, struct vis_info, refcount);
        struct bat_priv *bat_priv = info->bat_priv;
@@ -50,7 +50,7 @@ static void free_info(struct kref *ref)
 }
 
 /* Compare two vis packets, used by the hashing algorithm */
-static int vis_info_cmp(const struct hlist_node *node, const void *data2)
+static int batadv_vis_info_cmp(const struct hlist_node *node, const void *data2)
 {
        const struct vis_info *d1, *d2;
        const struct vis_packet *p1, *p2;
@@ -59,13 +59,13 @@ static int vis_info_cmp(const struct hlist_node *node, const void *data2)
        d2 = data2;
        p1 = (struct vis_packet *)d1->skb_packet->data;
        p2 = (struct vis_packet *)d2->skb_packet->data;
-       return compare_eth(p1->vis_orig, p2->vis_orig);
+       return batadv_compare_eth(p1->vis_orig, p2->vis_orig);
 }
 
 /* hash function to choose an entry in a hash table of given size
  * hash algorithm from http://en.wikipedia.org/wiki/Hash_table
  */
-static uint32_t vis_info_choose(const void *data, uint32_t size)
+static uint32_t batadv_vis_info_choose(const void *data, uint32_t size)
 {
        const struct vis_info *vis_info = data;
        const struct vis_packet *packet;
@@ -88,10 +88,10 @@ static uint32_t vis_info_choose(const void *data, uint32_t size)
        return hash % size;
 }
 
-static struct vis_info *vis_hash_find(struct bat_priv *bat_priv,
-                                     const void *data)
+static struct vis_info *batadv_vis_hash_find(struct bat_priv *bat_priv,
+                                            const void *data)
 {
-       struct hashtable_t *hash = bat_priv->vis_hash;
+       struct batadv_hashtable *hash = bat_priv->vis_hash;
        struct hlist_head *head;
        struct hlist_node *node;
        struct vis_info *vis_info, *vis_info_tmp = NULL;
@@ -100,12 +100,12 @@ static struct vis_info *vis_hash_find(struct bat_priv *bat_priv,
        if (!hash)
                return NULL;
 
-       index = vis_info_choose(data, hash->size);
+       index = batadv_vis_info_choose(data, hash->size);
        head = &hash->table[index];
 
        rcu_read_lock();
        hlist_for_each_entry_rcu(vis_info, node, head, hash_entry) {
-               if (!vis_info_cmp(node, data))
+               if (!batadv_vis_info_cmp(node, data))
                        continue;
 
                vis_info_tmp = vis_info;
@@ -119,15 +119,15 @@ static struct vis_info *vis_hash_find(struct bat_priv *bat_priv,
 /* insert interface to the list of interfaces of one originator, if it
  * does not already exist in the list
  */
-static void vis_data_insert_interface(const uint8_t *interface,
-                                     struct hlist_head *if_list,
-                                     bool primary)
+static void batadv_vis_data_insert_interface(const uint8_t *interface,
+                                            struct hlist_head *if_list,
+                                            bool primary)
 {
        struct if_list_entry *entry;
        struct hlist_node *pos;
 
        hlist_for_each_entry(entry, pos, if_list, list) {
-               if (compare_eth(entry->addr, interface))
+               if (batadv_compare_eth(entry->addr, interface))
                        return;
        }
 
@@ -140,203 +140,143 @@ static void vis_data_insert_interface(const uint8_t *interface,
        hlist_add_head(&entry->list, if_list);
 }
 
-static ssize_t vis_data_read_prim_sec(char *buff,
-                                     const struct hlist_head *if_list)
+static void batadv_vis_data_read_prim_sec(struct seq_file *seq,
+                                         const struct hlist_head *if_list)
 {
        struct if_list_entry *entry;
        struct hlist_node *pos;
-       size_t len = 0;
 
        hlist_for_each_entry(entry, pos, if_list, list) {
                if (entry->primary)
-                       len += sprintf(buff + len, "PRIMARY, ");
+                       seq_printf(seq, "PRIMARY, ");
                else
-                       len += sprintf(buff + len,  "SEC %pM, ", entry->addr);
+                       seq_printf(seq,  "SEC %pM, ", entry->addr);
        }
+}
+
+/* read an entry  */
+static ssize_t batadv_vis_data_read_entry(struct seq_file *seq,
+                                         const struct vis_info_entry *entry,
+                                         const uint8_t *src, bool primary)
+{
+       if (primary && entry->quality == 0)
+               return seq_printf(seq, "TT %pM, ", entry->dest);
+       else if (batadv_compare_eth(entry->src, src))
+               return seq_printf(seq, "TQ %pM %d, ", entry->dest,
+                                 entry->quality);
+
+       return 0;
+}
+
+static void batadv_vis_data_insert_interfaces(struct hlist_head *list,
+                                             struct vis_packet *packet,
+                                             struct vis_info_entry *entries)
+{
+       int i;
 
-       return len;
+       for (i = 0; i < packet->entries; i++) {
+               if (entries[i].quality == 0)
+                       continue;
+
+               if (batadv_compare_eth(entries[i].src, packet->vis_orig))
+                       continue;
+
+               batadv_vis_data_insert_interface(entries[i].src, list, false);
+       }
 }
 
-static size_t vis_data_count_prim_sec(struct hlist_head *if_list)
+static void batadv_vis_data_read_entries(struct seq_file *seq,
+                                        struct hlist_head *list,
+                                        struct vis_packet *packet,
+                                        struct vis_info_entry *entries)
 {
+       int i;
        struct if_list_entry *entry;
        struct hlist_node *pos;
-       size_t count = 0;
 
-       hlist_for_each_entry(entry, pos, if_list, list) {
-               if (entry->primary)
-                       count += 9;
-               else
-                       count += 23;
-       }
+       hlist_for_each_entry(entry, pos, list, list) {
+               seq_printf(seq, "%pM,", entry->addr);
+
+               for (i = 0; i < packet->entries; i++)
+                       batadv_vis_data_read_entry(seq, &entries[i],
+                                                  entry->addr, entry->primary);
 
-       return count;
+               /* add primary/secondary records */
+               if (batadv_compare_eth(entry->addr, packet->vis_orig))
+                       batadv_vis_data_read_prim_sec(seq, list);
+
+               seq_printf(seq, "\n");
+       }
 }
 
-/* read an entry  */
-static ssize_t vis_data_read_entry(char *buff,
-                                  const struct vis_info_entry *entry,
-                                  const uint8_t *src, bool primary)
+static void batadv_vis_seq_print_text_bucket(struct seq_file *seq,
+                                            const struct hlist_head *head)
 {
-       /* maximal length: max(4+17+2, 3+17+1+3+2) == 26 */
-       if (primary && entry->quality == 0)
-               return sprintf(buff, "TT %pM, ", entry->dest);
-       else if (compare_eth(entry->src, src))
-               return sprintf(buff, "TQ %pM %d, ", entry->dest,
-                              entry->quality);
+       struct hlist_node *node;
+       struct vis_info *info;
+       struct vis_packet *packet;
+       uint8_t *entries_pos;
+       struct vis_info_entry *entries;
+       struct if_list_entry *entry;
+       struct hlist_node *pos, *n;
 
-       return 0;
+       HLIST_HEAD(vis_if_list);
+
+       hlist_for_each_entry_rcu(info, node, head, hash_entry) {
+               packet = (struct vis_packet *)info->skb_packet->data;
+               entries_pos = (uint8_t *)packet + sizeof(*packet);
+               entries = (struct vis_info_entry *)entries_pos;
+
+               batadv_vis_data_insert_interface(packet->vis_orig, &vis_if_list,
+                                                true);
+               batadv_vis_data_insert_interfaces(&vis_if_list, packet,
+                                                 entries);
+               batadv_vis_data_read_entries(seq, &vis_if_list, packet,
+                                            entries);
+
+               hlist_for_each_entry_safe(entry, pos, n, &vis_if_list, list) {
+                       hlist_del(&entry->list);
+                       kfree(entry);
+               }
+       }
 }
 
 int batadv_vis_seq_print_text(struct seq_file *seq, void *offset)
 {
        struct hard_iface *primary_if;
-       struct hlist_node *node;
        struct hlist_head *head;
-       struct vis_info *info;
-       struct vis_packet *packet;
-       struct vis_info_entry *entries;
        struct net_device *net_dev = (struct net_device *)seq->private;
        struct bat_priv *bat_priv = netdev_priv(net_dev);
-       struct hashtable_t *hash = bat_priv->vis_hash;
-       HLIST_HEAD(vis_if_list);
-       struct if_list_entry *entry;
-       struct hlist_node *pos, *n;
+       struct batadv_hashtable *hash = bat_priv->vis_hash;
        uint32_t i;
-       int j, ret = 0;
+       int ret = 0;
        int vis_server = atomic_read(&bat_priv->vis_mode);
-       size_t buff_pos, buf_size;
-       char *buff;
 
-       primary_if = primary_if_get_selected(bat_priv);
+       primary_if = batadv_primary_if_get_selected(bat_priv);
        if (!primary_if)
                goto out;
 
-       if (vis_server == VIS_TYPE_CLIENT_UPDATE)
+       if (vis_server == BATADV_VIS_TYPE_CLIENT_UPDATE)
                goto out;
 
-       buf_size = 1;
-       /* Estimate length */
        spin_lock_bh(&bat_priv->vis_hash_lock);
        for (i = 0; i < hash->size; i++) {
                head = &hash->table[i];
-
-               rcu_read_lock();
-               hlist_for_each_entry_rcu(info, node, head, hash_entry) {
-                       packet = (struct vis_packet *)info->skb_packet->data;
-                       entries = (struct vis_info_entry *)
-                               ((char *)packet + sizeof(*packet));
-
-                       vis_data_insert_interface(packet->vis_orig,
-                                                 &vis_if_list, true);
-
-                       for (j = 0; j < packet->entries; j++) {
-                               if (entries[j].quality == 0)
-                                       continue;
-                               if (compare_eth(entries[j].src,
-                                               packet->vis_orig))
-                                       continue;
-                               vis_data_insert_interface(entries[j].src,
-                                                         &vis_if_list,
-                                                         false);
-                       }
-
-                       hlist_for_each_entry(entry, pos, &vis_if_list, list) {
-                               buf_size += 18 + 26 * packet->entries;
-
-                               /* add primary/secondary records */
-                               if (compare_eth(entry->addr, packet->vis_orig))
-                                       buf_size +=
-                                         vis_data_count_prim_sec(&vis_if_list);
-
-                               buf_size += 1;
-                       }
-
-                       hlist_for_each_entry_safe(entry, pos, n, &vis_if_list,
-                                                 list) {
-                               hlist_del(&entry->list);
-                               kfree(entry);
-                       }
-               }
-               rcu_read_unlock();
-       }
-
-       buff = kmalloc(buf_size, GFP_ATOMIC);
-       if (!buff) {
-               spin_unlock_bh(&bat_priv->vis_hash_lock);
-               ret = -ENOMEM;
-               goto out;
+               batadv_vis_seq_print_text_bucket(seq, head);
        }
-       buff[0] = '\0';
-       buff_pos = 0;
-
-       for (i = 0; i < hash->size; i++) {
-               head = &hash->table[i];
-
-               rcu_read_lock();
-               hlist_for_each_entry_rcu(info, node, head, hash_entry) {
-                       packet = (struct vis_packet *)info->skb_packet->data;
-                       entries = (struct vis_info_entry *)
-                               ((char *)packet + sizeof(*packet));
-
-                       vis_data_insert_interface(packet->vis_orig,
-                                                 &vis_if_list, true);
-
-                       for (j = 0; j < packet->entries; j++) {
-                               if (entries[j].quality == 0)
-                                       continue;
-                               if (compare_eth(entries[j].src,
-                                               packet->vis_orig))
-                                       continue;
-                               vis_data_insert_interface(entries[j].src,
-                                                         &vis_if_list,
-                                                         false);
-                       }
-
-                       hlist_for_each_entry(entry, pos, &vis_if_list, list) {
-                               buff_pos += sprintf(buff + buff_pos, "%pM,",
-                                               entry->addr);
-
-                               for (j = 0; j < packet->entries; j++)
-                                       buff_pos += vis_data_read_entry(
-                                                       buff + buff_pos,
-                                                       &entries[j],
-                                                       entry->addr,
-                                                       entry->primary);
-
-                               /* add primary/secondary records */
-                               if (compare_eth(entry->addr, packet->vis_orig))
-                                       buff_pos +=
-                                        vis_data_read_prim_sec(buff + buff_pos,
-                                                               &vis_if_list);
-
-                               buff_pos += sprintf(buff + buff_pos, "\n");
-                       }
-
-                       hlist_for_each_entry_safe(entry, pos, n, &vis_if_list,
-                                                 list) {
-                               hlist_del(&entry->list);
-                               kfree(entry);
-                       }
-               }
-               rcu_read_unlock();
-       }
-
        spin_unlock_bh(&bat_priv->vis_hash_lock);
 
-       seq_printf(seq, "%s", buff);
-       kfree(buff);
-
 out:
        if (primary_if)
-               hardif_free_ref(primary_if);
+               batadv_hardif_free_ref(primary_if);
        return ret;
 }
 
 /* add the info packet to the send list, if it was not
  * already linked in.
  */
-static void send_list_add(struct bat_priv *bat_priv, struct vis_info *info)
+static void batadv_send_list_add(struct bat_priv *bat_priv,
+                                struct vis_info *info)
 {
        if (list_empty(&info->send_list)) {
                kref_get(&info->refcount);
@@ -347,17 +287,17 @@ static void send_list_add(struct bat_priv *bat_priv, struct vis_info *info)
 /* delete the info packet from the send list, if it was
  * linked in.
  */
-static void send_list_del(struct vis_info *info)
+static void batadv_send_list_del(struct vis_info *info)
 {
        if (!list_empty(&info->send_list)) {
                list_del_init(&info->send_list);
-               kref_put(&info->refcount, free_info);
+               kref_put(&info->refcount, batadv_free_info);
        }
 }
 
 /* tries to add one entry to the receive list. */
-static void recv_list_add(struct bat_priv *bat_priv,
-                         struct list_head *recv_list, const char *mac)
+static void batadv_recv_list_add(struct bat_priv *bat_priv,
+                                struct list_head *recv_list, const char *mac)
 {
        struct recvlist_node *entry;
 
@@ -372,14 +312,15 @@ static void recv_list_add(struct bat_priv *bat_priv,
 }
 
 /* returns 1 if this mac is in the recv_list */
-static int recv_list_is_in(struct bat_priv *bat_priv,
-                          const struct list_head *recv_list, const char *mac)
+static int batadv_recv_list_is_in(struct bat_priv *bat_priv,
+                                 const struct list_head *recv_list,
+                                 const char *mac)
 {
        const struct recvlist_node *entry;
 
        spin_lock_bh(&bat_priv->vis_list_lock);
        list_for_each_entry(entry, recv_list, list) {
-               if (compare_eth(entry->mac, mac)) {
+               if (batadv_compare_eth(entry->mac, mac)) {
                        spin_unlock_bh(&bat_priv->vis_list_lock);
                        return 1;
                }
@@ -392,10 +333,10 @@ static int recv_list_is_in(struct bat_priv *bat_priv,
  * broken.. ). vis hash must be locked outside.  is_new is set when the packet
  * is newer than old entries in the hash.
  */
-static struct vis_info *add_packet(struct bat_priv *bat_priv,
-                                  struct vis_packet *vis_packet,
-                                  int vis_info_len, int *is_new,
-                                  int make_broadcast)
+static struct vis_info *batadv_add_packet(struct bat_priv *bat_priv,
+                                         struct vis_packet *vis_packet,
+                                         int vis_info_len, int *is_new,
+                                         int make_broadcast)
 {
        struct vis_info *info, *old_info;
        struct vis_packet *search_packet, *old_packet;
@@ -416,16 +357,17 @@ static struct vis_info *add_packet(struct bat_priv *bat_priv,
                                                     sizeof(*search_packet));
 
        memcpy(search_packet->vis_orig, vis_packet->vis_orig, ETH_ALEN);
-       old_info = vis_hash_find(bat_priv, &search_elem);
+       old_info = batadv_vis_hash_find(bat_priv, &search_elem);
        kfree_skb(search_elem.skb_packet);
 
        if (old_info) {
                old_packet = (struct vis_packet *)old_info->skb_packet->data;
-               if (!seq_after(ntohl(vis_packet->seqno),
-                              ntohl(old_packet->seqno))) {
+               if (!batadv_seq_after(ntohl(vis_packet->seqno),
+                                     ntohl(old_packet->seqno))) {
                        if (old_packet->seqno == vis_packet->seqno) {
-                               recv_list_add(bat_priv, &old_info->recv_list,
-                                             vis_packet->sender_orig);
+                               batadv_recv_list_add(bat_priv,
+                                                    &old_info->recv_list,
+                                                    vis_packet->sender_orig);
                                return old_info;
                        } else {
                                /* newer packet is already in hash. */
@@ -433,10 +375,10 @@ static struct vis_info *add_packet(struct bat_priv *bat_priv,
                        }
                }
                /* remove old entry */
-               hash_remove(bat_priv->vis_hash, vis_info_cmp, vis_info_choose,
-                           old_info);
-               send_list_del(old_info);
-               kref_put(&old_info->refcount, free_info);
+               batadv_hash_remove(bat_priv->vis_hash, batadv_vis_info_cmp,
+                                  batadv_vis_info_choose, old_info);
+               batadv_send_list_del(old_info);
+               kref_put(&old_info->refcount, batadv_free_info);
        }
 
        info = kmalloc(sizeof(*info), GFP_ATOMIC);
@@ -471,14 +413,15 @@ static struct vis_info *add_packet(struct bat_priv *bat_priv,
        if (packet->entries * sizeof(struct vis_info_entry) > vis_info_len)
                packet->entries = vis_info_len / sizeof(struct vis_info_entry);
 
-       recv_list_add(bat_priv, &info->recv_list, packet->sender_orig);
+       batadv_recv_list_add(bat_priv, &info->recv_list, packet->sender_orig);
 
        /* try to add it */
-       hash_added = hash_add(bat_priv->vis_hash, vis_info_cmp, vis_info_choose,
-                             info, &info->hash_entry);
+       hash_added = batadv_hash_add(bat_priv->vis_hash, batadv_vis_info_cmp,
+                                    batadv_vis_info_choose, info,
+                                    &info->hash_entry);
        if (hash_added != 0) {
                /* did not work (for some reason) */
-               kref_put(&info->refcount, free_info);
+               kref_put(&info->refcount, batadv_free_info);
                info = NULL;
        }
 
@@ -494,19 +437,19 @@ void batadv_receive_server_sync_packet(struct bat_priv *bat_priv,
        int is_new, make_broadcast;
        int vis_server = atomic_read(&bat_priv->vis_mode);
 
-       make_broadcast = (vis_server == VIS_TYPE_SERVER_SYNC);
+       make_broadcast = (vis_server == BATADV_VIS_TYPE_SERVER_SYNC);
 
        spin_lock_bh(&bat_priv->vis_hash_lock);
-       info = add_packet(bat_priv, vis_packet, vis_info_len,
-                         &is_new, make_broadcast);
+       info = batadv_add_packet(bat_priv, vis_packet, vis_info_len,
+                                &is_new, make_broadcast);
        if (!info)
                goto end;
 
        /* only if we are server ourselves and packet is newer than the one in
         * hash.
         */
-       if (vis_server == VIS_TYPE_SERVER_SYNC && is_new)
-               send_list_add(bat_priv, info);
+       if (vis_server == BATADV_VIS_TYPE_SERVER_SYNC && is_new)
+               batadv_send_list_add(bat_priv, info);
 end:
        spin_unlock_bh(&bat_priv->vis_hash_lock);
 }
@@ -527,13 +470,13 @@ void batadv_receive_client_update_packet(struct bat_priv *bat_priv,
                return;
 
        /* Are we the target for this VIS packet? */
-       if (vis_server == VIS_TYPE_SERVER_SYNC  &&
+       if (vis_server == BATADV_VIS_TYPE_SERVER_SYNC   &&
            batadv_is_my_mac(vis_packet->target_orig))
                are_target = 1;
 
        spin_lock_bh(&bat_priv->vis_hash_lock);
-       info = add_packet(bat_priv, vis_packet, vis_info_len,
-                         &is_new, are_target);
+       info = batadv_add_packet(bat_priv, vis_packet, vis_info_len,
+                                &is_new, are_target);
 
        if (!info)
                goto end;
@@ -543,12 +486,12 @@ void batadv_receive_client_update_packet(struct bat_priv *bat_priv,
 
        /* send only if we're the target server or ... */
        if (are_target && is_new) {
-               packet->vis_type = VIS_TYPE_SERVER_SYNC;        /* upgrade! */
-               send_list_add(bat_priv, info);
+               packet->vis_type = BATADV_VIS_TYPE_SERVER_SYNC; /* upgrade! */
+               batadv_send_list_add(bat_priv, info);
 
                /* ... we're not the recipient (and thus need to forward). */
        } else if (!batadv_is_my_mac(packet->target_orig)) {
-               send_list_add(bat_priv, info);
+               batadv_send_list_add(bat_priv, info);
        }
 
 end:
@@ -560,10 +503,10 @@ end:
  *
  * Must be called with the originator hash locked
  */
-static int find_best_vis_server(struct bat_priv *bat_priv,
-                               struct vis_info *info)
+static int batadv_find_best_vis_server(struct bat_priv *bat_priv,
+                                      struct vis_info *info)
 {
-       struct hashtable_t *hash = bat_priv->orig_hash;
+       struct batadv_hashtable *hash = bat_priv->orig_hash;
        struct neigh_node *router;
        struct hlist_node *node;
        struct hlist_head *head;
@@ -583,7 +526,7 @@ static int find_best_vis_server(struct bat_priv *bat_priv,
                        if (!router)
                                continue;
 
-                       if ((orig_node->flags & VIS_SERVER) &&
+                       if ((orig_node->flags & BATADV_VIS_SERVER) &&
                            (router->tq_avg > best_tq)) {
                                best_tq = router->tq_avg;
                                memcpy(packet->target_orig, orig_node->orig,
@@ -598,13 +541,15 @@ static int find_best_vis_server(struct bat_priv *bat_priv,
 }
 
 /* Return true if the vis packet is full. */
-static bool vis_packet_full(const struct vis_info *info)
+static bool batadv_vis_packet_full(const struct vis_info *info)
 {
        const struct vis_packet *packet;
+       size_t num_items;
+
        packet = (struct vis_packet *)info->skb_packet->data;
+       num_items = BATADV_MAX_VIS_PACKET_SIZE / sizeof(struct vis_info_entry);
 
-       if (MAX_VIS_PACKET_SIZE / sizeof(struct vis_info_entry)
-               < packet->entries + 1)
+       if (num_items < packet->entries + 1)
                return true;
        return false;
 }
@@ -612,9 +557,9 @@ static bool vis_packet_full(const struct vis_info *info)
 /* generates a packet of own vis data,
  * returns 0 on success, -1 if no packet could be generated
  */
-static int generate_vis_packet(struct bat_priv *bat_priv)
+static int batadv_generate_vis_packet(struct bat_priv *bat_priv)
 {
-       struct hashtable_t *hash = bat_priv->orig_hash;
+       struct batadv_hashtable *hash = bat_priv->orig_hash;
        struct hlist_node *node;
        struct hlist_head *head;
        struct orig_node *orig_node;
@@ -630,13 +575,13 @@ static int generate_vis_packet(struct bat_priv *bat_priv)
        packet->vis_type = atomic_read(&bat_priv->vis_mode);
 
        memcpy(packet->target_orig, batadv_broadcast_addr, ETH_ALEN);
-       packet->header.ttl = TTL;
+       packet->header.ttl = BATADV_TTL;
        packet->seqno = htonl(ntohl(packet->seqno) + 1);
        packet->entries = 0;
        skb_trim(info->skb_packet, sizeof(*packet));
 
-       if (packet->vis_type == VIS_TYPE_CLIENT_UPDATE) {
-               best_tq = find_best_vis_server(bat_priv, info);
+       if (packet->vis_type == BATADV_VIS_TYPE_CLIENT_UPDATE) {
+               best_tq = batadv_find_best_vis_server(bat_priv, info);
 
                if (best_tq < 0)
                        return best_tq;
@@ -651,10 +596,10 @@ static int generate_vis_packet(struct bat_priv *bat_priv)
                        if (!router)
                                continue;
 
-                       if (!compare_eth(router->addr, orig_node->orig))
+                       if (!batadv_compare_eth(router->addr, orig_node->orig))
                                goto next;
 
-                       if (router->if_incoming->if_status != IF_ACTIVE)
+                       if (router->if_incoming->if_status != BATADV_IF_ACTIVE)
                                goto next;
 
                        if (router->tq_avg < 1)
@@ -673,7 +618,7 @@ static int generate_vis_packet(struct bat_priv *bat_priv)
 next:
                        batadv_neigh_node_free_ref(router);
 
-                       if (vis_packet_full(info))
+                       if (batadv_vis_packet_full(info))
                                goto unlock;
                }
                rcu_read_unlock();
@@ -695,7 +640,7 @@ next:
                        entry->quality = 0; /* 0 means TT */
                        packet->entries++;
 
-                       if (vis_packet_full(info))
+                       if (batadv_vis_packet_full(info))
                                goto unlock;
                }
                rcu_read_unlock();
@@ -711,10 +656,10 @@ unlock:
 /* free old vis packets. Must be called with this vis_hash_lock
  * held
  */
-static void purge_vis_packets(struct bat_priv *bat_priv)
+static void batadv_purge_vis_packets(struct bat_priv *bat_priv)
 {
        uint32_t i;
-       struct hashtable_t *hash = bat_priv->vis_hash;
+       struct batadv_hashtable *hash = bat_priv->vis_hash;
        struct hlist_node *node, *node_tmp;
        struct hlist_head *head;
        struct vis_info *info;
@@ -728,20 +673,21 @@ static void purge_vis_packets(struct bat_priv *bat_priv)
                        if (info == bat_priv->my_vis_info)
                                continue;
 
-                       if (has_timed_out(info->first_seen, VIS_TIMEOUT)) {
+                       if (batadv_has_timed_out(info->first_seen,
+                                                BATADV_VIS_TIMEOUT)) {
                                hlist_del(node);
-                               send_list_del(info);
-                               kref_put(&info->refcount, free_info);
+                               batadv_send_list_del(info);
+                               kref_put(&info->refcount, batadv_free_info);
                        }
                }
        }
 }
 
-static void broadcast_vis_packet(struct bat_priv *bat_priv,
-                                struct vis_info *info)
+static void batadv_broadcast_vis_packet(struct bat_priv *bat_priv,
+                                       struct vis_info *info)
 {
        struct neigh_node *router;
-       struct hashtable_t *hash = bat_priv->orig_hash;
+       struct batadv_hashtable *hash = bat_priv->orig_hash;
        struct hlist_node *node;
        struct hlist_head *head;
        struct orig_node *orig_node;
@@ -761,7 +707,7 @@ static void broadcast_vis_packet(struct bat_priv *bat_priv,
                rcu_read_lock();
                hlist_for_each_entry_rcu(orig_node, node, head, hash_entry) {
                        /* if it's a vis server and reachable, send it. */
-                       if (!(orig_node->flags & VIS_SERVER))
+                       if (!(orig_node->flags & BATADV_VIS_SERVER))
                                continue;
 
                        router = batadv_orig_node_get_router(orig_node);
@@ -771,8 +717,8 @@ static void broadcast_vis_packet(struct bat_priv *bat_priv,
                        /* don't send it if we already received the packet from
                         * this node.
                         */
-                       if (recv_list_is_in(bat_priv, &info->recv_list,
-                                           orig_node->orig)) {
+                       if (batadv_recv_list_is_in(bat_priv, &info->recv_list,
+                                                  orig_node->orig)) {
                                batadv_neigh_node_free_ref(router);
                                continue;
                        }
@@ -793,8 +739,8 @@ static void broadcast_vis_packet(struct bat_priv *bat_priv,
        }
 }
 
-static void unicast_vis_packet(struct bat_priv *bat_priv,
-                              struct vis_info *info)
+static void batadv_unicast_vis_packet(struct bat_priv *bat_priv,
+                                     struct vis_info *info)
 {
        struct orig_node *orig_node;
        struct neigh_node *router = NULL;
@@ -803,7 +749,7 @@ static void unicast_vis_packet(struct bat_priv *bat_priv,
 
        packet = (struct vis_packet *)info->skb_packet->data;
 
-       orig_node = orig_hash_find(bat_priv, packet->target_orig);
+       orig_node = batadv_orig_hash_find(bat_priv, packet->target_orig);
        if (!orig_node)
                goto out;
 
@@ -822,13 +768,14 @@ out:
                batadv_orig_node_free_ref(orig_node);
 }
 
-/* only send one vis packet. called from send_vis_packets() */
-static void send_vis_packet(struct bat_priv *bat_priv, struct vis_info *info)
+/* only send one vis packet. called from batadv_send_vis_packets() */
+static void batadv_send_vis_packet(struct bat_priv *bat_priv,
+                                  struct vis_info *info)
 {
        struct hard_iface *primary_if;
        struct vis_packet *packet;
 
-       primary_if = primary_if_get_selected(bat_priv);
+       primary_if = batadv_primary_if_get_selected(bat_priv);
        if (!primary_if)
                goto out;
 
@@ -842,18 +789,18 @@ static void send_vis_packet(struct bat_priv *bat_priv, struct vis_info *info)
        packet->header.ttl--;
 
        if (is_broadcast_ether_addr(packet->target_orig))
-               broadcast_vis_packet(bat_priv, info);
+               batadv_broadcast_vis_packet(bat_priv, info);
        else
-               unicast_vis_packet(bat_priv, info);
+               batadv_unicast_vis_packet(bat_priv, info);
        packet->header.ttl++; /* restore TTL */
 
 out:
        if (primary_if)
-               hardif_free_ref(primary_if);
+               batadv_hardif_free_ref(primary_if);
 }
 
 /* called from timer; send (and maybe generate) vis packet. */
-static void send_vis_packets(struct work_struct *work)
+static void batadv_send_vis_packets(struct work_struct *work)
 {
        struct delayed_work *delayed_work =
                container_of(work, struct delayed_work, work);
@@ -862,11 +809,11 @@ static void send_vis_packets(struct work_struct *work)
        struct vis_info *info;
 
        spin_lock_bh(&bat_priv->vis_hash_lock);
-       purge_vis_packets(bat_priv);
+       batadv_purge_vis_packets(bat_priv);
 
-       if (generate_vis_packet(bat_priv) == 0) {
+       if (batadv_generate_vis_packet(bat_priv) == 0) {
                /* schedule if generation was successful */
-               send_list_add(bat_priv, bat_priv->my_vis_info);
+               batadv_send_list_add(bat_priv, bat_priv->my_vis_info);
        }
 
        while (!list_empty(&bat_priv->vis_send_list)) {
@@ -876,14 +823,14 @@ static void send_vis_packets(struct work_struct *work)
                kref_get(&info->refcount);
                spin_unlock_bh(&bat_priv->vis_hash_lock);
 
-               send_vis_packet(bat_priv, info);
+               batadv_send_vis_packet(bat_priv, info);
 
                spin_lock_bh(&bat_priv->vis_hash_lock);
-               send_list_del(info);
-               kref_put(&info->refcount, free_info);
+               batadv_send_list_del(info);
+               kref_put(&info->refcount, batadv_free_info);
        }
        spin_unlock_bh(&bat_priv->vis_hash_lock);
-       start_vis_timer(bat_priv);
+       batadv_start_vis_timer(bat_priv);
 }
 
 /* init the vis server. this may only be called when if_list is already
@@ -893,6 +840,8 @@ int batadv_vis_init(struct bat_priv *bat_priv)
 {
        struct vis_packet *packet;
        int hash_added;
+       unsigned int len;
+       unsigned long first_seen;
 
        if (bat_priv->vis_hash)
                return 0;
@@ -905,13 +854,12 @@ int batadv_vis_init(struct bat_priv *bat_priv)
                goto err;
        }
 
-       bat_priv->my_vis_info = kmalloc(MAX_VIS_PACKET_SIZE, GFP_ATOMIC);
+       bat_priv->my_vis_info = kmalloc(BATADV_MAX_VIS_PACKET_SIZE, GFP_ATOMIC);
        if (!bat_priv->my_vis_info)
                goto err;
 
-       bat_priv->my_vis_info->skb_packet = dev_alloc_skb(sizeof(*packet) +
-                                                         MAX_VIS_PACKET_SIZE +
-                                                         ETH_HLEN);
+       len = sizeof(*packet) + BATADV_MAX_VIS_PACKET_SIZE + ETH_HLEN;
+       bat_priv->my_vis_info->skb_packet = dev_alloc_skb(len);
        if (!bat_priv->my_vis_info->skb_packet)
                goto free_info;
 
@@ -920,32 +868,33 @@ int batadv_vis_init(struct bat_priv *bat_priv)
                                              sizeof(*packet));
 
        /* prefill the vis info */
-       bat_priv->my_vis_info->first_seen = jiffies -
-                                               msecs_to_jiffies(VIS_INTERVAL);
+       first_seen = jiffies - msecs_to_jiffies(BATADV_VIS_INTERVAL);
+       bat_priv->my_vis_info->first_seen = first_seen;
        INIT_LIST_HEAD(&bat_priv->my_vis_info->recv_list);
        INIT_LIST_HEAD(&bat_priv->my_vis_info->send_list);
        kref_init(&bat_priv->my_vis_info->refcount);
        bat_priv->my_vis_info->bat_priv = bat_priv;
-       packet->header.version = COMPAT_VERSION;
-       packet->header.packet_type = BAT_VIS;
-       packet->header.ttl = TTL;
+       packet->header.version = BATADV_COMPAT_VERSION;
+       packet->header.packet_type = BATADV_VIS;
+       packet->header.ttl = BATADV_TTL;
        packet->seqno = 0;
        packet->entries = 0;
 
        INIT_LIST_HEAD(&bat_priv->vis_send_list);
 
-       hash_added = hash_add(bat_priv->vis_hash, vis_info_cmp, vis_info_choose,
-                             bat_priv->my_vis_info,
-                             &bat_priv->my_vis_info->hash_entry);
+       hash_added = batadv_hash_add(bat_priv->vis_hash, batadv_vis_info_cmp,
+                                    batadv_vis_info_choose,
+                                    bat_priv->my_vis_info,
+                                    &bat_priv->my_vis_info->hash_entry);
        if (hash_added != 0) {
                pr_err("Can't add own vis packet into hash\n");
                /* not in hash, need to remove it manually. */
-               kref_put(&bat_priv->my_vis_info->refcount, free_info);
+               kref_put(&bat_priv->my_vis_info->refcount, batadv_free_info);
                goto err;
        }
 
        spin_unlock_bh(&bat_priv->vis_hash_lock);
-       start_vis_timer(bat_priv);
+       batadv_start_vis_timer(bat_priv);
        return 0;
 
 free_info:
@@ -958,13 +907,13 @@ err:
 }
 
 /* Decrease the reference count on a hash item info */
-static void free_info_ref(struct hlist_node *node, void *arg)
+static void batadv_free_info_ref(struct hlist_node *node, void *arg)
 {
        struct vis_info *info;
 
        info = container_of(node, struct vis_info, hash_entry);
-       send_list_del(info);
-       kref_put(&info->refcount, free_info);
+       batadv_send_list_del(info);
+       kref_put(&info->refcount, batadv_free_info);
 }
 
 /* shutdown vis-server */
@@ -977,16 +926,16 @@ void batadv_vis_quit(struct bat_priv *bat_priv)
 
        spin_lock_bh(&bat_priv->vis_hash_lock);
        /* properly remove, kill timers ... */
-       hash_delete(bat_priv->vis_hash, free_info_ref, NULL);
+       batadv_hash_delete(bat_priv->vis_hash, batadv_free_info_ref, NULL);
        bat_priv->vis_hash = NULL;
        bat_priv->my_vis_info = NULL;
        spin_unlock_bh(&bat_priv->vis_hash_lock);
 }
 
 /* schedule packets for (re)transmission */
-static void start_vis_timer(struct bat_priv *bat_priv)
+static void batadv_start_vis_timer(struct bat_priv *bat_priv)
 {
-       INIT_DELAYED_WORK(&bat_priv->vis_work, send_vis_packets);
+       INIT_DELAYED_WORK(&bat_priv->vis_work, batadv_send_vis_packets);
        queue_delayed_work(batadv_event_workqueue, &bat_priv->vis_work,
-                          msecs_to_jiffies(VIS_INTERVAL));
+                          msecs_to_jiffies(BATADV_VIS_INTERVAL));
 }
This page took 0.17393 seconds and 5 git commands to generate.