Lines Matching defs:neigh_ifinfo
221 * batadv_neigh_ifinfo_release() - release neigh_ifinfo from lists and queue for
223 * @ref: kref pointer of the neigh_ifinfo
227 struct batadv_neigh_ifinfo *neigh_ifinfo;
229 neigh_ifinfo = container_of(ref, struct batadv_neigh_ifinfo, refcount);
231 if (neigh_ifinfo->if_outgoing != BATADV_IF_DEFAULT)
232 batadv_hardif_put(neigh_ifinfo->if_outgoing);
234 kfree_rcu(neigh_ifinfo, rcu);
266 struct batadv_neigh_ifinfo *neigh_ifinfo;
270 hlist_for_each_entry_safe(neigh_ifinfo, node_tmp,
272 batadv_neigh_ifinfo_put(neigh_ifinfo);
400 * Return: the requested neigh_ifinfo or NULL if not found
406 struct batadv_neigh_ifinfo *neigh_ifinfo = NULL,
418 neigh_ifinfo = tmp_neigh_ifinfo;
423 return neigh_ifinfo;
427 * batadv_neigh_ifinfo_new() - search and possibly create an neigh_ifinfo object
431 * Return: NULL in case of failure or the neigh_ifinfo object for the
441 struct batadv_neigh_ifinfo *neigh_ifinfo;
445 neigh_ifinfo = batadv_neigh_ifinfo_get(neigh, if_outgoing);
446 if (neigh_ifinfo)
449 neigh_ifinfo = kzalloc(sizeof(*neigh_ifinfo), GFP_ATOMIC);
450 if (!neigh_ifinfo)
456 INIT_HLIST_NODE(&neigh_ifinfo->list);
457 kref_init(&neigh_ifinfo->refcount);
458 neigh_ifinfo->if_outgoing = if_outgoing;
460 kref_get(&neigh_ifinfo->refcount);
461 hlist_add_head_rcu(&neigh_ifinfo->list, &neigh->ifinfo_list);
466 return neigh_ifinfo;
1026 struct batadv_neigh_ifinfo *neigh_ifinfo;
1033 hlist_for_each_entry_safe(neigh_ifinfo, node_tmp,
1035 if_outgoing = neigh_ifinfo->if_outgoing;
1051 hlist_del_rcu(&neigh_ifinfo->list);
1052 batadv_neigh_ifinfo_put(neigh_ifinfo);