Lines Matching refs:idx

130 	int idx, idx2, index;  in cpsw_ale_get_field()  local
133 idx = start / 32; in cpsw_ale_get_field()
136 if (idx != idx2) { in cpsw_ale_get_field()
140 start -= idx * 32; in cpsw_ale_get_field()
141 idx = 2 - idx; /* flip */ in cpsw_ale_get_field()
142 return (hi_val + (ale_entry[idx] >> start)) & BITMASK(bits); in cpsw_ale_get_field()
148 int idx, idx2, index; in cpsw_ale_set_field() local
151 idx = start / 32; in cpsw_ale_set_field()
154 if (idx != idx2) { in cpsw_ale_set_field()
159 start -= idx * 32; in cpsw_ale_set_field()
160 idx = 2 - idx; /* flip */ in cpsw_ale_set_field()
161 ale_entry[idx] &= ~(BITMASK(bits) << start); in cpsw_ale_set_field()
162 ale_entry[idx] |= (value << start); in cpsw_ale_set_field()
347 static int cpsw_ale_read(struct cpsw_ale *ale, int idx, u32 *ale_entry) in cpsw_ale_read() argument
351 WARN_ON(idx > ale->params.ale_entries); in cpsw_ale_read()
353 writel_relaxed(idx, ale->params.ale_regs + ALE_TABLE_CONTROL); in cpsw_ale_read()
359 return idx; in cpsw_ale_read()
362 static int cpsw_ale_write(struct cpsw_ale *ale, int idx, u32 *ale_entry) in cpsw_ale_write() argument
366 WARN_ON(idx > ale->params.ale_entries); in cpsw_ale_write()
372 writel_relaxed(idx | ALE_TABLE_WRITE, ale->params.ale_regs + in cpsw_ale_write()
375 return idx; in cpsw_ale_write()
381 int type, idx; in cpsw_ale_match_addr() local
383 for (idx = 0; idx < ale->params.ale_entries; idx++) { in cpsw_ale_match_addr()
386 cpsw_ale_read(ale, idx, ale_entry); in cpsw_ale_match_addr()
394 return idx; in cpsw_ale_match_addr()
402 int type, idx; in cpsw_ale_match_vlan() local
404 for (idx = 0; idx < ale->params.ale_entries; idx++) { in cpsw_ale_match_vlan()
405 cpsw_ale_read(ale, idx, ale_entry); in cpsw_ale_match_vlan()
410 return idx; in cpsw_ale_match_vlan()
418 int type, idx; in cpsw_ale_match_free() local
420 for (idx = 0; idx < ale->params.ale_entries; idx++) { in cpsw_ale_match_free()
421 cpsw_ale_read(ale, idx, ale_entry); in cpsw_ale_match_free()
424 return idx; in cpsw_ale_match_free()
432 int type, idx; in cpsw_ale_find_ageable() local
434 for (idx = 0; idx < ale->params.ale_entries; idx++) { in cpsw_ale_find_ageable()
435 cpsw_ale_read(ale, idx, ale_entry); in cpsw_ale_find_ageable()
444 return idx; in cpsw_ale_find_ageable()
471 int ret, idx; in cpsw_ale_flush_multicast() local
473 for (idx = 0; idx < ale->params.ale_entries; idx++) { in cpsw_ale_flush_multicast()
474 cpsw_ale_read(ale, idx, ale_entry); in cpsw_ale_flush_multicast()
498 cpsw_ale_write(ale, idx, ale_entry); in cpsw_ale_flush_multicast()
518 int idx; in cpsw_ale_add_ucast() local
528 idx = cpsw_ale_match_addr(ale, addr, (flags & ALE_VLAN) ? vid : 0); in cpsw_ale_add_ucast()
529 if (idx < 0) in cpsw_ale_add_ucast()
530 idx = cpsw_ale_match_free(ale); in cpsw_ale_add_ucast()
531 if (idx < 0) in cpsw_ale_add_ucast()
532 idx = cpsw_ale_find_ageable(ale); in cpsw_ale_add_ucast()
533 if (idx < 0) in cpsw_ale_add_ucast()
536 cpsw_ale_write(ale, idx, ale_entry); in cpsw_ale_add_ucast()
544 int idx; in cpsw_ale_del_ucast() local
546 idx = cpsw_ale_match_addr(ale, addr, (flags & ALE_VLAN) ? vid : 0); in cpsw_ale_del_ucast()
547 if (idx < 0) in cpsw_ale_del_ucast()
551 cpsw_ale_write(ale, idx, ale_entry); in cpsw_ale_del_ucast()
559 int idx, mask; in cpsw_ale_add_mcast() local
561 idx = cpsw_ale_match_addr(ale, addr, (flags & ALE_VLAN) ? vid : 0); in cpsw_ale_add_mcast()
562 if (idx >= 0) in cpsw_ale_add_mcast()
563 cpsw_ale_read(ale, idx, ale_entry); in cpsw_ale_add_mcast()
577 if (idx < 0) in cpsw_ale_add_mcast()
578 idx = cpsw_ale_match_free(ale); in cpsw_ale_add_mcast()
579 if (idx < 0) in cpsw_ale_add_mcast()
580 idx = cpsw_ale_find_ageable(ale); in cpsw_ale_add_mcast()
581 if (idx < 0) in cpsw_ale_add_mcast()
584 cpsw_ale_write(ale, idx, ale_entry); in cpsw_ale_add_mcast()
593 int idx; in cpsw_ale_del_mcast() local
595 idx = cpsw_ale_match_addr(ale, addr, (flags & ALE_VLAN) ? vid : 0); in cpsw_ale_del_mcast()
596 if (idx < 0) in cpsw_ale_del_mcast()
599 cpsw_ale_read(ale, idx, ale_entry); in cpsw_ale_del_mcast()
613 cpsw_ale_write(ale, idx, ale_entry); in cpsw_ale_del_mcast()
621 int idx; in cpsw_ale_set_vlan_mcast() local
624 idx = cpsw_ale_vlan_get_fld(ale, ale_entry, in cpsw_ale_set_vlan_mcast()
626 writel(reg_mcast, ale->params.ale_regs + ALE_VLAN_MASK_MUX(idx)); in cpsw_ale_set_vlan_mcast()
629 idx = cpsw_ale_vlan_get_fld(ale, ale_entry, in cpsw_ale_set_vlan_mcast()
631 writel(unreg_mcast, ale->params.ale_regs + ALE_VLAN_MASK_MUX(idx)); in cpsw_ale_set_vlan_mcast()
650 int idx; in cpsw_ale_add_vlan() local
652 idx = cpsw_ale_match_vlan(ale, vid); in cpsw_ale_add_vlan()
653 if (idx >= 0) in cpsw_ale_add_vlan()
654 cpsw_ale_read(ale, idx, ale_entry); in cpsw_ale_add_vlan()
675 if (idx < 0) in cpsw_ale_add_vlan()
676 idx = cpsw_ale_match_free(ale); in cpsw_ale_add_vlan()
677 if (idx < 0) in cpsw_ale_add_vlan()
678 idx = cpsw_ale_find_ageable(ale); in cpsw_ale_add_vlan()
679 if (idx < 0) in cpsw_ale_add_vlan()
682 cpsw_ale_write(ale, idx, ale_entry); in cpsw_ale_add_vlan()
729 int idx; in cpsw_ale_vlan_del_modify() local
731 idx = cpsw_ale_match_vlan(ale, vid); in cpsw_ale_vlan_del_modify()
732 if (idx < 0) in cpsw_ale_vlan_del_modify()
735 cpsw_ale_read(ale, idx, ale_entry); in cpsw_ale_vlan_del_modify()
738 cpsw_ale_write(ale, idx, ale_entry); in cpsw_ale_vlan_del_modify()
746 int members, idx; in cpsw_ale_del_vlan() local
748 idx = cpsw_ale_match_vlan(ale, vid); in cpsw_ale_del_vlan()
749 if (idx < 0) in cpsw_ale_del_vlan()
752 cpsw_ale_read(ale, idx, ale_entry); in cpsw_ale_del_vlan()
772 cpsw_ale_write(ale, idx, ale_entry); in cpsw_ale_del_vlan()
783 int idx, ret = 0; in cpsw_ale_vlan_add_modify() local
785 idx = cpsw_ale_match_vlan(ale, vid); in cpsw_ale_vlan_add_modify()
786 if (idx >= 0) in cpsw_ale_vlan_add_modify()
787 cpsw_ale_read(ale, idx, ale_entry); in cpsw_ale_vlan_add_modify()
821 int type, idx; in cpsw_ale_set_unreg_mcast() local
823 for (idx = 0; idx < ale->params.ale_entries; idx++) { in cpsw_ale_set_unreg_mcast()
824 cpsw_ale_read(ale, idx, ale_entry); in cpsw_ale_set_unreg_mcast()
839 cpsw_ale_write(ale, idx, ale_entry); in cpsw_ale_set_unreg_mcast()
864 int idx; in cpsw_ale_vlan_set_unreg_mcast_idx() local
866 idx = cpsw_ale_vlan_get_fld(ale, ale_entry, in cpsw_ale_vlan_set_unreg_mcast_idx()
869 unreg_mcast = readl(ale->params.ale_regs + ALE_VLAN_MASK_MUX(idx)); in cpsw_ale_vlan_set_unreg_mcast_idx()
876 writel(unreg_mcast, ale->params.ale_regs + ALE_VLAN_MASK_MUX(idx)); in cpsw_ale_vlan_set_unreg_mcast_idx()
882 int type, idx; in cpsw_ale_set_allmulti() local
884 for (idx = 0; idx < ale->params.ale_entries; idx++) { in cpsw_ale_set_allmulti()
887 cpsw_ale_read(ale, idx, ale_entry); in cpsw_ale_set_allmulti()
904 cpsw_ale_write(ale, idx, ale_entry); in cpsw_ale_set_allmulti()
1654 static void cpsw_ale_policer_read_idx(struct cpsw_ale *ale, u32 idx) in cpsw_ale_policer_read_idx() argument
1656 idx &= ALE_POLICER_TBL_INDEX_MASK; in cpsw_ale_policer_read_idx()
1657 writel_relaxed(idx, ale->params.ale_regs + ALE_POLICER_TBL_CTL); in cpsw_ale_policer_read_idx()
1661 static void cpsw_ale_policer_write_idx(struct cpsw_ale *ale, u32 idx) in cpsw_ale_policer_write_idx() argument
1663 idx &= ALE_POLICER_TBL_INDEX_MASK; in cpsw_ale_policer_write_idx()
1664 idx |= ALE_POLICER_TBL_WRITE_ENABLE; in cpsw_ale_policer_write_idx()
1665 writel_relaxed(idx, ale->params.ale_regs + ALE_POLICER_TBL_CTL); in cpsw_ale_policer_write_idx()
1669 static void cpsw_ale_policer_thread_idx_enable(struct cpsw_ale *ale, u32 idx, in cpsw_ale_policer_thread_idx_enable() argument
1672 regmap_field_write(ale->fields[ALE_THREAD_CLASS_INDEX], idx); in cpsw_ale_policer_thread_idx_enable()
1706 int pri, idx; in cpsw_ale_classifier_setup_default() local
1740 idx = pri; in cpsw_ale_classifier_setup_default()
1743 cpsw_ale_policer_read_idx(ale, idx); in cpsw_ale_classifier_setup_default()
1746 cpsw_ale_policer_write_idx(ale, idx); in cpsw_ale_classifier_setup_default()
1749 cpsw_ale_policer_thread_idx_enable(ale, idx, in cpsw_ale_classifier_setup_default()