Lines Matching refs:ale_entry
2306 cpsw_ale_read_entry(struct cpsw_softc *sc, uint16_t idx, uint32_t *ale_entry) in cpsw_ale_read_entry() argument
2309 ale_entry[0] = cpsw_read_4(sc, CPSW_ALE_TBLW0); in cpsw_ale_read_entry()
2310 ale_entry[1] = cpsw_read_4(sc, CPSW_ALE_TBLW1); in cpsw_ale_read_entry()
2311 ale_entry[2] = cpsw_read_4(sc, CPSW_ALE_TBLW2); in cpsw_ale_read_entry()
2315 cpsw_ale_write_entry(struct cpsw_softc *sc, uint16_t idx, uint32_t *ale_entry) in cpsw_ale_write_entry() argument
2317 cpsw_write_4(sc, CPSW_ALE_TBLW0, ale_entry[0]); in cpsw_ale_write_entry()
2318 cpsw_write_4(sc, CPSW_ALE_TBLW1, ale_entry[1]); in cpsw_ale_write_entry()
2319 cpsw_write_4(sc, CPSW_ALE_TBLW2, ale_entry[2]); in cpsw_ale_write_entry()
2327 uint32_t ale_entry[3]; in cpsw_ale_remove_all_mc_entries() local
2331 cpsw_ale_read_entry(sc, i, ale_entry); in cpsw_ale_remove_all_mc_entries()
2332 if ((ALE_TYPE(ale_entry) == ALE_TYPE_ADDR || in cpsw_ale_remove_all_mc_entries()
2333 ALE_TYPE(ale_entry) == ALE_TYPE_VLAN_ADDR) && in cpsw_ale_remove_all_mc_entries()
2334 ALE_MCAST(ale_entry) == 1) { /* MCast link addr */ in cpsw_ale_remove_all_mc_entries()
2335 ale_entry[0] = ale_entry[1] = ale_entry[2] = 0; in cpsw_ale_remove_all_mc_entries()
2336 cpsw_ale_write_entry(sc, i, ale_entry); in cpsw_ale_remove_all_mc_entries()
2346 uint32_t ale_entry[3], ale_type; in cpsw_ale_mc_entry_set() local
2350 cpsw_ale_read_entry(sc, i, ale_entry); in cpsw_ale_mc_entry_set()
2353 if (free_index < 0 && ALE_TYPE(ale_entry) == 0) in cpsw_ale_mc_entry_set()
2356 if ((((ale_entry[1] >> 8) & 0xFF) == mac[0]) && in cpsw_ale_mc_entry_set()
2357 (((ale_entry[1] >> 0) & 0xFF) == mac[1]) && in cpsw_ale_mc_entry_set()
2358 (((ale_entry[0] >>24) & 0xFF) == mac[2]) && in cpsw_ale_mc_entry_set()
2359 (((ale_entry[0] >>16) & 0xFF) == mac[3]) && in cpsw_ale_mc_entry_set()
2360 (((ale_entry[0] >> 8) & 0xFF) == mac[4]) && in cpsw_ale_mc_entry_set()
2361 (((ale_entry[0] >> 0) & 0xFF) == mac[5])) { in cpsw_ale_mc_entry_set()
2379 ale_entry[0] = mac[2] << 24 | mac[3] << 16 | mac[4] << 8 | mac[5]; in cpsw_ale_mc_entry_set()
2380 ale_entry[1] = mac[0] << 8 | mac[1]; in cpsw_ale_mc_entry_set()
2383 ale_entry[1] |= ALE_MCAST_FWD | ale_type; in cpsw_ale_mc_entry_set()
2386 ale_entry[2] = (portmap & 7) << 2; in cpsw_ale_mc_entry_set()
2388 cpsw_ale_write_entry(sc, i, ale_entry); in cpsw_ale_mc_entry_set()
2396 uint32_t ale_entry[3]; in cpsw_ale_dump_table() local
2398 cpsw_ale_read_entry(sc, i, ale_entry); in cpsw_ale_dump_table()
2399 switch (ALE_TYPE(ale_entry)) { in cpsw_ale_dump_table()
2401 printf("ALE[%4u] %08x %08x %08x ", i, ale_entry[2], in cpsw_ale_dump_table()
2402 ale_entry[1], ale_entry[0]); in cpsw_ale_dump_table()
2403 printf("type: %u ", ALE_TYPE(ale_entry)); in cpsw_ale_dump_table()
2404 printf("vlan: %u ", ALE_VLAN(ale_entry)); in cpsw_ale_dump_table()
2405 printf("untag: %u ", ALE_VLAN_UNTAG(ale_entry)); in cpsw_ale_dump_table()
2406 printf("reg flood: %u ", ALE_VLAN_REGFLOOD(ale_entry)); in cpsw_ale_dump_table()
2407 printf("unreg flood: %u ", ALE_VLAN_UNREGFLOOD(ale_entry)); in cpsw_ale_dump_table()
2408 printf("members: %u ", ALE_VLAN_MEMBERS(ale_entry)); in cpsw_ale_dump_table()
2413 printf("ALE[%4u] %08x %08x %08x ", i, ale_entry[2], in cpsw_ale_dump_table()
2414 ale_entry[1], ale_entry[0]); in cpsw_ale_dump_table()
2415 printf("type: %u ", ALE_TYPE(ale_entry)); in cpsw_ale_dump_table()
2417 (ale_entry[1] >> 8) & 0xFF, in cpsw_ale_dump_table()
2418 (ale_entry[1] >> 0) & 0xFF, in cpsw_ale_dump_table()
2419 (ale_entry[0] >>24) & 0xFF, in cpsw_ale_dump_table()
2420 (ale_entry[0] >>16) & 0xFF, in cpsw_ale_dump_table()
2421 (ale_entry[0] >> 8) & 0xFF, in cpsw_ale_dump_table()
2422 (ale_entry[0] >> 0) & 0xFF); in cpsw_ale_dump_table()
2423 printf(ALE_MCAST(ale_entry) ? "mcast " : "ucast "); in cpsw_ale_dump_table()
2424 if (ALE_TYPE(ale_entry) == ALE_TYPE_VLAN_ADDR) in cpsw_ale_dump_table()
2425 printf("vlan: %u ", ALE_VLAN(ale_entry)); in cpsw_ale_dump_table()
2426 printf("port: %u ", ALE_PORTS(ale_entry)); in cpsw_ale_dump_table()
2454 uint32_t ale_entry[3], ale_type, portmask; in cpswp_ale_update_addresses() local
2470 ale_entry[0] = mac[2] << 24 | mac[3] << 16 | mac[4] << 8 | mac[5]; in cpswp_ale_update_addresses()
2471 ale_entry[1] = ale_type | mac[0] << 8 | mac[1]; /* addr entry + mac */ in cpswp_ale_update_addresses()
2472 ale_entry[2] = 0; /* port = 0 */ in cpswp_ale_update_addresses()
2473 cpsw_ale_write_entry(sc->swsc, 0 + 2 * sc->unit, ale_entry); in cpswp_ale_update_addresses()
2482 ale_entry[0] = 0xffffffff; /* Lower 32 bits of MAC */ in cpswp_ale_update_addresses()
2484 ale_entry[1] = ALE_MCAST_FWD | ale_type | 0xffff; in cpswp_ale_update_addresses()
2485 ale_entry[2] = portmask << 2; in cpswp_ale_update_addresses()
2486 cpsw_ale_write_entry(sc->swsc, 1 + 2 * sc->unit, ale_entry); in cpswp_ale_update_addresses()
2504 uint32_t ale_entry[3]; in cpsw_ale_update_vlan_table() local
2509 cpsw_ale_read_entry(sc, i, ale_entry); in cpsw_ale_update_vlan_table()
2512 if (free_index < 0 && ALE_TYPE(ale_entry) == 0) in cpsw_ale_update_vlan_table()
2515 if (ALE_VLAN(ale_entry) == vlan) { in cpsw_ale_update_vlan_table()
2527 ale_entry[0] = (untag & 7) << 24 | (mcregflood & 7) << 16 | in cpsw_ale_update_vlan_table()
2529 ale_entry[1] = ALE_TYPE_VLAN << 28 | vlan << 16; in cpsw_ale_update_vlan_table()
2530 ale_entry[2] = 0; in cpsw_ale_update_vlan_table()
2531 cpsw_ale_write_entry(sc, i, ale_entry); in cpsw_ale_update_vlan_table()
2894 uint32_t ale_entry[3]; in cpsw_getvgroup() local
2908 cpsw_ale_read_entry(sc, i, ale_entry); in cpsw_getvgroup()
2909 if (ALE_TYPE(ale_entry) != ALE_TYPE_VLAN) in cpsw_getvgroup()
2911 if (vid != ALE_VLAN(ale_entry)) in cpsw_getvgroup()
2915 vg->es_vid = ALE_VLAN(ale_entry) | ETHERSWITCH_VID_VALID; in cpsw_getvgroup()
2916 vg->es_member_ports = ALE_VLAN_MEMBERS(ale_entry); in cpsw_getvgroup()
2917 vg->es_untagged_ports = ALE_VLAN_UNTAG(ale_entry); in cpsw_getvgroup()
2927 uint32_t ale_entry[3]; in cpsw_remove_vlan() local
2930 cpsw_ale_read_entry(sc, i, ale_entry); in cpsw_remove_vlan()
2931 if (ALE_TYPE(ale_entry) != ALE_TYPE_VLAN) in cpsw_remove_vlan()
2933 if (vlan != ALE_VLAN(ale_entry)) in cpsw_remove_vlan()
2935 ale_entry[0] = ale_entry[1] = ale_entry[2] = 0; in cpsw_remove_vlan()
2936 cpsw_ale_write_entry(sc, i, ale_entry); in cpsw_remove_vlan()