Lines Matching refs:hardif_neigh
275 struct batadv_hardif_neigh_node *hardif_neigh; in batadv_hardif_neigh_release() local
277 hardif_neigh = container_of(ref, struct batadv_hardif_neigh_node, in batadv_hardif_neigh_release()
280 spin_lock_bh(&hardif_neigh->if_incoming->neigh_list_lock); in batadv_hardif_neigh_release()
281 hlist_del_init_rcu(&hardif_neigh->list); in batadv_hardif_neigh_release()
282 spin_unlock_bh(&hardif_neigh->if_incoming->neigh_list_lock); in batadv_hardif_neigh_release()
284 batadv_hardif_put(hardif_neigh->if_incoming); in batadv_hardif_neigh_release()
285 kfree_rcu(hardif_neigh, rcu); in batadv_hardif_neigh_release()
293 void batadv_hardif_neigh_put(struct batadv_hardif_neigh_node *hardif_neigh) in batadv_hardif_neigh_put() argument
295 kref_put(&hardif_neigh->refcount, batadv_hardif_neigh_release); in batadv_hardif_neigh_put()
316 batadv_hardif_neigh_put(neigh_node->hardif_neigh); in batadv_neigh_node_release()
571 struct batadv_hardif_neigh_node *hardif_neigh; in batadv_hardif_neigh_create() local
576 hardif_neigh = batadv_hardif_neigh_get(hard_iface, neigh_addr); in batadv_hardif_neigh_create()
577 if (hardif_neigh) in batadv_hardif_neigh_create()
580 hardif_neigh = kzalloc(sizeof(*hardif_neigh), GFP_ATOMIC); in batadv_hardif_neigh_create()
581 if (!hardif_neigh) in batadv_hardif_neigh_create()
585 INIT_HLIST_NODE(&hardif_neigh->list); in batadv_hardif_neigh_create()
586 ether_addr_copy(hardif_neigh->addr, neigh_addr); in batadv_hardif_neigh_create()
587 ether_addr_copy(hardif_neigh->orig, orig_node->orig); in batadv_hardif_neigh_create()
588 hardif_neigh->if_incoming = hard_iface; in batadv_hardif_neigh_create()
589 hardif_neigh->last_seen = jiffies; in batadv_hardif_neigh_create()
591 kref_init(&hardif_neigh->refcount); in batadv_hardif_neigh_create()
594 bat_priv->algo_ops->neigh.hardif_init(hardif_neigh); in batadv_hardif_neigh_create()
596 hlist_add_head_rcu(&hardif_neigh->list, &hard_iface->neigh_list); in batadv_hardif_neigh_create()
600 return hardif_neigh; in batadv_hardif_neigh_create()
617 struct batadv_hardif_neigh_node *hardif_neigh; in batadv_hardif_neigh_get_or_create() local
620 hardif_neigh = batadv_hardif_neigh_get(hard_iface, neigh_addr); in batadv_hardif_neigh_get_or_create()
621 if (hardif_neigh) in batadv_hardif_neigh_get_or_create()
622 return hardif_neigh; in batadv_hardif_neigh_get_or_create()
640 struct batadv_hardif_neigh_node *tmp_hardif_neigh, *hardif_neigh = NULL; in batadv_hardif_neigh_get() local
651 hardif_neigh = tmp_hardif_neigh; in batadv_hardif_neigh_get()
656 return hardif_neigh; in batadv_hardif_neigh_get()
675 struct batadv_hardif_neigh_node *hardif_neigh = NULL; in batadv_neigh_node_create() local
683 hardif_neigh = batadv_hardif_neigh_get_or_create(hard_iface, in batadv_neigh_node_create()
685 if (!hardif_neigh) in batadv_neigh_node_create()
703 kref_get(&hardif_neigh->refcount); in batadv_neigh_node_create()
704 neigh_node->hardif_neigh = hardif_neigh; in batadv_neigh_node_create()
719 if (hardif_neigh) in batadv_neigh_node_create()
720 batadv_hardif_neigh_put(hardif_neigh); in batadv_neigh_node_create()