Lines Matching refs:orig_node

62 	struct batadv_orig_node *orig_node, *orig_node_tmp = NULL;  in batadv_orig_hash_find()  local
72 hlist_for_each_entry_rcu(orig_node, head, hash_entry) { in batadv_orig_hash_find()
73 if (!batadv_compare_eth(orig_node, data)) in batadv_orig_hash_find()
76 if (!kref_get_unless_zero(&orig_node->refcount)) in batadv_orig_hash_find()
79 orig_node_tmp = orig_node; in batadv_orig_hash_find()
113 batadv_orig_node_vlan_get(struct batadv_orig_node *orig_node, in batadv_orig_node_vlan_get() argument
119 hlist_for_each_entry_rcu(tmp, &orig_node->vlan_list, list) { in batadv_orig_node_vlan_get()
148 batadv_orig_node_vlan_new(struct batadv_orig_node *orig_node, in batadv_orig_node_vlan_new() argument
153 spin_lock_bh(&orig_node->vlan_list_lock); in batadv_orig_node_vlan_new()
156 vlan = batadv_orig_node_vlan_get(orig_node, vid); in batadv_orig_node_vlan_new()
168 hlist_add_head_rcu(&vlan->list, &orig_node->vlan_list); in batadv_orig_node_vlan_new()
171 spin_unlock_bh(&orig_node->vlan_list_lock); in batadv_orig_node_vlan_new()
333 batadv_orig_router_get(struct batadv_orig_node *orig_node, in batadv_orig_router_get() argument
340 hlist_for_each_entry_rcu(orig_ifinfo, &orig_node->ifinfo_list, list) { in batadv_orig_router_get()
365 batadv_orig_ifinfo_get(struct batadv_orig_node *orig_node, in batadv_orig_ifinfo_get() argument
371 hlist_for_each_entry_rcu(tmp, &orig_node->ifinfo_list, in batadv_orig_ifinfo_get()
399 batadv_orig_ifinfo_new(struct batadv_orig_node *orig_node, in batadv_orig_ifinfo_new() argument
405 spin_lock_bh(&orig_node->neigh_list_lock); in batadv_orig_ifinfo_new()
407 orig_ifinfo = batadv_orig_ifinfo_get(orig_node, if_outgoing); in batadv_orig_ifinfo_new()
427 &orig_node->ifinfo_list); in batadv_orig_ifinfo_new()
429 spin_unlock_bh(&orig_node->neigh_list_lock); in batadv_orig_ifinfo_new()
521 batadv_neigh_node_get(const struct batadv_orig_node *orig_node, in batadv_neigh_node_get() argument
528 hlist_for_each_entry_rcu(tmp_neigh_node, &orig_node->neigh_list, list) { in batadv_neigh_node_get()
557 struct batadv_orig_node *orig_node) in batadv_hardif_neigh_create() argument
576 ether_addr_copy(hardif_neigh->orig, orig_node->orig); in batadv_hardif_neigh_create()
604 struct batadv_orig_node *orig_node) in batadv_hardif_neigh_get_or_create() argument
613 return batadv_hardif_neigh_create(hard_iface, neigh_addr, orig_node); in batadv_hardif_neigh_get_or_create()
659 batadv_neigh_node_create(struct batadv_orig_node *orig_node, in batadv_neigh_node_create() argument
666 spin_lock_bh(&orig_node->neigh_list_lock); in batadv_neigh_node_create()
668 neigh_node = batadv_neigh_node_get(orig_node, hard_iface, neigh_addr); in batadv_neigh_node_create()
673 neigh_addr, orig_node); in batadv_neigh_node_create()
688 neigh_node->orig_node = orig_node; in batadv_neigh_node_create()
699 hlist_add_head_rcu(&neigh_node->list, &orig_node->neigh_list); in batadv_neigh_node_create()
701 batadv_dbg(BATADV_DBG_BATMAN, orig_node->bat_priv, in batadv_neigh_node_create()
703 neigh_addr, orig_node->orig, hard_iface->net_dev->name); in batadv_neigh_node_create()
706 spin_unlock_bh(&orig_node->neigh_list_lock); in batadv_neigh_node_create()
722 batadv_neigh_node_get_or_create(struct batadv_orig_node *orig_node, in batadv_neigh_node_get_or_create() argument
729 neigh_node = batadv_neigh_node_get(orig_node, hard_iface, neigh_addr); in batadv_neigh_node_get_or_create()
733 return batadv_neigh_node_create(orig_node, hard_iface, neigh_addr); in batadv_neigh_node_get_or_create()
888 struct batadv_orig_node *orig_node; in batadv_orig_node_free_rcu() local
890 orig_node = container_of(rcu, struct batadv_orig_node, rcu); in batadv_orig_node_free_rcu()
892 batadv_mcast_purge_orig(orig_node); in batadv_orig_node_free_rcu()
894 batadv_frag_purge_orig(orig_node, NULL); in batadv_orig_node_free_rcu()
896 kfree(orig_node->tt_buff); in batadv_orig_node_free_rcu()
897 kfree(orig_node); in batadv_orig_node_free_rcu()
909 struct batadv_orig_node *orig_node; in batadv_orig_node_release() local
914 orig_node = container_of(ref, struct batadv_orig_node, refcount); in batadv_orig_node_release()
916 spin_lock_bh(&orig_node->neigh_list_lock); in batadv_orig_node_release()
920 &orig_node->neigh_list, list) { in batadv_orig_node_release()
926 &orig_node->ifinfo_list, list) { in batadv_orig_node_release()
931 last_candidate = orig_node->last_bonding_candidate; in batadv_orig_node_release()
932 orig_node->last_bonding_candidate = NULL; in batadv_orig_node_release()
933 spin_unlock_bh(&orig_node->neigh_list_lock); in batadv_orig_node_release()
938 spin_lock_bh(&orig_node->vlan_list_lock); in batadv_orig_node_release()
939 hlist_for_each_entry_safe(vlan, node_tmp, &orig_node->vlan_list, list) { in batadv_orig_node_release()
943 spin_unlock_bh(&orig_node->vlan_list_lock); in batadv_orig_node_release()
946 batadv_nc_purge_orig(orig_node->bat_priv, orig_node, NULL); in batadv_orig_node_release()
948 call_rcu(&orig_node->rcu, batadv_orig_node_free_rcu); in batadv_orig_node_release()
956 void batadv_orig_node_put(struct batadv_orig_node *orig_node) in batadv_orig_node_put() argument
958 kref_put(&orig_node->refcount, batadv_orig_node_release); in batadv_orig_node_put()
971 struct batadv_orig_node *orig_node; in batadv_originator_free() local
986 hlist_for_each_entry_safe(orig_node, node_tmp, in batadv_originator_free()
988 hlist_del_rcu(&orig_node->hash_entry); in batadv_originator_free()
989 batadv_orig_node_put(orig_node); in batadv_originator_free()
1010 struct batadv_orig_node *orig_node; in batadv_orig_node_new() local
1018 orig_node = kzalloc(sizeof(*orig_node), GFP_ATOMIC); in batadv_orig_node_new()
1019 if (!orig_node) in batadv_orig_node_new()
1022 INIT_HLIST_HEAD(&orig_node->neigh_list); in batadv_orig_node_new()
1023 INIT_HLIST_HEAD(&orig_node->vlan_list); in batadv_orig_node_new()
1024 INIT_HLIST_HEAD(&orig_node->ifinfo_list); in batadv_orig_node_new()
1025 spin_lock_init(&orig_node->bcast_seqno_lock); in batadv_orig_node_new()
1026 spin_lock_init(&orig_node->neigh_list_lock); in batadv_orig_node_new()
1027 spin_lock_init(&orig_node->tt_buff_lock); in batadv_orig_node_new()
1028 spin_lock_init(&orig_node->tt_lock); in batadv_orig_node_new()
1029 spin_lock_init(&orig_node->vlan_list_lock); in batadv_orig_node_new()
1031 batadv_nc_init_orig(orig_node); in batadv_orig_node_new()
1034 kref_init(&orig_node->refcount); in batadv_orig_node_new()
1036 orig_node->bat_priv = bat_priv; in batadv_orig_node_new()
1037 ether_addr_copy(orig_node->orig, addr); in batadv_orig_node_new()
1038 batadv_dat_init_orig_node_addr(orig_node); in batadv_orig_node_new()
1039 atomic_set(&orig_node->last_ttvn, 0); in batadv_orig_node_new()
1040 orig_node->tt_buff = NULL; in batadv_orig_node_new()
1041 orig_node->tt_buff_len = 0; in batadv_orig_node_new()
1042 orig_node->last_seen = jiffies; in batadv_orig_node_new()
1044 orig_node->bcast_seqno_reset = reset_time; in batadv_orig_node_new()
1047 orig_node->mcast_flags = BATADV_MCAST_WANT_NO_RTR4; in batadv_orig_node_new()
1048 orig_node->mcast_flags |= BATADV_MCAST_WANT_NO_RTR6; in batadv_orig_node_new()
1049 INIT_HLIST_NODE(&orig_node->mcast_want_all_unsnoopables_node); in batadv_orig_node_new()
1050 INIT_HLIST_NODE(&orig_node->mcast_want_all_ipv4_node); in batadv_orig_node_new()
1051 INIT_HLIST_NODE(&orig_node->mcast_want_all_ipv6_node); in batadv_orig_node_new()
1052 spin_lock_init(&orig_node->mcast_handler_lock); in batadv_orig_node_new()
1056 vlan = batadv_orig_node_vlan_new(orig_node, BATADV_NO_FLAGS); in batadv_orig_node_new()
1066 INIT_HLIST_HEAD(&orig_node->fragments[i].fragment_list); in batadv_orig_node_new()
1067 spin_lock_init(&orig_node->fragments[i].lock); in batadv_orig_node_new()
1068 orig_node->fragments[i].size = 0; in batadv_orig_node_new()
1071 return orig_node; in batadv_orig_node_new()
1073 kfree(orig_node); in batadv_orig_node_new()
1127 struct batadv_orig_node *orig_node) in batadv_purge_orig_ifinfo() argument
1134 spin_lock_bh(&orig_node->neigh_list_lock); in batadv_purge_orig_ifinfo()
1138 &orig_node->ifinfo_list, list) { in batadv_purge_orig_ifinfo()
1153 orig_node->orig, if_outgoing->net_dev->name); in batadv_purge_orig_ifinfo()
1159 if (orig_node->last_bonding_candidate == orig_ifinfo) { in batadv_purge_orig_ifinfo()
1160 orig_node->last_bonding_candidate = NULL; in batadv_purge_orig_ifinfo()
1165 spin_unlock_bh(&orig_node->neigh_list_lock); in batadv_purge_orig_ifinfo()
1179 struct batadv_orig_node *orig_node) in batadv_purge_orig_neighbors() argument
1187 spin_lock_bh(&orig_node->neigh_list_lock); in batadv_purge_orig_neighbors()
1191 &orig_node->neigh_list, list) { in batadv_purge_orig_neighbors()
1204 orig_node->orig, neigh_node->addr, in batadv_purge_orig_neighbors()
1209 orig_node->orig, neigh_node->addr, in batadv_purge_orig_neighbors()
1224 spin_unlock_bh(&orig_node->neigh_list_lock); in batadv_purge_orig_neighbors()
1238 struct batadv_orig_node *orig_node, in batadv_find_best_neighbor() argument
1245 hlist_for_each_entry_rcu(neigh, &orig_node->neigh_list, list) { in batadv_find_best_neighbor()
1274 struct batadv_orig_node *orig_node) in batadv_purge_orig_node() argument
1280 if (batadv_has_timed_out(orig_node->last_seen, in batadv_purge_orig_node()
1284 orig_node->orig, in batadv_purge_orig_node()
1285 jiffies_to_msecs(orig_node->last_seen)); in batadv_purge_orig_node()
1288 changed_ifinfo = batadv_purge_orig_ifinfo(bat_priv, orig_node); in batadv_purge_orig_node()
1289 changed_neigh = batadv_purge_orig_neighbors(bat_priv, orig_node); in batadv_purge_orig_node()
1295 best_neigh_node = batadv_find_best_neighbor(bat_priv, orig_node, in batadv_purge_orig_node()
1297 batadv_update_route(bat_priv, orig_node, BATADV_IF_DEFAULT, in batadv_purge_orig_node()
1315 orig_node, in batadv_purge_orig_node()
1317 batadv_update_route(bat_priv, orig_node, hard_iface, in batadv_purge_orig_node()
1339 struct batadv_orig_node *orig_node; in batadv_purge_orig_ref() local
1351 hlist_for_each_entry_safe(orig_node, node_tmp, in batadv_purge_orig_ref()
1353 if (batadv_purge_orig_node(bat_priv, orig_node)) { in batadv_purge_orig_ref()
1354 batadv_gw_node_delete(bat_priv, orig_node); in batadv_purge_orig_ref()
1355 hlist_del_rcu(&orig_node->hash_entry); in batadv_purge_orig_ref()
1356 batadv_tt_global_del_orig(orig_node->bat_priv, in batadv_purge_orig_ref()
1357 orig_node, -1, in batadv_purge_orig_ref()
1359 batadv_orig_node_put(orig_node); in batadv_purge_orig_ref()
1363 batadv_frag_purge_orig(orig_node, in batadv_purge_orig_ref()