Lines Matching refs:idx
107 int idx; in cpsw_ale_get_field() local
109 idx = start / 32; in cpsw_ale_get_field()
110 start -= idx * 32; in cpsw_ale_get_field()
111 idx = 2 - idx; /* flip */ in cpsw_ale_get_field()
112 return (ale_entry[idx] >> start) & BITMASK(bits); in cpsw_ale_get_field()
118 int idx; in cpsw_ale_set_field() local
121 idx = start / 32; in cpsw_ale_set_field()
122 start -= idx * 32; in cpsw_ale_set_field()
123 idx = 2 - idx; /* flip */ in cpsw_ale_set_field()
124 ale_entry[idx] &= ~(BITMASK(bits) << start); in cpsw_ale_set_field()
125 ale_entry[idx] |= (value << start); in cpsw_ale_set_field()
298 static int cpsw_ale_read(struct cpsw_ale *ale, int idx, u32 *ale_entry) in cpsw_ale_read() argument
302 WARN_ON(idx > ale->params.ale_entries); in cpsw_ale_read()
304 writel_relaxed(idx, ale->params.ale_regs + ALE_TABLE_CONTROL); in cpsw_ale_read()
310 return idx; in cpsw_ale_read()
313 static int cpsw_ale_write(struct cpsw_ale *ale, int idx, u32 *ale_entry) in cpsw_ale_write() argument
317 WARN_ON(idx > ale->params.ale_entries); in cpsw_ale_write()
323 writel_relaxed(idx | ALE_TABLE_WRITE, ale->params.ale_regs + in cpsw_ale_write()
326 return idx; in cpsw_ale_write()
332 int type, idx; in cpsw_ale_match_addr() local
334 for (idx = 0; idx < ale->params.ale_entries; idx++) { in cpsw_ale_match_addr()
337 cpsw_ale_read(ale, idx, ale_entry); in cpsw_ale_match_addr()
345 return idx; in cpsw_ale_match_addr()
353 int type, idx; in cpsw_ale_match_vlan() local
355 for (idx = 0; idx < ale->params.ale_entries; idx++) { in cpsw_ale_match_vlan()
356 cpsw_ale_read(ale, idx, ale_entry); in cpsw_ale_match_vlan()
361 return idx; in cpsw_ale_match_vlan()
369 int type, idx; in cpsw_ale_match_free() local
371 for (idx = 0; idx < ale->params.ale_entries; idx++) { in cpsw_ale_match_free()
372 cpsw_ale_read(ale, idx, ale_entry); in cpsw_ale_match_free()
375 return idx; in cpsw_ale_match_free()
383 int type, idx; in cpsw_ale_find_ageable() local
385 for (idx = 0; idx < ale->params.ale_entries; idx++) { in cpsw_ale_find_ageable()
386 cpsw_ale_read(ale, idx, ale_entry); in cpsw_ale_find_ageable()
395 return idx; in cpsw_ale_find_ageable()
422 int ret, idx; in cpsw_ale_flush_multicast() local
424 for (idx = 0; idx < ale->params.ale_entries; idx++) { in cpsw_ale_flush_multicast()
425 cpsw_ale_read(ale, idx, ale_entry); in cpsw_ale_flush_multicast()
449 cpsw_ale_write(ale, idx, ale_entry); in cpsw_ale_flush_multicast()
469 int idx; in cpsw_ale_add_ucast() local
479 idx = cpsw_ale_match_addr(ale, addr, (flags & ALE_VLAN) ? vid : 0); in cpsw_ale_add_ucast()
480 if (idx < 0) in cpsw_ale_add_ucast()
481 idx = cpsw_ale_match_free(ale); in cpsw_ale_add_ucast()
482 if (idx < 0) in cpsw_ale_add_ucast()
483 idx = cpsw_ale_find_ageable(ale); in cpsw_ale_add_ucast()
484 if (idx < 0) in cpsw_ale_add_ucast()
487 cpsw_ale_write(ale, idx, ale_entry); in cpsw_ale_add_ucast()
495 int idx; in cpsw_ale_del_ucast() local
497 idx = cpsw_ale_match_addr(ale, addr, (flags & ALE_VLAN) ? vid : 0); in cpsw_ale_del_ucast()
498 if (idx < 0) in cpsw_ale_del_ucast()
502 cpsw_ale_write(ale, idx, ale_entry); in cpsw_ale_del_ucast()
510 int idx, mask; in cpsw_ale_add_mcast() local
512 idx = cpsw_ale_match_addr(ale, addr, (flags & ALE_VLAN) ? vid : 0); in cpsw_ale_add_mcast()
513 if (idx >= 0) in cpsw_ale_add_mcast()
514 cpsw_ale_read(ale, idx, ale_entry); in cpsw_ale_add_mcast()
528 if (idx < 0) in cpsw_ale_add_mcast()
529 idx = cpsw_ale_match_free(ale); in cpsw_ale_add_mcast()
530 if (idx < 0) in cpsw_ale_add_mcast()
531 idx = cpsw_ale_find_ageable(ale); in cpsw_ale_add_mcast()
532 if (idx < 0) in cpsw_ale_add_mcast()
535 cpsw_ale_write(ale, idx, ale_entry); in cpsw_ale_add_mcast()
544 int idx; in cpsw_ale_del_mcast() local
546 idx = cpsw_ale_match_addr(ale, addr, (flags & ALE_VLAN) ? vid : 0); in cpsw_ale_del_mcast()
547 if (idx < 0) in cpsw_ale_del_mcast()
550 cpsw_ale_read(ale, idx, ale_entry); in cpsw_ale_del_mcast()
564 cpsw_ale_write(ale, idx, ale_entry); in cpsw_ale_del_mcast()
572 int idx; in cpsw_ale_set_vlan_mcast() local
575 idx = cpsw_ale_vlan_get_fld(ale, ale_entry, in cpsw_ale_set_vlan_mcast()
577 writel(reg_mcast, ale->params.ale_regs + ALE_VLAN_MASK_MUX(idx)); in cpsw_ale_set_vlan_mcast()
580 idx = cpsw_ale_vlan_get_fld(ale, ale_entry, in cpsw_ale_set_vlan_mcast()
582 writel(unreg_mcast, ale->params.ale_regs + ALE_VLAN_MASK_MUX(idx)); in cpsw_ale_set_vlan_mcast()
601 int idx; in cpsw_ale_add_vlan() local
603 idx = cpsw_ale_match_vlan(ale, vid); in cpsw_ale_add_vlan()
604 if (idx >= 0) in cpsw_ale_add_vlan()
605 cpsw_ale_read(ale, idx, ale_entry); in cpsw_ale_add_vlan()
626 if (idx < 0) in cpsw_ale_add_vlan()
627 idx = cpsw_ale_match_free(ale); in cpsw_ale_add_vlan()
628 if (idx < 0) in cpsw_ale_add_vlan()
629 idx = cpsw_ale_find_ageable(ale); in cpsw_ale_add_vlan()
630 if (idx < 0) in cpsw_ale_add_vlan()
633 cpsw_ale_write(ale, idx, ale_entry); in cpsw_ale_add_vlan()
680 int idx; in cpsw_ale_vlan_del_modify() local
682 idx = cpsw_ale_match_vlan(ale, vid); in cpsw_ale_vlan_del_modify()
683 if (idx < 0) in cpsw_ale_vlan_del_modify()
686 cpsw_ale_read(ale, idx, ale_entry); in cpsw_ale_vlan_del_modify()
689 cpsw_ale_write(ale, idx, ale_entry); in cpsw_ale_vlan_del_modify()
697 int members, idx; in cpsw_ale_del_vlan() local
699 idx = cpsw_ale_match_vlan(ale, vid); in cpsw_ale_del_vlan()
700 if (idx < 0) in cpsw_ale_del_vlan()
703 cpsw_ale_read(ale, idx, ale_entry); in cpsw_ale_del_vlan()
723 cpsw_ale_write(ale, idx, ale_entry); in cpsw_ale_del_vlan()
734 int idx, ret = 0; in cpsw_ale_vlan_add_modify() local
736 idx = cpsw_ale_match_vlan(ale, vid); in cpsw_ale_vlan_add_modify()
737 if (idx >= 0) in cpsw_ale_vlan_add_modify()
738 cpsw_ale_read(ale, idx, ale_entry); in cpsw_ale_vlan_add_modify()
772 int type, idx; in cpsw_ale_set_unreg_mcast() local
774 for (idx = 0; idx < ale->params.ale_entries; idx++) { in cpsw_ale_set_unreg_mcast()
775 cpsw_ale_read(ale, idx, ale_entry); in cpsw_ale_set_unreg_mcast()
790 cpsw_ale_write(ale, idx, ale_entry); in cpsw_ale_set_unreg_mcast()
815 int idx; in cpsw_ale_vlan_set_unreg_mcast_idx() local
817 idx = cpsw_ale_vlan_get_fld(ale, ale_entry, in cpsw_ale_vlan_set_unreg_mcast_idx()
820 unreg_mcast = readl(ale->params.ale_regs + ALE_VLAN_MASK_MUX(idx)); in cpsw_ale_vlan_set_unreg_mcast_idx()
827 writel(unreg_mcast, ale->params.ale_regs + ALE_VLAN_MASK_MUX(idx)); in cpsw_ale_vlan_set_unreg_mcast_idx()
833 int type, idx; in cpsw_ale_set_allmulti() local
835 for (idx = 0; idx < ale->params.ale_entries; idx++) { in cpsw_ale_set_allmulti()
838 cpsw_ale_read(ale, idx, ale_entry); in cpsw_ale_set_allmulti()
855 cpsw_ale_write(ale, idx, ale_entry); in cpsw_ale_set_allmulti()