Lines Matching refs:orig_ifinfo

242 	struct batadv_orig_ifinfo *orig_ifinfo;  in batadv_orig_router_get()  local
246 hlist_for_each_entry_rcu(orig_ifinfo, &orig_node->ifinfo_list, list) { in batadv_orig_router_get()
247 if (orig_ifinfo->if_outgoing != if_outgoing) in batadv_orig_router_get()
250 router = rcu_dereference(orig_ifinfo->router); in batadv_orig_router_get()
274 struct batadv_orig_ifinfo *tmp, *orig_ifinfo = NULL; in batadv_orig_ifinfo_get() local
285 orig_ifinfo = tmp; in batadv_orig_ifinfo_get()
290 return orig_ifinfo; in batadv_orig_ifinfo_get()
308 struct batadv_orig_ifinfo *orig_ifinfo = NULL; in batadv_orig_ifinfo_new() local
313 orig_ifinfo = batadv_orig_ifinfo_get(orig_node, if_outgoing); in batadv_orig_ifinfo_new()
314 if (orig_ifinfo) in batadv_orig_ifinfo_new()
317 orig_ifinfo = kzalloc(sizeof(*orig_ifinfo), GFP_ATOMIC); in batadv_orig_ifinfo_new()
318 if (!orig_ifinfo) in batadv_orig_ifinfo_new()
323 kfree(orig_ifinfo); in batadv_orig_ifinfo_new()
324 orig_ifinfo = NULL; in batadv_orig_ifinfo_new()
330 orig_ifinfo->batman_seqno_reset = reset_time; in batadv_orig_ifinfo_new()
331 orig_ifinfo->if_outgoing = if_outgoing; in batadv_orig_ifinfo_new()
332 INIT_HLIST_NODE(&orig_ifinfo->list); in batadv_orig_ifinfo_new()
333 atomic_set(&orig_ifinfo->refcount, 2); in batadv_orig_ifinfo_new()
334 hlist_add_head_rcu(&orig_ifinfo->list, in batadv_orig_ifinfo_new()
338 return orig_ifinfo; in batadv_orig_ifinfo_new()
513 static void batadv_orig_ifinfo_release(struct batadv_orig_ifinfo *orig_ifinfo) in batadv_orig_ifinfo_release() argument
517 if (orig_ifinfo->if_outgoing != BATADV_IF_DEFAULT) in batadv_orig_ifinfo_release()
518 batadv_hardif_free_ref(orig_ifinfo->if_outgoing); in batadv_orig_ifinfo_release()
521 router = rcu_dereference_protected(orig_ifinfo->router, true); in batadv_orig_ifinfo_release()
525 kfree_rcu(orig_ifinfo, rcu); in batadv_orig_ifinfo_release()
533 void batadv_orig_ifinfo_free_ref(struct batadv_orig_ifinfo *orig_ifinfo) in batadv_orig_ifinfo_free_ref() argument
535 if (atomic_dec_and_test(&orig_ifinfo->refcount)) in batadv_orig_ifinfo_free_ref()
536 batadv_orig_ifinfo_release(orig_ifinfo); in batadv_orig_ifinfo_free_ref()
569 struct batadv_orig_ifinfo *orig_ifinfo; in batadv_orig_node_release() local
580 hlist_for_each_entry_safe(orig_ifinfo, node_tmp, in batadv_orig_node_release()
582 hlist_del_rcu(&orig_ifinfo->list); in batadv_orig_node_release()
583 batadv_orig_ifinfo_free_ref(orig_ifinfo); in batadv_orig_node_release()
766 struct batadv_orig_ifinfo *orig_ifinfo; in batadv_purge_orig_ifinfo() local
774 hlist_for_each_entry_safe(orig_ifinfo, node_tmp, in batadv_purge_orig_ifinfo()
776 if_outgoing = orig_ifinfo->if_outgoing; in batadv_purge_orig_ifinfo()
794 hlist_del_rcu(&orig_ifinfo->list); in batadv_purge_orig_ifinfo()
795 batadv_orig_ifinfo_free_ref(orig_ifinfo); in batadv_purge_orig_ifinfo()
796 if (orig_node->last_bonding_candidate == orig_ifinfo) { in batadv_purge_orig_ifinfo()
798 batadv_orig_ifinfo_free_ref(orig_ifinfo); in batadv_purge_orig_ifinfo()