Lines Matching refs:br

65 		vg = br_vlan_group(v->br);  in __vlan_add_flags()
82 static int __vlan_vid_add(struct net_device *dev, struct net_bridge *br, in __vlan_vid_add() argument
92 return vlan_vid_add(dev, br->vlan_proto, vid); in __vlan_vid_add()
103 vg = br_vlan_group(v->br); in __vlan_add_list()
123 static int __vlan_vid_del(struct net_device *dev, struct net_bridge *br, in __vlan_vid_del() argument
133 vlan_vid_del(dev, br->vlan_proto, vid); in __vlan_vid_del()
142 static struct net_bridge_vlan *br_vlan_get_master(struct net_bridge *br, u16 vid) in br_vlan_get_master() argument
147 vg = br_vlan_group(br); in br_vlan_get_master()
153 if (br_vlan_add(br, vid, 0, &changed)) in br_vlan_get_master()
184 vg = br_vlan_group(masterv->br); in br_vlan_put_master()
210 struct net_bridge *br; in __vlan_add() local
214 br = v->br; in __vlan_add()
215 dev = br->dev; in __vlan_add()
216 vg = br_vlan_group(br); in __vlan_add()
219 br = p->br; in __vlan_add()
229 err = __vlan_vid_add(dev, br, v->vid, flags); in __vlan_add()
237 err = br_vlan_add(br, v->vid, in __vlan_add()
244 masterv = br_vlan_get_master(br, v->vid); in __vlan_add()
257 err = br_fdb_insert(br, p, dev->dev_addr, v->vid); in __vlan_add()
259 br_err(br, "failed insert local address into bridge forwarding table\n"); in __vlan_add()
277 br_fdb_find_delete_local(br, p, dev->dev_addr, v->vid); in __vlan_add()
283 __vlan_vid_del(dev, br, v->vid); in __vlan_add()
303 vg = br_vlan_group(v->br); in __vlan_del()
312 err = __vlan_vid_del(p->dev, p->br, v->vid); in __vlan_del()
316 err = br_switchdev_port_vlan_del(v->br->dev, v->vid); in __vlan_del()
357 struct sk_buff *br_handle_vlan(struct net_bridge *br, in br_handle_vlan() argument
382 if ((br->dev->flags & IFF_PROMISC) && skb->dev == br->dev) { in br_handle_vlan()
389 if (br->vlan_stats_enabled) { in br_handle_vlan()
410 static bool __allowed_ingress(const struct net_bridge *br, in __allowed_ingress() argument
424 skb->protocol == br->vlan_proto)) { in __allowed_ingress()
432 if (skb->vlan_proto != br->vlan_proto) { in __allowed_ingress()
468 __vlan_hwaccel_put_tag(skb, br->vlan_proto, pvid); in __allowed_ingress()
478 if (!br->vlan_stats_enabled) in __allowed_ingress()
485 if (br->vlan_stats_enabled) { in __allowed_ingress()
500 bool br_allowed_ingress(const struct net_bridge *br, in br_allowed_ingress() argument
507 if (!br->vlan_enabled) { in br_allowed_ingress()
512 return __allowed_ingress(br, vg, skb, vid); in br_allowed_ingress()
538 struct net_bridge *br = p->br; in br_should_learn() local
541 if (!br->vlan_enabled) in br_should_learn()
548 if (!br_vlan_get_tag(skb, vid) && skb->vlan_proto != br->vlan_proto) in br_should_learn()
565 static int br_vlan_add_existing(struct net_bridge *br, in br_vlan_add_existing() argument
572 err = br_switchdev_port_vlan_add(br->dev, vlan->vid, flags); in br_vlan_add_existing()
583 err = br_fdb_insert(br, NULL, br->dev->dev_addr, in br_vlan_add_existing()
586 br_err(br, "failed to insert local address into bridge forwarding table\n"); in br_vlan_add_existing()
603 br_switchdev_port_vlan_del(br->dev, vlan->vid); in br_vlan_add_existing()
611 int br_vlan_add(struct net_bridge *br, u16 vid, u16 flags, bool *changed) in br_vlan_add() argument
620 vg = br_vlan_group(br); in br_vlan_add()
623 return br_vlan_add_existing(br, vg, vlan, flags, changed); in br_vlan_add()
637 vlan->br = br; in br_vlan_add()
654 int br_vlan_delete(struct net_bridge *br, u16 vid) in br_vlan_delete() argument
661 vg = br_vlan_group(br); in br_vlan_delete()
666 br_fdb_find_delete_local(br, NULL, br->dev->dev_addr, vid); in br_vlan_delete()
667 br_fdb_delete_by_port(br, NULL, vid, 0); in br_vlan_delete()
674 void br_vlan_flush(struct net_bridge *br) in br_vlan_flush() argument
680 vg = br_vlan_group(br); in br_vlan_flush()
682 RCU_INIT_POINTER(br->vlgrp, NULL); in br_vlan_flush()
696 static void recalculate_group_addr(struct net_bridge *br) in recalculate_group_addr() argument
698 if (br->group_addr_set) in recalculate_group_addr()
701 spin_lock_bh(&br->lock); in recalculate_group_addr()
702 if (!br->vlan_enabled || br->vlan_proto == htons(ETH_P_8021Q)) { in recalculate_group_addr()
704 br->group_addr[5] = 0x00; in recalculate_group_addr()
707 br->group_addr[5] = 0x08; in recalculate_group_addr()
709 spin_unlock_bh(&br->lock); in recalculate_group_addr()
713 void br_recalculate_fwd_mask(struct net_bridge *br) in br_recalculate_fwd_mask() argument
715 if (!br->vlan_enabled || br->vlan_proto == htons(ETH_P_8021Q)) in br_recalculate_fwd_mask()
716 br->group_fwd_mask_required = BR_GROUPFWD_DEFAULT; in br_recalculate_fwd_mask()
718 br->group_fwd_mask_required = BR_GROUPFWD_8021AD & in br_recalculate_fwd_mask()
719 ~(1u << br->group_addr[5]); in br_recalculate_fwd_mask()
722 int __br_vlan_filter_toggle(struct net_bridge *br, unsigned long val) in __br_vlan_filter_toggle() argument
725 .orig_dev = br->dev, in __br_vlan_filter_toggle()
732 if (br->vlan_enabled == val) in __br_vlan_filter_toggle()
735 err = switchdev_port_attr_set(br->dev, &attr); in __br_vlan_filter_toggle()
739 br->vlan_enabled = val; in __br_vlan_filter_toggle()
740 br_manage_promisc(br); in __br_vlan_filter_toggle()
741 recalculate_group_addr(br); in __br_vlan_filter_toggle()
742 br_recalculate_fwd_mask(br); in __br_vlan_filter_toggle()
747 int br_vlan_filter_toggle(struct net_bridge *br, unsigned long val) in br_vlan_filter_toggle() argument
749 return __br_vlan_filter_toggle(br, val); in br_vlan_filter_toggle()
754 struct net_bridge *br = netdev_priv(dev); in br_vlan_enabled() local
756 return !!br->vlan_enabled; in br_vlan_enabled()
760 int __br_vlan_set_proto(struct net_bridge *br, __be16 proto) in __br_vlan_set_proto() argument
768 if (br->vlan_proto == proto) in __br_vlan_set_proto()
772 list_for_each_entry(p, &br->port_list, list) { in __br_vlan_set_proto()
781 oldproto = br->vlan_proto; in __br_vlan_set_proto()
782 br->vlan_proto = proto; in __br_vlan_set_proto()
784 recalculate_group_addr(br); in __br_vlan_set_proto()
785 br_recalculate_fwd_mask(br); in __br_vlan_set_proto()
788 list_for_each_entry(p, &br->port_list, list) { in __br_vlan_set_proto()
800 list_for_each_entry_continue_reverse(p, &br->port_list, list) { in __br_vlan_set_proto()
809 int br_vlan_set_proto(struct net_bridge *br, unsigned long val) in br_vlan_set_proto() argument
814 return __br_vlan_set_proto(br, htons(val)); in br_vlan_set_proto()
817 int br_vlan_set_stats(struct net_bridge *br, unsigned long val) in br_vlan_set_stats() argument
822 br->vlan_stats_enabled = val; in br_vlan_set_stats()
846 static void br_vlan_disable_default_pvid(struct net_bridge *br) in br_vlan_disable_default_pvid() argument
849 u16 pvid = br->default_pvid; in br_vlan_disable_default_pvid()
854 if (vlan_default_pvid(br_vlan_group(br), pvid)) in br_vlan_disable_default_pvid()
855 br_vlan_delete(br, pvid); in br_vlan_disable_default_pvid()
857 list_for_each_entry(p, &br->port_list, list) { in br_vlan_disable_default_pvid()
862 br->default_pvid = 0; in br_vlan_disable_default_pvid()
865 int __br_vlan_set_default_pvid(struct net_bridge *br, u16 pvid) in __br_vlan_set_default_pvid() argument
876 br_vlan_disable_default_pvid(br); in __br_vlan_set_default_pvid()
885 old_pvid = br->default_pvid; in __br_vlan_set_default_pvid()
890 vg = br_vlan_group(br); in __br_vlan_set_default_pvid()
894 err = br_vlan_add(br, pvid, in __br_vlan_set_default_pvid()
901 br_vlan_delete(br, old_pvid); in __br_vlan_set_default_pvid()
905 list_for_each_entry(p, &br->port_list, list) { in __br_vlan_set_default_pvid()
925 br->default_pvid = pvid; in __br_vlan_set_default_pvid()
932 list_for_each_entry_continue_reverse(p, &br->port_list, list) { in __br_vlan_set_default_pvid()
946 br_vlan_add(br, old_pvid, in __br_vlan_set_default_pvid()
951 br_vlan_delete(br, pvid); in __br_vlan_set_default_pvid()
956 int br_vlan_set_default_pvid(struct net_bridge *br, unsigned long val) in br_vlan_set_default_pvid() argument
964 if (pvid == br->default_pvid) in br_vlan_set_default_pvid()
968 if (br->vlan_enabled) { in br_vlan_set_default_pvid()
973 err = __br_vlan_set_default_pvid(br, pvid); in br_vlan_set_default_pvid()
978 int br_vlan_init(struct net_bridge *br) in br_vlan_init() argument
994 br->vlan_proto = htons(ETH_P_8021Q); in br_vlan_init()
995 br->default_pvid = 1; in br_vlan_init()
996 rcu_assign_pointer(br->vlgrp, vg); in br_vlan_init()
997 ret = br_vlan_add(br, 1, in br_vlan_init()
1019 .orig_dev = p->br->dev, in nbp_vlan_init()
1022 .u.vlan_filtering = p->br->vlan_enabled, in nbp_vlan_init()
1043 if (p->br->default_pvid) { in nbp_vlan_init()
1046 ret = nbp_vlan_add(p, p->br->default_pvid, in nbp_vlan_init()
1120 br_fdb_find_delete_local(port->br, port, port->dev->dev_addr, vid); in nbp_vlan_delete()
1121 br_fdb_delete_by_port(port->br, port, vid, 0); in nbp_vlan_delete()