Lines Matching refs:br
57 vg = br_vlan_group(v->br); in __vlan_add_flags()
72 static int __vlan_vid_add(struct net_device *dev, struct net_bridge *br, in __vlan_vid_add() argument
88 return vlan_vid_add(dev, br->vlan_proto, vid); in __vlan_vid_add()
99 vg = br_vlan_group(v->br); in __vlan_add_list()
119 static int __vlan_vid_del(struct net_device *dev, struct net_bridge *br, in __vlan_vid_del() argument
134 vlan_vid_del(dev, br->vlan_proto, vid); in __vlan_vid_del()
143 static struct net_bridge_vlan *br_vlan_get_master(struct net_bridge *br, u16 vid) in br_vlan_get_master() argument
148 vg = br_vlan_group(br); in br_vlan_get_master()
152 if (br_vlan_add(br, vid, 0)) in br_vlan_get_master()
170 vg = br_vlan_group(masterv->br); in br_vlan_put_master()
196 struct net_bridge *br; in __vlan_add() local
200 br = v->br; in __vlan_add()
201 dev = br->dev; in __vlan_add()
202 vg = br_vlan_group(br); in __vlan_add()
205 br = p->br; in __vlan_add()
215 err = __vlan_vid_add(dev, br, v->vid, flags); in __vlan_add()
221 err = br_vlan_add(br, v->vid, flags | in __vlan_add()
227 masterv = br_vlan_get_master(br, v->vid); in __vlan_add()
235 err = br_fdb_insert(br, p, dev->dev_addr, v->vid); in __vlan_add()
237 br_err(br, "failed insert local address into bridge forwarding table\n"); in __vlan_add()
255 br_fdb_find_delete_local(br, p, dev->dev_addr, v->vid); in __vlan_add()
261 __vlan_vid_del(dev, br, v->vid); in __vlan_add()
279 vg = br_vlan_group(v->br); in __vlan_del()
288 err = __vlan_vid_del(p->dev, p->br, v->vid); in __vlan_del()
326 struct sk_buff *br_handle_vlan(struct net_bridge *br, in br_handle_vlan() argument
349 if ((br->dev->flags & IFF_PROMISC) && skb->dev == br->dev) { in br_handle_vlan()
441 bool br_allowed_ingress(const struct net_bridge *br, in br_allowed_ingress() argument
448 if (!br->vlan_enabled) { in br_allowed_ingress()
453 return __allowed_ingress(vg, br->vlan_proto, skb, vid); in br_allowed_ingress()
479 struct net_bridge *br = p->br; in br_should_learn() local
482 if (!br->vlan_enabled) in br_should_learn()
489 if (!br_vlan_get_tag(skb, vid) && skb->vlan_proto != br->vlan_proto) in br_should_learn()
509 int br_vlan_add(struct net_bridge *br, u16 vid, u16 flags) in br_vlan_add() argument
517 vg = br_vlan_group(br); in br_vlan_add()
525 ret = br_fdb_insert(br, NULL, br->dev->dev_addr, in br_vlan_add()
528 br_err(br, "failed insert local address into bridge forwarding table\n"); in br_vlan_add()
546 vlan->br = br; in br_vlan_add()
559 int br_vlan_delete(struct net_bridge *br, u16 vid) in br_vlan_delete() argument
566 vg = br_vlan_group(br); in br_vlan_delete()
571 br_fdb_find_delete_local(br, NULL, br->dev->dev_addr, vid); in br_vlan_delete()
572 br_fdb_delete_by_port(br, NULL, vid, 0); in br_vlan_delete()
577 void br_vlan_flush(struct net_bridge *br) in br_vlan_flush() argument
583 vg = br_vlan_group(br); in br_vlan_flush()
585 RCU_INIT_POINTER(br->vlgrp, NULL); in br_vlan_flush()
599 static void recalculate_group_addr(struct net_bridge *br) in recalculate_group_addr() argument
601 if (br->group_addr_set) in recalculate_group_addr()
604 spin_lock_bh(&br->lock); in recalculate_group_addr()
605 if (!br->vlan_enabled || br->vlan_proto == htons(ETH_P_8021Q)) { in recalculate_group_addr()
607 br->group_addr[5] = 0x00; in recalculate_group_addr()
610 br->group_addr[5] = 0x08; in recalculate_group_addr()
612 spin_unlock_bh(&br->lock); in recalculate_group_addr()
616 void br_recalculate_fwd_mask(struct net_bridge *br) in br_recalculate_fwd_mask() argument
618 if (!br->vlan_enabled || br->vlan_proto == htons(ETH_P_8021Q)) in br_recalculate_fwd_mask()
619 br->group_fwd_mask_required = BR_GROUPFWD_DEFAULT; in br_recalculate_fwd_mask()
621 br->group_fwd_mask_required = BR_GROUPFWD_8021AD & in br_recalculate_fwd_mask()
622 ~(1u << br->group_addr[5]); in br_recalculate_fwd_mask()
625 int __br_vlan_filter_toggle(struct net_bridge *br, unsigned long val) in __br_vlan_filter_toggle() argument
627 if (br->vlan_enabled == val) in __br_vlan_filter_toggle()
630 br->vlan_enabled = val; in __br_vlan_filter_toggle()
631 br_manage_promisc(br); in __br_vlan_filter_toggle()
632 recalculate_group_addr(br); in __br_vlan_filter_toggle()
633 br_recalculate_fwd_mask(br); in __br_vlan_filter_toggle()
638 int br_vlan_filter_toggle(struct net_bridge *br, unsigned long val) in br_vlan_filter_toggle() argument
643 __br_vlan_filter_toggle(br, val); in br_vlan_filter_toggle()
649 int __br_vlan_set_proto(struct net_bridge *br, __be16 proto) in __br_vlan_set_proto() argument
657 if (br->vlan_proto == proto) in __br_vlan_set_proto()
661 list_for_each_entry(p, &br->port_list, list) { in __br_vlan_set_proto()
670 oldproto = br->vlan_proto; in __br_vlan_set_proto()
671 br->vlan_proto = proto; in __br_vlan_set_proto()
673 recalculate_group_addr(br); in __br_vlan_set_proto()
674 br_recalculate_fwd_mask(br); in __br_vlan_set_proto()
677 list_for_each_entry(p, &br->port_list, list) { in __br_vlan_set_proto()
689 list_for_each_entry_continue_reverse(p, &br->port_list, list) { in __br_vlan_set_proto()
698 int br_vlan_set_proto(struct net_bridge *br, unsigned long val) in br_vlan_set_proto() argument
708 err = __br_vlan_set_proto(br, htons(val)); in br_vlan_set_proto()
729 static void br_vlan_disable_default_pvid(struct net_bridge *br) in br_vlan_disable_default_pvid() argument
732 u16 pvid = br->default_pvid; in br_vlan_disable_default_pvid()
737 if (vlan_default_pvid(br_vlan_group(br), pvid)) in br_vlan_disable_default_pvid()
738 br_vlan_delete(br, pvid); in br_vlan_disable_default_pvid()
740 list_for_each_entry(p, &br->port_list, list) { in br_vlan_disable_default_pvid()
745 br->default_pvid = 0; in br_vlan_disable_default_pvid()
748 int __br_vlan_set_default_pvid(struct net_bridge *br, u16 pvid) in __br_vlan_set_default_pvid() argument
758 br_vlan_disable_default_pvid(br); in __br_vlan_set_default_pvid()
767 old_pvid = br->default_pvid; in __br_vlan_set_default_pvid()
772 vg = br_vlan_group(br); in __br_vlan_set_default_pvid()
776 err = br_vlan_add(br, pvid, in __br_vlan_set_default_pvid()
782 br_vlan_delete(br, old_pvid); in __br_vlan_set_default_pvid()
786 list_for_each_entry(p, &br->port_list, list) { in __br_vlan_set_default_pvid()
805 br->default_pvid = pvid; in __br_vlan_set_default_pvid()
812 list_for_each_entry_continue_reverse(p, &br->port_list, list) { in __br_vlan_set_default_pvid()
825 br_vlan_add(br, old_pvid, in __br_vlan_set_default_pvid()
829 br_vlan_delete(br, pvid); in __br_vlan_set_default_pvid()
834 int br_vlan_set_default_pvid(struct net_bridge *br, unsigned long val) in br_vlan_set_default_pvid() argument
845 if (pvid == br->default_pvid) in br_vlan_set_default_pvid()
849 if (br->vlan_enabled) { in br_vlan_set_default_pvid()
854 err = __br_vlan_set_default_pvid(br, pvid); in br_vlan_set_default_pvid()
860 int br_vlan_init(struct net_bridge *br) in br_vlan_init() argument
872 br->vlan_proto = htons(ETH_P_8021Q); in br_vlan_init()
873 br->default_pvid = 1; in br_vlan_init()
874 rcu_assign_pointer(br->vlgrp, vg); in br_vlan_init()
875 ret = br_vlan_add(br, 1, in br_vlan_init()
906 if (p->br->default_pvid) { in nbp_vlan_init()
907 ret = nbp_vlan_add(p, p->br->default_pvid, in nbp_vlan_init()
967 br_fdb_find_delete_local(port->br, port, port->dev->dev_addr, vid); in nbp_vlan_delete()
968 br_fdb_delete_by_port(port->br, port, vid, 0); in nbp_vlan_delete()