Lines Matching refs:br
69 vg = br_vlan_group(v->br);
86 static int __vlan_vid_add(struct net_device *dev, struct net_bridge *br,
97 return vlan_vid_add(dev, br->vlan_proto, v->vid);
109 vg = br_vlan_group(v->br);
129 static int __vlan_vid_del(struct net_device *dev, struct net_bridge *br,
139 vlan_vid_del(dev, br->vlan_proto, v->vid);
147 br_vlan_get_master(struct net_bridge *br, u16 vid,
153 vg = br_vlan_group(br);
159 if (br_vlan_add(br, vid, 0, &changed, extack))
190 vg = br_vlan_group(masterv->br);
230 struct net_bridge *br;
234 br = v->br;
235 dev = br->dev;
236 vg = br_vlan_group(br);
239 br = p->br;
249 err = __vlan_vid_add(dev, br, v, flags, extack);
257 err = br_vlan_add(br, v->vid,
264 br_vlan_notify(br, NULL, v->vid, 0,
268 masterv = br_vlan_get_master(br, v->vid, extack);
274 if (br_opt_get(br, BROPT_VLAN_STATS_PER_PORT)) {
292 err = br_fdb_insert(br, p, dev->dev_addr, v->vid);
294 br_err(br, "failed insert local address into bridge forwarding table\n");
318 br_fdb_find_delete_local(br, p, dev->dev_addr, v->vid);
324 __vlan_vid_del(dev, br, v);
348 vg = br_vlan_group(v->br);
357 err = __vlan_vid_del(p->dev, p->br, v);
361 err = br_switchdev_port_vlan_del(v->br->dev, v->vid);
394 static void __vlan_flush(const struct net_bridge *br,
408 br_vlan_notify(br, p, v_start, v_end, RTM_DELVLAN);
418 br_vlan_notify(br, p, v_start, v_end, RTM_DELVLAN);
421 struct sk_buff *br_handle_vlan(struct net_bridge *br,
446 if ((br->dev->flags & IFF_PROMISC) && skb->dev == br->dev) {
453 if (br_opt_get(br, BROPT_VLAN_STATS_ENABLED)) {
474 static bool __allowed_ingress(const struct net_bridge *br,
489 skb->protocol == br->vlan_proto)) {
497 if (skb->vlan_proto != br->vlan_proto) {
533 __vlan_hwaccel_put_tag(skb, br->vlan_proto, pvid);
543 if (!br_opt_get(br, BROPT_VLAN_STATS_ENABLED)) {
562 if (br_opt_get(br, BROPT_VLAN_STATS_ENABLED)) {
577 bool br_allowed_ingress(const struct net_bridge *br,
584 if (!br_opt_get(br, BROPT_VLAN_ENABLED)) {
589 return __allowed_ingress(br, vg, skb, vid, state);
616 struct net_bridge *br = p->br;
620 if (!br_opt_get(br, BROPT_VLAN_ENABLED))
627 if (!br_vlan_get_tag(skb, vid) && skb->vlan_proto != br->vlan_proto)
646 static int br_vlan_add_existing(struct net_bridge *br,
654 err = br_switchdev_port_vlan_add(br->dev, vlan->vid, flags, extack);
665 err = br_fdb_insert(br, NULL, br->dev->dev_addr,
668 br_err(br, "failed to insert local address into bridge forwarding table\n");
685 br_switchdev_port_vlan_del(br->dev, vlan->vid);
693 int br_vlan_add(struct net_bridge *br, u16 vid, u16 flags, bool *changed,
703 vg = br_vlan_group(br);
706 return br_vlan_add_existing(br, vg, vlan, flags, changed,
721 vlan->br = br;
738 int br_vlan_delete(struct net_bridge *br, u16 vid)
745 vg = br_vlan_group(br);
750 br_fdb_find_delete_local(br, NULL, br->dev->dev_addr, vid);
751 br_fdb_delete_by_port(br, NULL, vid, 0);
758 void br_vlan_flush(struct net_bridge *br)
764 vg = br_vlan_group(br);
765 __vlan_flush(br, NULL, vg);
766 RCU_INIT_POINTER(br->vlgrp, NULL);
780 static void recalculate_group_addr(struct net_bridge *br)
782 if (br_opt_get(br, BROPT_GROUP_ADDR_SET))
785 spin_lock_bh(&br->lock);
786 if (!br_opt_get(br, BROPT_VLAN_ENABLED) ||
787 br->vlan_proto == htons(ETH_P_8021Q)) {
789 br->group_addr[5] = 0x00;
792 br->group_addr[5] = 0x08;
794 spin_unlock_bh(&br->lock);
798 void br_recalculate_fwd_mask(struct net_bridge *br)
800 if (!br_opt_get(br, BROPT_VLAN_ENABLED) ||
801 br->vlan_proto == htons(ETH_P_8021Q))
802 br->group_fwd_mask_required = BR_GROUPFWD_DEFAULT;
804 br->group_fwd_mask_required = BR_GROUPFWD_8021AD &
805 ~(1u << br->group_addr[5]);
808 int __br_vlan_filter_toggle(struct net_bridge *br, unsigned long val)
811 .orig_dev = br->dev,
818 if (br_opt_get(br, BROPT_VLAN_ENABLED) == !!val)
821 err = switchdev_port_attr_set(br->dev, &attr);
825 br_opt_toggle(br, BROPT_VLAN_ENABLED, !!val);
826 br_manage_promisc(br);
827 recalculate_group_addr(br);
828 br_recalculate_fwd_mask(br);
833 int br_vlan_filter_toggle(struct net_bridge *br, unsigned long val)
835 return __br_vlan_filter_toggle(br, val);
840 struct net_bridge *br = netdev_priv(dev);
842 return br_opt_get(br, BROPT_VLAN_ENABLED);
848 struct net_bridge *br = netdev_priv(dev);
850 *p_proto = ntohs(br->vlan_proto);
856 int __br_vlan_set_proto(struct net_bridge *br, __be16 proto)
859 .orig_dev = br->dev,
868 __be16 oldproto = br->vlan_proto;
870 if (br->vlan_proto == proto)
873 err = switchdev_port_attr_set(br->dev, &attr);
878 list_for_each_entry(p, &br->port_list, list) {
889 br->vlan_proto = proto;
891 recalculate_group_addr(br);
892 br_recalculate_fwd_mask(br);
895 list_for_each_entry(p, &br->port_list, list) {
908 switchdev_port_attr_set(br->dev, &attr);
916 list_for_each_entry_continue_reverse(p, &br->port_list, list) {
928 int br_vlan_set_proto(struct net_bridge *br, unsigned long val)
933 return __br_vlan_set_proto(br, htons(val));
936 int br_vlan_set_stats(struct net_bridge *br, unsigned long val)
941 br_opt_toggle(br, BROPT_VLAN_STATS_ENABLED, !!val);
950 int br_vlan_set_stats_per_port(struct net_bridge *br, unsigned long val)
955 list_for_each_entry(p, &br->port_list, list) {
965 br_opt_toggle(br, BROPT_VLAN_STATS_PER_PORT, !!val);
989 static void br_vlan_disable_default_pvid(struct net_bridge *br)
992 u16 pvid = br->default_pvid;
997 if (vlan_default_pvid(br_vlan_group(br), pvid)) {
998 if (!br_vlan_delete(br, pvid))
999 br_vlan_notify(br, NULL, pvid, 0, RTM_DELVLAN);
1002 list_for_each_entry(p, &br->port_list, list) {
1005 br_vlan_notify(br, p, pvid, 0, RTM_DELVLAN);
1008 br->default_pvid = 0;
1011 int __br_vlan_set_default_pvid(struct net_bridge *br, u16 pvid,
1023 br_vlan_disable_default_pvid(br);
1031 old_pvid = br->default_pvid;
1036 vg = br_vlan_group(br);
1040 err = br_vlan_add(br, pvid,
1048 if (br_vlan_delete(br, old_pvid))
1049 br_vlan_notify(br, NULL, old_pvid, 0, RTM_DELVLAN);
1050 br_vlan_notify(br, NULL, pvid, 0, RTM_NEWVLAN);
1054 list_for_each_entry(p, &br->port_list, list) {
1071 br_vlan_notify(br, p, old_pvid, 0, RTM_DELVLAN);
1072 br_vlan_notify(p->br, p, pvid, 0, RTM_NEWVLAN);
1076 br->default_pvid = pvid;
1083 list_for_each_entry_continue_reverse(p, &br->port_list, list) {
1092 br_vlan_notify(p->br, p, old_pvid, 0, RTM_NEWVLAN);
1095 br_vlan_notify(br, p, pvid, 0, RTM_DELVLAN);
1100 br_vlan_add(br, old_pvid,
1105 br_vlan_notify(br, NULL, old_pvid, 0, RTM_NEWVLAN);
1107 br_vlan_delete(br, pvid);
1108 br_vlan_notify(br, NULL, pvid, 0, RTM_DELVLAN);
1113 int br_vlan_set_default_pvid(struct net_bridge *br, unsigned long val)
1121 if (pvid == br->default_pvid)
1125 if (br_opt_get(br, BROPT_VLAN_ENABLED)) {
1130 err = __br_vlan_set_default_pvid(br, pvid, NULL);
1135 int br_vlan_init(struct net_bridge *br)
1150 br->vlan_proto = htons(ETH_P_8021Q);
1151 br->default_pvid = 1;
1152 rcu_assign_pointer(br->vlgrp, vg);
1168 .orig_dev = p->br->dev,
1171 .u.vlan_filtering = br_opt_get(p->br, BROPT_VLAN_ENABLED),
1192 if (p->br->default_pvid) {
1195 ret = nbp_vlan_add(p, p->br->default_pvid,
1201 br_vlan_notify(p->br, p, p->br->default_pvid, 0, RTM_NEWVLAN);
1270 br_fdb_find_delete_local(port->br, port, port->dev->dev_addr, vid);
1271 br_fdb_delete_by_port(port->br, port, vid, 0);
1283 __vlan_flush(port->br, port, vg);
1448 static void br_vlan_set_vlan_dev_state(const struct net_bridge *br,
1456 if (!netif_carrier_ok(br->dev)) {
1461 list_for_each_entry(p, &br->port_list, list) {
1482 vlan_dev = br_vlan_get_upper_bind_vlan_dev(p->br->dev,
1486 if (netif_carrier_ok(p->br->dev))
1489 br_vlan_set_vlan_dev_state(p->br, vlan_dev);
1499 struct net_bridge *br = netdev_priv(dev);
1505 br_vlan_set_vlan_dev_state(br, upper_dev);
1506 br_opt_toggle(br, BROPT_VLAN_BRIDGE_BINDING, true);
1508 br_opt_toggle(br, BROPT_VLAN_BRIDGE_BINDING,
1514 struct net_bridge *br;
1523 br_vlan_set_vlan_dev_state(data->br, vlan_dev);
1529 struct net_bridge *br)
1532 .br = br
1549 if (!br_opt_get(p->br, BROPT_VLAN_BRIDGE_BINDING))
1552 vlan_dev = br_vlan_get_upper_bind_vlan_dev(p->br->dev, vid);
1554 br_vlan_set_vlan_dev_state(p->br, vlan_dev);
1561 struct net_bridge *br = netdev_priv(dev);
1567 ret = br_vlan_add(br, br->default_pvid,
1574 changed = !br_vlan_delete(br, br->default_pvid);
1584 if (!br_opt_get(br, BROPT_VLAN_BRIDGE_BINDING))
1586 br_vlan_link_state_change(dev, br);
1590 br_vlan_notify(br, NULL, br->default_pvid, 0, vlcmd);
1598 if (!br_opt_get(p->br, BROPT_VLAN_BRIDGE_BINDING))
1694 void br_vlan_notify(const struct net_bridge *br,
1717 ifindex = br->dev->ifindex;
1718 vg = br_vlan_group(br);
1719 net = dev_net(br->dev);
1786 struct net_bridge *br;
1794 br = netdev_priv(dev);
1795 vg = br_vlan_group_rcu(br);
1802 br = p->br;
1943 struct net_bridge *br;
1946 br = netdev_priv(dev);
1947 vg = br_vlan_group(br);
1952 br = p->br;
2008 err = br_process_vlan_info(br, p, cmdmap, vinfo, &tmp_last,
2013 br_ifinfo_notify(cmdmap, br, p);
2031 err = br_vlan_process_options(br, p, range_start, range_end,