Lines Matching refs:orig_node
123 static void batadv_iv_ogm_orig_free(struct batadv_orig_node *orig_node) in batadv_iv_ogm_orig_free() argument
125 kfree(orig_node->bat_iv.bcast_own); in batadv_iv_ogm_orig_free()
126 kfree(orig_node->bat_iv.bcast_own_sum); in batadv_iv_ogm_orig_free()
137 static int batadv_iv_ogm_orig_add_if(struct batadv_orig_node *orig_node, in batadv_iv_ogm_orig_add_if() argument
144 spin_lock_bh(&orig_node->bat_iv.ogm_cnt_lock); in batadv_iv_ogm_orig_add_if()
153 memcpy(data_ptr, orig_node->bat_iv.bcast_own, old_size); in batadv_iv_ogm_orig_add_if()
154 kfree(orig_node->bat_iv.bcast_own); in batadv_iv_ogm_orig_add_if()
155 orig_node->bat_iv.bcast_own = data_ptr; in batadv_iv_ogm_orig_add_if()
159 kfree(orig_node->bat_iv.bcast_own); in batadv_iv_ogm_orig_add_if()
163 memcpy(data_ptr, orig_node->bat_iv.bcast_own_sum, in batadv_iv_ogm_orig_add_if()
165 kfree(orig_node->bat_iv.bcast_own_sum); in batadv_iv_ogm_orig_add_if()
166 orig_node->bat_iv.bcast_own_sum = data_ptr; in batadv_iv_ogm_orig_add_if()
171 spin_unlock_bh(&orig_node->bat_iv.ogm_cnt_lock); in batadv_iv_ogm_orig_add_if()
185 static int batadv_iv_ogm_orig_del_if(struct batadv_orig_node *orig_node, in batadv_iv_ogm_orig_del_if() argument
191 spin_lock_bh(&orig_node->bat_iv.ogm_cnt_lock); in batadv_iv_ogm_orig_del_if()
203 memcpy(data_ptr, orig_node->bat_iv.bcast_own, del_if_num * chunk_size); in batadv_iv_ogm_orig_del_if()
207 orig_node->bat_iv.bcast_own + ((del_if_num + 1) * chunk_size), in batadv_iv_ogm_orig_del_if()
211 kfree(orig_node->bat_iv.bcast_own); in batadv_iv_ogm_orig_del_if()
212 orig_node->bat_iv.bcast_own = data_ptr; in batadv_iv_ogm_orig_del_if()
219 kfree(orig_node->bat_iv.bcast_own); in batadv_iv_ogm_orig_del_if()
223 memcpy(data_ptr, orig_node->bat_iv.bcast_own_sum, in batadv_iv_ogm_orig_del_if()
228 orig_node->bat_iv.bcast_own_sum + if_offset, in batadv_iv_ogm_orig_del_if()
232 kfree(orig_node->bat_iv.bcast_own_sum); in batadv_iv_ogm_orig_del_if()
233 orig_node->bat_iv.bcast_own_sum = data_ptr; in batadv_iv_ogm_orig_del_if()
237 spin_unlock_bh(&orig_node->bat_iv.ogm_cnt_lock); in batadv_iv_ogm_orig_del_if()
254 struct batadv_orig_node *orig_node; in batadv_iv_ogm_orig_get() local
257 orig_node = batadv_orig_hash_find(bat_priv, addr); in batadv_iv_ogm_orig_get()
258 if (orig_node) in batadv_iv_ogm_orig_get()
259 return orig_node; in batadv_iv_ogm_orig_get()
261 orig_node = batadv_orig_node_new(bat_priv, addr); in batadv_iv_ogm_orig_get()
262 if (!orig_node) in batadv_iv_ogm_orig_get()
265 spin_lock_init(&orig_node->bat_iv.ogm_cnt_lock); in batadv_iv_ogm_orig_get()
268 orig_node->bat_iv.bcast_own = kzalloc(size, GFP_ATOMIC); in batadv_iv_ogm_orig_get()
269 if (!orig_node->bat_iv.bcast_own) in batadv_iv_ogm_orig_get()
273 orig_node->bat_iv.bcast_own_sum = kzalloc(size, GFP_ATOMIC); in batadv_iv_ogm_orig_get()
274 if (!orig_node->bat_iv.bcast_own_sum) in batadv_iv_ogm_orig_get()
278 batadv_choose_orig, orig_node, in batadv_iv_ogm_orig_get()
279 &orig_node->hash_entry); in batadv_iv_ogm_orig_get()
283 return orig_node; in batadv_iv_ogm_orig_get()
287 batadv_orig_node_free_ref(orig_node); in batadv_iv_ogm_orig_get()
288 batadv_orig_node_free_ref(orig_node); in batadv_iv_ogm_orig_get()
296 struct batadv_orig_node *orig_node, in batadv_iv_ogm_neigh_new() argument
301 neigh_node = batadv_neigh_node_new(orig_node, hard_iface, neigh_addr); in batadv_iv_ogm_neigh_new()
305 neigh_node->orig_node = orig_neigh; in batadv_iv_ogm_neigh_new()
803 static void batadv_iv_ogm_forward(struct batadv_orig_node *orig_node, in batadv_iv_ogm_forward() argument
869 struct batadv_orig_node *orig_node; in batadv_iv_ogm_slide_own_bcast_window() local
880 hlist_for_each_entry_rcu(orig_node, head, hash_entry) { in batadv_iv_ogm_slide_own_bcast_window()
881 spin_lock_bh(&orig_node->bat_iv.ogm_cnt_lock); in batadv_iv_ogm_slide_own_bcast_window()
883 word = &orig_node->bat_iv.bcast_own[word_index]; in batadv_iv_ogm_slide_own_bcast_window()
887 w = &orig_node->bat_iv.bcast_own_sum[if_num]; in batadv_iv_ogm_slide_own_bcast_window()
889 spin_unlock_bh(&orig_node->bat_iv.ogm_cnt_lock); in batadv_iv_ogm_slide_own_bcast_window()
971 struct batadv_orig_node *orig_node, in batadv_iv_ogm_orig_update() argument
995 &orig_node->neigh_list, list) { in batadv_iv_ogm_orig_update()
1035 orig_node, orig_tmp); in batadv_iv_ogm_orig_update()
1068 router = batadv_orig_router_get(orig_node, if_outgoing); in batadv_iv_ogm_orig_update()
1089 orig_node_tmp = router->orig_node; in batadv_iv_ogm_orig_update()
1095 orig_node_tmp = neigh_node->orig_node; in batadv_iv_ogm_orig_update()
1105 batadv_update_route(bat_priv, orig_node, if_outgoing, neigh_node); in batadv_iv_ogm_orig_update()
1131 static int batadv_iv_ogm_calc_tq(struct batadv_orig_node *orig_node, in batadv_iv_ogm_calc_tq() argument
1176 if (orig_node == orig_neigh_node) in batadv_iv_ogm_calc_tq()
1179 orig_node->last_seen = jiffies; in batadv_iv_ogm_calc_tq()
1182 spin_lock_bh(&orig_node->bat_iv.ogm_cnt_lock); in batadv_iv_ogm_calc_tq()
1192 spin_unlock_bh(&orig_node->bat_iv.ogm_cnt_lock); in batadv_iv_ogm_calc_tq()
1248 orig_node->orig, orig_neigh_node->orig, total_count, in batadv_iv_ogm_calc_tq()
1282 struct batadv_orig_node *orig_node; in batadv_iv_ogm_update_seqnos() local
1296 orig_node = batadv_iv_ogm_orig_get(bat_priv, batadv_ogm_packet->orig); in batadv_iv_ogm_update_seqnos()
1297 if (!orig_node) in batadv_iv_ogm_update_seqnos()
1300 orig_ifinfo = batadv_orig_ifinfo_new(orig_node, if_outgoing); in batadv_iv_ogm_update_seqnos()
1302 batadv_orig_node_free_ref(orig_node); in batadv_iv_ogm_update_seqnos()
1306 spin_lock_bh(&orig_node->bat_iv.ogm_cnt_lock); in batadv_iv_ogm_update_seqnos()
1310 if (!hlist_empty(&orig_node->neigh_list) && in batadv_iv_ogm_update_seqnos()
1318 hlist_for_each_entry_rcu(neigh_node, &orig_node->neigh_list, list) { in batadv_iv_ogm_update_seqnos()
1361 spin_unlock_bh(&orig_node->bat_iv.ogm_cnt_lock); in batadv_iv_ogm_update_seqnos()
1362 batadv_orig_node_free_ref(orig_node); in batadv_iv_ogm_update_seqnos()
1377 struct batadv_orig_node *orig_node, in batadv_iv_ogm_process_per_outif() argument
1426 router = batadv_orig_router_get(orig_node, if_outgoing); in batadv_iv_ogm_process_per_outif()
1428 router_router = batadv_orig_router_get(router->orig_node, in batadv_iv_ogm_process_per_outif()
1450 batadv_tvlv_ogm_receive(bat_priv, ogm_packet, orig_node); in batadv_iv_ogm_process_per_outif()
1456 orig_neigh_node = orig_node; in batadv_iv_ogm_process_per_outif()
1465 batadv_nc_update_nc_node(bat_priv, orig_node, orig_neigh_node, in batadv_iv_ogm_process_per_outif()
1480 is_bidirect = batadv_iv_ogm_calc_tq(orig_node, orig_neigh_node, in batadv_iv_ogm_process_per_outif()
1487 orig_ifinfo = batadv_orig_ifinfo_new(orig_node, if_outgoing); in batadv_iv_ogm_process_per_outif()
1496 batadv_iv_ogm_orig_update(bat_priv, orig_node, in batadv_iv_ogm_process_per_outif()
1519 batadv_iv_ogm_forward(orig_node, ethhdr, ogm_packet, in batadv_iv_ogm_process_per_outif()
1544 batadv_iv_ogm_forward(orig_node, ethhdr, ogm_packet, in batadv_iv_ogm_process_per_outif()
1574 struct batadv_orig_node *orig_neigh_node, *orig_node; in batadv_iv_ogm_process() local
1700 orig_node = batadv_iv_ogm_orig_get(bat_priv, ogm_packet->orig); in batadv_iv_ogm_process()
1701 if (!orig_node) in batadv_iv_ogm_process()
1704 batadv_iv_ogm_process_per_outif(skb, ogm_offset, orig_node, in batadv_iv_ogm_process()
1715 batadv_iv_ogm_process_per_outif(skb, ogm_offset, orig_node, in batadv_iv_ogm_process()
1720 batadv_orig_node_free_ref(orig_node); in batadv_iv_ogm_process()
1774 batadv_iv_ogm_orig_print_neigh(struct batadv_orig_node *orig_node, in batadv_iv_ogm_orig_print_neigh() argument
1781 hlist_for_each_entry_rcu(neigh_node, &orig_node->neigh_list, list) { in batadv_iv_ogm_orig_print_neigh()
1807 struct batadv_orig_node *orig_node; in batadv_iv_ogm_orig_print() local
1822 hlist_for_each_entry_rcu(orig_node, head, hash_entry) { in batadv_iv_ogm_orig_print()
1823 neigh_node = batadv_orig_router_get(orig_node, in batadv_iv_ogm_orig_print()
1836 last_seen_jiffies = jiffies - orig_node->last_seen; in batadv_iv_ogm_orig_print()
1842 orig_node->orig, last_seen_secs, in batadv_iv_ogm_orig_print()
1847 batadv_iv_ogm_orig_print_neigh(orig_node, if_outgoing, in batadv_iv_ogm_orig_print()