ale_entry 61 drivers/net/ethernet/ti/cpsw_ale.c static inline int cpsw_ale_get_field(u32 *ale_entry, u32 start, u32 bits) ale_entry 68 drivers/net/ethernet/ti/cpsw_ale.c return (ale_entry[idx] >> start) & BITMASK(bits); ale_entry 71 drivers/net/ethernet/ti/cpsw_ale.c static inline void cpsw_ale_set_field(u32 *ale_entry, u32 start, u32 bits, ale_entry 80 drivers/net/ethernet/ti/cpsw_ale.c ale_entry[idx] &= ~(BITMASK(bits) << start); ale_entry 81 drivers/net/ethernet/ti/cpsw_ale.c ale_entry[idx] |= (value << start); ale_entry 85 drivers/net/ethernet/ti/cpsw_ale.c static inline int cpsw_ale_get_##name(u32 *ale_entry) \ ale_entry 87 drivers/net/ethernet/ti/cpsw_ale.c return cpsw_ale_get_field(ale_entry, start, bits); \ ale_entry 89 drivers/net/ethernet/ti/cpsw_ale.c static inline void cpsw_ale_set_##name(u32 *ale_entry, u32 value) \ ale_entry 91 drivers/net/ethernet/ti/cpsw_ale.c cpsw_ale_set_field(ale_entry, start, bits, value); \ ale_entry 95 drivers/net/ethernet/ti/cpsw_ale.c static inline int cpsw_ale_get_##name(u32 *ale_entry, u32 bits) \ ale_entry 97 drivers/net/ethernet/ti/cpsw_ale.c return cpsw_ale_get_field(ale_entry, start, bits); \ ale_entry 99 drivers/net/ethernet/ti/cpsw_ale.c static inline void cpsw_ale_set_##name(u32 *ale_entry, u32 value, \ ale_entry 102 drivers/net/ethernet/ti/cpsw_ale.c cpsw_ale_set_field(ale_entry, start, bits, value); \ ale_entry 124 drivers/net/ethernet/ti/cpsw_ale.c static inline void cpsw_ale_get_addr(u32 *ale_entry, u8 *addr) ale_entry 129 drivers/net/ethernet/ti/cpsw_ale.c addr[i] = cpsw_ale_get_field(ale_entry, 40 - 8*i, 8); ale_entry 132 drivers/net/ethernet/ti/cpsw_ale.c static inline void cpsw_ale_set_addr(u32 *ale_entry, const u8 *addr) ale_entry 137 drivers/net/ethernet/ti/cpsw_ale.c cpsw_ale_set_field(ale_entry, 40 - 8*i, 8, addr[i]); ale_entry 140 drivers/net/ethernet/ti/cpsw_ale.c static int cpsw_ale_read(struct cpsw_ale *ale, int idx, u32 *ale_entry) ale_entry 149 drivers/net/ethernet/ti/cpsw_ale.c ale_entry[i] = readl_relaxed(ale->params.ale_regs + ale_entry 155 drivers/net/ethernet/ti/cpsw_ale.c static int cpsw_ale_write(struct cpsw_ale *ale, int idx, u32 *ale_entry) ale_entry 162 drivers/net/ethernet/ti/cpsw_ale.c writel_relaxed(ale_entry[i], ale->params.ale_regs + ale_entry 173 drivers/net/ethernet/ti/cpsw_ale.c u32 ale_entry[ALE_ENTRY_WORDS]; ale_entry 179 drivers/net/ethernet/ti/cpsw_ale.c cpsw_ale_read(ale, idx, ale_entry); ale_entry 180 drivers/net/ethernet/ti/cpsw_ale.c type = cpsw_ale_get_entry_type(ale_entry); ale_entry 183 drivers/net/ethernet/ti/cpsw_ale.c if (cpsw_ale_get_vlan_id(ale_entry) != vid) ale_entry 185 drivers/net/ethernet/ti/cpsw_ale.c cpsw_ale_get_addr(ale_entry, entry_addr); ale_entry 194 drivers/net/ethernet/ti/cpsw_ale.c u32 ale_entry[ALE_ENTRY_WORDS]; ale_entry 198 drivers/net/ethernet/ti/cpsw_ale.c cpsw_ale_read(ale, idx, ale_entry); ale_entry 199 drivers/net/ethernet/ti/cpsw_ale.c type = cpsw_ale_get_entry_type(ale_entry); ale_entry 202 drivers/net/ethernet/ti/cpsw_ale.c if (cpsw_ale_get_vlan_id(ale_entry) == vid) ale_entry 210 drivers/net/ethernet/ti/cpsw_ale.c u32 ale_entry[ALE_ENTRY_WORDS]; ale_entry 214 drivers/net/ethernet/ti/cpsw_ale.c cpsw_ale_read(ale, idx, ale_entry); ale_entry 215 drivers/net/ethernet/ti/cpsw_ale.c type = cpsw_ale_get_entry_type(ale_entry); ale_entry 224 drivers/net/ethernet/ti/cpsw_ale.c u32 ale_entry[ALE_ENTRY_WORDS]; ale_entry 228 drivers/net/ethernet/ti/cpsw_ale.c cpsw_ale_read(ale, idx, ale_entry); ale_entry 229 drivers/net/ethernet/ti/cpsw_ale.c type = cpsw_ale_get_entry_type(ale_entry); ale_entry 232 drivers/net/ethernet/ti/cpsw_ale.c if (cpsw_ale_get_mcast(ale_entry)) ale_entry 234 drivers/net/ethernet/ti/cpsw_ale.c type = cpsw_ale_get_ucast_type(ale_entry); ale_entry 242 drivers/net/ethernet/ti/cpsw_ale.c static void cpsw_ale_flush_mcast(struct cpsw_ale *ale, u32 *ale_entry, ale_entry 247 drivers/net/ethernet/ti/cpsw_ale.c mask = cpsw_ale_get_port_mask(ale_entry, ale_entry 255 drivers/net/ethernet/ti/cpsw_ale.c cpsw_ale_set_port_mask(ale_entry, mask, ale_entry 258 drivers/net/ethernet/ti/cpsw_ale.c cpsw_ale_set_entry_type(ale_entry, ALE_TYPE_FREE); ale_entry 263 drivers/net/ethernet/ti/cpsw_ale.c u32 ale_entry[ALE_ENTRY_WORDS]; ale_entry 267 drivers/net/ethernet/ti/cpsw_ale.c cpsw_ale_read(ale, idx, ale_entry); ale_entry 268 drivers/net/ethernet/ti/cpsw_ale.c ret = cpsw_ale_get_entry_type(ale_entry); ale_entry 277 drivers/net/ethernet/ti/cpsw_ale.c if (vid != -1 && cpsw_ale_get_vlan_id(ale_entry) != vid) ale_entry 280 drivers/net/ethernet/ti/cpsw_ale.c if (cpsw_ale_get_mcast(ale_entry)) { ale_entry 283 drivers/net/ethernet/ti/cpsw_ale.c if (cpsw_ale_get_super(ale_entry)) ale_entry 286 drivers/net/ethernet/ti/cpsw_ale.c cpsw_ale_get_addr(ale_entry, addr); ale_entry 288 drivers/net/ethernet/ti/cpsw_ale.c cpsw_ale_flush_mcast(ale, ale_entry, port_mask); ale_entry 291 drivers/net/ethernet/ti/cpsw_ale.c cpsw_ale_write(ale, idx, ale_entry); ale_entry 296 drivers/net/ethernet/ti/cpsw_ale.c static inline void cpsw_ale_set_vlan_entry_type(u32 *ale_entry, ale_entry 300 drivers/net/ethernet/ti/cpsw_ale.c cpsw_ale_set_entry_type(ale_entry, ALE_TYPE_VLAN_ADDR); ale_entry 301 drivers/net/ethernet/ti/cpsw_ale.c cpsw_ale_set_vlan_id(ale_entry, vid); ale_entry 303 drivers/net/ethernet/ti/cpsw_ale.c cpsw_ale_set_entry_type(ale_entry, ALE_TYPE_ADDR); ale_entry 310 drivers/net/ethernet/ti/cpsw_ale.c u32 ale_entry[ALE_ENTRY_WORDS] = {0, 0, 0}; ale_entry 313 drivers/net/ethernet/ti/cpsw_ale.c cpsw_ale_set_vlan_entry_type(ale_entry, flags, vid); ale_entry 315 drivers/net/ethernet/ti/cpsw_ale.c cpsw_ale_set_addr(ale_entry, addr); ale_entry 316 drivers/net/ethernet/ti/cpsw_ale.c cpsw_ale_set_ucast_type(ale_entry, ALE_UCAST_PERSISTANT); ale_entry 317 drivers/net/ethernet/ti/cpsw_ale.c cpsw_ale_set_secure(ale_entry, (flags & ALE_SECURE) ? 1 : 0); ale_entry 318 drivers/net/ethernet/ti/cpsw_ale.c cpsw_ale_set_blocked(ale_entry, (flags & ALE_BLOCKED) ? 1 : 0); ale_entry 319 drivers/net/ethernet/ti/cpsw_ale.c cpsw_ale_set_port_num(ale_entry, port, ale->port_num_bits); ale_entry 329 drivers/net/ethernet/ti/cpsw_ale.c cpsw_ale_write(ale, idx, ale_entry); ale_entry 336 drivers/net/ethernet/ti/cpsw_ale.c u32 ale_entry[ALE_ENTRY_WORDS] = {0, 0, 0}; ale_entry 343 drivers/net/ethernet/ti/cpsw_ale.c cpsw_ale_set_entry_type(ale_entry, ALE_TYPE_FREE); ale_entry 344 drivers/net/ethernet/ti/cpsw_ale.c cpsw_ale_write(ale, idx, ale_entry); ale_entry 351 drivers/net/ethernet/ti/cpsw_ale.c u32 ale_entry[ALE_ENTRY_WORDS] = {0, 0, 0}; ale_entry 356 drivers/net/ethernet/ti/cpsw_ale.c cpsw_ale_read(ale, idx, ale_entry); ale_entry 358 drivers/net/ethernet/ti/cpsw_ale.c cpsw_ale_set_vlan_entry_type(ale_entry, flags, vid); ale_entry 360 drivers/net/ethernet/ti/cpsw_ale.c cpsw_ale_set_addr(ale_entry, addr); ale_entry 361 drivers/net/ethernet/ti/cpsw_ale.c cpsw_ale_set_super(ale_entry, (flags & ALE_SUPER) ? 1 : 0); ale_entry 362 drivers/net/ethernet/ti/cpsw_ale.c cpsw_ale_set_mcast_state(ale_entry, mcast_state); ale_entry 364 drivers/net/ethernet/ti/cpsw_ale.c mask = cpsw_ale_get_port_mask(ale_entry, ale_entry 367 drivers/net/ethernet/ti/cpsw_ale.c cpsw_ale_set_port_mask(ale_entry, port_mask, ale_entry 377 drivers/net/ethernet/ti/cpsw_ale.c cpsw_ale_write(ale, idx, ale_entry); ale_entry 384 drivers/net/ethernet/ti/cpsw_ale.c u32 ale_entry[ALE_ENTRY_WORDS] = {0, 0, 0}; ale_entry 391 drivers/net/ethernet/ti/cpsw_ale.c cpsw_ale_read(ale, idx, ale_entry); ale_entry 394 drivers/net/ethernet/ti/cpsw_ale.c cpsw_ale_set_port_mask(ale_entry, port_mask, ale_entry 397 drivers/net/ethernet/ti/cpsw_ale.c cpsw_ale_set_entry_type(ale_entry, ALE_TYPE_FREE); ale_entry 399 drivers/net/ethernet/ti/cpsw_ale.c cpsw_ale_write(ale, idx, ale_entry); ale_entry 404 drivers/net/ethernet/ti/cpsw_ale.c static void cpsw_ale_set_vlan_mcast(struct cpsw_ale *ale, u32 *ale_entry, ale_entry 410 drivers/net/ethernet/ti/cpsw_ale.c idx = cpsw_ale_get_vlan_reg_mcast_idx(ale_entry); ale_entry 414 drivers/net/ethernet/ti/cpsw_ale.c idx = cpsw_ale_get_vlan_unreg_mcast_idx(ale_entry); ale_entry 421 drivers/net/ethernet/ti/cpsw_ale.c u32 ale_entry[ALE_ENTRY_WORDS] = {0, 0, 0}; ale_entry 426 drivers/net/ethernet/ti/cpsw_ale.c cpsw_ale_read(ale, idx, ale_entry); ale_entry 428 drivers/net/ethernet/ti/cpsw_ale.c cpsw_ale_set_entry_type(ale_entry, ALE_TYPE_VLAN); ale_entry 429 drivers/net/ethernet/ti/cpsw_ale.c cpsw_ale_set_vlan_id(ale_entry, vid); ale_entry 431 drivers/net/ethernet/ti/cpsw_ale.c cpsw_ale_set_vlan_untag_force(ale_entry, untag, ale->vlan_field_bits); ale_entry 433 drivers/net/ethernet/ti/cpsw_ale.c cpsw_ale_set_vlan_reg_mcast(ale_entry, reg_mcast, ale_entry 435 drivers/net/ethernet/ti/cpsw_ale.c cpsw_ale_set_vlan_unreg_mcast(ale_entry, unreg_mcast, ale_entry 438 drivers/net/ethernet/ti/cpsw_ale.c cpsw_ale_set_vlan_mcast(ale, ale_entry, reg_mcast, unreg_mcast); ale_entry 440 drivers/net/ethernet/ti/cpsw_ale.c cpsw_ale_set_vlan_member_list(ale_entry, port, ale->vlan_field_bits); ale_entry 449 drivers/net/ethernet/ti/cpsw_ale.c cpsw_ale_write(ale, idx, ale_entry); ale_entry 455 drivers/net/ethernet/ti/cpsw_ale.c u32 ale_entry[ALE_ENTRY_WORDS] = {0, 0, 0}; ale_entry 462 drivers/net/ethernet/ti/cpsw_ale.c cpsw_ale_read(ale, idx, ale_entry); ale_entry 465 drivers/net/ethernet/ti/cpsw_ale.c cpsw_ale_set_vlan_member_list(ale_entry, port_mask, ale_entry 468 drivers/net/ethernet/ti/cpsw_ale.c cpsw_ale_set_entry_type(ale_entry, ALE_TYPE_FREE); ale_entry 470 drivers/net/ethernet/ti/cpsw_ale.c cpsw_ale_write(ale, idx, ale_entry); ale_entry 476 drivers/net/ethernet/ti/cpsw_ale.c u32 ale_entry[ALE_ENTRY_WORDS]; ale_entry 483 drivers/net/ethernet/ti/cpsw_ale.c cpsw_ale_read(ale, idx, ale_entry); ale_entry 484 drivers/net/ethernet/ti/cpsw_ale.c type = cpsw_ale_get_entry_type(ale_entry); ale_entry 488 drivers/net/ethernet/ti/cpsw_ale.c cpsw_ale_get_vlan_member_list(ale_entry, ale_entry 495 drivers/net/ethernet/ti/cpsw_ale.c cpsw_ale_get_vlan_unreg_mcast(ale_entry, ale_entry 501 drivers/net/ethernet/ti/cpsw_ale.c cpsw_ale_set_vlan_unreg_mcast(ale_entry, unreg_mcast, ale_entry 503 drivers/net/ethernet/ti/cpsw_ale.c cpsw_ale_write(ale, idx, ale_entry);