Lines Matching full:vid
14 u16 vid = *(u16 *)arg->key; in br_vlan_cmp() local
16 return vle->vid != vid; in br_vlan_cmp()
21 .key_offset = offsetof(struct net_bridge_vlan, vid),
30 static struct net_bridge_vlan *br_vlan_lookup(struct rhashtable *tbl, u16 vid) in br_vlan_lookup() argument
32 return rhashtable_lookup_fast(tbl, &vid, br_vlan_rht_params); in br_vlan_lookup()
35 static bool __vlan_add_pvid(struct net_bridge_vlan_group *vg, u16 vid) in __vlan_add_pvid() argument
37 if (vg->pvid == vid) in __vlan_add_pvid()
41 vg->pvid = vid; in __vlan_add_pvid()
46 static bool __vlan_delete_pvid(struct net_bridge_vlan_group *vg, u16 vid) in __vlan_delete_pvid() argument
48 if (vg->pvid != vid) in __vlan_delete_pvid()
70 ret = __vlan_add_pvid(vg, v->vid); in __vlan_add_flags()
72 ret = __vlan_delete_pvid(vg, v->vid); in __vlan_add_flags()
83 u16 vid, u16 flags) in __vlan_vid_add() argument
90 err = br_switchdev_port_vlan_add(dev, vid, flags); in __vlan_vid_add()
92 return vlan_vid_add(dev, br->vlan_proto, vid); in __vlan_vid_add()
110 if (v->vid < vent->vid) in __vlan_add_list()
124 u16 vid) in __vlan_vid_del() argument
131 err = br_switchdev_port_vlan_del(dev, vid); in __vlan_vid_del()
133 vlan_vid_del(dev, br->vlan_proto, vid); in __vlan_vid_del()
142 static struct net_bridge_vlan *br_vlan_get_master(struct net_bridge *br, u16 vid) in br_vlan_get_master() argument
148 masterv = br_vlan_find(vg, vid); in br_vlan_get_master()
153 if (br_vlan_add(br, vid, 0, &changed)) in br_vlan_get_master()
155 masterv = br_vlan_find(vg, vid); in br_vlan_get_master()
229 err = __vlan_vid_add(dev, br, v->vid, flags); in __vlan_add()
237 err = br_vlan_add(br, v->vid, in __vlan_add()
244 masterv = br_vlan_get_master(br, v->vid); in __vlan_add()
250 err = br_switchdev_port_vlan_add(dev, v->vid, flags); in __vlan_add()
257 err = br_fdb_insert(br, p, dev->dev_addr, v->vid); in __vlan_add()
277 br_fdb_find_delete_local(br, p, dev->dev_addr, v->vid); in __vlan_add()
283 __vlan_vid_del(dev, br, v->vid); in __vlan_add()
289 br_switchdev_port_vlan_del(dev, v->vid); in __vlan_add()
310 __vlan_delete_pvid(vg, v->vid); in __vlan_del()
312 err = __vlan_vid_del(p->dev, p->br, v->vid); in __vlan_del()
316 err = br_switchdev_port_vlan_del(v->br->dev, v->vid); in __vlan_del()
364 u16 vid; in br_handle_vlan() local
374 br_vlan_get_tag(skb, &vid); in br_handle_vlan()
375 v = br_vlan_find(vg, vid); in br_handle_vlan()
412 struct sk_buff *skb, u16 *vid) in __allowed_ingress() argument
430 if (!br_vlan_get_tag(skb, vid)) { in __allowed_ingress()
442 *vid = 0; in __allowed_ingress()
452 if (!*vid) { in __allowed_ingress()
455 /* Frame had a tag with VID 0 or did not have a tag. in __allowed_ingress()
465 *vid = pvid; in __allowed_ingress()
472 * VLAN_TAG_PRESENT bit and its VID field was 0x000. in __allowed_ingress()
473 * We update only VID field and preserve PCP field. in __allowed_ingress()
481 v = br_vlan_find(vg, *vid); in __allowed_ingress()
502 u16 *vid) in br_allowed_ingress() argument
512 return __allowed_ingress(br, vg, skb, vid); in br_allowed_ingress()
520 u16 vid; in br_allowed_egress() local
526 br_vlan_get_tag(skb, &vid); in br_allowed_egress()
527 v = br_vlan_find(vg, vid); in br_allowed_egress()
535 bool br_should_learn(struct net_bridge_port *p, struct sk_buff *skb, u16 *vid) in br_should_learn() argument
548 if (!br_vlan_get_tag(skb, vid) && skb->vlan_proto != br->vlan_proto) in br_should_learn()
549 *vid = 0; in br_should_learn()
551 if (!*vid) { in br_should_learn()
552 *vid = br_get_pvid(vg); in br_should_learn()
553 if (!*vid) in br_should_learn()
559 if (br_vlan_find(vg, *vid)) in br_should_learn()
572 err = br_switchdev_port_vlan_add(br->dev, vlan->vid, flags); in br_vlan_add_existing()
584 vlan->vid); in br_vlan_add_existing()
603 br_switchdev_port_vlan_del(br->dev, vlan->vid); in br_vlan_add_existing()
608 * Must be called with vid in range from 1 to 4094 inclusive.
611 int br_vlan_add(struct net_bridge *br, u16 vid, u16 flags, bool *changed) in br_vlan_add() argument
621 vlan = br_vlan_find(vg, vid); in br_vlan_add()
634 vlan->vid = vid; in br_vlan_add()
652 * Must be called with vid in range from 1 to 4094 inclusive.
654 int br_vlan_delete(struct net_bridge *br, u16 vid) in br_vlan_delete() argument
662 v = br_vlan_find(vg, vid); in br_vlan_delete()
666 br_fdb_find_delete_local(br, NULL, br->dev->dev_addr, vid); in br_vlan_delete()
667 br_fdb_delete_by_port(br, NULL, vid, 0); in br_vlan_delete()
692 struct net_bridge_vlan *br_vlan_find(struct net_bridge_vlan_group *vg, u16 vid) in br_vlan_find() argument
697 return br_vlan_lookup(&vg->vlan_hash, vid); in br_vlan_find()
780 err = vlan_vid_add(p->dev, proto, vlan->vid); in __br_vlan_set_proto()
796 vlan_vid_del(p->dev, oldproto, vlan->vid); in __br_vlan_set_proto()
803 vlan_vid_del(p->dev, proto, vlan->vid); in __br_vlan_set_proto()
808 vlan_vid_del(p->dev, proto, vlan->vid); in __br_vlan_set_proto()
836 static bool vlan_default_pvid(struct net_bridge_vlan_group *vg, u16 vid) in vlan_default_pvid() argument
840 if (vid != vg->pvid) in vlan_default_pvid()
843 v = br_vlan_lookup(&vg->vlan_hash, vid); in vlan_default_pvid()
1075 * Must be called with vid in range from 1 to 4094 inclusive.
1078 int nbp_vlan_add(struct net_bridge_port *port, u16 vid, u16 flags, in nbp_vlan_add() argument
1087 vlan = br_vlan_find(nbp_vlan_group(port), vid); in nbp_vlan_add()
1090 ret = br_switchdev_port_vlan_add(port->dev, vid, flags); in nbp_vlan_add()
1102 vlan->vid = vid; in nbp_vlan_add()
1114 * Must be called with vid in range from 1 to 4094 inclusive.
1116 int nbp_vlan_delete(struct net_bridge_port *port, u16 vid) in nbp_vlan_delete() argument
1122 v = br_vlan_find(nbp_vlan_group(port), vid); in nbp_vlan_delete()
1125 br_fdb_find_delete_local(port->br, port, port->dev->dev_addr, vid); in nbp_vlan_delete()
1126 br_fdb_delete_by_port(port->br, port, vid, 0); in nbp_vlan_delete()
1186 int br_vlan_get_info(const struct net_device *dev, u16 vid, in br_vlan_get_info() argument
1202 v = br_vlan_find(vg, vid); in br_vlan_get_info()
1206 p_vinfo->vid = vid; in br_vlan_get_info()