Lines Matching refs:neigh_ifinfo
202 struct batadv_neigh_ifinfo *neigh_ifinfo; in batadv_neigh_ifinfo_release() local
204 neigh_ifinfo = container_of(ref, struct batadv_neigh_ifinfo, refcount); in batadv_neigh_ifinfo_release()
206 if (neigh_ifinfo->if_outgoing != BATADV_IF_DEFAULT) in batadv_neigh_ifinfo_release()
207 batadv_hardif_put(neigh_ifinfo->if_outgoing); in batadv_neigh_ifinfo_release()
209 kfree_rcu(neigh_ifinfo, rcu); in batadv_neigh_ifinfo_release()
217 void batadv_neigh_ifinfo_put(struct batadv_neigh_ifinfo *neigh_ifinfo) in batadv_neigh_ifinfo_put() argument
219 kref_put(&neigh_ifinfo->refcount, batadv_neigh_ifinfo_release); in batadv_neigh_ifinfo_put()
261 struct batadv_neigh_ifinfo *neigh_ifinfo; in batadv_neigh_node_release() local
265 hlist_for_each_entry_safe(neigh_ifinfo, node_tmp, in batadv_neigh_node_release()
267 batadv_neigh_ifinfo_put(neigh_ifinfo); in batadv_neigh_node_release()
411 struct batadv_neigh_ifinfo *neigh_ifinfo = NULL, in batadv_neigh_ifinfo_get() local
423 neigh_ifinfo = tmp_neigh_ifinfo; in batadv_neigh_ifinfo_get()
428 return neigh_ifinfo; in batadv_neigh_ifinfo_get()
446 struct batadv_neigh_ifinfo *neigh_ifinfo; in batadv_neigh_ifinfo_new() local
450 neigh_ifinfo = batadv_neigh_ifinfo_get(neigh, if_outgoing); in batadv_neigh_ifinfo_new()
451 if (neigh_ifinfo) in batadv_neigh_ifinfo_new()
454 neigh_ifinfo = kzalloc(sizeof(*neigh_ifinfo), GFP_ATOMIC); in batadv_neigh_ifinfo_new()
455 if (!neigh_ifinfo) in batadv_neigh_ifinfo_new()
461 INIT_HLIST_NODE(&neigh_ifinfo->list); in batadv_neigh_ifinfo_new()
462 kref_init(&neigh_ifinfo->refcount); in batadv_neigh_ifinfo_new()
463 neigh_ifinfo->if_outgoing = if_outgoing; in batadv_neigh_ifinfo_new()
465 kref_get(&neigh_ifinfo->refcount); in batadv_neigh_ifinfo_new()
466 hlist_add_head_rcu(&neigh_ifinfo->list, &neigh->ifinfo_list); in batadv_neigh_ifinfo_new()
471 return neigh_ifinfo; in batadv_neigh_ifinfo_new()
1044 struct batadv_neigh_ifinfo *neigh_ifinfo; in batadv_purge_neigh_ifinfo() local
1051 hlist_for_each_entry_safe(neigh_ifinfo, node_tmp, in batadv_purge_neigh_ifinfo()
1053 if_outgoing = neigh_ifinfo->if_outgoing; in batadv_purge_neigh_ifinfo()
1069 hlist_del_rcu(&neigh_ifinfo->list); in batadv_purge_neigh_ifinfo()
1070 batadv_neigh_ifinfo_put(neigh_ifinfo); in batadv_purge_neigh_ifinfo()