Lines Matching refs:nc_node
182 static void batadv_nc_node_release(struct batadv_nc_node *nc_node) in batadv_nc_node_release() argument
184 batadv_orig_node_free_ref(nc_node->orig_node); in batadv_nc_node_release()
185 kfree_rcu(nc_node, rcu); in batadv_nc_node_release()
193 static void batadv_nc_node_free_ref(struct batadv_nc_node *nc_node) in batadv_nc_node_free_ref() argument
195 if (atomic_dec_and_test(&nc_node->refcount)) in batadv_nc_node_free_ref()
196 batadv_nc_node_release(nc_node); in batadv_nc_node_free_ref()
231 struct batadv_nc_node *nc_node) in batadv_nc_to_purge_nc_node() argument
236 return batadv_has_timed_out(nc_node->last_seen, BATADV_NC_NODE_TIMEOUT); in batadv_nc_to_purge_nc_node()
297 struct batadv_nc_node *nc_node, *nc_node_tmp; in batadv_nc_purge_orig_nc_nodes() local
301 list_for_each_entry_safe(nc_node, nc_node_tmp, list, list) { in batadv_nc_purge_orig_nc_nodes()
305 if (to_purge && !to_purge(bat_priv, nc_node)) in batadv_nc_purge_orig_nc_nodes()
310 nc_node->addr, nc_node->orig_node->orig); in batadv_nc_purge_orig_nc_nodes()
311 list_del_rcu(&nc_node->list); in batadv_nc_purge_orig_nc_nodes()
312 batadv_nc_node_free_ref(nc_node); in batadv_nc_purge_orig_nc_nodes()
758 struct batadv_nc_node *nc_node, *nc_node_out = NULL; in batadv_nc_find_nc_node() local
768 list_for_each_entry_rcu(nc_node, list, list) { in batadv_nc_find_nc_node()
769 if (!batadv_compare_eth(nc_node->addr, orig_node->orig)) in batadv_nc_find_nc_node()
772 if (!atomic_inc_not_zero(&nc_node->refcount)) in batadv_nc_find_nc_node()
776 nc_node_out = nc_node; in batadv_nc_find_nc_node()
801 struct batadv_nc_node *nc_node; in batadv_nc_get_nc_node() local
806 nc_node = batadv_nc_find_nc_node(orig_node, orig_neigh_node, in_coding); in batadv_nc_get_nc_node()
809 if (nc_node) in batadv_nc_get_nc_node()
810 return nc_node; in batadv_nc_get_nc_node()
812 nc_node = kzalloc(sizeof(*nc_node), GFP_ATOMIC); in batadv_nc_get_nc_node()
813 if (!nc_node) in batadv_nc_get_nc_node()
820 INIT_LIST_HEAD(&nc_node->list); in batadv_nc_get_nc_node()
821 ether_addr_copy(nc_node->addr, orig_node->orig); in batadv_nc_get_nc_node()
822 nc_node->orig_node = orig_neigh_node; in batadv_nc_get_nc_node()
823 atomic_set(&nc_node->refcount, 2); in batadv_nc_get_nc_node()
835 nc_node->addr, nc_node->orig_node->orig); in batadv_nc_get_nc_node()
839 list_add_tail_rcu(&nc_node->list, list); in batadv_nc_get_nc_node()
842 return nc_node; in batadv_nc_get_nc_node()
845 kfree(nc_node); in batadv_nc_get_nc_node()
1385 struct batadv_nc_node *nc_node; in batadv_nc_skb_dst_search() local
1389 list_for_each_entry_rcu(nc_node, &orig_node->in_coding_list, list) { in batadv_nc_skb_dst_search()
1393 ethhdr->h_source, nc_node); in batadv_nc_skb_dst_search()
1853 struct batadv_nc_node *nc_node; in batadv_nc_nodes_seq_print_text() local
1878 list_for_each_entry_rcu(nc_node, in batadv_nc_nodes_seq_print_text()
1882 nc_node->addr); in batadv_nc_nodes_seq_print_text()
1887 list_for_each_entry_rcu(nc_node, in batadv_nc_nodes_seq_print_text()
1891 nc_node->addr); in batadv_nc_nodes_seq_print_text()