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
859 .orig_dev = br->dev, in __br_vlan_set_proto()
868 __be16 oldproto = br->vlan_proto; in __br_vlan_set_proto()
870 if (br->vlan_proto == proto) in __br_vlan_set_proto()
873 err = switchdev_port_attr_set(br->dev, &attr); in __br_vlan_set_proto()
878 list_for_each_entry(p, &br->port_list, list) { in __br_vlan_set_proto()
889 br->vlan_proto = proto; in __br_vlan_set_proto()
891 recalculate_group_addr(br); in __br_vlan_set_proto()
892 br_recalculate_fwd_mask(br); in __br_vlan_set_proto()
895 list_for_each_entry(p, &br->port_list, list) { in __br_vlan_set_proto()
908 switchdev_port_attr_set(br->dev, &attr); in __br_vlan_set_proto()
916 list_for_each_entry_continue_reverse(p, &br->port_list, list) { in __br_vlan_set_proto()
928 int br_vlan_set_proto(struct net_bridge *br, unsigned long val) in br_vlan_set_proto() argument
933 return __br_vlan_set_proto(br, htons(val)); in br_vlan_set_proto()
936 int br_vlan_set_stats(struct net_bridge *br, unsigned long val) in br_vlan_set_stats() argument
941 br_opt_toggle(br, BROPT_VLAN_STATS_ENABLED, !!val); in br_vlan_set_stats()
950 int br_vlan_set_stats_per_port(struct net_bridge *br, unsigned long val) in br_vlan_set_stats_per_port() argument
955 list_for_each_entry(p, &br->port_list, list) { in br_vlan_set_stats_per_port()
965 br_opt_toggle(br, BROPT_VLAN_STATS_PER_PORT, !!val); in br_vlan_set_stats_per_port()
989 static void br_vlan_disable_default_pvid(struct net_bridge *br) in br_vlan_disable_default_pvid() argument
992 u16 pvid = br->default_pvid; in br_vlan_disable_default_pvid()
997 if (vlan_default_pvid(br_vlan_group(br), pvid)) { in br_vlan_disable_default_pvid()
998 if (!br_vlan_delete(br, pvid)) in br_vlan_disable_default_pvid()
999 br_vlan_notify(br, NULL, pvid, 0, RTM_DELVLAN); in br_vlan_disable_default_pvid()
1002 list_for_each_entry(p, &br->port_list, list) { in br_vlan_disable_default_pvid()
1005 br_vlan_notify(br, p, pvid, 0, RTM_DELVLAN); in br_vlan_disable_default_pvid()
1008 br->default_pvid = 0; in br_vlan_disable_default_pvid()
1011 int __br_vlan_set_default_pvid(struct net_bridge *br, u16 pvid, in __br_vlan_set_default_pvid() argument
1023 br_vlan_disable_default_pvid(br); in __br_vlan_set_default_pvid()
1031 old_pvid = br->default_pvid; in __br_vlan_set_default_pvid()
1036 vg = br_vlan_group(br); in __br_vlan_set_default_pvid()
1040 err = br_vlan_add(br, pvid, in __br_vlan_set_default_pvid()
1048 if (br_vlan_delete(br, old_pvid)) in __br_vlan_set_default_pvid()
1049 br_vlan_notify(br, NULL, old_pvid, 0, RTM_DELVLAN); in __br_vlan_set_default_pvid()
1050 br_vlan_notify(br, NULL, pvid, 0, RTM_NEWVLAN); in __br_vlan_set_default_pvid()
1054 list_for_each_entry(p, &br->port_list, list) { in __br_vlan_set_default_pvid()
1071 br_vlan_notify(br, p, old_pvid, 0, RTM_DELVLAN); in __br_vlan_set_default_pvid()
1072 br_vlan_notify(p->br, p, pvid, 0, RTM_NEWVLAN); in __br_vlan_set_default_pvid()
1076 br->default_pvid = pvid; in __br_vlan_set_default_pvid()
1083 list_for_each_entry_continue_reverse(p, &br->port_list, list) { in __br_vlan_set_default_pvid()
1092 br_vlan_notify(p->br, p, old_pvid, 0, RTM_NEWVLAN); in __br_vlan_set_default_pvid()
1095 br_vlan_notify(br, p, pvid, 0, RTM_DELVLAN); in __br_vlan_set_default_pvid()
1100 br_vlan_add(br, old_pvid, in __br_vlan_set_default_pvid()
1105 br_vlan_notify(br, NULL, old_pvid, 0, RTM_NEWVLAN); in __br_vlan_set_default_pvid()
1107 br_vlan_delete(br, pvid); in __br_vlan_set_default_pvid()
1108 br_vlan_notify(br, NULL, pvid, 0, RTM_DELVLAN); in __br_vlan_set_default_pvid()
1113 int br_vlan_set_default_pvid(struct net_bridge *br, unsigned long val) in br_vlan_set_default_pvid() argument
1121 if (pvid == br->default_pvid) in br_vlan_set_default_pvid()
1125 if (br_opt_get(br, BROPT_VLAN_ENABLED)) { in br_vlan_set_default_pvid()
1130 err = __br_vlan_set_default_pvid(br, pvid, NULL); in br_vlan_set_default_pvid()
1135 int br_vlan_init(struct net_bridge *br) in br_vlan_init() argument
1150 br->vlan_proto = htons(ETH_P_8021Q); in br_vlan_init()
1151 br->default_pvid = 1; in br_vlan_init()
1152 rcu_assign_pointer(br->vlgrp, vg); in br_vlan_init()
1168 .orig_dev = p->br->dev, in nbp_vlan_init()
1171 .u.vlan_filtering = br_opt_get(p->br, BROPT_VLAN_ENABLED), in nbp_vlan_init()
1192 if (p->br->default_pvid) { in nbp_vlan_init()
1195 ret = nbp_vlan_add(p, p->br->default_pvid, in nbp_vlan_init()
1201 br_vlan_notify(p->br, p, p->br->default_pvid, 0, RTM_NEWVLAN); in nbp_vlan_init()
1270 br_fdb_find_delete_local(port->br, port, port->dev->dev_addr, vid); in nbp_vlan_delete()
1271 br_fdb_delete_by_port(port->br, port, vid, 0); in nbp_vlan_delete()
1283 __vlan_flush(port->br, port, vg); in nbp_vlan_flush()
1448 static void br_vlan_set_vlan_dev_state(const struct net_bridge *br, in br_vlan_set_vlan_dev_state() argument
1456 if (!netif_carrier_ok(br->dev)) { in br_vlan_set_vlan_dev_state()
1461 list_for_each_entry(p, &br->port_list, list) { in br_vlan_set_vlan_dev_state()
1482 vlan_dev = br_vlan_get_upper_bind_vlan_dev(p->br->dev, in br_vlan_set_all_vlan_dev_state()
1486 if (netif_carrier_ok(p->br->dev)) in br_vlan_set_all_vlan_dev_state()
1489 br_vlan_set_vlan_dev_state(p->br, vlan_dev); in br_vlan_set_all_vlan_dev_state()
1499 struct net_bridge *br = netdev_priv(dev); in br_vlan_upper_change() local
1505 br_vlan_set_vlan_dev_state(br, upper_dev); in br_vlan_upper_change()
1506 br_opt_toggle(br, BROPT_VLAN_BRIDGE_BINDING, true); in br_vlan_upper_change()
1508 br_opt_toggle(br, BROPT_VLAN_BRIDGE_BINDING, in br_vlan_upper_change()
1514 struct net_bridge *br; member
1523 br_vlan_set_vlan_dev_state(data->br, vlan_dev); in br_vlan_link_state_change_fn()
1529 struct net_bridge *br) in br_vlan_link_state_change() argument
1532 .br = br in br_vlan_link_state_change()
1549 if (!br_opt_get(p->br, BROPT_VLAN_BRIDGE_BINDING)) in nbp_vlan_set_vlan_dev_state()
1552 vlan_dev = br_vlan_get_upper_bind_vlan_dev(p->br->dev, vid); in nbp_vlan_set_vlan_dev_state()
1554 br_vlan_set_vlan_dev_state(p->br, vlan_dev); in nbp_vlan_set_vlan_dev_state()
1561 struct net_bridge *br = netdev_priv(dev); in br_vlan_bridge_event() local
1567 ret = br_vlan_add(br, br->default_pvid, in br_vlan_bridge_event()
1574 changed = !br_vlan_delete(br, br->default_pvid); in br_vlan_bridge_event()
1584 if (!br_opt_get(br, BROPT_VLAN_BRIDGE_BINDING)) in br_vlan_bridge_event()
1586 br_vlan_link_state_change(dev, br); in br_vlan_bridge_event()
1590 br_vlan_notify(br, NULL, br->default_pvid, 0, vlcmd); in br_vlan_bridge_event()
1598 if (!br_opt_get(p->br, BROPT_VLAN_BRIDGE_BINDING)) in br_vlan_port_event()
1694 void br_vlan_notify(const struct net_bridge *br, in br_vlan_notify() argument
1717 ifindex = br->dev->ifindex; in br_vlan_notify()
1718 vg = br_vlan_group(br); in br_vlan_notify()
1719 net = dev_net(br->dev); in br_vlan_notify()
1786 struct net_bridge *br; in br_vlan_dump_dev() local
1794 br = netdev_priv(dev); in br_vlan_dump_dev()
1795 vg = br_vlan_group_rcu(br); in br_vlan_dump_dev()
1802 br = p->br; in br_vlan_dump_dev()
1943 struct net_bridge *br; in br_vlan_rtm_process_one() local
1946 br = netdev_priv(dev); in br_vlan_rtm_process_one()
1947 vg = br_vlan_group(br); in br_vlan_rtm_process_one()
1952 br = p->br; in br_vlan_rtm_process_one()
2008 err = br_process_vlan_info(br, p, cmdmap, vinfo, &tmp_last, in br_vlan_rtm_process_one()
2013 br_ifinfo_notify(cmdmap, br, p); in br_vlan_rtm_process_one()
2031 err = br_vlan_process_options(br, p, range_start, range_end, in br_vlan_rtm_process_one()