Lines Matching full:vid
11 static void nbp_vlan_set_vlan_dev_state(struct net_bridge_port *p, u16 vid);
17 u16 vid = *(u16 *)arg->key; in br_vlan_cmp() local
19 return vle->vid != vid; in br_vlan_cmp()
24 .key_offset = offsetof(struct net_bridge_vlan, vid),
32 static struct net_bridge_vlan *br_vlan_lookup(struct rhashtable *tbl, u16 vid) in br_vlan_lookup() argument
34 return rhashtable_lookup_fast(tbl, &vid, br_vlan_rht_params); in br_vlan_lookup()
40 if (vg->pvid == v->vid) in __vlan_add_pvid()
45 vg->pvid = v->vid; in __vlan_add_pvid()
48 static void __vlan_delete_pvid(struct net_bridge_vlan_group *vg, u16 vid) in __vlan_delete_pvid() argument
50 if (vg->pvid != vid) in __vlan_delete_pvid()
73 change = !!(flags & BRIDGE_VLAN_INFO_PVID) == !!(vg->pvid != v->vid) || in __vlan_flags_update()
82 __vlan_delete_pvid(vg, v->vid); in __vlan_flags_update()
112 err = br_switchdev_port_vlan_add(dev, v->vid, flags, false, extack); in __vlan_vid_add()
114 return vlan_vid_add(dev, br->vlan_proto, v->vid); in __vlan_vid_add()
133 if (v->vid >= vent->vid) in __vlan_add_list()
152 err = br_switchdev_port_vlan_del(dev, v->vid); in __vlan_vid_del()
154 vlan_vid_del(dev, br->vlan_proto, v->vid); in __vlan_vid_del()
162 br_vlan_get_master(struct net_bridge *br, u16 vid, in br_vlan_get_master() argument
169 masterv = br_vlan_find(vg, vid); in br_vlan_get_master()
174 if (br_vlan_add(br, vid, 0, &changed, extack)) in br_vlan_get_master()
176 masterv = br_vlan_find(vg, vid); in br_vlan_get_master()
292 err = br_vlan_add(br, v->vid, in __vlan_add()
299 br_vlan_notify(br, NULL, v->vid, 0, in __vlan_add()
303 masterv = br_vlan_get_master(br, v->vid, extack); in __vlan_add()
323 err = br_switchdev_port_vlan_add(dev, v->vid, flags, in __vlan_add()
334 err = br_fdb_add_local(br, p, dev->dev_addr, v->vid); in __vlan_add()
355 nbp_vlan_set_vlan_dev_state(p, v->vid); in __vlan_add()
361 br_fdb_find_delete_local(br, p, dev->dev_addr, v->vid); in __vlan_add()
377 br_switchdev_port_vlan_del(dev, v->vid); in __vlan_add()
398 __vlan_delete_pvid(vg, v->vid); in __vlan_del()
404 err = br_switchdev_port_vlan_del(v->br->dev, v->vid); in __vlan_del()
420 nbp_vlan_set_vlan_dev_state(p, v->vid); in __vlan_del()
451 v_start = vlan->vid; in __vlan_flush()
452 } else if (vlan->vid - v_end != 1) { in __vlan_flush()
455 v_start = vlan->vid; in __vlan_flush()
457 v_end = vlan->vid; in __vlan_flush()
464 vlan->vid, ERR_PTR(err)); in __vlan_flush()
480 u16 vid; in br_handle_vlan() local
490 br_vlan_get_tag(skb, &vid); in br_handle_vlan()
491 v = br_vlan_find(vg, vid); in br_handle_vlan()
536 struct sk_buff *skb, u16 *vid, in __allowed_ingress() argument
556 if (!br_vlan_get_tag(skb, vid)) { in __allowed_ingress()
568 *vid = 0; in __allowed_ingress()
578 if (!*vid) { in __allowed_ingress()
581 /* Frame had a tag with VID 0 or did not have a tag. in __allowed_ingress()
591 *vid = pvid; in __allowed_ingress()
597 * At this point, we know that skb->vlan_tci VID in __allowed_ingress()
599 * We update only VID field and preserve PCP field. in __allowed_ingress()
614 v = br_vlan_find(vg, *vid); in __allowed_ingress()
643 u16 *vid, u8 *state, in br_allowed_ingress() argument
655 return __allowed_ingress(br, vg, skb, vid, state, vlan); in br_allowed_ingress()
663 u16 vid; in br_allowed_egress() local
669 br_vlan_get_tag(skb, &vid); in br_allowed_egress()
670 v = br_vlan_find(vg, vid); in br_allowed_egress()
679 bool br_should_learn(struct net_bridge_port *p, struct sk_buff *skb, u16 *vid) in br_should_learn() argument
693 if (!br_vlan_get_tag(skb, vid) && skb->vlan_proto != br->vlan_proto) in br_should_learn()
694 *vid = 0; in br_should_learn()
696 if (!*vid) { in br_should_learn()
697 *vid = br_get_pvid(vg); in br_should_learn()
698 if (!*vid || in br_should_learn()
705 v = br_vlan_find(vg, *vid); in br_should_learn()
736 err = br_switchdev_port_vlan_add(br->dev, vlan->vid, flags, in br_vlan_add_existing()
744 err = br_fdb_add_local(br, NULL, br->dev->dev_addr, vlan->vid); in br_vlan_add_existing()
764 br_switchdev_port_vlan_del(br->dev, vlan->vid); in br_vlan_add_existing()
769 * Must be called with vid in range from 1 to 4094 inclusive.
772 int br_vlan_add(struct net_bridge *br, u16 vid, u16 flags, bool *changed, in br_vlan_add() argument
783 vlan = br_vlan_find(vg, vid); in br_vlan_add()
797 vlan->vid = vid; in br_vlan_add()
815 * Must be called with vid in range from 1 to 4094 inclusive.
817 int br_vlan_delete(struct net_bridge *br, u16 vid) in br_vlan_delete() argument
825 v = br_vlan_find(vg, vid); in br_vlan_delete()
829 br_fdb_find_delete_local(br, NULL, br->dev->dev_addr, vid); in br_vlan_delete()
830 br_fdb_delete_by_port(br, NULL, vid, 0); in br_vlan_delete()
850 struct net_bridge_vlan *br_vlan_find(struct net_bridge_vlan_group *vg, u16 vid) in br_vlan_find() argument
855 return br_vlan_lookup(&vg->vlan_hash, vid); in br_vlan_find()
966 err = vlan_vid_add(p->dev, proto, vlan->vid); in __br_vlan_set_proto()
983 vlan_vid_del(p->dev, oldproto, vlan->vid); in __br_vlan_set_proto()
996 vlan_vid_del(p->dev, proto, vlan->vid); in __br_vlan_set_proto()
1004 vlan_vid_del(p->dev, proto, vlan->vid); in __br_vlan_set_proto()
1058 static bool vlan_default_pvid(struct net_bridge_vlan_group *vg, u16 vid) in vlan_default_pvid() argument
1062 if (vid != vg->pvid) in vlan_default_pvid()
1065 v = br_vlan_lookup(&vg->vlan_hash, vid); in vlan_default_pvid()
1305 * Must be called with vid in range from 1 to 4094 inclusive.
1308 int nbp_vlan_add(struct net_bridge_port *port, u16 vid, u16 flags, in nbp_vlan_add() argument
1317 vlan = br_vlan_find(nbp_vlan_group(port), vid); in nbp_vlan_add()
1323 ret = br_switchdev_port_vlan_add(port->dev, vid, flags, in nbp_vlan_add()
1339 vlan->vid = vid; in nbp_vlan_add()
1351 * Must be called with vid in range from 1 to 4094 inclusive.
1353 int nbp_vlan_delete(struct net_bridge_port *port, u16 vid) in nbp_vlan_delete() argument
1359 v = br_vlan_find(nbp_vlan_group(port), vid); in nbp_vlan_delete()
1362 br_fdb_find_delete_local(port->br, port, port->dev->dev_addr, vid); in nbp_vlan_delete()
1363 br_fdb_delete_by_port(port->br, port, vid, 0); in nbp_vlan_delete()
1451 u16 vid; in br_vlan_fill_forward_path_pvid() local
1462 vid = ctx->vlan[idx].id; in br_vlan_fill_forward_path_pvid()
1465 vid = br_get_pvid(vg); in br_vlan_fill_forward_path_pvid()
1468 path->bridge.vlan_id = vid; in br_vlan_fill_forward_path_pvid()
1500 int br_vlan_get_info(const struct net_device *dev, u16 vid, in br_vlan_get_info() argument
1516 v = br_vlan_find(vg, vid); in br_vlan_get_info()
1520 p_vinfo->vid = vid; in br_vlan_get_info()
1522 if (vid == br_get_pvid(vg)) in br_vlan_get_info()
1528 int br_vlan_get_info_rcu(const struct net_device *dev, u16 vid, in br_vlan_get_info_rcu() argument
1543 v = br_vlan_find(vg, vid); in br_vlan_get_info_rcu()
1547 p_vinfo->vid = vid; in br_vlan_get_info_rcu()
1549 if (vid == br_get_pvid(vg)) in br_vlan_get_info_rcu()
1580 u16 vid; member
1591 vlan_dev_priv(dev)->vlan_id == data->vid) { in br_vlan_match_bind_vlan_dev_fn()
1600 br_vlan_get_upper_bind_vlan_dev(struct net_device *dev, u16 vid) in br_vlan_get_upper_bind_vlan_dev() argument
1603 .vid = vid, in br_vlan_get_upper_bind_vlan_dev()
1625 u16 vid = vlan_dev_priv(vlan_dev)->vlan_id; in br_vlan_set_vlan_dev_state() local
1637 if (br_vlan_find(vg, vid) && br_vlan_is_dev_up(p->dev)) { in br_vlan_set_vlan_dev_state()
1657 vlan->vid); in br_vlan_set_all_vlan_dev_state()
1727 static void nbp_vlan_set_vlan_dev_state(struct net_bridge_port *p, u16 vid) in nbp_vlan_set_vlan_dev_state() argument
1734 vlan_dev = br_vlan_get_upper_bind_vlan_dev(p->br->dev, vid); in nbp_vlan_set_vlan_dev_state()
1851 static bool br_vlan_fill_vids(struct sk_buff *skb, u16 vid, u16 vid_range, in br_vlan_fill_vids() argument
1865 info.vid = vid; in br_vlan_fill_vids()
1874 if (vid_range && vid < vid_range && in br_vlan_fill_vids()
1907 u16 vid, u16 vid_range, in br_vlan_notify() argument
1949 v = br_vlan_find(vg, vid); in br_vlan_notify()
1954 if (br_get_pvid(vg) == v->vid) in br_vlan_notify()
1963 if (!br_vlan_fill_vids(skb, vid, vid_range, v, p, flags, false)) in br_vlan_notify()
1980 return v_curr->vid - range_end->vid == 1 && in br_vlan_can_enter_range()
2052 if (!br_vlan_global_opts_fill(skb, range_start->vid, in br_vlan_dump_dev()
2053 range_end->vid, in br_vlan_dump_dev()
2059 idx += range_end->vid - range_start->vid + 1; in br_vlan_dump_dev()
2062 } else if (dump_stats || v->vid == pvid || in br_vlan_dump_dev()
2066 if (!br_vlan_fill_vids(skb, range_start->vid, in br_vlan_dump_dev()
2067 range_end->vid, range_start, in br_vlan_dump_dev()
2073 idx += range_end->vid - range_start->vid + 1; in br_vlan_dump_dev()
2088 !br_vlan_global_opts_fill(skb, range_start->vid, in br_vlan_dump_dev()
2089 range_end->vid, range_start)) in br_vlan_dump_dev()
2092 !br_vlan_fill_vids(skb, range_start->vid, in br_vlan_dump_dev()
2093 range_end->vid, range_start, in br_vlan_dump_dev()
2217 if (!br_vlan_valid_id(vinfo->vid, extack)) in br_vlan_rtm_process_one()
2221 vrange_end.vid = nla_get_u16(tb[BRIDGE_VLANDB_ENTRY_RANGE]); in br_vlan_rtm_process_one()
2230 if (!br_vlan_valid_id(vinfo->vid, extack) || in br_vlan_rtm_process_one()
2265 range_start = br_vlan_find(vg, vinfo_last->vid); in br_vlan_rtm_process_one()
2266 range_end = br_vlan_find(vg, vinfo->vid); in br_vlan_rtm_process_one()
2268 range_start = br_vlan_find(vg, vinfo->vid); in br_vlan_rtm_process_one()