Lines Matching refs:vlan
132 struct batadv_softif_vlan *vlan; in batadv_interface_set_mac_addr() local
147 hlist_for_each_entry_rcu(vlan, &bat_priv->softif_vlan_list, list) { in batadv_interface_set_mac_addr()
148 batadv_tt_local_remove(bat_priv, old_addr, vlan->vid, in batadv_interface_set_mac_addr()
150 batadv_tt_local_add(dev, addr->sa_data, vlan->vid, in batadv_interface_set_mac_addr()
489 void batadv_softif_vlan_free_ref(struct batadv_softif_vlan *vlan) in batadv_softif_vlan_free_ref() argument
491 if (!vlan) in batadv_softif_vlan_free_ref()
494 if (atomic_dec_and_test(&vlan->refcount)) { in batadv_softif_vlan_free_ref()
495 spin_lock_bh(&vlan->bat_priv->softif_vlan_list_lock); in batadv_softif_vlan_free_ref()
496 hlist_del_rcu(&vlan->list); in batadv_softif_vlan_free_ref()
497 spin_unlock_bh(&vlan->bat_priv->softif_vlan_list_lock); in batadv_softif_vlan_free_ref()
499 kfree_rcu(vlan, rcu); in batadv_softif_vlan_free_ref()
514 struct batadv_softif_vlan *vlan_tmp, *vlan = NULL; in batadv_softif_vlan_get() local
524 vlan = vlan_tmp; in batadv_softif_vlan_get()
529 return vlan; in batadv_softif_vlan_get()
541 struct batadv_softif_vlan *vlan; in batadv_softif_create_vlan() local
544 vlan = batadv_softif_vlan_get(bat_priv, vid); in batadv_softif_create_vlan()
545 if (vlan) { in batadv_softif_create_vlan()
546 batadv_softif_vlan_free_ref(vlan); in batadv_softif_create_vlan()
550 vlan = kzalloc(sizeof(*vlan), GFP_ATOMIC); in batadv_softif_create_vlan()
551 if (!vlan) in batadv_softif_create_vlan()
554 vlan->bat_priv = bat_priv; in batadv_softif_create_vlan()
555 vlan->vid = vid; in batadv_softif_create_vlan()
556 atomic_set(&vlan->refcount, 1); in batadv_softif_create_vlan()
558 atomic_set(&vlan->ap_isolation, 0); in batadv_softif_create_vlan()
560 err = batadv_sysfs_add_vlan(bat_priv->soft_iface, vlan); in batadv_softif_create_vlan()
562 kfree(vlan); in batadv_softif_create_vlan()
567 hlist_add_head_rcu(&vlan->list, &bat_priv->softif_vlan_list); in batadv_softif_create_vlan()
586 struct batadv_softif_vlan *vlan) in batadv_softif_destroy_vlan() argument
592 vlan->vid, "vlan interface destroyed", false); in batadv_softif_destroy_vlan()
594 batadv_sysfs_del_vlan(bat_priv, vlan); in batadv_softif_destroy_vlan()
595 batadv_softif_vlan_free_ref(vlan); in batadv_softif_destroy_vlan()
612 struct batadv_softif_vlan *vlan; in batadv_interface_add_vid() local
629 vlan = batadv_softif_vlan_get(bat_priv, vid); in batadv_interface_add_vid()
630 if (!vlan) in batadv_interface_add_vid()
636 if (!vlan->kobj) { in batadv_interface_add_vid()
637 ret = batadv_sysfs_add_vlan(bat_priv->soft_iface, vlan); in batadv_interface_add_vid()
639 batadv_softif_vlan_free_ref(vlan); in batadv_interface_add_vid()
670 struct batadv_softif_vlan *vlan; in batadv_interface_kill_vid() local
678 vlan = batadv_softif_vlan_get(bat_priv, vid | BATADV_VLAN_HAS_TAG); in batadv_interface_kill_vid()
679 if (!vlan) in batadv_interface_kill_vid()
682 batadv_softif_destroy_vlan(bat_priv, vlan); in batadv_interface_kill_vid()
685 batadv_softif_vlan_free_ref(vlan); in batadv_interface_kill_vid()
729 struct batadv_softif_vlan *vlan; in batadv_softif_destroy_finish() local
738 vlan = batadv_softif_vlan_get(bat_priv, BATADV_NO_FLAGS); in batadv_softif_destroy_finish()
739 if (vlan) { in batadv_softif_destroy_finish()
740 batadv_softif_destroy_vlan(bat_priv, vlan); in batadv_softif_destroy_finish()
741 batadv_softif_vlan_free_ref(vlan); in batadv_softif_destroy_finish()