Lines Matching refs:vid
8 static void __vlan_add_pvid(struct net_port_vlans *v, u16 vid) in __vlan_add_pvid() argument
10 if (v->pvid == vid) in __vlan_add_pvid()
14 v->pvid = vid; in __vlan_add_pvid()
17 static void __vlan_delete_pvid(struct net_port_vlans *v, u16 vid) in __vlan_delete_pvid() argument
19 if (v->pvid != vid) in __vlan_delete_pvid()
26 static void __vlan_add_flags(struct net_port_vlans *v, u16 vid, u16 flags) in __vlan_add_flags() argument
29 __vlan_add_pvid(v, vid); in __vlan_add_flags()
31 __vlan_delete_pvid(v, vid); in __vlan_add_flags()
34 set_bit(vid, v->untagged_bitmap); in __vlan_add_flags()
36 clear_bit(vid, v->untagged_bitmap); in __vlan_add_flags()
39 static int __vlan_add(struct net_port_vlans *v, u16 vid, u16 flags) in __vlan_add() argument
46 if (test_bit(vid, v->vlan_bitmap)) { in __vlan_add()
47 __vlan_add_flags(v, vid, flags); in __vlan_add()
65 err = vlan_vid_add(dev, br->vlan_proto, vid); in __vlan_add()
70 err = br_fdb_insert(br, p, dev->dev_addr, vid); in __vlan_add()
77 set_bit(vid, v->vlan_bitmap); in __vlan_add()
79 __vlan_add_flags(v, vid, flags); in __vlan_add()
85 vlan_vid_del(dev, br->vlan_proto, vid); in __vlan_add()
89 static int __vlan_del(struct net_port_vlans *v, u16 vid) in __vlan_del() argument
91 if (!test_bit(vid, v->vlan_bitmap)) in __vlan_del()
94 __vlan_delete_pvid(v, vid); in __vlan_del()
95 clear_bit(vid, v->untagged_bitmap); in __vlan_del()
99 vlan_vid_del(p->dev, p->br->vlan_proto, vid); in __vlan_del()
102 clear_bit(vid, v->vlan_bitmap); in __vlan_del()
130 u16 vid; in br_handle_vlan() local
154 br_vlan_get_tag(skb, &vid); in br_handle_vlan()
155 if (test_bit(vid, pv->untagged_bitmap)) in br_handle_vlan()
164 struct sk_buff *skb, u16 *vid) in br_allowed_ingress() argument
197 if (!br_vlan_get_tag(skb, vid)) { in br_allowed_ingress()
209 *vid = 0; in br_allowed_ingress()
219 if (!*vid) { in br_allowed_ingress()
232 *vid = pvid; in br_allowed_ingress()
248 if (test_bit(*vid, v->vlan_bitmap)) in br_allowed_ingress()
260 u16 vid; in br_allowed_egress() local
269 br_vlan_get_tag(skb, &vid); in br_allowed_egress()
270 if (test_bit(vid, v->vlan_bitmap)) in br_allowed_egress()
277 bool br_should_learn(struct net_bridge_port *p, struct sk_buff *skb, u16 *vid) in br_should_learn() argument
290 if (!br_vlan_get_tag(skb, vid) && skb->vlan_proto != br->vlan_proto) in br_should_learn()
291 *vid = 0; in br_should_learn()
293 if (!*vid) { in br_should_learn()
294 *vid = br_get_pvid(v); in br_should_learn()
295 if (!*vid) in br_should_learn()
301 if (test_bit(*vid, v->vlan_bitmap)) in br_should_learn()
310 int br_vlan_add(struct net_bridge *br, u16 vid, u16 flags) in br_vlan_add() argument
319 return __vlan_add(pv, vid, flags); in br_vlan_add()
328 err = __vlan_add(pv, vid, flags); in br_vlan_add()
342 int br_vlan_delete(struct net_bridge *br, u16 vid) in br_vlan_delete() argument
352 br_fdb_find_delete_local(br, NULL, br->dev->dev_addr, vid); in br_vlan_delete()
354 __vlan_del(pv, vid); in br_vlan_delete()
370 bool br_vlan_find(struct net_bridge *br, u16 vid) in br_vlan_find() argument
381 if (test_bit(vid, pv->vlan_bitmap)) in br_vlan_find()
440 u16 vid, errvid; in br_vlan_set_proto() local
458 for_each_set_bit(vid, pv->vlan_bitmap, VLAN_N_VID) { in br_vlan_set_proto()
459 err = vlan_vid_add(p->dev, proto, vid); in br_vlan_set_proto()
477 for_each_set_bit(vid, pv->vlan_bitmap, VLAN_N_VID) in br_vlan_set_proto()
478 vlan_vid_del(p->dev, oldproto, vid); in br_vlan_set_proto()
486 errvid = vid; in br_vlan_set_proto()
487 for_each_set_bit(vid, pv->vlan_bitmap, errvid) in br_vlan_set_proto()
488 vlan_vid_del(p->dev, proto, vid); in br_vlan_set_proto()
495 for_each_set_bit(vid, pv->vlan_bitmap, VLAN_N_VID) in br_vlan_set_proto()
496 vlan_vid_del(p->dev, proto, vid); in br_vlan_set_proto()
502 static bool vlan_default_pvid(struct net_port_vlans *pv, u16 vid) in vlan_default_pvid() argument
504 return pv && vid == pv->pvid && test_bit(vid, pv->untagged_bitmap); in vlan_default_pvid()
642 int nbp_vlan_add(struct net_bridge_port *port, u16 vid, u16 flags) in nbp_vlan_add() argument
651 return __vlan_add(pv, vid, flags); in nbp_vlan_add()
663 err = __vlan_add(pv, vid, flags); in nbp_vlan_add()
678 int nbp_vlan_delete(struct net_bridge_port *port, u16 vid) in nbp_vlan_delete() argument
688 br_fdb_find_delete_local(port->br, port, port->dev->dev_addr, vid); in nbp_vlan_delete()
690 return __vlan_del(pv, vid); in nbp_vlan_delete()
696 u16 vid; in nbp_vlan_flush() local
704 for_each_set_bit(vid, pv->vlan_bitmap, VLAN_N_VID) in nbp_vlan_flush()
705 vlan_vid_del(port->dev, port->br->vlan_proto, vid); in nbp_vlan_flush()
710 bool nbp_vlan_find(struct net_bridge_port *port, u16 vid) in nbp_vlan_find() argument
721 if (test_bit(vid, pv->vlan_bitmap)) in nbp_vlan_find()