Lines Matching full:vlan
141 /* Returns a master vlan, if it didn't exist it gets created. In all cases
142 * 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()
294 /* Add the dev mac and count the vlan only if it's usable */ in __vlan_add()
405 struct net_bridge_vlan *vlan, *tmp; in __vlan_flush() local
409 list_for_each_entry_safe(vlan, tmp, &vg->vlan_list, vlist) { in __vlan_flush()
412 v_start = vlan->vid; in __vlan_flush()
413 } else if (vlan->vid - v_end != 1) { in __vlan_flush()
416 v_start = vlan->vid; in __vlan_flush()
418 v_end = vlan->vid; in __vlan_flush()
420 __vlan_del(vlan); in __vlan_flush()
423 /* notify about the last/whole vlan range */ in __vlan_flush()
442 * a valid vlan id. If the vlan id has untagged flag set, in br_handle_vlan()
447 /* Vlan entry must be configured at this point. The in br_handle_vlan()
470 * with the bridge VLAN, so that it can be forwarded according to that in br_handle_vlan()
471 * VLAN. The switchdev should deal with popping the VLAN header in in br_handle_vlan()
472 * hardware on each egress port as appropriate. So only strip the VLAN in br_handle_vlan()
493 struct net_bridge_vlan **vlan) in __allowed_ingress() argument
500 /* If vlan tx offload is disabled on bridge device and frame was in __allowed_ingress()
501 * sent from vlan device on the bridge device, it does not have in __allowed_ingress()
502 * HW accelerated vlan tag. in __allowed_ingress()
538 * vlan untagged or priority-tagged traffic belongs to. in __allowed_ingress()
544 * ingress frame is considered to belong to this vlan. in __allowed_ingress()
587 *vlan = v; in __allowed_ingress()
599 struct net_bridge_vlan **vlan) in br_allowed_ingress() argument
601 /* If VLAN filtering is disabled on the bridge, all packets are in br_allowed_ingress()
604 *vlan = NULL; in br_allowed_ingress()
610 return __allowed_ingress(br, vg, skb, vid, state, vlan); in br_allowed_ingress()
669 struct net_bridge_vlan *vlan, in br_vlan_add_existing() argument
675 err = br_switchdev_port_vlan_add(br->dev, vlan->vid, flags, extack); in br_vlan_add_existing()
679 if (!br_vlan_is_brentry(vlan)) { in br_vlan_add_existing()
680 /* Trying to change flags of non-existent bridge vlan */ in br_vlan_add_existing()
687 vlan->vid); in br_vlan_add_existing()
693 refcount_inc(&vlan->refcnt); in br_vlan_add_existing()
694 vlan->flags |= BRIDGE_VLAN_INFO_BRENTRY; in br_vlan_add_existing()
697 br_multicast_toggle_one_vlan(vlan, true); in br_vlan_add_existing()
700 if (__vlan_add_flags(vlan, flags)) in br_vlan_add_existing()
707 br_switchdev_port_vlan_del(br->dev, vlan->vid); in br_vlan_add_existing()
713 * changed must be true only if the vlan was created or updated
719 struct net_bridge_vlan *vlan; in br_vlan_add() local
726 vlan = br_vlan_find(vg, vid); in br_vlan_add()
727 if (vlan) in br_vlan_add()
728 return br_vlan_add_existing(br, vg, vlan, flags, changed, in br_vlan_add()
731 vlan = kzalloc(sizeof(*vlan), GFP_KERNEL); in br_vlan_add()
732 if (!vlan) in br_vlan_add()
735 vlan->stats = netdev_alloc_pcpu_stats(struct pcpu_sw_netstats); in br_vlan_add()
736 if (!vlan->stats) { in br_vlan_add()
737 kfree(vlan); in br_vlan_add()
740 vlan->vid = vid; in br_vlan_add()
741 vlan->flags = flags | BRIDGE_VLAN_INFO_MASTER; in br_vlan_add()
742 vlan->flags &= ~BRIDGE_VLAN_INFO_PVID; in br_vlan_add()
743 vlan->br = br; in br_vlan_add()
745 refcount_set(&vlan->refcnt, 1); in br_vlan_add()
746 ret = __vlan_add(vlan, flags, extack); in br_vlan_add()
748 free_percpu(vlan->stats); in br_vlan_add()
749 kfree(vlan); in br_vlan_add()
856 br_info(br, "vlan filtering disabled, automatically disabling multicast vlan snooping\n"); in br_vlan_filter_toggle()
892 struct net_bridge_vlan *vlan; in __br_vlan_set_proto() local
906 list_for_each_entry(vlan, &vg->vlan_list, vlist) { in __br_vlan_set_proto()
907 err = vlan_vid_add(p->dev, proto, vlan->vid); in __br_vlan_set_proto()
921 list_for_each_entry(vlan, &vg->vlan_list, vlist) in __br_vlan_set_proto()
922 vlan_vid_del(p->dev, oldproto, vlan->vid); in __br_vlan_set_proto()
931 list_for_each_entry_continue_reverse(vlan, &vg->vlan_list, vlist) in __br_vlan_set_proto()
932 vlan_vid_del(p->dev, proto, vlan->vid); in __br_vlan_set_proto()
936 list_for_each_entry(vlan, &vg->vlan_list, vlist) in __br_vlan_set_proto()
937 vlan_vid_del(p->dev, proto, vlan->vid); in __br_vlan_set_proto()
1143 pr_info_once("Please disable vlan filtering to change default_pvid\n"); in br_vlan_set_default_pvid()
1238 * changed must be true only if the vlan was created or updated
1243 struct net_bridge_vlan *vlan; in nbp_vlan_add() local
1249 vlan = br_vlan_find(nbp_vlan_group(port), vid); in nbp_vlan_add()
1250 if (vlan) { in nbp_vlan_add()
1255 *changed = __vlan_add_flags(vlan, flags); in nbp_vlan_add()
1260 vlan = kzalloc(sizeof(*vlan), GFP_KERNEL); in nbp_vlan_add()
1261 if (!vlan) in nbp_vlan_add()
1264 vlan->vid = vid; in nbp_vlan_add()
1265 vlan->port = port; in nbp_vlan_add()
1266 ret = __vlan_add(vlan, flags, extack); in nbp_vlan_add()
1268 kfree(vlan); in nbp_vlan_add()
1386 ctx->vlan[idx].proto == br->vlan_proto) { in br_vlan_fill_forward_path_pvid()
1387 vid = ctx->vlan[idx].id; in br_vlan_fill_forward_path_pvid()
1577 struct net_bridge_vlan *vlan; in br_vlan_set_all_vlan_dev_state() local
1580 list_for_each_entry(vlan, &vg->vlan_list, vlist) { in br_vlan_set_all_vlan_dev_state()
1582 vlan->vid); in br_vlan_set_all_vlan_dev_state()
1790 + br_vlan_opts_nl_size(); /* bridge vlan options */ in rtnl_vlan_nlmsg_size()
1836 /* need to find the vlan due to flags/options */ in br_vlan_notify()
1866 struct switchdev_obj_port_vlan *vlan, in br_vlan_replay_one() argument
1876 .obj = &vlan->obj, in br_vlan_replay_one()
1930 struct switchdev_obj_port_vlan vlan = { in br_vlan_replay() local
1940 err = br_vlan_replay_one(nb, dev, &vlan, ctx, action, extack); in br_vlan_replay()
2054 * - first vlan (range_start == range_end) in br_vlan_dump_dev()
2055 * - last vlan (range_start == range_end, not in range) in br_vlan_dump_dev()
2056 * - last vlan range (range_start != range_end, in range) in br_vlan_dump_dev()
2174 NL_SET_ERR_MSG_MOD(extack, "Missing vlan entry info"); in br_vlan_rtm_process_one()
2182 NL_SET_ERR_MSG_MOD(extack, "Old-style vlan ranges are not allowed when using RTM vlan calls"); in br_vlan_rtm_process_one()