Lines Matching refs:vid

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