Lines Matching refs:table
1882 struct efx_farch_filter_table table[EFX_FARCH_FILTER_TABLE_COUNT]; member
1887 struct efx_farch_filter_table *table,
1936 struct efx_farch_filter_table *table; in efx_farch_filter_push_rx_config() local
1941 table = &state->table[EFX_FARCH_FILTER_TABLE_RX_IP]; in efx_farch_filter_push_rx_config()
1943 table->search_limit[EFX_FARCH_FILTER_TCP_FULL] + in efx_farch_filter_push_rx_config()
1946 table->search_limit[EFX_FARCH_FILTER_TCP_WILD] + in efx_farch_filter_push_rx_config()
1949 table->search_limit[EFX_FARCH_FILTER_UDP_FULL] + in efx_farch_filter_push_rx_config()
1952 table->search_limit[EFX_FARCH_FILTER_UDP_WILD] + in efx_farch_filter_push_rx_config()
1955 table = &state->table[EFX_FARCH_FILTER_TABLE_RX_MAC]; in efx_farch_filter_push_rx_config()
1956 if (table->size) { in efx_farch_filter_push_rx_config()
1959 table->search_limit[EFX_FARCH_FILTER_MAC_FULL] + in efx_farch_filter_push_rx_config()
1963 table->search_limit[EFX_FARCH_FILTER_MAC_WILD] + in efx_farch_filter_push_rx_config()
1967 table = &state->table[EFX_FARCH_FILTER_TABLE_RX_DEF]; in efx_farch_filter_push_rx_config()
1968 if (table->size) { in efx_farch_filter_push_rx_config()
1971 table->spec[EFX_FARCH_FILTER_INDEX_UC_DEF].dmaq_id); in efx_farch_filter_push_rx_config()
1974 !!(table->spec[EFX_FARCH_FILTER_INDEX_UC_DEF].flags & in efx_farch_filter_push_rx_config()
1978 table->spec[EFX_FARCH_FILTER_INDEX_MC_DEF].dmaq_id); in efx_farch_filter_push_rx_config()
1981 !!(table->spec[EFX_FARCH_FILTER_INDEX_MC_DEF].flags & in efx_farch_filter_push_rx_config()
1990 !!(table->spec[EFX_FARCH_FILTER_INDEX_UC_DEF].flags & in efx_farch_filter_push_rx_config()
1991 table->spec[EFX_FARCH_FILTER_INDEX_MC_DEF].flags & in efx_farch_filter_push_rx_config()
2010 struct efx_farch_filter_table *table; in efx_farch_filter_push_tx_limits() local
2015 table = &state->table[EFX_FARCH_FILTER_TABLE_TX_MAC]; in efx_farch_filter_push_tx_limits()
2016 if (table->size) { in efx_farch_filter_push_tx_limits()
2019 table->search_limit[EFX_FARCH_FILTER_MAC_FULL] + in efx_farch_filter_push_tx_limits()
2023 table->search_limit[EFX_FARCH_FILTER_MAC_WILD] + in efx_farch_filter_push_tx_limits()
2377 if (state->table[table_id].size != 0) in efx_farch_filter_get_rx_id_limit()
2379 state->table[table_id].size; in efx_farch_filter_get_rx_id_limit()
2390 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()
2411 table->search_limit[spec.type]); in efx_farch_filter_insert()
2413 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()
2450 if (!test_bit(i, table->used_bitmap)) { in efx_farch_filter_insert()
2454 &table->spec[i])) { in efx_farch_filter_insert()
2473 i = (i + incr) & (table->size - 1); in efx_farch_filter_insert()
2483 &table->spec[rep_index]; in efx_farch_filter_insert()
2500 __set_bit(ins_index, table->used_bitmap); in efx_farch_filter_insert()
2501 ++table->used; in efx_farch_filter_insert()
2503 table->spec[ins_index] = spec; in efx_farch_filter_insert()
2505 if (table->id == EFX_FARCH_FILTER_TABLE_RX_DEF) { in efx_farch_filter_insert()
2508 if (table->search_limit[spec.type] < depth) { in efx_farch_filter_insert()
2509 table->search_limit[spec.type] = depth; in efx_farch_filter_insert()
2517 table->offset + table->step * ins_index); in efx_farch_filter_insert()
2523 efx_farch_filter_table_clear_entry(efx, table, in efx_farch_filter_insert()
2539 struct efx_farch_filter_table *table, in efx_farch_filter_table_clear_entry() argument
2544 EFX_WARN_ON_PARANOID(!test_bit(filter_idx, table->used_bitmap)); in efx_farch_filter_table_clear_entry()
2545 BUG_ON(table->offset == 0); /* can't clear MAC default filters */ in efx_farch_filter_table_clear_entry()
2547 __clear_bit(filter_idx, table->used_bitmap); in efx_farch_filter_table_clear_entry()
2548 --table->used; in efx_farch_filter_table_clear_entry()
2549 memset(&table->spec[filter_idx], 0, sizeof(table->spec[0])); in efx_farch_filter_table_clear_entry()
2551 efx_writeo(efx, &filter, table->offset + table->step * filter_idx); in efx_farch_filter_table_clear_entry()
2559 if (unlikely(table->used == 0)) { in efx_farch_filter_table_clear_entry()
2560 memset(table->search_limit, 0, sizeof(table->search_limit)); in efx_farch_filter_table_clear_entry()
2561 if (table->id == EFX_FARCH_FILTER_TABLE_TX_MAC) in efx_farch_filter_table_clear_entry()
2569 struct efx_farch_filter_table *table, in efx_farch_filter_remove() argument
2573 struct efx_farch_filter_spec *spec = &table->spec[filter_idx]; in efx_farch_filter_remove()
2575 if (!test_bit(filter_idx, table->used_bitmap) || in efx_farch_filter_remove()
2583 efx_farch_filter_table_clear_entry(efx, table, filter_idx); in efx_farch_filter_remove()
2595 struct efx_farch_filter_table *table; in efx_farch_filter_remove_safe() local
2602 table = &state->table[table_id]; in efx_farch_filter_remove_safe()
2605 if (filter_idx >= table->size) in efx_farch_filter_remove_safe()
2609 rc = efx_farch_filter_remove(efx, table, filter_idx, priority); in efx_farch_filter_remove_safe()
2621 struct efx_farch_filter_table *table; in efx_farch_filter_get_safe() local
2631 table = &state->table[table_id]; in efx_farch_filter_get_safe()
2634 if (filter_idx >= table->size) in efx_farch_filter_get_safe()
2636 spec = &table->spec[filter_idx]; in efx_farch_filter_get_safe()
2638 if (test_bit(filter_idx, table->used_bitmap) && in efx_farch_filter_get_safe()
2655 struct efx_farch_filter_table *table = &state->table[table_id]; in efx_farch_filter_table_clear() local
2659 for (filter_idx = 0; filter_idx < table->size; ++filter_idx) { in efx_farch_filter_table_clear()
2660 if (table->spec[filter_idx].priority != EFX_FILTER_PRI_AUTO) in efx_farch_filter_table_clear()
2661 efx_farch_filter_remove(efx, table, in efx_farch_filter_table_clear()
2684 struct efx_farch_filter_table *table; in efx_farch_filter_count_rx_used() local
2693 table = &state->table[table_id]; in efx_farch_filter_count_rx_used()
2694 for (filter_idx = 0; filter_idx < table->size; filter_idx++) { in efx_farch_filter_count_rx_used()
2695 if (test_bit(filter_idx, table->used_bitmap) && in efx_farch_filter_count_rx_used()
2696 table->spec[filter_idx].priority == priority) in efx_farch_filter_count_rx_used()
2712 struct efx_farch_filter_table *table; in efx_farch_filter_get_rx_ids() local
2721 table = &state->table[table_id]; in efx_farch_filter_get_rx_ids()
2722 for (filter_idx = 0; filter_idx < table->size; filter_idx++) { in efx_farch_filter_get_rx_ids()
2723 if (test_bit(filter_idx, table->used_bitmap) && in efx_farch_filter_get_rx_ids()
2724 table->spec[filter_idx].priority == priority) { in efx_farch_filter_get_rx_ids()
2730 &table->spec[filter_idx], filter_idx); in efx_farch_filter_get_rx_ids()
2745 struct efx_farch_filter_table *table; in efx_farch_filter_table_restore() local
2752 table = &state->table[table_id]; in efx_farch_filter_table_restore()
2755 if (table->step == 0) in efx_farch_filter_table_restore()
2758 for (filter_idx = 0; filter_idx < table->size; filter_idx++) { in efx_farch_filter_table_restore()
2759 if (!test_bit(filter_idx, table->used_bitmap)) in efx_farch_filter_table_restore()
2761 efx_farch_filter_build(&filter, &table->spec[filter_idx]); in efx_farch_filter_table_restore()
2763 table->offset + table->step * filter_idx); in efx_farch_filter_table_restore()
2779 kfree(state->table[table_id].used_bitmap); in efx_farch_filter_table_remove()
2780 vfree(state->table[table_id].spec); in efx_farch_filter_table_remove()
2788 struct efx_farch_filter_table *table; in efx_farch_filter_table_probe() local
2797 table = &state->table[EFX_FARCH_FILTER_TABLE_RX_IP]; in efx_farch_filter_table_probe()
2798 table->id = EFX_FARCH_FILTER_TABLE_RX_IP; in efx_farch_filter_table_probe()
2799 table->offset = FR_BZ_RX_FILTER_TBL0; in efx_farch_filter_table_probe()
2800 table->size = FR_BZ_RX_FILTER_TBL0_ROWS; in efx_farch_filter_table_probe()
2801 table->step = FR_BZ_RX_FILTER_TBL0_STEP; in efx_farch_filter_table_probe()
2803 table = &state->table[EFX_FARCH_FILTER_TABLE_RX_MAC]; in efx_farch_filter_table_probe()
2804 table->id = EFX_FARCH_FILTER_TABLE_RX_MAC; in efx_farch_filter_table_probe()
2805 table->offset = FR_CZ_RX_MAC_FILTER_TBL0; in efx_farch_filter_table_probe()
2806 table->size = FR_CZ_RX_MAC_FILTER_TBL0_ROWS; in efx_farch_filter_table_probe()
2807 table->step = FR_CZ_RX_MAC_FILTER_TBL0_STEP; in efx_farch_filter_table_probe()
2809 table = &state->table[EFX_FARCH_FILTER_TABLE_RX_DEF]; in efx_farch_filter_table_probe()
2810 table->id = EFX_FARCH_FILTER_TABLE_RX_DEF; in efx_farch_filter_table_probe()
2811 table->size = EFX_FARCH_FILTER_SIZE_RX_DEF; in efx_farch_filter_table_probe()
2813 table = &state->table[EFX_FARCH_FILTER_TABLE_TX_MAC]; in efx_farch_filter_table_probe()
2814 table->id = EFX_FARCH_FILTER_TABLE_TX_MAC; in efx_farch_filter_table_probe()
2815 table->offset = FR_CZ_TX_MAC_FILTER_TBL0; in efx_farch_filter_table_probe()
2816 table->size = FR_CZ_TX_MAC_FILTER_TBL0_ROWS; in efx_farch_filter_table_probe()
2817 table->step = FR_CZ_TX_MAC_FILTER_TBL0_STEP; in efx_farch_filter_table_probe()
2820 table = &state->table[table_id]; in efx_farch_filter_table_probe()
2821 if (table->size == 0) in efx_farch_filter_table_probe()
2823 table->used_bitmap = kcalloc(BITS_TO_LONGS(table->size), in efx_farch_filter_table_probe()
2826 if (!table->used_bitmap) in efx_farch_filter_table_probe()
2828 table->spec = vzalloc(array_size(sizeof(*table->spec), in efx_farch_filter_table_probe()
2829 table->size)); in efx_farch_filter_table_probe()
2830 if (!table->spec) in efx_farch_filter_table_probe()
2834 table = &state->table[EFX_FARCH_FILTER_TABLE_RX_DEF]; in efx_farch_filter_table_probe()
2835 if (table->size) { in efx_farch_filter_table_probe()
2841 spec = &table->spec[i]; in efx_farch_filter_table_probe()
2844 __set_bit(i, table->used_bitmap); in efx_farch_filter_table_probe()
2862 struct efx_farch_filter_table *table; in efx_farch_filter_update_rx_scatter() local
2871 table = &state->table[table_id]; in efx_farch_filter_update_rx_scatter()
2873 for (filter_idx = 0; filter_idx < table->size; filter_idx++) { in efx_farch_filter_update_rx_scatter()
2874 if (!test_bit(filter_idx, table->used_bitmap) || in efx_farch_filter_update_rx_scatter()
2875 table->spec[filter_idx].dmaq_id >= in efx_farch_filter_update_rx_scatter()
2880 table->spec[filter_idx].flags |= in efx_farch_filter_update_rx_scatter()
2883 table->spec[filter_idx].flags &= in efx_farch_filter_update_rx_scatter()
2890 efx_farch_filter_build(&filter, &table->spec[filter_idx]); in efx_farch_filter_update_rx_scatter()
2892 table->offset + table->step * filter_idx); in efx_farch_filter_update_rx_scatter()
2907 struct efx_farch_filter_table *table; in efx_farch_filter_rfs_expire_one() local
2913 table = &state->table[EFX_FARCH_FILTER_TABLE_RX_IP]; in efx_farch_filter_rfs_expire_one()
2914 if (test_bit(index, table->used_bitmap) && in efx_farch_filter_rfs_expire_one()
2915 table->spec[index].priority == EFX_FILTER_PRI_HINT) { in efx_farch_filter_rfs_expire_one()
2919 efx_farch_filter_to_gen_spec(&spec, &table->spec[index]); in efx_farch_filter_rfs_expire_one()
2941 efx_farch_filter_table_clear_entry(efx, table, index); in efx_farch_filter_rfs_expire_one()