Lines Matching refs:vid

26 static void lan966x_vlan_set_mask(struct lan966x *lan966x, u16 vid)  in lan966x_vlan_set_mask()  argument
28 u16 mask = lan966x->vlan_mask[vid]; in lan966x_vlan_set_mask()
35 ANA_VLANTIDX_V_INDEX_SET(vid), in lan966x_vlan_set_mask()
54 static void lan966x_vlan_port_add_vlan_mask(struct lan966x_port *port, u16 vid) in lan966x_vlan_port_add_vlan_mask() argument
59 lan966x->vlan_mask[vid] |= BIT(p); in lan966x_vlan_port_add_vlan_mask()
60 lan966x_vlan_set_mask(lan966x, vid); in lan966x_vlan_port_add_vlan_mask()
63 static void lan966x_vlan_port_del_vlan_mask(struct lan966x_port *port, u16 vid) in lan966x_vlan_port_del_vlan_mask() argument
68 lan966x->vlan_mask[vid] &= ~BIT(p); in lan966x_vlan_port_del_vlan_mask()
69 lan966x_vlan_set_mask(lan966x, vid); in lan966x_vlan_port_del_vlan_mask()
72 static bool lan966x_vlan_port_any_vlan_mask(struct lan966x *lan966x, u16 vid) in lan966x_vlan_port_any_vlan_mask() argument
74 return !!(lan966x->vlan_mask[vid] & ~BIT(CPU_PORT)); in lan966x_vlan_port_any_vlan_mask()
77 static void lan966x_vlan_cpu_add_vlan_mask(struct lan966x *lan966x, u16 vid) in lan966x_vlan_cpu_add_vlan_mask() argument
79 lan966x->vlan_mask[vid] |= BIT(CPU_PORT); in lan966x_vlan_cpu_add_vlan_mask()
80 lan966x_vlan_set_mask(lan966x, vid); in lan966x_vlan_cpu_add_vlan_mask()
83 static void lan966x_vlan_cpu_del_vlan_mask(struct lan966x *lan966x, u16 vid) in lan966x_vlan_cpu_del_vlan_mask() argument
85 lan966x->vlan_mask[vid] &= ~BIT(CPU_PORT); in lan966x_vlan_cpu_del_vlan_mask()
86 lan966x_vlan_set_mask(lan966x, vid); in lan966x_vlan_cpu_del_vlan_mask()
89 static void lan966x_vlan_cpu_add_cpu_vlan_mask(struct lan966x *lan966x, u16 vid) in lan966x_vlan_cpu_add_cpu_vlan_mask() argument
91 __set_bit(vid, lan966x->cpu_vlan_mask); in lan966x_vlan_cpu_add_cpu_vlan_mask()
94 static void lan966x_vlan_cpu_del_cpu_vlan_mask(struct lan966x *lan966x, u16 vid) in lan966x_vlan_cpu_del_cpu_vlan_mask() argument
96 __clear_bit(vid, lan966x->cpu_vlan_mask); in lan966x_vlan_cpu_del_cpu_vlan_mask()
99 bool lan966x_vlan_cpu_member_cpu_vlan_mask(struct lan966x *lan966x, u16 vid) in lan966x_vlan_cpu_member_cpu_vlan_mask() argument
101 return test_bit(vid, lan966x->cpu_vlan_mask); in lan966x_vlan_cpu_member_cpu_vlan_mask()
114 int lan966x_vlan_port_set_vid(struct lan966x_port *port, u16 vid, in lan966x_vlan_port_set_vid() argument
120 if (untagged && port->vid != vid) { in lan966x_vlan_port_set_vid()
121 if (port->vid) { in lan966x_vlan_port_set_vid()
124 port->vid); in lan966x_vlan_port_set_vid()
127 port->vid = vid; in lan966x_vlan_port_set_vid()
132 port->pvid = vid; in lan966x_vlan_port_set_vid()
137 static void lan966x_vlan_port_remove_vid(struct lan966x_port *port, u16 vid) in lan966x_vlan_port_remove_vid() argument
139 if (port->pvid == vid) in lan966x_vlan_port_remove_vid()
142 if (port->vid == vid) in lan966x_vlan_port_remove_vid()
143 port->vid = 0; in lan966x_vlan_port_remove_vid()
193 if (port->vid) in lan966x_vlan_port_apply()
207 REW_PORT_VLAN_CFG_PORT_VID_SET(port->vid), in lan966x_vlan_port_apply()
214 u16 vid, in lan966x_vlan_port_add_vlan() argument
225 if (lan966x_vlan_cpu_member_cpu_vlan_mask(lan966x, vid)) { in lan966x_vlan_port_add_vlan()
226 lan966x_vlan_cpu_add_vlan_mask(lan966x, vid); in lan966x_vlan_port_add_vlan()
227 lan966x_fdb_write_entries(lan966x, vid); in lan966x_vlan_port_add_vlan()
228 lan966x_mdb_write_entries(lan966x, vid); in lan966x_vlan_port_add_vlan()
231 lan966x_vlan_port_set_vid(port, vid, pvid, untagged); in lan966x_vlan_port_add_vlan()
232 lan966x_vlan_port_add_vlan_mask(port, vid); in lan966x_vlan_port_add_vlan()
236 void lan966x_vlan_port_del_vlan(struct lan966x_port *port, u16 vid) in lan966x_vlan_port_del_vlan() argument
240 lan966x_vlan_port_remove_vid(port, vid); in lan966x_vlan_port_del_vlan()
241 lan966x_vlan_port_del_vlan_mask(port, vid); in lan966x_vlan_port_del_vlan()
248 if (!lan966x_vlan_port_any_vlan_mask(lan966x, vid)) { in lan966x_vlan_port_del_vlan()
249 lan966x_vlan_cpu_del_vlan_mask(lan966x, vid); in lan966x_vlan_port_del_vlan()
250 lan966x_fdb_erase_entries(lan966x, vid); in lan966x_vlan_port_del_vlan()
251 lan966x_mdb_erase_entries(lan966x, vid); in lan966x_vlan_port_del_vlan()
255 void lan966x_vlan_cpu_add_vlan(struct lan966x *lan966x, u16 vid) in lan966x_vlan_cpu_add_vlan() argument
265 if (lan966x_vlan_port_any_vlan_mask(lan966x, vid)) { in lan966x_vlan_cpu_add_vlan()
266 lan966x_vlan_cpu_add_vlan_mask(lan966x, vid); in lan966x_vlan_cpu_add_vlan()
267 lan966x_mdb_write_entries(lan966x, vid); in lan966x_vlan_cpu_add_vlan()
270 lan966x_vlan_cpu_add_cpu_vlan_mask(lan966x, vid); in lan966x_vlan_cpu_add_vlan()
271 lan966x_fdb_write_entries(lan966x, vid); in lan966x_vlan_cpu_add_vlan()
274 void lan966x_vlan_cpu_del_vlan(struct lan966x *lan966x, u16 vid) in lan966x_vlan_cpu_del_vlan() argument
277 lan966x_vlan_cpu_del_cpu_vlan_mask(lan966x, vid); in lan966x_vlan_cpu_del_vlan()
278 lan966x_vlan_cpu_del_vlan_mask(lan966x, vid); in lan966x_vlan_cpu_del_vlan()
279 lan966x_fdb_erase_entries(lan966x, vid); in lan966x_vlan_cpu_del_vlan()
280 lan966x_mdb_erase_entries(lan966x, vid); in lan966x_vlan_cpu_del_vlan()
285 u16 port, vid; in lan966x_vlan_init() local
293 for (vid = 1; vid < VLAN_N_VID; vid++) { in lan966x_vlan_init()
294 lan966x->vlan_mask[vid] = 0; in lan966x_vlan_init()
295 lan966x_vlan_set_mask(lan966x, vid); in lan966x_vlan_init()