Lines Matching refs:br

68 		vg = br_vlan_group(v->br);
103 static int __vlan_vid_add(struct net_device *dev, struct net_bridge *br,
114 return vlan_vid_add(dev, br->vlan_proto, v->vid);
126 vg = br_vlan_group(v->br);
144 static int __vlan_vid_del(struct net_device *dev, struct net_bridge *br,
154 vlan_vid_del(dev, br->vlan_proto, v->vid);
162 br_vlan_get_master(struct net_bridge *br, u16 vid,
168 vg = br_vlan_group(br);
174 if (br_vlan_add(br, vid, 0, &changed, extack))
205 vg = br_vlan_group(masterv->br);
231 struct net_bridge *br;
234 br = v->br;
236 br = v->port->br;
238 if (br_opt_get(br, BROPT_MST_ENABLED)) {
265 struct net_bridge *br;
269 br = v->br;
270 dev = br->dev;
271 vg = br_vlan_group(br);
274 br = p->br;
284 err = __vlan_vid_add(dev, br, v, flags, extack);
292 err = br_vlan_add(br, v->vid,
299 br_vlan_notify(br, NULL, v->vid, 0,
303 masterv = br_vlan_get_master(br, v->vid, extack);
309 if (br_opt_get(br, BROPT_VLAN_STATS_PER_PORT)) {
328 br_multicast_ctx_init(br, v, &v->br_mcast_ctx);
334 err = br_fdb_add_local(br, p, dev->dev_addr, v->vid);
336 br_err(br, "failed insert local address into bridge forwarding table\n");
361 br_fdb_find_delete_local(br, p, dev->dev_addr, v->vid);
367 __vlan_vid_del(dev, br, v);
391 vg = br_vlan_group(v->br);
400 err = __vlan_vid_del(p->dev, p->br, v);
404 err = br_switchdev_port_vlan_del(v->br->dev, v->vid);
439 static void __vlan_flush(const struct net_bridge *br,
454 br_vlan_notify(br, p, v_start, v_end, RTM_DELVLAN);
461 br_err(br,
470 br_vlan_notify(br, p, v_start, v_end, RTM_DELVLAN);
473 struct sk_buff *br_handle_vlan(struct net_bridge *br,
498 if ((br->dev->flags & IFF_PROMISC) && skb->dev == br->dev) {
505 if (br_opt_get(br, BROPT_VLAN_STATS_ENABLED)) {
534 static bool __allowed_ingress(const struct net_bridge *br,
550 skb->protocol == br->vlan_proto)) {
558 if (skb->vlan_proto != br->vlan_proto) {
594 __vlan_hwaccel_put_tag(skb, br->vlan_proto, pvid);
604 if (!br_opt_get(br, BROPT_MCAST_VLAN_SNOOPING_ENABLED) &&
605 !br_opt_get(br, BROPT_VLAN_STATS_ENABLED)) {
624 if (br_opt_get(br, BROPT_VLAN_STATS_ENABLED)) {
641 bool br_allowed_ingress(const struct net_bridge *br,
650 if (!br_opt_get(br, BROPT_VLAN_ENABLED)) {
655 return __allowed_ingress(br, vg, skb, vid, state, vlan);
682 struct net_bridge *br = p->br;
686 if (!br_opt_get(br, BROPT_VLAN_ENABLED))
693 if (!br_vlan_get_tag(skb, vid) && skb->vlan_proto != br->vlan_proto)
712 static int br_vlan_add_existing(struct net_bridge *br,
734 err = br_switchdev_port_vlan_add(br->dev, vlan->vid, flags,
742 err = br_fdb_add_local(br, NULL, br->dev->dev_addr, vlan->vid);
744 br_err(br, "failed to insert local address into bridge forwarding table\n");
762 br_switchdev_port_vlan_del(br->dev, vlan->vid);
770 int br_vlan_add(struct net_bridge *br, u16 vid, u16 flags, bool *changed,
780 vg = br_vlan_group(br);
783 return br_vlan_add_existing(br, vg, vlan, flags, changed,
798 vlan->br = br;
815 int br_vlan_delete(struct net_bridge *br, u16 vid)
822 vg = br_vlan_group(br);
827 br_fdb_find_delete_local(br, NULL, br->dev->dev_addr, vid);
828 br_fdb_delete_by_port(br, NULL, vid, 0);
835 void br_vlan_flush(struct net_bridge *br)
841 vg = br_vlan_group(br);
842 __vlan_flush(br, NULL, vg);
843 RCU_INIT_POINTER(br->vlgrp, NULL);
857 static void recalculate_group_addr(struct net_bridge *br)
859 if (br_opt_get(br, BROPT_GROUP_ADDR_SET))
862 spin_lock_bh(&br->lock);
863 if (!br_opt_get(br, BROPT_VLAN_ENABLED) ||
864 br->vlan_proto == htons(ETH_P_8021Q)) {
866 br->group_addr[5] = 0x00;
869 br->group_addr[5] = 0x08;
871 spin_unlock_bh(&br->lock);
875 void br_recalculate_fwd_mask(struct net_bridge *br)
877 if (!br_opt_get(br, BROPT_VLAN_ENABLED) ||
878 br->vlan_proto == htons(ETH_P_8021Q))
879 br->group_fwd_mask_required = BR_GROUPFWD_DEFAULT;
881 br->group_fwd_mask_required = BR_GROUPFWD_8021AD &
882 ~(1u << br->group_addr[5]);
885 int br_vlan_filter_toggle(struct net_bridge *br, unsigned long val,
889 .orig_dev = br->dev,
896 if (br_opt_get(br, BROPT_VLAN_ENABLED) == !!val)
899 br_opt_toggle(br, BROPT_VLAN_ENABLED, !!val);
901 err = switchdev_port_attr_set(br->dev, &attr, extack);
903 br_opt_toggle(br, BROPT_VLAN_ENABLED, !val);
907 br_manage_promisc(br);
908 recalculate_group_addr(br);
909 br_recalculate_fwd_mask(br);
910 if (!val && br_opt_get(br, BROPT_MCAST_VLAN_SNOOPING_ENABLED)) {
911 br_info(br, "vlan filtering disabled, automatically disabling multicast vlan snooping\n");
912 br_multicast_toggle_vlan_snooping(br, false, NULL);
920 struct net_bridge *br = netdev_priv(dev);
922 return br_opt_get(br, BROPT_VLAN_ENABLED);
928 struct net_bridge *br = netdev_priv(dev);
930 *p_proto = ntohs(br->vlan_proto);
936 int __br_vlan_set_proto(struct net_bridge *br, __be16 proto,
940 .orig_dev = br->dev,
949 __be16 oldproto = br->vlan_proto;
951 if (br->vlan_proto == proto)
954 err = switchdev_port_attr_set(br->dev, &attr, extack);
959 list_for_each_entry(p, &br->port_list, list) {
970 br->vlan_proto = proto;
972 recalculate_group_addr(br);
973 br_recalculate_fwd_mask(br);
976 list_for_each_entry(p, &br->port_list, list) {
989 switchdev_port_attr_set(br->dev, &attr, NULL);
997 list_for_each_entry_continue_reverse(p, &br->port_list, list) {
1009 int br_vlan_set_proto(struct net_bridge *br, unsigned long val,
1015 return __br_vlan_set_proto(br, htons(val), extack);
1018 int br_vlan_set_stats(struct net_bridge *br, unsigned long val)
1023 br_opt_toggle(br, BROPT_VLAN_STATS_ENABLED, !!val);
1032 int br_vlan_set_stats_per_port(struct net_bridge *br, unsigned long val)
1037 list_for_each_entry(p, &br->port_list, list) {
1047 br_opt_toggle(br, BROPT_VLAN_STATS_PER_PORT, !!val);
1071 static void br_vlan_disable_default_pvid(struct net_bridge *br)
1074 u16 pvid = br->default_pvid;
1079 if (vlan_default_pvid(br_vlan_group(br), pvid)) {
1080 if (!br_vlan_delete(br, pvid))
1081 br_vlan_notify(br, NULL, pvid, 0, RTM_DELVLAN);
1084 list_for_each_entry(p, &br->port_list, list) {
1087 br_vlan_notify(br, p, pvid, 0, RTM_DELVLAN);
1090 br->default_pvid = 0;
1093 int __br_vlan_set_default_pvid(struct net_bridge *br, u16 pvid,
1105 br_vlan_disable_default_pvid(br);
1113 old_pvid = br->default_pvid;
1118 vg = br_vlan_group(br);
1122 err = br_vlan_add(br, pvid,
1130 if (br_vlan_delete(br, old_pvid))
1131 br_vlan_notify(br, NULL, old_pvid, 0, RTM_DELVLAN);
1132 br_vlan_notify(br, NULL, pvid, 0, RTM_NEWVLAN);
1136 list_for_each_entry(p, &br->port_list, list) {
1153 br_vlan_notify(br, p, old_pvid, 0, RTM_DELVLAN);
1154 br_vlan_notify(p->br, p, pvid, 0, RTM_NEWVLAN);
1158 br->default_pvid = pvid;
1165 list_for_each_entry_continue_reverse(p, &br->port_list, list) {
1174 br_vlan_notify(p->br, p, old_pvid, 0, RTM_NEWVLAN);
1177 br_vlan_notify(br, p, pvid, 0, RTM_DELVLAN);
1182 br_vlan_add(br, old_pvid,
1187 br_vlan_notify(br, NULL, old_pvid, 0, RTM_NEWVLAN);
1189 br_vlan_delete(br, pvid);
1190 br_vlan_notify(br, NULL, pvid, 0, RTM_DELVLAN);
1195 int br_vlan_set_default_pvid(struct net_bridge *br, unsigned long val,
1204 if (pvid == br->default_pvid)
1208 if (br_opt_get(br, BROPT_VLAN_ENABLED)) {
1213 err = __br_vlan_set_default_pvid(br, pvid, extack);
1218 int br_vlan_init(struct net_bridge *br)
1233 br->vlan_proto = htons(ETH_P_8021Q);
1234 br->default_pvid = 1;
1235 rcu_assign_pointer(br->vlgrp, vg);
1251 .orig_dev = p->br->dev,
1254 .u.vlan_filtering = br_opt_get(p->br, BROPT_VLAN_ENABLED),
1275 if (p->br->default_pvid) {
1278 ret = nbp_vlan_add(p, p->br->default_pvid,
1284 br_vlan_notify(p->br, p, p->br->default_pvid, 0, RTM_NEWVLAN);
1360 br_fdb_find_delete_local(port->br, port, port->dev->dev_addr, vid);
1361 br_fdb_delete_by_port(port->br, port, vid, 0);
1373 __vlan_flush(port->br, port, vg);
1443 void br_vlan_fill_forward_path_pvid(struct net_bridge *br,
1453 if (!br_opt_get(br, BROPT_VLAN_ENABLED))
1456 vg = br_vlan_group(br);
1459 ctx->vlan[idx].proto == br->vlan_proto) {
1467 path->bridge.vlan_proto = br->vlan_proto;
1470 int br_vlan_fill_forward_path_mode(struct net_bridge *br,
1477 if (!br_opt_get(br, BROPT_VLAN_ENABLED))
1620 static void br_vlan_set_vlan_dev_state(const struct net_bridge *br,
1628 if (!netif_carrier_ok(br->dev)) {
1633 list_for_each_entry(p, &br->port_list, list) {
1654 vlan_dev = br_vlan_get_upper_bind_vlan_dev(p->br->dev,
1658 if (netif_carrier_ok(p->br->dev))
1661 br_vlan_set_vlan_dev_state(p->br, vlan_dev);
1671 struct net_bridge *br = netdev_priv(dev);
1677 br_vlan_set_vlan_dev_state(br, upper_dev);
1678 br_opt_toggle(br, BROPT_VLAN_BRIDGE_BINDING, true);
1680 br_opt_toggle(br, BROPT_VLAN_BRIDGE_BINDING,
1686 struct net_bridge *br;
1695 br_vlan_set_vlan_dev_state(data->br, vlan_dev);
1701 struct net_bridge *br)
1704 .br = br
1721 if (!br_opt_get(p->br, BROPT_VLAN_BRIDGE_BINDING))
1724 vlan_dev = br_vlan_get_upper_bind_vlan_dev(p->br->dev, vid);
1726 br_vlan_set_vlan_dev_state(p->br, vlan_dev);
1733 struct net_bridge *br = netdev_priv(dev);
1739 ret = br_vlan_add(br, br->default_pvid,
1746 changed = !br_vlan_delete(br, br->default_pvid);
1756 if (!br_opt_get(br, BROPT_VLAN_BRIDGE_BINDING))
1758 br_vlan_link_state_change(dev, br);
1762 br_vlan_notify(br, NULL, br->default_pvid, 0, vlcmd);
1770 if (!br_opt_get(p->br, BROPT_VLAN_BRIDGE_BINDING))
1871 void br_vlan_notify(const struct net_bridge *br,
1894 ifindex = br->dev->ifindex;
1895 vg = br_vlan_group(br);
1896 net = dev_net(br->dev);
1964 struct net_bridge *br;
1972 br = netdev_priv(dev);
1973 vg = br_vlan_group_rcu(br);
1984 br = p->br;
2150 struct net_bridge *br;
2153 br = netdev_priv(dev);
2154 vg = br_vlan_group(br);
2159 br = p->br;
2215 err = br_process_vlan_info(br, p, cmdmap, vinfo, &tmp_last,
2220 br_ifinfo_notify(cmdmap, br, p);
2238 err = br_vlan_process_options(br, p, range_start, range_end,