Lines Matching refs:neigh_ifinfo
158 batadv_neigh_ifinfo_release(struct batadv_neigh_ifinfo *neigh_ifinfo) in batadv_neigh_ifinfo_release() argument
160 if (neigh_ifinfo->if_outgoing != BATADV_IF_DEFAULT) in batadv_neigh_ifinfo_release()
161 batadv_hardif_free_ref(neigh_ifinfo->if_outgoing); in batadv_neigh_ifinfo_release()
163 kfree_rcu(neigh_ifinfo, rcu); in batadv_neigh_ifinfo_release()
171 void batadv_neigh_ifinfo_free_ref(struct batadv_neigh_ifinfo *neigh_ifinfo) in batadv_neigh_ifinfo_free_ref() argument
173 if (atomic_dec_and_test(&neigh_ifinfo->refcount)) in batadv_neigh_ifinfo_free_ref()
174 batadv_neigh_ifinfo_release(neigh_ifinfo); in batadv_neigh_ifinfo_free_ref()
185 struct batadv_neigh_ifinfo *neigh_ifinfo; in batadv_neigh_node_release() local
187 hlist_for_each_entry_safe(neigh_ifinfo, node_tmp, in batadv_neigh_node_release()
189 batadv_neigh_ifinfo_free_ref(neigh_ifinfo); in batadv_neigh_node_release()
333 struct batadv_neigh_ifinfo *neigh_ifinfo = NULL, in batadv_neigh_ifinfo_get() local
345 neigh_ifinfo = tmp_neigh_ifinfo; in batadv_neigh_ifinfo_get()
350 return neigh_ifinfo; in batadv_neigh_ifinfo_get()
368 struct batadv_neigh_ifinfo *neigh_ifinfo; in batadv_neigh_ifinfo_new() local
372 neigh_ifinfo = batadv_neigh_ifinfo_get(neigh, if_outgoing); in batadv_neigh_ifinfo_new()
373 if (neigh_ifinfo) in batadv_neigh_ifinfo_new()
376 neigh_ifinfo = kzalloc(sizeof(*neigh_ifinfo), GFP_ATOMIC); in batadv_neigh_ifinfo_new()
377 if (!neigh_ifinfo) in batadv_neigh_ifinfo_new()
381 kfree(neigh_ifinfo); in batadv_neigh_ifinfo_new()
382 neigh_ifinfo = NULL; in batadv_neigh_ifinfo_new()
386 INIT_HLIST_NODE(&neigh_ifinfo->list); in batadv_neigh_ifinfo_new()
387 atomic_set(&neigh_ifinfo->refcount, 2); in batadv_neigh_ifinfo_new()
388 neigh_ifinfo->if_outgoing = if_outgoing; in batadv_neigh_ifinfo_new()
390 hlist_add_head_rcu(&neigh_ifinfo->list, &neigh->ifinfo_list); in batadv_neigh_ifinfo_new()
395 return neigh_ifinfo; in batadv_neigh_ifinfo_new()
684 struct batadv_neigh_ifinfo *neigh_ifinfo; in batadv_purge_neigh_ifinfo() local
691 hlist_for_each_entry_safe(neigh_ifinfo, node_tmp, in batadv_purge_neigh_ifinfo()
693 if_outgoing = neigh_ifinfo->if_outgoing; in batadv_purge_neigh_ifinfo()
709 hlist_del_rcu(&neigh_ifinfo->list); in batadv_purge_neigh_ifinfo()
710 batadv_neigh_ifinfo_free_ref(neigh_ifinfo); in batadv_purge_neigh_ifinfo()