Lines Matching refs:lan966x
23 void lan966x_mdb_init(struct lan966x *lan966x)
25 INIT_LIST_HEAD(&lan966x->mdb_entries);
26 INIT_LIST_HEAD(&lan966x->pgid_entries);
29 static void lan966x_mdb_purge_mdb_entries(struct lan966x *lan966x)
33 list_for_each_entry_safe(mdb_entry, tmp, &lan966x->mdb_entries, list) {
39 static void lan966x_mdb_purge_pgid_entries(struct lan966x *lan966x)
43 list_for_each_entry_safe(pgid_entry, tmp, &lan966x->pgid_entries, list) {
49 void lan966x_mdb_deinit(struct lan966x *lan966x)
51 lan966x_mdb_purge_mdb_entries(lan966x);
52 lan966x_mdb_purge_pgid_entries(lan966x);
56 lan966x_mdb_entry_get(struct lan966x *lan966x,
62 list_for_each_entry(mdb_entry, &lan966x->mdb_entries, list) {
72 lan966x_mdb_entry_add(struct lan966x *lan966x,
84 list_add_tail(&mdb_entry->list, &lan966x->mdb_entries);
110 struct lan966x *lan966x = port->lan966x;
115 mdb_entry = lan966x_mdb_entry_get(lan966x, mdb->addr, mdb->vid);
117 mdb_entry = lan966x_mdb_entry_add(lan966x, mdb);
122 lan966x_mac_forget(lan966x, mac, mdb_entry->vid, type);
131 if (lan966x_vlan_cpu_member_cpu_vlan_mask(lan966x, mdb_entry->vid) &&
136 return lan966x_mac_ip_learn(lan966x, cpu_copy,
145 struct lan966x *lan966x = port->lan966x;
150 mdb_entry = lan966x_mdb_entry_get(lan966x, mdb->addr, mdb->vid);
167 lan966x_mac_forget(lan966x, mac, mdb_entry->vid, type);
178 return lan966x_mac_ip_learn(lan966x, mdb_entry->cpu_copy,
183 lan966x_pgid_entry_add(struct lan966x *lan966x, int index, u16 ports)
195 list_add_tail(&pgid_entry->list, &lan966x->pgid_entries);
201 lan966x_pgid_entry_get(struct lan966x *lan966x,
210 list_for_each_entry(pgid_entry, &lan966x->pgid_entries, list) {
223 list_for_each_entry(pgid_entry, &lan966x->pgid_entries, list) {
231 return lan966x_pgid_entry_add(lan966x, index,
238 static void lan966x_pgid_entry_del(struct lan966x *lan966x,
253 struct lan966x *lan966x = port->lan966x;
258 mdb_entry = lan966x_mdb_entry_get(lan966x, mdb->addr, mdb->vid);
260 mdb_entry = lan966x_mdb_entry_add(lan966x, mdb);
264 lan966x_pgid_entry_del(lan966x, mdb_entry->pgid);
266 lan966x_mac_forget(lan966x, mac, mdb_entry->vid, type);
276 pgid_entry = lan966x_pgid_entry_get(lan966x, mdb_entry);
285 if (!lan966x_vlan_cpu_member_cpu_vlan_mask(lan966x, mdb_entry->vid) &&
291 lan966x, ANA_PGID(pgid_entry->index));
293 return lan966x_mac_learn(lan966x, pgid_entry->index, mdb_entry->mac,
302 struct lan966x *lan966x = port->lan966x;
308 mdb_entry = lan966x_mdb_entry_get(lan966x, mdb->addr, mdb->vid);
327 lan966x_mac_forget(lan966x, mac, mdb_entry->vid, type);
328 lan966x_pgid_entry_del(lan966x, mdb_entry->pgid);
338 pgid_entry = lan966x_pgid_entry_get(lan966x, mdb_entry);
348 lan966x, ANA_PGID(pgid_entry->index));
350 return lan966x_mac_learn(lan966x, pgid_entry->index, mdb_entry->mac,
398 static void lan966x_mdb_ip_cpu_copy(struct lan966x *lan966x,
405 lan966x_mac_forget(lan966x, mac, mdb_entry->vid, type);
406 lan966x_mac_ip_learn(lan966x, true, mac, mdb_entry->vid, type);
409 static void lan966x_mdb_l2_cpu_copy(struct lan966x *lan966x,
416 lan966x_pgid_entry_del(lan966x, mdb_entry->pgid);
418 lan966x_mac_forget(lan966x, mac, mdb_entry->vid, type);
422 pgid_entry = lan966x_pgid_entry_get(lan966x, mdb_entry);
430 lan966x, ANA_PGID(pgid_entry->index));
432 lan966x_mac_learn(lan966x, pgid_entry->index, mdb_entry->mac,
436 void lan966x_mdb_write_entries(struct lan966x *lan966x, u16 vid)
441 list_for_each_entry(mdb_entry, &lan966x->mdb_entries, list) {
447 lan966x_mdb_ip_cpu_copy(lan966x, mdb_entry, type);
449 lan966x_mdb_l2_cpu_copy(lan966x, mdb_entry, type);
453 static void lan966x_mdb_ip_cpu_remove(struct lan966x *lan966x,
460 lan966x_mac_forget(lan966x, mac, mdb_entry->vid, type);
461 lan966x_mac_ip_learn(lan966x, false, mac, mdb_entry->vid, type);
464 static void lan966x_mdb_l2_cpu_remove(struct lan966x *lan966x,
471 lan966x_pgid_entry_del(lan966x, mdb_entry->pgid);
473 lan966x_mac_forget(lan966x, mac, mdb_entry->vid, type);
477 pgid_entry = lan966x_pgid_entry_get(lan966x, mdb_entry);
485 lan966x, ANA_PGID(pgid_entry->index));
487 lan966x_mac_learn(lan966x, pgid_entry->index, mdb_entry->mac,
491 void lan966x_mdb_erase_entries(struct lan966x *lan966x, u16 vid)
496 list_for_each_entry(mdb_entry, &lan966x->mdb_entries, list) {
502 lan966x_mdb_ip_cpu_remove(lan966x, mdb_entry, type);
504 lan966x_mdb_l2_cpu_remove(lan966x, mdb_entry, type);
508 void lan966x_mdb_clear_entries(struct lan966x *lan966x)
514 list_for_each_entry(mdb_entry, &lan966x->mdb_entries, list) {
521 lan966x_mac_forget(lan966x, mac, mdb_entry->vid, type);
525 void lan966x_mdb_restore_entries(struct lan966x *lan966x)
532 list_for_each_entry(mdb_entry, &lan966x->mdb_entries, list) {
538 if (lan966x_vlan_cpu_member_cpu_vlan_mask(lan966x,
543 lan966x_mac_ip_learn(lan966x, cpu_copy, mac,
546 lan966x_mac_learn(lan966x, mdb_entry->pgid->index,