Lines Matching refs:orig_node
92 static void batadv_iv_ogm_orig_free(struct batadv_orig_node *orig_node) in batadv_iv_ogm_orig_free() argument
94 kfree(orig_node->bat_iv.bcast_own); in batadv_iv_ogm_orig_free()
95 kfree(orig_node->bat_iv.bcast_own_sum); in batadv_iv_ogm_orig_free()
106 static int batadv_iv_ogm_orig_add_if(struct batadv_orig_node *orig_node, in batadv_iv_ogm_orig_add_if() argument
113 spin_lock_bh(&orig_node->bat_iv.ogm_cnt_lock); in batadv_iv_ogm_orig_add_if()
122 memcpy(data_ptr, orig_node->bat_iv.bcast_own, old_size); in batadv_iv_ogm_orig_add_if()
123 kfree(orig_node->bat_iv.bcast_own); in batadv_iv_ogm_orig_add_if()
124 orig_node->bat_iv.bcast_own = data_ptr; in batadv_iv_ogm_orig_add_if()
128 kfree(orig_node->bat_iv.bcast_own); in batadv_iv_ogm_orig_add_if()
132 memcpy(data_ptr, orig_node->bat_iv.bcast_own_sum, in batadv_iv_ogm_orig_add_if()
134 kfree(orig_node->bat_iv.bcast_own_sum); in batadv_iv_ogm_orig_add_if()
135 orig_node->bat_iv.bcast_own_sum = data_ptr; in batadv_iv_ogm_orig_add_if()
140 spin_unlock_bh(&orig_node->bat_iv.ogm_cnt_lock); in batadv_iv_ogm_orig_add_if()
154 static int batadv_iv_ogm_orig_del_if(struct batadv_orig_node *orig_node, in batadv_iv_ogm_orig_del_if() argument
160 spin_lock_bh(&orig_node->bat_iv.ogm_cnt_lock); in batadv_iv_ogm_orig_del_if()
172 memcpy(data_ptr, orig_node->bat_iv.bcast_own, del_if_num * chunk_size); in batadv_iv_ogm_orig_del_if()
176 orig_node->bat_iv.bcast_own + ((del_if_num + 1) * chunk_size), in batadv_iv_ogm_orig_del_if()
180 kfree(orig_node->bat_iv.bcast_own); in batadv_iv_ogm_orig_del_if()
181 orig_node->bat_iv.bcast_own = data_ptr; in batadv_iv_ogm_orig_del_if()
188 kfree(orig_node->bat_iv.bcast_own); in batadv_iv_ogm_orig_del_if()
192 memcpy(data_ptr, orig_node->bat_iv.bcast_own_sum, in batadv_iv_ogm_orig_del_if()
197 orig_node->bat_iv.bcast_own_sum + if_offset, in batadv_iv_ogm_orig_del_if()
201 kfree(orig_node->bat_iv.bcast_own_sum); in batadv_iv_ogm_orig_del_if()
202 orig_node->bat_iv.bcast_own_sum = data_ptr; in batadv_iv_ogm_orig_del_if()
206 spin_unlock_bh(&orig_node->bat_iv.ogm_cnt_lock); in batadv_iv_ogm_orig_del_if()
223 struct batadv_orig_node *orig_node; in batadv_iv_ogm_orig_get() local
226 orig_node = batadv_orig_hash_find(bat_priv, addr); in batadv_iv_ogm_orig_get()
227 if (orig_node) in batadv_iv_ogm_orig_get()
228 return orig_node; in batadv_iv_ogm_orig_get()
230 orig_node = batadv_orig_node_new(bat_priv, addr); in batadv_iv_ogm_orig_get()
231 if (!orig_node) in batadv_iv_ogm_orig_get()
234 spin_lock_init(&orig_node->bat_iv.ogm_cnt_lock); in batadv_iv_ogm_orig_get()
237 orig_node->bat_iv.bcast_own = kzalloc(size, GFP_ATOMIC); in batadv_iv_ogm_orig_get()
238 if (!orig_node->bat_iv.bcast_own) in batadv_iv_ogm_orig_get()
242 orig_node->bat_iv.bcast_own_sum = kzalloc(size, GFP_ATOMIC); in batadv_iv_ogm_orig_get()
243 if (!orig_node->bat_iv.bcast_own_sum) in batadv_iv_ogm_orig_get()
247 batadv_choose_orig, orig_node, in batadv_iv_ogm_orig_get()
248 &orig_node->hash_entry); in batadv_iv_ogm_orig_get()
252 return orig_node; in batadv_iv_ogm_orig_get()
256 batadv_orig_node_free_ref(orig_node); in batadv_iv_ogm_orig_get()
257 batadv_orig_node_free_ref(orig_node); in batadv_iv_ogm_orig_get()
265 struct batadv_orig_node *orig_node, in batadv_iv_ogm_neigh_new() argument
271 neigh_node = batadv_neigh_node_new(hard_iface, neigh_addr, orig_node); in batadv_iv_ogm_neigh_new()
281 neigh_node->orig_node = orig_neigh; in batadv_iv_ogm_neigh_new()
284 spin_lock_bh(&orig_node->neigh_list_lock); in batadv_iv_ogm_neigh_new()
285 tmp_neigh_node = batadv_neigh_node_get(orig_node, hard_iface, in batadv_iv_ogm_neigh_new()
288 hlist_add_head_rcu(&neigh_node->list, &orig_node->neigh_list); in batadv_iv_ogm_neigh_new()
294 spin_unlock_bh(&orig_node->neigh_list_lock); in batadv_iv_ogm_neigh_new()
299 neigh_addr, orig_node->orig, in batadv_iv_ogm_neigh_new()
801 static void batadv_iv_ogm_forward(struct batadv_orig_node *orig_node, in batadv_iv_ogm_forward() argument
867 struct batadv_orig_node *orig_node; in batadv_iv_ogm_slide_own_bcast_window() local
878 hlist_for_each_entry_rcu(orig_node, head, hash_entry) { in batadv_iv_ogm_slide_own_bcast_window()
879 spin_lock_bh(&orig_node->bat_iv.ogm_cnt_lock); in batadv_iv_ogm_slide_own_bcast_window()
881 word = &orig_node->bat_iv.bcast_own[word_index]; in batadv_iv_ogm_slide_own_bcast_window()
885 w = &orig_node->bat_iv.bcast_own_sum[if_num]; in batadv_iv_ogm_slide_own_bcast_window()
887 spin_unlock_bh(&orig_node->bat_iv.ogm_cnt_lock); in batadv_iv_ogm_slide_own_bcast_window()
969 struct batadv_orig_node *orig_node, in batadv_iv_ogm_orig_update() argument
992 &orig_node->neigh_list, list) { in batadv_iv_ogm_orig_update()
1032 orig_node, orig_tmp); in batadv_iv_ogm_orig_update()
1064 router = batadv_orig_router_get(orig_node, if_outgoing); in batadv_iv_ogm_orig_update()
1085 orig_node_tmp = router->orig_node; in batadv_iv_ogm_orig_update()
1091 orig_node_tmp = neigh_node->orig_node; in batadv_iv_ogm_orig_update()
1101 batadv_update_route(bat_priv, orig_node, if_outgoing, neigh_node); in batadv_iv_ogm_orig_update()
1127 static int batadv_iv_ogm_calc_tq(struct batadv_orig_node *orig_node, in batadv_iv_ogm_calc_tq() argument
1172 if (orig_node == orig_neigh_node) in batadv_iv_ogm_calc_tq()
1175 orig_node->last_seen = jiffies; in batadv_iv_ogm_calc_tq()
1178 spin_lock_bh(&orig_node->bat_iv.ogm_cnt_lock); in batadv_iv_ogm_calc_tq()
1188 spin_unlock_bh(&orig_node->bat_iv.ogm_cnt_lock); in batadv_iv_ogm_calc_tq()
1244 orig_node->orig, orig_neigh_node->orig, total_count, in batadv_iv_ogm_calc_tq()
1278 struct batadv_orig_node *orig_node; in batadv_iv_ogm_update_seqnos() local
1292 orig_node = batadv_iv_ogm_orig_get(bat_priv, batadv_ogm_packet->orig); in batadv_iv_ogm_update_seqnos()
1293 if (!orig_node) in batadv_iv_ogm_update_seqnos()
1296 orig_ifinfo = batadv_orig_ifinfo_new(orig_node, if_outgoing); in batadv_iv_ogm_update_seqnos()
1298 batadv_orig_node_free_ref(orig_node); in batadv_iv_ogm_update_seqnos()
1302 spin_lock_bh(&orig_node->bat_iv.ogm_cnt_lock); in batadv_iv_ogm_update_seqnos()
1306 if (!hlist_empty(&orig_node->neigh_list) && in batadv_iv_ogm_update_seqnos()
1314 hlist_for_each_entry_rcu(neigh_node, &orig_node->neigh_list, list) { in batadv_iv_ogm_update_seqnos()
1357 spin_unlock_bh(&orig_node->bat_iv.ogm_cnt_lock); in batadv_iv_ogm_update_seqnos()
1358 batadv_orig_node_free_ref(orig_node); in batadv_iv_ogm_update_seqnos()
1374 struct batadv_orig_node *orig_node, in batadv_iv_ogm_process_per_outif() argument
1422 router = batadv_orig_router_get(orig_node, if_outgoing); in batadv_iv_ogm_process_per_outif()
1424 router_router = batadv_orig_router_get(router->orig_node, in batadv_iv_ogm_process_per_outif()
1446 batadv_tvlv_ogm_receive(bat_priv, ogm_packet, orig_node); in batadv_iv_ogm_process_per_outif()
1452 orig_neigh_node = orig_node; in batadv_iv_ogm_process_per_outif()
1461 batadv_nc_update_nc_node(bat_priv, orig_node, orig_neigh_node, in batadv_iv_ogm_process_per_outif()
1476 is_bidirect = batadv_iv_ogm_calc_tq(orig_node, orig_neigh_node, in batadv_iv_ogm_process_per_outif()
1483 orig_ifinfo = batadv_orig_ifinfo_new(orig_node, if_outgoing); in batadv_iv_ogm_process_per_outif()
1492 batadv_iv_ogm_orig_update(bat_priv, orig_node, in batadv_iv_ogm_process_per_outif()
1515 batadv_iv_ogm_forward(orig_node, ethhdr, ogm_packet, in batadv_iv_ogm_process_per_outif()
1540 batadv_iv_ogm_forward(orig_node, ethhdr, ogm_packet, in batadv_iv_ogm_process_per_outif()
1570 struct batadv_orig_node *orig_neigh_node, *orig_node; in batadv_iv_ogm_process() local
1696 orig_node = batadv_iv_ogm_orig_get(bat_priv, ogm_packet->orig); in batadv_iv_ogm_process()
1697 if (!orig_node) in batadv_iv_ogm_process()
1700 batadv_iv_ogm_process_per_outif(skb, ogm_offset, orig_node, in batadv_iv_ogm_process()
1711 batadv_iv_ogm_process_per_outif(skb, ogm_offset, orig_node, in batadv_iv_ogm_process()
1716 batadv_orig_node_free_ref(orig_node); in batadv_iv_ogm_process()
1770 batadv_iv_ogm_orig_print_neigh(struct batadv_orig_node *orig_node, in batadv_iv_ogm_orig_print_neigh() argument
1777 hlist_for_each_entry_rcu(neigh_node, &orig_node->neigh_list, list) { in batadv_iv_ogm_orig_print_neigh()
1803 struct batadv_orig_node *orig_node; in batadv_iv_ogm_orig_print() local
1818 hlist_for_each_entry_rcu(orig_node, head, hash_entry) { in batadv_iv_ogm_orig_print()
1819 neigh_node = batadv_orig_router_get(orig_node, in batadv_iv_ogm_orig_print()
1832 last_seen_jiffies = jiffies - orig_node->last_seen; in batadv_iv_ogm_orig_print()
1838 orig_node->orig, last_seen_secs, in batadv_iv_ogm_orig_print()
1843 batadv_iv_ogm_orig_print_neigh(orig_node, if_outgoing, in batadv_iv_ogm_orig_print()