Lines Matching refs:gw_node
79 struct batadv_gw_node *gw_node; in batadv_gw_node_release() local
81 gw_node = container_of(ref, struct batadv_gw_node, refcount); in batadv_gw_node_release()
83 batadv_orig_node_put(gw_node->orig_node); in batadv_gw_node_release()
84 kfree_rcu(gw_node, rcu); in batadv_gw_node_release()
92 void batadv_gw_node_put(struct batadv_gw_node *gw_node) in batadv_gw_node_put() argument
94 kref_put(&gw_node->refcount, batadv_gw_node_release); in batadv_gw_node_put()
106 struct batadv_gw_node *gw_node; in batadv_gw_get_selected_gw_node() local
109 gw_node = rcu_dereference(bat_priv->gw.curr_gw); in batadv_gw_get_selected_gw_node()
110 if (!gw_node) in batadv_gw_get_selected_gw_node()
113 if (!kref_get_unless_zero(&gw_node->refcount)) in batadv_gw_get_selected_gw_node()
114 gw_node = NULL; in batadv_gw_get_selected_gw_node()
118 return gw_node; in batadv_gw_get_selected_gw_node()
130 struct batadv_gw_node *gw_node; in batadv_gw_get_selected_orig() local
133 gw_node = batadv_gw_get_selected_gw_node(bat_priv); in batadv_gw_get_selected_orig()
134 if (!gw_node) in batadv_gw_get_selected_orig()
138 orig_node = gw_node->orig_node; in batadv_gw_get_selected_orig()
148 if (gw_node) in batadv_gw_get_selected_orig()
149 batadv_gw_node_put(gw_node); in batadv_gw_get_selected_orig()
360 struct batadv_gw_node *gw_node; in batadv_gw_node_add() local
367 gw_node = kzalloc(sizeof(*gw_node), GFP_ATOMIC); in batadv_gw_node_add()
368 if (!gw_node) in batadv_gw_node_add()
371 kref_init(&gw_node->refcount); in batadv_gw_node_add()
372 INIT_HLIST_NODE(&gw_node->list); in batadv_gw_node_add()
374 gw_node->orig_node = orig_node; in batadv_gw_node_add()
375 gw_node->bandwidth_down = ntohl(gateway->bandwidth_down); in batadv_gw_node_add()
376 gw_node->bandwidth_up = ntohl(gateway->bandwidth_up); in batadv_gw_node_add()
378 kref_get(&gw_node->refcount); in batadv_gw_node_add()
379 hlist_add_head_rcu(&gw_node->list, &bat_priv->gw.gateway_list); in batadv_gw_node_add()
390 batadv_gw_node_put(gw_node); in batadv_gw_node_add()
403 struct batadv_gw_node *gw_node_tmp, *gw_node = NULL; in batadv_gw_node_get() local
414 gw_node = gw_node_tmp; in batadv_gw_node_get()
419 return gw_node; in batadv_gw_node_get()
433 struct batadv_gw_node *gw_node, *curr_gw = NULL; in batadv_gw_node_update() local
436 gw_node = batadv_gw_node_get(bat_priv, orig_node); in batadv_gw_node_update()
437 if (!gw_node) { in batadv_gw_node_update()
444 if (gw_node->bandwidth_down == ntohl(gateway->bandwidth_down) && in batadv_gw_node_update()
445 gw_node->bandwidth_up == ntohl(gateway->bandwidth_up)) in batadv_gw_node_update()
451 gw_node->bandwidth_down / 10, in batadv_gw_node_update()
452 gw_node->bandwidth_down % 10, in batadv_gw_node_update()
453 gw_node->bandwidth_up / 10, in batadv_gw_node_update()
454 gw_node->bandwidth_up % 10, in batadv_gw_node_update()
460 gw_node->bandwidth_down = ntohl(gateway->bandwidth_down); in batadv_gw_node_update()
461 gw_node->bandwidth_up = ntohl(gateway->bandwidth_up); in batadv_gw_node_update()
472 if (!hlist_unhashed(&gw_node->list)) { in batadv_gw_node_update()
473 hlist_del_init_rcu(&gw_node->list); in batadv_gw_node_update()
474 batadv_gw_node_put(gw_node); in batadv_gw_node_update()
479 if (gw_node == curr_gw) in batadv_gw_node_update()
487 if (gw_node) in batadv_gw_node_update()
488 batadv_gw_node_put(gw_node); in batadv_gw_node_update()
513 struct batadv_gw_node *gw_node; in batadv_gw_node_free() local
517 hlist_for_each_entry_safe(gw_node, node_tmp, in batadv_gw_node_free()
519 hlist_del_init_rcu(&gw_node->list); in batadv_gw_node_free()
520 batadv_gw_node_put(gw_node); in batadv_gw_node_free()
757 struct batadv_gw_node *gw_node = NULL; in batadv_gw_out_of_range() local
775 gw_node = batadv_gw_node_get(bat_priv, orig_dst_node); in batadv_gw_out_of_range()
776 if (!gw_node) in batadv_gw_out_of_range()
835 if (gw_node) in batadv_gw_out_of_range()
836 batadv_gw_node_put(gw_node); in batadv_gw_out_of_range()