Lines Matching refs:neigh_node
182 static void batadv_neigh_node_release(struct batadv_neigh_node *neigh_node) in batadv_neigh_node_release() argument
188 &neigh_node->ifinfo_list, list) { in batadv_neigh_node_release()
191 batadv_hardif_free_ref(neigh_node->if_incoming); in batadv_neigh_node_release()
193 kfree_rcu(neigh_node, rcu); in batadv_neigh_node_release()
201 void batadv_neigh_node_free_ref(struct batadv_neigh_node *neigh_node) in batadv_neigh_node_free_ref() argument
203 if (atomic_dec_and_test(&neigh_node->refcount)) in batadv_neigh_node_free_ref()
204 batadv_neigh_node_release(neigh_node); in batadv_neigh_node_free_ref()
412 struct batadv_neigh_node *neigh_node; in batadv_neigh_node_new() local
414 neigh_node = kzalloc(sizeof(*neigh_node), GFP_ATOMIC); in batadv_neigh_node_new()
415 if (!neigh_node) in batadv_neigh_node_new()
418 INIT_HLIST_NODE(&neigh_node->list); in batadv_neigh_node_new()
419 INIT_HLIST_HEAD(&neigh_node->ifinfo_list); in batadv_neigh_node_new()
420 spin_lock_init(&neigh_node->ifinfo_lock); in batadv_neigh_node_new()
422 ether_addr_copy(neigh_node->addr, neigh_addr); in batadv_neigh_node_new()
423 neigh_node->if_incoming = hard_iface; in batadv_neigh_node_new()
424 neigh_node->orig_node = orig_node; in batadv_neigh_node_new()
427 atomic_set(&neigh_node->refcount, 2); in batadv_neigh_node_new()
430 return neigh_node; in batadv_neigh_node_new()
529 struct batadv_neigh_node *neigh_node; in batadv_orig_node_release() local
535 hlist_for_each_entry_safe(neigh_node, node_tmp, in batadv_orig_node_release()
537 hlist_del_rcu(&neigh_node->list); in batadv_orig_node_release()
538 batadv_neigh_node_free_ref(neigh_node); in batadv_orig_node_release()
780 struct batadv_neigh_node *neigh_node; in batadv_purge_orig_neighbors() local
788 hlist_for_each_entry_safe(neigh_node, node_tmp, in batadv_purge_orig_neighbors()
790 last_seen = neigh_node->last_seen; in batadv_purge_orig_neighbors()
791 if_incoming = neigh_node->if_incoming; in batadv_purge_orig_neighbors()
802 orig_node->orig, neigh_node->addr, in batadv_purge_orig_neighbors()
807 orig_node->orig, neigh_node->addr, in batadv_purge_orig_neighbors()
812 hlist_del_rcu(&neigh_node->list); in batadv_purge_orig_neighbors()
813 batadv_neigh_node_free_ref(neigh_node); in batadv_purge_orig_neighbors()
818 batadv_purge_neigh_ifinfo(bat_priv, neigh_node); in batadv_purge_orig_neighbors()