Lines Matching refs:neigh_node
295 struct batadv_neigh_node *neigh_node; in batadv_neigh_node_release() local
298 neigh_node = container_of(ref, struct batadv_neigh_node, refcount); in batadv_neigh_node_release()
301 &neigh_node->ifinfo_list, list) { in batadv_neigh_node_release()
305 batadv_hardif_neigh_put(neigh_node->hardif_neigh); in batadv_neigh_node_release()
307 batadv_hardif_put(neigh_node->if_incoming); in batadv_neigh_node_release()
309 kfree_rcu(neigh_node, rcu); in batadv_neigh_node_release()
317 void batadv_neigh_node_put(struct batadv_neigh_node *neigh_node) in batadv_neigh_node_put() argument
319 kref_put(&neigh_node->refcount, batadv_neigh_node_release); in batadv_neigh_node_put()
663 struct batadv_neigh_node *neigh_node; in batadv_neigh_node_create() local
668 neigh_node = batadv_neigh_node_get(orig_node, hard_iface, neigh_addr); in batadv_neigh_node_create()
669 if (neigh_node) in batadv_neigh_node_create()
677 neigh_node = kzalloc(sizeof(*neigh_node), GFP_ATOMIC); in batadv_neigh_node_create()
678 if (!neigh_node) in batadv_neigh_node_create()
681 INIT_HLIST_NODE(&neigh_node->list); in batadv_neigh_node_create()
682 INIT_HLIST_HEAD(&neigh_node->ifinfo_list); in batadv_neigh_node_create()
683 spin_lock_init(&neigh_node->ifinfo_lock); in batadv_neigh_node_create()
686 ether_addr_copy(neigh_node->addr, neigh_addr); in batadv_neigh_node_create()
687 neigh_node->if_incoming = hard_iface; in batadv_neigh_node_create()
688 neigh_node->orig_node = orig_node; in batadv_neigh_node_create()
689 neigh_node->last_seen = jiffies; in batadv_neigh_node_create()
693 neigh_node->hardif_neigh = hardif_neigh; in batadv_neigh_node_create()
696 kref_init(&neigh_node->refcount); in batadv_neigh_node_create()
698 kref_get(&neigh_node->refcount); in batadv_neigh_node_create()
699 hlist_add_head_rcu(&neigh_node->list, &orig_node->neigh_list); in batadv_neigh_node_create()
710 return neigh_node; in batadv_neigh_node_create()
726 struct batadv_neigh_node *neigh_node; in batadv_neigh_node_get_or_create() local
729 neigh_node = batadv_neigh_node_get(orig_node, hard_iface, neigh_addr); in batadv_neigh_node_get_or_create()
730 if (neigh_node) in batadv_neigh_node_get_or_create()
731 return neigh_node; in batadv_neigh_node_get_or_create()
908 struct batadv_neigh_node *neigh_node; in batadv_orig_node_release() local
919 hlist_for_each_entry_safe(neigh_node, node_tmp, in batadv_orig_node_release()
921 hlist_del_rcu(&neigh_node->list); in batadv_orig_node_release()
922 batadv_neigh_node_put(neigh_node); in batadv_orig_node_release()
1182 struct batadv_neigh_node *neigh_node; in batadv_purge_orig_neighbors() local
1190 hlist_for_each_entry_safe(neigh_node, node_tmp, in batadv_purge_orig_neighbors()
1192 last_seen = neigh_node->last_seen; in batadv_purge_orig_neighbors()
1193 if_incoming = neigh_node->if_incoming; in batadv_purge_orig_neighbors()
1204 orig_node->orig, neigh_node->addr, in batadv_purge_orig_neighbors()
1209 orig_node->orig, neigh_node->addr, in batadv_purge_orig_neighbors()
1214 hlist_del_rcu(&neigh_node->list); in batadv_purge_orig_neighbors()
1215 batadv_neigh_node_put(neigh_node); in batadv_purge_orig_neighbors()
1220 batadv_purge_neigh_ifinfo(bat_priv, neigh_node); in batadv_purge_orig_neighbors()