Lines Matching refs:v
38 const struct net_bridge_vlan *v) in __vlan_add_pvid() argument
40 if (vg->pvid == v->vid) in __vlan_add_pvid()
44 br_vlan_set_pvid_state(vg, v->state); in __vlan_add_pvid()
45 vg->pvid = v->vid; in __vlan_add_pvid()
62 static bool __vlan_add_flags(struct net_bridge_vlan *v, u16 flags) in __vlan_add_flags() argument
65 u16 old_flags = v->flags; in __vlan_add_flags()
68 if (br_vlan_is_master(v)) in __vlan_add_flags()
69 vg = br_vlan_group(v->br); in __vlan_add_flags()
71 vg = nbp_vlan_group(v->port); in __vlan_add_flags()
74 ret = __vlan_add_pvid(vg, v); in __vlan_add_flags()
76 ret = __vlan_delete_pvid(vg, v->vid); in __vlan_add_flags()
79 v->flags |= BRIDGE_VLAN_INFO_UNTAGGED; in __vlan_add_flags()
81 v->flags &= ~BRIDGE_VLAN_INFO_UNTAGGED; in __vlan_add_flags()
83 return ret || !!(old_flags ^ v->flags); in __vlan_add_flags()
87 struct net_bridge_vlan *v, u16 flags, in __vlan_vid_add() argument
95 err = br_switchdev_port_vlan_add(dev, v->vid, flags, extack); in __vlan_vid_add()
97 return vlan_vid_add(dev, br->vlan_proto, v->vid); in __vlan_vid_add()
98 v->priv_flags |= BR_VLFLAG_ADDED_BY_SWITCHDEV; in __vlan_vid_add()
102 static void __vlan_add_list(struct net_bridge_vlan *v) in __vlan_add_list() argument
108 if (br_vlan_is_master(v)) in __vlan_add_list()
109 vg = br_vlan_group(v->br); in __vlan_add_list()
111 vg = nbp_vlan_group(v->port); in __vlan_add_list()
116 if (v->vid >= vent->vid) in __vlan_add_list()
119 list_add_rcu(&v->vlist, hpos); in __vlan_add_list()
122 static void __vlan_del_list(struct net_bridge_vlan *v) in __vlan_del_list() argument
124 list_del_rcu(&v->vlist); in __vlan_del_list()
128 const struct net_bridge_vlan *v) in __vlan_vid_del() argument
135 err = br_switchdev_port_vlan_del(dev, v->vid); in __vlan_vid_del()
136 if (!(v->priv_flags & BR_VLFLAG_ADDED_BY_SWITCHDEV)) in __vlan_vid_del()
137 vlan_vid_del(dev, br->vlan_proto, v->vid); in __vlan_vid_del()
172 struct net_bridge_vlan *v; in br_master_vlan_rcu_free() local
174 v = container_of(rcu, struct net_bridge_vlan, rcu); in br_master_vlan_rcu_free()
175 WARN_ON(!br_vlan_is_master(v)); in br_master_vlan_rcu_free()
176 free_percpu(v->stats); in br_master_vlan_rcu_free()
177 v->stats = NULL; in br_master_vlan_rcu_free()
178 kfree(v); in br_master_vlan_rcu_free()
201 struct net_bridge_vlan *v; in nbp_vlan_rcu_free() local
203 v = container_of(rcu, struct net_bridge_vlan, rcu); in nbp_vlan_rcu_free()
204 WARN_ON(br_vlan_is_master(v)); in nbp_vlan_rcu_free()
206 if (v->priv_flags & BR_VLFLAG_PER_PORT_STATS) in nbp_vlan_rcu_free()
207 free_percpu(v->stats); in nbp_vlan_rcu_free()
208 v->stats = NULL; in nbp_vlan_rcu_free()
209 kfree(v); in nbp_vlan_rcu_free()
223 static int __vlan_add(struct net_bridge_vlan *v, u16 flags, in __vlan_add() argument
233 if (br_vlan_is_master(v)) { in __vlan_add()
234 br = v->br; in __vlan_add()
238 p = v->port; in __vlan_add()
249 err = __vlan_vid_add(dev, br, v, flags, extack); in __vlan_add()
257 err = br_vlan_add(br, v->vid, in __vlan_add()
264 br_vlan_notify(br, NULL, v->vid, 0, in __vlan_add()
268 masterv = br_vlan_get_master(br, v->vid, extack); in __vlan_add()
273 v->brvlan = masterv; in __vlan_add()
275 v->stats = in __vlan_add()
277 if (!v->stats) { in __vlan_add()
281 v->priv_flags |= BR_VLFLAG_PER_PORT_STATS; in __vlan_add()
283 v->stats = masterv->stats; in __vlan_add()
285 br_multicast_port_ctx_init(p, v, &v->port_mcast_ctx); in __vlan_add()
287 err = br_switchdev_port_vlan_add(dev, v->vid, flags, extack); in __vlan_add()
290 br_multicast_ctx_init(br, v, &v->br_mcast_ctx); in __vlan_add()
291 v->priv_flags |= BR_VLFLAG_GLOBAL_MCAST_ENABLED; in __vlan_add()
295 if (br_vlan_should_use(v)) { in __vlan_add()
296 err = br_fdb_insert(br, p, dev->dev_addr, v->vid); in __vlan_add()
305 v->state = BR_STATE_FORWARDING; in __vlan_add()
307 err = rhashtable_lookup_insert_fast(&vg->vlan_hash, &v->vnode, in __vlan_add()
312 __vlan_add_list(v); in __vlan_add()
313 __vlan_add_flags(v, flags); in __vlan_add()
314 br_multicast_toggle_one_vlan(v, true); in __vlan_add()
317 nbp_vlan_set_vlan_dev_state(p, v->vid); in __vlan_add()
322 if (br_vlan_should_use(v)) { in __vlan_add()
323 br_fdb_find_delete_local(br, p, dev->dev_addr, v->vid); in __vlan_add()
329 __vlan_vid_del(dev, br, v); in __vlan_add()
331 if (v->stats && masterv->stats != v->stats) in __vlan_add()
332 free_percpu(v->stats); in __vlan_add()
333 v->stats = NULL; in __vlan_add()
336 v->brvlan = NULL; in __vlan_add()
339 br_switchdev_port_vlan_del(dev, v->vid); in __vlan_add()
345 static int __vlan_del(struct net_bridge_vlan *v) in __vlan_del() argument
347 struct net_bridge_vlan *masterv = v; in __vlan_del()
352 if (br_vlan_is_master(v)) { in __vlan_del()
353 vg = br_vlan_group(v->br); in __vlan_del()
355 p = v->port; in __vlan_del()
356 vg = nbp_vlan_group(v->port); in __vlan_del()
357 masterv = v->brvlan; in __vlan_del()
360 __vlan_delete_pvid(vg, v->vid); in __vlan_del()
362 err = __vlan_vid_del(p->dev, p->br, v); in __vlan_del()
366 err = br_switchdev_port_vlan_del(v->br->dev, v->vid); in __vlan_del()
372 if (br_vlan_should_use(v)) { in __vlan_del()
373 v->flags &= ~BRIDGE_VLAN_INFO_BRENTRY; in __vlan_del()
377 if (masterv != v) { in __vlan_del()
378 vlan_tunnel_info_del(vg, v); in __vlan_del()
379 rhashtable_remove_fast(&vg->vlan_hash, &v->vnode, in __vlan_del()
381 __vlan_del_list(v); in __vlan_del()
382 nbp_vlan_set_vlan_dev_state(p, v->vid); in __vlan_del()
383 br_multicast_toggle_one_vlan(v, false); in __vlan_del()
384 br_multicast_port_ctx_deinit(&v->port_mcast_ctx); in __vlan_del()
385 call_rcu(&v->rcu, nbp_vlan_rcu_free); in __vlan_del()
434 struct net_bridge_vlan *v; in br_handle_vlan() local
446 v = br_vlan_find(vg, vid); in br_handle_vlan()
452 if (!v || !br_vlan_should_use(v)) { in br_handle_vlan()
461 stats = this_cpu_ptr(v->stats); in br_handle_vlan()
475 if (v->flags & BRIDGE_VLAN_INFO_UNTAGGED && in br_handle_vlan()
480 br_handle_egress_vlan_tunnel(skb, v)) { in br_handle_vlan()
496 struct net_bridge_vlan *v; in __allowed_ingress() local
569 v = br_vlan_find(vg, *vid); in __allowed_ingress()
570 if (!v || !br_vlan_should_use(v)) in __allowed_ingress()
574 *state = br_vlan_get_state(v); in __allowed_ingress()
580 stats = this_cpu_ptr(v->stats); in __allowed_ingress()
587 *vlan = v; in __allowed_ingress()
617 const struct net_bridge_vlan *v; in br_allowed_egress() local
625 v = br_vlan_find(vg, vid); in br_allowed_egress()
626 if (v && br_vlan_should_use(v) && in br_allowed_egress()
627 br_vlan_state_allowed(br_vlan_get_state(v), false)) in br_allowed_egress()
638 struct net_bridge_vlan *v; in br_should_learn() local
660 v = br_vlan_find(vg, *vid); in br_should_learn()
661 if (v && br_vlan_state_allowed(br_vlan_get_state(v), true)) in br_should_learn()
763 struct net_bridge_vlan *v; in br_vlan_delete() local
768 v = br_vlan_find(vg, vid); in br_vlan_delete()
769 if (!v || !br_vlan_is_brentry(v)) in br_vlan_delete()
775 vlan_tunnel_info_del(vg, v); in br_vlan_delete()
777 return __vlan_del(v); in br_vlan_delete()
1003 struct net_bridge_vlan *v; in vlan_default_pvid() local
1008 v = br_vlan_lookup(&vg->vlan_hash, vid); in vlan_default_pvid()
1009 if (v && br_vlan_should_use(v) && in vlan_default_pvid()
1010 (v->flags & BRIDGE_VLAN_INFO_UNTAGGED)) in vlan_default_pvid()
1291 struct net_bridge_vlan *v; in nbp_vlan_delete() local
1295 v = br_vlan_find(nbp_vlan_group(port), vid); in nbp_vlan_delete()
1296 if (!v) in nbp_vlan_delete()
1301 return __vlan_del(v); in nbp_vlan_delete()
1317 void br_vlan_get_stats(const struct net_bridge_vlan *v, in br_vlan_get_stats() argument
1328 cpu_stats = per_cpu_ptr(v->stats, i); in br_vlan_get_stats()
1413 struct net_bridge_vlan *v; in br_vlan_fill_forward_path_mode() local
1419 v = br_vlan_find(vg, path->bridge.vlan_id); in br_vlan_fill_forward_path_mode()
1420 if (!v || !br_vlan_should_use(v)) in br_vlan_fill_forward_path_mode()
1423 if (!(v->flags & BRIDGE_VLAN_INFO_UNTAGGED)) in br_vlan_fill_forward_path_mode()
1428 else if (v->priv_flags & BR_VLFLAG_ADDED_BY_SWITCHDEV) in br_vlan_fill_forward_path_mode()
1440 struct net_bridge_vlan *v; in br_vlan_get_info() local
1452 v = br_vlan_find(vg, vid); in br_vlan_get_info()
1453 if (!v) in br_vlan_get_info()
1457 p_vinfo->flags = v->flags; in br_vlan_get_info()
1468 struct net_bridge_vlan *v; in br_vlan_get_info_rcu() local
1479 v = br_vlan_find(vg, vid); in br_vlan_get_info_rcu()
1480 if (!v) in br_vlan_get_info_rcu()
1484 p_vinfo->flags = v->flags; in br_vlan_get_info_rcu()
1721 const struct net_bridge_vlan *v) in br_vlan_stats_fill() argument
1730 br_vlan_get_stats(v, &stats); in br_vlan_stats_fill()
1810 struct net_bridge_vlan *v = NULL; in br_vlan_notify() local
1848 v = br_vlan_find(vg, vid); in br_vlan_notify()
1849 if (!v || !br_vlan_should_use(v)) in br_vlan_notify()
1852 flags = v->flags; in br_vlan_notify()
1853 if (br_get_pvid(vg) == v->vid) in br_vlan_notify()
1862 if (!br_vlan_fill_vids(skb, vid, vid_range, v, flags, false)) in br_vlan_notify()
1900 struct net_bridge_vlan *v; in br_vlan_replay() local
1940 list_for_each_entry(v, &vg->vlan_list, vlist) { in br_vlan_replay()
1944 .flags = br_vlan_flags(v, pvid), in br_vlan_replay()
1945 .vid = v->vid, in br_vlan_replay()
1948 if (!br_vlan_should_use(v)) in br_vlan_replay()
1973 struct net_bridge_vlan *v, *range_start = NULL, *range_end = NULL; in br_vlan_dump_dev() local
2018 list_for_each_entry_rcu(v, &vg->vlan_list, vlist) { in br_vlan_dump_dev()
2019 if (!dump_global && !br_vlan_should_use(v)) in br_vlan_dump_dev()
2027 range_start = v; in br_vlan_dump_dev()
2028 range_end = v; in br_vlan_dump_dev()
2033 if (br_vlan_global_opts_can_enter_range(v, range_end)) in br_vlan_dump_dev()
2044 range_start = v; in br_vlan_dump_dev()
2045 } else if (dump_stats || v->vid == pvid || in br_vlan_dump_dev()
2046 !br_vlan_can_enter_range(v, range_end)) { in br_vlan_dump_dev()
2058 range_start = v; in br_vlan_dump_dev()
2061 range_end = v; in br_vlan_dump_dev()