Lines Matching refs:orig_node

73 	struct batadv_orig_node *orig_node, *orig_node_tmp = NULL;  in batadv_orig_hash_find()  local
83 hlist_for_each_entry_rcu(orig_node, head, hash_entry) { in batadv_orig_hash_find()
84 if (!batadv_compare_eth(orig_node, data)) in batadv_orig_hash_find()
87 if (!kref_get_unless_zero(&orig_node->refcount)) in batadv_orig_hash_find()
90 orig_node_tmp = orig_node; in batadv_orig_hash_find()
124 batadv_orig_node_vlan_get(struct batadv_orig_node *orig_node, in batadv_orig_node_vlan_get() argument
130 hlist_for_each_entry_rcu(tmp, &orig_node->vlan_list, list) { in batadv_orig_node_vlan_get()
159 batadv_orig_node_vlan_new(struct batadv_orig_node *orig_node, in batadv_orig_node_vlan_new() argument
164 spin_lock_bh(&orig_node->vlan_list_lock); in batadv_orig_node_vlan_new()
167 vlan = batadv_orig_node_vlan_get(orig_node, vid); in batadv_orig_node_vlan_new()
179 hlist_add_head_rcu(&vlan->list, &orig_node->vlan_list); in batadv_orig_node_vlan_new()
182 spin_unlock_bh(&orig_node->vlan_list_lock); in batadv_orig_node_vlan_new()
344 batadv_orig_router_get(struct batadv_orig_node *orig_node, in batadv_orig_router_get() argument
351 hlist_for_each_entry_rcu(orig_ifinfo, &orig_node->ifinfo_list, list) { in batadv_orig_router_get()
376 batadv_orig_ifinfo_get(struct batadv_orig_node *orig_node, in batadv_orig_ifinfo_get() argument
382 hlist_for_each_entry_rcu(tmp, &orig_node->ifinfo_list, in batadv_orig_ifinfo_get()
410 batadv_orig_ifinfo_new(struct batadv_orig_node *orig_node, in batadv_orig_ifinfo_new() argument
416 spin_lock_bh(&orig_node->neigh_list_lock); in batadv_orig_ifinfo_new()
418 orig_ifinfo = batadv_orig_ifinfo_get(orig_node, if_outgoing); in batadv_orig_ifinfo_new()
438 &orig_node->ifinfo_list); in batadv_orig_ifinfo_new()
440 spin_unlock_bh(&orig_node->neigh_list_lock); in batadv_orig_ifinfo_new()
532 batadv_neigh_node_get(const struct batadv_orig_node *orig_node, in batadv_neigh_node_get() argument
539 hlist_for_each_entry_rcu(tmp_neigh_node, &orig_node->neigh_list, list) { in batadv_neigh_node_get()
568 struct batadv_orig_node *orig_node) in batadv_hardif_neigh_create() argument
587 ether_addr_copy(hardif_neigh->orig, orig_node->orig); in batadv_hardif_neigh_create()
615 struct batadv_orig_node *orig_node) in batadv_hardif_neigh_get_or_create() argument
624 return batadv_hardif_neigh_create(hard_iface, neigh_addr, orig_node); in batadv_hardif_neigh_get_or_create()
670 batadv_neigh_node_create(struct batadv_orig_node *orig_node, in batadv_neigh_node_create() argument
677 spin_lock_bh(&orig_node->neigh_list_lock); in batadv_neigh_node_create()
679 neigh_node = batadv_neigh_node_get(orig_node, hard_iface, neigh_addr); in batadv_neigh_node_create()
684 neigh_addr, orig_node); in batadv_neigh_node_create()
699 neigh_node->orig_node = orig_node; in batadv_neigh_node_create()
710 hlist_add_head_rcu(&neigh_node->list, &orig_node->neigh_list); in batadv_neigh_node_create()
712 batadv_dbg(BATADV_DBG_BATMAN, orig_node->bat_priv, in batadv_neigh_node_create()
714 neigh_addr, orig_node->orig, hard_iface->net_dev->name); in batadv_neigh_node_create()
717 spin_unlock_bh(&orig_node->neigh_list_lock); in batadv_neigh_node_create()
733 batadv_neigh_node_get_or_create(struct batadv_orig_node *orig_node, in batadv_neigh_node_get_or_create() argument
740 neigh_node = batadv_neigh_node_get(orig_node, hard_iface, neigh_addr); in batadv_neigh_node_get_or_create()
744 return batadv_neigh_node_create(orig_node, hard_iface, neigh_addr); in batadv_neigh_node_get_or_create()
899 struct batadv_orig_node *orig_node; in batadv_orig_node_free_rcu() local
901 orig_node = container_of(rcu, struct batadv_orig_node, rcu); in batadv_orig_node_free_rcu()
903 batadv_mcast_purge_orig(orig_node); in batadv_orig_node_free_rcu()
905 batadv_frag_purge_orig(orig_node, NULL); in batadv_orig_node_free_rcu()
907 if (orig_node->bat_priv->algo_ops->orig.free) in batadv_orig_node_free_rcu()
908 orig_node->bat_priv->algo_ops->orig.free(orig_node); in batadv_orig_node_free_rcu()
910 kfree(orig_node->tt_buff); in batadv_orig_node_free_rcu()
911 kfree(orig_node); in batadv_orig_node_free_rcu()
923 struct batadv_orig_node *orig_node; in batadv_orig_node_release() local
928 orig_node = container_of(ref, struct batadv_orig_node, refcount); in batadv_orig_node_release()
930 spin_lock_bh(&orig_node->neigh_list_lock); in batadv_orig_node_release()
934 &orig_node->neigh_list, list) { in batadv_orig_node_release()
940 &orig_node->ifinfo_list, list) { in batadv_orig_node_release()
945 last_candidate = orig_node->last_bonding_candidate; in batadv_orig_node_release()
946 orig_node->last_bonding_candidate = NULL; in batadv_orig_node_release()
947 spin_unlock_bh(&orig_node->neigh_list_lock); in batadv_orig_node_release()
952 spin_lock_bh(&orig_node->vlan_list_lock); in batadv_orig_node_release()
953 hlist_for_each_entry_safe(vlan, node_tmp, &orig_node->vlan_list, list) { in batadv_orig_node_release()
957 spin_unlock_bh(&orig_node->vlan_list_lock); in batadv_orig_node_release()
960 batadv_nc_purge_orig(orig_node->bat_priv, orig_node, NULL); in batadv_orig_node_release()
962 call_rcu(&orig_node->rcu, batadv_orig_node_free_rcu); in batadv_orig_node_release()
970 void batadv_orig_node_put(struct batadv_orig_node *orig_node) in batadv_orig_node_put() argument
972 kref_put(&orig_node->refcount, batadv_orig_node_release); in batadv_orig_node_put()
985 struct batadv_orig_node *orig_node; in batadv_originator_free() local
1000 hlist_for_each_entry_safe(orig_node, node_tmp, in batadv_originator_free()
1002 hlist_del_rcu(&orig_node->hash_entry); in batadv_originator_free()
1003 batadv_orig_node_put(orig_node); in batadv_originator_free()
1024 struct batadv_orig_node *orig_node; in batadv_orig_node_new() local
1032 orig_node = kzalloc(sizeof(*orig_node), GFP_ATOMIC); in batadv_orig_node_new()
1033 if (!orig_node) in batadv_orig_node_new()
1036 INIT_HLIST_HEAD(&orig_node->neigh_list); in batadv_orig_node_new()
1037 INIT_HLIST_HEAD(&orig_node->vlan_list); in batadv_orig_node_new()
1038 INIT_HLIST_HEAD(&orig_node->ifinfo_list); in batadv_orig_node_new()
1039 spin_lock_init(&orig_node->bcast_seqno_lock); in batadv_orig_node_new()
1040 spin_lock_init(&orig_node->neigh_list_lock); in batadv_orig_node_new()
1041 spin_lock_init(&orig_node->tt_buff_lock); in batadv_orig_node_new()
1042 spin_lock_init(&orig_node->tt_lock); in batadv_orig_node_new()
1043 spin_lock_init(&orig_node->vlan_list_lock); in batadv_orig_node_new()
1045 batadv_nc_init_orig(orig_node); in batadv_orig_node_new()
1048 kref_init(&orig_node->refcount); in batadv_orig_node_new()
1050 orig_node->bat_priv = bat_priv; in batadv_orig_node_new()
1051 ether_addr_copy(orig_node->orig, addr); in batadv_orig_node_new()
1052 batadv_dat_init_orig_node_addr(orig_node); in batadv_orig_node_new()
1053 atomic_set(&orig_node->last_ttvn, 0); in batadv_orig_node_new()
1054 orig_node->tt_buff = NULL; in batadv_orig_node_new()
1055 orig_node->tt_buff_len = 0; in batadv_orig_node_new()
1056 orig_node->last_seen = jiffies; in batadv_orig_node_new()
1058 orig_node->bcast_seqno_reset = reset_time; in batadv_orig_node_new()
1061 orig_node->mcast_flags = BATADV_NO_FLAGS; in batadv_orig_node_new()
1062 INIT_HLIST_NODE(&orig_node->mcast_want_all_unsnoopables_node); in batadv_orig_node_new()
1063 INIT_HLIST_NODE(&orig_node->mcast_want_all_ipv4_node); in batadv_orig_node_new()
1064 INIT_HLIST_NODE(&orig_node->mcast_want_all_ipv6_node); in batadv_orig_node_new()
1065 spin_lock_init(&orig_node->mcast_handler_lock); in batadv_orig_node_new()
1069 vlan = batadv_orig_node_vlan_new(orig_node, BATADV_NO_FLAGS); in batadv_orig_node_new()
1079 INIT_HLIST_HEAD(&orig_node->fragments[i].fragment_list); in batadv_orig_node_new()
1080 spin_lock_init(&orig_node->fragments[i].lock); in batadv_orig_node_new()
1081 orig_node->fragments[i].size = 0; in batadv_orig_node_new()
1084 return orig_node; in batadv_orig_node_new()
1086 kfree(orig_node); in batadv_orig_node_new()
1140 struct batadv_orig_node *orig_node) in batadv_purge_orig_ifinfo() argument
1147 spin_lock_bh(&orig_node->neigh_list_lock); in batadv_purge_orig_ifinfo()
1151 &orig_node->ifinfo_list, list) { in batadv_purge_orig_ifinfo()
1166 orig_node->orig, if_outgoing->net_dev->name); in batadv_purge_orig_ifinfo()
1172 if (orig_node->last_bonding_candidate == orig_ifinfo) { in batadv_purge_orig_ifinfo()
1173 orig_node->last_bonding_candidate = NULL; in batadv_purge_orig_ifinfo()
1178 spin_unlock_bh(&orig_node->neigh_list_lock); in batadv_purge_orig_ifinfo()
1192 struct batadv_orig_node *orig_node) in batadv_purge_orig_neighbors() argument
1200 spin_lock_bh(&orig_node->neigh_list_lock); in batadv_purge_orig_neighbors()
1204 &orig_node->neigh_list, list) { in batadv_purge_orig_neighbors()
1217 orig_node->orig, neigh_node->addr, in batadv_purge_orig_neighbors()
1222 orig_node->orig, neigh_node->addr, in batadv_purge_orig_neighbors()
1237 spin_unlock_bh(&orig_node->neigh_list_lock); in batadv_purge_orig_neighbors()
1251 struct batadv_orig_node *orig_node, in batadv_find_best_neighbor() argument
1258 hlist_for_each_entry_rcu(neigh, &orig_node->neigh_list, list) { in batadv_find_best_neighbor()
1287 struct batadv_orig_node *orig_node) in batadv_purge_orig_node() argument
1293 if (batadv_has_timed_out(orig_node->last_seen, in batadv_purge_orig_node()
1297 orig_node->orig, in batadv_purge_orig_node()
1298 jiffies_to_msecs(orig_node->last_seen)); in batadv_purge_orig_node()
1301 changed_ifinfo = batadv_purge_orig_ifinfo(bat_priv, orig_node); in batadv_purge_orig_node()
1302 changed_neigh = batadv_purge_orig_neighbors(bat_priv, orig_node); in batadv_purge_orig_node()
1308 best_neigh_node = batadv_find_best_neighbor(bat_priv, orig_node, in batadv_purge_orig_node()
1310 batadv_update_route(bat_priv, orig_node, BATADV_IF_DEFAULT, in batadv_purge_orig_node()
1328 orig_node, in batadv_purge_orig_node()
1330 batadv_update_route(bat_priv, orig_node, hard_iface, in batadv_purge_orig_node()
1352 struct batadv_orig_node *orig_node; in batadv_purge_orig_ref() local
1364 hlist_for_each_entry_safe(orig_node, node_tmp, in batadv_purge_orig_ref()
1366 if (batadv_purge_orig_node(bat_priv, orig_node)) { in batadv_purge_orig_ref()
1367 batadv_gw_node_delete(bat_priv, orig_node); in batadv_purge_orig_ref()
1368 hlist_del_rcu(&orig_node->hash_entry); in batadv_purge_orig_ref()
1369 batadv_tt_global_del_orig(orig_node->bat_priv, in batadv_purge_orig_ref()
1370 orig_node, -1, in batadv_purge_orig_ref()
1372 batadv_orig_node_put(orig_node); in batadv_purge_orig_ref()
1376 batadv_frag_purge_orig(orig_node, in batadv_purge_orig_ref()
1573 struct batadv_orig_node *orig_node; in batadv_orig_hash_add_if() local
1584 hlist_for_each_entry_rcu(orig_node, head, hash_entry) { in batadv_orig_hash_add_if()
1587 ret = bao->orig.add_if(orig_node, max_if_num); in batadv_orig_hash_add_if()
1615 struct batadv_orig_node *orig_node; in batadv_orig_hash_del_if() local
1627 hlist_for_each_entry_rcu(orig_node, head, hash_entry) { in batadv_orig_hash_del_if()
1630 ret = bao->orig.del_if(orig_node, max_if_num, in batadv_orig_hash_del_if()