Lines Matching full:vlan
143 /* Returns a master vlan, if it didn't exist it gets created. In all cases
144 * a reference is taken to the master vlan before returning.
212 /* This is the shared VLAN add function which works for both ports and bridge
214 * vlan entry type:
215 * 1. vlan is being added on a port (no master flags, global entry exists)
216 * 2. vlan is being added on a bridge (both master and brentry flags)
217 * 3. vlan is being added on a port, but a global entry didn't exist which
219 * global entry is used for global per-vlan features, but not for filtering
245 /* Add VLAN to the device filter if it is supported. in __vlan_add()
253 /* need to work on the master vlan too */ in __vlan_add()
290 /* Add the dev mac and count the vlan only if it's usable */ in __vlan_add()
398 struct net_bridge_vlan *vlan, *tmp; in __vlan_flush() local
402 list_for_each_entry_safe(vlan, tmp, &vg->vlan_list, vlist) { in __vlan_flush()
405 v_start = vlan->vid; in __vlan_flush()
406 } else if (vlan->vid - v_end != 1) { in __vlan_flush()
409 v_start = vlan->vid; in __vlan_flush()
411 v_end = vlan->vid; in __vlan_flush()
413 __vlan_del(vlan); in __vlan_flush()
416 /* notify about the last/whole vlan range */ in __vlan_flush()
435 * a valid vlan id. If the vlan id has untagged flag set, in br_handle_vlan()
440 /* Vlan entry must be configured at this point. The in br_handle_vlan()
484 /* If vlan tx offload is disabled on bridge device and frame was in __allowed_ingress()
485 * sent from vlan device on the bridge device, it does not have in __allowed_ingress()
486 * HW accelerated vlan tag. in __allowed_ingress()
522 * vlan untagged or priority-tagged traffic belongs to. in __allowed_ingress()
528 * ingress frame is considered to belong to this vlan. in __allowed_ingress()
581 /* If VLAN filtering is disabled on the bridge, all packets are in br_allowed_ingress()
648 struct net_bridge_vlan *vlan, in br_vlan_add_existing() argument
654 err = br_switchdev_port_vlan_add(br->dev, vlan->vid, flags, extack); in br_vlan_add_existing()
658 if (!br_vlan_is_brentry(vlan)) { in br_vlan_add_existing()
659 /* Trying to change flags of non-existent bridge vlan */ in br_vlan_add_existing()
666 vlan->vid); in br_vlan_add_existing()
672 refcount_inc(&vlan->refcnt); in br_vlan_add_existing()
673 vlan->flags |= BRIDGE_VLAN_INFO_BRENTRY; in br_vlan_add_existing()
678 if (__vlan_add_flags(vlan, flags)) in br_vlan_add_existing()
685 br_switchdev_port_vlan_del(br->dev, vlan->vid); in br_vlan_add_existing()
691 * changed must be true only if the vlan was created or updated
697 struct net_bridge_vlan *vlan; in br_vlan_add() local
704 vlan = br_vlan_find(vg, vid); in br_vlan_add()
705 if (vlan) in br_vlan_add()
706 return br_vlan_add_existing(br, vg, vlan, flags, changed, in br_vlan_add()
709 vlan = kzalloc(sizeof(*vlan), GFP_KERNEL); in br_vlan_add()
710 if (!vlan) in br_vlan_add()
713 vlan->stats = netdev_alloc_pcpu_stats(struct br_vlan_stats); in br_vlan_add()
714 if (!vlan->stats) { in br_vlan_add()
715 kfree(vlan); in br_vlan_add()
718 vlan->vid = vid; in br_vlan_add()
719 vlan->flags = flags | BRIDGE_VLAN_INFO_MASTER; in br_vlan_add()
720 vlan->flags &= ~BRIDGE_VLAN_INFO_PVID; in br_vlan_add()
721 vlan->br = br; in br_vlan_add()
723 refcount_set(&vlan->refcnt, 1); in br_vlan_add()
724 ret = __vlan_add(vlan, flags, extack); in br_vlan_add()
726 free_percpu(vlan->stats); in br_vlan_add()
727 kfree(vlan); in br_vlan_add()
866 struct net_bridge_vlan *vlan; in __br_vlan_set_proto() local
880 list_for_each_entry(vlan, &vg->vlan_list, vlist) { in __br_vlan_set_proto()
881 if (vlan->priv_flags & BR_VLFLAG_ADDED_BY_SWITCHDEV) in __br_vlan_set_proto()
883 err = vlan_vid_add(p->dev, proto, vlan->vid); in __br_vlan_set_proto()
897 list_for_each_entry(vlan, &vg->vlan_list, vlist) { in __br_vlan_set_proto()
898 if (vlan->priv_flags & BR_VLFLAG_ADDED_BY_SWITCHDEV) in __br_vlan_set_proto()
900 vlan_vid_del(p->dev, oldproto, vlan->vid); in __br_vlan_set_proto()
910 list_for_each_entry_continue_reverse(vlan, &vg->vlan_list, vlist) { in __br_vlan_set_proto()
911 if (vlan->priv_flags & BR_VLFLAG_ADDED_BY_SWITCHDEV) in __br_vlan_set_proto()
913 vlan_vid_del(p->dev, proto, vlan->vid); in __br_vlan_set_proto()
918 list_for_each_entry(vlan, &vg->vlan_list, vlist) { in __br_vlan_set_proto()
919 if (vlan->priv_flags & BR_VLFLAG_ADDED_BY_SWITCHDEV) in __br_vlan_set_proto()
921 vlan_vid_del(p->dev, proto, vlan->vid); in __br_vlan_set_proto()
1126 pr_info_once("Please disable vlan filtering to change default_pvid\n"); in br_vlan_set_default_pvid()
1221 * changed must be true only if the vlan was created or updated
1226 struct net_bridge_vlan *vlan; in nbp_vlan_add() local
1232 vlan = br_vlan_find(nbp_vlan_group(port), vid); in nbp_vlan_add()
1233 if (vlan) { in nbp_vlan_add()
1238 *changed = __vlan_add_flags(vlan, flags); in nbp_vlan_add()
1243 vlan = kzalloc(sizeof(*vlan), GFP_KERNEL); in nbp_vlan_add()
1244 if (!vlan) in nbp_vlan_add()
1247 vlan->vid = vid; in nbp_vlan_add()
1248 vlan->port = port; in nbp_vlan_add()
1249 ret = __vlan_add(vlan, flags, extack); in nbp_vlan_add()
1251 kfree(vlan); in nbp_vlan_add()
1478 struct net_bridge_vlan *vlan; in br_vlan_set_all_vlan_dev_state() local
1481 list_for_each_entry(vlan, &vg->vlan_list, vlist) { in br_vlan_set_all_vlan_dev_state()
1483 vlan->vid); in br_vlan_set_all_vlan_dev_state()
1691 + br_vlan_opts_nl_size(); /* bridge vlan options */ in rtnl_vlan_nlmsg_size()
1737 /* need to find the vlan due to flags/options */ in br_vlan_notify()
1852 * - first vlan (range_start == range_end) in br_vlan_dump_dev()
1853 * - last vlan (range_start == range_end, not in range) in br_vlan_dump_dev()
1854 * - last vlan range (range_start != range_end, in range) in br_vlan_dump_dev()
1965 NL_SET_ERR_MSG_MOD(extack, "Missing vlan entry info"); in br_vlan_rtm_process_one()
1973 NL_SET_ERR_MSG_MOD(extack, "Old-style vlan ranges are not allowed when using RTM vlan calls"); in br_vlan_rtm_process_one()