Lines Matching refs:gw_node

65 	struct batadv_gw_node *gw_node;  in batadv_gw_node_release()  local
67 gw_node = container_of(ref, struct batadv_gw_node, refcount); in batadv_gw_node_release()
69 batadv_orig_node_put(gw_node->orig_node); in batadv_gw_node_release()
70 kfree_rcu(gw_node, rcu); in batadv_gw_node_release()
82 struct batadv_gw_node *gw_node; in batadv_gw_get_selected_gw_node() local
85 gw_node = rcu_dereference(bat_priv->gw.curr_gw); in batadv_gw_get_selected_gw_node()
86 if (!gw_node) in batadv_gw_get_selected_gw_node()
89 if (!kref_get_unless_zero(&gw_node->refcount)) in batadv_gw_get_selected_gw_node()
90 gw_node = NULL; in batadv_gw_get_selected_gw_node()
94 return gw_node; in batadv_gw_get_selected_gw_node()
106 struct batadv_gw_node *gw_node; in batadv_gw_get_selected_orig() local
109 gw_node = batadv_gw_get_selected_gw_node(bat_priv); in batadv_gw_get_selected_orig()
110 if (!gw_node) in batadv_gw_get_selected_orig()
114 orig_node = gw_node->orig_node; in batadv_gw_get_selected_orig()
124 if (gw_node) in batadv_gw_get_selected_orig()
125 batadv_gw_node_put(gw_node); in batadv_gw_get_selected_orig()
336 struct batadv_gw_node *gw_node; in batadv_gw_node_add() local
343 gw_node = kzalloc(sizeof(*gw_node), GFP_ATOMIC); in batadv_gw_node_add()
344 if (!gw_node) in batadv_gw_node_add()
347 kref_init(&gw_node->refcount); in batadv_gw_node_add()
348 INIT_HLIST_NODE(&gw_node->list); in batadv_gw_node_add()
350 gw_node->orig_node = orig_node; in batadv_gw_node_add()
351 gw_node->bandwidth_down = ntohl(gateway->bandwidth_down); in batadv_gw_node_add()
352 gw_node->bandwidth_up = ntohl(gateway->bandwidth_up); in batadv_gw_node_add()
354 kref_get(&gw_node->refcount); in batadv_gw_node_add()
355 hlist_add_head_rcu(&gw_node->list, &bat_priv->gw.gateway_list); in batadv_gw_node_add()
367 batadv_gw_node_put(gw_node); in batadv_gw_node_add()
380 struct batadv_gw_node *gw_node_tmp, *gw_node = NULL; in batadv_gw_node_get() local
391 gw_node = gw_node_tmp; in batadv_gw_node_get()
396 return gw_node; in batadv_gw_node_get()
410 struct batadv_gw_node *gw_node, *curr_gw = NULL; in batadv_gw_node_update() local
413 gw_node = batadv_gw_node_get(bat_priv, orig_node); in batadv_gw_node_update()
414 if (!gw_node) { in batadv_gw_node_update()
421 if (gw_node->bandwidth_down == ntohl(gateway->bandwidth_down) && in batadv_gw_node_update()
422 gw_node->bandwidth_up == ntohl(gateway->bandwidth_up)) in batadv_gw_node_update()
428 gw_node->bandwidth_down / 10, in batadv_gw_node_update()
429 gw_node->bandwidth_down % 10, in batadv_gw_node_update()
430 gw_node->bandwidth_up / 10, in batadv_gw_node_update()
431 gw_node->bandwidth_up % 10, in batadv_gw_node_update()
437 gw_node->bandwidth_down = ntohl(gateway->bandwidth_down); in batadv_gw_node_update()
438 gw_node->bandwidth_up = ntohl(gateway->bandwidth_up); in batadv_gw_node_update()
449 if (!hlist_unhashed(&gw_node->list)) { in batadv_gw_node_update()
450 hlist_del_init_rcu(&gw_node->list); in batadv_gw_node_update()
451 batadv_gw_node_put(gw_node); in batadv_gw_node_update()
457 if (gw_node == curr_gw) in batadv_gw_node_update()
465 if (gw_node) in batadv_gw_node_update()
466 batadv_gw_node_put(gw_node); in batadv_gw_node_update()
491 struct batadv_gw_node *gw_node; in batadv_gw_node_free() local
495 hlist_for_each_entry_safe(gw_node, node_tmp, in batadv_gw_node_free()
497 hlist_del_init_rcu(&gw_node->list); in batadv_gw_node_free()
498 batadv_gw_node_put(gw_node); in batadv_gw_node_free()
738 struct batadv_gw_node *gw_node = NULL; in batadv_gw_out_of_range() local
756 gw_node = batadv_gw_node_get(bat_priv, orig_dst_node); in batadv_gw_out_of_range()
757 if (!gw_node) in batadv_gw_out_of_range()
816 if (gw_node) in batadv_gw_out_of_range()
817 batadv_gw_node_put(gw_node); in batadv_gw_out_of_range()