Lines Matching refs:vg
34 static void __vlan_add_pvid(struct net_bridge_vlan_group *vg, u16 vid) in __vlan_add_pvid() argument
36 if (vg->pvid == vid) in __vlan_add_pvid()
40 vg->pvid = vid; in __vlan_add_pvid()
43 static void __vlan_delete_pvid(struct net_bridge_vlan_group *vg, u16 vid) in __vlan_delete_pvid() argument
45 if (vg->pvid != vid) in __vlan_delete_pvid()
49 vg->pvid = 0; in __vlan_delete_pvid()
54 struct net_bridge_vlan_group *vg; in __vlan_add_flags() local
57 vg = br_vlan_group(v->br); in __vlan_add_flags()
59 vg = nbp_vlan_group(v->port); in __vlan_add_flags()
62 __vlan_add_pvid(vg, v->vid); in __vlan_add_flags()
64 __vlan_delete_pvid(vg, v->vid); in __vlan_add_flags()
94 struct net_bridge_vlan_group *vg; in __vlan_add_list() local
99 vg = br_vlan_group(v->br); in __vlan_add_list()
101 vg = nbp_vlan_group(v->port); in __vlan_add_list()
103 headp = &vg->vlan_list; in __vlan_add_list()
145 struct net_bridge_vlan_group *vg; in br_vlan_get_master() local
148 vg = br_vlan_group(br); in br_vlan_get_master()
149 masterv = br_vlan_find(vg, vid); in br_vlan_get_master()
154 masterv = br_vlan_find(vg, vid); in br_vlan_get_master()
165 struct net_bridge_vlan_group *vg; in br_vlan_put_master() local
170 vg = br_vlan_group(masterv->br); in br_vlan_put_master()
172 rhashtable_remove_fast(&vg->vlan_hash, in br_vlan_put_master()
194 struct net_bridge_vlan_group *vg; in __vlan_add() local
202 vg = br_vlan_group(br); in __vlan_add()
207 vg = nbp_vlan_group(p); in __vlan_add()
240 vg->num_vlans++; in __vlan_add()
243 err = rhashtable_lookup_insert_fast(&vg->vlan_hash, &v->vnode, in __vlan_add()
256 vg->num_vlans--; in __vlan_add()
274 struct net_bridge_vlan_group *vg; in __vlan_del() local
279 vg = br_vlan_group(v->br); in __vlan_del()
282 vg = nbp_vlan_group(v->port); in __vlan_del()
286 __vlan_delete_pvid(vg, v->vid); in __vlan_del()
295 vg->num_vlans--; in __vlan_del()
299 rhashtable_remove_fast(&vg->vlan_hash, &v->vnode, in __vlan_del()
310 static void __vlan_group_free(struct net_bridge_vlan_group *vg) in __vlan_group_free() argument
312 WARN_ON(!list_empty(&vg->vlan_list)); in __vlan_group_free()
313 rhashtable_destroy(&vg->vlan_hash); in __vlan_group_free()
314 kfree(vg); in __vlan_group_free()
317 static void __vlan_flush(struct net_bridge_vlan_group *vg) in __vlan_flush() argument
321 __vlan_delete_pvid(vg, vg->pvid); in __vlan_flush()
322 list_for_each_entry_safe(vlan, tmp, &vg->vlan_list, vlist) in __vlan_flush()
327 struct net_bridge_vlan_group *vg, in br_handle_vlan() argument
342 v = br_vlan_find(vg, vid); in br_handle_vlan()
364 static bool __allowed_ingress(struct net_bridge_vlan_group *vg, __be16 proto, in __allowed_ingress() argument
405 u16 pvid = br_get_pvid(vg); in __allowed_ingress()
433 v = br_vlan_find(vg, *vid); in __allowed_ingress()
442 struct net_bridge_vlan_group *vg, struct sk_buff *skb, in br_allowed_ingress() argument
453 return __allowed_ingress(vg, br->vlan_proto, skb, vid); in br_allowed_ingress()
457 bool br_allowed_egress(struct net_bridge_vlan_group *vg, in br_allowed_egress() argument
468 v = br_vlan_find(vg, vid); in br_allowed_egress()
478 struct net_bridge_vlan_group *vg; in br_should_learn() local
485 vg = nbp_vlan_group_rcu(p); in br_should_learn()
486 if (!vg || !vg->num_vlans) in br_should_learn()
493 *vid = br_get_pvid(vg); in br_should_learn()
500 if (br_vlan_find(vg, *vid)) in br_should_learn()
511 struct net_bridge_vlan_group *vg; in br_vlan_add() local
517 vg = br_vlan_group(br); in br_vlan_add()
518 vlan = br_vlan_find(vg, vid); in br_vlan_add()
533 vg->num_vlans++; in br_vlan_add()
561 struct net_bridge_vlan_group *vg; in br_vlan_delete() local
566 vg = br_vlan_group(br); in br_vlan_delete()
567 v = br_vlan_find(vg, vid); in br_vlan_delete()
579 struct net_bridge_vlan_group *vg; in br_vlan_flush() local
583 vg = br_vlan_group(br); in br_vlan_flush()
584 __vlan_flush(vg); in br_vlan_flush()
587 __vlan_group_free(vg); in br_vlan_flush()
590 struct net_bridge_vlan *br_vlan_find(struct net_bridge_vlan_group *vg, u16 vid) in br_vlan_find() argument
592 if (!vg) in br_vlan_find()
595 return br_vlan_lookup(&vg->vlan_hash, vid); in br_vlan_find()
654 struct net_bridge_vlan_group *vg; in __br_vlan_set_proto() local
662 vg = nbp_vlan_group(p); in __br_vlan_set_proto()
663 list_for_each_entry(vlan, &vg->vlan_list, vlist) { in __br_vlan_set_proto()
678 vg = nbp_vlan_group(p); in __br_vlan_set_proto()
679 list_for_each_entry(vlan, &vg->vlan_list, vlist) in __br_vlan_set_proto()
686 list_for_each_entry_continue_reverse(vlan, &vg->vlan_list, vlist) in __br_vlan_set_proto()
690 vg = nbp_vlan_group(p); in __br_vlan_set_proto()
691 list_for_each_entry(vlan, &vg->vlan_list, vlist) in __br_vlan_set_proto()
714 static bool vlan_default_pvid(struct net_bridge_vlan_group *vg, u16 vid) in vlan_default_pvid() argument
718 if (vid != vg->pvid) in vlan_default_pvid()
721 v = br_vlan_lookup(&vg->vlan_hash, vid); in vlan_default_pvid()
751 struct net_bridge_vlan_group *vg; in __br_vlan_set_default_pvid() local
772 vg = br_vlan_group(br); in __br_vlan_set_default_pvid()
773 pvent = br_vlan_find(vg, pvid); in __br_vlan_set_default_pvid()
774 if ((!old_pvid || vlan_default_pvid(vg, old_pvid)) && in __br_vlan_set_default_pvid()
790 vg = nbp_vlan_group(p); in __br_vlan_set_default_pvid()
792 !vlan_default_pvid(vg, old_pvid)) || in __br_vlan_set_default_pvid()
793 br_vlan_find(vg, pvid)) in __br_vlan_set_default_pvid()
862 struct net_bridge_vlan_group *vg; in br_vlan_init() local
865 vg = kzalloc(sizeof(*vg), GFP_KERNEL); in br_vlan_init()
866 if (!vg) in br_vlan_init()
868 ret = rhashtable_init(&vg->vlan_hash, &br_vlan_rht_params); in br_vlan_init()
871 INIT_LIST_HEAD(&vg->vlan_list); in br_vlan_init()
874 rcu_assign_pointer(br->vlgrp, vg); in br_vlan_init()
885 rhashtable_destroy(&vg->vlan_hash); in br_vlan_init()
887 kfree(vg); in br_vlan_init()
894 struct net_bridge_vlan_group *vg; in nbp_vlan_init() local
897 vg = kzalloc(sizeof(struct net_bridge_vlan_group), GFP_KERNEL); in nbp_vlan_init()
898 if (!vg) in nbp_vlan_init()
901 ret = rhashtable_init(&vg->vlan_hash, &br_vlan_rht_params); in nbp_vlan_init()
904 INIT_LIST_HEAD(&vg->vlan_list); in nbp_vlan_init()
905 rcu_assign_pointer(p->vlgrp, vg); in nbp_vlan_init()
919 rhashtable_destroy(&vg->vlan_hash); in nbp_vlan_init()
921 kfree(vg); in nbp_vlan_init()
975 struct net_bridge_vlan_group *vg; in nbp_vlan_flush() local
979 vg = nbp_vlan_group(port); in nbp_vlan_flush()
980 __vlan_flush(vg); in nbp_vlan_flush()
983 __vlan_group_free(vg); in nbp_vlan_flush()