Lines Matching defs:nc_node
204 * batadv_nc_node_release() - release nc_node from lists and queue for free
206 * @ref: kref pointer of the nc_node
210 struct batadv_nc_node *nc_node;
212 nc_node = container_of(ref, struct batadv_nc_node, refcount);
214 batadv_orig_node_put(nc_node->orig_node);
215 kfree_rcu(nc_node, rcu);
219 * batadv_nc_node_put() - decrement the nc_node refcounter and possibly
221 * @nc_node: nc_node to be free'd
223 static void batadv_nc_node_put(struct batadv_nc_node *nc_node)
225 if (!nc_node)
228 kref_put(&nc_node->refcount, batadv_nc_node_release);
278 * @nc_node: the nc node to check
283 struct batadv_nc_node *nc_node)
288 return batadv_has_timed_out(nc_node->last_seen, BATADV_NC_NODE_TIMEOUT);
350 struct batadv_nc_node *nc_node, *nc_node_tmp;
352 /* For each nc_node in list */
354 list_for_each_entry_safe(nc_node, nc_node_tmp, list, list) {
358 if (to_purge && !to_purge(bat_priv, nc_node))
362 "Removing nc_node %pM -> %pM\n",
363 nc_node->addr, nc_node->orig_node->orig);
364 list_del_rcu(&nc_node->list);
365 batadv_nc_node_put(nc_node);
385 /* Check ingoing nc_node's of this orig_node */
390 /* Check outgoing nc_node's of this orig_node */
799 * Return: the nc_node if found, NULL otherwise.
806 struct batadv_nc_node *nc_node, *nc_node_out = NULL;
816 list_for_each_entry_rcu(nc_node, list, list) {
817 if (!batadv_compare_eth(nc_node->addr, orig_node->orig))
820 if (!kref_get_unless_zero(&nc_node->refcount))
824 nc_node_out = nc_node;
841 * Return: the nc_node if found or created, NULL in case of an error.
849 struct batadv_nc_node *nc_node;
864 /* Check if nc_node is already added */
865 nc_node = batadv_nc_find_nc_node(orig_node, orig_neigh_node, in_coding);
868 if (nc_node)
871 nc_node = kzalloc(sizeof(*nc_node), GFP_ATOMIC);
872 if (!nc_node)
875 /* Initialize nc_node */
876 INIT_LIST_HEAD(&nc_node->list);
877 kref_init(&nc_node->refcount);
878 ether_addr_copy(nc_node->addr, orig_node->orig);
880 nc_node->orig_node = orig_neigh_node;
882 batadv_dbg(BATADV_DBG_NC, bat_priv, "Adding nc_node %pM -> %pM\n",
883 nc_node->addr, nc_node->orig_node->orig);
885 /* Add nc_node to orig_node */
886 kref_get(&nc_node->refcount);
887 list_add_tail_rcu(&nc_node->list, list);
892 return nc_node;
1427 struct batadv_nc_node *nc_node;
1431 list_for_each_entry_rcu(nc_node, &orig_node->in_coding_list, list) {
1435 ethhdr->h_source, nc_node);
1904 struct batadv_nc_node *nc_node;
1929 list_for_each_entry_rcu(nc_node,
1933 nc_node->addr);
1936 list_for_each_entry_rcu(nc_node,
1940 nc_node->addr);