Lines Matching refs:orig_node

61 	struct batadv_orig_node *orig_node, *orig_node_tmp = NULL;  in batadv_orig_hash_find()  local
71 hlist_for_each_entry_rcu(orig_node, head, hash_entry) { in batadv_orig_hash_find()
72 if (!batadv_compare_eth(orig_node, data)) in batadv_orig_hash_find()
75 if (!kref_get_unless_zero(&orig_node->refcount)) in batadv_orig_hash_find()
78 orig_node_tmp = orig_node; in batadv_orig_hash_find()
112 batadv_orig_node_vlan_get(struct batadv_orig_node *orig_node, in batadv_orig_node_vlan_get() argument
118 hlist_for_each_entry_rcu(tmp, &orig_node->vlan_list, list) { in batadv_orig_node_vlan_get()
147 batadv_orig_node_vlan_new(struct batadv_orig_node *orig_node, in batadv_orig_node_vlan_new() argument
152 spin_lock_bh(&orig_node->vlan_list_lock); in batadv_orig_node_vlan_new()
155 vlan = batadv_orig_node_vlan_get(orig_node, vid); in batadv_orig_node_vlan_new()
167 hlist_add_head_rcu(&vlan->list, &orig_node->vlan_list); in batadv_orig_node_vlan_new()
170 spin_unlock_bh(&orig_node->vlan_list_lock); in batadv_orig_node_vlan_new()
292 batadv_orig_router_get(struct batadv_orig_node *orig_node, in batadv_orig_router_get() argument
299 hlist_for_each_entry_rcu(orig_ifinfo, &orig_node->ifinfo_list, list) { in batadv_orig_router_get()
324 batadv_orig_ifinfo_get(struct batadv_orig_node *orig_node, in batadv_orig_ifinfo_get() argument
330 hlist_for_each_entry_rcu(tmp, &orig_node->ifinfo_list, in batadv_orig_ifinfo_get()
358 batadv_orig_ifinfo_new(struct batadv_orig_node *orig_node, in batadv_orig_ifinfo_new() argument
364 spin_lock_bh(&orig_node->neigh_list_lock); in batadv_orig_ifinfo_new()
366 orig_ifinfo = batadv_orig_ifinfo_get(orig_node, if_outgoing); in batadv_orig_ifinfo_new()
386 &orig_node->ifinfo_list); in batadv_orig_ifinfo_new()
388 spin_unlock_bh(&orig_node->neigh_list_lock); in batadv_orig_ifinfo_new()
480 batadv_neigh_node_get(const struct batadv_orig_node *orig_node, in batadv_neigh_node_get() argument
487 hlist_for_each_entry_rcu(tmp_neigh_node, &orig_node->neigh_list, list) { in batadv_neigh_node_get()
516 struct batadv_orig_node *orig_node) in batadv_hardif_neigh_create() argument
535 ether_addr_copy(hardif_neigh->orig, orig_node->orig); in batadv_hardif_neigh_create()
563 struct batadv_orig_node *orig_node) in batadv_hardif_neigh_get_or_create() argument
572 return batadv_hardif_neigh_create(hard_iface, neigh_addr, orig_node); in batadv_hardif_neigh_get_or_create()
618 batadv_neigh_node_create(struct batadv_orig_node *orig_node, in batadv_neigh_node_create() argument
625 spin_lock_bh(&orig_node->neigh_list_lock); in batadv_neigh_node_create()
627 neigh_node = batadv_neigh_node_get(orig_node, hard_iface, neigh_addr); in batadv_neigh_node_create()
632 neigh_addr, orig_node); in batadv_neigh_node_create()
647 neigh_node->orig_node = orig_node; in batadv_neigh_node_create()
658 hlist_add_head_rcu(&neigh_node->list, &orig_node->neigh_list); in batadv_neigh_node_create()
660 batadv_dbg(BATADV_DBG_BATMAN, orig_node->bat_priv, in batadv_neigh_node_create()
662 neigh_addr, orig_node->orig, hard_iface->net_dev->name); in batadv_neigh_node_create()
665 spin_unlock_bh(&orig_node->neigh_list_lock); in batadv_neigh_node_create()
680 batadv_neigh_node_get_or_create(struct batadv_orig_node *orig_node, in batadv_neigh_node_get_or_create() argument
687 neigh_node = batadv_neigh_node_get(orig_node, hard_iface, neigh_addr); in batadv_neigh_node_get_or_create()
691 return batadv_neigh_node_create(orig_node, hard_iface, neigh_addr); in batadv_neigh_node_get_or_create()
795 struct batadv_orig_node *orig_node; in batadv_orig_node_free_rcu() local
797 orig_node = container_of(rcu, struct batadv_orig_node, rcu); in batadv_orig_node_free_rcu()
799 batadv_mcast_purge_orig(orig_node); in batadv_orig_node_free_rcu()
801 batadv_frag_purge_orig(orig_node, NULL); in batadv_orig_node_free_rcu()
803 kfree(orig_node->tt_buff); in batadv_orig_node_free_rcu()
804 kfree(orig_node); in batadv_orig_node_free_rcu()
816 struct batadv_orig_node *orig_node; in batadv_orig_node_release() local
821 orig_node = container_of(ref, struct batadv_orig_node, refcount); in batadv_orig_node_release()
823 spin_lock_bh(&orig_node->neigh_list_lock); in batadv_orig_node_release()
827 &orig_node->neigh_list, list) { in batadv_orig_node_release()
833 &orig_node->ifinfo_list, list) { in batadv_orig_node_release()
838 last_candidate = orig_node->last_bonding_candidate; in batadv_orig_node_release()
839 orig_node->last_bonding_candidate = NULL; in batadv_orig_node_release()
840 spin_unlock_bh(&orig_node->neigh_list_lock); in batadv_orig_node_release()
844 spin_lock_bh(&orig_node->vlan_list_lock); in batadv_orig_node_release()
845 hlist_for_each_entry_safe(vlan, node_tmp, &orig_node->vlan_list, list) { in batadv_orig_node_release()
849 spin_unlock_bh(&orig_node->vlan_list_lock); in batadv_orig_node_release()
852 batadv_nc_purge_orig(orig_node->bat_priv, orig_node, NULL); in batadv_orig_node_release()
854 call_rcu(&orig_node->rcu, batadv_orig_node_free_rcu); in batadv_orig_node_release()
867 struct batadv_orig_node *orig_node; in batadv_originator_free() local
882 hlist_for_each_entry_safe(orig_node, node_tmp, in batadv_originator_free()
884 hlist_del_rcu(&orig_node->hash_entry); in batadv_originator_free()
885 batadv_orig_node_put(orig_node); in batadv_originator_free()
906 struct batadv_orig_node *orig_node; in batadv_orig_node_new() local
914 orig_node = kzalloc(sizeof(*orig_node), GFP_ATOMIC); in batadv_orig_node_new()
915 if (!orig_node) in batadv_orig_node_new()
918 INIT_HLIST_HEAD(&orig_node->neigh_list); in batadv_orig_node_new()
919 INIT_HLIST_HEAD(&orig_node->vlan_list); in batadv_orig_node_new()
920 INIT_HLIST_HEAD(&orig_node->ifinfo_list); in batadv_orig_node_new()
921 spin_lock_init(&orig_node->bcast_seqno_lock); in batadv_orig_node_new()
922 spin_lock_init(&orig_node->neigh_list_lock); in batadv_orig_node_new()
923 spin_lock_init(&orig_node->tt_buff_lock); in batadv_orig_node_new()
924 spin_lock_init(&orig_node->tt_lock); in batadv_orig_node_new()
925 spin_lock_init(&orig_node->vlan_list_lock); in batadv_orig_node_new()
927 batadv_nc_init_orig(orig_node); in batadv_orig_node_new()
930 kref_init(&orig_node->refcount); in batadv_orig_node_new()
932 orig_node->bat_priv = bat_priv; in batadv_orig_node_new()
933 ether_addr_copy(orig_node->orig, addr); in batadv_orig_node_new()
934 batadv_dat_init_orig_node_addr(orig_node); in batadv_orig_node_new()
935 atomic_set(&orig_node->last_ttvn, 0); in batadv_orig_node_new()
936 orig_node->tt_buff = NULL; in batadv_orig_node_new()
937 orig_node->tt_buff_len = 0; in batadv_orig_node_new()
938 orig_node->last_seen = jiffies; in batadv_orig_node_new()
940 orig_node->bcast_seqno_reset = reset_time; in batadv_orig_node_new()
943 orig_node->mcast_flags = BATADV_MCAST_WANT_NO_RTR4; in batadv_orig_node_new()
944 orig_node->mcast_flags |= BATADV_MCAST_WANT_NO_RTR6; in batadv_orig_node_new()
945 INIT_HLIST_NODE(&orig_node->mcast_want_all_unsnoopables_node); in batadv_orig_node_new()
946 INIT_HLIST_NODE(&orig_node->mcast_want_all_ipv4_node); in batadv_orig_node_new()
947 INIT_HLIST_NODE(&orig_node->mcast_want_all_ipv6_node); in batadv_orig_node_new()
948 spin_lock_init(&orig_node->mcast_handler_lock); in batadv_orig_node_new()
952 vlan = batadv_orig_node_vlan_new(orig_node, BATADV_NO_FLAGS); in batadv_orig_node_new()
962 INIT_HLIST_HEAD(&orig_node->fragments[i].fragment_list); in batadv_orig_node_new()
963 spin_lock_init(&orig_node->fragments[i].lock); in batadv_orig_node_new()
964 orig_node->fragments[i].size = 0; in batadv_orig_node_new()
967 return orig_node; in batadv_orig_node_new()
969 kfree(orig_node); in batadv_orig_node_new()
1023 struct batadv_orig_node *orig_node) in batadv_purge_orig_ifinfo() argument
1030 spin_lock_bh(&orig_node->neigh_list_lock); in batadv_purge_orig_ifinfo()
1034 &orig_node->ifinfo_list, list) { in batadv_purge_orig_ifinfo()
1049 orig_node->orig, if_outgoing->net_dev->name); in batadv_purge_orig_ifinfo()
1055 if (orig_node->last_bonding_candidate == orig_ifinfo) { in batadv_purge_orig_ifinfo()
1056 orig_node->last_bonding_candidate = NULL; in batadv_purge_orig_ifinfo()
1061 spin_unlock_bh(&orig_node->neigh_list_lock); in batadv_purge_orig_ifinfo()
1075 struct batadv_orig_node *orig_node) in batadv_purge_orig_neighbors() argument
1083 spin_lock_bh(&orig_node->neigh_list_lock); in batadv_purge_orig_neighbors()
1087 &orig_node->neigh_list, list) { in batadv_purge_orig_neighbors()
1100 orig_node->orig, neigh_node->addr, in batadv_purge_orig_neighbors()
1105 orig_node->orig, neigh_node->addr, in batadv_purge_orig_neighbors()
1120 spin_unlock_bh(&orig_node->neigh_list_lock); in batadv_purge_orig_neighbors()
1134 struct batadv_orig_node *orig_node, in batadv_find_best_neighbor() argument
1141 hlist_for_each_entry_rcu(neigh, &orig_node->neigh_list, list) { in batadv_find_best_neighbor()
1169 struct batadv_orig_node *orig_node) in batadv_purge_orig_node() argument
1175 if (batadv_has_timed_out(orig_node->last_seen, in batadv_purge_orig_node()
1179 orig_node->orig, in batadv_purge_orig_node()
1180 jiffies_to_msecs(orig_node->last_seen)); in batadv_purge_orig_node()
1183 changed_ifinfo = batadv_purge_orig_ifinfo(bat_priv, orig_node); in batadv_purge_orig_node()
1184 changed_neigh = batadv_purge_orig_neighbors(bat_priv, orig_node); in batadv_purge_orig_node()
1190 best_neigh_node = batadv_find_best_neighbor(bat_priv, orig_node, in batadv_purge_orig_node()
1192 batadv_update_route(bat_priv, orig_node, BATADV_IF_DEFAULT, in batadv_purge_orig_node()
1209 orig_node, in batadv_purge_orig_node()
1211 batadv_update_route(bat_priv, orig_node, hard_iface, in batadv_purge_orig_node()
1232 struct batadv_orig_node *orig_node; in batadv_purge_orig_ref() local
1244 hlist_for_each_entry_safe(orig_node, node_tmp, in batadv_purge_orig_ref()
1246 if (batadv_purge_orig_node(bat_priv, orig_node)) { in batadv_purge_orig_ref()
1247 batadv_gw_node_delete(bat_priv, orig_node); in batadv_purge_orig_ref()
1248 hlist_del_rcu(&orig_node->hash_entry); in batadv_purge_orig_ref()
1249 batadv_tt_global_del_orig(orig_node->bat_priv, in batadv_purge_orig_ref()
1250 orig_node, -1, in batadv_purge_orig_ref()
1252 batadv_orig_node_put(orig_node); in batadv_purge_orig_ref()
1256 batadv_frag_purge_orig(orig_node, in batadv_purge_orig_ref()