Lines Matching refs:br

67 		vg = br_vlan_group(v->br);  in __vlan_add_flags()
84 static int __vlan_vid_add(struct net_device *dev, struct net_bridge *br, in __vlan_vid_add() argument
95 return vlan_vid_add(dev, br->vlan_proto, v->vid); in __vlan_vid_add()
107 vg = br_vlan_group(v->br); in __vlan_add_list()
127 static int __vlan_vid_del(struct net_device *dev, struct net_bridge *br, in __vlan_vid_del() argument
137 vlan_vid_del(dev, br->vlan_proto, v->vid); in __vlan_vid_del()
145 br_vlan_get_master(struct net_bridge *br, u16 vid, in br_vlan_get_master() argument
151 vg = br_vlan_group(br); in br_vlan_get_master()
157 if (br_vlan_add(br, vid, 0, &changed, extack)) in br_vlan_get_master()
188 vg = br_vlan_group(masterv->br); in br_vlan_put_master()
228 struct net_bridge *br; in __vlan_add() local
232 br = v->br; in __vlan_add()
233 dev = br->dev; in __vlan_add()
234 vg = br_vlan_group(br); in __vlan_add()
237 br = p->br; in __vlan_add()
247 err = __vlan_vid_add(dev, br, v, flags, extack); in __vlan_add()
255 err = br_vlan_add(br, v->vid, in __vlan_add()
262 masterv = br_vlan_get_master(br, v->vid, extack); in __vlan_add()
266 if (br_opt_get(br, BROPT_VLAN_STATS_PER_PORT)) { in __vlan_add()
284 err = br_fdb_insert(br, p, dev->dev_addr, v->vid); in __vlan_add()
286 br_err(br, "failed insert local address into bridge forwarding table\n"); in __vlan_add()
307 br_fdb_find_delete_local(br, p, dev->dev_addr, v->vid); in __vlan_add()
313 __vlan_vid_del(dev, br, v); in __vlan_add()
337 vg = br_vlan_group(v->br); in __vlan_del()
346 err = __vlan_vid_del(p->dev, p->br, v); in __vlan_del()
350 err = br_switchdev_port_vlan_del(v->br->dev, v->vid); in __vlan_del()
392 struct sk_buff *br_handle_vlan(struct net_bridge *br, in br_handle_vlan() argument
417 if ((br->dev->flags & IFF_PROMISC) && skb->dev == br->dev) { in br_handle_vlan()
424 if (br_opt_get(br, BROPT_VLAN_STATS_ENABLED)) { in br_handle_vlan()
445 static bool __allowed_ingress(const struct net_bridge *br, in __allowed_ingress() argument
459 skb->protocol == br->vlan_proto)) { in __allowed_ingress()
467 if (skb->vlan_proto != br->vlan_proto) { in __allowed_ingress()
503 __vlan_hwaccel_put_tag(skb, br->vlan_proto, pvid); in __allowed_ingress()
513 if (!br_opt_get(br, BROPT_VLAN_STATS_ENABLED)) in __allowed_ingress()
520 if (br_opt_get(br, BROPT_VLAN_STATS_ENABLED)) { in __allowed_ingress()
535 bool br_allowed_ingress(const struct net_bridge *br, in br_allowed_ingress() argument
542 if (!br_opt_get(br, BROPT_VLAN_ENABLED)) { in br_allowed_ingress()
547 return __allowed_ingress(br, vg, skb, vid); in br_allowed_ingress()
573 struct net_bridge *br = p->br; in br_should_learn() local
576 if (!br_opt_get(br, BROPT_VLAN_ENABLED)) in br_should_learn()
583 if (!br_vlan_get_tag(skb, vid) && skb->vlan_proto != br->vlan_proto) in br_should_learn()
600 static int br_vlan_add_existing(struct net_bridge *br, in br_vlan_add_existing() argument
608 err = br_switchdev_port_vlan_add(br->dev, vlan->vid, flags, extack); in br_vlan_add_existing()
619 err = br_fdb_insert(br, NULL, br->dev->dev_addr, in br_vlan_add_existing()
622 br_err(br, "failed to insert local address into bridge forwarding table\n"); in br_vlan_add_existing()
639 br_switchdev_port_vlan_del(br->dev, vlan->vid); in br_vlan_add_existing()
647 int br_vlan_add(struct net_bridge *br, u16 vid, u16 flags, bool *changed, in br_vlan_add() argument
657 vg = br_vlan_group(br); in br_vlan_add()
660 return br_vlan_add_existing(br, vg, vlan, flags, changed, in br_vlan_add()
675 vlan->br = br; in br_vlan_add()
692 int br_vlan_delete(struct net_bridge *br, u16 vid) in br_vlan_delete() argument
699 vg = br_vlan_group(br); in br_vlan_delete()
704 br_fdb_find_delete_local(br, NULL, br->dev->dev_addr, vid); in br_vlan_delete()
705 br_fdb_delete_by_port(br, NULL, vid, 0); in br_vlan_delete()
712 void br_vlan_flush(struct net_bridge *br) in br_vlan_flush() argument
718 vg = br_vlan_group(br); in br_vlan_flush()
720 RCU_INIT_POINTER(br->vlgrp, NULL); in br_vlan_flush()
734 static void recalculate_group_addr(struct net_bridge *br) in recalculate_group_addr() argument
736 if (br_opt_get(br, BROPT_GROUP_ADDR_SET)) in recalculate_group_addr()
739 spin_lock_bh(&br->lock); in recalculate_group_addr()
740 if (!br_opt_get(br, BROPT_VLAN_ENABLED) || in recalculate_group_addr()
741 br->vlan_proto == htons(ETH_P_8021Q)) { in recalculate_group_addr()
743 br->group_addr[5] = 0x00; in recalculate_group_addr()
746 br->group_addr[5] = 0x08; in recalculate_group_addr()
748 spin_unlock_bh(&br->lock); in recalculate_group_addr()
752 void br_recalculate_fwd_mask(struct net_bridge *br) in br_recalculate_fwd_mask() argument
754 if (!br_opt_get(br, BROPT_VLAN_ENABLED) || in br_recalculate_fwd_mask()
755 br->vlan_proto == htons(ETH_P_8021Q)) in br_recalculate_fwd_mask()
756 br->group_fwd_mask_required = BR_GROUPFWD_DEFAULT; in br_recalculate_fwd_mask()
758 br->group_fwd_mask_required = BR_GROUPFWD_8021AD & in br_recalculate_fwd_mask()
759 ~(1u << br->group_addr[5]); in br_recalculate_fwd_mask()
762 int __br_vlan_filter_toggle(struct net_bridge *br, unsigned long val) in __br_vlan_filter_toggle() argument
765 .orig_dev = br->dev, in __br_vlan_filter_toggle()
772 if (br_opt_get(br, BROPT_VLAN_ENABLED) == !!val) in __br_vlan_filter_toggle()
775 err = switchdev_port_attr_set(br->dev, &attr); in __br_vlan_filter_toggle()
779 br_opt_toggle(br, BROPT_VLAN_ENABLED, !!val); in __br_vlan_filter_toggle()
780 br_manage_promisc(br); in __br_vlan_filter_toggle()
781 recalculate_group_addr(br); in __br_vlan_filter_toggle()
782 br_recalculate_fwd_mask(br); in __br_vlan_filter_toggle()
787 int br_vlan_filter_toggle(struct net_bridge *br, unsigned long val) in br_vlan_filter_toggle() argument
789 return __br_vlan_filter_toggle(br, val); in br_vlan_filter_toggle()
794 struct net_bridge *br = netdev_priv(dev); in br_vlan_enabled() local
796 return br_opt_get(br, BROPT_VLAN_ENABLED); in br_vlan_enabled()
802 struct net_bridge *br = netdev_priv(dev); in br_vlan_get_proto() local
804 *p_proto = ntohs(br->vlan_proto); in br_vlan_get_proto()
810 int __br_vlan_set_proto(struct net_bridge *br, __be16 proto) in __br_vlan_set_proto() argument
818 if (br->vlan_proto == proto) in __br_vlan_set_proto()
822 list_for_each_entry(p, &br->port_list, list) { in __br_vlan_set_proto()
831 oldproto = br->vlan_proto; in __br_vlan_set_proto()
832 br->vlan_proto = proto; in __br_vlan_set_proto()
834 recalculate_group_addr(br); in __br_vlan_set_proto()
835 br_recalculate_fwd_mask(br); in __br_vlan_set_proto()
838 list_for_each_entry(p, &br->port_list, list) { in __br_vlan_set_proto()
850 list_for_each_entry_continue_reverse(p, &br->port_list, list) { in __br_vlan_set_proto()
859 int br_vlan_set_proto(struct net_bridge *br, unsigned long val) in br_vlan_set_proto() argument
864 return __br_vlan_set_proto(br, htons(val)); in br_vlan_set_proto()
867 int br_vlan_set_stats(struct net_bridge *br, unsigned long val) in br_vlan_set_stats() argument
872 br_opt_toggle(br, BROPT_VLAN_STATS_ENABLED, !!val); in br_vlan_set_stats()
881 int br_vlan_set_stats_per_port(struct net_bridge *br, unsigned long val) in br_vlan_set_stats_per_port() argument
886 list_for_each_entry(p, &br->port_list, list) { in br_vlan_set_stats_per_port()
896 br_opt_toggle(br, BROPT_VLAN_STATS_PER_PORT, !!val); in br_vlan_set_stats_per_port()
920 static void br_vlan_disable_default_pvid(struct net_bridge *br) in br_vlan_disable_default_pvid() argument
923 u16 pvid = br->default_pvid; in br_vlan_disable_default_pvid()
928 if (vlan_default_pvid(br_vlan_group(br), pvid)) in br_vlan_disable_default_pvid()
929 br_vlan_delete(br, pvid); in br_vlan_disable_default_pvid()
931 list_for_each_entry(p, &br->port_list, list) { in br_vlan_disable_default_pvid()
936 br->default_pvid = 0; in br_vlan_disable_default_pvid()
939 int __br_vlan_set_default_pvid(struct net_bridge *br, u16 pvid, in __br_vlan_set_default_pvid() argument
951 br_vlan_disable_default_pvid(br); in __br_vlan_set_default_pvid()
959 old_pvid = br->default_pvid; in __br_vlan_set_default_pvid()
964 vg = br_vlan_group(br); in __br_vlan_set_default_pvid()
968 err = br_vlan_add(br, pvid, in __br_vlan_set_default_pvid()
975 br_vlan_delete(br, old_pvid); in __br_vlan_set_default_pvid()
979 list_for_each_entry(p, &br->port_list, list) { in __br_vlan_set_default_pvid()
999 br->default_pvid = pvid; in __br_vlan_set_default_pvid()
1006 list_for_each_entry_continue_reverse(p, &br->port_list, list) { in __br_vlan_set_default_pvid()
1020 br_vlan_add(br, old_pvid, in __br_vlan_set_default_pvid()
1025 br_vlan_delete(br, pvid); in __br_vlan_set_default_pvid()
1030 int br_vlan_set_default_pvid(struct net_bridge *br, unsigned long val) in br_vlan_set_default_pvid() argument
1038 if (pvid == br->default_pvid) in br_vlan_set_default_pvid()
1042 if (br_opt_get(br, BROPT_VLAN_ENABLED)) { in br_vlan_set_default_pvid()
1047 err = __br_vlan_set_default_pvid(br, pvid, NULL); in br_vlan_set_default_pvid()
1052 int br_vlan_init(struct net_bridge *br) in br_vlan_init() argument
1067 br->vlan_proto = htons(ETH_P_8021Q); in br_vlan_init()
1068 br->default_pvid = 1; in br_vlan_init()
1069 rcu_assign_pointer(br->vlgrp, vg); in br_vlan_init()
1085 .orig_dev = p->br->dev, in nbp_vlan_init()
1088 .u.vlan_filtering = br_opt_get(p->br, BROPT_VLAN_ENABLED), in nbp_vlan_init()
1109 if (p->br->default_pvid) { in nbp_vlan_init()
1112 ret = nbp_vlan_add(p, p->br->default_pvid, in nbp_vlan_init()
1186 br_fdb_find_delete_local(port->br, port, port->dev->dev_addr, vid); in nbp_vlan_delete()
1187 br_fdb_delete_by_port(port->br, port, vid, 0); in nbp_vlan_delete()
1354 static void br_vlan_set_vlan_dev_state(const struct net_bridge *br, in br_vlan_set_vlan_dev_state() argument
1362 if (!netif_carrier_ok(br->dev)) { in br_vlan_set_vlan_dev_state()
1367 list_for_each_entry(p, &br->port_list, list) { in br_vlan_set_vlan_dev_state()
1388 vlan_dev = br_vlan_get_upper_bind_vlan_dev(p->br->dev, in br_vlan_set_all_vlan_dev_state()
1392 if (netif_carrier_ok(p->br->dev)) in br_vlan_set_all_vlan_dev_state()
1395 br_vlan_set_vlan_dev_state(p->br, vlan_dev); in br_vlan_set_all_vlan_dev_state()
1405 struct net_bridge *br = netdev_priv(dev); in br_vlan_upper_change() local
1411 br_vlan_set_vlan_dev_state(br, upper_dev); in br_vlan_upper_change()
1412 br_opt_toggle(br, BROPT_VLAN_BRIDGE_BINDING, true); in br_vlan_upper_change()
1414 br_opt_toggle(br, BROPT_VLAN_BRIDGE_BINDING, in br_vlan_upper_change()
1420 struct net_bridge *br; member
1429 br_vlan_set_vlan_dev_state(data->br, vlan_dev); in br_vlan_link_state_change_fn()
1435 struct net_bridge *br) in br_vlan_link_state_change() argument
1438 .br = br in br_vlan_link_state_change()
1452 if (!br_opt_get(p->br, BROPT_VLAN_BRIDGE_BINDING)) in nbp_vlan_set_vlan_dev_state()
1455 vlan_dev = br_vlan_get_upper_bind_vlan_dev(p->br->dev, vid); in nbp_vlan_set_vlan_dev_state()
1457 br_vlan_set_vlan_dev_state(p->br, vlan_dev); in nbp_vlan_set_vlan_dev_state()
1464 struct net_bridge *br = netdev_priv(dev); in br_vlan_bridge_event() local
1470 ret = br_vlan_add(br, br->default_pvid, in br_vlan_bridge_event()
1476 br_vlan_delete(br, br->default_pvid); in br_vlan_bridge_event()
1485 if (!br_opt_get(br, BROPT_VLAN_BRIDGE_BINDING)) in br_vlan_bridge_event()
1487 br_vlan_link_state_change(dev, br); in br_vlan_bridge_event()
1497 if (!br_opt_get(p->br, BROPT_VLAN_BRIDGE_BINDING)) in br_vlan_port_event()