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()
78 void batadv_gw_node_put(struct batadv_gw_node *gw_node) in batadv_gw_node_put() argument
80 kref_put(&gw_node->refcount, batadv_gw_node_release); in batadv_gw_node_put()
92 struct batadv_gw_node *gw_node; in batadv_gw_get_selected_gw_node() local
95 gw_node = rcu_dereference(bat_priv->gw.curr_gw); in batadv_gw_get_selected_gw_node()
96 if (!gw_node) in batadv_gw_get_selected_gw_node()
99 if (!kref_get_unless_zero(&gw_node->refcount)) in batadv_gw_get_selected_gw_node()
100 gw_node = NULL; in batadv_gw_get_selected_gw_node()
104 return gw_node; in batadv_gw_get_selected_gw_node()
116 struct batadv_gw_node *gw_node; in batadv_gw_get_selected_orig() local
119 gw_node = batadv_gw_get_selected_gw_node(bat_priv); in batadv_gw_get_selected_orig()
120 if (!gw_node) in batadv_gw_get_selected_orig()
124 orig_node = gw_node->orig_node; in batadv_gw_get_selected_orig()
134 if (gw_node) in batadv_gw_get_selected_orig()
135 batadv_gw_node_put(gw_node); in batadv_gw_get_selected_orig()
346 struct batadv_gw_node *gw_node; in batadv_gw_node_add() local
353 gw_node = kzalloc(sizeof(*gw_node), GFP_ATOMIC); in batadv_gw_node_add()
354 if (!gw_node) in batadv_gw_node_add()
357 kref_init(&gw_node->refcount); in batadv_gw_node_add()
358 INIT_HLIST_NODE(&gw_node->list); in batadv_gw_node_add()
360 gw_node->orig_node = orig_node; in batadv_gw_node_add()
361 gw_node->bandwidth_down = ntohl(gateway->bandwidth_down); in batadv_gw_node_add()
362 gw_node->bandwidth_up = ntohl(gateway->bandwidth_up); in batadv_gw_node_add()
364 kref_get(&gw_node->refcount); in batadv_gw_node_add()
365 hlist_add_head_rcu(&gw_node->list, &bat_priv->gw.gateway_list); in batadv_gw_node_add()
377 batadv_gw_node_put(gw_node); in batadv_gw_node_add()
390 struct batadv_gw_node *gw_node_tmp, *gw_node = NULL; in batadv_gw_node_get() local
401 gw_node = gw_node_tmp; in batadv_gw_node_get()
406 return gw_node; in batadv_gw_node_get()
420 struct batadv_gw_node *gw_node, *curr_gw = NULL; in batadv_gw_node_update() local
423 gw_node = batadv_gw_node_get(bat_priv, orig_node); in batadv_gw_node_update()
424 if (!gw_node) { in batadv_gw_node_update()
431 if (gw_node->bandwidth_down == ntohl(gateway->bandwidth_down) && in batadv_gw_node_update()
432 gw_node->bandwidth_up == ntohl(gateway->bandwidth_up)) in batadv_gw_node_update()
438 gw_node->bandwidth_down / 10, in batadv_gw_node_update()
439 gw_node->bandwidth_down % 10, in batadv_gw_node_update()
440 gw_node->bandwidth_up / 10, in batadv_gw_node_update()
441 gw_node->bandwidth_up % 10, in batadv_gw_node_update()
447 gw_node->bandwidth_down = ntohl(gateway->bandwidth_down); in batadv_gw_node_update()
448 gw_node->bandwidth_up = ntohl(gateway->bandwidth_up); in batadv_gw_node_update()
459 if (!hlist_unhashed(&gw_node->list)) { in batadv_gw_node_update()
460 hlist_del_init_rcu(&gw_node->list); in batadv_gw_node_update()
461 batadv_gw_node_put(gw_node); in batadv_gw_node_update()
467 if (gw_node == curr_gw) in batadv_gw_node_update()
475 if (gw_node) in batadv_gw_node_update()
476 batadv_gw_node_put(gw_node); in batadv_gw_node_update()
501 struct batadv_gw_node *gw_node; in batadv_gw_node_free() local
505 hlist_for_each_entry_safe(gw_node, node_tmp, in batadv_gw_node_free()
507 hlist_del_init_rcu(&gw_node->list); in batadv_gw_node_free()
508 batadv_gw_node_put(gw_node); in batadv_gw_node_free()
748 struct batadv_gw_node *gw_node = NULL; in batadv_gw_out_of_range() local
766 gw_node = batadv_gw_node_get(bat_priv, orig_dst_node); in batadv_gw_out_of_range()
767 if (!gw_node) in batadv_gw_out_of_range()
826 if (gw_node) in batadv_gw_out_of_range()
827 batadv_gw_node_put(gw_node); in batadv_gw_out_of_range()