Lines Matching refs:table
1883 struct efx_farch_filter_table table[EFX_FARCH_FILTER_TABLE_COUNT]; member
1888 struct efx_farch_filter_table *table,
1937 struct efx_farch_filter_table *table; in efx_farch_filter_push_rx_config() local
1942 table = &state->table[EFX_FARCH_FILTER_TABLE_RX_IP]; in efx_farch_filter_push_rx_config()
1944 table->search_limit[EFX_FARCH_FILTER_TCP_FULL] + in efx_farch_filter_push_rx_config()
1947 table->search_limit[EFX_FARCH_FILTER_TCP_WILD] + in efx_farch_filter_push_rx_config()
1950 table->search_limit[EFX_FARCH_FILTER_UDP_FULL] + in efx_farch_filter_push_rx_config()
1953 table->search_limit[EFX_FARCH_FILTER_UDP_WILD] + in efx_farch_filter_push_rx_config()
1956 table = &state->table[EFX_FARCH_FILTER_TABLE_RX_MAC]; in efx_farch_filter_push_rx_config()
1957 if (table->size) { in efx_farch_filter_push_rx_config()
1960 table->search_limit[EFX_FARCH_FILTER_MAC_FULL] + in efx_farch_filter_push_rx_config()
1964 table->search_limit[EFX_FARCH_FILTER_MAC_WILD] + in efx_farch_filter_push_rx_config()
1968 table = &state->table[EFX_FARCH_FILTER_TABLE_RX_DEF]; in efx_farch_filter_push_rx_config()
1969 if (table->size) { in efx_farch_filter_push_rx_config()
1972 table->spec[EFX_FARCH_FILTER_INDEX_UC_DEF].dmaq_id); in efx_farch_filter_push_rx_config()
1975 !!(table->spec[EFX_FARCH_FILTER_INDEX_UC_DEF].flags & in efx_farch_filter_push_rx_config()
1979 table->spec[EFX_FARCH_FILTER_INDEX_MC_DEF].dmaq_id); in efx_farch_filter_push_rx_config()
1982 !!(table->spec[EFX_FARCH_FILTER_INDEX_MC_DEF].flags & in efx_farch_filter_push_rx_config()
1991 !!(table->spec[EFX_FARCH_FILTER_INDEX_UC_DEF].flags & in efx_farch_filter_push_rx_config()
1992 table->spec[EFX_FARCH_FILTER_INDEX_MC_DEF].flags & in efx_farch_filter_push_rx_config()
2011 struct efx_farch_filter_table *table; in efx_farch_filter_push_tx_limits() local
2016 table = &state->table[EFX_FARCH_FILTER_TABLE_TX_MAC]; in efx_farch_filter_push_tx_limits()
2017 if (table->size) { in efx_farch_filter_push_tx_limits()
2020 table->search_limit[EFX_FARCH_FILTER_MAC_FULL] + in efx_farch_filter_push_tx_limits()
2024 table->search_limit[EFX_FARCH_FILTER_MAC_WILD] + in efx_farch_filter_push_tx_limits()
2379 if (state->table[table_id].size != 0) in efx_farch_filter_get_rx_id_limit()
2381 state->table[table_id].size; in efx_farch_filter_get_rx_id_limit()
2392 struct efx_farch_filter_table *table; in efx_farch_filter_insert() local
2403 table = &state->table[efx_farch_filter_spec_table_id(&spec)]; in efx_farch_filter_insert()
2404 if (table->size == 0) in efx_farch_filter_insert()
2409 table->search_limit[spec.type]); in efx_farch_filter_insert()
2411 if (table->id == EFX_FARCH_FILTER_TABLE_RX_DEF) { in efx_farch_filter_insert()
2439 unsigned int max_rep_depth = table->search_limit[spec.type]; in efx_farch_filter_insert()
2444 unsigned int i = hash & (table->size - 1); in efx_farch_filter_insert()
2452 if (!test_bit(i, table->used_bitmap)) { in efx_farch_filter_insert()
2456 &table->spec[i])) { in efx_farch_filter_insert()
2475 i = (i + incr) & (table->size - 1); in efx_farch_filter_insert()
2485 &table->spec[rep_index]; in efx_farch_filter_insert()
2502 __set_bit(ins_index, table->used_bitmap); in efx_farch_filter_insert()
2503 ++table->used; in efx_farch_filter_insert()
2505 table->spec[ins_index] = spec; in efx_farch_filter_insert()
2507 if (table->id == EFX_FARCH_FILTER_TABLE_RX_DEF) { in efx_farch_filter_insert()
2510 if (table->search_limit[spec.type] < depth) { in efx_farch_filter_insert()
2511 table->search_limit[spec.type] = depth; in efx_farch_filter_insert()
2519 table->offset + table->step * ins_index); in efx_farch_filter_insert()
2525 efx_farch_filter_table_clear_entry(efx, table, in efx_farch_filter_insert()
2541 struct efx_farch_filter_table *table, in efx_farch_filter_table_clear_entry() argument
2546 EFX_WARN_ON_PARANOID(!test_bit(filter_idx, table->used_bitmap)); in efx_farch_filter_table_clear_entry()
2547 BUG_ON(table->offset == 0); /* can't clear MAC default filters */ in efx_farch_filter_table_clear_entry()
2549 __clear_bit(filter_idx, table->used_bitmap); in efx_farch_filter_table_clear_entry()
2550 --table->used; in efx_farch_filter_table_clear_entry()
2551 memset(&table->spec[filter_idx], 0, sizeof(table->spec[0])); in efx_farch_filter_table_clear_entry()
2553 efx_writeo(efx, &filter, table->offset + table->step * filter_idx); in efx_farch_filter_table_clear_entry()
2561 if (unlikely(table->used == 0)) { in efx_farch_filter_table_clear_entry()
2562 memset(table->search_limit, 0, sizeof(table->search_limit)); in efx_farch_filter_table_clear_entry()
2563 if (table->id == EFX_FARCH_FILTER_TABLE_TX_MAC) in efx_farch_filter_table_clear_entry()
2571 struct efx_farch_filter_table *table, in efx_farch_filter_remove() argument
2575 struct efx_farch_filter_spec *spec = &table->spec[filter_idx]; in efx_farch_filter_remove()
2577 if (!test_bit(filter_idx, table->used_bitmap) || in efx_farch_filter_remove()
2585 efx_farch_filter_table_clear_entry(efx, table, filter_idx); in efx_farch_filter_remove()
2597 struct efx_farch_filter_table *table; in efx_farch_filter_remove_safe() local
2605 table = &state->table[table_id]; in efx_farch_filter_remove_safe()
2608 if (filter_idx >= table->size) in efx_farch_filter_remove_safe()
2610 spec = &table->spec[filter_idx]; in efx_farch_filter_remove_safe()
2613 rc = efx_farch_filter_remove(efx, table, filter_idx, priority); in efx_farch_filter_remove_safe()
2625 struct efx_farch_filter_table *table; in efx_farch_filter_get_safe() local
2633 table = &state->table[table_id]; in efx_farch_filter_get_safe()
2636 if (filter_idx >= table->size) in efx_farch_filter_get_safe()
2638 spec = &table->spec[filter_idx]; in efx_farch_filter_get_safe()
2642 if (test_bit(filter_idx, table->used_bitmap) && in efx_farch_filter_get_safe()
2661 struct efx_farch_filter_table *table = &state->table[table_id]; in efx_farch_filter_table_clear() local
2665 for (filter_idx = 0; filter_idx < table->size; ++filter_idx) { in efx_farch_filter_table_clear()
2666 if (table->spec[filter_idx].priority != EFX_FILTER_PRI_AUTO) in efx_farch_filter_table_clear()
2667 efx_farch_filter_remove(efx, table, in efx_farch_filter_table_clear()
2690 struct efx_farch_filter_table *table; in efx_farch_filter_count_rx_used() local
2699 table = &state->table[table_id]; in efx_farch_filter_count_rx_used()
2700 for (filter_idx = 0; filter_idx < table->size; filter_idx++) { in efx_farch_filter_count_rx_used()
2701 if (test_bit(filter_idx, table->used_bitmap) && in efx_farch_filter_count_rx_used()
2702 table->spec[filter_idx].priority == priority) in efx_farch_filter_count_rx_used()
2718 struct efx_farch_filter_table *table; in efx_farch_filter_get_rx_ids() local
2727 table = &state->table[table_id]; in efx_farch_filter_get_rx_ids()
2728 for (filter_idx = 0; filter_idx < table->size; filter_idx++) { in efx_farch_filter_get_rx_ids()
2729 if (test_bit(filter_idx, table->used_bitmap) && in efx_farch_filter_get_rx_ids()
2730 table->spec[filter_idx].priority == priority) { in efx_farch_filter_get_rx_ids()
2736 &table->spec[filter_idx], filter_idx); in efx_farch_filter_get_rx_ids()
2751 struct efx_farch_filter_table *table; in efx_farch_filter_table_restore() local
2758 table = &state->table[table_id]; in efx_farch_filter_table_restore()
2761 if (table->step == 0) in efx_farch_filter_table_restore()
2764 for (filter_idx = 0; filter_idx < table->size; filter_idx++) { in efx_farch_filter_table_restore()
2765 if (!test_bit(filter_idx, table->used_bitmap)) in efx_farch_filter_table_restore()
2767 efx_farch_filter_build(&filter, &table->spec[filter_idx]); in efx_farch_filter_table_restore()
2769 table->offset + table->step * filter_idx); in efx_farch_filter_table_restore()
2785 kfree(state->table[table_id].used_bitmap); in efx_farch_filter_table_remove()
2786 vfree(state->table[table_id].spec); in efx_farch_filter_table_remove()
2794 struct efx_farch_filter_table *table; in efx_farch_filter_table_probe() local
2803 table = &state->table[EFX_FARCH_FILTER_TABLE_RX_IP]; in efx_farch_filter_table_probe()
2804 table->id = EFX_FARCH_FILTER_TABLE_RX_IP; in efx_farch_filter_table_probe()
2805 table->offset = FR_BZ_RX_FILTER_TBL0; in efx_farch_filter_table_probe()
2806 table->size = FR_BZ_RX_FILTER_TBL0_ROWS; in efx_farch_filter_table_probe()
2807 table->step = FR_BZ_RX_FILTER_TBL0_STEP; in efx_farch_filter_table_probe()
2811 table = &state->table[EFX_FARCH_FILTER_TABLE_RX_MAC]; in efx_farch_filter_table_probe()
2812 table->id = EFX_FARCH_FILTER_TABLE_RX_MAC; in efx_farch_filter_table_probe()
2813 table->offset = FR_CZ_RX_MAC_FILTER_TBL0; in efx_farch_filter_table_probe()
2814 table->size = FR_CZ_RX_MAC_FILTER_TBL0_ROWS; in efx_farch_filter_table_probe()
2815 table->step = FR_CZ_RX_MAC_FILTER_TBL0_STEP; in efx_farch_filter_table_probe()
2817 table = &state->table[EFX_FARCH_FILTER_TABLE_RX_DEF]; in efx_farch_filter_table_probe()
2818 table->id = EFX_FARCH_FILTER_TABLE_RX_DEF; in efx_farch_filter_table_probe()
2819 table->size = EFX_FARCH_FILTER_SIZE_RX_DEF; in efx_farch_filter_table_probe()
2821 table = &state->table[EFX_FARCH_FILTER_TABLE_TX_MAC]; in efx_farch_filter_table_probe()
2822 table->id = EFX_FARCH_FILTER_TABLE_TX_MAC; in efx_farch_filter_table_probe()
2823 table->offset = FR_CZ_TX_MAC_FILTER_TBL0; in efx_farch_filter_table_probe()
2824 table->size = FR_CZ_TX_MAC_FILTER_TBL0_ROWS; in efx_farch_filter_table_probe()
2825 table->step = FR_CZ_TX_MAC_FILTER_TBL0_STEP; in efx_farch_filter_table_probe()
2829 table = &state->table[table_id]; in efx_farch_filter_table_probe()
2830 if (table->size == 0) in efx_farch_filter_table_probe()
2832 table->used_bitmap = kcalloc(BITS_TO_LONGS(table->size), in efx_farch_filter_table_probe()
2835 if (!table->used_bitmap) in efx_farch_filter_table_probe()
2837 table->spec = vzalloc(table->size * sizeof(*table->spec)); in efx_farch_filter_table_probe()
2838 if (!table->spec) in efx_farch_filter_table_probe()
2842 table = &state->table[EFX_FARCH_FILTER_TABLE_RX_DEF]; in efx_farch_filter_table_probe()
2843 if (table->size) { in efx_farch_filter_table_probe()
2849 spec = &table->spec[i]; in efx_farch_filter_table_probe()
2852 __set_bit(i, table->used_bitmap); in efx_farch_filter_table_probe()
2870 struct efx_farch_filter_table *table; in efx_farch_filter_update_rx_scatter() local
2879 table = &state->table[table_id]; in efx_farch_filter_update_rx_scatter()
2881 for (filter_idx = 0; filter_idx < table->size; filter_idx++) { in efx_farch_filter_update_rx_scatter()
2882 if (!test_bit(filter_idx, table->used_bitmap) || in efx_farch_filter_update_rx_scatter()
2883 table->spec[filter_idx].dmaq_id >= in efx_farch_filter_update_rx_scatter()
2888 table->spec[filter_idx].flags |= in efx_farch_filter_update_rx_scatter()
2891 table->spec[filter_idx].flags &= in efx_farch_filter_update_rx_scatter()
2898 efx_farch_filter_build(&filter, &table->spec[filter_idx]); in efx_farch_filter_update_rx_scatter()
2900 table->offset + table->step * filter_idx); in efx_farch_filter_update_rx_scatter()
2921 struct efx_farch_filter_table *table = in efx_farch_filter_rfs_expire_one() local
2922 &state->table[EFX_FARCH_FILTER_TABLE_RX_IP]; in efx_farch_filter_rfs_expire_one()
2924 if (test_bit(index, table->used_bitmap) && in efx_farch_filter_rfs_expire_one()
2925 table->spec[index].priority == EFX_FILTER_PRI_HINT && in efx_farch_filter_rfs_expire_one()
2926 rps_may_expire_flow(efx->net_dev, table->spec[index].dmaq_id, in efx_farch_filter_rfs_expire_one()
2928 efx_farch_filter_table_clear_entry(efx, table, index); in efx_farch_filter_rfs_expire_one()