Lines Matching refs:br

69 		vg = br_vlan_group(v->br);  in __vlan_add_flags()
86 static int __vlan_vid_add(struct net_device *dev, struct net_bridge *br, in __vlan_vid_add() argument
97 return vlan_vid_add(dev, br->vlan_proto, v->vid); in __vlan_vid_add()
109 vg = br_vlan_group(v->br); in __vlan_add_list()
129 static int __vlan_vid_del(struct net_device *dev, struct net_bridge *br, in __vlan_vid_del() argument
139 vlan_vid_del(dev, br->vlan_proto, v->vid); in __vlan_vid_del()
147 br_vlan_get_master(struct net_bridge *br, u16 vid, in br_vlan_get_master() argument
153 vg = br_vlan_group(br); in br_vlan_get_master()
159 if (br_vlan_add(br, vid, 0, &changed, extack)) in br_vlan_get_master()
190 vg = br_vlan_group(masterv->br); in br_vlan_put_master()
230 struct net_bridge *br; in __vlan_add() local
234 br = v->br; in __vlan_add()
235 dev = br->dev; in __vlan_add()
236 vg = br_vlan_group(br); in __vlan_add()
239 br = p->br; in __vlan_add()
249 err = __vlan_vid_add(dev, br, v, flags, extack); in __vlan_add()
257 err = br_vlan_add(br, v->vid, in __vlan_add()
264 br_vlan_notify(br, NULL, v->vid, 0, in __vlan_add()
268 masterv = br_vlan_get_master(br, v->vid, extack); in __vlan_add()
274 if (br_opt_get(br, BROPT_VLAN_STATS_PER_PORT)) { in __vlan_add()
292 err = br_fdb_insert(br, p, dev->dev_addr, v->vid); in __vlan_add()
294 br_err(br, "failed insert local address into bridge forwarding table\n"); in __vlan_add()
318 br_fdb_find_delete_local(br, p, dev->dev_addr, v->vid); in __vlan_add()
324 __vlan_vid_del(dev, br, v); in __vlan_add()
348 vg = br_vlan_group(v->br); in __vlan_del()
357 err = __vlan_vid_del(p->dev, p->br, v); in __vlan_del()
361 err = br_switchdev_port_vlan_del(v->br->dev, v->vid); in __vlan_del()
394 static void __vlan_flush(const struct net_bridge *br, in __vlan_flush() argument
408 br_vlan_notify(br, p, v_start, v_end, RTM_DELVLAN); in __vlan_flush()
418 br_vlan_notify(br, p, v_start, v_end, RTM_DELVLAN); in __vlan_flush()
421 struct sk_buff *br_handle_vlan(struct net_bridge *br, in br_handle_vlan() argument
446 if ((br->dev->flags & IFF_PROMISC) && skb->dev == br->dev) { in br_handle_vlan()
453 if (br_opt_get(br, BROPT_VLAN_STATS_ENABLED)) { in br_handle_vlan()
474 static bool __allowed_ingress(const struct net_bridge *br, in __allowed_ingress() argument
489 skb->protocol == br->vlan_proto)) { in __allowed_ingress()
497 if (skb->vlan_proto != br->vlan_proto) { in __allowed_ingress()
533 __vlan_hwaccel_put_tag(skb, br->vlan_proto, pvid); in __allowed_ingress()
543 if (!br_opt_get(br, BROPT_VLAN_STATS_ENABLED)) { in __allowed_ingress()
562 if (br_opt_get(br, BROPT_VLAN_STATS_ENABLED)) { in __allowed_ingress()
577 bool br_allowed_ingress(const struct net_bridge *br, in br_allowed_ingress() argument
584 if (!br_opt_get(br, BROPT_VLAN_ENABLED)) { in br_allowed_ingress()
589 return __allowed_ingress(br, vg, skb, vid, state); in br_allowed_ingress()
616 struct net_bridge *br = p->br; in br_should_learn() local
620 if (!br_opt_get(br, BROPT_VLAN_ENABLED)) in br_should_learn()
627 if (!br_vlan_get_tag(skb, vid) && skb->vlan_proto != br->vlan_proto) in br_should_learn()
646 static int br_vlan_add_existing(struct net_bridge *br, in br_vlan_add_existing() argument
654 err = br_switchdev_port_vlan_add(br->dev, vlan->vid, flags, extack); in br_vlan_add_existing()
665 err = br_fdb_insert(br, NULL, br->dev->dev_addr, in br_vlan_add_existing()
668 br_err(br, "failed to insert local address into bridge forwarding table\n"); in br_vlan_add_existing()
685 br_switchdev_port_vlan_del(br->dev, vlan->vid); in br_vlan_add_existing()
693 int br_vlan_add(struct net_bridge *br, u16 vid, u16 flags, bool *changed, in br_vlan_add() argument
703 vg = br_vlan_group(br); in br_vlan_add()
706 return br_vlan_add_existing(br, vg, vlan, flags, changed, in br_vlan_add()
721 vlan->br = br; in br_vlan_add()
738 int br_vlan_delete(struct net_bridge *br, u16 vid) in br_vlan_delete() argument
745 vg = br_vlan_group(br); in br_vlan_delete()
750 br_fdb_find_delete_local(br, NULL, br->dev->dev_addr, vid); in br_vlan_delete()
751 br_fdb_delete_by_port(br, NULL, vid, 0); in br_vlan_delete()
758 void br_vlan_flush(struct net_bridge *br) in br_vlan_flush() argument
764 vg = br_vlan_group(br); in br_vlan_flush()
765 __vlan_flush(br, NULL, vg); in br_vlan_flush()
766 RCU_INIT_POINTER(br->vlgrp, NULL); in br_vlan_flush()
780 static void recalculate_group_addr(struct net_bridge *br) in recalculate_group_addr() argument
782 if (br_opt_get(br, BROPT_GROUP_ADDR_SET)) in recalculate_group_addr()
785 spin_lock_bh(&br->lock); in recalculate_group_addr()
786 if (!br_opt_get(br, BROPT_VLAN_ENABLED) || in recalculate_group_addr()
787 br->vlan_proto == htons(ETH_P_8021Q)) { in recalculate_group_addr()
789 br->group_addr[5] = 0x00; in recalculate_group_addr()
792 br->group_addr[5] = 0x08; in recalculate_group_addr()
794 spin_unlock_bh(&br->lock); in recalculate_group_addr()
798 void br_recalculate_fwd_mask(struct net_bridge *br) in br_recalculate_fwd_mask() argument
800 if (!br_opt_get(br, BROPT_VLAN_ENABLED) || in br_recalculate_fwd_mask()
801 br->vlan_proto == htons(ETH_P_8021Q)) in br_recalculate_fwd_mask()
802 br->group_fwd_mask_required = BR_GROUPFWD_DEFAULT; in br_recalculate_fwd_mask()
804 br->group_fwd_mask_required = BR_GROUPFWD_8021AD & in br_recalculate_fwd_mask()
805 ~(1u << br->group_addr[5]); in br_recalculate_fwd_mask()
808 int __br_vlan_filter_toggle(struct net_bridge *br, unsigned long val) in __br_vlan_filter_toggle() argument
811 .orig_dev = br->dev, in __br_vlan_filter_toggle()
818 if (br_opt_get(br, BROPT_VLAN_ENABLED) == !!val) in __br_vlan_filter_toggle()
821 err = switchdev_port_attr_set(br->dev, &attr); in __br_vlan_filter_toggle()
825 br_opt_toggle(br, BROPT_VLAN_ENABLED, !!val); in __br_vlan_filter_toggle()
826 br_manage_promisc(br); in __br_vlan_filter_toggle()
827 recalculate_group_addr(br); in __br_vlan_filter_toggle()
828 br_recalculate_fwd_mask(br); in __br_vlan_filter_toggle()
833 int br_vlan_filter_toggle(struct net_bridge *br, unsigned long val) in br_vlan_filter_toggle() argument
835 return __br_vlan_filter_toggle(br, val); in br_vlan_filter_toggle()
840 struct net_bridge *br = netdev_priv(dev); in br_vlan_enabled() local
842 return br_opt_get(br, BROPT_VLAN_ENABLED); in br_vlan_enabled()
848 struct net_bridge *br = netdev_priv(dev); in br_vlan_get_proto() local
850 *p_proto = ntohs(br->vlan_proto); in br_vlan_get_proto()
856 int __br_vlan_set_proto(struct net_bridge *br, __be16 proto) in __br_vlan_set_proto() argument
864 if (br->vlan_proto == proto) in __br_vlan_set_proto()
868 list_for_each_entry(p, &br->port_list, list) { in __br_vlan_set_proto()
877 oldproto = br->vlan_proto; in __br_vlan_set_proto()
878 br->vlan_proto = proto; in __br_vlan_set_proto()
880 recalculate_group_addr(br); in __br_vlan_set_proto()
881 br_recalculate_fwd_mask(br); in __br_vlan_set_proto()
884 list_for_each_entry(p, &br->port_list, list) { in __br_vlan_set_proto()
896 list_for_each_entry_continue_reverse(p, &br->port_list, list) { in __br_vlan_set_proto()
905 int br_vlan_set_proto(struct net_bridge *br, unsigned long val) in br_vlan_set_proto() argument
910 return __br_vlan_set_proto(br, htons(val)); in br_vlan_set_proto()
913 int br_vlan_set_stats(struct net_bridge *br, unsigned long val) in br_vlan_set_stats() argument
918 br_opt_toggle(br, BROPT_VLAN_STATS_ENABLED, !!val); in br_vlan_set_stats()
927 int br_vlan_set_stats_per_port(struct net_bridge *br, unsigned long val) in br_vlan_set_stats_per_port() argument
932 list_for_each_entry(p, &br->port_list, list) { in br_vlan_set_stats_per_port()
942 br_opt_toggle(br, BROPT_VLAN_STATS_PER_PORT, !!val); in br_vlan_set_stats_per_port()
966 static void br_vlan_disable_default_pvid(struct net_bridge *br) in br_vlan_disable_default_pvid() argument
969 u16 pvid = br->default_pvid; in br_vlan_disable_default_pvid()
974 if (vlan_default_pvid(br_vlan_group(br), pvid)) { in br_vlan_disable_default_pvid()
975 if (!br_vlan_delete(br, pvid)) in br_vlan_disable_default_pvid()
976 br_vlan_notify(br, NULL, pvid, 0, RTM_DELVLAN); in br_vlan_disable_default_pvid()
979 list_for_each_entry(p, &br->port_list, list) { in br_vlan_disable_default_pvid()
982 br_vlan_notify(br, p, pvid, 0, RTM_DELVLAN); in br_vlan_disable_default_pvid()
985 br->default_pvid = 0; in br_vlan_disable_default_pvid()
988 int __br_vlan_set_default_pvid(struct net_bridge *br, u16 pvid, in __br_vlan_set_default_pvid() argument
1000 br_vlan_disable_default_pvid(br); in __br_vlan_set_default_pvid()
1008 old_pvid = br->default_pvid; in __br_vlan_set_default_pvid()
1013 vg = br_vlan_group(br); in __br_vlan_set_default_pvid()
1017 err = br_vlan_add(br, pvid, in __br_vlan_set_default_pvid()
1025 if (br_vlan_delete(br, old_pvid)) in __br_vlan_set_default_pvid()
1026 br_vlan_notify(br, NULL, old_pvid, 0, RTM_DELVLAN); in __br_vlan_set_default_pvid()
1027 br_vlan_notify(br, NULL, pvid, 0, RTM_NEWVLAN); in __br_vlan_set_default_pvid()
1031 list_for_each_entry(p, &br->port_list, list) { in __br_vlan_set_default_pvid()
1048 br_vlan_notify(br, p, old_pvid, 0, RTM_DELVLAN); in __br_vlan_set_default_pvid()
1049 br_vlan_notify(p->br, p, pvid, 0, RTM_NEWVLAN); in __br_vlan_set_default_pvid()
1053 br->default_pvid = pvid; in __br_vlan_set_default_pvid()
1060 list_for_each_entry_continue_reverse(p, &br->port_list, list) { in __br_vlan_set_default_pvid()
1069 br_vlan_notify(p->br, p, old_pvid, 0, RTM_NEWVLAN); in __br_vlan_set_default_pvid()
1072 br_vlan_notify(br, p, pvid, 0, RTM_DELVLAN); in __br_vlan_set_default_pvid()
1077 br_vlan_add(br, old_pvid, in __br_vlan_set_default_pvid()
1082 br_vlan_notify(br, NULL, old_pvid, 0, RTM_NEWVLAN); in __br_vlan_set_default_pvid()
1084 br_vlan_delete(br, pvid); in __br_vlan_set_default_pvid()
1085 br_vlan_notify(br, NULL, pvid, 0, RTM_DELVLAN); in __br_vlan_set_default_pvid()
1090 int br_vlan_set_default_pvid(struct net_bridge *br, unsigned long val) in br_vlan_set_default_pvid() argument
1098 if (pvid == br->default_pvid) in br_vlan_set_default_pvid()
1102 if (br_opt_get(br, BROPT_VLAN_ENABLED)) { in br_vlan_set_default_pvid()
1107 err = __br_vlan_set_default_pvid(br, pvid, NULL); in br_vlan_set_default_pvid()
1112 int br_vlan_init(struct net_bridge *br) in br_vlan_init() argument
1127 br->vlan_proto = htons(ETH_P_8021Q); in br_vlan_init()
1128 br->default_pvid = 1; in br_vlan_init()
1129 rcu_assign_pointer(br->vlgrp, vg); in br_vlan_init()
1145 .orig_dev = p->br->dev, in nbp_vlan_init()
1148 .u.vlan_filtering = br_opt_get(p->br, BROPT_VLAN_ENABLED), in nbp_vlan_init()
1169 if (p->br->default_pvid) { in nbp_vlan_init()
1172 ret = nbp_vlan_add(p, p->br->default_pvid, in nbp_vlan_init()
1178 br_vlan_notify(p->br, p, p->br->default_pvid, 0, RTM_NEWVLAN); in nbp_vlan_init()
1247 br_fdb_find_delete_local(port->br, port, port->dev->dev_addr, vid); in nbp_vlan_delete()
1248 br_fdb_delete_by_port(port->br, port, vid, 0); in nbp_vlan_delete()
1260 __vlan_flush(port->br, port, vg); in nbp_vlan_flush()
1425 static void br_vlan_set_vlan_dev_state(const struct net_bridge *br, in br_vlan_set_vlan_dev_state() argument
1433 if (!netif_carrier_ok(br->dev)) { in br_vlan_set_vlan_dev_state()
1438 list_for_each_entry(p, &br->port_list, list) { in br_vlan_set_vlan_dev_state()
1459 vlan_dev = br_vlan_get_upper_bind_vlan_dev(p->br->dev, in br_vlan_set_all_vlan_dev_state()
1463 if (netif_carrier_ok(p->br->dev)) in br_vlan_set_all_vlan_dev_state()
1466 br_vlan_set_vlan_dev_state(p->br, vlan_dev); in br_vlan_set_all_vlan_dev_state()
1476 struct net_bridge *br = netdev_priv(dev); in br_vlan_upper_change() local
1482 br_vlan_set_vlan_dev_state(br, upper_dev); in br_vlan_upper_change()
1483 br_opt_toggle(br, BROPT_VLAN_BRIDGE_BINDING, true); in br_vlan_upper_change()
1485 br_opt_toggle(br, BROPT_VLAN_BRIDGE_BINDING, in br_vlan_upper_change()
1491 struct net_bridge *br; member
1500 br_vlan_set_vlan_dev_state(data->br, vlan_dev); in br_vlan_link_state_change_fn()
1506 struct net_bridge *br) in br_vlan_link_state_change() argument
1509 .br = br in br_vlan_link_state_change()
1526 if (!br_opt_get(p->br, BROPT_VLAN_BRIDGE_BINDING)) in nbp_vlan_set_vlan_dev_state()
1529 vlan_dev = br_vlan_get_upper_bind_vlan_dev(p->br->dev, vid); in nbp_vlan_set_vlan_dev_state()
1531 br_vlan_set_vlan_dev_state(p->br, vlan_dev); in nbp_vlan_set_vlan_dev_state()
1538 struct net_bridge *br = netdev_priv(dev); in br_vlan_bridge_event() local
1544 ret = br_vlan_add(br, br->default_pvid, in br_vlan_bridge_event()
1551 changed = !br_vlan_delete(br, br->default_pvid); in br_vlan_bridge_event()
1561 if (!br_opt_get(br, BROPT_VLAN_BRIDGE_BINDING)) in br_vlan_bridge_event()
1563 br_vlan_link_state_change(dev, br); in br_vlan_bridge_event()
1567 br_vlan_notify(br, NULL, br->default_pvid, 0, vlcmd); in br_vlan_bridge_event()
1575 if (!br_opt_get(p->br, BROPT_VLAN_BRIDGE_BINDING)) in br_vlan_port_event()
1671 void br_vlan_notify(const struct net_bridge *br, in br_vlan_notify() argument
1694 ifindex = br->dev->ifindex; in br_vlan_notify()
1695 vg = br_vlan_group(br); in br_vlan_notify()
1696 net = dev_net(br->dev); in br_vlan_notify()
1763 struct net_bridge *br; in br_vlan_dump_dev() local
1771 br = netdev_priv(dev); in br_vlan_dump_dev()
1772 vg = br_vlan_group_rcu(br); in br_vlan_dump_dev()
1779 br = p->br; in br_vlan_dump_dev()
1919 struct net_bridge *br; in br_vlan_rtm_process_one() local
1922 br = netdev_priv(dev); in br_vlan_rtm_process_one()
1923 vg = br_vlan_group(br); in br_vlan_rtm_process_one()
1928 br = p->br; in br_vlan_rtm_process_one()
1984 err = br_process_vlan_info(br, p, cmdmap, vinfo, &tmp_last, in br_vlan_rtm_process_one()
1989 br_ifinfo_notify(cmdmap, br, p); in br_vlan_rtm_process_one()
2007 err = br_vlan_process_options(br, p, range_start, range_end, in br_vlan_rtm_process_one()