Lines Matching refs:orig_node

68 batadv_orig_node_vlan_get(struct batadv_orig_node *orig_node,  in batadv_orig_node_vlan_get()  argument
74 hlist_for_each_entry_rcu(tmp, &orig_node->vlan_list, list) { in batadv_orig_node_vlan_get()
103 batadv_orig_node_vlan_new(struct batadv_orig_node *orig_node, in batadv_orig_node_vlan_new() argument
108 spin_lock_bh(&orig_node->vlan_list_lock); in batadv_orig_node_vlan_new()
111 vlan = batadv_orig_node_vlan_get(orig_node, vid); in batadv_orig_node_vlan_new()
122 hlist_add_head_rcu(&vlan->list, &orig_node->vlan_list); in batadv_orig_node_vlan_new()
125 spin_unlock_bh(&orig_node->vlan_list_lock); in batadv_orig_node_vlan_new()
202 bao = neigh_node->orig_node->bat_priv->bat_algo_ops; in batadv_neigh_node_release()
239 batadv_orig_router_get(struct batadv_orig_node *orig_node, in batadv_orig_router_get() argument
246 hlist_for_each_entry_rcu(orig_ifinfo, &orig_node->ifinfo_list, list) { in batadv_orig_router_get()
271 batadv_orig_ifinfo_get(struct batadv_orig_node *orig_node, in batadv_orig_ifinfo_get() argument
277 hlist_for_each_entry_rcu(tmp, &orig_node->ifinfo_list, in batadv_orig_ifinfo_get()
305 batadv_orig_ifinfo_new(struct batadv_orig_node *orig_node, in batadv_orig_ifinfo_new() argument
311 spin_lock_bh(&orig_node->neigh_list_lock); in batadv_orig_ifinfo_new()
313 orig_ifinfo = batadv_orig_ifinfo_get(orig_node, if_outgoing); in batadv_orig_ifinfo_new()
335 &orig_node->ifinfo_list); in batadv_orig_ifinfo_new()
337 spin_unlock_bh(&orig_node->neigh_list_lock); in batadv_orig_ifinfo_new()
430 batadv_neigh_node_get(const struct batadv_orig_node *orig_node, in batadv_neigh_node_get() argument
437 hlist_for_each_entry_rcu(tmp_neigh_node, &orig_node->neigh_list, list) { in batadv_neigh_node_get()
465 batadv_neigh_node_new(struct batadv_orig_node *orig_node, in batadv_neigh_node_new() argument
471 neigh_node = batadv_neigh_node_get(orig_node, hard_iface, neigh_addr); in batadv_neigh_node_new()
491 neigh_node->orig_node = orig_node; in batadv_neigh_node_new()
496 spin_lock_bh(&orig_node->neigh_list_lock); in batadv_neigh_node_new()
497 hlist_add_head_rcu(&neigh_node->list, &orig_node->neigh_list); in batadv_neigh_node_new()
498 spin_unlock_bh(&orig_node->neigh_list_lock); in batadv_neigh_node_new()
500 batadv_dbg(BATADV_DBG_BATMAN, orig_node->bat_priv, in batadv_neigh_node_new()
502 neigh_addr, orig_node->orig, hard_iface->net_dev->name); in batadv_neigh_node_new()
545 struct batadv_orig_node *orig_node; in batadv_orig_node_free_rcu() local
547 orig_node = container_of(rcu, struct batadv_orig_node, rcu); in batadv_orig_node_free_rcu()
549 batadv_mcast_purge_orig(orig_node); in batadv_orig_node_free_rcu()
551 batadv_frag_purge_orig(orig_node, NULL); in batadv_orig_node_free_rcu()
553 if (orig_node->bat_priv->bat_algo_ops->bat_orig_free) in batadv_orig_node_free_rcu()
554 orig_node->bat_priv->bat_algo_ops->bat_orig_free(orig_node); in batadv_orig_node_free_rcu()
556 kfree(orig_node->tt_buff); in batadv_orig_node_free_rcu()
557 kfree(orig_node); in batadv_orig_node_free_rcu()
565 static void batadv_orig_node_release(struct batadv_orig_node *orig_node) in batadv_orig_node_release() argument
571 spin_lock_bh(&orig_node->neigh_list_lock); in batadv_orig_node_release()
575 &orig_node->neigh_list, list) { in batadv_orig_node_release()
581 &orig_node->ifinfo_list, list) { in batadv_orig_node_release()
585 spin_unlock_bh(&orig_node->neigh_list_lock); in batadv_orig_node_release()
588 batadv_nc_purge_orig(orig_node->bat_priv, orig_node, NULL); in batadv_orig_node_release()
590 call_rcu(&orig_node->rcu, batadv_orig_node_free_rcu); in batadv_orig_node_release()
598 void batadv_orig_node_free_ref(struct batadv_orig_node *orig_node) in batadv_orig_node_free_ref() argument
600 if (atomic_dec_and_test(&orig_node->refcount)) in batadv_orig_node_free_ref()
601 batadv_orig_node_release(orig_node); in batadv_orig_node_free_ref()
610 struct batadv_orig_node *orig_node; in batadv_originator_free() local
625 hlist_for_each_entry_safe(orig_node, node_tmp, in batadv_originator_free()
627 hlist_del_rcu(&orig_node->hash_entry); in batadv_originator_free()
628 batadv_orig_node_free_ref(orig_node); in batadv_originator_free()
648 struct batadv_orig_node *orig_node; in batadv_orig_node_new() local
656 orig_node = kzalloc(sizeof(*orig_node), GFP_ATOMIC); in batadv_orig_node_new()
657 if (!orig_node) in batadv_orig_node_new()
660 INIT_HLIST_HEAD(&orig_node->neigh_list); in batadv_orig_node_new()
661 INIT_HLIST_HEAD(&orig_node->vlan_list); in batadv_orig_node_new()
662 INIT_HLIST_HEAD(&orig_node->ifinfo_list); in batadv_orig_node_new()
663 spin_lock_init(&orig_node->bcast_seqno_lock); in batadv_orig_node_new()
664 spin_lock_init(&orig_node->neigh_list_lock); in batadv_orig_node_new()
665 spin_lock_init(&orig_node->tt_buff_lock); in batadv_orig_node_new()
666 spin_lock_init(&orig_node->tt_lock); in batadv_orig_node_new()
667 spin_lock_init(&orig_node->vlan_list_lock); in batadv_orig_node_new()
669 batadv_nc_init_orig(orig_node); in batadv_orig_node_new()
672 atomic_set(&orig_node->refcount, 2); in batadv_orig_node_new()
674 orig_node->bat_priv = bat_priv; in batadv_orig_node_new()
675 ether_addr_copy(orig_node->orig, addr); in batadv_orig_node_new()
676 batadv_dat_init_orig_node_addr(orig_node); in batadv_orig_node_new()
677 atomic_set(&orig_node->last_ttvn, 0); in batadv_orig_node_new()
678 orig_node->tt_buff = NULL; in batadv_orig_node_new()
679 orig_node->tt_buff_len = 0; in batadv_orig_node_new()
680 orig_node->last_seen = jiffies; in batadv_orig_node_new()
682 orig_node->bcast_seqno_reset = reset_time; in batadv_orig_node_new()
685 orig_node->mcast_flags = BATADV_NO_FLAGS; in batadv_orig_node_new()
686 INIT_HLIST_NODE(&orig_node->mcast_want_all_unsnoopables_node); in batadv_orig_node_new()
687 INIT_HLIST_NODE(&orig_node->mcast_want_all_ipv4_node); in batadv_orig_node_new()
688 INIT_HLIST_NODE(&orig_node->mcast_want_all_ipv6_node); in batadv_orig_node_new()
689 spin_lock_init(&orig_node->mcast_handler_lock); in batadv_orig_node_new()
693 vlan = batadv_orig_node_vlan_new(orig_node, BATADV_NO_FLAGS); in batadv_orig_node_new()
703 INIT_HLIST_HEAD(&orig_node->fragments[i].head); in batadv_orig_node_new()
704 spin_lock_init(&orig_node->fragments[i].lock); in batadv_orig_node_new()
705 orig_node->fragments[i].size = 0; in batadv_orig_node_new()
708 return orig_node; in batadv_orig_node_new()
710 kfree(orig_node); in batadv_orig_node_new()
764 struct batadv_orig_node *orig_node) in batadv_purge_orig_ifinfo() argument
771 spin_lock_bh(&orig_node->neigh_list_lock); in batadv_purge_orig_ifinfo()
775 &orig_node->ifinfo_list, list) { in batadv_purge_orig_ifinfo()
790 orig_node->orig, if_outgoing->net_dev->name); in batadv_purge_orig_ifinfo()
796 if (orig_node->last_bonding_candidate == orig_ifinfo) { in batadv_purge_orig_ifinfo()
797 orig_node->last_bonding_candidate = NULL; in batadv_purge_orig_ifinfo()
802 spin_unlock_bh(&orig_node->neigh_list_lock); in batadv_purge_orig_ifinfo()
816 struct batadv_orig_node *orig_node) in batadv_purge_orig_neighbors() argument
824 spin_lock_bh(&orig_node->neigh_list_lock); in batadv_purge_orig_neighbors()
828 &orig_node->neigh_list, list) { in batadv_purge_orig_neighbors()
841 orig_node->orig, neigh_node->addr, in batadv_purge_orig_neighbors()
846 orig_node->orig, neigh_node->addr, in batadv_purge_orig_neighbors()
861 spin_unlock_bh(&orig_node->neigh_list_lock); in batadv_purge_orig_neighbors()
875 struct batadv_orig_node *orig_node, in batadv_find_best_neighbor() argument
882 hlist_for_each_entry_rcu(neigh, &orig_node->neigh_list, list) { in batadv_find_best_neighbor()
911 struct batadv_orig_node *orig_node) in batadv_purge_orig_node() argument
917 if (batadv_has_timed_out(orig_node->last_seen, in batadv_purge_orig_node()
921 orig_node->orig, in batadv_purge_orig_node()
922 jiffies_to_msecs(orig_node->last_seen)); in batadv_purge_orig_node()
925 changed_ifinfo = batadv_purge_orig_ifinfo(bat_priv, orig_node); in batadv_purge_orig_node()
926 changed_neigh = batadv_purge_orig_neighbors(bat_priv, orig_node); in batadv_purge_orig_node()
932 best_neigh_node = batadv_find_best_neighbor(bat_priv, orig_node, in batadv_purge_orig_node()
934 batadv_update_route(bat_priv, orig_node, BATADV_IF_DEFAULT, in batadv_purge_orig_node()
949 orig_node, in batadv_purge_orig_node()
951 batadv_update_route(bat_priv, orig_node, hard_iface, in batadv_purge_orig_node()
967 struct batadv_orig_node *orig_node; in _batadv_purge_orig() local
979 hlist_for_each_entry_safe(orig_node, node_tmp, in _batadv_purge_orig()
981 if (batadv_purge_orig_node(bat_priv, orig_node)) { in _batadv_purge_orig()
982 batadv_gw_node_delete(bat_priv, orig_node); in _batadv_purge_orig()
983 hlist_del_rcu(&orig_node->hash_entry); in _batadv_purge_orig()
984 batadv_tt_global_del_orig(orig_node->bat_priv, in _batadv_purge_orig()
985 orig_node, -1, in _batadv_purge_orig()
987 batadv_orig_node_free_ref(orig_node); in _batadv_purge_orig()
991 batadv_frag_purge_orig(orig_node, in _batadv_purge_orig()
1100 struct batadv_orig_node *orig_node; in batadv_orig_hash_add_if() local
1111 hlist_for_each_entry_rcu(orig_node, head, hash_entry) { in batadv_orig_hash_add_if()
1114 ret = bao->bat_orig_add_if(orig_node, in batadv_orig_hash_add_if()
1136 struct batadv_orig_node *orig_node; in batadv_orig_hash_del_if() local
1148 hlist_for_each_entry_rcu(orig_node, head, hash_entry) { in batadv_orig_hash_del_if()
1151 ret = bao->bat_orig_del_if(orig_node, in batadv_orig_hash_del_if()