Lines Matching refs:lan966x

10 static int lan966x_vlan_get_status(struct lan966x *lan966x)
12 return lan_rd(lan966x, ANA_VLANACCESS);
15 static int lan966x_vlan_wait_for_completion(struct lan966x *lan966x)
20 lan966x, val,
26 static void lan966x_vlan_set_mask(struct lan966x *lan966x, u16 vid)
28 u16 mask = lan966x->vlan_mask[vid];
38 lan966x, ANA_VLANTIDX);
43 lan966x, ANA_VLAN_PORT_MASK);
48 lan966x, ANA_VLANACCESS);
50 if (lan966x_vlan_wait_for_completion(lan966x))
51 dev_err(lan966x->dev, "Vlan set mask failed\n");
56 struct lan966x *lan966x = port->lan966x;
59 lan966x->vlan_mask[vid] |= BIT(p);
60 lan966x_vlan_set_mask(lan966x, vid);
65 struct lan966x *lan966x = port->lan966x;
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);
106 struct lan966x *lan966x = port->lan966x;
108 if (!(lan966x->bridge_mask & BIT(port->chip_port)))
117 struct lan966x *lan966x = port->lan966x;
122 dev_err(lan966x->dev,
161 struct lan966x *lan966x = port->lan966x;
170 lan966x, REW_TAG_CFG(port->chip_port));
175 struct lan966x *lan966x = port->lan966x;
191 lan966x, ANA_VLAN_CFG(port->chip_port));
197 lan966x, DEV_MAC_TAGS_CFG(port->chip_port));
209 lan_wr(val, lan966x, ANA_DROP_CFG(port->chip_port));
224 lan966x, REW_TAG_CFG(port->chip_port));
231 lan966x, REW_PORT_VLAN_CFG(port->chip_port));
239 struct lan966x *lan966x = port->lan966x;
246 if (lan966x_vlan_cpu_member_cpu_vlan_mask(lan966x, vid)) {
247 lan966x_vlan_cpu_add_vlan_mask(lan966x, vid);
248 lan966x_fdb_write_entries(lan966x, vid);
249 lan966x_mdb_write_entries(lan966x, vid);
259 struct lan966x *lan966x = port->lan966x;
269 if (!lan966x_vlan_port_any_vlan_mask(lan966x, vid)) {
270 lan966x_vlan_cpu_del_vlan_mask(lan966x, vid);
271 lan966x_fdb_erase_entries(lan966x, vid);
272 lan966x_mdb_erase_entries(lan966x, vid);
276 void lan966x_vlan_cpu_add_vlan(struct lan966x *lan966x, u16 vid)
286 if (lan966x_vlan_port_any_vlan_mask(lan966x, vid)) {
287 lan966x_vlan_cpu_add_vlan_mask(lan966x, vid);
288 lan966x_mdb_write_entries(lan966x, vid);
291 lan966x_vlan_cpu_add_cpu_vlan_mask(lan966x, vid);
292 lan966x_fdb_write_entries(lan966x, vid);
295 void lan966x_vlan_cpu_del_vlan(struct lan966x *lan966x, u16 vid)
298 lan966x_vlan_cpu_del_cpu_vlan_mask(lan966x, vid);
299 lan966x_vlan_cpu_del_vlan_mask(lan966x, vid);
300 lan966x_fdb_erase_entries(lan966x, vid);
301 lan966x_mdb_erase_entries(lan966x, vid);
304 void lan966x_vlan_init(struct lan966x *lan966x)
311 lan966x, ANA_VLANACCESS);
312 lan966x_vlan_wait_for_completion(lan966x);
315 lan966x->vlan_mask[vid] = 0;
316 lan966x_vlan_set_mask(lan966x, vid);
320 lan966x->vlan_mask[HOST_PVID] =
321 GENMASK(lan966x->num_phys_ports - 1, 0) | BIT(CPU_PORT);
322 lan966x_vlan_set_mask(lan966x, HOST_PVID);
324 lan966x->vlan_mask[UNAWARE_PVID] =
325 GENMASK(lan966x->num_phys_ports - 1, 0) | BIT(CPU_PORT);
326 lan966x_vlan_set_mask(lan966x, UNAWARE_PVID);
328 lan966x_vlan_cpu_add_cpu_vlan_mask(lan966x, UNAWARE_PVID);
334 lan966x, ANA_VLAN_CFG(CPU_PORT));
337 lan_wr(GENMASK(lan966x->num_phys_ports, 0),
338 lan966x, ANA_VLANMASK);
340 for (port = 0; port < lan966x->num_phys_ports; port++) {
341 lan_wr(0, lan966x, REW_PORT_VLAN_CFG(port));
342 lan_wr(0, lan966x, REW_TAG_CFG(port));