Lines Matching refs:idx

56 	int idx;  in cpsw_ale_get_field()  local
58 idx = start / 32; in cpsw_ale_get_field()
59 start -= idx * 32; in cpsw_ale_get_field()
60 idx = 2 - idx; /* flip */ in cpsw_ale_get_field()
61 return (ale_entry[idx] >> start) & BITMASK(bits); in cpsw_ale_get_field()
67 int idx; in cpsw_ale_set_field() local
70 idx = start / 32; in cpsw_ale_set_field()
71 start -= idx * 32; in cpsw_ale_set_field()
72 idx = 2 - idx; /* flip */ in cpsw_ale_set_field()
73 ale_entry[idx] &= ~(BITMASK(bits) << start); in cpsw_ale_set_field()
74 ale_entry[idx] |= (value << start); in cpsw_ale_set_field()
119 static int cpsw_ale_read(struct cpsw_ale *ale, int idx, u32 *ale_entry) in cpsw_ale_read() argument
123 WARN_ON(idx > ale->params.ale_entries); in cpsw_ale_read()
125 __raw_writel(idx, ale->params.ale_regs + ALE_TABLE_CONTROL); in cpsw_ale_read()
131 return idx; in cpsw_ale_read()
134 static int cpsw_ale_write(struct cpsw_ale *ale, int idx, u32 *ale_entry) in cpsw_ale_write() argument
138 WARN_ON(idx > ale->params.ale_entries); in cpsw_ale_write()
144 __raw_writel(idx | ALE_TABLE_WRITE, ale->params.ale_regs + in cpsw_ale_write()
147 return idx; in cpsw_ale_write()
153 int type, idx; in cpsw_ale_match_addr() local
155 for (idx = 0; idx < ale->params.ale_entries; idx++) { in cpsw_ale_match_addr()
158 cpsw_ale_read(ale, idx, ale_entry); in cpsw_ale_match_addr()
166 return idx; in cpsw_ale_match_addr()
174 int type, idx; in cpsw_ale_match_vlan() local
176 for (idx = 0; idx < ale->params.ale_entries; idx++) { in cpsw_ale_match_vlan()
177 cpsw_ale_read(ale, idx, ale_entry); in cpsw_ale_match_vlan()
182 return idx; in cpsw_ale_match_vlan()
190 int type, idx; in cpsw_ale_match_free() local
192 for (idx = 0; idx < ale->params.ale_entries; idx++) { in cpsw_ale_match_free()
193 cpsw_ale_read(ale, idx, ale_entry); in cpsw_ale_match_free()
196 return idx; in cpsw_ale_match_free()
204 int type, idx; in cpsw_ale_find_ageable() local
206 for (idx = 0; idx < ale->params.ale_entries; idx++) { in cpsw_ale_find_ageable()
207 cpsw_ale_read(ale, idx, ale_entry); in cpsw_ale_find_ageable()
216 return idx; in cpsw_ale_find_ageable()
241 int ret, idx; in cpsw_ale_flush_multicast() local
243 for (idx = 0; idx < ale->params.ale_entries; idx++) { in cpsw_ale_flush_multicast()
244 cpsw_ale_read(ale, idx, ale_entry); in cpsw_ale_flush_multicast()
265 cpsw_ale_write(ale, idx, ale_entry); in cpsw_ale_flush_multicast()
285 int ret, idx; in cpsw_ale_flush() local
287 for (idx = 0; idx < ale->params.ale_entries; idx++) { in cpsw_ale_flush()
288 cpsw_ale_read(ale, idx, ale_entry); in cpsw_ale_flush()
298 cpsw_ale_write(ale, idx, ale_entry); in cpsw_ale_flush()
319 int idx; in cpsw_ale_add_ucast() local
329 idx = cpsw_ale_match_addr(ale, addr, (flags & ALE_VLAN) ? vid : 0); in cpsw_ale_add_ucast()
330 if (idx < 0) in cpsw_ale_add_ucast()
331 idx = cpsw_ale_match_free(ale); in cpsw_ale_add_ucast()
332 if (idx < 0) in cpsw_ale_add_ucast()
333 idx = cpsw_ale_find_ageable(ale); in cpsw_ale_add_ucast()
334 if (idx < 0) in cpsw_ale_add_ucast()
337 cpsw_ale_write(ale, idx, ale_entry); in cpsw_ale_add_ucast()
346 int idx; in cpsw_ale_del_ucast() local
348 idx = cpsw_ale_match_addr(ale, addr, (flags & ALE_VLAN) ? vid : 0); in cpsw_ale_del_ucast()
349 if (idx < 0) in cpsw_ale_del_ucast()
353 cpsw_ale_write(ale, idx, ale_entry); in cpsw_ale_del_ucast()
362 int idx, mask; in cpsw_ale_add_mcast() local
364 idx = cpsw_ale_match_addr(ale, addr, (flags & ALE_VLAN) ? vid : 0); in cpsw_ale_add_mcast()
365 if (idx >= 0) in cpsw_ale_add_mcast()
366 cpsw_ale_read(ale, idx, ale_entry); in cpsw_ale_add_mcast()
378 if (idx < 0) in cpsw_ale_add_mcast()
379 idx = cpsw_ale_match_free(ale); in cpsw_ale_add_mcast()
380 if (idx < 0) in cpsw_ale_add_mcast()
381 idx = cpsw_ale_find_ageable(ale); in cpsw_ale_add_mcast()
382 if (idx < 0) in cpsw_ale_add_mcast()
385 cpsw_ale_write(ale, idx, ale_entry); in cpsw_ale_add_mcast()
394 int idx; in cpsw_ale_del_mcast() local
396 idx = cpsw_ale_match_addr(ale, addr, (flags & ALE_VLAN) ? vid : 0); in cpsw_ale_del_mcast()
397 if (idx < 0) in cpsw_ale_del_mcast()
400 cpsw_ale_read(ale, idx, ale_entry); in cpsw_ale_del_mcast()
407 cpsw_ale_write(ale, idx, ale_entry); in cpsw_ale_del_mcast()
416 int idx; in cpsw_ale_add_vlan() local
418 idx = cpsw_ale_match_vlan(ale, vid); in cpsw_ale_add_vlan()
419 if (idx >= 0) in cpsw_ale_add_vlan()
420 cpsw_ale_read(ale, idx, ale_entry); in cpsw_ale_add_vlan()
430 if (idx < 0) in cpsw_ale_add_vlan()
431 idx = cpsw_ale_match_free(ale); in cpsw_ale_add_vlan()
432 if (idx < 0) in cpsw_ale_add_vlan()
433 idx = cpsw_ale_find_ageable(ale); in cpsw_ale_add_vlan()
434 if (idx < 0) in cpsw_ale_add_vlan()
437 cpsw_ale_write(ale, idx, ale_entry); in cpsw_ale_add_vlan()
445 int idx; in cpsw_ale_del_vlan() local
447 idx = cpsw_ale_match_vlan(ale, vid); in cpsw_ale_del_vlan()
448 if (idx < 0) in cpsw_ale_del_vlan()
451 cpsw_ale_read(ale, idx, ale_entry); in cpsw_ale_del_vlan()
458 cpsw_ale_write(ale, idx, ale_entry); in cpsw_ale_del_vlan()
466 int type, idx; in cpsw_ale_set_allmulti() local
476 for (idx = 0; idx < ale->params.ale_entries; idx++) { in cpsw_ale_set_allmulti()
477 cpsw_ale_read(ale, idx, ale_entry); in cpsw_ale_set_allmulti()
488 cpsw_ale_write(ale, idx, ale_entry); in cpsw_ale_set_allmulti()