Lines Matching refs:tvlv
116 spin_lock_init(&bat_priv->tvlv.container_list_lock); in batadv_mesh_init()
117 spin_lock_init(&bat_priv->tvlv.handler_list_lock); in batadv_mesh_init()
134 INIT_HLIST_HEAD(&bat_priv->tvlv.container_list); in batadv_mesh_init()
135 INIT_HLIST_HEAD(&bat_priv->tvlv.handler_list); in batadv_mesh_init()
635 &bat_priv->tvlv.handler_list, list) { in batadv_tvlv_handler_get()
658 static void batadv_tvlv_container_free_ref(struct batadv_tvlv_container *tvlv) in batadv_tvlv_container_free_ref() argument
660 if (atomic_dec_and_test(&tvlv->refcount)) in batadv_tvlv_container_free_ref()
661 kfree(tvlv); in batadv_tvlv_container_free_ref()
680 struct batadv_tvlv_container *tvlv_tmp, *tvlv = NULL; in batadv_tvlv_container_get() local
682 hlist_for_each_entry(tvlv_tmp, &bat_priv->tvlv.container_list, list) { in batadv_tvlv_container_get()
692 tvlv = tvlv_tmp; in batadv_tvlv_container_get()
696 return tvlv; in batadv_tvlv_container_get()
711 struct batadv_tvlv_container *tvlv; in batadv_tvlv_container_list_size() local
714 hlist_for_each_entry(tvlv, &bat_priv->tvlv.container_list, list) { in batadv_tvlv_container_list_size()
716 tvlv_len += ntohs(tvlv->tvlv_hdr.len); in batadv_tvlv_container_list_size()
730 static void batadv_tvlv_container_remove(struct batadv_tvlv_container *tvlv) in batadv_tvlv_container_remove() argument
732 if (!tvlv) in batadv_tvlv_container_remove()
735 hlist_del(&tvlv->list); in batadv_tvlv_container_remove()
738 batadv_tvlv_container_free_ref(tvlv); in batadv_tvlv_container_remove()
739 batadv_tvlv_container_free_ref(tvlv); in batadv_tvlv_container_remove()
752 struct batadv_tvlv_container *tvlv; in batadv_tvlv_container_unregister() local
754 spin_lock_bh(&bat_priv->tvlv.container_list_lock); in batadv_tvlv_container_unregister()
755 tvlv = batadv_tvlv_container_get(bat_priv, type, version); in batadv_tvlv_container_unregister()
756 batadv_tvlv_container_remove(tvlv); in batadv_tvlv_container_unregister()
757 spin_unlock_bh(&bat_priv->tvlv.container_list_lock); in batadv_tvlv_container_unregister()
793 spin_lock_bh(&bat_priv->tvlv.container_list_lock); in batadv_tvlv_container_register()
796 hlist_add_head(&tvlv_new->list, &bat_priv->tvlv.container_list); in batadv_tvlv_container_register()
797 spin_unlock_bh(&bat_priv->tvlv.container_list_lock); in batadv_tvlv_container_register()
852 struct batadv_tvlv_container *tvlv; in batadv_tvlv_container_ogm_append() local
858 spin_lock_bh(&bat_priv->tvlv.container_list_lock); in batadv_tvlv_container_ogm_append()
872 hlist_for_each_entry(tvlv, &bat_priv->tvlv.container_list, list) { in batadv_tvlv_container_ogm_append()
874 tvlv_hdr->type = tvlv->tvlv_hdr.type; in batadv_tvlv_container_ogm_append()
875 tvlv_hdr->version = tvlv->tvlv_hdr.version; in batadv_tvlv_container_ogm_append()
876 tvlv_hdr->len = tvlv->tvlv_hdr.len; in batadv_tvlv_container_ogm_append()
878 memcpy(tvlv_value, tvlv + 1, ntohs(tvlv->tvlv_hdr.len)); in batadv_tvlv_container_ogm_append()
879 tvlv_value = (uint8_t *)tvlv_value + ntohs(tvlv->tvlv_hdr.len); in batadv_tvlv_container_ogm_append()
883 spin_unlock_bh(&bat_priv->tvlv.container_list_lock); in batadv_tvlv_container_ogm_append()
995 &bat_priv->tvlv.handler_list, list) { in batadv_tvlv_containers_process()
1081 spin_lock_bh(&bat_priv->tvlv.handler_list_lock); in batadv_tvlv_handler_register()
1082 hlist_add_head_rcu(&tvlv_handler->list, &bat_priv->tvlv.handler_list); in batadv_tvlv_handler_register()
1083 spin_unlock_bh(&bat_priv->tvlv.handler_list_lock); in batadv_tvlv_handler_register()
1103 spin_lock_bh(&bat_priv->tvlv.handler_list_lock); in batadv_tvlv_handler_unregister()
1105 spin_unlock_bh(&bat_priv->tvlv.handler_list_lock); in batadv_tvlv_handler_unregister()