Lines Matching refs:idx
109 int idx, idx2, index; in cpsw_ale_get_field() local
112 idx = start / 32; in cpsw_ale_get_field()
115 if (idx != idx2) { in cpsw_ale_get_field()
119 start -= idx * 32; in cpsw_ale_get_field()
120 idx = 2 - idx; /* flip */ in cpsw_ale_get_field()
121 return (hi_val + (ale_entry[idx] >> start)) & BITMASK(bits); in cpsw_ale_get_field()
127 int idx, idx2, index; in cpsw_ale_set_field() local
130 idx = start / 32; in cpsw_ale_set_field()
133 if (idx != idx2) { in cpsw_ale_set_field()
138 start -= idx * 32; in cpsw_ale_set_field()
139 idx = 2 - idx; /* flip */ in cpsw_ale_set_field()
140 ale_entry[idx] &= ~(BITMASK(bits) << start); in cpsw_ale_set_field()
141 ale_entry[idx] |= (value << start); in cpsw_ale_set_field()
314 static int cpsw_ale_read(struct cpsw_ale *ale, int idx, u32 *ale_entry) in cpsw_ale_read() argument
318 WARN_ON(idx > ale->params.ale_entries); in cpsw_ale_read()
320 writel_relaxed(idx, ale->params.ale_regs + ALE_TABLE_CONTROL); in cpsw_ale_read()
326 return idx; in cpsw_ale_read()
329 static int cpsw_ale_write(struct cpsw_ale *ale, int idx, u32 *ale_entry) in cpsw_ale_write() argument
333 WARN_ON(idx > ale->params.ale_entries); in cpsw_ale_write()
339 writel_relaxed(idx | ALE_TABLE_WRITE, ale->params.ale_regs + in cpsw_ale_write()
342 return idx; in cpsw_ale_write()
348 int type, idx; in cpsw_ale_match_addr() local
350 for (idx = 0; idx < ale->params.ale_entries; idx++) { in cpsw_ale_match_addr()
353 cpsw_ale_read(ale, idx, ale_entry); in cpsw_ale_match_addr()
361 return idx; in cpsw_ale_match_addr()
369 int type, idx; in cpsw_ale_match_vlan() local
371 for (idx = 0; idx < ale->params.ale_entries; idx++) { in cpsw_ale_match_vlan()
372 cpsw_ale_read(ale, idx, ale_entry); in cpsw_ale_match_vlan()
377 return idx; in cpsw_ale_match_vlan()
385 int type, idx; in cpsw_ale_match_free() local
387 for (idx = 0; idx < ale->params.ale_entries; idx++) { in cpsw_ale_match_free()
388 cpsw_ale_read(ale, idx, ale_entry); in cpsw_ale_match_free()
391 return idx; in cpsw_ale_match_free()
399 int type, idx; in cpsw_ale_find_ageable() local
401 for (idx = 0; idx < ale->params.ale_entries; idx++) { in cpsw_ale_find_ageable()
402 cpsw_ale_read(ale, idx, ale_entry); in cpsw_ale_find_ageable()
411 return idx; in cpsw_ale_find_ageable()
438 int ret, idx; in cpsw_ale_flush_multicast() local
440 for (idx = 0; idx < ale->params.ale_entries; idx++) { in cpsw_ale_flush_multicast()
441 cpsw_ale_read(ale, idx, ale_entry); in cpsw_ale_flush_multicast()
465 cpsw_ale_write(ale, idx, ale_entry); in cpsw_ale_flush_multicast()
485 int idx; in cpsw_ale_add_ucast() local
495 idx = cpsw_ale_match_addr(ale, addr, (flags & ALE_VLAN) ? vid : 0); in cpsw_ale_add_ucast()
496 if (idx < 0) in cpsw_ale_add_ucast()
497 idx = cpsw_ale_match_free(ale); in cpsw_ale_add_ucast()
498 if (idx < 0) in cpsw_ale_add_ucast()
499 idx = cpsw_ale_find_ageable(ale); in cpsw_ale_add_ucast()
500 if (idx < 0) in cpsw_ale_add_ucast()
503 cpsw_ale_write(ale, idx, ale_entry); in cpsw_ale_add_ucast()
511 int idx; in cpsw_ale_del_ucast() local
513 idx = cpsw_ale_match_addr(ale, addr, (flags & ALE_VLAN) ? vid : 0); in cpsw_ale_del_ucast()
514 if (idx < 0) in cpsw_ale_del_ucast()
518 cpsw_ale_write(ale, idx, ale_entry); in cpsw_ale_del_ucast()
526 int idx, mask; in cpsw_ale_add_mcast() local
528 idx = cpsw_ale_match_addr(ale, addr, (flags & ALE_VLAN) ? vid : 0); in cpsw_ale_add_mcast()
529 if (idx >= 0) in cpsw_ale_add_mcast()
530 cpsw_ale_read(ale, idx, ale_entry); in cpsw_ale_add_mcast()
544 if (idx < 0) in cpsw_ale_add_mcast()
545 idx = cpsw_ale_match_free(ale); in cpsw_ale_add_mcast()
546 if (idx < 0) in cpsw_ale_add_mcast()
547 idx = cpsw_ale_find_ageable(ale); in cpsw_ale_add_mcast()
548 if (idx < 0) in cpsw_ale_add_mcast()
551 cpsw_ale_write(ale, idx, ale_entry); in cpsw_ale_add_mcast()
560 int idx; in cpsw_ale_del_mcast() local
562 idx = cpsw_ale_match_addr(ale, addr, (flags & ALE_VLAN) ? vid : 0); in cpsw_ale_del_mcast()
563 if (idx < 0) in cpsw_ale_del_mcast()
566 cpsw_ale_read(ale, idx, ale_entry); in cpsw_ale_del_mcast()
580 cpsw_ale_write(ale, idx, ale_entry); in cpsw_ale_del_mcast()
588 int idx; in cpsw_ale_set_vlan_mcast() local
591 idx = cpsw_ale_vlan_get_fld(ale, ale_entry, in cpsw_ale_set_vlan_mcast()
593 writel(reg_mcast, ale->params.ale_regs + ALE_VLAN_MASK_MUX(idx)); in cpsw_ale_set_vlan_mcast()
596 idx = cpsw_ale_vlan_get_fld(ale, ale_entry, in cpsw_ale_set_vlan_mcast()
598 writel(unreg_mcast, ale->params.ale_regs + ALE_VLAN_MASK_MUX(idx)); in cpsw_ale_set_vlan_mcast()
617 int idx; in cpsw_ale_add_vlan() local
619 idx = cpsw_ale_match_vlan(ale, vid); in cpsw_ale_add_vlan()
620 if (idx >= 0) in cpsw_ale_add_vlan()
621 cpsw_ale_read(ale, idx, ale_entry); in cpsw_ale_add_vlan()
642 if (idx < 0) in cpsw_ale_add_vlan()
643 idx = cpsw_ale_match_free(ale); in cpsw_ale_add_vlan()
644 if (idx < 0) in cpsw_ale_add_vlan()
645 idx = cpsw_ale_find_ageable(ale); in cpsw_ale_add_vlan()
646 if (idx < 0) in cpsw_ale_add_vlan()
649 cpsw_ale_write(ale, idx, ale_entry); in cpsw_ale_add_vlan()
696 int idx; in cpsw_ale_vlan_del_modify() local
698 idx = cpsw_ale_match_vlan(ale, vid); in cpsw_ale_vlan_del_modify()
699 if (idx < 0) in cpsw_ale_vlan_del_modify()
702 cpsw_ale_read(ale, idx, ale_entry); in cpsw_ale_vlan_del_modify()
705 cpsw_ale_write(ale, idx, ale_entry); in cpsw_ale_vlan_del_modify()
713 int members, idx; in cpsw_ale_del_vlan() local
715 idx = cpsw_ale_match_vlan(ale, vid); in cpsw_ale_del_vlan()
716 if (idx < 0) in cpsw_ale_del_vlan()
719 cpsw_ale_read(ale, idx, ale_entry); in cpsw_ale_del_vlan()
739 cpsw_ale_write(ale, idx, ale_entry); in cpsw_ale_del_vlan()
750 int idx, ret = 0; in cpsw_ale_vlan_add_modify() local
752 idx = cpsw_ale_match_vlan(ale, vid); in cpsw_ale_vlan_add_modify()
753 if (idx >= 0) in cpsw_ale_vlan_add_modify()
754 cpsw_ale_read(ale, idx, ale_entry); in cpsw_ale_vlan_add_modify()
788 int type, idx; in cpsw_ale_set_unreg_mcast() local
790 for (idx = 0; idx < ale->params.ale_entries; idx++) { in cpsw_ale_set_unreg_mcast()
791 cpsw_ale_read(ale, idx, ale_entry); in cpsw_ale_set_unreg_mcast()
806 cpsw_ale_write(ale, idx, ale_entry); in cpsw_ale_set_unreg_mcast()
831 int idx; in cpsw_ale_vlan_set_unreg_mcast_idx() local
833 idx = cpsw_ale_vlan_get_fld(ale, ale_entry, in cpsw_ale_vlan_set_unreg_mcast_idx()
836 unreg_mcast = readl(ale->params.ale_regs + ALE_VLAN_MASK_MUX(idx)); in cpsw_ale_vlan_set_unreg_mcast_idx()
843 writel(unreg_mcast, ale->params.ale_regs + ALE_VLAN_MASK_MUX(idx)); in cpsw_ale_vlan_set_unreg_mcast_idx()
849 int type, idx; in cpsw_ale_set_allmulti() local
851 for (idx = 0; idx < ale->params.ale_entries; idx++) { in cpsw_ale_set_allmulti()
854 cpsw_ale_read(ale, idx, ale_entry); in cpsw_ale_set_allmulti()
871 cpsw_ale_write(ale, idx, ale_entry); in cpsw_ale_set_allmulti()